Как заставить питон "поймать" момент, когда в буфере обмена появляется картинка?

В двух словах: есть скрипт который извлекает картинку из буфера обмена, затем преобразовывает её в текст (pyteserract) и помещает в буфер обмена уже текст с картинки.

Собственно сам вопрос: как заставить питон отловить момент, когда в буфере обмена появляется картинка, и чтобы он сам начал выполнение скрипта (как обновляется буфер обмена?)

Сейчас у меня стоит всё на горячих клавишах, хотелось бы попробовать без них.

import pytesseract
import keyboard
import time
import os
import win10toast

from PIL import ImageGrab
from PIL import Image

def foo():
    print("                                                      "*10)

    print("               __.....__                              ")
    print("           .-''         '.                            ")
    print("     .|   /     .-''\"--.  `.                     .|   ")
    print("   .' |_ /     /________\   \ ____     _____   .' |_  ")
    print(" .'     ||                  |`.   \  .'    / .'     | ")
    print("'--.  .-'\    .-------------'  `.  `'    .' '--.  .-' ")
    print("   |  |   \    '-.____...---.    '.    .'      |  |   ")
    print("   |  |    `.             .'     .'     `.     |  |   ")
    print("   |  '.'    `''-...... -'     .'  .'`.   `.   |  '.' ")
    print("   |   /                     .'   /    `.   `. |   /  ")
    print("   `'-'                     '----'       '----'`'-'   ")
    print("______________________________________________________")
    print("                                                      ")
    print("                                                      ")
    print("                                                      ")
    
    
    im = ImageGrab.grabclipboard()
    
    image_path = "C:/Windows/Temp"
    im.save(f"{image_path}/TEXT.png")
    
    # time.sleep (1)

    img = Image.open(f"{image_path}/TEXT.png")
    pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

    # custom_config = r'--oem 3 --psm 13'
    text = pytesseract.image_to_string(img, lang="rus")
    print(text)

    pyperclip.copy(text)
    
    os.remove(f"{image_path}/TEXT.png")
    
    print("                                                      "*4)
    print("[INFO] Текст успешно сохранён в буфер обмена.")

keyboard.add_hotkey('Alt + q', foo)
keyboard.wait('Ctrl + Alt + q')

# with open('text.txt', 'a') as f:
#    f.write(text+"\n")

Ответы (1 шт):

Автор решения: tomato-magnet-regulato

Нашел библиотеку magic:

pip install python-magic-bin

Из документации:

import magic
magic.from_file("testdata/test.pdf")
'PDF document, version 1.2'
# recommend using at least the first 2048 bytes, as less can produce incorrect identification
magic.from_buffer(open("testdata/test.pdf", "rb").read(2048))
'PDF document, version 1.2'
magic.from_file("testdata/test.pdf", mime=True)
'application/pdf'

python-magic

О, а ещё можно так:

path = 'C:\\Users\\folder\\c.jpg'
new_f = path.split('.')
print(new_f[-1])

Out : .jpg
→ Ссылка