加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python实现翻译小工具!几行代码搞定!装逼利器有没有!

发布时间:2020-12-17 00:52:56 所属栏目:Python 来源:网络整理
导读:一、背景 利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面 二、代码 进群:548377875 ? ?即可获取数十套PDF哦! fanyi.py代码如下: #!/bin/env python# -*- coding:utf-8 -*-# _author:kaliarc

一、背景

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

二、代码

进群:548377875 ? ?即可获取数十套PDF哦!

fanyi.py代码如下:

#!/bin/env python
# -*- coding:utf-8 -*-
# _author:kaliarch
import requests
import urllib.parse
import time
import random
import hashlib
import json
class search(object):
 def __init__(self):
 self.url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
 def 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 tgt

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,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()
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 FilesPython36   cl  cl8.6"
os.environ['TK_LIBRARY'] = r"C:Program FilesPython36    cl  k8.6"
include_files = [
 r"C:Program FilesPython36DLLs  cl86t.dll",r"C:Program FilesPython36DLLs    k86t.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,输入想要翻译的内容,点击翻译即可查看翻译结果

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

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

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

进行安装测试

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读