49 lines
1.8 KiB
Python
Raw Normal View History

2026-01-13 00:48:35 +08:00
import requests
import json
import hashlib
import time
class XiaoNiu:
def __init__(self, ):
from main import server
self.api_id, self.api_key = server.tell_xiaoniu_api()
# 生成权限字符串
def _generate_auth_str(self, params):
sorted_params = sorted(list(params.items()) + [('apikey', self.api_key)], key=lambda x: x[0])
param_str = '&'.join([f'{key}={value}' for key, value in sorted_params])
md5 = hashlib.md5()
md5.update(param_str.encode('utf-8'))
auth_str = md5.hexdigest()
return auth_str
def translate_list(self, tag_list: list, target_language: str = "zh") -> dict:
api_url: str = "https://api.niutrans.com/v2/text/translate"
translate_string = ''
for i in tag_list:
translate_string = translate_string + i + ","
translate_string = translate_string[:-1]
payload = {
"from": "en",
"to": target_language,
"srcText": translate_string,
"appId": self.api_id,
"timestamp": int(time.time()),
}
auth_str = self._generate_auth_str(payload)
payload['authStr'] = auth_str
response = requests.post(api_url, data=payload)
response_dict: dict = json.loads(response.text)
if response.status_code != 200:
return {"status": False}
if "errorCode" in response_dict.keys():
print(response.text)
return {"status": False}
translate_result: str = response_dict.get("tgtText")
translate_result_list: list = translate_result.split(",")
2026-01-13 02:41:21 +08:00
if len(translate_result_list) == 1:
translate_result_list: list = translate_result_list[0].split("")
print(translate_result_list)
2026-01-13 00:48:35 +08:00
return {"status": True, "translate_list": translate_result_list}