今天要做一个翻译的模块,但是在虚拟机下测试发现,百度给的demo无法运行,网上很多教程都无法使用
我发现稍微改动一下就可以了,
注意如果是NAT模式,需要使用主机ip ,代理或者其他方式
import os
import sys
import uuid
import requests
import hashlib
import time
import importlib
import json
from Py4Js import *
import requests
import http.client
import urllib
import random
importlib.reload(sys)
#sys.setdefaultencoding('utf-8')
def baidu_translate(content):
appid = '你的appid'
secretKey = '你的密钥'
httpClient = None
myurl = '/api/trans/vip/translate'
q = content
fromLang = 'auto' # 源语言
toLang = 'zh' # 翻译后的语言
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
#print('api.fanyi.baidu.com'+myurl)
try:
response = requests.get('https://api.fanyi.baidu.com'+myurl)
a = json.loads(response.content)
#print(a)
'''
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) # 打印结果
'''
res = ''
for k in a['trans_result']:
res += k['dst']
return res
except Exception as e:
print(e)
return ''
finally:
if httpClient:
httpClient.close()
def baidu_trans_fin(content):
res=""
if(len(content)>3000):
while(len(content)>3000):
res+=baidu_translate(content[0:2999])
content=content[3000:]
else:
res=baidu_translate(content)
print("翻译结果为:"+res)
return res