网站没有建设好可以备案吗,河北建筑工程学院招生网官网,旅游网站的功能设计,php 用什么做网站服务器想汉化StarUML这个软件#xff0c;感觉工作量太大#xff0c;想要用Python自动翻译。
结果网上找的一个个用不了#xff0c;或者用一会儿就断。
于是自己手写了一个简单的#xff0c;只有两个类#xff1a;APIConfig和Translater
使用 demo
my_api_config APIConfig(…想汉化StarUML这个软件感觉工作量太大想要用Python自动翻译。
结果网上找的一个个用不了或者用一会儿就断。
于是自己手写了一个简单的只有两个类APIConfig和Translater
使用 demo
my_api_config APIConfig(12121123456789, SFNFENRFNEFLWE)
translater Translater(my_api_config, from_langen, to_langzh)
print(translater.translate(hello world, I want to love you, Where is my dog?)
)结果如下保持灵活这里就没提取dst。
[{src: hello world, I want to love you, Where is my dog?, dst: 你好世界我想爱你我的狗在哪里}]调用过快阈值大概为0.8秒会导致返回54003会拒绝访问。 所以一次尽量多发送点文本。 更多问题去FAQ看吧。
APIConfig类
url短期不会变salt随便填个数字就行。所以这里只需要填写appid和key这两个参数。
到百度进行申请申请链接https://fanyi-api.baidu.com/免费版的一申请就能通过。 开发者信息页面有这两个参数。 # 百度翻译API配置链接对的话填下ID和密匙就OK。
class APIConfig:def __init__(self,appid: str ,key: str ,url: str https://fanyi-api.baidu.com/api/trans/vip/translate,salt: str 123):self.__appid appid # 你的百度IDself.__key key # 你的密匙self.__url url # 百度翻译API链接self.__salt salt # 随机数字propertydef appid(self):return self.__appidappid.setterdef appid(self, value: str):self.__appid valuepropertydef key(self):return self.__keykey.setterdef key(self, value: str):self.__key valuepropertydef url(self):return self.__urlurl.setterdef url(self, value: str):self.__url valuepropertydef salt(self):return self.__saltsalt.setterdef salt(self, value: str):self.__salt valueTranslater 类
class Translater:def __init__(self, config: APIConfig, from_lang: str, to_lang: str):self.__config config # API配置self.__from_lang from_lang # 原语言可为autoself.__to_lang to_lang # 目标语言# 按百度API要求连接要加密的文本def __make_md5_text(self, query: str) - str:return {}{}{}{}.format(self.__config.appid,query,self.__config.salt,self.__config.key)# 按百度API要求进行MD5加密def __make_signture(self, query: str) - str:md5 hashlib.md5()md5.update(self.__make_md5_text(query).encode(utf-8))return md5.hexdigest()# 发送post请求调用百度APIdef __post(self, query: str):headers {Content-Type: application/x-www-form-urlencoded}data {q: query,from: self.__from_lang,to: self.__to_lang,appid: self.__config.appid,salt: self.__config.salt,sign: self.__make_signture(query)}try:response requests.post(urlself.__config.url, headersheaders, datadata)return responseexcept Exception as e:print(str(e))exit()# 用户接口def translate(self, query: str) - list:result self.__post(query).json()if trans_result in result:return result[trans_result]else:print(错误信息 str(result))raise RuntimeError(百度翻译失败请检验配置有效性)