python3——调用百度翻译API制作简单翻译器

一.获取百度翻译开放平台api

在百度翻译网站“http://api.fanyi.baidu.com/api/trans/product/index”注册账号,然后获取api,在管理控制台中可以看到自己的app id和密匙

python3——调用百度翻译API制作简单翻译器_第1张图片

通用翻译API通过HTTP接口对外提供多语种互译服务。您只需要通过调用通用翻译API,传入待翻译的内容,并指定要翻译的源语言(支持源语言语种自动检测)和目标语言种类,就可以得到相应的翻译结果。
通用翻译API HTTP地址:
http://api.fanyi.baidu.com/api/trans/vip/translate
通用翻译API HTTPS地址:
https://fanyi-api.baidu.com/api/trans/vip/translate
您需要向该地址通过POST或GET方法发送下列字段来访问服务
python3——调用百度翻译API制作简单翻译器_第2张图片
签名是为了保证调用安全,使用MD5算法生成的一段字符串,生成的签名长度为 32位,签名中的英文字符均为小写格式

二.python制作简单的翻译器

如下代码需要你自己将你申请的appid和密匙填入即可运行,此代码只是针对中文翻译英文,如果需要更改其他语言,只需将From_Data字典中from和to字段更改成对应的语言缩写就可以了,具体语言缩写可以看百度翻译api网站上的文档介绍

from tkinter import *
from urllib import request
from urllib import parse
import json
import hashlib
def translate_Word(en_str):
    URL='http://api.fanyi.baidu.com/api/trans/vip/translate'
    From_Data={}  #创建From_Data字典,存储向服务器发送的data
    From_Data['from']='zh'
    From_Data['to']='en'
    From_Data['q']=en_str     #要翻译的数据
    From_Data['appid']='填写你的appid'       #申请的APPID
    From_Data['salt']='1435660288'        #随机数
    Key='填写你的密匙'                    #平台分配的密匙
    m=From_Data['appid']+en_str+From_Data['salt']+Key
    m_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)            #使用JSON
    print(translate_results)                      #打印出JSON数据
    translate_results=translate_results['trans_result'][0]['dst']   #找到翻译结果

    print('翻译的结果是: %s'%translate_results)               #打印翻译信息
    return translate_results
def 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,1
    Entry1=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.place(x=80,y=80)
    Button2 = Button(root, text='清空', width=8)
    Button2.place(x=180, y=80)

    #给button设置监听事件
    Button1.bind('',leftClick)     #翻译按钮
    Button2.bind('',leftClick2)    #清空按钮
    root.mainloop()

python3——调用百度翻译API制作简单翻译器_第3张图片

你可能感兴趣的:(python)