首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python实现翻译小工具

Python实现翻译小工具

作者头像
py3study
发布2020-01-16 14:47:04
6980
发布2020-01-16 14:47:04
举报
文章被收录于专栏:python3python3

一、背景 利用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
  • 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
  • 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实现翻译小工具

提高效率,同时也能打造属于自己的工具,>>>https://edu.aqniu.com/course/11597

活动地址>>>>https://wyx.edusoho.cn/h5/a/groupon/show/129432

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • -- coding:utf-8 --
  • _author:kaliarch
  • -- coding:utf-8 --
  • _author:kaliarch
  • -- coding:utf-8 --
  • _author:kaliarch
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档