Archived
1
0
Fork 0
This repository has been archived on 2024-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
akari-bot/wikim/wikilib.py

73 lines
3.5 KiB
Python
Raw Normal View History

2020-06-13 12:43:43 +00:00
import json
import re
import requests
import urllib
2020-06-20 10:47:51 +00:00
async def Wiki(path1,pagename):
2020-06-13 12:43:43 +00:00
metaurl = path1 +'/api.php?action=query&format=json&prop=info&inprop=url&redirects&titles=' + pagename
metatext = requests.get(metaurl, timeout=10)
file = json.loads(metatext.text)
try:
x = file['query']['pages']
y = sorted(x.keys())[0]
if int(y) == -1:
2020-06-15 13:18:07 +00:00
if 'missing' in x['-1']:
try:
searchurl = path1+'/api.php?action=query&generator=search&gsrsearch=' + pagename + '&gsrsort=just_match&gsrenablerewrites&prop=info&gsrlimit=1&format=json'
f = requests.get(searchurl)
g = json.loads(f.text)
j = g['query']['pages']
b = sorted(j.keys())[0]
m = j[b]['title']
return ('找不到条目,您是否要找的是:' + m +'')
2020-06-15 13:18:07 +00:00
except Exception:
return ('找不到条目。')
else:
2020-06-15 15:34:51 +00:00
return ('您要的'+pagename+''+path1+'/'+urllib.parse.quote(pagename.encode('UTF-8')))
2020-06-13 12:43:43 +00:00
else:
try:
2020-06-15 11:54:11 +00:00
z = x[y]['fullurl']
2020-06-13 12:43:43 +00:00
h = re.match(r'https://.*/(.*)', z, re.M | re.I)
texturl = metaurl + '/api.php?action=query&prop=extracts&exsentences=1&&explaintext&exsectionformat=wiki&format=json&titles=' + h.group(1)
gettext = requests.get(texturl, timeout=10)
loadtext = json.loads(gettext.text)
v = loadtext['query']['pages'][y]['extract']
2020-06-19 15:10:10 +00:00
try:
2020-06-19 15:15:50 +00:00
s = re.match(r'.*(\#.*)',pagename)
2020-06-19 15:10:10 +00:00
z = x[y]['fullurl'] + urllib.parse.quote(s.group(1).encode('UTF-8'))
except Exception:
z = x[y]['fullurl']
2020-06-20 10:32:57 +00:00
n = re.match(r'https://.*?/(.*)',z)
k = urllib.parse.unquote(n.group(1),encoding='UTF-8')
2020-06-20 11:08:05 +00:00
k = re.sub('_',' ',k)
2020-06-20 10:47:51 +00:00
if k == pagename:
2020-06-20 10:32:57 +00:00
xx = re.sub('\n$', '', z + '\n' + v)
else:
2020-06-20 11:08:05 +00:00
xx = re.sub('\n$', '', '\n('+pagename +' -> '+k+')\n'+z + '\n' + v)
2020-06-20 10:32:57 +00:00
return('您要的'+pagename+""+xx)
2020-06-13 12:43:43 +00:00
except Exception:
2020-06-19 15:10:10 +00:00
try:
2020-06-19 15:15:50 +00:00
s = re.match(r'.*(\#.*)',pagename)
2020-06-19 15:10:10 +00:00
z = x[y]['fullurl'] + urllib.parse.quote(s.group(1).encode('UTF-8'))
except Exception:
z = x[y]['fullurl']
2020-06-20 10:32:57 +00:00
n = re.match(r'https://.*?/(.*)',z)
k = urllib.parse.unquote(n.group(1),encoding='UTF-8')
2020-06-20 11:08:05 +00:00
k = re.sub('_',' ',k)
2020-06-20 10:47:51 +00:00
if k == pagename:
2020-06-20 10:32:57 +00:00
zz = z
else:
2020-06-20 11:08:05 +00:00
zz = '\n('+pagename+' -> '+k+')\n'+z
return('您要的' + pagename + "" + zz)
2020-06-13 12:43:43 +00:00
except Exception:
try:
w = re.match(r'https://.*-(.*).gamepedia.com',path1)
u = re.sub(w.group(1) + r':', "", pagename)
i = re.sub(r':.*', "", u)
print(u)
print(i)
if (i == "ftb" or i == "aether" or i == "cs" or i == "de" or i == "el" or i == "en" or i == "es" or i == "fr" or i == "hu" or i == "it" or i == "ja" or i == "ko" or i == "nl" or i == "pl" or i == "pt" or i == "ru" or i == "th" or i == "tr" or i == "uk" or i == "zh"):
return('检测到多重Interwiki暂不支持多重Interwiki。')
else:
return('发生错误:内容非法。')
except Exception as e:
return('发生错误:'+str(e))