一个简单的划词翻译脚本
调用百度翻译api的划词翻译脚本
- 需求python3,安装库pyperclip和pyautogui
- 去百度翻译开放平台注册appid
- 在下面代码块命名为translate.py并输入appid和secretkey
Windows系统中
- 下载Hotkey Helper
- 配置如下图所示,其中Hotkey选择想要的快捷键,File选择pythonw.exe的绝对位置,Parameter选择translate.py的绝对位置
- 通过鼠标选择文本后,按下快捷键可以快速英汉互译,通过弹窗显示结果,其中汉译英需要满足第一个字是汉字
- 该脚本也会自动复制翻译结果到剪切板中,按ctrl+v也可以显示文本
Linux或Mac系统中
- 自定义快捷键 python {translate.py 绝对位置}
translate.py
import pyperclip
import pyautogui
from http import client
from hashlib import md5
import urllib.parse
import random
import json
pyautogui.hotkey('ctrl', 'c')
sentence = pyperclip.paste()
if sentence[0] >= u'\u4e00' and sentence[0] <= u'\u9fa5':
fromLang = 'auto'
toLang = 'en'
else:
fromLang = 'auto'
toLang = 'zh'
appid = ''
secretKey = ''
myurl = '/api/trans/vip/translate'
salt = random.randint(32768, 65536)
sentence = sentence.replace('\n', ' ')
sign = appid + sentence + str(salt) + secretKey
m1 = md5(sign.encode(encoding='utf-8'))
sign = m1.hexdigest()
myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(sentence) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(salt) + '&sign=' + sign
try:
httpClient = client.HTTPConnection('api.fanyi.baidu.com')
httpClient.request('GET', myurl)
response = httpClient.getresponse()
result = response.read()
result = json.loads(result)['trans_result'][0]['dst']
except:
result = 'Non-networked'
finally:
if httpClient:
httpClient.close()
try:
pyperclip.copy(result)
pyautogui.alert(result, title='Result')
except:
pass