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

概述

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

获取API权限:

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

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

百度翻译开放平台

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

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

 

具体文档:通用翻译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,
           
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用 Python 的 tkinter 模块来创建一个简单的窗口,并使用百度翻译 API 进行翻译。以下是一个示例代码: ```python import tkinter as tk import requests import json def translate(): # 获取输入的文本 text = input_text.get("1.0", "end-1c") # 发送请求并获取翻译结果 url = "https://fanyi.baidu.com/sug" data = {"kw": text} headers = {"User-Agent": "Mozilla/5.0"} response = requests.post(url, data=data, headers=headers) result = json.loads(response.text)["data"][0]["v"] # 显示翻译结果 output_text.delete("1.0", "end") output_text.insert("1.0", result) # 创建窗口 window = tk.Tk() window.title("百度翻译") window.geometry("400x300") # 创建输入框和按钮 input_text = tk.Text(window, height=10) input_text.pack(fill=tk.BOTH, padx=5, pady=5) translate_button = tk.Button(window, text="翻译", command=translate) translate_button.pack(fill=tk.BOTH, padx=5, pady=5) # 创建输出框 output_text = tk.Text(window, height=10) output_text.pack(fill=tk.BOTH, padx=5, pady=5) window.mainloop() ``` 在这个示例中,我们使用了 requests 库来发送 HTTP 请求,并使用 json 库来解析响应结果。在 translate 函数中,我们首先获取输入框中的文本,然后将其作为参数发送 POST 请求到百度翻译 API。最后,我们从响应结果中提取翻译结果,并将其显示在输出框中。 注意:在使用百度翻译 API 之前,你需要先注册一个百度开发者账号,并创建一个翻译 API 的应用。获取应用的 API Key 和 Secret Key 后,可以使用以下代码设置认证信息: ```python import hashlib import random app_id = "your_app_id" api_key = "your_api_key" secret_key = "your_secret_key" salt = str(random.randint(10000, 99999)) sign_str = api_key + text + salt + secret_key sign = hashlib.md5(sign_str.encode()).hexdigest() params = { "q": text, "from": "auto", "to": "zh", "appid": app_id, "salt": salt, "sign": sign } response = requests.get(url, params=params) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ch_champion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值