2026-01-13 16:51:39 +08:00

49 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import requests
import json
import hashlib
import time
from TranslateParent import TranslateParent
class XiaoNiu(TranslateParent):
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(",")
if len(translate_result_list) == 1:
translate_result_list: list = translate_result_list[0].split("")
return {"status": True, "translate_list": translate_result_list}