当前位置: 首页 > news >正文

python调用百度通用翻译API

文章目录

  • 1. 简介
  • 2. 使用步骤
  • 3. api调用实现
  • 4. 编码实现

1. 简介

前段时间在做视频语音识别生成多语种字幕时,使用了百度翻译通用翻译api进行翻译。百度翻译平台经过个人认证之后,每月有200万字符的免费翻译额度。还是比较舒服的。

百度翻译开放平台是百度翻译面向广大开发者提供开放服务的平台。服务涵盖:通用翻译API、定制化翻译API、语音翻译SDK、拍照翻译SDK等。百度翻译平台地址

百度通用翻译API支持28种语言实时互译,覆盖中、英、日、韩、西、法、泰、阿、俄、葡、德、意、荷、芬、丹等;同时支持28种语言的语言检测。

2. 使用步骤

如果你是初次使用百度翻译开放平台,你需要先注册一个百度账号。登录成功之后,点击产品服务,进入到通用翻译api界面。点击底部立即使用,经过认证之后就可以使用了。个人能够申请标准版和高级版认证(推荐,支持并发数高)。
在这里插入图片描述
认证完整之后,你就能获取到对应的appidsecret密钥,这些在调用api的时候需要使用。
在这里插入图片描述

3. api调用实现

可以通过以上网址查看通用翻译的API文档。api文档.我这里只展示几个重要的内容。

  • API调用网址https://fanyi-api.baidu.com/api/trans/vip/translate

  • api调用参数
    在这里插入图片描述

  • 签名生成方法:签名对应api参数中的sign。
    在这里插入图片描述

  • api支持get和post请求,但我推荐使用post请求,因为get请求存在url长度限制(服务器或浏览器限制),需要翻译的文本过长使用get请求就会出错,而post请求就没有这个限制。

  • api返回结果值
    在这里插入图片描述

4. 编码实现

基类,定义规范,后期可以定义其他平台的翻译实现类

# encoding:utf-8
__author__ = 'ObsessedCE'from abc import ABC, abstractmethodclass Translation(ABC):@abstractmethoddef translation(self, text,  src_language = "auto", des_language = "zh"):pass

具体实现类,具体实现调用百度通用翻译api的类

#coding=utf-8
__author__ = 'ObsessedCE'
import requests
import file_util
import sys
import hashlib
import random
import string
import translationclass 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 = Falsedef 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 Nonesalt = BAIDUTranslation.generate_random_string(6)data["salt"] = saltdata["sign"] = self.generate_sign(data)try:response = self.session.post(url= self.url, data = data, headers = header)if response.status_code != 200:print(f"调用百度翻译出错,状态码为: {str(response.status_code)}")return Noneresponse_data = response.json()if response_data.get("code") and response_data.get("code" )!= 52000:print(f"调用百度翻译出错,返回错误代码为: {response_data.get('code')}")return Nonetranslation_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_resultexcept Exception as e:print(f"调用翻译请求时出现错误: {e}")def generate_sign(self, data):"""生成签名:param data::return:"""str = data.get("appid")str += data.get("q")str += data.get("salt")str += self.secretreturn  self.generate_md5(str)def generate_md5(self, content):"""进行内容md5加密,发挥全小写的编码:param content::return:"""if content:md5_hash = hashlib.md5()md5_hash.update(content.encode("utf-8"))return md5_hash.hexdigest().lower()@staticmethoddef generate_random_string(length=6):# 可用字符:大写字母、小写字母和数字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 sysdef read_file(file_path):try:with  open(file_path, "r", encoding="utf-8") as file:data = yaml.safe_load(file)return dataexcept 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"

最后看一下调用效果.

在这里插入图片描述

相关文章:

python调用百度通用翻译API

文章目录 1. 简介2. 使用步骤3. api调用实现4. 编码实现 1. 简介 前段时间在做视频语音识别生成多语种字幕时,使用了百度翻译通用翻译api进行翻译。百度翻译平台经过个人认证之后,每月有200万字符的免费翻译额度。还是比较舒服的。 百度翻译开放平台是百…...

Timeline动画「硬切」的问题

1)Timeline动画「硬切」的问题 2)移动平台纹理压缩格式选择ASTC,美术出图还需遵守POT吗 3)如何去掉DOTS Unity.Entities.Graphics创建的BatchRendererGroup的UI相机回调 4)Timeline播放动画会产生位移的问题 这是第409…...

CentOS 9 配置网卡

在 CentOS 9 中配置网卡,通常涉及以下几个步骤: 1. 查看网络接口 首先,确认系统上存在的网络接口。可以使用 ip 命令或 ifconfig 命令查看网络接口的状态。 ip a 或者: ifconfig 这将列出所有可用的网络接口(例如…...

redis7.x源码分析:(2) adlist双向链表

链表是一种常用的数据结构(如果不了解,请先学习数据结构),由于c语言本身没有实现标准的链表库,所以redis自己实现了一个双向链表。 双向链表在redis内部的使用非常的多,几乎所有模块中都有用到。 下面看下它…...

KUKU FM 音频Linux平台免费下载工具

1.工具名称:kuku-dl 功能: ✅ 下载播客、故事和有声读物! ✅ 获取所有元数据和封面艺术品。 ✅ 支持字幕! 3.使用说明: 3.1. 直接镜像github源码库 👉 git clone https://github.com/bunnykek/kuku-…...

《Django 5 By Example》阅读笔记:p105-p164

《Django 5 By Example》学习第5天,p105-p164总结,总计60页。 一、技术总结 1.文章标签功能 Django自带django-taggit。 2.自定义template tags 3.roadmap功能 4.RSS功能 5.full-text搜索功能 这里使用的是Postgresql,使用pip install psycopg安…...

网络延迟对Python爬虫速度的影响分析

Python爬虫因其强大的数据处理能力和灵活性而被广泛应用于数据抓取和网络信息收集。然而,网络延迟是影响爬虫效率的重要因素之一。本文将深入探讨网络延迟对Python爬虫速度的影响,并提供相应的代码实现过程,以帮助开发者优化爬虫性能。 网络…...

微信小程序内嵌h5页面(uniapp写的),使用uni.openLocation无法打开页面问题

1.问题 微信小程序内嵌h5页面(uniapp写的),使用uni.openLocation打开地图页面后,点击该页面下方“到这里”按钮,显示无法打开。如下图: 3.解决方案 在内嵌h5中不使用uniapp的api打开地图,而在h5页面事件处理程序中去跳转新的小程序页面,在该新页面去使用微信小程序…...

创建一个简单的基于STM32的FreeRTOS应用

使用STM32CubeIDE生成。 1,使能FreeRTOS 2,选择版本 CMSIS_V1 3 设置参数USE_NEWLIB_REENTRANT 如果不设置,会在生成代码的时候提示错误 4,设置时钟TIM1作为系统时钟 ​​​​​​​​​​​​​​ 5,设置Task …...

【Revit二次开发】创建Ribbon选项卡与带图标的按钮

效果图 创建一个叫做“开发的插件”的选项卡, 选项卡内有一个叫做“Hello”的图标按钮, 点击按钮后运行一个命令, 该命令弹出提示框“Hello Revit!”。 在此示例基础上,可以根据需要替换图标、文字、命令功能。 步骤 安装Revit…...

Win11 终端执行 python xxx.py 没反应

在 Win11 上写了一段 Python 代码来分析日志文件, 发现执行没反应。是在 VSCode 里的终端中执行的 python log_stats.py, 是 PowerShell; 也尝试了 cmd, 情况一样。 一开始怀疑代码写错,直到故意在代码里加打印,发现没…...

使用视频提升应用在 App Store 中的推广效果

App Store 上有485 万个应用和游戏。每个应用开发者都知道,要在如此庞大的市场中脱颖而出,吸引宝贵的用户眼球,是多么困难。 您需要在应用推广游戏中尝试一些不同的东西,那就是视频预览。这些短小的电影奇迹已经成为应用营销人员…...

对话 OpenCV 之父 Gary Bradski:灾难性遗忘和持续学习是尚未解决的两大挑战 | Open AGI Forum

作者 | Annie Xu 采访、责编 | Eric Wang 出品丨GOSIM 开源创新汇 Gary Bradski,旺盛的好奇心、敢于冒险的勇气、独到的商业视角让他成为计算视觉、自动驾驶领域举重若轻的奠基者。 Gary 曾加入 Stanley 的团队,帮助其赢得 2005 年美国穿越沙漠 DA…...

通过地址获取LONG和LAT并且存入csv

通过地址获取LONG和LAT并且存入csv 1. Address存在Address这个column里,从网上复制(如果可以爬虫自动更好) 2. 用代码获取GPS,再存入表格 import pandas as pd from geopy.geocoders import Nominatim from time import sleep#…...

Nginx SSL+tomcat,使用request.getScheme() 取到https协议

架构上使用了 Nginx tomcat 集群, 且nginx下配置了SSL,tomcat no SSL,项目使用https和http协议。 发现 request.getScheme() //总是 http,而不是实际的http或https request.isSecure() //总是false(因为总是http) request.getRemoteAddr(…...

Node.Js+Knex+MySQL增删改查的简单示例(Typescript)

数据库: CREATE DATABASE MyDB; CREATE TABLE t_users (user_id int(11) NOT NULL,user_name varchar(10) NOT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8; 项目结构: package.json如下,拷贝并替换你们本地的package.json后运行 npm install 命令安装所需要的依赖。…...

机器学习的概览

笔记内容侵权联系删除 机器学习算法 机器学习(包括深度学习分支)是研究“学习算法”的一门学问。所谓“学习”是指:对于某类任务T和性能度量P,一个计算机程序在T上以P衡量的性能随着经验E而自我完善,那么我们称这个计算机程序在从经验E学习。 机器学习…...

方法论-WPS模型(高效沟通和决策分析的框架)

WPS模型(What, Problem, Solution)是一种高效沟通和决策分析的框架,旨在帮助沟通者清晰、简洁地表达问题和解决方案,特别适用于在复杂或多变的环境中进行清晰的交流。WPS模型的核心是通过以下三个步骤来组织沟通内容: …...

OpenTelemetry 赋能DevOps流程的可观测性革命

作者:天颇 引言 在当今快节奏的软件开发和运维环境中,DevOps 已经成为主流,它通过整合开发和运维流程,推动着软件的快速迭代和持续交付。然而,随着微服务、容器化和云计算等技术的普及,系统复杂性急剧增加…...

子集选择——基于R语言实现(最优子集选择法、逐步回归法、Lasso回归法、交叉验证法)

( a )使用 rnorm() 函数生成预测变量X(n=100)与噪声向量 ϵ \epsilon ϵ(n=100) set.seed(1) x<-rnorm(100)#预测变量X eps<-rnorm(100)#噪声向量$\epsilon$( b ) 生成响应变量Y(n=100),...

Ubuntu24.04挂载磁盘

一、引言 由于几块磁盘每次开机时的编号都不一样&#xff0c;造成了很多麻烦&#xff0c;所有重新挂载磁盘试一试。 参考链接&#xff1a; ubuntu挂载磁盘或U盘Ubuntu添加新硬盘&#xff0c;挂载到根目录下的某个文件中 二、挂载磁盘 1. 查看盘名 sudo fdisk -l sda 代表第…...

使用机器学习优化数据库查询性能

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用机器学习优化数据库查询性能 文章目录 使用机器学习优化数据库查询性能引言数据库查询性能概述查询优化的重要性 机器学习在…...

英伟达基于Mistral 7B开发新一代Embedding模型——NV-Embed-v2

我们介绍的 NV-Embed-v2 是一种通用嵌入模型&#xff0c;它在大规模文本嵌入基准&#xff08;MTEB 基准&#xff09;&#xff08;截至 2024 年 8 月 30 日&#xff09;的 56 项文本嵌入任务中以 72.31 的高分排名第一。此外&#xff0c;它还在检索子类别中排名第一&#xff08;…...

HTML面试题(2)

HTML5相比HTML有哪些更新&#xff1f; 语义化更强的HTML元素&#xff1a;引入artitcle、section、nav、header、footer等元素&#xff0c;帮助创建结构更清晰、语义更明确的网页&#xff0c;有利于SEO和内容的可访问性表单控件增强&#xff1a;新增多种表单输入类型&#xff0…...

微服务day07

MQ高级 发送者可靠性&#xff0c;MQ的可靠性&#xff0c;消费者可靠性。 发送者可靠性 发送者重连 连接重试的配置文件&#xff1a; spring:rabbitmq:connection-timeout: 1s # 设置MQ的连接超时时间template:retry:enabled: true # 开启超时重试机制initial-interval: 10…...

芯原科技嵌入式面试题及参考答案

Linux 相关驱动怎么写? 在 Linux 中编写驱动主要有以下步骤。 首先,需要了解设备的硬件特性。这包括设备的工作原理、寄存器地址和功能、中断号等信息。例如,对于一个简单的 GPIO 设备,要知道其数据寄存器、方向寄存器的位置以及读写操作的规则。 然后是模块的初始化部分。…...

二叉树Golang

二叉树 前言 完全二叉树 最底层节点按顺序从左到右排列。 满二叉树 一颗二叉树只有0度和2度的节点。 二叉搜索树 左子树上的所有节点的值均小于根节点的值。右子树上的所有节点的值均大于根节点的值。 平衡二叉搜索树 左右两个子树的高度差的绝对值不超过1 。 二叉树的存储…...

通过css的哪些方式可以实现隐藏页面上的元素?

1&#xff1a;opacity:0 通过将元素的透明度设置为o&#xff0c;实现隐藏效果&#xff0c;但是依然会占用空间并可以进行交互。 2&#xff1a;visibility:hidden 与透明度度为0的方案类似&#xff0c;会占据空间&#xff0c;但不可以进行交互。 3&#xff1a;Overflow:hi…...

微信小程序 === 使用腾讯地图选点

目录 插件介绍 接入指引 相关参数说明 插件错误处理 效果图 permission 插件的作用 添加插件 引入插件代码包 使用插件 页面 js 接口 插件介绍 腾讯位置服务地图选点插件 可以让用户快速、准确地选择并确认自己的当前位置&#xff0c;并将相关位置信息回传给开发者。…...

Redis高可用-Cluster(集群)

Redis cluster cluster 为无中心&#xff0c;分布式 sharding&#xff0c;高可用技术架构。 在哨兵 sentinel 机制中&#xff0c;可以解决 redis 高可用的问题&#xff0c;即当 master 故障后可以自动将 slave 提升为 master 从而可以保证 redis 服务的正常使用。 但是无法解…...