最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2025年01月05日 10:38:31   作者:無限碼力  
本文主要介紹了python調(diào)用百度通用翻譯API的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1. 簡(jiǎn)介

前段時(shí)間在做視頻語音識(shí)別生成多語種字幕時(shí),使用了百度翻譯通用翻譯api進(jìn)行翻譯。百度翻譯平臺(tái)經(jīng)過個(gè)人認(rèn)證之后,每月有200萬字符的免費(fèi)翻譯額度。還是比較舒服的。

百度翻譯開放平臺(tái)是百度翻譯面向廣大開發(fā)者提供開放服務(wù)的平臺(tái)。服務(wù)涵蓋:通用翻譯API、定制化翻譯API、語音翻譯SDK、拍照翻譯SDK等。百度翻譯平臺(tái)地址

百度通用翻譯API支持28種語言實(shí)時(shí)互譯,覆蓋中、英、日、韓、西、法、泰、阿、俄、葡、德、意、荷、芬、丹等;同時(shí)支持28種語言的語言檢測(cè)。

2. 使用步驟

如果你是初次使用百度翻譯開放平臺(tái),你需要先注冊(cè)一個(gè)百度賬號(hào)。登錄成功之后,點(diǎn)擊產(chǎn)品服務(wù),進(jìn)入到通用翻譯api界面。點(diǎn)擊底部立即使用,經(jīng)過認(rèn)證之后就可以使用了。個(gè)人能夠申請(qǐng)標(biāo)準(zhǔn)版和高級(jí)版認(rèn)證(推薦,支持并發(fā)數(shù)高)。

在這里插入圖片描述

認(rèn)證完整之后,你就能獲取到對(duì)應(yīng)的appidsecret密鑰,這些在調(diào)用api的時(shí)候需要使用。

在這里插入圖片描述

3. api調(diào)用實(shí)現(xiàn)

可以通過以上網(wǎng)址查看通用翻譯的API文檔。api文檔.我這里只展示幾個(gè)重要的內(nèi)容。

  • API調(diào)用網(wǎng)址https://fanyi-api.baidu.com/api/trans/vip/translate

  • api調(diào)用參數(shù)

    在這里插入圖片描述

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

    在這里插入圖片描述

  • api支持get和post請(qǐng)求,但我推薦使用post請(qǐng)求,因?yàn)間et請(qǐng)求存在url長(zhǎng)度限制(服務(wù)器或?yàn)g覽器限制),需要翻譯的文本過長(zhǎng)使用get請(qǐng)求就會(huì)出錯(cuò),而post請(qǐng)求就沒有這個(gè)限制。

  • api返回結(jié)果值

    在這里插入圖片描述

4. 編碼實(shí)現(xiàn)

基類,定義規(guī)范,后期可以定義其他平臺(tái)的翻譯實(shí)現(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

具體實(shí)現(xiàn)類,具體實(shí)現(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)用百度翻譯出錯(cuò),狀態(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)用百度翻譯出錯(cuò),返回錯(cuò)誤代碼為: {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)用翻譯請(qǐng)求時(shí)出現(xiàn)錯(cuò)誤: {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):
        """
        進(jìn)行內(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
        # 隨機(jī)選擇字符并生成指定長(zhǎng)度的字符串
        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,定義個(gè)人appid和密鑰

baidu_app_id: "個(gè)人信息查看"
baidu_secret: "個(gè)人信息中查看"
baidu_translation_url: "https://fanyi-api.baidu.com/api/trans/vip/translate"

最后看一下調(diào)用效果.

在這里插入圖片描述

到此這篇關(guān)于python調(diào)用百度通用翻譯API的方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python調(diào)用翻譯API內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

最新評(píng)論

蕉岭县| 安徽省| 拉孜县| 南岸区| 九龙城区| 广宁县| 汤原县| 厦门市| 松滋市| 澄江县| 姚安县| 麻城市| 轮台县| 东乌珠穆沁旗| 黄梅县| 普宁市| 阳西县| 丰原市| 山东| 视频| 铁力市| 页游| 新宁县| 修水县| 东光县| 清苑县| 巫山县| 杭锦后旗| 民丰县| 枣阳市| 衡水市| 丘北县| 稻城县| 宁安市| 潢川县| 吴江市| 渝北区| 南投县| 梁平县| 富平县| 东丽区|