Python实现翻译小工具「建议收藏」

Python实现翻译小工具「建议收藏」一、背景利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面。二、代码git源码地址fanyi.py代

大家好,又见面了,我是你们的朋友全栈君。

一、背景

利用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 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, 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() 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中为

更多Java视频资料 731661047

 

msi安装文件,在其他windows服务器安装后就为build下的文件内容,在build下的exe.win-amd64-3.6下的windows.exe 就可打开小工具进行安装

Python实现翻译小工具

 

测试 Python实现翻译小工具 安装完成后可以运行安装目录下的windows.exe打开小工具 Python实现翻译小工具

原文链接:http://blog.51cto.com/kaliarch/2072150

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156111.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mpeg4标准包含{xvid\divx,h264\avc}

    mpeg4标准包含{xvid\divx,h264\avc}“MPEG-4由一系列的子标准组成,被称为部……………………………第二部(ISO/IEC14496-2):视讯:定义了一个对各种视觉信息(包括视讯,静止纹理,计算机合成图形等等)的编解码器。对视讯部分来说,众多”Profiles”中很常用的一种是AdvancedSimpleProfile(ASP),例如XviD编码就属于MPEG-4

    2022年9月18日
    0
  • IC验证培训——SystemVerilog通用程序库(下)

    IC验证培训——SystemVerilog通用程序库(下)路桑的个人网址:路科验证-IC验证培训-数字芯片验证五、类方法还是包函数?我们最初的直觉是将svlib作为一组SystemVerilog类呈现给用户。我们假设由一个类来表示一个正则表达式,另一个类来表示一个文件名,等等。从库写作者的角度来看,以这种方式打包用户数据是非常有吸引力的,因为它允许我们将任意隐藏数据与每个对象相关联。 我们在编写面向用户的API时,上遇到了一个严…

    2022年9月4日
    3
  • vue基础(学习官方文档)

    vue基础(学习官方文档)基础介绍是什么是一套用于构建用户界面的渐进式框架声明式渲染vue实例一个Vue应用由一个通过newVue创建的根Vue实例,以及可选的嵌套的、可复用的组件树组成。所有的

    2022年8月3日
    3
  • matlab画出三角函数图像_matlab二元函数绘图

    matlab画出三角函数图像_matlab二元函数绘图在matlab中绘制二元函数图像矩形区域上的绘制考虑f(x,y)=2×2+2y2+4xy−3y−3x+1f(x,y)=2x^2+2y^2+4xy-3y-3x+1f(x,y)=2×2+2y2+4xy−3y−3x+1在矩形区域[0,1]×[0,1][0,1]\times[0,1][0,1]×[0,1]上的图像。直接上代码:%meshf(x,y)onacertaindomainclear;clc;%generatedomainX=0:

    2022年9月7日
    0
  • docker restart=always_MySQL having

    docker restart=always_MySQL having在面试中关于多线程同步,你必须要思考的问题一文中,我们知道glibc的pthread_cond_timedwait底层是用linuxfutex机制实现的。理想的同步机制应该是没有锁冲突时在用户态利用原子指令就解决问题,而需要挂起等待时再使用内核提供的系统调用进行睡眠与唤醒。换句话说,在用户态的自旋失败时,能不能让进程挂起,由持有锁的线程释放锁时将其唤醒?如果你没有较深入地考虑过这个问题,很可能…

    2022年9月21日
    0
  • golang 激活码 2021[在线序列号][通俗易懂]

    golang 激活码 2021[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    80

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号