前言
越来越懒了,懒到不想动动鼠标打开翻页网页的界面。尤其是在不一个IDE下,更不想切换了。
Chrome浏览器有翻译插件,但是不能自动翻译PDF上的英文;
Eclipse可以很方便的查看源码,但是不能自动翻译单词的含义;
总的来说吧,可以归结为两个方面。
- 一是我太懒,多动几下鼠标又死不了人╭(╯^╰)╮。
- 二是我英语还有待提升,提上到不用翻译软件就好了。
最后呢,我还是懒得多点那几下鼠标,拷贝粘贴,英语水平也没能到不用翻译就能看懂的地步。
于是我写了个懒人工具,减少鼠标的操作。能少点几下就少点几下。能少按键就少按键。
编码
代码其实很简单的。思路更是清晰。
- 获取电脑剪切板的内容。
- 交给翻译接口,获取返回结果。
- 将结果交给电脑,调用win32api,弹出对话框。
# coding: utf8
import win32clipboard as wc
import win32con
## win32api
import win32api
import sys
from random import randint
import time
from urllib2 import *
from urllib import quote
import json
def getCopyText():
wc.OpenClipboard()
copytext = wc.GetClipboardData(win32con.CF_TEXT)
wc.CloseClipboard()
return str(copytext)
def getTransText(rawtext):
translate_url = "http://fanyi.baidu.com/v2transapi?query=%s"%quote(rawtext)
data = urlopen(translate_url).read()
data = json.loads(data)
return data['trans_result']['data'][0]['dst']
if __name__ == '__main__':
second = sys.argv[1] if sys.argv[1] else 3
while True:
time.sleep(int(second))
try:
rawtext = getCopyText()
transtext = getTransText(rawtext)
# show the details info.
title = rawtext + "\' s translation result "
win32api.MessageBox(0, transtext, title, win32con.MB_OK)
except Exception as e:
print 'Something is wrong, maybe your text is too long.'
print "-----------------------------------------"
continue
print transtext
print "-----------------------------------------"
演示
使用起来也很简单。如下:
python trans.py seconds
这个seconds就是你想让这段代码多长时间工作一次。
只要你复制了一些内容到了电脑的剪切板中,这段脚本就能每隔seconds秒,帮你查询翻译的结果。还可以翻译句子哦。
总结
最后来总结一下,这个工具哪里还能改进一下。
轮询的方式稍微有点消耗计算资源,可以尝试着使用信号量,每当剪切板中有了数据,就触发翻译事件,再来显示翻译结果。
其次就是改进一下编码,我这边因为是自己用,所以没有添加注释,但是这确实是不对的。引以为戒好了。