简单小翻译机(基于百度翻译)
通过调用百度翻译的API,简单实现一个翻译机。
js获取baidu_translats_js.js
import execjs
import requests
from tkinter import *
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/89.0.4389.90 Safari/537.36",
"Cookie": "REALTIME_TRANS_SWITCH=1; FANYI_WORD_SWITCH=1; HISTORY_SWITCH=1; SOUND_SPD_SWITCH=1; "
"SOUND_PREFER_SWITCH=1; PSTM=1599911600; BAIDUID=A7F250DC073C65429F46328BFBC119C3:FG=1; "
"BDUSS=V6eXRVNnJtcDdMVzJsd0gzS2VrN0JMS25pd0lrQ1AzUExYQXpmd053fmhIVE5nRVFBQUFBJCQAAAAAAAAAAAEAAACJZi1omI6MSGh5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOGQC2DhkAtgMT; BDUSS_BFESS=V6eXRVNnJtcDdMVzJsd0gzS2VrN0JMS25pd0lrQ1AzUExYQXpmd053fmhIVE5nRVFBQUFBJCQAAAAAAAAAAAEAAACJZi1omI6MSGh5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOGQC2DhkAtgMT; BIDUPSID=7D594C3C3031606DCAD0191D2EC955E5; DOUBLE_LANG_SWITCH=0; __yjs_duid=1_2a0d8b05414a3a3dbb50ef41d729b81b1616683448917; BDORZ=FFFB88E999055A3F8A630C64834BD6D0; BDRCVFR[shF0fZW8Lss]=mk3SLVN4HKm; delPer=0; PSINO=6; H_PS_PSSID=; BAIDUID_BFESS=F470E216756309181B14EC3A9CC2EE7B:FG=1; Hm_lvt_64ecd82404c51e03dc91cb9e8c025574=1616860655,1616919195,1616919565,1616922806; BDRCVFR[n9IS1zhFc9f]=mk3SLVN4HKm; BA_HECTOR=80a0ag218k242k2kb61g60u8q0r; __yjsv5_shitong=1.0_7_2b7f3dd5a19dfb7d0f91bc8897a554dd37c7_300_1616935639219_113.115.50.91_e53a6bc4; Hm_lpvt_64ecd82404c51e03dc91cb9e8c025574=1616935682; ab_sr=1.0.0_NDU1OTEwMmQ4ODg5NDhjNTNmZTgwY2ZhZTBlYjMwOTFlZTNiMmNlYzhmZWU5NzExYzE5ZDNjN2UwMzMzYTJmNGUxYjk0MjBjNmUyMjkzN2QxMDIxZDViYWMyMzk2NTk4"}
url = 'https://fanyi.baidu.com/v2transapi'
def signs(query):
with open('baidu_translats_js.js', 'r', encoding='utf-8') as f:
ctx = execjs.compile(f.read())
sign = ctx.call('e', query)
if len(query.encode('gbk'))==len(query):
froms = "en"
to = "zh"
else:
froms = "zh"
to = "en"
data = {
"from": froms,
"to": to,
"query": query,
"simple_means_flag": 3,
"sign": sign,
"token": "4edeb2e77dde1fd956e864919fdeaa95"
}
return data
# 创建-一个计算器
def calc():
# 将用户输入的表达式,计算结果后转换为字符串
query = expression.get()
data = signs(query)
r = requests.post(url, headers=headers, data=data).json()
a = r["trans_result"]["data"][0]["dst"]
label.config(text=a)
# def main():
win = Tk()
# 创建窗体
win.title("Hye translate")
frame = Frame(win)
# 创建--一个Label控件
label = Label(frame)
# 创建一一个Entry控件
entry = Entry(frame)
# 读取用户输入的表达式
expression = StringVar()
# 将用户输入的表达式显示在Entry控件上
entry["textvariable"] = expression
# 创建-一个 Button控件.当用户输入完毕后,单击此按钮即计算表达式的结果
button1 = Button(frame, text="翻 译", command=calc)
# 设置Entry控件为焦点所在
entry.focus()
frame.pack()
# Entry控件位于窗体的上方
entry.pack()
# Label控件位于窗体的左方
label.pack(side=LEFT)
# Button控件位于窗体的右方
button1.pack(side=RIGHT)
# 开始程序循环
frame.mainloop()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!