# -*- coding: euc-jp -*-
import urllib, sys, string, re
###############################################################
# 使用法を表示する
###############################################################
def usage():
print "Usage: goodic.py dictionary-type word [search-mode]"
print ""
print " dictionary-types are:"
print " ej: from English to Japanese"
print " je: from Japanese to English"
print " jn: from Japanese to Japanese"
print ""
print " Search modes:"
print " 0: prefix search(default)"
print " 1: perfect matching"
print " 2: search from explanation"
print ""
sys.exit()
###############################################################
# 引数を解析してURLを作成
###############################################################
def get_url(args):
url = "http://dictionary.goo.ne.jp/search.php"
if len(args) in [3, 4]:
kind = args[1]
word = unicode(args[2], "shift-jis").encode("euc-jp")
if len(args) == 4:
mode = args[3]
else:
mode = str(0)
url += "?MT=" + word + "&kind=" + kind + "&mode=" + mode
return url
else:
usage()
###############################################################
# URLを元にページを取得
###############################################################
def get_page(url):
try:
conn = urllib.urlopen(url)
except IOError:
sys.exit("Can't connect Goo.")
else:
page = conn.readlines()
conn.close()
return page
###############################################################
# ページ中の「意味」部分を抜き出す
###############################################################
def get_mean(page):
mean = ""
is_mean = 0
rmpat = re.compile(r'<.*?>|&.*?;', re.DOTALL)
for line in page:
if string.strip(line) == "<!--meaning_body-->":
is_mean = 1
elif string.strip(line) == "<!--/meaning_body-->":
is_mean = 0
break
if is_mean:
mean += string.strip(line)
if len(mean):
mean = string.replace(mean, "<br>", "\n")
return re.sub(rmpat, "", mean)
else:
sys.exit("Not found!!")
###############################################################
# メイン
###############################################################
if __name__ == "__main__":
url = get_url(sys.argv)
page = get_page(url)
mean = get_mean(page)
print unicode(mean, "euc-jp").encode("shift-jis")