Python3 動手自己寫谷歌翻譯

2022-05-30 14:45:29 字數 3257 閱讀 5415

本篇為實現谷歌翻譯的功能,在編寫的時候以為只是乙個介面的問題。

沒想到的是每次翻譯都會觸發一次js的執行,在請求引數中生成乙個tk。

文中tk的實現是復用的網上大神的**生成tk。

好了,不說了直接看**吧!

1 # /usr/bin/env python

2 # -*- coding: utf-8 -*-

3import urllib.parse

4import execjs,requests,termcolor56

class

return_tk():78

def __init__(self):

9 self.ctx = execjs.compile("""

10function tl(a)

27 a =b;

28for (f = 0; f < e.length; f++) a +=e[f],

29 a =rl(a, $b);

30 a =rl(a, zb);

31 a ^= b1 || 0;32

0 > a && (a = (a & 2147483647) + 2147483648

);33 a %=1e6;

34return a.tostring() + jd + (a ^b)

35};

3637

function rl(a, b)

46returna47

}48""")

4950

def gettk(self, text):

51return self.ctx.call("tl"

, text)

5253

def open_url(url):

54 headers =

55 req = requests.get(url=url, headers=headers)

56return req.content.decode('

utf-8')

5758

def max_length(content):

59if len(content) > 4891

:60 print("

翻譯文字超過限制!")

61return

6263

def print_result(parm):

64 result =parm

65 str_end = result.find("

\",")66

if str_end > 4

:67 print("

翻譯的結果為:

",result[4

:str_end])

6869

def en_to_zn_translate(content, tk):

70max_length(content)

71 content =urllib.parse.quote(content)

72#英譯漢

73 url = "

"\74"

&sl=en&tl=zh-cn&hl=zh-cn&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca"\

75"&dt=rw&dt=rm&dt=ss&dt=t&ie=utf-8&oe=utf-8&clearbtn=1&otf=1&pc=1"\

76"&srcrom=0&ssel=0&tsel=0&kc=2&tk=%s&q=%s

" %(tk, content)

77 result =open_url(url)

78print_result(result)

7980

def zn_to_en_translate(content,tk):

81max_length(content)

82 content =urllib.parse.quote(content)

83#漢譯英

84 url = "

"\85"

&sl=zh-cn&tl=en&hl=zh-cn&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca"\

86"&dt=rw&dt=rm&dt=ss&dt=t&ie=utf-8&oe=utf-8"\

87"&source=btn&ssel=3&tsel=3&kc=0&tk=%s&q=%s

"%(tk,content)

88 result =open_url(url)

89print_result(result)

9091

def main():

92 js =return_tk()

93while

true:

94 print(termcolor.colored("

請先輸入要進行的操作:q表示退出;e表示英文翻譯成中文;z表示中文翻譯成英文。

","red"))

95 change = input("

請選擇翻譯選項:")

96if change == 'q'

:97break

98 elif change == 'e'

:99 content = input("

請輸入要翻譯的英文:")

100 tk =js.gettk(content)

101en_to_zn_translate(content,tk)

102 elif change == 'z'

:103 content = input("

請輸入要翻譯的中文:")

104 tk =js.gettk(content)

105zn_to_en_translate(content,tk)

106else

:107 print("

請輸入正確的選項!")

108109 main()

見執行效果:

總結:從**上來看,寫的比較簡潔,沒有高大上的寫法,只是單純的實現乙個功能。

除了tk的生成封裝成了類,其他的全部是用函式式程式設計實現。

Python3 動手自己寫谷歌翻譯

本篇為實現谷歌翻譯的功能,在編寫的時候以為只是乙個介面的問題。沒想到的是每次翻譯都會觸發一次js的執行,在請求引數中生成乙個tk。文中tk的實現是復用的網上大神的 生成tk。好了,不說了直接看 吧!1 usr bin env python 2 coding utf 8 3 import urllib...

自己動手用python寫豆瓣FM

以前裝過幾次ubuntu,但總是因為缺少一些軟體工具而最終不得不回到windows下。最近又迷上了ubuntu,逐漸從windows系統轉戰ubuntu。這次,openfetion wineqq chrome,還有wps等軟體為這次過度打下了堅實的基礎。希望能夠成為乙個忠實的linux開源愛好者。閒...

python3實現谷歌翻譯

quad 中文轉英文的翻譯 from googletrans import translator def trans text translator translator return translator.translate text,dest en text if name main res t...