前言
越來越懶了,懶到不想動(dòng)動(dòng)鼠標(biāo)打開翻頁網(wǎng)頁的界面。尤其是在不一個(gè)IDE下,更不想切換了。
Chrome瀏覽器有翻譯插件,但是不能自動(dòng)翻譯PDF上的英文;
Eclipse可以很方便的查看源碼,但是不能自動(dòng)翻譯單詞的含義;
總的來說吧,可以歸結(jié)為兩個(gè)方面。
- 一是我太懶,多動(dòng)幾下鼠標(biāo)又死不了人╭(╯^╰)╮。
- 二是我英語還有待提升,提上到不用翻譯軟件就好了。
最后呢,我還是懶得多點(diǎn)那幾下鼠標(biāo),拷貝粘貼,英語水平也沒能到不用翻譯就能看懂的地步。
于是我寫了個(gè)懶人工具,減少鼠標(biāo)的操作。能少點(diǎn)幾下就少點(diǎn)幾下。能少按鍵就少按鍵。
編碼
代碼其實(shí)很簡單的。思路更是清晰。
- 獲取電腦剪切板的內(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 "-----------------------------------------"
演示
使用起來也很簡單。如下:
python trans.py seconds
這個(gè)seconds就是你想讓這段代碼多長時(shí)間工作一次。
只要你復(fù)制了一些內(nèi)容到了電腦的剪切板中,這段腳本就能每隔seconds秒,幫你查詢翻譯的結(jié)果。還可以翻譯句子哦。
使用效果截圖
總結(jié)
最后來總結(jié)一下,這個(gè)工具哪里還能改進(jìn)一下。
輪詢的方式稍微有點(diǎn)消耗計(jì)算資源,可以嘗試著使用信號(hào)量,每當(dāng)剪切板中有了數(shù)據(jù),就觸發(fā)翻譯事件,再來顯示翻譯結(jié)果。
其次就是改進(jìn)一下編碼,我這邊因?yàn)槭亲约河茫詻]有添加注釋,但是這確實(shí)是不對(duì)的。引以為戒好了。