Created
June 27, 2025 11:00
-
-
Save me-suzy/53dc1c53643a1ac382d39b57b1fde63a to your computer and use it in GitHub Desktop.
56787ighjgh.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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