本篇為實現谷歌翻譯的功能,在編寫的時候以為只是乙個介面的問題。
沒想到的是每次翻譯都會觸發一次js的執行,在請求引數中生成乙個tk。
文中tk的實現是復用的網上大神的**生成tk。
好了,不說了直接看**吧!
1 # /usr/bin/env python
2 # -*- coding: utf-8 -*-
3 import urllib.parse
4 import execjs,requests,termcolor
5 6 class return_tk():
7 8 def __init__(self):
9 self.ctx = execjs.compile("""
10 function tl(a)
27 a = b;
28 for (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;
34 return a.tostring() + jd + (a ^ b)
35 };
36 37 function rl(a, b)
46 return a
47 }
48 """)
49 50 def gettk(self, text):
51 return self.ctx.call("tl", text)
52 53 def open_url(url):
55 req = requests.get(url=url, headers=headers)
56 return req.content.decode('utf-8')
57 58 def max_length(content):
59 if len(content) > 4891:
60 print("翻譯文字超過限制!")
61 return
62 63 def print_result(parm):
64 result = parm
65 str_end = result.find("\",")
66 if str_end > 4:
67 print("翻譯的結果為:",result[4:str_end])
68 69 def en_to_zn_translate(content, tk):
70 max_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)
78 print_result(result)
79 80 def zn_to_en_translate(content,tk):
81 max_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)
89 print_result(result)
90 91 def main():
92 js = return_tk()
93 while true:
94 print(termcolor.colored("請先輸入要進行的操作:q表示退出;e表示英文翻譯成中文;z表示中文翻譯成英文。","red"))
95 change = input("請選擇翻譯選項:")
96 if change == 'q':
97 break
98 elif change == 'e':
99 content = input("請輸入要翻譯的英文:")
100 tk = js.gettk(content)
101 en_to_zn_translate(content,tk)
102 elif change == 'z':
103 content = input("請輸入要翻譯的中文:")
104 tk = js.gettk(content)
105 zn_to_en_translate(content,tk)
106 else:
107 print("請輸入正確的選項!")
108
109 main()
見執行效果:
總結:從**上來看,寫的比較簡潔,沒有高大上的寫法,只是單純的實現乙個功能。
除了tk的生成封裝成了類,其他的全部是用函式式程式設計實現。
Python3 動手自己寫谷歌翻譯
本篇為實現谷歌翻譯的功能,在編寫的時候以為只是乙個介面的問題。沒想到的是每次翻譯都會觸發一次js的執行,在請求引數中生成乙個tk。文中tk的實現是復用的網上大神的 生成tk。好了,不說了直接看 吧!1 usr bin env python 2 coding utf 8 3import 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...