經(jīng)常碰到不認(rèn)識的英文單詞就去有道字典網(wǎng)頁去查查看,每次的過程都是“打開有道網(wǎng)頁->輸入單詞->查看結(jié)果”,這個過程有點兒繁瑣。今天就來自己寫一個英語翻譯工具。
有道翻譯API
http://fanyi.youdao.com/openapi?path=data-mode
在這里簡單申請一個應(yīng)用即可。因為這個API有每小時1000次的使用限制,如果都使用我的key就會出現(xiàn)使用次數(shù)超限的情況??梢宰约荷暾堃粋€以滿足自己的需求。
API使用很簡單,傳幾個參數(shù)做一個http請求,返回json格式的結(jié)果。
Python實現(xiàn)
具體實現(xiàn)可以看代碼:https://github.com/veelion/tt
Python里面做http請求的庫很多,最流行和簡便的是requests,最開始我也選擇了該庫。寫完運行的時候發(fā)現(xiàn),總是要遲鈍一會兒才會出結(jié)果。懷疑是requests庫內(nèi)部加載的東西太多,于是換urllib2的urlopen。
Python 2.7下叫urllib2,到了Python 3下面就沒有該包了,原來Python 3把它放到urllib.request里面去了,為了讓這個小工具同時在2和3下面運行,于是有了這樣的代碼:
選好http庫就寫一個函數(shù)來做翻譯工作:
def trans(q): print('translating...') url = ('http://fanyi.youdao.com/openapi.do?' 'keyfrom=%s&key=%s&type=data&' 'doctype=json&version=1.1&' 'q=%s') % (YOUDAO_KEYFROM, YOUDAO_KEY, quote(q)) try: r = urlopen(url) html = r.read() data = json.loads(html) if data['errorCode'] != 0: print(html) return print(BRO) # 設(shè)置終端字體顏色 print('================================') print(u'%s -> %s' % (data['query'], ','.join(data['translation']))) if 'basic' in data: if 'uk-phonetic' in data['basic']: print(u'英式發(fā)音: %s' % data['basic']['uk-phonetic']) print(u'美式發(fā)音: %s' % data['basic']['us-phonetic']) for e in data['basic']['explains']: print(u'%s' % e) if 'web' in data: print('') for e in data['web']: print(u'%s -> %s' % (e['key'], ','.join(e['value']))) print('================================') print(NOR) # 恢復(fù)終端字體顏色 except: traceback.print_exc()
最后,程序從命令行參數(shù)得到要被翻譯的詞,調(diào)用翻譯函數(shù)即可:
以上就是實現(xiàn)翻譯小工具的全部過程,很適合初學(xué)python的練手實現(xiàn)一下。
安裝和使用
上面介紹了翻譯小工具的實現(xiàn)過程,如果你只是想使用的話,我已把它發(fā)布到pypi上了,你只需使用pip命令安裝即可(linux安裝):
sudo pip install terminaltranslator
安裝程序會在/usr/local/bin/下面生成t和tt兩個簡潔命令工調(diào)用。
windowns用戶安裝:
pip install terminaltranslator
安裝程序會在python的根目錄Scripts里生成t.exe和tt.exe 。
使用如下:
聯(lián)系客服