在工作上需要各个国家语言的翻译方面很多地方用的上。
获取API权限:
登录百度账号,在个人信息界面,包括修改密码、绑定手机、身份人证等
https://api.fanyi.baidu.com/api/trans/product/desktop?req=developer
百度翻译开放平台
在开发者中心:需要开通个人账号,在我的服务选项,选择通用文本翻译
申请好后,会有以下信息。
具体文档:通用翻译API接入文档
https://fanyi-api.baidu.com/doc/21
一、code
分别有三个模块Translater.py、APIConfig.py、Config_trans_lang.py
1、Translater.py代码
import hashlib
import random
import requests
from APIConfig import APIConfig
class Translater:
def __init__(self, config: APIConfig, from_lang: str, to_lang: str):
self.__config = config # API配置
self.__from_lang = from_lang # 原语言,可为auto
self.__to_lang = to_lang # 目标语言,可为auto
# 按百度API要求进行随机数生成
def __make_salt(self):
return random.randint(23212, 65536)
# 按百度API要求连接要加密的文本
def __make_md5_text(self, query, salt):
return "{}{}{}{}".format(
self.__config.appid,
query,
salt,
self.__config.key
)
# 按百度API要求进行MD5加密
def __make_signture(self, str, salt):
md5 = hashlib.md5()
md5.update(self.__make_md5_text(str, salt).encode('utf-8'))
return md5.hexdigest()
def __get_token(self, cookie):
res = [2]
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
'Referer': 'https://fanyi.baidu.com/',
'Cookie': cookie
}
token_url = "https://fanyi.baidu.com/"
session = requests.Session()
session.headers = headers
gtk = ''
# get token
for i in range(3):
response = session.get(token_url)
token = re.findall("token: '(.*?)'", response.text)[0]
gtk = re.findall('window.gtk = "(.*?)"', response.text)[0]
res[0] = token
res[1] = gtk
return res
# 发送post请求调用百度API
def __post(self, query: str):
timeout = 6000 #请求超时时间
salt = self.__make_salt()
sign = self.__make_signture(query, str(salt))
headers = {
"Content-Type": "application/x-www-form-urlencoded"
}
form_data = {
"appid": self.__config.appid,
"q": query,
"from": self.__from_lang,
"to": self.__to_lang,