Keekoo77 2021-05-01 11:25 采纳率: 63.6%
浏览 105
已采纳

Python3在调用有道智云文本翻译API时出现的小问题解决办法?

目标:提交编程作业

主题:制作一个翻译器

问题:报错202

我的错误代码(省去软件主体部分,只保留了需要的部分)

import time
import requests

YOUDAO_URL = 'https://openapi.youdao.com/api'
APP_KEY = '应用ID'
APP_SECRET = '应用密钥'
#Get translate word
p=input('请输入翻译词或语句:')
#About language
to='zh-CHS'#目标中文
from='en'#起始英文

#各参数 input,salt,curtime,sha256(sign),v3(signType),zh-CHS(to),en(from),q
#以下计算方法全部根据有道技术文档
if int(len(q)) >20:
    input=str[0:9]+str(len(q))+str[10:19]
    #input=q前10个字符 + q长度 + q后10个字符
    salt = str(uuid.uuid1())
    curtime = str(int(time.time()))
    sha256=APP_KEY+input+salt+curtime+APP_SECRET
    #应用ID+input+salt+curtime+应用密钥
if int(len(q)) <=20:
    #input=q字符串(当q长度小于等于20)
    input=q
    salt = str(uuid.uuid1())
    curtime = str(int(time.time()))
    sha256=APP_KEY+input+salt+curtime+APP_SECRET
data={}
data['from']=a
data['to']=b
data['signType']='v3'
data['curtime']=curtime
data['appKey']=APP_KEY
data['q']=q.encode('utf-8')
data['salt']=salt
data['sign']=sha256
response = requests.post(url=YOUDAO_URL,data=data)
print(response.json())

语法没有错误!

appkey和appsecret不方便公示,已确认正确!

参考官网:有道智云

  • 写回答

2条回答 默认 最新

  • Lonelypatients° 2021-05-03 09:40
    关注
    # -*- coding: utf-8 -*-
    import sys
    import uuid
    import requests
    import hashlib
    import time
    from imp import reload
    
    import time
    
    reload(sys)
    
    YOUDAO_URL = 'https://openapi.youdao.com/api'
    APP_KEY = '33a12299212fc28261c'
    APP_SECRET = '9PmUgMkdlJM3fLsAC3JNc4rYGXn4EgdHzgHl'
    
    
    def encrypt(signStr):
        hash_algorithm = hashlib.sha256()
        hash_algorithm.update(signStr.encode('utf-8'))
        return hash_algorithm.hexdigest()
    
    
    def truncate(q):
        if q is None:
            return None
        size = len(q)
        return q if size <= 20 else q[0:10] + str(size) + q[size - 10:size]
    
    
    def do_request(data):
        headers = {'Content-Type': 'application/x-www-form-urlencoded'}
        return requests.post(YOUDAO_URL, data=data, headers=headers)
    
    
    def connect():
        q = input("待输入的文字: ")
    
        data = {}
        data['from'] = 'en'
        data['to'] = 'zh-CHS'
        data['signType'] = 'v3'
        curtime = str(int(time.time()))
        data['curtime'] = curtime
        salt = str(uuid.uuid1())
        print(q)
        signStr = APP_KEY + truncate(q) + salt + curtime + APP_SECRET
        sign = encrypt(signStr)
        data['appKey'] = APP_KEY
        data['q'] = q
        data['salt'] = salt
        data['sign'] = sign
        # data['vocabId'] = "您的用户词表ID"
    
        response = do_request(data)
        print(response.json())
    
    
    if __name__ == '__main__':
        connect()
    
    
    # 替换你的appid 和密钥就可以使用了,
    # 你demo中,因为sign 这个值你只拼接但是未通过ha256加密
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境