20行代碼手擼一個命令行英漢翻譯工具

2021-03-06 猿人學Python

經常碰到不認識的英文單詞就去有道字典網頁去查查看,每次的過程都是「打開有道網頁->輸入單詞->查看結果」,這個過程有點兒繁瑣。可是一直不厭其煩的這樣重複著,卻不想解決一下。。。直到在微博上面看到有個人利用有道翻譯API做了個命令行下面的小工具。可是他是用ruby寫的,對於Python空來說,這怎麼可以呢,於是自己寫一個吧,很簡單的。

有道翻譯API

http://fanyi.youdao.com/openapi?path=data-mode
在這裡簡單申請一個應用即可。因為這個API有每小時1000次的使用限制,如果都使用我的key就會出現使用次數超限的情況。可以自己申請一個以滿足自己的需求。

API使用很簡單,傳幾個參數做一個http請求,返回json格式的結果。

Python實現

具體實現可以看代碼:https://github.com/veelion/tt

Python裡面做http請求的庫很多,最流行和簡便的是requests,最開始我也選擇了該庫。寫完運行的時候發現,總是要遲鈍一會兒才會出結果。懷疑是requests庫內部加載的東西太多,於是換urllib2的urlopen。

Python 2.7下叫urllib2,到了Python 3下面就沒有該包了,原來3把它放到urllib.request裡面去了,為了讓這個小工具同時在2和3下面運行,於是有了這樣的代碼:

try:
   
   from urllib.request import urlopen
   from urllib.request import quote
except ImportError:
   
   from urllib2 import urlopen
   from urllib import quote

選好http庫就寫一個函數來做翻譯工作:

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)  
       print("================================")
       print(u"%s -> %s" % (data['query'], ','.join(data['translation'])))
       if 'basic' in data:
           if 'uk-phonetic' in data['basic']:
               print(u"英式發音: %s" % data['basic']['uk-phonetic'])
               print(u"美式發音: %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)  
   except:
       traceback.print_exc()

最後,程序從命令行參數得到要被翻譯的詞,調用翻譯函數即可:

if __name__ == '__main__':
   from sys import argv
   if len(argv) > 1:
       q = argv[1]
       trans(q)

以上就是實現翻譯小工具的全部過程,很適合初學python的練手實現一下。

安裝和使用

上面介紹了翻譯小工具的實現過程,如果你只是想使用的話,我已把它發布到pypi上了,你只需使用pip命令安裝即可(linux安裝):

sudo pip install terminaltranslator

安裝程序會在/usr/local/bin/下面生成t和tt兩個簡潔命令工調用。

windowns用戶安裝:

pip install terminaltranslator

安裝程序會在python的根目錄Scripts裡生成t.exe和tt.exe 。

使用如下:

enjoy! 下次說說如何把自己的python代碼放到pypi上面以便用pip安裝。

相關焦點

  • 我手擼了一個劃線翻譯工具!
    這裡將要介紹的是一種在 Linux 平臺實現的劃詞翻譯工具,當然在考慮自己實現一個如此功能的工具前,本人也是在網上搜索了一些在 Linux 平臺實現的類似的開源工具,例如 pdfTranslator,popup-dict
  • 命令行工具開發:如何快速實現命令行提示?
    不少同學喜歡開發命令行工具,主要是開發快捷,而且和其他命令行工具配合,藉助腳本,非常容易實現一些任務的自動化。命令行工具開發比較簡單,以Java舉一個例子,通常我們只需要一個命令行參數解析器,如Java,就有args4j, jopt,picocli等,轉換為結構化的對象,根據輸入的參數進行相關的邏輯判斷,完成對應的邏輯。
  • 有道詞典命令行快速翻譯
    在編程時經常會遇到需要將中文詞彙翻譯成英文的情況。比如變量名的定義、取一個合適的函數名等情況。
  • 一天1300 Star量,GitHub上新官方命令行工具
    機器之心報導 參與:思 不想用命令行操作 GitHub 的開發者,不是好的開發者。——不是我說的 小編私以為,Git 是世界上最好的代碼版本控制工具,木有之一。
  • Go 命令行工具項目結構最佳實踐
    【導讀】本文針對Golang實現的命令行小工具項目結構做了詳細介紹,同時介紹了其他主流Go項目結構。最近我在重構早期實現的命令行工具項目,在對項目結構做改動的過程中我沒看到有一個Go 語言項目結構最佳實踐。
  • 這10個命令行工具完爆Excel
    說到Linux命令行,可能很多Linux的資深用戶覺得這很可笑,因為他們多年來一直都在使用這些工具解析日誌、理解配置工具。但是對於Linux菜鳥來說,Linux命令行是很棒的工具,只要在計算機上安裝一些工具,就可以在不了解終端的情況下了解數據集。
  • JVM 常用命令行工具
    註冊表中註冊的主機名jps 的其他常用選項如表:三、虛擬機統計信息監視工具jstat(JVM Statistics Monitoring Tool)是用於監視虛擬機各種運行狀態信息的命令行工具,可以顯示本地或者遠程虛擬機進程中的類加載、內存、垃圾收集、即時編譯等運行時數據jstat [ option vmid [interval[s|ms]
  • 微軟最爽命令行工具發布!開源六小時衝上GitHub第二
    除了這個新的命令行工具之外,微軟還發布了完整內核的Linux子系統WSL 2。當真是直擊開發者G點。長期以來,Linux和Mac下的命令行工具自成一派,Windows卻是另一套命令系統。此外,收購了GitHub的微軟,還用100星以上的項目來訓練AI造福程式設計師,這個功能,能夠基於當前代碼的上下文預測後面應該如何寫。伴隨著Windows Terminal的推出,整合了此前的Powershell、cmd命令行工具,再加上升級版的WSL、AI輔助寫代碼,還有什麼理由不投入微軟的懷抱?
  • GitHub 開源官方命令行工具登頂 TOP1,5 分鐘極速上手!
    作者 | Nabil Nalakath譯者 | 彎月,責編 | 唐小引頭圖 | CSDN多年來,作為全球最受歡迎的代碼託管平臺 GitHub 竟然一直沒有提供官方的 CLI 工具。畢竟 GitHub 是開放原始碼項目中最常用的平臺,難免讓人感到驚訝。
  • laravel 基礎面試題-偏交談-2020-12-25-laravel-命令行工具artisan與tinker
    laravel 基礎面試題 - 偏交談 - 2020-12-25-laravel - 命令行工具 artisan 與 tinker首先了解一下,
  • cUrl命令行工具下載使用心得及常用參數解釋
    Curl是一個網絡傳輸工具,同wget非常相似。主要的區別在於wget默認是保存到文件,而curl將輸出定向到命令行上。這使得curl能非常方便的查看站點的內容。原始碼地址為:http://curl.haxx.se/download/一. 如何下載Curl命令行工具?1.
  • 使用ANSI轉義碼實現一個終端命令行界面
    習慣於使用Linux的人,時常需要在終端命令行工作,默認的黑白界面看的蒼白而單調。實際上我們可以美化它的顯示,之前蟲蟲有很多文章中曾介紹過很多這樣的工具和小APP,大家可以我的參考歷史文章參考學習。除了這些工具外有沒有其他辦法美化命令行呢,還有如何在我們自己的腳本中呈現色彩化的顯示呢?
  • 使用批處理命令編寫代碼,快速寫一個小程序
     提示:點擊上方"WiFi駭客"↑獲取更多駭客資料哦~       不會做軟體也能寫代碼
  • 如何將SonarQube代碼質量分析工具安裝到Ubuntu Server 20.04上?
    如果您是雲原生開發人員(或任何其他開發人員),可能需要一款工具來分析代碼,幫助查找安全問題、缺陷、漏洞、異常和一般問題。如果您只從事一個小項目,可以通過老式的手動方法來解決。如果您經常為CI/CD之類的項目編寫代碼,工作量決定了您可能無法手動檢查。這時如何是好?您總是可以安裝SonarQube之類的工具。
  • GitHub官方開源新命令行工具
    開源最前線(ID:OpenSourceTop) 猿妹綜合整理近日,GitHub 發布命令列工具 (Beta) 測試版,官方表示,GitHub CLI提供了一種更簡單、更無縫的方法來使用Github。這個命令行工具叫做GitHub CLI,別名gh。現在,你就可以在macOS、Windows和Linux上安裝GitHub CLI。Github也會通過用戶反饋,在之後的版本中添加更多的功能。
  • 愛上命令行並深入
    命令行是一個強大的工具,而我們大多數卻都不會用,可以說沒有命令行的世界等於你失去了一多半的樂趣和技能。本文蟲蟲和大家一起來聊聊命令行,並教大家一起來學習命令,不管你是運維、開發、測試、DBA,甚至是項目經理、PM都能通過命令行獲得很大的裨益。
  • 摸魚也要有技巧 3個linux命令行工具讓你假裝很忙
    如果你花時間看過諜戰驚悚片、動作片或犯罪電影,你就會在腦海中清晰地勾勒出黑客坐在電腦屏幕前的樣子:一行行快速移動的代碼,大量的矩陣中的十六進位數字代碼像雨水一樣飛過。也許有一張世界地圖,上面有一些發光點和一些快速更新的圖表,也許還會有三維幾何圖形。
  • Node.js + typescript 寫一個命令批處理輔助工具
    可惜的是這些工具或功能只能對當前文件做處理,處理編譯後的文件又要手動去執行命令,不能連續監聽或監聽一次執行多個命令,比如webstorm的file watch監聽了sass文件變化, 那麼它不能再監聽css變化去壓縮代碼,否則會無限編譯下去。那麼為什麼不使用webpack或者rollup之類的打包工具呢?
  • Calibre 常用命令行工具詳解之 calibre-smtp
    全能型電子書管理軟體 Calibre 除了有可視化操作界面,還附帶了一系列命令行工具(Command Line Interface),這些工具功能獨立且實用
  • 12個基本命令行工具幫你擺脫滑鼠
    大數據文摘作品編譯:汪小七、Katrine Ren、夏雅薇本篇文章作者是Matthew Mayo,選自KDnuggets(一個著名的數據挖掘網站)。簡要介紹了12種類Unix作業系統命令行工具,以及這些命令行工具對數據科學研究和數據科學家的價值。