42 lines
1.7 KiB
Python
42 lines
1.7 KiB
Python
import requests
|
||
import json
|
||
from TranslateParent import TranslateParent
|
||
|
||
|
||
class BaiduCloud(TranslateParent):
|
||
def __init__(self, ):
|
||
from main import server
|
||
self.api_key, self.secret_key = server.tell_baidu_api()
|
||
|
||
def _get_access_token(self):
|
||
url = "https://aip.baidubce.com/oauth/2.0/token"
|
||
params = {"grant_type": "client_credentials", "client_id": self.api_key, "client_secret": self.secret_key}
|
||
return str(requests.post(url, params=params).json().get("access_token"))
|
||
|
||
def translate_list(self, tag_list: list, target_language: str = "zh") -> dict:
|
||
api_url: str = "https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token=" + self._get_access_token()
|
||
translate_string = ''
|
||
for i in tag_list:
|
||
translate_string = translate_string + i + ","
|
||
translate_string = translate_string[:-1]
|
||
payload = json.dumps({
|
||
"from": "en",
|
||
"to": target_language,
|
||
"q": translate_string
|
||
}, ensure_ascii=False)
|
||
headers = {
|
||
'Content-Type': 'application/json',
|
||
'Accept': 'application/json'
|
||
}
|
||
response = requests.request("POST", api_url, headers=headers, data=payload.encode("utf-8"))
|
||
response.encoding = "utf-8"
|
||
response_dict: dict = json.loads(response.text)
|
||
if response.status_code != 200:
|
||
return {"status": False}
|
||
if "error_code" in response_dict.keys():
|
||
print(response.text)
|
||
return {"status": False}
|
||
translate_result: str = response_dict.get("result").get("trans_result")[0].get("dst")
|
||
translate_result_list: list = translate_result.split(",")
|
||
return {"status": True, "translate_list": translate_result_list}
|