在命令列用使用有道翻譯,python寫一個命令列有道詞典

2puT發表於2016-09-18
平常都是用終端敲, 有時候不會的詞語也懶得開啟詞典了,乾脆搞了個簡單的查詞命令.思路也很簡單,直接呼叫有道的api,解析下返回的json就ok了。只用到了python原生的庫,支援python2和python3.
#!/usr/bin/env python
# -*- coding:utf-8 -*-

# API key:273646050
# keyfrom:11pegasus11

import json
import sys

try:    # py3
    from urllib.parse import urlparse, quote, urlencode, unquote
    from urllib.request import urlopen
except:    # py2
    from urllib import urlencode, quote, unquote
    from urllib2 import urlopen


def fetch(query_str=''):
    query_str = query_str.strip("'").strip('"').strip()
    if not query_str:
        query_str = 'python'

    print(query_str)
    query = {
        'q': query_str
    }
    url = 'http://fanyi.youdao.com/openapi.do?keyfrom=11pegasus11&key=273646050&type=data&doctype=json&version=1.1&' + urlencode(query)
    response = urlopen(url, timeout=3)
    html = response.read().decode('utf-8')
    return html


def parse(html):
    d = json.loads(html)
    try:
        if d.get('errorCode') == 0:
            explains = d.get('basic').get('explains')
            for i in explains:
                print(i)
        else:
            print('無法翻譯')

    except:
        print('翻譯出錯,請輸入合法單詞')


def main():
    try:
        s = sys.argv[1]
    except IndexError:
        s = 'python'
    parse(fetch(s))


if __name__ == '__main__':
    main()

使用

  1. 將上面程式碼貼上後命名為youdao.py
  2. 修改名稱mv youdao.py youdao, 然後加上可執行許可權chmod a+x youdao
  3. 拷貝到/usr/local/bin。 cp youdao /usr/local/bin

使用的時候把要翻譯的單詞作為第一個命令列引數,要是句子用引號括起來。

原文連結:http://ningning.today/2015/12/02/python/%E7%94%A8python%E5%86%99%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%9C%89%E9%81%93%E8%AF%8D%E5%85%B8/

相關文章