基于Python实现,调用百度通用翻译API-详解

概述

        在工作上需要各个国家语言的翻译方面很多地方用的上。

获取API权限:

        登录百度账号,在个人信息界面,包括修改密码、绑定手机、身份人证等

https://api.fanyi.baidu.com/api/trans/product/desktop?req=developer

百度翻译开放平台

在开发者中心:需要开通个人账号,在我的服务选项,选择通用文本翻译

基于Python实现,调用百度通用翻译API-详解_第1张图片

申请好后,会有以下信息。 

 基于Python实现,调用百度通用翻译API-详解_第2张图片

具体文档:通用翻译API接入文档

https://fanyi-api.baidu.com/doc/21

一、code
分别有三个模块Translater.py、APIConfig.py、Config_trans_lang.py

1、Translater.py代码

import hashlib
import random

import requests

from APIConfig import APIConfig

class Translater:
    def __init__(self, config: APIConfig, from_lang: str, to_lang: str):
        self.__config = config  # API配置
        self.__from_lang = from_lang  # 原语言,可为auto
        self.__to_lang = to_lang  # 目标语言,可为auto

    # 按百度API要求进行随机数生成
    def __make_salt(self):
        return random.randint(23212, 65536)

    # 按百度API要求连接要加密的文本
    def __make_md5_text(self, query, salt):
        return "{}{}{}{}".format(
            self.__config.appid,
            query,
            salt,
            self.__config.key
        )

    # 按百度API要求进行MD5加密
    def __make_signture(self, str, salt):
        md5 = hashlib.md5()
        md5.update(self.__make_md5_text(str, salt).encode('utf-8'))
        return md5.hexdigest()

    def __get_token(self, cookie):
        res = [2]
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
            'Referer': 'https://fanyi.baidu.com/',
            'Cookie': cookie
        }
        token_url = "https://fanyi.baidu.com/"
        session = requests.Session()
        session.headers = headers
        gtk = ''

        # get token
        for i in range(3):
            response = session.get(token_url)
            token = re.findall("token: '(.*?)'", response.text)[0]
            gtk = re.findall('window.gtk = "(.*?)"', response.text)[0]
        res[0] = token
        res[1] = gtk
        return res

    # 发送post请求调用百度API
    def __post(self, query: str):
        timeout = 6000      #请求超时时间
        salt = self.__make_salt()
        sign = self.__make_signture(query, str(salt))

        headers = {
            "Content-Type": "application/x-www-form-urlencoded"
        }

        form_data = {
            "appid": self.__config.appid,
            "q": query,
            "from": self.__from_lang,
            "to": self.__to_lang,
           

你可能感兴趣的:(#,Python,python,dubbo,开发语言)