Vorwort
Versuchen Sie noch heute, Übersetzungssoftware in Python zu erstellen. Hier, um den Code für die Freunde bereitzustellen, die ihn benötigen, und einige Tipps zu geben.
Die Funktion des Programms ist sehr einfach, Sie können einen beliebigen Übersetzer aus den drei gängigen Übersetzern auswählen, um Wörter und Sätze zu übersetzen, das PyQt5-Modul verwenden, um die Mensch-Computer-Interaktion zu realisieren, das Anforderungsmodul verwenden, um Anforderungen zu senden, und die Übersetzungsergebnisse an senden der Benutzer.
Entwicklungswerkzeuge
Python-Version: 3.8
Verwandte Module:
fordert Modul
re Modul
Zeitmodul
js2py Modul
Zufallsmodul
Hashlib Modul
Umgebung bauen
Installieren Sie Python und fügen Sie es der Umgebungsvariable hinzu, und pip installiert die erforderlichen zugehörigen Module.
Ideenanalyse
Die Funktion des Programms ist sehr einfach, Sie können einen beliebigen Übersetzer aus den drei gängigen Übersetzern auswählen, um Wörter und Sätze zu übersetzen, das PyQt5-Modul verwenden, um die Mensch-Computer-Interaktion zu realisieren, das Anforderungsmodul verwenden, um Anforderungen zu senden, und die Übersetzungsergebnisse an senden der Benutzer.
Implementierung
Nehmen wir als Beispiel die Baidu-Übersetzung
Übersetzen Sie willkürlich, um Seiteninformationen anzuzeigen.
Aus dem Bild ist ersichtlich, dass es sich um einen Post-Request handelt und auch die Daten des Request-Headers sind deutlich im Bild dargestellt.
Code
'''
User-Agent和Cookie 需要自行添加
Token中的T换成小写t
Function:
翻译类
'''
class baidu():
def __init__(self):
self.session = requests.Session()
self.session.cookies.set('BAIDUID', '19288887A223954909730262637D1DEB:FG=1;')
self.session.cookies.set('PSTM', '%d;' % int(time.time()))
self.headers = {
'User-Agent': 'XXX'
}
self.data = {
'query': '',
'simple_means_flag': '3',
'sign': '',
'Token': '',
}
self.url = 'https://fanyi.baidu.com/v2transapi'
def translate(self, word):
self.data['query'] = word
self.data['token'], gtk = self.getTokenGtk()
self.data['token'] = '6482f137ca44f07742b2677f5ffd39e1'
self.data['sign'] = self.getSign(gtk, word)
res = self.session.post(self.url, data=self.data)
return [res.json()['trans_result']['data'][0]['result'][0][1]]
def getTokenGtk(self):
url = 'https://fanyi.baidu.com/'
res = requests.get(url, headers=self.headers)
token = re.findall(r"token: '(.*?)'", res.text)[0]
gtk = re.findall(r";window.gtk = ('.*?');", res.text)[0]
return token, gtk
def getSign(self, gtk, word):
evaljs = js2py.EvalJs()
js_code = js.bd_js_code
js_code = js_code.replace('null !== i ? i : (i = window[l] || "") || ""', gtk)
evaljs.execute(js_code)
sign = evaljs.e(word)
return sign
Implementierung des grafischen Schnittstellencodes
class Demo(QWidget):
def __init__(self, parent=None):
super().__init__()
self.setWindowTitle('翻译软件-公众号: Python工程狮')
self.Label1 = QLabel('原文')
self.Label2 = QLabel('译文')
self.LineEdit1 = QLineEdit()
self.LineEdit2 = QLineEdit()
self.translateButton1 = QPushButton()
self.translateButton2 = QPushButton()
self.translateButton3 = QPushButton()
self.translateButton1.setText('baidu翻译')
self.translateButton2.setText('youdao翻译')
self.translateButton3.setText('Google翻译')
self.grid = QGridLayout()
self.grid.setSpacing(12)
self.grid.addWidget(self.Label1, 1, 0)
self.grid.addWidget(self.LineEdit1, 1, 1)
self.grid.addWidget(self.Label2, 2, 0)
self.grid.addWidget(self.LineEdit2, 2, 1)
self.grid.addWidget(self.translateButton1, 1, 2)
self.grid.addWidget(self.translateButton2, 2, 2)
self.grid.addWidget(self.translateButton3, 3, 2)
self.setLayout(self.grid)
self.resize(400, 150)
self.translateButton1.clicked.connect(lambda : self.translate(api='baidu'))
self.translateButton2.clicked.connect(lambda : self.translate(api='youdao'))
self.translateButton3.clicked.connect(lambda : self.translate(api='google'))
self.bd_translate = baidu()
self.yd_translate = youdao()
self.gg_translate = google()
def translate(self, api='baidu'):
word = self.LineEdit1.text()
if not word:
return
if api == 'baidu':
results = self.bd_translate.translate(word)
elif api == 'youdao':
results = self.yd_translate.translate(word)
elif api == 'google':
results = self.gg_translate.translate(word)
else:
raise RuntimeError('Api should be <baidu> or <youdao> or <google>...')
for result in results:
self.LineEdit2.setText(result)
zu guter Letzt
Um den Lesern zu danken, möchte ich einige meiner letzten Lieblings-Programmierartikel mit Ihnen teilen, um sie jedem Leser zurückzugeben, und hoffe, Ihnen helfen zu können.
Es gibt eine vollständige Reihe von Informationen, die für Anfänger geeignet sind~
Komm und wachse mit Xiaoyu auf!
① Mehr als 100+ Python-E-Books (Mainstream- und klassische Bücher sollten verfügbar sein)
② Informationen zur Python-Standardbibliothek (die vollständigste chinesische Version)
③ Quellcode des Reptile-Projekts (vierzig oder fünfzig interessante und klassische Handarbeitsprojekte und Quellcode)
④ Videos zu Python-Grundlagen, Crawlern, Webentwicklung und Big-Data-Analyse (für Einsteiger geeignet)
⑤ Python Learning Roadmap (Abschied vom einflussreichen Lernen)