python 翻译小工具

用了QT5做了个简单界面,在线有道翻译

import requests
import hashlib
import time
import json
import random
import sys
from PyQt5 import QtWidgets

class GridLayout(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("翻译")
        wlayout = QtWidgets.QVBoxLayout()# 全局布局(1个):垂直
        hlayout1 = QtWidgets.QHBoxLayout()#局部布局
        hlayout2 = QtWidgets.QHBoxLayout()

        self.mylineedit_p=QtWidgets.QTextEdit()
        hlayout1.addWidget(QtWidgets.QLabel("待翻译的内容:"))
        hlayout1.addWidget(self.mylineedit_p)
        self.button_1 = QtWidgets.QPushButton("翻译")
        hlayout1.addWidget(self.button_1)
        self.button_1.clicked.connect(self.youdaotrans)

        self.mylineedit_r=QtWidgets.QTextEdit()
        hlayout2.addWidget(QtWidgets.QLabel("翻译后的内容:"))
        hlayout2.addWidget(self.mylineedit_r)

        hwg1 = QtWidgets.QWidget()#6个部件
        hwg2 = QtWidgets.QWidget()

        hwg1.setLayout(hlayout1) # 6个部件设置局部布局
        hwg2.setLayout(hlayout2)

        wlayout.addWidget(hwg1)#6个部件加至全局
        wlayout.addWidget(hwg2)

        self.setLayout(wlayout)
        self.resize(350, 300)
    def youdaotrans(self):
        s=self.mylineedit_p.toPlainText()
        y = Youdao(s)
        self.mylineedit_r.setText(y.get_result())
class Youdao():
	def __init__(self, msg):
		self.msg = msg
		self.url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
		self.D = "ebSeFb%=XZ%T[KZ)c(sy!"
		self.salt = self.get_salt()
		self.sign = self.get_sign()

	def get_md(self, value):
		m = hashlib.md5()
		# m.update(value)
		m.update(value.encode('utf-8'))
		return m.hexdigest()

	def get_salt(self):

		s = int(time.time() * 1000) + random.randint(0, 10)
		return str(s)

	def get_sign(self):

		s = "fanyideskweb" + self.msg + self.salt + self.D
		return self.get_md(s)

	def get_result(self):
		headers = {
			# 'Accept': 'application/json, text/javascript, */*; q=0.01',
			# 'Accept-Encoding': 'gzip, deflate',
			# 'Accept-Language': 'zh-CN,zh;q=0.9,mt;q=0.8',
			# 'Connection': 'keep-alive',
			# 'Content-Length': '240',
			# 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
			'Cookie': '[email protected];',#最好用自己的cookie数据
			# 'Host': 'fanyi.youdao.com',
			# 'Origin': 'http://fanyi.youdao.com',
			'Referer': 'http://fanyi.youdao.com/',
			'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; rv:51.0) Gecko/20100101 Firefox/51.0',
			# 'X-Requested-With': 'XMLHttpRequest'
		}
		data = {
			'i': self.msg,
			'from': 'AUTO',
			'to': 'AUTO',
			'smartresult': 'dict',
			'client': 'fanyideskweb',
			'salt': self.salt,
			'sign': self.sign,
			'doctype': 'json',
			'version': '2.1',
			'keyfrom': 'fanyi.web',
			'action': 'FY_BY_CL1CKBUTTON',
			'typoResult': 'true'
		}
		html=requests.post(self.url,data=data,headers=headers).text

		infos=json.loads(html)
		if 'translateResult' in infos:
			try:
				result=infos['translateResult'][0][0]['tgt']
				return result
			except:
				pass






app = QtWidgets.QApplication(sys.argv)
grid_layout = GridLayout()
grid_layout.show()
sys.exit(app.exec_())

猜你喜欢

转载自blog.csdn.net/Neekity/article/details/86356466