Skip to content

Instantly share code, notes, and snippets.

@me-suzy
Created May 3, 2025 20:51
Show Gist options
  • Save me-suzy/6915b699152606f0d1a726ce60b97612 to your computer and use it in GitHub Desktop.
Save me-suzy/6915b699152606f0d1a726ce60b97612 to your computer and use it in GitHub Desktop.
Print Screen Manual A+A+S+Enter+q.py
import pyautogui
import time
import keyboard
from PIL import ImageGrab, Image
import os
import numpy as np
# Directorul de ieșire specificat
output_dir = r"d:\3\1111\exe\1"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# Contor pentru paginile capturate
page_counter = 1
# Definirea zonei de captură
print("Vei defini zona de captură. Urmează instrucțiunile:")
print("1. Poziționează mouse-ul în colțul STÂNGA-SUS al zonei și apasă 'a'")
while not keyboard.is_pressed('a'):
time.sleep(0.1)
left, top = pyautogui.position()
print(f"Colțul stânga-sus: ({left}, {top})")
time.sleep(0.5) # Mică pauză
print("2. Acum, poziționează mouse-ul în colțul DREAPTA-JOS al zonei și apasă 'a'")
while not keyboard.is_pressed('a'):
time.sleep(0.1)
right, bottom = pyautogui.position()
print(f"Colțul dreapta-jos: ({right}, {bottom})")
# Verificăm dacă coordonatele sunt valide
if left >= right or top >= bottom:
print("EROARE: Coordonatele nu sunt valide. Colțul stânga-sus trebuie să fie mai în stânga și mai sus decât colțul dreapta-jos.")
print(f"Coordonate actuale: ({left}, {top}) -> ({right}, {bottom})")
exit()
print(f"Zona de captură: ({left}, {top}) -> ({right}, {bottom}), dimensiuni: {right-left}x{bottom-top} pixeli")
# Pregătire pentru a începe captura
print("Poziționează-te pe prima pagină pe care vrei să o capturezi.")
print("Apasă 's' pentru a începe captura sau 'q' pentru a ieși.") ### Tasta "S" StART iar tasta "Q" Quit.
print("După apăsarea 's', prima pagină va fi capturată automat.")
while True:
if keyboard.is_pressed('s'):
break
if keyboard.is_pressed('q'):
print("Ieșire")
exit()
time.sleep(0.1)
# Captură automată a primei pagini imediat după apăsarea 'S'
try:
# Mică pauză pentru a evita detectarea apăsării tastei 's' în captură
time.sleep(0.5)
# Capturează prima pagină
img = ImageGrab.grab(bbox=(left, top, right, bottom))
# Salvează imaginea
img_path = os.path.join(output_dir, f"pagina_{page_counter:04d}.png")
img.save(img_path)
print(f"Prima pagină salvată automat: {img_path}")
# Incrementează contorul de pagini
page_counter += 1
except Exception as e:
print(f"Eroare la capturarea primei pagini: {e}")
print("Continuă captura manuală. Apasă tasta 'Enter' pentru a captura paginile următoare.")
print("Apasă 'q' oricând pentru a opri.")
# Bucla principală de captură pentru paginile următoare
last_capture_time = time.time()
while True:
# Verifică dacă utilizatorul dorește să iasă
if keyboard.is_pressed('q'):
print("Captura oprită manual la pagina", page_counter-1)
break
# Verifică dacă a fost apăsată tasta Enter
if keyboard.is_pressed('enter') and (time.time() - last_capture_time) > 0.5: # Previne capturi duble
last_capture_time = time.time()
try:
# Capturează ecranul în zona definită
img = ImageGrab.grab(bbox=(left, top, right, bottom))
# Salvează imaginea
img_path = os.path.join(output_dir, f"pagina_{page_counter:04d}.png")
img.save(img_path)
print(f"Pagina {page_counter} salvată: {img_path}")
# Incrementează contorul de pagini
page_counter += 1
# Mică pauză pentru a preveni capturi multiple
time.sleep(0.5)
except Exception as e:
print(f"Eroare la capturarea paginii: {e}")
# Mică pauză pentru a reduce utilizarea CPU
time.sleep(0.1)
print("Capturare finalizată!")
print(f"S-au capturat {page_counter-1} pagini în directorul {output_dir}")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment