利用滬江小D做個詞典小工具


  因為經常在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('&#13', '')
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,輸入單詞這三步完成翻譯,唉,起碼偶覺得方便了很多啊。

然后嘛,代碼質量不敢說,哈哈,能用就行= =!

附上圖片:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM