前言

越来越懒了,懒到不想动动鼠标打开翻页网页的界面。尤其是在不一个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秒,帮你查询翻译的结果。还可以翻译句子哦。

使用效果截图

总结

最后来总结一下,这个工具哪里还能改进一下。

轮询的方式稍微有点消耗计算资源,可以尝试着使用信号量,每当剪切板中有了数据,就触发翻译事件,再来显示翻译结果。

其次就是改进一下编码,我这边因为是自己用,所以没有添加注释,但是这确实是不对的。引以为戒好了。


本文转载:CSDN博客