1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 基于调用百度翻译API的简易翻译器(python)

基于调用百度翻译API的简易翻译器(python)

时间:2021-08-03 05:48:45

相关推荐

基于调用百度翻译API的简易翻译器(python)

基于调用百度翻译API的简易翻译器

一.使用自己的百度账号登录百度翻译开放平台获取百度翻译API

使用您的百度账号登录百度翻译开放平台(http://api.);

注册成为开发者,获得APPID;

进行开发者认证(如仅需标准版可跳过);

开通通用翻译API服务:http://api./api/trans/product/apichoose

二.参考技术文档和Demo(百度翻译开放平台提供)

输入参数

请求方式: 可使用GET或POST方式,如使用POST方式,Content-Type请指定为:application/x-www-form-urlencoded

字符编码:统一采用UTF-8编码格式

query长度:为保证翻译质量,请将单次请求长度控制在 6000 bytes以内。(汉字约为2000个)

签名生成方法

签名是为了保证调用安全,使用MD5算法生成的一段字符串,生成的签名长度为 32位,签名中的英文字符均为小写格式

生成方法:

Step1. 将请求参数中的 APPID(appid), 翻译query(q, 注意为UTF-8编码), 随机数(salt), 以及平台分配的密钥(可在管理控制台查看) 按照 appid+q+salt+密钥 的顺序拼接得到字符串1。

Step2. 对字符串1做md5,得到32位小写的sign。

注:

待翻译文本(q)需为UTF-8编码在生成签名拼接 appid+q+salt+密钥 字符串时,q不需要做URL encode,在生成签名之后,发送HTTP请求之前才需要对要发送的待翻译文本字段q做URL encode

输出参数

返回的结果是json格式,包含以下字段:

接入举例

例如:将英文单词apple翻译成中文:

请求参数:

q=apple

from=en

to=zh

appid=063000000001(请替换为您的appid)

salt=1435660288(随机码)

平台分配的密钥: 12345678

生成签名sign:

Step1. 拼接字符串1:

拼接appid=063000000001+q=apple+salt=1435660288+密钥=12345678得到字符串1:“063000000001apple143566028812345678”

Step2. 计算签名:(对字符串1做md5加密)

sign=md5(063000000001apple143566028812345678),得到sign=f89f9594663708c1605f3d736d01d2d4

拼接完整请求:

http://api./api/trans/vip/translate?q=apple&from=en&to=zh&appid=063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4

注:也可使用POST方式,如POST方式传送,Content-Type请指定为:application/x-www-form-urlencoded

语种列表:

通用翻译API支持语种数已达211种,完整列表如下。其中,对于常见语种列表内的语种,所有用户均可调用。对于非常见语种,仅企业已认证用户可调用,未认证用户调用将返回错误。

源语言语种不确定时可设置为 auto,目标语言语种不可设置为 auto。但对于非常用语种,语种自动检测可能存在误差。

常见语种列表

Python语言Demo(python3版)//其他版本的demo可在百度翻译开放平台下载

#百度通用翻译API,不包含词典、tts语音合成等资源,如有相关需求请联系translate_api@# coding=utf-8import http.clientimport hashlibimport urllibimport randomimport jsonappid = '' # 填写你的appidsecretKey = '' # 填写你的密钥httpClient = Nonemyurl = '/api/trans/vip/translate'fromLang = 'auto' #原文语种toLang = 'zh' #译文语种salt = random.randint(32768, 65536)q= 'apple'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=' + signtry:httpClient = http.client.HTTPConnection('api.')httpClient.request('GET', myurl)# response是HTTPResponse对象response = httpClient.getresponse()result_all = response.read().decode("utf-8")result = json.loads(result_all)print (result)except Exception as e:print (e)finally:if httpClient:httpClient.close()

三.python编写代码制作简单的百度翻译器

1.代码实现的功能

(1)使用GUI界面实现翻译功能

(2)使用百度翻译平台开放API

(3)输入想翻译的内容,输出翻译的结果

(4)支持多种语言翻译

2.具体代码及流程图

from tkinter import *from urllib import requestfrom urllib import parseimport jsonimport hashlibdef translate_Word(en_str):URL='http://api./api/trans/vip/translate'From_Data={} #创建From_Data字典,存储向服务器发送的dataFrom_Data['from']='auto' #这里默认自动识别输入语言From_Data['to']='jp' #可以在上面的语种列表中选择合适的语言From_Data['q']=en_str #要翻译的数据From_Data['appid']='' #申请的APPIDFrom_Data['salt']='1435660288' #随机数Key='' #平台分配的密匙m=From_Data['appid']+en_str+From_Data['salt']+Keym_MD5=hashlib.md5(m.encode('utf8'))From_Data['sign']=m_MD5.hexdigest()data=parse.urlencode(From_Data).encode('utf-8')#使用urlencode()方法转换标准格式response=request.urlopen(URL,data) #传递request对象和转换完格式的数据html=response.read().decode('utf-8')#读取信息并解码translate_results=json.loads(html) #使用JSONprint(translate_results) #打印出JSON数据translate_results=translate_results['trans_result'][0]['dst'] #找到翻译结果print('翻译的结果是: %s'%translate_results)#打印翻译信息return translate_resultsdef leftClick(event): en_str=Entry1.get()print(en_str)vText=translate_Word(en_str)Entry2.config(Entry2,text=vText)s.set("")Entry2.insert(0,vText)def leftClick2(event):s.set("")Entry2.insert(0,"")if __name__=='__main__':root=Tk()root.title('百度翻译器')root.geometry('300x130')Label(root,text='输入要翻译的内容:',width=15).place(x=1,y=1)#绝对坐标1,1Entry1=Entry(root,width=20)Entry1.place(x=120,y=1)Label(root,text='翻译结果:',width=22).place(x=1,y=20)s=StringVar()s.set('')Entry2=Entry(root,width=20,textvariable=s)Entry2.place(x=120,y=20)Button1 = Button(root,text='翻译',width=8) #设置Button1按钮名称,宽度及位置坐标Button1.place(x=80,y=80)Button2 = Button(root, text='清空', width=8)#设置Button2按钮名称,宽度及位置坐标Button2.place(x=180, y=80)#给button设置监听事件Button1.bind('<Button-1>',leftClick)#翻译按钮Button2.bind('<Button-1>',leftClick2) #清空按钮root.mainloop()

3.实验结果展示

(1)打开python运行代码,出现百度翻译器的GU界面,选择合适的输出语言,在“输入要翻译的内容”的输入框中输入要翻译的内容,就可以在“翻译结果”的输出框中得到翻译的结果

(2)也可以在电脑直接打开百度翻译器的python程序,按照上列的步骤,同样可以得到正确结果。

4.注意事项及不足

(1)由于百度翻译开放平台的某些要求限制以及运行环境的不稳定等因素,导致服务器地址偶尔会改变,所以当出现输出框无法输出翻译结果时,需要按照错误提示在开发者信息修改client_ip的值。

(2)由于使用的免费的标准版通用翻译,所以对一些比较生僻的词以及较为复杂的语法结构无法做到正确的翻译。

由于百度翻译器程序是在调用百度翻译开放平台的百度翻译API制作的,所以在运行程序以及在输入框输入翻译内容时,都必须保证电脑处于与外网连接的状态下,否则无法运行或得出翻译结果。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。