使用 Snipaste 截图翻译
Snipaste 是我最喜欢的截图软件可惜没有截图翻译功能
依赖:Snipaste + Python + requests + pillow + clipboard + keyboard + chardet
百度翻译接口申请不再赘述,请参考自行有关文章
脚本
import os
import json
import random
from hashlib import md5
import requests
import keyboard
import clipboard
from PIL import ImageGrab
# 获取字符串md5
def _get_str_md5(string, encoding='utf-8'):
return md5(string.encode(encoding)).hexdigest()
# 获取文件md5
def _get_file_md5():
with open(photo, 'rb') as f:
image = f.read()
return md5(image).hexdigest()
# 等待键盘
def wait_keyboard():
keyboard.wait(hotkey="Alt+T")
# 保存剪切板图像
def save_image():
image = ImageGrab.grabclipboard()
image.save(photo)
# 语种识别
def lang_discern():
pass
# 发送请求
def send_request():
url = 'http://api.fanyi.baidu.com/api/trans/sdk/picture'
salt = random.randint(32768, 65536)
sign = _get_str_md5(appid + _get_file_md5() + str(salt) + 'Methanol' + 'mac' + appkey)
payload = {'from': fromLang, 'to': toLang, 'appid': appid, 'salt': salt, 'sign': sign, 'cuid': 'Methanol', 'mac': 'mac'}
image = {'image': (os.path.basename(photo), open(photo, 'rb'), "multipart/form-data")}
# 发送请求
response = requests.post(url, params = payload, files = image)
return response.json()
# 解析返回json
def parsing_json(json):
if (json['error_code'] != '0'):
_save_clipboard(json['error_code'] + ' : ' + json['error_msg'])
else:
result = ''
for i in json["data"]["content"]:
result = result + i["dst"] + '\n'
_save_clipboard(result) # 译文
# 字符串保存至剪切板
def _save_clipboard(string):
clipboard.copy(string)
# 按压键盘
def press_keyboard():
keyboard.press('F2') # F2 是作者 Snipaste 设置的贴图键,可以将剪切板的文字贴在屏幕上
if __name__ == '__main__':
toLang = 'zh'
fromLang = 'auto'
appid = 'appid'
appkey = 'appkey'
photo = r'C:\Users\Methanol\Scripts\Public\screen_temp.png'
while True:
wait_keyboard()
save_image()
parsing_json(send_request())
press_keyboard()

浙公网安备 33010602011771号