欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python調(diào)用百度通用翻譯API的方法實現(xiàn)

 更新時間:2025年01月05日 10:38:31   作者:無限碼力  
本文主要介紹了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ù)高)。

在這里插入圖片描述

認證完整之后,你就能獲取到對應的appidsecret密鑰,這些在調(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)文章

  • pytorch鎖死在dataloader(訓練時卡死)

    pytorch鎖死在dataloader(訓練時卡死)

    這篇文章主要介紹了pytorch鎖死在dataloader(訓練時卡死),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 掌握Python property裝飾器巧妙管理類的屬性

    掌握Python property裝飾器巧妙管理類的屬性

    property?是Python中的一個內(nèi)置裝飾器,它用于創(chuàng)建屬性并允許開發(fā)者定義特定的操作,例如獲取(getter)、設置(setter)和刪除(deleter)屬性值的方法,本文為大家講解如何利用這種特性使我們能更好地管理類的屬性
    2024-01-01
  • 在Python中使用cookielib和urllib2配合PyQuery抓取網(wǎng)頁信息

    在Python中使用cookielib和urllib2配合PyQuery抓取網(wǎng)頁信息

    這篇文章主要介紹了在Python中使用cookielib和rllib2配合PyQuery抓取網(wǎng)頁信息的教程,主要是利用PyQuery解析HTML來實現(xiàn),需要的朋友可以參考下
    2015-04-04
  • python單元測試之pytest的使用

    python單元測試之pytest的使用

    Pytest是Python的一種單元測試框架,與 Python 自帶的 Unittest 測試框架類似,但是比 Unittest 框架使用起來更簡潔,效率更高,今天給大家詳細介紹一下pytest的使用,需要的朋友可以參考下
    2021-06-06
  • python3結(jié)合openpyxl庫實現(xiàn)excel操作的實例代碼

    python3結(jié)合openpyxl庫實現(xiàn)excel操作的實例代碼

    這篇文章主要介紹了python3結(jié)合openpyxl庫實現(xiàn)excel操作的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • 如何用PyMongo在Python中操作MongoDB的超完整指南

    如何用PyMongo在Python中操作MongoDB的超完整指南

    本文詳細介紹了如何使用Python的PyMongo庫操作MongoDB,涵蓋了數(shù)據(jù)庫連接、文檔創(chuàng)建、數(shù)據(jù)操作和高級功能的使用,通過這些知識點,開發(fā)者可以高效地管理和操作MongoDB數(shù)據(jù)庫,需要的朋友可以參考下
    2024-11-11
  • Python手繪可視化工具cutecharts使用實例

    Python手繪可視化工具cutecharts使用實例

    這篇文章主要介紹了Python手繪可視化工具cutecharts使用實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Python Tkinter Menu組件詳解

    Python Tkinter Menu組件詳解

    這篇文章主要介紹了Python TkinterMenu 組件用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-10-10
  • tensorflow實現(xiàn)從.ckpt文件中讀取任意變量

    tensorflow實現(xiàn)從.ckpt文件中讀取任意變量

    這篇文章主要介紹了tensorflow實現(xiàn)從.ckpt文件中讀取任意變量,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 使用Python處理CSV和Excel文件的操作方法

    使用Python處理CSV和Excel文件的操作方法

    在數(shù)據(jù)分析、自動化和日常開發(fā)中,CSV和Excel文件是非常常見的數(shù)據(jù)存儲格式,ython提供了強大的工具來讀取、編輯和保存這兩種文件,滿足從基本讀取到復雜分析的需求,本文將深入介紹CSV和Excel文件的多種處理方法,幫助你更好地管理和分析數(shù)據(jù),需要的朋友可以參考下
    2025-01-01

最新評論