浅析Python 实现一个自动化翻译和替换的工具

作者:学好Python吧 时间:2021-12-03 20:48:25 

一个可能你似曾相识的场景

阅读内容包含大量英文的 PPT、Word、Excel 或者记事本时,由于英语不熟悉,为了流利地阅读,需要打开浏览器进入谷歌翻译的主界面,然后把英文复制到谷歌翻译的输入框中,最后又把翻译结果复制回 PPT、Word 和 Excel。

浅析Python 实现一个自动化翻译和替换的工具

浅析Python 实现一个自动化翻译和替换的工具

要是一个两个单词还好,要是发现有 100 个单词不认识,就必须复制粘贴 200 次,如此机械性重复性的工作,应该交给程序来做,这就是我设计下面这个自动化翻译工具的初衷。

提升办公效率的法宝

浅析Python 实现一个自动化翻译和替换的工具

如上图所示,运行程序并保持后台运行,在电脑上的任何一个软件中选择一段文本,并 Ctrl + C 复制到系统剪贴板中,程序就会自动帮助我们完成翻译,并将翻译结果自动复制到系统剪贴版中,只需 Ctrl + V,就完成了翻译结果对原文的替换。

编码实现

程序主要分为两部分,第一部分为谷歌翻译爬虫,第二部分就是实现这个将翻译结果自动替换的业务逻辑。

谷歌翻译爬虫

通过浏览器 F12 开发者工具,很容易定位到翻译请求的URL:http://translate.google.cn/translate_a/single?client=t&sl=en&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss &dt=t&ie=UTF-8&oe=UTF-8&clearbtn=1&otf=1&pc=1&srcrom=0&ssel=0&tsel=0&kc=2

这个请求接受两个参数,一个就是我们要翻译的字符串 q,另一个是用于用户认证的 tk(token),其中 q 很容易构造,tk 的构造就需要花费一番心力了,需要我们调试 js 代码,这里参考 Github 上大神的轮子: https://github.com/cocoa520/Google_TK

谷歌翻译爬虫的主要代码如下:


def translate(tk, content):
if len(content) > 4891:
 print("too long to translate")
  return
param = {'tk': tk, 'q': content}
result = requests.get("""http://translate.google.cn/translate_a/single?client=t&sl=en  
&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss  
&dt=t&ie=UTF-8&oe=UTF-8&clearbtn=1&otf=1&pc=1&srcrom=0&ssel=0&tsel=0&kc=2""", params=param)
data = result.json()
print(data[0][0][0])

返回结果是 json 形式的,翻译结果保存在结果的第一个元组中。

Python 操作系统剪贴板

将读取剪贴板的内容的代码封装成函数如下:


def getText():#读取剪切板
 # 打开剪贴板
 w.OpenClipboard()
# 读取剪贴板的内容
d = w.GetClipboardData(win32con.CF_TEXT)
 # 关闭剪贴板
 w.CloseClipboard()
try:  
return d.decode('utf-8')
except:  
return d.decode('gbk')

返回值 d 是字节类型的,需要解码,中文按 gbk 格式解码,英文按 utf-8 解码。

类似地,写入剪贴板的代码如下:


def setText(aString):#写入剪切板
# 打开剪贴板
w.OpenClipboard()
# 清空剪贴板
w.EmptyClipboard()
# 写入剪贴板
w.SetClipboardText(aString)
# 关闭剪贴板
w.CloseClipboard()

实现将翻译结果自动替换原文的逻辑的代码如下:


while(True):
  # 如果剪贴板正在被占用
 try:
  cs = getText()
 except:
  time.sleep(1)
   cs = getText()
 print('cs',cs)
 if cs and cs != ls:
  print('准备翻译')
  content = getText()  
tk = js.getTk(content)
  res = translate(tk, content)14   setText(res)
  time.sleep(1)
  ls = res

值得注意的是,系统剪贴板对象是单例模式的,在操作系统范围内只有一个,而且读写剪贴板都是互斥的,在读(写)剪贴板的同时不允许任何对剪贴板的写(读)操作。试想这样一种情景,我们在其他软件中 Ctrl + C 写入剪贴板,而此时我们的程序代码正好执行到读剪贴板那一行,毫无疑问会报错,我的解决办法是使用 try…except 语句延时 1 s再读取,这样可以大大降低读写碰撞的概率,但无疑消耗了程序性能。

总结

以上所述是小编给大家介绍的Python 实现一个自动化翻译和替换的工具,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家!

来源:https://www.jianshu.com/p/5d98fd17ef9f

标签:Python,自动化翻译,替换的工具
0
投稿

猜你喜欢

  • 查看Oracle的执行计划一句话命令

    2010-07-16 13:02:00
  • Python解决pip install时出现的Could not fetch URL问题

    2023-08-01 14:24:45
  • Python3爬虫之urllib携带cookie爬取网页的方法

    2022-07-01 14:19:02
  • 详解Python编程中基本的数学计算使用

    2022-12-12 13:52:04
  • ASP|HTML]单引与双引号

    2008-03-12 11:42:00
  • python常用知识梳理(必看篇)

    2021-04-30 07:37:39
  • Python实现快速傅里叶变换的方法(FFT)

    2022-09-18 07:21:47
  • python 字典操作提取key,value的方法

    2021-06-01 04:40:39
  • Python flask框架实现浏览器点击自定义跳转页面

    2023-04-26 15:48:31
  • 详解Python中使用base64模块来处理base64编码的方法

    2022-01-12 01:27:19
  • Go学习笔记之Zap日志的使用

    2023-09-19 01:21:36
  • php文件怎么打开 如何执行php文件

    2023-11-15 05:51:46
  • python的pyecharts绘制各种图表详细(附代码)

    2021-12-29 16:51:13
  • Python 十大经典排序算法实现详解

    2021-10-01 02:55:24
  • python 爬取百度文库并下载(免费文章限定)

    2022-05-08 16:18:28
  • python求列表交集的方法汇总

    2023-03-01 10:32:40
  • Python基础之教你怎么在M1系统上使用pandas

    2023-09-02 12:56:23
  • Golang轻量级IoC容器安装使用示例

    2023-07-23 14:49:12
  • js查找父节点的简单方法

    2023-09-11 01:12:42
  • SQL语句练习实例之五 WMS系统中的关于LIFO或FIFO的问题分析

    2011-11-03 16:59:59
  • asp之家 网络编程 m.aspxhome.com