python使用有道智云翻译API

  又是一篇起源于奇怪需求的文章。在公司使用的某个开发工具不知何缘故和有道词典客户端有冲突(好像是端口冲突),使用不了多久就会卡死,只能卸载有道词典。一时没找到其他感觉不错的翻译软件。网页版的有道翻译和其他翻译又觉得打开网页的过程麻烦,找页签也烦,于是想着弄一个控制台的翻译工具。
  附上有道智云API文档地址 翻译文档,有道智云平台注册送50元,可查100万字符,自己使用了3天上后台看了一下扣了一分钱。
  后面准备也搞一下百度翻译,每月有200万字符的免费额度。

1.使用有道智云平台

  首先要注册有道智云,在后台创建应用及自然语言翻译实例,并将应用和实例进行绑定,具体方式可以自行在后台试试。最后需要拿到的就是下图中的应用ID和应用密钥。在这里插入图片描述

2.python脚本

# -*- coding: UTF-8 -*-
import sys
import os
import requests
from requests.exceptions import RequestException
import json
import uuid
import hashlib
import time

CURRENT_PATH = os.path.abspath(__file__)
CURRENT_PATH = os.path.split(CURRENT_PATH)[0]

YOUDAO_API_URL = 'https://openapi.youdao.com/api'
YOUDAO_API_DOC = r'http://ai.youdao.com/DOCSIRMA/html/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E7%BF%BB%E8%AF%91/API%E6%96%87%E6%A1%A3/%E6%96%87%E6%9C%AC%E7%BF%BB%E8%AF%91%E6%9C%8D%E5%8A%A1/%E6%96%87%E6%9C%AC%E7%BF%BB%E8%AF%91%E6%9C%8D%E5%8A%A1-API%E6%96%87%E6%A1%A3.html'

ERROR_CODE = {
    '0': '正常',
    '101': '缺少必填的参数,首先确保必填参数齐全,然后确认参数书写是否正确',
    '102': '不支持的语言类型',
    '103': '翻译文本过长',
    '104': '不支持的API类型',
    '105': '不支持的签名类型',
    '108': '应用ID无效,注册账号,登录后台创建应用和实例并完成绑定,可获得应用ID和应用密钥等信息',
    '105': '不支持的签名类型',
}

def get_result(word):
    time_curtime = int(time.time())
    app_id = '********' # 这里填应用ID
    app_key = '*******' # 这里填应用密钥
    uu_id = uuid.uuid4()
    sign = hashlib.sha256((app_id + word  + str(uu_id) + str(time_curtime) + app_key).encode('utf-8')).hexdigest()   # sign生成
    data = {
        'q':word,
        'from':"auto",
        'to':"auto",
        'appKey':app_id,
        'salt': uu_id,
        'sign':sign,
        'signType':"v3",
        'curtime':time_curtime,
    }

    try:
        r = requests.get(YOUDAO_API_URL, params=data)
        return r.json()
    except RequestException as e:
        print('net error: %s' % e.message)
        sys.exit()


if __name__ == '__main__':
    while(True):
        try:
            n = input("input:")
        except:
            print('invalid input')
            continue

        if n == ' ':
            sys.exit()
        
        result = get_result(n)
        error_code = result['errorCode']
        if error_code != '0':
            error_msg = ERROR_CODE.get(error_code, 'unkonw error 可参考有道智云文档: ' + YOUDAO_API_DOC)
            print('error code: {}; {}'.format(error_code, error_msg))
            continue

        if 'translation' in result:
            for e in result['translation']:
                print(e)
            print('')

        if 'basic' in result:
            basic = result['basic']
            explains = basic['explains']
            if len(explains) > 0:
                print('词意:')
                for e in explains:
                    print(e)
                print('')
        
            if 'uk-phonetic' in basic:
                print('英式发音:' + basic['uk-phonetic']) 
            if 'us-phonetic' in basic:
                print('美式发音:' + basic['us-phonetic']) 
            print('')

        if 'web' in result:
            print('网络翻译:')
            for e in result['web']:
                print('{}: {}'.format(e['key'], e['value']))
            print('')

        print('-------------------------------')

3.使用方式

  我自己是将此脚本放在了一个tools文件夹下,再建一个执行该python脚本的批处理文件,并将此文件夹路径加入环境变量path中。这样就可以在控制台方便的使用了。
  使用结果如下图,一开始只是想找个替代有道词典客户端的方式,结果发现还挺方便,可以一直记录之前翻译的结果,平常使用有道词典和网页版翻译时就没法做到。
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值