Skip to content

Instantly share code, notes, and snippets.

@me-suzy
Created June 27, 2025 11:00
Show Gist options
  • Save me-suzy/53dc1c53643a1ac382d39b57b1fde63a to your computer and use it in GitHub Desktop.
Save me-suzy/53dc1c53643a1ac382d39b57b1fde63a to your computer and use it in GitHub Desktop.
56787ighjgh.py
import os
def automatic_pdf_txt_processor(folder_path):
"""
Procesează automat toate fișierele PDF:
1. Scanează directorul fizic
2. Actualizează files.txt dacă e necesar
3. Creează toate fișierele TXT lipsă
4. Raportează rezultatele
"""
folder_path = folder_path.replace("\\", "/")
print(f"=== PROCESARE AUTOMATĂ PDF->TXT ===")
print(f"Director: {folder_path}")
output_dir = os.path.join(folder_path, "Output")
files_txt_path = os.path.join(folder_path, 'files.txt')
# Creează directorul Output dacă nu există
os.makedirs(output_dir, exist_ok=True)
# === PASUL 1: Scanează directorul fizic ===
print(f"\n=== PASUL 1: SCANARE DIRECTOR FIZIC ===")
try:
all_files_in_dir = os.listdir(folder_path)
pdf_files_in_dir = [f for f in all_files_in_dir if f.lower().endswith('.pdf')]
print(f"Total fișiere în director: {len(all_files_in_dir)}")
print(f"Fișiere PDF găsite în director: {len(pdf_files_in_dir)}")
except Exception as e:
print(f"EROARE la scanarea directorului: {str(e)}")
return
# === PASUL 2: Verifică files.txt ===
print(f"\n=== PASUL 2: VERIFICARE files.txt ===")
pdf_files_in_txt = []
files_txt_exists = os.path.exists(files_txt_path)
if files_txt_exists:
try:
with open(files_txt_path, 'r', encoding='utf-8') as f:
lines = [line.strip() for line in f.readlines() if line.strip()]
pdf_files_in_txt = [f for f in lines if f.lower().endswith('.pdf')]
print(f"files.txt există - conține {len(pdf_files_in_txt)} fișiere PDF")
except Exception as e:
print(f"EROARE la citirea files.txt: {str(e)}")
pdf_files_in_txt = []
else:
print(f"files.txt nu există - va fi creat")
# === PASUL 3: Identifică diferențele ===
print(f"\n=== PASUL 3: ANALIZA DIFERENȚELOR ===")
set_dir = set(pdf_files_in_dir)
set_txt = set(pdf_files_in_txt)
# Fișiere în director dar NU în files.txt
missing_from_txt = set_dir - set_txt
# Fișiere în files.txt dar NU în director (probabil șterse)
missing_from_dir = set_txt - set_dir
# Fișiere în ambele
in_both = set_dir & set_txt
print(f"Fișiere în ambele locuri: {len(in_both)}")
print(f"Fișiere în director dar NU în files.txt: {len(missing_from_txt)}")
print(f"Fișiere în files.txt dar NU în director: {len(missing_from_dir)}")
# === PASUL 4: Actualizează files.txt automat ===
files_txt_updated = False
if missing_from_txt:
print(f"\n=== PASUL 4: ACTUALIZARE AUTOMATĂ files.txt ===")
print(f"Se adaugă {len(missing_from_txt)} fișiere la files.txt...")
try:
# Adaugă fișierele lipsă la files.txt
with open(files_txt_path, 'a', encoding='utf-8') as f:
for file in sorted(missing_from_txt):
f.write(file + '\n')
print(f"✓ files.txt actualizat cu {len(missing_from_txt)} fișiere noi")
files_txt_updated = True
# Afișează fișierele adăugate
print(f"Fișiere adăugate la files.txt:")
for i, file in enumerate(sorted(missing_from_txt), 1):
print(f" {i:3d}. {file}")
except Exception as e:
print(f"✗ EROARE la actualizarea files.txt: {str(e)}")
else:
print(f"\n=== PASUL 4: files.txt ESTE LA ZI ===")
print(f"Nu sunt fișiere PDF noi de adăugat")
# === PASUL 5: Verifică fișierele TXT existente ===
print(f"\n=== PASUL 5: VERIFICARE FIȘIERE TXT ===")
try:
existing_txt_files = set([f for f in os.listdir(output_dir) if f.lower().endswith('.txt')])
print(f"Fișiere TXT existente în Output: {len(existing_txt_files)}")
# Pentru TOATE fișierele PDF din director, verifică TXT-urile
txt_exists = []
txt_missing = []
for pdf_file in sorted(pdf_files_in_dir):
txt_file = pdf_file[:-4] + '.txt'
txt_path = os.path.join(output_dir, txt_file)
if os.path.exists(txt_path):
txt_exists.append((pdf_file, txt_file))
else:
txt_missing.append((pdf_file, txt_file, txt_path))
print(f"PDF-uri cu TXT existent: {len(txt_exists)}")
print(f"PDF-uri cu TXT LIPSĂ: {len(txt_missing)}")
except Exception as e:
print(f"EROARE la verificarea fișierelor TXT: {str(e)}")
return
# === PASUL 6: Creează automat fișierele TXT lipsă ===
if txt_missing:
print(f"\n=== PASUL 6: CREARE AUTOMATĂ FIȘIERE TXT ===")
print(f"Se creează {len(txt_missing)} fișiere TXT...")
created_count = 0
error_count = 0
for i, (pdf_file, txt_file, txt_path) in enumerate(txt_missing, 1):
try:
with open(txt_path, 'w', encoding='utf-8') as f:
pass # Creează fișier gol
created_count += 1
print(f" {i:3d}. ✓ Creat: {txt_file}")
except Exception as e:
error_count += 1
print(f" {i:3d}. ✗ EROARE: {txt_file} - {str(e)}")
print(f"\n✓ FIȘIERE TXT CREATE: {created_count}")
print(f"✗ ERORI: {error_count}")
else:
print(f"\n=== PASUL 6: TOATE FIȘIERELE TXT EXISTĂ ===")
print(f"Nu sunt fișiere TXT de creat")
# === RAPORT FINAL ===
print(f"\n{'='*60}")
print(f"=== RAPORT FINAL ===")
print(f"{'='*60}")
print(f"\nSTATISTICI GENERALE:")
print(f" - Total fișiere PDF în director: {len(pdf_files_in_dir)}")
print(f" - files.txt actualizat: {'DA' if files_txt_updated else 'NU (era deja la zi)'}")
print(f" - Fișiere TXT create în această rulare: {created_count if txt_missing else 0}")
print(f" - Fișiere TXT care existau deja: {len(txt_exists)}")
if missing_from_dir:
print(f"\n⚠ AVERTISMENT - FIȘIERE ÎN files.txt DAR NU ÎN DIRECTOR:")
print(f" Următoarele {len(missing_from_dir)} fișiere sunt în files.txt dar nu există în director:")
for i, file in enumerate(sorted(missing_from_dir), 1):
print(f" {i:3d}. {file}")
# Afișează câteva exemple din fiecare categorie
if txt_exists:
print(f"\nEXEMPLE FIȘIERE PROCESATE ANTERIOR (primele 5):")
for i, (pdf_file, txt_file) in enumerate(txt_exists[:5], 1):
print(f" {i}. {pdf_file} -> {txt_file}")
if len(txt_exists) > 5:
print(f" ... și încă {len(txt_exists) - 5} fișiere")
if txt_missing and created_count > 0:
print(f"\nFIȘIERE PROCESATE ÎN ACEASTĂ RULARE (primele 10):")
processed_now = [(pdf, txt) for pdf, txt, _ in txt_missing[:10]]
for i, (pdf_file, txt_file) in enumerate(processed_now, 1):
print(f" {i:2d}. {pdf_file} -> {txt_file}")
if len(txt_missing) > 10:
print(f" ... și încă {len(txt_missing) - 10} fișiere")
print(f"\n✓ PROCESARE COMPLETĂ!")
# Rulare automată
if __name__ == "__main__":
folder_path = "g:/De pus AZI PE INTERNET ARCHIVE"
automatic_pdf_txt_processor(folder_path)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment