用了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()
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()
hwg2 = QtWidgets.QWidget()
hwg1.setLayout(hlayout1)
hwg2.setLayout(hlayout2)
wlayout.addWidget(hwg1)
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.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 = {
'Cookie': '[email protected];',
'Referer': 'http://fanyi.youdao.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; rv:51.0) Gecko/20100101 Firefox/51.0',
}
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_())