Python实现有道云翻译-PyQt5版

截图一张

Python实现有道云翻译-PyQt5版_第1张图片
界面没有怎么设计,毕竟也不是卖钱,差不多就行。
下面是代码
YoudaoTranslate.py

import hashlib
import random
import time
import tkinter

import requests


def exp(translate_text):
    url = 'https://aidemo.youdao.com/trans'
    if not translate_text:
        return
    if len(translate_text) > 1000:
        print('体验翻译上限1000字符')
        return
    data = {
        'q': translate_text,
        'from': 'Auto',
        'to': 'Auto'
    }
    headers = {
        "Accept ": "application/json, text/javascript, */*; q=0.01",
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        "Origin": r"https://ai.youdao.com",
        "Referer": "https://ai.youdao.com/product-fanyi.s",
        "Sec-Fetch-Mode": "cors",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
    }
    result = requests.post(url, data=data, headers=headers).json()
    for item in result['translation']:
        print(item)


def web(translate_text):
    app_version = '5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
    r = str(int(time.time() * 1000))
    i = r + str(random.randint(0, 10))
    t = hashlib.md5(app_version.encode(encoding='utf-8')).hexdigest()
    sign_str = ("fanyideskweb" + str(translate_text) + str(i) + "n%A-rKaT5fb[Gy?;N5@Tj").encode(encoding='utf-8')
    sign = hashlib.md5(sign_str).hexdigest()
    data = {
        'i': translate_text,
        'from': 'AUTO',
        'to': 'AUTO',
        'smartresult': 'dict',
        'client': 'fanyideskweb',
        'salt': i,
        'sign': sign,
        'ts': r,
        'bv': t,
        'doctype': 'json',
        'version': '2.1',
        'keyfrom': 'fanyi.web',
        'action': 'FY_BY_REALTlME'
    }
    headers = {
        'Accept': 'application/json, text/javascript, */*; q=0.01',
        'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
        'Host': 'fanyi.youdao.com',
        "Cookie": "[email protected]; ___rl__test__cookies=%s; OUTFOX_SEARCH_USER_ID_NCOO=%s" % (
            r, 2147483647 * random.random()),
        'Origin': 'http://fanyi.youdao.com',
        'Referer': 'http://fanyi.youdao.com',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36',
        'X-Requested-With': 'XMLHttpRequest'
    }

    url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
    result = requests.post(url, headers=headers, data=data).json()
    if result['errorCode'] == 0:
        return result
    else:
        return None


def fanyi():
    global text
    result = web(text.get(0.0, tkinter.END))
    if result:
        text.delete(0.0, tkinter.END)
        i = 0
        for item in result['translateResult']:
            if i > 0:
                text.insert(tkinter.INSERT, '\n')
            text.insert(tkinter.INSERT, item[0]['tgt'])
            i += 1


def configwindow():
    global text
    # 创建主窗口
    window = tkinter.Tk()
    # 设置标题
    window.title('Titanjun')
    # 设置窗口大小
    window.geometry('600x400')
    button2 = tkinter.Button(window, text='翻译', width=15, height=2, fg='#fff', bg='#e02433', borderwidth=0,
                             activebackground='#bf0917', activeforeground='#fff', font=('Microsoft YaHei', 12),
                             cursor='hand2')
    button2.bind("", fanyi)
    button2.pack()
    text = tkinter.Text(window, fg="#333", background='#f2f2f2', font=('Microsoft YaHei', 18))
    # 添加右侧滚动条
    scroll = tkinter.Scrollbar()
    # side放到窗体的那一侧   fill填充
    scroll.pack(side=tkinter.RIGHT, fill=tkinter.Y)
    text.pack(side=tkinter.RIGHT, fill=tkinter.Y)
    # 两者关联
    scroll.config(command=text.yview)
    text.config(yscrollcommand=scroll.set)
    text.pack(fill='both')
    # 进入消息循环
    window.mainloop()
    # query = input('请输入要翻译的文本:')
    # print(web(query))

# if __name__ == '__main__':
# configwindow()

有道翻译GUI.py

# -*- coding: utf-8 -*-

import os
import sys
from YouDaoTranslate import web

if hasattr(sys, 'frozen'):
    os.environ['PATH'] = sys._MEIPASS + ";" + os.environ['PATH']

from PyQt5 import QtCore, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(783, 595)
        # 禁止最大化按钮
        MainWindow.setWindowFlags(QtCore.Qt.WindowFullscreenButtonHint)
        # 禁止拉伸窗口大小
        MainWindow.setFixedSize(MainWindow.width(), MainWindow.height())

        MainWindow.setStyleSheet("button:hover{\n"
                                 "    background-color:#bf0917\n"
                                 "}")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(300, 10, 111, 41))
        self.pushButton.setStyleSheet("QPushButton{\n"
                                      "    margin-left: 16px;\n"
                                      "    text-align: center;\n"
                                      "    width: 108px;\n"
                                      "    height: 38px;\n"
                                      "    line-height: 38px;\n"
                                      "    background: #e02433;\n"
                                      "    border-radius: 3px;\n"
                                      "    font-size: 14px;\n"
                                      "    color: #fff;\n"
                                      "}\n"
                                      "QPushButton:hover{"
                                      "    cursor:pointer;\n"
                                      "    background-color:#bf0917\n"
                                      "}")
        self.pushButton.setObjectName("pushButton")
        self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit.setGeometry(QtCore.QRect(0, 60, 791, 531))
        self.textEdit.setStyleSheet("QTextEdit{\n"
                                    "    color:#333;\n"
                                    "    font-size: 24px;\n"
                                    "    line-height: 30px;\n"
                                    "    height: 420px;\n"
                                    "    background: #fff;\n"
                                    "    border-radius: 6px;\n"
                                    "    margin-right: 10px;\n"
                                    "    padding: 18px 50px 18px 18px;\n"
                                    "}\n"
                                    "QTextEdit:hover{\n"
                                    "    border: 1px solid #0e7dff\n"
                                    "}")
        self.textEdit.setObjectName("textEdit")
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")

        self.retranslateUi(MainWindow)
        self.pushButton.clicked.connect(self.web2)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def web2(self):
        result = web(self.textEdit.toPlainText())
        if result:
            self.textEdit.clear()
            content = []
            for item in result['translateResult']:
                content.append(item[0]['tgt'])
            self.textEdit.setPlainText("\n".join(content))

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "翻译"))


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    widget = QtWidgets.QWidget()
    ui = Ui_MainWindow()
    ui.setupUi(widget)
    widget.show()
    sys.exit(app.exec_())

使用PyInstaller打包成exe

pyinstaller -F -W -n 有道翻译 -i C:\Users\mbh\Downloads\20190904022008140_easyicon_net_256.ico F_copy2.py -p YouDaoTranslate.py -p "D:\Program Files(x86)\Python\Python37-32\Lib\site-packages"

你可能感兴趣的:(python)