Fork me on GitHub

Python3写命令行翻译脚本

用Python编写命令行下翻译脚本,使用google、扇贝翻译源。

In [ ]:
print('Python3')

每次在命令行下看到不认识的单词,还要打开浏览器,打开翻译网页,很麻烦(我太蠢),于是想自己写一命令行下翻译脚本自己使用。
我搜集并罗列了一些翻译源API:

  • baidu源:文档
  • 译云翻译api
  • 腾讯云机器翻译:文档
  • 有道智云

但是以上的都需要申请APP ID和密钥,太麻烦。愿意折腾的朋友可以看一下。
我使用的是googletrans这个第三方库+扇贝单词网页版的一个API(自己分析出来的)

扇贝翻译只能翻译一个单词,且只支持英->中,但是有一词多义和英文解释,而google翻译支持各种语言的句子翻译。

使用说明: 通常中文<->英文互译,执行trans.py 单词/语句
若翻译为其他目标语言,执行trans.py -d 目标语言代号 单词/句子
查看某个单词详细解释,执行trans.py -s 单词

常用目标语言代号:

  • 中文:zh-CN
  • 日文:ja
  • 韩文:ko
  • 英文:en
  • 德语:de
  • 西班牙语:es
  • 俄语:ru
  • 法语:fr

使用案例图如下: 示意图

具体代码如下,也可在我的github下载。

In [ ]:
#!/usr/bin/python3
# encoding:utf-8
import requests
import json
import sys
import argparse
from googletrans import Translator


translator = Translator(service_urls=[
      'translate.google.cn',
    ])
# 扇贝单词 只能翻译一个单词
shanbei = 'https://www.shanbay.com/api/v1/bdc/search/?version=2&word;='



def shanbei_trans(word):
    '''
    只能翻译单个单词
    '''
    try:
        response = requests.get(shanbei + word).text
        response = json.loads(response)
        if response and response['msg'] == 'SUCCESS':
            print('\033[1;31;40m')    # 在shell里显示彩色字体
            print(word)
            print('\033[0m')
            print('CN:%s' % response['data']['definitions']['cn'][0]['defn'])
            print('EN:%s' % response['data']['definitions']['en'][0]['defn'])
            return True
        else:
            return False
    except Exception:
        return False

def google_trans(word,dest="zh-CN"):
    print(translator.translate(word,dest=dest).text)
        
def detect_lang(word):
    lang_info = translator.detect(word)
    return lang_info.lang if lang_info.confidence > 0.9 else None
        
def args_parser():
    parser = argparse.ArgumentParser(description='Translate Some Shit')

    parser.add_argument('-v', dest='verbose', action='store_true', 
                        help='trans chinese to english')
    parser.add_argument('-s', dest='shanbei', action='store_true',
                            help='use Shanbei to translate single word')
    parser.add_argument('-d', dest='dest', action='store',
                        help='specify destination language,zh-CN default')
    parser.add_argument(dest='source', metavar='source', nargs='*',
                         help='source word to translate')
    args = parser.parse_args()
    return args
    
    
if __name__ == '__main__':
    args = args_parser()
    source = ' '.join(args.source)
    language = detect_lang(source)
    if language == None:
        print("No legal language detected")
        sys.exit()

    if args.shanbei == True :
        shanbei_trans(args.source[0])

    if args.dest != None:
        google_trans(source, dest=args.dest)
    elif args.verbose == True or language == "zh-CN":
        google_trans(source,dest='en')
    else:
        google_trans(source)

代码解释:
在shell里显示彩色字体,颜色表如下:

格式:\033[显示方式;前景色;背景色m

说明:
前景色            背景色           颜色
---------------------------------------
30                40              黑色
31                41              红色
32                42              绿色
33                43              黃色
34                44              蓝色
35                45              紫红色
36                46              青蓝色
37                47              白色
显示方式           意义
-------------------------
0                终端默认设置
1                高亮显示
4                使用下划线
5                闪烁
7                反白显示
8                不可见

例子:
\033[1;31;40m    
\033[0m          

Comments