python代码翻译器-Python实现翻译软件
华为文件管理器删除文件恢复本篇⽂章主要讲讲述了⽤Python实现翻译软件,超级实⽤,赶紧将代码收藏起来试试吧,希望对你学习Python有所启发哦!
前两天吃了平哥的⼀波狗粮,他给⼥朋友写了⼀个翻译软件,⾃⼰真真切切的感受到了程序员的浪漫。在学习requests请求的时候做过类似的Demo,给百度翻译发送⼀个post请求可以实现任意词组的翻译,利⽤周六周⽇将那段代码进⾏了进⼀步优化加了⼀个交互界⾯,有了今天的翻译软件。
程序介绍
先上图让⼤家感受⼀下
怎么查看linux系统版本程序的功能很简单,可以从三个主流翻译器中选择任意的翻译器进⾏单词和句⼦的翻译,使⽤ PyQt5 模块实现⼈机交互,⽤requests模块发送请求,并将翻译结果返回给⽤户。
具体实现
⽤百度翻译来举例
任意的进⾏翻译来查看页⾯信息。
从图⽚中可以发现这是⼀个post请求,请求头的数据在的图⽚中也有较清楚的显⽰。
我们需要在添加上⾯的数据,其中 simple_means_flag 为固定量,query 代表待翻译的词,根据这些信息我们写个简单的代码测试⼀下。import requests
headers={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
lunaChrome/71.0.3578.80 Safari/537.36"}
post_data={
'query': 'Ahab杂货铺',
'from': 'zh',
'to': 'en',
'sign': '413120.175857',
'token':'64d8ce70799b54833f56b43f9d6eb3b4'
}
post_url="fanyi.baidu/v2transapi"
r=requests.post(post_url,data=post_data,headers=headers)
t.decode())js 数组操作
运⾏以后输出下⾯的结果:
出现上⾯错误的原因就是sign和token这两个参数搞的⿁,先说token,token可以直接在百度翻译主页的源码⾥到:
因为时间戳不同步所以直接请求百度翻译的主页获取到的 token 是⽤不了的,只能⼈为地把⽹页当前显⽰的 token 值复制下来然后赋值给代码⾥的 token。
sign 参数是根据翻译的内容⽽在前台⽣成的,如果发送的请求中,query 内容和 sign 不匹配,则收到的响应是 error。下⾯要做的就是破解百度翻译 sign。sign 是由⼀个 js ⽂件⽣成的,下图就是⽣成 sign 的 js ⽂件。
将这个代码放在格式化⼯具中重新排版⼀下,到 sign 执⾏函数的代码,再⽤ execjs,执⾏这段 js 代码,在计算过程中还需要 gtk 的值,这个值在翻译⾸页获取⼀下就可以。js = js.replace(
上边的步骤完成以后我们就可以愉快的进⾏翻译了。
图形化界⾯⽤的是 pyQt5 这个模块,实现起来不难。class Demo(QWidget):
def __init__(self, parent=None):
super().__init__()
elf.setWindowTitle('翻译软件-: Ahab杂货铺')
self.Label1 = QLabel('原⽂')
self.Label2 = QLabel('译⽂')
self.LineEdit1 = QLineEdit()
self.LineEdit2 = QLineEdit()
self.id)
elf.yd_translate = youdao()
<_translate = google()
def translate(self, api='baidu'):
word = ()
if not word:
python基础代码大全加翻译return
if api == 'baidu':
results = self.anslate(word)
elif api == 'youdao':
results = self.anslate(word)
elif api == 'google':
results = _anslate(word)
else:
raise RuntimeError('Api should be or or ...')
for result in results:
self.LineEdit2.setText(result)
以上就是Python实现翻译软件的详细内容,更多请关注php中⽂⽹其它相关⽂章!本⽂转载于:CSDN,如有侵犯,请联系a@php删除
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论