python調(diào)用百度通用翻譯API的方法實現(xiàn)
1. 簡介
前段時間在做視頻語音識別生成多語種字幕時,使用了百度翻譯通用翻譯api進行翻譯。百度翻譯平臺經(jīng)過個人認證之后,每月有200萬字符的免費翻譯額度。還是比較舒服的。
百度翻譯開放平臺是百度翻譯面向廣大開發(fā)者提供開放服務的平臺。服務涵蓋:通用翻譯API、定制化翻譯API、語音翻譯SDK、拍照翻譯SDK等。百度翻譯平臺地址
百度通用翻譯API支持28種語言實時互譯
,覆蓋中、英、日、韓、西、法、泰、阿、俄、葡、德、意、荷、芬、丹等;同時支持28種語言的語言檢測。
2. 使用步驟
如果你是初次使用百度翻譯開放平臺,你需要先注冊一個百度賬號。登錄成功之后,點擊產(chǎn)品服務,進入到通用翻譯api界面。點擊底部立即使用,經(jīng)過認證之后就可以使用了。個人能夠申請標準版和高級版認證(推薦,支持并發(fā)數(shù)高)。
認證完整之后,你就能獲取到對應的appid
和secret
密鑰,這些在調(diào)用api的時候需要使用。
3. api調(diào)用實現(xiàn)
可以通過以上網(wǎng)址查看通用翻譯的API文檔。api文檔.我這里只展示幾個重要的內(nèi)容。
API調(diào)用網(wǎng)址
https://fanyi-api.baidu.com/api/trans/vip/translate
api調(diào)用參數(shù)
簽名生成方法:簽名對應api參數(shù)中的sign。
api支持get和post請求,但我推薦使用post請求,因為get請求存在url長度限制(服務器或瀏覽器限制),需要翻譯的文本過長使用get請求就會出錯,而post請求就沒有這個限制。
api返回結(jié)果值
4. 編碼實現(xiàn)
基類,定義規(guī)范,后期可以定義其他平臺的翻譯實現(xiàn)類
# encoding:utf-8 __author__ = 'ObsessedCE' from abc import ABC, abstractmethod class Translation(ABC): @abstractmethod def translation(self, text, src_language = "auto", des_language = "zh"): pass
具體實現(xiàn)類,具體實現(xiàn)調(diào)用百度通用翻譯api的類
#coding=utf-8 __author__ = 'ObsessedCE' import requests import file_util import sys import hashlib import random import string import translation class BAIDUTranslation(translation.ABC): def __init__(self, profile): self.appid = profile.get("baidu_app_id") self.secret = profile.get("baidu_secret") self.url = profile.get("baidu_translation_url") self.session = requests.Session() self.session.trust_env = False def translation(self, text, src_language = "auto", des_language = "zh"): header = { "content-type":"application/x-www-form-urlencoded" } data = { "q" : text, "from" : src_language, "to" : des_language, "appid":self.appid, "salt":"", "sign":"" } if not text: print("Unspecified content") return None salt = BAIDUTranslation.generate_random_string(6) data["salt"] = salt data["sign"] = self.generate_sign(data) try: response = self.session.post(url= self.url, data = data, headers = header) if response.status_code != 200: print(f"調(diào)用百度翻譯出錯,狀態(tài)碼為: {str(response.status_code)}") return None response_data = response.json() if response_data.get("code") and response_data.get("code" )!= 52000: print(f"調(diào)用百度翻譯出錯,返回錯誤代碼為: {response_data.get('code')}") return None translation_result = list() trans_result = response_data.get("trans_result") for result in trans_result: src = result.get("src") des = result.get("dst") translation_result.append(des) return translation_result except Exception as e: print(f"調(diào)用翻譯請求時出現(xiàn)錯誤: {e}") def generate_sign(self, data): """ 生成簽名 :param data: :return: """ str = data.get("appid") str += data.get("q") str += data.get("salt") str += self.secret return self.generate_md5(str) def generate_md5(self, content): """ 進行內(nèi)容md5加密,發(fā)揮全小寫的編碼 :param content: :return: """ if content: md5_hash = hashlib.md5() md5_hash.update(content.encode("utf-8")) return md5_hash.hexdigest().lower() @staticmethod def generate_random_string(length=6): # 可用字符:大寫字母、小寫字母和數(shù)字 chars = string.ascii_letters + string.digits # 隨機選擇字符并生成指定長度的字符串 return ''.join(random.choices(chars, k=length)) if __name__ == "__main__": profile = file_util.read_file("./profile.yml") if not profile: print("no profile") sys.exit(0) baidu_transltion = BAIDUTranslation(profile) text = "You look so handsome today\nI think so, too" print(baidu_transltion.translation(text, ))
文件輔助類,讀取配置文件
# encoding:utf-8 __author__ = 'ObsessedCE' import yaml import sys def read_file(file_path): try: with open(file_path, "r", encoding="utf-8") as file: data = yaml.safe_load(file) return data except Exception as e: print(e) sys.exit(0)
配置文件定義格式,文件類型為yml,定義個人appid和密鑰
baidu_app_id: "個人信息查看" baidu_secret: "個人信息中查看" baidu_translation_url: "https://fanyi-api.baidu.com/api/trans/vip/translate"
最后看一下調(diào)用效果.
到此這篇關(guān)于python調(diào)用百度通用翻譯API的方法實現(xiàn)的文章就介紹到這了,更多相關(guān)python調(diào)用翻譯API內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Python中使用cookielib和urllib2配合PyQuery抓取網(wǎng)頁信息
這篇文章主要介紹了在Python中使用cookielib和rllib2配合PyQuery抓取網(wǎng)頁信息的教程,主要是利用PyQuery解析HTML來實現(xiàn),需要的朋友可以參考下2015-04-04python3結(jié)合openpyxl庫實現(xiàn)excel操作的實例代碼
這篇文章主要介紹了python3結(jié)合openpyxl庫實現(xiàn)excel操作的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09如何用PyMongo在Python中操作MongoDB的超完整指南
本文詳細介紹了如何使用Python的PyMongo庫操作MongoDB,涵蓋了數(shù)據(jù)庫連接、文檔創(chuàng)建、數(shù)據(jù)操作和高級功能的使用,通過這些知識點,開發(fā)者可以高效地管理和操作MongoDB數(shù)據(jù)庫,需要的朋友可以參考下2024-11-11tensorflow實現(xiàn)從.ckpt文件中讀取任意變量
這篇文章主要介紹了tensorflow實現(xiàn)從.ckpt文件中讀取任意變量,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05