一个简单的划词翻译脚本

一个简单的划词翻译脚本

调用百度翻译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 绝对位置}\text{python \{translate.py 绝对位置\}}
translate.py\text 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'
# enter your appid
appid = ''
# enter your secretkey
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('api.fanyi.baidu.com/' + myurl)
    pyperclip.copy(result)
    pyautogui.alert(result, title='Result')
except:
	pass