#!/usr/bin/env python3 """ Pull definitions from Wikitionary.org. """ import re import requests from module import commands, example uri = 'http://en.wiktionary.org/w/index.php?title={}&printable=yes' r_tag = re.compile(r'<[^>]+>') r_ul = re.compile(r'(?ims)') def text(html): text = r_tag.sub('', html).strip() text = text.replace('\n', ' ') text = text.replace('\r', '') text = text.replace('(intransitive', '(intr.') text = text.replace('(transitive', '(trans.') return text def wikt(word): res = requests.get(uri.format(word)) # bytes = r_ul.sub('', bytes) res = res.text mode = None etymology = None definitions = {} for line in res.splitlines(): if 'id="Etymology"' in line: mode = 'etymology' elif 'id="Noun"' in line: mode = 'noun' elif 'id="Verb"' in line: mode = 'verb' elif 'id="Adjective"' in line: mode = 'adjective' elif 'id="Adverb"' in line: mode = 'adverb' elif 'id="Interjection"' in line: mode = 'interjection' elif 'id="Particle"' in line: mode = 'particle' elif 'id="Preposition"' in line: mode = 'preposition' elif 'id="' in line: mode = None elif (mode == 'etmyology') and ('

' in line): etymology = text(line) elif (mode is not None) and ('

  • ' in line): definitions.setdefault(mode, []).append(text(line)) if ' 300: result = result[:295] + '[...]' bot.say(result)