剪贴板自动翻译
这是我常用的工具,调用有道翻译接口,每0.5秒检测剪贴板内容是否改变
import re import requests import win32clipboard as w import win32con import time import pyperclip def getText(): # 读取剪切板 # 打开剪贴板 w.OpenClipboard() # 读取剪贴板的内容 d = w.GetClipboardData(win32con.CF_TEXT) # 关闭剪贴板 w.CloseClipboard() try: return d.decode('utf-8') except: return d.decode('gbk') def setText(aString): # 写入剪切板 w.OpenClipboard() w.EmptyClipboard() w.SetClipboardText(aString) w.CloseClipboard() def translate(content): if len(content) > 4891: ultra_text = "翻译的长度超过限制!!!" return ultra_text try: session = requests.Session() data = {'inputtext': content, 'type': 'AUTO'} headers = {'Content-Type': "application/x-www-form-urlencoded", "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.1 Mobile/15E148 Safari/604.1", } url = "http://m.youdao.com/translate" req = session.post(url, data=data, headers=headers).text pattern = re.compile('translateResult">.*?<li>(.*?)</li>', re.S) ultra_text = re.findall(pattern, req)[0] except: ultra_text = "翻译失败!!!" return ultra_text def main(): ls = '' while True: # 如果剪贴板正在被占用 cs = getText() time.sleep(0.5) if cs and cs != ls: print('准备翻译') content = getText() res = translate(content) setText(res) pyperclip.copy(res) time.sleep(1) ls = res if __name__ == "__main__": main()