Archived
1
0
Fork 0

Now non-extracts api wikis also can show descriptions

This commit is contained in:
yzhh 2020-09-07 23:21:31 +08:00
parent 9f862ee155
commit 0a56ad7910

View file

@ -68,7 +68,8 @@ async def nullpage(wikilink, pagename, interwiki, psepgraw):
async def getdesc(wikilink, pagename):
try:
descurl = wikilink + 'api.php?action=query&prop=extracts&exsentences=1&&explaintext&exsectionformat=wiki&format=json&titles=' + pagename
descurl = wikilink + 'api.php?action=query&prop=extracts&exsentences=1&&explaintext&exsectionformat=wiki' \
'&format=json&titles=' + pagename
loadtext = await get_data(descurl, "json")
pageid = await parsepageid(loadtext)
desc = loadtext['query']['pages'][pageid]['extract']
@ -77,6 +78,18 @@ async def getdesc(wikilink, pagename):
return desc
async def getfirstline(wikilink, pagename):
try:
descurl = wikilink + f'api.php?action=parse&page={pagename}&prop=wikitext&section=1&format=json'
loaddesc = await get_data(descurl, 'json')
descraw = loaddesc['parse']['wikitext']['*']
cutdesc = re.findall(r'(.*(?:!|\?|\.|;|||。|))', descraw, re.I)
desc = cutdesc[0]
except Exception:
desc = ''
return desc
async def step1(wikilink, pagename, interwiki, igmessage=False, template=False):
pageraw = await getpage(wikilink, pagename)
pageid = await parsepageid(pageraw)
@ -96,6 +109,8 @@ async def step2(wikilink, pagename, interwiki, psepgraw):
fullurl = psepgraw['fullurl']
geturlpagename = re.match(r'(https?://.*?/(?:index.php/|wiki/|))(.*)', fullurl, re.M | re.I)
desc = await getdesc(wikilink, geturlpagename.group(2))
if desc == '':
desc = await getfirstline(wikilink, geturlpagename.group(2))
try:
section = re.match(r'.*(\#.*)', pagename)
finpgname = geturlpagename.group(2) + urllib.parse.quote(section.group(1).encode('UTF-8'))