51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
|
from PIL import Image, ImageTk, ImageGrab
|
||
|
from datetime import datetime
|
||
|
from server import start_server
|
||
|
import requests
|
||
|
import argparse
|
||
|
import base64
|
||
|
import webbrowser
|
||
|
import tkinter.font
|
||
|
import pytesseract, clipboard, tkinter as tk
|
||
|
|
||
|
formatted_date = datetime.today().strftime('Screenshot from %Y-%m-%d %H-%M-%S')
|
||
|
|
||
|
parser = argparse.ArgumentParser("screenshot-magic")
|
||
|
parser.add_argument("--server", help="Run server", type=bool, default=False)
|
||
|
args = parser.parse_args()
|
||
|
|
||
|
if args.server == True:
|
||
|
start_server(addr="0.0.0.0", port=8080)
|
||
|
|
||
|
def store_ocr_to_clipboard():
|
||
|
clipboard.copy(ocr)
|
||
|
return
|
||
|
|
||
|
def push_image_to_server():
|
||
|
im.save(f"./screenshots/{formatted_date}.png")
|
||
|
with open(f"./screenshots/{formatted_date}.png", "rb") as file:
|
||
|
encoded = base64.b64encode(file.read())
|
||
|
res = requests.post(url="http://localhost:8080/", data=encoded)
|
||
|
webbrowser.open(res.text)
|
||
|
return
|
||
|
|
||
|
im = ImageGrab.grab()
|
||
|
ocr = pytesseract.image_to_string(im)
|
||
|
|
||
|
im.thumbnail((1080, 720))
|
||
|
|
||
|
window = tk.Tk()
|
||
|
noto20 = tk.font.Font(family="Noto Sans", size = 20, weight="normal")
|
||
|
|
||
|
im_widget = ImageTk.PhotoImage(im)
|
||
|
panel = tk.Label(window, image = im_widget)
|
||
|
panel.pack(side = "bottom", fill = "both", expand = "yes")
|
||
|
|
||
|
ocr_to_clipboard_btn = tk.Button(window, text="Guardar OCR a clipboard", command=store_ocr_to_clipboard, font=noto20)
|
||
|
push_image_to_server_btn = tk.Button(window, text="Cargar imagen a servidor", command=push_image_to_server, font=noto20)
|
||
|
|
||
|
ocr_to_clipboard_btn.pack()
|
||
|
push_image_to_server_btn.pack()
|
||
|
|
||
|
window.mainloop()
|
||
|
im.save(f"./screenshots/{formatted_date}.png")
|