一个可能你似曾相识的场景
阅读内容包含大量英文的 PPT、Word、Excel 或者记事本时,由于英语不熟悉,为了流利地阅读,需要打开浏览器进入谷歌翻译的主界面,然后把英文复制到谷歌翻译的输入框中,最后又把翻译结果复制回 PPT、Word 和 Excel。
要是一个两个单词还好,要是发现有 100 个单词不认识,就必须复制粘贴 200 次,如此机械性重复性的工作,应该交给程序来做,这就是我设计下面这个自动化翻译工具的初衷。
提升办公效率的法宝
如上图所示,运行程序并保持后台运行,在电脑上的任何一个软件中选择一段文本,并 Ctrl + C 复制到系统剪贴板中,程序就会自动帮助我们完成翻译,并将翻译结果自动复制到系统剪贴版中,只需 Ctrl + V,就完成了翻译结果对原文的替换。
编码实现
程序主要分为两部分,第一部分为谷歌翻译爬虫,第二部分就是实现这个将翻译结果自动替换的业务逻辑。
谷歌翻译爬虫
通过浏览器 F12 开发者工具,很容易定位到翻译请求的URL:http://translate.google.cn/translate_a/single"external nofollow" href="https://github.com/cocoa520/Google_TK">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""", 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 实现一个自动化翻译和替换的工具,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家!
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。