Spaces:
Runtime error
Runtime error
| """ | |
| 翻译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 != "": | |
| # 签名计算 参考文档 https://api.fanyi.baidu.com/product/113 | |
| 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) | |