今天要做一個翻譯的模塊,但是在虛擬機下測試發現,百度給的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