首先,我们需要使用百度翻译 API 进行翻译需要注册百度翻译开放平台账号并获取 API 密钥,可以在此网站中注册并获取 API 密钥:https://api.fanyi.baidu.com/
百度翻译API申请教程
在获取了 API 密钥之后,我们可以使用 Python 的 requests 库来调用百度翻译 API:
pip install requests
在调用百度翻译 API 时,我们需要提供以下参数:
其中,salt 和 sign 是用来防止 API 被滥用的参数。
import random
import hashlib
import requests
# 替换为你的百度翻译 appid
appid = '2022xxxxxx'
# 填写你的百度翻译API密钥
secretKey = '7Bnxxxxxxxx'
# 要翻译的文本
translate_text = 'Hello World'
# 随机数
salt = random.randint(32768, 65536)
# 签名,拼接成字符串后,再进行md5加密
sign = appid + translate_text + str(salt) + secretKey
sign = hashlib.md5(sign.encode()).hexdigest()
# 百度翻译 API 地址
url = 'https://fanyi-api.baidu.com/api/trans/vip/translate'
# 发送请求
response = requests.get(url, params={
'q': translate_text,
'from': 'en', # auto
'to': 'zh',
'appid': appid,
'salt': salt,
'sign': sign
})
# 解析响应
result = response.json()
# 输出翻译结果
print(result['trans_result'][0]['dst'])
这一小节实现的功能:当发生复制待翻译文本的操作后,调用API进行翻译,将翻译结果显示在终端
import pyperclip
import random
import hashlib
import requests
import time
# 请替换为你的百度翻译 appid
appid = '2022xxxxxxxx'
# 填写你的百度翻译API密钥
secretKey = '7Bnxxxxxxx'
# 初始化上一次的剪贴板内容
last_clipboard_content = ''
while True:
# 获取当前剪贴板内容
clipboard_content = pyperclip.paste()
# 如果剪贴板内容发生了变化
if clipboard_content != last_clipboard_content:
# 更新上一次的剪贴板内容
last_clipboard_content = clipboard_content
# 随机数
salt = random.randint(32768, 65536)
# 签名
sign = appid + clipboard_content + str(salt) + secretKey
sign = hashlib.md5(sign.encode()).hexdigest()
# 百度翻译 API 地址
url = 'https://fanyi-api.baidu.com/api/trans/vip/translate'
try:
# 发送请求
response = requests.get(url, params={
'q': clipboard_content,
'from': 'en', # auto
'to': 'zh',
'appid': appid,
'salt': salt,
'sign': sign
})
# 解析响应
result = response.json()
# 输出翻译结果
print(result['trans_result'][0]['dst'])
except:
print('发生了错误,无法获取翻译结果')
# 休眠 1 秒
time.sleep(1)
这一小节我们调用百度翻译API实现以下功能:
代码实现如下:
import pyperclip
import random
import hashlib
import requests
from tkinter import Tk, Label, StringVar
# 请替换为您的百度翻译 appid
appid = '2022xxxxxx'
# 填写你的百度翻译API密钥
secretKey = '7Bnxxxxxxxx'
# 初始化上一次的剪贴板内容
last_clipboard_content = ''
# 创建窗口
root = Tk()
root.title('熊哩翻译器')
# 创建字符串变量
result_str = StringVar()
# 创建标签
label = Label(root, textvariable=result_str, font=("Arial", 14))
# 使用 config() 函数来设置文本框的宽度和高度
label.config(width=30, height=10)
label.pack()
def translate():
global last_clipboard_content
# 获取当前剪贴板内容
clipboard_content = pyperclip.paste()
# 如果剪贴板内容发生了变化
if clipboard_content != last_clipboard_content:
# 更新上一次的剪贴板内容
last_clipboard_content = clipboard_content
# 随机数
salt = random.randint(32768, 65536)
# 签名
sign = appid + clipboard_content + str(salt) + secretKey
sign = hashlib.md5(sign.encode()).hexdigest()
# 百度翻译 API 地址
url = 'https://fanyi-api.baidu.com/api/trans/vip/translate'
# 发送请求
response = requests.get(url, params={
'q': clipboard_content,
'from': 'en', # auto
'to': 'zh',
'appid': appid,
'salt': salt,
'sign': sign
})
# 解析响应
result = response.json()
# 更新字符串变量的值
result_str.set(result['trans_result'][0]['dst'])
# 延迟一秒后再次执行 translate 函数
root.after(1000, translate)
# 开始循环
translate()
# 进入消息循环
root.mainloop()
在下面代码中,我们在 Tkinter 窗口中添加了一个文本输入框,一个按钮和一个文本框。点击按钮时,会调用百度翻译 API 进行翻译,并将翻译结果显示在文本框中。用户可以多次输入要翻译的英文,并点击按钮进行翻译,翻译结果会不断更新。
import random
import hashlib
import requests
import tkinter as tk
# 创建窗口
root = tk.Tk()
root.title('翻译结果')
# 创建文本输入框,用于输入要翻译的英文
text_input = tk.Entry(root, width=60)
text_input.pack()
# 创建按钮,点击按钮时调用百度翻译 API 进行翻译
def translate():
# 读取文本输入框中的文本
translate_text = text_input.get()
# 调用百度翻译 API 进行翻译
# 替换为你的百度翻译 appid
appid = '2022xxxxx'
# 填写你的百度翻译API密钥
secretKey = '7Bxxxxxxx'
# 随机数
salt = random.randint(32768, 65536)
# 签名
sign = appid + translate_text + str(salt) + secretKey
sign = hashlib.md5(sign.encode()).hexdigest()
# 百度翻译 API 地址
url = 'https://fanyi-api.baidu.com/api/trans/vip/translate'
# 发送请求
response = requests.get(url, params={
'q': translate_text,
'from': 'en', # auto
'to': 'zh',
'appid': appid,
'salt': salt,
'sign': sign
})
# 解析响应
result = response.json()
# 将翻译结果显示在文本框中
text_output.delete(0.0, tk.END)
text_output.insert(tk.END, result['trans_result'][0]['dst'])
button = tk.Button(root, text='翻译', command=translate)
button.pack()
# 创建文本框,用于显示翻译结果
text_output = tk.Text(root)
text_output.pack()
# 运行主循环
root.mainloop()
特别致谢
1. python实现调用百度API批量翻译单词
2. 调用百度API(二)——百度翻译