python自动翻译小工具_Python实现翻译小工具

一、背景

利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面。

二、代码

git源码地址

Python实现翻译小工具

fanyi.py代码如下:

#!/bin/env python

-- coding:utf-8 --

_author:kaliarch

import requests

import urllib.parse

import time

import random

import hashlib

import jsondef getData(self,search_name):

# salt =i = "" + ((new Date).getTime() + parseInt(10 * Math.random(), 10)

salt = ((time.time() * 1000) + random.randint(1,10))

# sign = n.md5("fanyideskweb" + t + i + "ebSeFb%=XZ%T[KZ)c(sy!")

sign_text = "fanyideskweb" + search_name + str(salt) + "ebSeFb%=XZ%T[KZ)c(sy!"

sign = hashlib.md5((sign_text.encode('utf-8'))).hexdigest()

paydata = {

'i': search_name,

'from': 'AUTO',

'to': 'AUTO',

'smartresult': 'dict',

'client': 'fanyideskweb',

'salt': salt,

'sign': sign,

'doctype': 'json',

'version': '2.1',

'keyfrom': 'fanyi.web',

'action': 'FY_BY_CLICKBUTTION',

'typoResult': 'false'

}

return paydata

def getHeader(self):

header = {

'Host': 'fanyi.youdao.com',

'Referer': 'http://fanyi.youdao.com/',

'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',

'Cookie': 'OUTFOX_SEARCH_USER_ID=-846616837@1.80.219.201; OUTFOX_SEARCH_USER_ID_NCOO=129549097.60835753; UM_distinctid=15ff309f18ddc-094cb5494ad815-5d4e211f-1fa400-15ff309f18e449; _ga=GA1.2.184261795.1517119351; __guid=204659719.2556877880764680700.1518435624954.942; JSESSIONID=aaa3A5BLhtTrh4TPX_mgw; monitor_count=2; ___rl__test__cookies=1518488731567'

}

return header

def getRequest(self,paydata,header):

_data = urllib.parse.urlencode(paydata).encode('utf-8')

_header = header

response = requests.post(self.url,data=_data,headers=_header)

return response.text

def getResult(self,response):

result_text = json.loads(response)

#src = result_text['translateResult'][0][0]['src']

tgt = result_text['translateResult'][0][0]['tgt']

return tgt

def main(self,search_name):

app = search()

paydata = app.getData(search_name)

header = app.getHeader()

response = app.getRequest(paydata, header)

tgt = app.getResult(response)

return tgt1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

windows.py代码如下:

#!/bin/env python

-- coding:utf-8 --

_author:kaliarch

import tkinter as tk

from fanyi import search

class application:

def init(self):

self.windows = tk.Tk()

self.windows.title(“翻译小工具”)

self.windows.geometry(“280x350+700+300”)#提交按钮

self.submit_btn = tk.Button(self.windows, text="查询",command=self.submit)

self.submit_btn.place(x=220, y=10, width=50, height=25)

# 定义输入框

self.entry = tk.Entry(self.windows)

self.entry.place(x=10, y=10, width=200, height=40)

#输出内容

self.result_text = tk.Text(self.windows, background="#ccc")

self.result_text.place(x=10, y=90, width=260, height=245)

# 翻译结果标题

self.title_label = tk.Label(self.windows, text="翻译结果:")

self.title_label.place(x=10, y=65)

self.search_result = search()

def submit(self):

#1.获取用户输入

context = self.entry.get()

#2.利用有道翻译

result = self.search_result.main(context)

#3.输出

self.result_text.delete(1.0,tk.END)

self.result_text.insert(tk.END,result)

def run(self):

self.windows.mainloop()1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

if name == ‘main’:

winapp = application()

winapp.run()

setup.py代码如下:

-- coding:utf-8 --

_author:kaliarch

import sys

from cx_Freeze import setup,Executable

import os

os.environ[‘TCL_LIBRARY’] = r"C:\Program Files\Python36\tcl\tcl8.6"

os.environ[‘TK_LIBRARY’] = r"C:\Program Files\Python36\tcl\tk8.6"

include_files = [

r"C:\Program Files\Python36\DLLs\tcl86t.dll",

r"C:\Program Files\Python36\DLLs\tk86t.dll",

]

build_exe_options = {

“packages”:[“os”,“tkinter”,“requests”,“idna”],

“include_files”:include_files

}

base = None

if sys.platform == “win32”:

base = “Win32GUI”

setup(name = “translate_tool”,

version = “0.1”,

description = “fanyitools!”,

options = {“build_exe”:build_exe_options},

executables = {Executable(“windows.py”,base=base,icon=‘img.ico’)}

)

三、效果展示

运行windows.py,输入想要翻译的内容,点击翻译即可查看翻译结果

Python实现翻译小工具

Python实现翻译小工具

可以利用cx_Freeze打包成windows的mis安装小程序,方便使用

Python实现翻译小工具

切换到项目目录下执行python setup.py bdist_msi

待执行完毕,可以项目文件下生成两个文件夹dist中为msi安装文件,在其他windows服务器安装后就为build下的文件内容,在build下的exe.win-amd64-3.6下的windows.exe 就可打开小工具

Python实现翻译小工具

进行安装测试

Python实现翻译小工具

安装完成后可以运行安装目录下的windows.exe打开小工具

Python实现翻译小工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值