python3调用百度翻译API实现实时翻译
今天需要做一个翻译的工具,找到之前写过的有道翻译,已经不能用了,最后看到百度翻译还不错,不过官方版本是Python2,我需要Python3,就自己写了一个:
#coding:utf8
'''
@Author:LCY
@Contact:lchuanyong@126.com
@blog:http://http://blog.csdn.net/lcyong_
@Date:2018-01-15
@Time:19:19
说明:appid和secretKey为百度翻译文档中自带的,需要切换为自己的
python2和python3部分库名称更改对应如下:
httplib---->http.client
md5---->hashlib.md5
urllib.quote---->urllib.parse.quote
官方链接:
http://api.fanyi.baidu.com/api/trans/product/index
'''
importhttp.client
importhashlib
importjson
importurllib
importrandom
defbaidu_translate(content):
appid='20151113000005349'
secretKey='osubCEzlGjzvw8qdQc41'
httpClient=None
myurl='/api/trans/vip/translate'
q=content
fromLang='zh'#源语言
toLang='jp'#翻译后的语言
salt=random.randint(32768,65536)
sign=appid+q+str(salt)+secretKey
sign=hashlib.md5(sign.encode()).hexdigest()
myurl=myurl+'?appid='+appid+'&q='+urllib.parse.quote(
q)+'&from='+fromLang+'&to='+toLang+'&salt='+str(
salt)+'&sign='+sign
try:
httpClient=http.client.HTTPConnection('api.fanyi.baidu.com')
httpClient.request('GET',myurl)
#response是HTTPResponse对象
response=httpClient.getresponse()
jsonResponse=response.read().decode("utf-8")#获得返回的结果,结果为json格式
js=json.loads(jsonResponse)#将json格式的结果转换字典结构
dst=str(js["trans_result"][0]["dst"])#取得翻译后的文本结果
print(dst)#打印结果
exceptExceptionase:
print(e)
finally:
ifhttpClient:
httpClient.close()
if__name__=='__main__':
whileTrue:
print("请输入要翻译的内容,如果退出输入q")
content=input()
if(content=='q'):
break
baidu_translate(content)
官方版本:
#/usr/bin/envpython
#coding=utf8
importhttplib
importmd5
importurllib
importrandom
appid='20151113000005349'
secretKey='osubCEzlGjzvw8qdQc41'
httpClient=None
myurl='/api/trans/vip/translate'
q='apple'
fromLang='en'
toLang='zh'
salt=random.randint(32768,65536)
sign=appid+q+str(salt)+secretKey
m1=md5.new()
m1.update(sign)
sign=m1.hexdigest()
myurl=myurl+'?appid='+appid+'&q='+urllib.quote(q)+'&from='+fromLang+'&to='+toLang+'&salt='+str(salt)+'&sign='+sign
try:
httpClient=httplib.HTTPConnection('api.fanyi.baidu.com')
httpClient.request('GET',myurl)
#response是HTTPResponse对象
response=httpClient.getresponse()
printresponse.read()
exceptException,e:
printe
finally:
ifhttpClient:
httpClient.close()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。