前言
越來(lái)越懶了,懶到不想動(dòng)動(dòng)鼠標(biāo)打開(kāi)翻頁(yè)網(wǎng)頁(yè)的界面春塌。尤其是在不一個(gè)IDE下晓避,更不想切換了。
Chrome瀏覽器有翻譯插件只壳,但是不能自動(dòng)翻譯PDF上的英文俏拱;
Eclipse可以很方便的查看源碼,但是不能自動(dòng)翻譯單詞的含義吼句;
總的來(lái)說(shuō)吧锅必,可以歸結(jié)為兩個(gè)方面。
- 一是我太懶,多動(dòng)幾下鼠標(biāo)又死不了人╭(╯^╰)╮搞隐。
- 二是我英語(yǔ)還有待提升驹愚,提上到不用翻譯軟件就好了。
最后呢劣纲,我還是懶得多點(diǎn)那幾下鼠標(biāo)逢捺,拷貝粘貼,英語(yǔ)水平也沒(méi)能到不用翻譯就能看懂的地步癞季。
于是我寫了個(gè)懶人工具辛燥,減少鼠標(biāo)的操作歪脏。能少點(diǎn)幾下就少點(diǎn)幾下。能少按鍵就少按鍵。
編碼
代碼其實(shí)很簡(jiǎn)單的竿音。思路更是清晰。
- 獲取電腦剪切板的內(nèi)容套蒂。
- 交給翻譯接口与境,獲取返回結(jié)果。
- 將結(jié)果交給電腦郊楣,調(diào)用win32api憔恳,彈出對(duì)話框。
# 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 "-----------------------------------------"
演示
使用起來(lái)也很簡(jiǎn)單净蚤。如下:
python trans.py seconds
這個(gè)seconds就是你想讓這段代碼多長(zhǎng)時(shí)間工作一次钥组。
只要你復(fù)制了一些內(nèi)容到了電腦的剪切板中,這段腳本就能每隔seconds秒今瀑,幫你查詢翻譯的結(jié)果程梦。還可以翻譯句子哦。
總結(jié)
最后來(lái)總結(jié)一下橘荠,這個(gè)工具哪里還能改進(jìn)一下屿附。
輪詢的方式稍微有點(diǎn)消耗計(jì)算資源,可以嘗試著使用信號(hào)量哥童,每當(dāng)剪切板中有了數(shù)據(jù)挺份,就觸發(fā)翻譯事件,再來(lái)顯示翻譯結(jié)果贮懈。
其次就是改進(jìn)一下編碼匀泊,我這邊因?yàn)槭亲约河茫詻](méi)有添加注釋朵你,但是這確實(shí)是不對(duì)的各聘。引以為戒好了。