簡單小翻譯機(基於百度翻譯)


通過調用百度翻譯的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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM