Python实现一个简易的CLI翻译程序

news2024/11/14 13:42:57

Python实现一个简易的CLI翻译程序

  • Python+百度翻译API实现一个简易的CLI翻译程序
    • 获取百度翻译API
    • 编写一个简单的Python程序

Python+百度翻译API实现一个简易的CLI翻译程序

之前翻译用的linux上的golddict,每次翻译都很慢。。。
所以想写一个简单快速的翻译命令行翻译软件

获取百度翻译API

百度翻译链接http://api.fanyi.baidu.com/

进去一系列注册操作之后,你可以得到一个APPID和密钥
在这里插入图片描述

编写一个简单的Python程序

文档链接http://api.fanyi.baidu.com/doc/21

在这里插入图片描述对我们来说主要的步骤就是写一个请求体去请求翻译结果

代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import sys
import hashlib
import requests
import json


def str_md5(string):
    """
    计算字符串的md5值
    """
    return hashlib.md5(string.encode('utf8')).hexdigest()


def generate_data():
    """
    生成请求体
    """
    pswd = "[1]这里改成你的密钥"
    data = {
        "q": sys.argv[1],
        "from": "auto",
        "to": sys.argv[2] if len(sys.argv) >= 3 else "en",
        "appid": "[2]这里改成你的APPID",
        "salt": "1435660288",
        "sign": "",
    }
    s = data['appid']+data['q']+data['salt']+pswd
    data['sign'] = str_md5(s)
    return data


def translate(data):
    """
    请求并返回结果
    """
    return requests.post(
        url='https://fanyi-api.baidu.com/api/trans/vip/translate',
        headers={"Content-Type": "application/x-www-form-urlencoded"},
        data=data
    )

# 打印提示信息
if len(sys.argv) < 2:
    print('Usage t <src> [dst_lang:en]')
    print('''dst_lang:
        中文	zh	
        英语	en
        粤语	yue	
        文言文	wyw	
        日语	jp
        韩语	kor	
        法语	fra	
        西班牙语	spa
        泰语	th	
        阿拉伯语	ara	
        俄语	ru
        葡萄牙语	pt	
        德语	de	
        意大利语	it
        希腊语	el	
        荷兰语	nl	
        波兰语	pl
        保加利亚语	bul	
        爱沙尼亚语	est	
        丹麦语	dan
        芬兰语	fin	
        捷克语	cs	
        罗马尼亚语	rom
        斯洛文尼亚语	slo	
        瑞典语	swe	
        匈牙利语	hu
        繁体中文	cht	
        越南语	vie''')

data = generate_data()

resp = translate(data).text

t = json.loads(resp)


# 打印结果
print(f"""[{t['from']}] -> [{t['to']}]

{t["trans_result"][0]['src']} 
{t["trans_result"][0]['dst']}
""")

其中有两个[地方]需要修改就是填入你的APPID和密钥,保存为一个.py文件就可以使用了

然后就可以使用了

在这里插入图片描述
在这里插入图片描述

默认是[auto] -> [en] 你也可以修改目的语言,比如第一个我就修改成了 swe(瑞典语)

但是这样名字有点长,我在我的~/.zshrc给它取了个别名,然后放到了环境变量里面
在这里插入图片描述

现在就可以这么用了
在这里插入图片描述

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

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

相关文章

Allegro如何自动高亮不等长的网络操作指导

Allegro如何自动高亮不等长的网络操作指导 在做PCB设计的时候,时常需要要做等长,Allegro可以自动高亮一组内不等长的网络,可以直观的看到哪些网络长度是不满足的,类似下图 绿色的是通过的,红色是长度不足的,粉色是超长的 具体操作如下 选择Route-Timing Vision出现optio…

Springboot359的医院病历管理系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 2 第3章 系统分析 3 3.1 需求分析 3 3.2 系统可行性分析 4 3.2.1技术可行性&#xff1a;技术背景 4 3.2.2经济…

Ubiquiti MAC Address Changer 3.0 Crack

Ubiquiti MAC Address Changer&#xff0c;目前mac address changer的版本有很多&#xff0c;本次发布的是V3版本&#xff0c;这是一款功能非常强大的修改网卡mac地址软件&#xff0c;基本上所有的网卡MAC地址都支持修改&#xff0c;包括虚拟机和TeamViewer软件都是支持的。 Ea…

5、基本数据类型

目录 一、整数类型 二、浮点类型 三、字符类型 四、布尔类型 一、整数类型 整数类型用来存储整数数值&#xff0c;即没有小数部分的数值。可以是正数&#xff0c;也可以是负数。整 型数据在Java程序中有3种表示形式&#xff0c;分别为十进制、八进制和十六进制。 1.十进…

2.4.4 数值类型的转换

文章目录1.运算时的自转2.运算时的强转3.强转时的精度丢失问题1.运算时的自转 不同数字类型之间的大小关系如下&#xff1a;double > float > long > int > char, short,byte 自转&#xff1a;小类型的数据可以直接赋值给大类型的变量&#xff1b; byte short c…

Linux(五)创建一个miniShell

前情提要&#xff1a;掌握进程控制中的进程创建、进程终止、进程等待、进程替换。可以参考下方博文 LInux&#xff08;四&#xff09;进程控制&#xff08;创建、终止、等待、替换&#xff09; 了解strtok函数的使用 正文&#xff1a; 目录 Shell是什么&#xff1f; 如何…

蓝桥杯之二分与前缀和

蓝桥杯之二分二分板子&#xff1f;第一次和最后一次出现的位置机器人跳跃问题四平方和分巧克力&#xff1f;典型二分找大的&#xff08;从右往左找&#xff09;二分upper_bound(a1,an1,x)-a&#xff1f;递增三元组前缀和取余&#xff1f;K倍区间二维前缀和&#xff1f;激光炸弹…

17种编程语言实现排序算法-合并排序

开源地址 https://gitee.com/lblbc/simple-works/tree/master/sort/ 覆盖语言&#xff1a;C、C、C#、Java、Kotlin、Dart、Go、JavaScript(JS)、TypeScript(TS)、ArkTS、swift、PHP。 覆盖平台&#xff1a;安卓(Java、Kotlin)、iOS(SwiftUI)、Flutter(Dart)、Window桌面(C#)、…

分享139个ASP源码,总有一款适合您

ASP源码 分享139个ASP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c; 139个ASP源码下载链接&#xff1a;https://pan.baidu.com/s/1Vk4U4EXVCWZWPMWf9ax2dw?pwdif23 提取码&#x…

【C++】类和对象(上)---什么是类?

目录1.面向过程和面向对象初步认识2.类的引入2.1使用struct定义类3.类的定义3.1类的两种定义方式&#xff1a;3.2成员变量命名规则的建议3.3成员函数与成员变量定义的位置建议4.类的访问限定符及封装4.1访问限定符4.2封装5.类的作用域6.类的实例化7.类对象模型7.1如何计算类对象…

springboot静态资源目录访问,及自定义静态资源路径,index页面的访问

springboot静态资源目录访问&#xff0c;及自定义静态资源路径&#xff0c;index页面的访问静态资源目录的访问位置静态资源访问测试自定义静态资源路径和静态资源请求映射web首页的访问自定义静态资源请求映射影响index.html首页的访问的**解决方案**&#xff1a;1.取消自定义…

【JUC系列】CountDownLatch实现原理

简单示例 public class Main {private static final int NUM 3;public static void main(String[] args) throws InterruptedException {CountDownLatch latch new CountDownLatch(NUM);for (int i 0; i < NUM; i) {new Thread(() -> {try {Thread.sleep(2000);Syste…

梯度之上:Hessian 矩阵

原文链接&#xff1a;原文 文章目录梯度之上&#xff1a;Hessian 矩阵梯度、雅克比矩阵海森矩阵海森矩阵应用梯度之上&#xff1a;Hessian 矩阵 本文讨论研究梯度下降法的一个有力的数学工具&#xff1a;海森矩阵。在讨论海森矩阵之前&#xff0c;需要首先了解梯度和雅克比矩阵…

基础知识一览3

这里写目录标题1.Servlet1.1 入门1.2 什么是Servlet1.3 Servlet的作用1.4 Servlet生命周期1.5 Servler的体系结构1.6 Servler的两种配置方式2.Filter2.1 Filter拦截路径配置2.2 过滤器链2.2 入门2.3 过滤器链2.4 过滤器生命周期3.Listener3.1 监听器分类3.1.1 一类监听器4.Serv…

ESP32设备驱动-GA1A12S202光线传感器驱动

GA1A12S202光线传感器驱动 1、GA1A2S202介绍 GA1A1S202 对数刻度模拟光传感器使用起来非常简单,只需添加电源,然后监控模拟输出。大多数光传感器对光强度具有线性响应,这意味着它们对低光水平非常不敏感,然后在高光水平下达到最大值。另一方面,该传感器具有对数响应,这…

第九届蓝桥杯省赛 C++ B组 - 乘积最大

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;蓝桥杯题解集合 &#x1f4dd;原题地址&#xff1a;乘积最大 &#x1f4e3;专栏定位&#xff1a;为想参加蓝桥杯的小伙伴整理常考算法题解&#xff0c;祝大家…

Thread的join()方法的作用

文章目录官方文档对join()的解释&#xff1a;结合实例解释官方文档对join()的解释&#xff1a; Thread.join() method javadocs&#xff08;点击跳转&#xff09; join() Waits for this thread to die. 线程类的 join()方法将等待子线程完成&#xff0c;然后继续当前线程。j…

【Python】常见的时间操作(时间区间、时间相加减、指定年月天数等。。。

前言 记录在Python中使用的时间操作&#xff0c;方便以后查找。 在使用Python中&#xff0c;常会遇到关于时间的操作。 虽说每次都能借助搜索引擎找到解决的方法&#xff0c;但好记性不如烂笔头&#xff0c;遂有此文。 暂时记录了笔者所使用过的Python关于时间的操作&#xff0…

人世正道沧桑,她亦奋力向前 --读《李清照传》有感

有一次陪小孩晨读&#xff0c;朗诵诗歌&#xff0c;读到了李清照的《夏日绝句》&#xff1a;“生当作人杰&#xff0c;死亦为鬼雄。至今思项羽&#xff0c;不肯过江东”。这首诗是1129年&#xff0c;李清照在芜湖的乌江县触景生情&#xff0c;有感而作的。这首诗写得大气磅礴&a…

JQuery总结(一)

JQUERY概述&#xff1a; JQUERY和DOM相互转换&#xff1a; 基础选择器&#xff1a; 筛选选择器&#xff1a; show hide toggle方法 jQuery hover方法 jQuery stop()方法 例子&#xff1a;显示、隐藏、切换 button{/* 随着字体大小变化,button跟着变化大小 */font-size: 20px;ba…