import random import hashlib import http.client, urllib.parse import json class baidu_trans: # 接口地址 domain = 'api.fanyi.baidu.com' uri = "/api/trans/vip/translate" # 密鑰相關 app_id = "" app_screct = "" salt = random.randint(32768, 65536) # 錯誤碼 errors_code = { "52000": "成功", "52001": "請求超時", "52002": "系統錯誤", "52003": "未受權用戶", "54000": "必填參數爲空", "54001": "簽名錯誤", "54003": "訪問頻率受限", "54004": "帳戶餘額不足", "54005": "長query請求頻繁", "58000": "客戶端IP非法", "58001": "譯文語言方向不支持", "58002": "服務當前已關閉", "90107": "認證未經過或未生效", } # 生成簽名 def getSign(self,context): sign = self.app_id + context + str(self.salt) + self.app_screct md5_obj = hashlib.md5() md5_obj.update(sign.encode('utf-8')) return md5_obj.hexdigest() pass # 將文本翻譯爲指定的語言 def trans(self,context): httpClient = None form = { "q": context, "from": "en", "to": "zh", "appid": self.app_id, "salt": self.salt, "sign": self.getSign(context), } try: url = self.uri + '?appid=' + form["appid"] + '&q=' + urllib.parse.quote(form["q"]) + '&from=' + form["from"] + '&to=' + form["to"] + '&salt=' + str(form["salt"]) + '&sign=' + form['sign'] httpClient = http.client.HTTPConnection(self.domain) httpClient.request('GET', url) response = httpClient.getresponse() result = json.loads(bytes.decode(response.read())) if 'error_code' in result: print('錯誤'+result["error_code"]+':' + self.errors_code[result["error_code"]] ) return result["trans_result"][0]['dst'] except Exception as e: print(e) finally: if httpClient: httpClient.close() pass pass