From 26807338310bb604f65562b2f241c452ebb1bc26 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sun, 20 Jul 2014 20:46:13 +0200 Subject: [PATCH] Make devwiki & wiki use colors :3 --- devwiki.py | 49 +++++++++++++++++++++++++++++++++---------------- wiki.py | 41 +++++++++++++++++++++++++++++------------ 2 files changed, 62 insertions(+), 28 deletions(-) diff --git a/devwiki.py b/devwiki.py index 10f7400..dc564ac 100755 --- a/devwiki.py +++ b/devwiki.py @@ -9,23 +9,30 @@ import web import urllib.parse wikiuri_g = 'http://dev.minetest.net/index.php?title=%s&printable=yes' -wikiuri_r = 'http://dev.minetest.net/index.php?title=%s' +wikiuri_r = 'http://dev.minetest.net/%s' r_content = re.compile(r'(?i)]+class=.mw-content-ltr.>') r_paragraph = re.compile(r'(?ims)

(.+?)

') -r_sentenceend = re.compile(r'\.[^\.]') +r_sentenceend = re.compile(r'\.[ A-Z]') transforms = [ - re.compile(r'(?i)]+>(.+?)'), - re.compile(r'(?i)(.+?)'), - re.compile(r'(?i)(.+?)'), + (re.compile(r'(?i)]+>(.+?)'), "\g<1>"), + (re.compile(r'(?i)(.+?)'), "\x02\g<1>\x02"), + (re.compile(r'(?i)(.+?)'), "\x1d\g<1>\x1d"), + (re.compile(r'(?i)(.+?)'), "\x1f\g<1>\x1f"), + (re.compile(r'(?i)(.+?)'), "\x0315\g<1>\x03 "), + (re.compile(r'(?i)'), ""), +] +nottext = [ + re.compile(r'(?i)^$') ] -def wiki(phenny, input): +def devwiki(phenny, input): term = input.group(2) if not term: return log.log("event", "%s queried Developer Wiki for '%s'" % (log.fmt_user(input), term), phenny) + term = term.replace(" ", "_") term = web.urlencode(term) data, scode = web.get(wikiuri_g % term) @@ -38,19 +45,29 @@ def wiki(phenny, input): return phenny.say("Sorry, did not find anything.") data = data[m.span()[1]:] - m = re.search(r_paragraph, data) - if not m: + mi = re.finditer(r_paragraph, data) + text = "" + for m in mi: + abort = False + for e in nottext: + if re.search(e, m.group(1)): + abort = True + break + if abort: + continue + text = m.group(1) + break + if not text: return phenny.say("Sorry, did not find anything.") - data = m.group(1) - for transform in transforms: - data = re.sub(transform, '\g<1>', data) - m = re.search(r_sentenceend, data) + for tf in transforms: + text = re.sub(tf[0], tf[1], text) + m = re.search(r_sentenceend, text) if m: - data = data[:m.span()[1]-1] - phenny.say('"%s" - %s ' % (web.decode(data), wikiuri_r % term)) + text = text[:m.span()[1]-1] + phenny.say('"%s" - %s ' % (web.decode(text), wikiuri_r % term)) -wiki.commands = ['devwik', 'devwiki'] -wiki.priority = 'high' +devwiki.commands = ['dev', 'devwiki'] +devwiki.priority = 'high' if __name__ == '__main__': print(__doc__.strip()) diff --git a/wiki.py b/wiki.py index 3a135ac..834c652 100755 --- a/wiki.py +++ b/wiki.py @@ -8,16 +8,22 @@ import re import web import urllib.parse -wikiuri_g = 'http://wiki.minetest.net/%s?printable=yes' +wikiuri_g = 'http://wiki.minetest.net/index.php?title=%s&printable=yes' wikiuri_r = 'http://wiki.minetest.net/%s' r_content = re.compile(r'(?i)]+class=.mw-content-ltr.>') r_paragraph = re.compile(r'(?ims)

(.+?)

') r_sentenceend = re.compile(r'\.[^\.]') transforms = [ - re.compile(r'(?i)]+>(.+?)'), - re.compile(r'(?i)(.+?)'), - re.compile(r'(?i)(.+?)'), + (re.compile(r'(?i)]+>(.+?)'), "\g<1>"), + (re.compile(r'(?i)(.+?)'), "\x02\g<1>\x02"), + (re.compile(r'(?i)(.+?)'), "\x1d\g<1>\x1d"), + (re.compile(r'(?i)(.+?)'), "\x1f\g<1>\x1f"), + (re.compile(r'(?i)(.+?)'), "\x0315\g<1>\x03 "), + (re.compile(r'(?i)'), ""), +] +nottext = [ + re.compile(r'(?i)^$') ] def wiki(phenny, input): @@ -26,6 +32,7 @@ def wiki(phenny, input): return log.log("event", "%s queried Wiki for '%s'" % (log.fmt_user(input), term), phenny) + term = term.replace(" ", "_") term = web.urlencode(term) data, scode = web.get(wikiuri_g % term) @@ -38,16 +45,26 @@ def wiki(phenny, input): return phenny.say("Sorry, did not find anything.") data = data[m.span()[1]:] - m = re.search(r_paragraph, data) - if not m: + mi = re.finditer(r_paragraph, data) + text = "" + for m in mi: + abort = False + for e in nottext: + if re.search(e, m.group(1)): + abort = True + break + if abort: + continue + text = m.group(1) + break + if not text: return phenny.say("Sorry, did not find anything.") - data = m.group(1) - for transform in transforms: - data = re.sub(transform, '\g<1>', data) - m = re.search(r_sentenceend, data) + for tf in transforms: + text = re.sub(tf[0], tf[1], text) + m = re.search(r_sentenceend, text) if m: - data = data[:m.span()[1]-1] - phenny.say('"%s" - %s ' % (web.decode(data), wikiuri_r % term)) + text = text[:m.span()[1]-1] + phenny.say('"%s" - %s ' % (web.decode(text), wikiuri_r % term)) wiki.commands = ['wik', 'wiki'] wiki.priority = 'high'