看英文PDF的时候,需要一直复制粘贴翻译太烦了,写了个自动检测剪切板并翻译的脚本。
脚本采用了百度的翻译API,免费的额度个人使用足够了,需要注册一下,美中不足的是不能查询音标。
import time import random import json from hashlib import md5 import pyperclip import requests def make_md5(s, encoding='utf-8'): return md5(s.encode(encoding)).hexdigest() def en2cn(query): appid = '你的百度APPID' appkey = '你的百度APPKEY' # For list of language codes, please refer to `https://api.fanyi.baidu.com/doc/21` from_lang = 'en' to_lang = 'zh' endpoint = 'http://api.fanyi.baidu.com' path = '/api/trans/vip/translate' url = endpoint + path salt = random.randint(32768, 65536) sign = make_md5(appid + query + str(salt) + appkey) headers = {'Content-Type': 'application/x-www-form-urlencoded'} payload = {'appid': appid, 'q': query, 'from': from_lang, 'to': to_lang, 'salt': salt, 'sign': sign} r = requests.post(url, params=payload, headers=headers) result = r.json() return result def main(): last_string = pyperclip.paste() print(20*'=') while True: time.sleep(0.2) string = pyperclip.paste() if string != last_string and string != '': output_text = string.replace("\r\n", " ") output_text = output_text.replace("\n", " ") output_text = output_text.replace("\r", " ") result = en2cn(output_text)['trans_result'][0]['dst'] print(result) print(20*'=') # pyperclip.copy(output_text) # 写入剪切板(能通过API翻译的话,就不需要写入剪切板了) last_string = string if __name__ == '__main__': main()