因為經常在Linux下閱讀一些英文資料,而Linux下目前我還找不到什么翻譯軟件可用,遇到不懂的單詞往往要打開Google Translate翻譯。開個瀏覽器,new個標簽頁,輸入網址,再輸入單詞。啊!我已經對這一系列事務煩不勝煩。剛好這段時間在一直在弄Python,於是便想用python做個翻譯的小gadget。網上翻來覆去,實在找不到什么合適的可以下手。Google Translate的API貌似關閉了吧,想直接從網頁上扒數據下來但是Google Translate的翻譯是用Ajax做的,目前我真心扒不下來啊。有道在線翻譯那個網頁二逼成什么樣我就不想多說了(連申請個key都沒法子)。必應和雅虎的babelfish的翻譯質量略差啊。翻來覆去最終圈定為滬江小D,雖然只有詞典功能,但是夠用了。方法也很簡單,直接域名里添加要查詢的單詞就OK了。具體見代碼(Python2.x):
(注:需要安裝pyquery)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib
import sys
from pyquery.pyquery import PyQuery
URL = 'http://dict.hjenglish.com/app/w/'
class NoneError(Exception):
pass
def tr(itext):
if not itext:
raise NoneError
global URL
url = URL + urllib.quote(itext)
resp = urllib.urlopen(url)
html = resp.read()
resp.close()
return extract_otext(html)
def extract_otext(html):
pqhtml = PyQuery(html)
pron = pqhtml('.trsf')
mean = pqhtml('#panel_comment')
rs = {}
# 提取單詞發音部分
if pron:
if pron.size() == 1:
s = '%s' % pron.eq(0).text()
else:
s = '%s: %s; ' % (pron.eq(0).attr('title'), pron.eq(0).text())
s += '%s: %s ' % (pron.eq(1).attr('title'), pron.eq(1).text())
rs['pron'] = s
# 提取單詞意義部分
if mean:
s = mean.html().replace('<br />', '').replace('
', '')
rs['mean'] = s
return rs
if __name__ == '__main__':
print """
Welcome to Leon Hui's translator gadget!
This gadget is based on the HJ English, so I name it hj!
(Only words supported. =_=!)
"""
while True:
try:
itext = raw_input('>>> ').strip()
itext = itext.split()[0] if itext else None
rs = tr(itext)
except NoneError:
continue
except EOFError:
print '\r'
sys.exit(0)
except KeyboardInterrupt:
print '\r'
continue
except IOError, e:
print 'Error: %s' % e
continue
else:
print rs['pron'] if rs.get('pron') else None
print rs['mean'] if rs.get('mean') else None
再給這份py文件做個軟鏈。
cd /usr/local/bin
sudo ln -s /full/path/to/your/scrpt hj
sudo chmod +x hj
好了,以后便可以直接Ctrl+Alt+T,hj,輸入單詞這三步完成翻譯,唉,起碼偶覺得方便了很多啊。
然后嘛,代碼質量不敢說,哈哈,能用就行= =!
附上圖片:

