#!/usr/bin/env python3
# http://inamidst.com/saxo/
# Created by Sean B. Palmer
import re
import urllib.parse
import saxo
uri = "http://en.wiktionary.org/w/index.php?title=%s&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 wiktionary(word):
page = saxo.request(uri % urllib.parse.quote(word))
te = r_ul.sub("", page["text"])
mode = None
etymology = None
definitions = {}
for line in te.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] + '[...]'
return result