Python使用百度通用API进行翻译

news2024/9/29 18:14:07

想汉化StarUML这个软件,感觉工作量太大,想要用Python自动翻译。

结果网上找的一个个用不了,或者用一会儿就断。

于是自己手写了一个简单的,只有两个类:APIConfigTranslater

使用 demo

my_api_config = APIConfig("12121123456789", "SFNFENRFNEFLWE")
translater = Translater(my_api_config, from_lang="en", to_lang="zh")
print(translater.translate(
    "hello world, I want to love you, Where is my dog?")
)

结果如下,保持灵活这里就没提取dst

[{'src': 'hello world, I want to love you, Where is my dog?', 'dst': '你好,世界,我想爱你,我的狗在哪里?'}]

调用过快(阈值大概为0.8秒)会导致返回54003,会拒绝访问。
所以一次尽量多发送点文本。
在这里插入图片描述

在这里插入图片描述

更多问题去FAQ看吧。

APIConfig类

url短期不会变,salt随便填个数字就行。所以这里只需要填写appidkey这两个参数。

到百度进行申请(申请链接:https://fanyi-api.baidu.com/,免费版的一申请就能通过)。
开发者信息页面有这两个参数。
请添加图片描述


# 百度翻译API配置,链接对的话,填下ID和密匙就OK。
class APIConfig:
    def __init__(self,
                 appid: str = "",
                 key: str = "",
                 url: str = "https://fanyi-api.baidu.com/api/trans/vip/translate",
                 salt: str = "123"
                 ):
        self.__appid = appid  # 你的百度ID
        self.__key = key  # 你的密匙
        self.__url = url  # 百度翻译API链接
        self.__salt = salt  # 随机数字

    @property
    def appid(self):
        return self.__appid

    @appid.setter
    def appid(self, value: str):
        self.__appid = value

    @property
    def key(self):
        return self.__key

    @key.setter
    def key(self, value: str):
        self.__key = value

    @property
    def url(self):
        return self.__url

    @url.setter
    def url(self, value: str):
        self.__url = value

    @property
    def salt(self):
        return self.__salt

    @salt.setter
    def salt(self, value: str):
        self.__salt = value

Translater 类

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  # 目标语言

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

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

    # 发送post请求调用百度API
    def __post(self, query: str):
        headers = {
            "Content-Type": "application/x-www-form-urlencoded"
        }
        data = {
            "q": query,
            "from": self.__from_lang,
            "to": self.__to_lang,
            "appid": self.__config.appid,
            "salt": self.__config.salt,
            "sign": self.__make_signture(query)
        }
        try:
            response = requests.post(
                url=self.__config.url, headers=headers, data=data)
            return response
        except Exception as e:
            print(str(e))
            exit()

    # 用户接口
    def translate(self, query: str) -> list:
        result = self.__post(query).json()
        if "trans_result" in result:
            return result["trans_result"]
        else:
            print("错误信息:" + str(result))
            raise RuntimeError("百度翻译失败,请检验配置有效性")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/370456.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

指针的进阶——(1)

本次讲解重点: 1、字符指针 2、数组指针 3、指针数组 4、数组传参和指针传参 5、函数指针 关于指针这个知识点的主题,我们在前面已经初级阶段已经对指针有了大致的理解和应用了。我们知道了指针的概念: 1、指针就是地址,但口…

PHP基础(3)

PHP基础表单提交文件处理PHP连接数据库异常抛出表单提交 PHP通过全局变量 $_GET和 $_POST来收集表单数据。 接下来改用post方式进行提交,再次查看是否隐藏了提交的内容: 发现提交的信息已经不在链接之中进行显示了。 GET与POST区别在于一个会在连接…

番外9:使用ADS对射频功率放大器进行非线性测试1(以IMD3测试为例)

番外9:使用ADS对射频功率放大器进行非线性测试1(以IMD3测试为例) 一般可以有多种方式对射频功率放大器的非线性性能进行测试,包括IMD3、ACPR、ACLR等等,其中IMD3的实际测试较为简单方便不需要太多的仪器。那么在ADS中…

VUE的生命周期- VUE2.x

1.生命周期有哪些VUE2.x 自带八个:beforeCreate,created,beforeMount,mounted,beforeUpdate,updated,beforeDestroy,destroyed2.一旦进入组件会执行哪些生命周期beforeCreate,created,beforeMount,mountedbeforeCreate,没有DOM($el),没有data,不能拿到方…

飞桨-鹏城云脑发行版亮相第四届启智开发者大会,软硬一体化助力科研

2月24日,主题为“算网筑基、开源启智、AI赋能”的第四届OpenI/O启智开发者大会在深圳开幕,大会由科技部指导、鹏城实验室与新⼀代人工智能产业技术创新战略联盟(AITISA)主办,科技部高新司副司长梅建平,中国…

Simple RNN、LSTM、GRU序列模型原理

一。循环神经网络RNN 用于处理序列数据的神经网络就叫循环神经网络。序列数据说直白点就是随时间变化的数据,循环神经网络它能够根据这种数据推出下文结果。RNN是通过嵌含前一时刻的状态信息实行训练的。 RNN神经网络有3个变种,分别为Simple RNN、LSTM、…

ESP-C3入门13. SoftAP模式

ESP-C3入门13. SoftAP模式一、 ESP32-C3 WIFI的工作模式二、SoftAP配置1. wifi_config_t 结构体2. wifi_event_handler 事件(1) esp_event_handler_instance_register 注册事件(2) system_event_sta_connected_t 结构体3. 关闭SoftAP三、示例1. main.c2. wifi_ap.h3. wifi_ap.…

自动化构建部署devops(CICD)--敏捷开发

一。gitlab结合jenkins自动化项目构建部署 代替早期的手动部署服务,写文档,java-jar启动啦。麻烦还容易出错。 二。DevOps 三。部署流水线 四,页面工具(类似于ones) 1,开发组长在页面添加项目成员&#…

integrationobjects点com all OPC Crack

Integration Objects 是世界领先的系统集成商和解决方案提供商,专门从事运营和制造智能、高级分析、异常事件的预防性检测、在线诊断和根本原因分析、OPC 连接、工厂自动化、知识管理解决方案、网络安全和企业电力和公用事业以及全球流程和制造行业的集成。 OPC UA …

storybook使用info插件报错

报错内容: RangeErrorMaximum call stack size exceededCall StackprettyPrintvendors-node_modules_pmmmwh_react-refresh-webpack-plugin_lib_runtime_RefreshUtils_js-node_mod-4ff2dd.iframe.bundle.js:160:27undefinedvendors-node_modules_pmmmwh_react-refresh-webpack-…

结构方程模型全流程

案例与数据 某研究者想要研究关于教师懈怠感的课题,教师懈怠感是指教师在教育情境的要求下,由于无法有效应对工作压力与挫折而产生的情绪低落、态度消极状态,这种状态甚至会引发心理、生理的困扰,终至对教育工作产生厌倦&#xf…

英语二-议论文写作词汇、话题、模板、范文参考

1. 词汇多样性 1. 表示因果关系 2. 表示转斩关系 3. 表示顺序关系 4. 表示递进关系 5. 表示对比关系 6. 表示总结关系 7. 连接论据的词 2. 高频考试话题 1. 有益身心的短语 2. 提高能力的短语 3. 写作模板 支持原创作文,如果不会,请牢记模板。 如果嫌…

Android源码分析 —— Activity栈管理(基于Android8)

0. 写在前面 本文基于 Android8.0源码,和Android9.0大同小异,但和Android10.0差别非常大!新版改用ATM来管理Activity的启动,Activity的生命周期也通过XXXItem来管理。由于我分析的Activity启动流程就是基于Android8/9的&#xff…

FFmpeg/OpenCV 实现全屏斜体水印

实现思路 🤔​ 基于ffmpeg,画布的方式,创建画布 -> 水印 -> 旋转 -> 抠图 -> 叠加到图像上基于ffmpeg,旋转图片的方式,填充 -> 水印 -> 顺时针旋转 -> 逆时针旋转 -> 截图基于opencv&#xff…

Pag渲染过程 -- 背景知识

什么是渲染 渲染是图形程序的核心,无论是我们在电子设备上看到的任何图形或者文字都是利用计算机图形渲染技术给我们呈现出来的结果。在计算机里一开始是直接利用CPU往显示器的FrameBuffer内写入数据即可把图形展示到显示器上,但是随着用户的需求和技术…

别担心,ChatGPT还抢不动你的饭碗

前言: “你是谁?” “我是一个由OpenAI训练的大型语言模型。我旨在帮助人们解答问题和提供信息。由于我是一个计算机程序,所以不会感知或者思考,只能通过已有的数据来回答问题。如果您有任何问题,请随时告诉我。” ---…

rabbitmq部署安装(mac)

安装: // 默认已经下载了homebrew,更新brew资源 brew update // 执行安装 brew install rabbitmq 配置: // 切换到MQ目录,注意你的安装版本可能不是3.9.5(我的版本,当前最新版 cd /usr/local/Cellar/rabbitmq/3.…

如果不是互联网人,谁会找到这些神器?

一、上线啦 你肯定该问了,这个是什么鬼东西。它本来是一个创建自己网站的网站。 现在使用它可以创建自己的小程序,又不是有点小厉害了。 而且功能强大,还支持微信支付,分销,优惠券,营销等多种功能。 还有多…

DS期末复习卷(九)

一、选择题(30分) 1&#xff0e;下列程序段的时间复杂度为&#xff08;A &#xff09;。 for(i0&#xff1b; i<m&#xff1b; i) for(j0&#xff1b; j<t&#xff1b; j) c[i][j]0&#xff1b; for(i0&#xff1b; i<m&#xff1b; i) for(j0&#xff1b; j<t&am…

LeetCode:二叉树的最大深度104;559. N 叉树的最大深度

104. 二叉树的最大深度 给定一个二叉树&#xff0c;找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例&#xff1a; 给定二叉树 [3,9,20,null,null,15,7]&#xff0c; 3/ \9 20/ \15 7 返回它的…