前置き
以前 python で excite 翻訳を試みたが、さすがに英語翻訳だけでは耐えられず、
相互翻訳機能を付けたものを基本的に使っていた。(とはいえ 翻訳したいときというのは調べ物をしているときなので cygwin よりも、translate.google.com の方が瞬時に開けたので使う機会で言えば後者の方が多かった気もするが)
しかしながら当時はaliasをはったとはいえ、いちいち実行してから変換語句を入力する点、
オプションとして-jをつけたら日本語、-eをつけたら英語としていた点において面倒極まりなかった。
それを気が向いたので改良した。
こんな感じ。
二航戦を正しく翻訳してくれないらしい。コレクトのスペルを完全に度忘れしてしまったのは気のせいだと思う。
excitrans.py
from optparse import OptionParser import urllib, urllib2 import re url = "http://www.excite.co.jp/world/" def trans(s): wb_lp = 'ENJA' if isinstance(s, str): s = unicode(s, "utf-8") for c in s: if ord(c) > 255: wb_lp = 'JAEN' break s = s.encode("utf-8") values = { 'before' : s, 'wb_lp' : wb_lp } data = urllib.urlencode(values) req = urllib2.Request(url, data) req.add_header("User-Agent", "Mozilla/5.0") try: response = urllib2.urlopen(req) except urllib2.HTTPError, e: e.code, e.msg exit() except urllib2.URLError, e: print e.reason exit() html = response.read() m = re.search(r'<textarea id="after".*?name="after">(.+?)</textarea>', html) return m.group(1) if __name__ == '__main__': (options, args) = OptionParser().parse_args() print trans(' '.join(args))
感想
オプションを使うためにoptparseを導入したが、最終的にオプションを全く使わない展開になったため、sys.argv でよかったかもしれない。
python を触り初めたころはわけがわからないつらいと思っていたが、最近は最高に神と思えるようになってきたので今後も積極的に使っていきたい。