200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Python调用百度通用翻译api

Python调用百度通用翻译api

时间:2021-02-12 17:21:03

相关推荐

Python调用百度通用翻译api

Python调用百度通用翻译api

首先

首先

首先需要先去百度翻译api官网注册成为开发者,然后申领一下通用翻译的appid和密钥。

附上代码,默认为源语言自动识别,效果感觉不是太好,目标语言默认为中文,可根据需要自己改

import stringimport hashlibimport requestsimport randomfrom urllib import parseclass BaiDuTranslate:def __init__(self,appid,key,fromLan='auto',toLan='zh'):self.appid = appid # 百度翻译api控制台的APP ID,申领地址:'https://api./api/trans/product/desktop?req=developer'self.key = key # 百度翻译api控制台的密钥self.fromLan = fromLan # 自动识别原语言self.toLan = toLan # 目标语言默认为中文'''原语言可选:yue 粤语en 英语th 泰语希腊语 elfra 法语spa 西班牙语ara 俄语est 爱沙尼亚语更多见官方文档:'https://fanyi-/product/113''''# md5加密def md5Encryption(self,text):hashl = hashlib.md5()hashl.update(text.encode(encoding='utf8'))secret_key = hashl.hexdigest()return secret_key# 判断字符串是否存在汉字,根据需要是否调用def IsContainChinese(self,check_str):for ch in check_str:if u'\u4e00' <= ch <= u'\u9fff':return Truereturn False#result需传参为空列表,指定目标value的key,这里是'dst'def get_key(self,js_data, target_key, results=[]):if isinstance(js_data, dict):for key in js_data.keys():data = js_data[key]self.get_key(data, target_key, results=results)if key == target_key:results.append(data)elif isinstance(js_data, list) or isinstance(js_data, tuple):for data in js_data:self.get_key(data, target_key, results=results)return results# 返回10个随机码def create_alt(self):alt = random.choices(string.ascii_letters,weights=None,cum_weights=None,k=10)return ''.join(alt)def create_sign(self,q):alt = self.create_alt()str_= self.appid + q + alt + self.keysign = self.md5Encryption(str_)return alt,sign# 请求api,返回翻译结果def requestApi(self,q):translateApi = 'https://fanyi-/api/trans/vip/translate?'salt,sign = self.create_sign(q)url = translateApi + 'q=' + parse.quote(q,encoding='utf-8') + '&from=' + self.fromLan +'&to='+ self.toLan +'&appid=' + appid + '&salt=' + salt + '&sign=' + signre = requests.get(url)data = re.json()result = ''.join(self.get_key(js_data=data, target_key='dst', results=[]))return result# 使用说明,多次请求要加上间隔,否则请求频繁得不到结果# eg:q = 'test' # 要翻译的内容key = '' # 你自己的密钥appid = '' # 你自己的appid# 翻译结果,可根据需要在 BaiDuTranslate()里加上fromLan,toLan指定翻译前后语言# 如 BaiDuTranslate(key=key,appid=appid,fromLan='en',toLan='fra')translate_result = BaiDuTranslate(key=key,appid=appid).requestApi(q=q)

循环调用最好加个time.sleep(1)间隔一下。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。