hackathon-asl-2024/main.py

51 lines
1.6 KiB
Python
Raw Normal View History

2024-10-10 18:16:23 +00:00
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")