Python 實現自動化翻譯和替換的指令碼

2021-09-18 03:43:23 字數 2799 閱讀 8088

閱讀內容包含大量英文的 ppt、word、excel 或者記事本時,由於英語不熟悉,為了流利地閱讀,需要開啟瀏覽器進入谷歌翻譯的主介面,然後把英文複製到谷歌翻譯的輸入框中,最後又把翻譯結果複製回 ppt、word 和 excel。

要是乙個兩個單詞還好,要是發現有 100 個單詞不認識,就必須複製貼上 200 次,如此機械性重複性的工作,應該交給程式來做,這就是我設計下面這個自動化翻譯工具的初衷。

如上圖,執行程式並保持後台執行,在電腦上的任何乙個軟體中選擇一段文字,並 ctrl + c 複製到系統剪貼簿中,程式就會自動幫助我們完成翻譯,並將翻譯結果自動複製到系統剪貼版中,只需 ctrl + v,就完成了翻譯結果對原文的替換。

如果有想學習python的程式設計師,可來我的python學習扣qun:835017344

程式主要分為兩部分,第一部分為谷歌翻譯爬蟲,第二部分就是實現這個將翻譯結果自動替換的業務邏輯。

谷歌翻譯爬蟲

通過瀏覽器 f12 開發者工具,很容易定位到翻譯請求的 url:&dt=t&ie=utf-8&oe=utf-8&clearbtn=1&otf=1&pc=1&srcrom=0&ssel=0&tsel=0&kc=2

這個請求接受兩個引數,乙個就是我們要翻譯的字串 q,另乙個是用於使用者認證的 tk(token),其中 q 很容易構造,tk 的構造就需要花費一番心力了,需要我們除錯 js **,這裡參考 github 上大神的輪子:

谷歌翻譯爬蟲的主要**如下:

def translate(tk, content):

if len(content) > 4891:

print("翻譯的長度超過限制!!!")

return

param =

result = requests.get("""

&tl=zh-cn&hl=zh-cn&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss

&dt=t&ie=utf-8&oe=utf-8&clearbtn=1&otf=1&pc=1&srcrom=0&ssel=0&tsel=0&kc=2""", 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)

settext(res)

time.sleep(1)

ls = res

值得注意的是,系統剪貼簿物件是單例模式的,在作業系統範圍內只有乙個,而且讀寫剪貼簿都是互斥的,在讀(寫)剪貼簿的同時不允許任何對剪貼簿的寫(讀)操作。試想這樣一種情景,我們在其他軟體中 ctrl + c 寫入剪貼簿,而此時我們的程式**正好執行到讀剪貼簿那一行,毫無疑問會報錯,我的解決辦法是使用 try…except 語句延時 1 s再讀取,這樣可以大大降低讀寫碰撞的概率,但無疑消耗了程式效能

python實現自動化列印

這次真的是出於實際需要,想要用python寫個小指令碼 老闆發給我乙份包含幾百個人資訊的pdf檔案,如果乙份乙份開啟檔案,點列印我感覺要看到眼花。發現呼叫電腦程式需要用到win32這個庫,而且初略的看了下就發現此庫非常nb,怎麼說,這個庫可以同計算機進行互動,比如彈出提示框,或者呼叫系統內建一些程式...

如何使用Python和Nose實現自動化測試?

如何使用python和nose實現自動化測試?reset.sh ios pip install r requirements.txt 接下來執行樣例測試 nosetests py desired capabilities 引數用來指定執行平台 ios 6.0 以及我們想測試的應用。接下來我們還新增了...

Python實現網頁自動化朗讀

是不是有的時候懶得自己看新聞?那麼不妨試試用 python 來朗讀給你聽吧。網頁轉換成語音,步驟無外乎 網頁正文識別,獲取到正文的文字內容 文字轉語音,通過介面將文字轉換成語音檔案 語音檔案的發聲,即將語音檔案讀出 01 網頁正文識別 之所以用 python,就是因為 python 有著豐富的庫,網...