百度翻译api调用(具体参考的哪篇博文找不到了,好几篇太像了,原作者留意到可以告知我改转载附上链接):
import urllib, hashlib
import random
import requests, sys
def getTransText(in_text):
q = in_text
fromLang = 'auto' # 翻译源语言=自动检测
toLang1 = 'en' # 译文语言 = 英文
appid = '' # APP ID
salt = random.randint(32768, 65536)
secretKey = '' # 密钥
# 生成sign
sign = appid + q + str(salt) + secretKey
m1 = hashlib.md5(sign.encode('utf-8'))
sign = m1.hexdigest()
# 百度翻译有http和https两个api入口,https的翻译接口需要更换url
pre = '/api/trans/vip/language'
mypre = pre + '?appid=' + appid + '&q=' + q + '&from=' + fromLang + '&to=' + toLang1 + '&salt=' + str(
salt) + '&sign=' + sign
myurl = '/api/trans/vip/translate'
myurl = myurl + '?appid=' + appid + '&q=' + q + '&from=' + fromLang + '&to=' + toLang1 + '&salt=' + str(
salt) + '&sign=' + sign
mypreurl = "http://api.fanyi.baidu.com" + mypre
url = "http://api.fanyi.baidu.com" + myurl
url = url.encode('utf-8')
print(url)
res = requests.get(url)
try:
res = eval(res.text)
return (res["trans_result"][0]['dst'])
except:
# 没有得到翻译结果返回原字串
return in_text
langid离线语种检测(langid):
pip install langid
import langid
lang = langid.classify(string)
注意点:结果以json往文件写入时要添加ensure_ascii=False,避免日语等没有成功翻译返回的结果写入文件乱码。
wline = json.dumps(dic, ensure_ascii=False)+'\n'
fw.write(wline)