|
""" |
|
翻译api |
|
""" |
|
from config import config |
|
|
|
import random |
|
import hashlib |
|
import requests |
|
|
|
|
|
def translate(Sentence: str, to_Language: str = "jp", from_Language: str = ""): |
|
""" |
|
:param Sentence: 待翻译语句 |
|
:param from_Language: 待翻译语句语言 |
|
:param to_Language: 目标语言 |
|
:return: 翻译后语句 出错时返回None |
|
|
|
常见语言代码:中文 zh 英语 en 日语 jp |
|
""" |
|
appid = config.translate_config.app_key |
|
key = config.translate_config.secret_key |
|
if appid == "" or key == "": |
|
return "请开发者在config.yml中配置app_key与secret_key" |
|
url = "https://fanyi-api.baidu.com/api/trans/vip/translate" |
|
texts = Sentence.splitlines() |
|
outTexts = [] |
|
for t in texts: |
|
if t != "": |
|
|
|
salt = str(random.randint(1, 100000)) |
|
signString = appid + t + salt + key |
|
hs = hashlib.md5() |
|
hs.update(signString.encode("utf-8")) |
|
signString = hs.hexdigest() |
|
if from_Language == "": |
|
from_Language = "auto" |
|
headers = {"Content-Type": "application/x-www-form-urlencoded"} |
|
payload = { |
|
"q": t, |
|
"from": from_Language, |
|
"to": to_Language, |
|
"appid": appid, |
|
"salt": salt, |
|
"sign": signString, |
|
} |
|
|
|
try: |
|
response = requests.post( |
|
url=url, data=payload, headers=headers, timeout=3 |
|
) |
|
response = response.json() |
|
if "trans_result" in response.keys(): |
|
result = response["trans_result"][0] |
|
if "dst" in result.keys(): |
|
dst = result["dst"] |
|
outTexts.append(dst) |
|
except Exception: |
|
return Sentence |
|
else: |
|
outTexts.append(t) |
|
return "\n".join(outTexts) |
|
|