2021-11-23 21:44:59 +08:00
|
|
|
from utils.http_utils import AsyncHttpx
|
2022-12-24 00:16:17 +08:00
|
|
|
import time
|
|
|
|
|
import random
|
|
|
|
|
from hashlib import md5
|
2021-05-20 19:25:51 +08:00
|
|
|
|
2022-12-24 00:16:17 +08:00
|
|
|
# url = f"http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"
|
|
|
|
|
url = f"https://fanyi-api.baidu.com/api/trans/vip/translate"
|
2021-05-20 19:25:51 +08:00
|
|
|
|
|
|
|
|
|
2022-12-24 00:16:17 +08:00
|
|
|
# 获取lts时间戳,salt加密盐,sign加密签名
|
|
|
|
|
def get_lts_salt_sign(word):
|
|
|
|
|
lts = str(int(time.time() * 10000))
|
|
|
|
|
salt = lts + str(random.randint(0, 9))
|
|
|
|
|
string = "fanyideskweb" + word + salt + "Ygy_4c=r#e#4EX^NUGUc5"
|
|
|
|
|
s = md5()
|
|
|
|
|
# md5的加密串必须为字节码
|
|
|
|
|
s.update(string.encode())
|
|
|
|
|
# 16进制加密
|
|
|
|
|
sign = s.hexdigest()
|
|
|
|
|
print(lts, salt, sign)
|
|
|
|
|
return lts, salt, sign
|
|
|
|
|
|
|
|
|
|
async def translate_msg(language_type, word):
|
|
|
|
|
# data = {
|
|
|
|
|
# "type": parse_language(language_type),
|
|
|
|
|
# "i": msg,
|
|
|
|
|
# "doctype": "json",
|
|
|
|
|
# "version": "2.1",
|
|
|
|
|
# "keyfrom": "fanyi.web",
|
|
|
|
|
# "ue": "UTF-8",
|
|
|
|
|
# "action": "FY_BY_CLICKBUTTON",
|
|
|
|
|
# "typoResult": "true",
|
|
|
|
|
# }
|
|
|
|
|
lts, salt, sign = get_lts_salt_sign(word)
|
2021-05-20 19:25:51 +08:00
|
|
|
data = {
|
2021-07-30 21:21:51 +08:00
|
|
|
"type": parse_language(language_type),
|
2022-12-24 00:16:17 +08:00
|
|
|
'i': word,
|
|
|
|
|
'from': 'AUTO',
|
|
|
|
|
'to': 'AUTO',
|
|
|
|
|
'smartresult': 'dict',
|
|
|
|
|
'client': 'fanyideskweb',
|
|
|
|
|
'salt': salt,
|
|
|
|
|
'sign': sign,
|
|
|
|
|
'lts': lts,
|
|
|
|
|
'bv': 'bdc0570a34c12469d01bfac66273680d',
|
|
|
|
|
'doctype': 'json',
|
|
|
|
|
'version': '2.1',
|
|
|
|
|
'keyfrom': 'fanyi.web',
|
|
|
|
|
'action': 'FY_BY_REALTlME'
|
2021-05-20 19:25:51 +08:00
|
|
|
}
|
2021-11-23 21:44:59 +08:00
|
|
|
data = (await AsyncHttpx.post(url, data=data)).json()
|
|
|
|
|
if data["errorCode"] == 0:
|
2022-12-24 00:16:17 +08:00
|
|
|
return f'原文:{word}\n翻译:{data["translateResult"][0][0]["tgt"]}'
|
2021-07-30 21:21:51 +08:00
|
|
|
return "翻译惜败.."
|
|
|
|
|
|
2021-05-20 19:25:51 +08:00
|
|
|
|
|
|
|
|
# ZH_CN2EN 中文 » 英语
|
|
|
|
|
# ZH_CN2JA 中文 » 日语
|
|
|
|
|
# ZH_CN2KR 中文 » 韩语
|
|
|
|
|
# ZH_CN2FR 中文 » 法语
|
|
|
|
|
# ZH_CN2RU 中文 » 俄语
|
|
|
|
|
# ZH_CN2SP 中文 » 西语
|
|
|
|
|
# EN2ZH_CN 英语 » 中文
|
|
|
|
|
# JA2ZH_CN 日语 » 中文
|
|
|
|
|
# KR2ZH_CN 韩语 » 中文
|
|
|
|
|
# FR2ZH_CN 法语 » 中文
|
|
|
|
|
# RU2ZH_CN 俄语 » 中文
|
|
|
|
|
# SP2ZH_CN 西语 » 中文
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def parse_language(language_type):
|
2021-07-30 21:21:51 +08:00
|
|
|
if language_type == "英翻":
|
|
|
|
|
return "EN2ZH_CN"
|
|
|
|
|
if language_type == "日翻":
|
|
|
|
|
return "JA2ZH_CN"
|
|
|
|
|
if language_type == "韩翻":
|
|
|
|
|
return "KR2ZH_CN"
|
2021-05-20 19:25:51 +08:00
|
|
|
# if language_type == '法翻':
|
|
|
|
|
# return 'FR2ZH_CN'
|
|
|
|
|
# if language_type == '俄翻':
|
|
|
|
|
# return 'RU2ZH_CN'
|
2021-07-30 21:21:51 +08:00
|
|
|
if language_type == "翻英":
|
|
|
|
|
return "ZH_CN2EN"
|
|
|
|
|
if language_type == "翻日":
|
|
|
|
|
return "ZH_CN2JA"
|
|
|
|
|
if language_type == "翻韩":
|
|
|
|
|
return "ZH_CN2KR"
|
2021-05-20 19:25:51 +08:00
|
|
|
# if language_type == '翻法':
|
|
|
|
|
# return 'ZH_CN2FR'
|
|
|
|
|
# if language_type == '翻俄':
|
|
|
|
|
# return 'ZH_CN2RU'
|