python調(diào)用百度通用翻譯API的方法實現(xiàn)
1. 簡介
前段時間在做視頻語音識別生成多語種字幕時,使用了百度翻譯通用翻譯api進行翻譯。百度翻譯平臺經(jīng)過個人認證之后,每月有200萬字符的免費翻譯額度。還是比較舒服的。
百度翻譯開放平臺是百度翻譯面向廣大開發(fā)者提供開放服務(wù)的平臺。服務(wù)涵蓋:通用翻譯API、定制化翻譯API、語音翻譯SDK、拍照翻譯SDK等。百度翻譯平臺地址
百度通用翻譯API支持28種語言實時互譯,覆蓋中、英、日、韓、西、法、泰、阿、俄、葡、德、意、荷、芬、丹等;同時支持28種語言的語言檢測。
2. 使用步驟
如果你是初次使用百度翻譯開放平臺,你需要先注冊一個百度賬號。登錄成功之后,點擊產(chǎn)品服務(wù),進入到通用翻譯api界面。點擊底部立即使用,經(jīng)過認證之后就可以使用了。個人能夠申請標準版和高級版認證(推薦,支持并發(fā)數(shù)高)。

認證完整之后,你就能獲取到對應(yīng)的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/translateapi調(diào)用參數(shù)

簽名生成方法:簽名對應(yīng)api參數(shù)中的sign。

api支持get和post請求,但我推薦使用post請求,因為get請求存在url長度限制(服務(wù)器或瀏覽器限制),需要翻譯的文本過長使用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)文章
pytorch鎖死在dataloader(訓(xùn)練時卡死)
這篇文章主要介紹了pytorch鎖死在dataloader(訓(xùn)練時卡死),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05
在Python中使用cookielib和urllib2配合PyQuery抓取網(wǎng)頁信息
這篇文章主要介紹了在Python中使用cookielib和rllib2配合PyQuery抓取網(wǎng)頁信息的教程,主要是利用PyQuery解析HTML來實現(xiàn),需要的朋友可以參考下2015-04-04
python3結(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-11
tensorflow實現(xiàn)從.ckpt文件中讀取任意變量
這篇文章主要介紹了tensorflow實現(xiàn)從.ckpt文件中讀取任意變量,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05

