Hopefully fix !devwiki now working
parent
533281cad1
commit
f6a61ae472
32
devwiki.py
32
devwiki.py
|
@ -11,7 +11,7 @@ http://inamidst.com/phenny/
|
||||||
import re, urllib, gzip, StringIO
|
import re, urllib, gzip, StringIO
|
||||||
import web
|
import web
|
||||||
|
|
||||||
wikiuri = 'http://dev.minetest.net/%s'
|
devwikiuri = 'http://dev.minetest.net/%s'
|
||||||
|
|
||||||
r_tr = re.compile(r'(?ims)<tr[^>]*>.*?</tr>')
|
r_tr = re.compile(r'(?ims)<tr[^>]*>.*?</tr>')
|
||||||
r_paragraph = re.compile(r'(?ims)<p[^>]*>.*?</p>|<li(?!n)[^>]*>.*?</li>')
|
r_paragraph = re.compile(r'(?ims)<p[^>]*>.*?</p>|<li(?!n)[^>]*>.*?</li>')
|
||||||
|
@ -41,16 +41,16 @@ def text(html):
|
||||||
html = r_whitespace.sub(' ', html)
|
html = r_whitespace.sub(' ', html)
|
||||||
return unescape(html).strip()
|
return unescape(html).strip()
|
||||||
|
|
||||||
def wikipedia(term, language='en', last=False):
|
def devwikipedia(term, language='en', last=False):
|
||||||
global wikiuri
|
global devwikiuri
|
||||||
if not '%' in term:
|
if not '%' in term:
|
||||||
if isinstance(term, unicode):
|
if isinstance(term, unicode):
|
||||||
t = term.encode('utf-8')
|
t = term.encode('utf-8')
|
||||||
else: t = term
|
else: t = term
|
||||||
q = urllib.quote(t)
|
q = urllib.quote(t)
|
||||||
u = wikiuri % (q)
|
u = devwikiuri % (q)
|
||||||
bytes = web.get(u)
|
bytes = web.get(u)
|
||||||
else: bytes = web.get(wikiuri % (term))
|
else: bytes = web.get(devwikiuri % (term))
|
||||||
|
|
||||||
if bytes.startswith('\x1f\x8b\x08\x00\x00\x00\x00\x00'):
|
if bytes.startswith('\x1f\x8b\x08\x00\x00\x00\x00\x00'):
|
||||||
f = StringIO.StringIO(bytes)
|
f = StringIO.StringIO(bytes)
|
||||||
|
@ -66,14 +66,14 @@ def wikipedia(term, language='en', last=False):
|
||||||
r = r_redirect.search(bytes[:4096])
|
r = r_redirect.search(bytes[:4096])
|
||||||
if r:
|
if r:
|
||||||
term = urllib.unquote(r.group(1))
|
term = urllib.unquote(r.group(1))
|
||||||
return wikipedia(term, language=language, last=True)
|
return devwikipedia(term, language=language, last=True)
|
||||||
|
|
||||||
paragraphs = r_paragraph.findall(bytes)
|
paragraphs = r_paragraph.findall(bytes)
|
||||||
|
|
||||||
if not paragraphs:
|
if not paragraphs:
|
||||||
if not last:
|
if not last:
|
||||||
term = search(term)
|
term = search(term)
|
||||||
return wikipedia(term, language=language, last=True)
|
return devwikipedia(term, language=language, last=True)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# Pre-process
|
# Pre-process
|
||||||
|
@ -106,7 +106,7 @@ def wikipedia(term, language='en', last=False):
|
||||||
if not m:
|
if not m:
|
||||||
if not last:
|
if not last:
|
||||||
term = search(term)
|
term = search(term)
|
||||||
return wikipedia(term, language=language, last=True)
|
return devwikipedia(term, language=language, last=True)
|
||||||
return None
|
return None
|
||||||
sentence = m.group(0)
|
sentence = m.group(0)
|
||||||
|
|
||||||
|
@ -122,16 +122,16 @@ def wikipedia(term, language='en', last=False):
|
||||||
or ('in existing articles' in sentence)):
|
or ('in existing articles' in sentence)):
|
||||||
if not last:
|
if not last:
|
||||||
term = search(term)
|
term = search(term)
|
||||||
return wikipedia(term, language=language, last=True)
|
return devwikipedia(term, language=language, last=True)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
sentence = '"' + sentence.replace('"', "'") + '"'
|
sentence = '"' + sentence.replace('"', "'") + '"'
|
||||||
sentence = sentence.decode('utf-8').encode('utf-8')
|
sentence = sentence.decode('utf-8').encode('utf-8')
|
||||||
wikiuri = wikiuri.decode('utf-8').encode('utf-8')
|
devwikiuri = devwikiuri.decode('utf-8').encode('utf-8')
|
||||||
term = term.decode('utf-8').encode('utf-8')
|
term = term.decode('utf-8').encode('utf-8')
|
||||||
return sentence + ' - ' + (wikiuri % (term))
|
return sentence + ' - ' + (devwikiuri % (term))
|
||||||
|
|
||||||
def wik(phenny, input):
|
def devwik(phenny, input):
|
||||||
for x in phenny.bot.commands["high"].values():
|
for x in phenny.bot.commands["high"].values():
|
||||||
if x[0].__name__ == "aa_hook":
|
if x[0].__name__ == "aa_hook":
|
||||||
if x[0](phenny, input):
|
if x[0](phenny, input):
|
||||||
|
@ -151,9 +151,9 @@ def wik(phenny, input):
|
||||||
language, term = a, b
|
language, term = a, b
|
||||||
term = term.replace(' ', '_')
|
term = term.replace(' ', '_')
|
||||||
|
|
||||||
try: result = wikipedia(term, language)
|
try: result = devwikipedia(term, language)
|
||||||
except IOError:
|
except IOError:
|
||||||
args = (language, wikiuri % (term))
|
args = (language, devwikiuri % (term))
|
||||||
error = "Can't connect to dev.minetest.net (%s)" % args
|
error = "Can't connect to dev.minetest.net (%s)" % args
|
||||||
return phenny.say(error)
|
return phenny.say(error)
|
||||||
|
|
||||||
|
@ -161,8 +161,8 @@ def wik(phenny, input):
|
||||||
phenny.say(result)
|
phenny.say(result)
|
||||||
else: phenny.say('Can\'t find anything in Dev Wiki for "%s".' % origterm)
|
else: phenny.say('Can\'t find anything in Dev Wiki for "%s".' % origterm)
|
||||||
|
|
||||||
wik.commands = ['dev', 'devwik', 'devwiki']
|
devwik.commands = ['dev', 'devwik', 'devwiki']
|
||||||
wik.priority = 'high'
|
devwik.priority = 'high'
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print __doc__.strip()
|
print __doc__.strip()
|
||||||
|
|
Loading…
Reference in New Issue