写点什么

翻译 API 的 python 调用方式

作者:技能实验室
  • 2022-10-19
    河南
  • 本文字数:1495 字

    阅读完需:约 1 分钟

电脑上有个文件夹,里面的子文件夹都是英文的,看着很是不方便,所以打算给英文后面加个中文;手动修改名字也是个办法,但是还有其他自动的办法;就不需要手动了。



修改文件夹的方法很简单,使用 python 中的 os 库就行


    path = r'I:/ps/uploads/'    list_f = os.listdir(path)    for l_f in list_f:        print(l_f)        zh = ‘中文’        #print(zh)        os.rename(path+l_f,path+l_f+'_'+zh)
复制代码


但是英文翻译成中文,就得借助与翻译接口了;


支持翻译的接口很多,看选择那一个了,当然是已注册的平台优先了,这里选择百度翻译的接口;

调用翻译接口步骤

0、平台地址:http://api.fanyi.baidu.com/1、首先得有一个账号,一个 appid 和一个密钥 2、查看对接文档,了解入参出参 3、敲代码;


直接先看文档:


其中最主要的是生成签名:Step1. 将请求参数中的 APPID(appid), 翻译 query(q,注意为 UTF-8 编码),随机数(salt),以及平台分配的密钥 按照 appid+q+salt+密钥的顺序拼接得到字符串 1。Step2. 对字符串 1 做 MD5 ,得到 32 位小写的 sign。代码如下:


sign = appid + q + str(salt) + secretKeysign = hashlib.md5(sign.encode()).hexdigest()myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(q) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(salt) + '&sign=' + sign
复制代码


需要用到两个库:


import hashlib #生成 md5import urllib #对文本就行 url 编码


接口调用就简单一点了;http 请求有多种选择;1.、使用 http.client


 httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')    httpClient.request('GET', myurl)    # response是HTTPResponse对象    response = httpClient.getresponse()    result_all = response.read().decode("utf-8")    result = json.loads(result_all)
复制代码


2、使用 requests:


 endpoint = 'http://api.fanyi.baidu.com'  result = requests.get(endpoint + myurl).json()
复制代码


使用 requests 方式,两行代码搞定;


3、提取结果;接口返回一个字段,最终翻译结果需要通过属性获取;result_one = result['trans_result'][0]['dst']

代码实现


from time import sleepimport requestsimport hashlibimport urllibimport randomimport search_strimport os appid = search_str.appid # 填写你的appidsecretKey = search_str.secretKey # 填写你的密钥
def getResult(q, fromLang = 'en', toLang = 'zh'): myurl = '/api/trans/vip/translate' salt = random.randint(32768, 65536) #q = 'm_m' #翻译内容 sign = appid + q + str(salt) + secretKey sign = hashlib.md5(sign.encode()).hexdigest() myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(q) myurl = myurl + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(salt) + '&sign=' + sign
try: endpoint = 'http://api.fanyi.baidu.com' result = requests.get(endpoint + myurl).json() print(result) result_one = result['trans_result'][0]['dst'] return result_one except Exception as e: print(e)

#result = getResult('apple')#print(result)
def fanyi(): path = r'I:/ps/uploads/' list_f = os.listdir(path) go = False for l_f in list_f: print(l_f) try: zh = getResult(l_f) os.rename(path+l_f,path+l_f+'_'+zh) except: pass sleep(1)
复制代码


发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2022-07-26 加入

还未添加个人简介

评论

发布
暂无评论
翻译API的python调用方式_Python_技能实验室_InfoQ写作社区