Last active
June 27, 2025 10:57
-
-
Save me-suzy/751ec31b1b085d33a8db61e65f3923b3 to your computer and use it in GitHub Desktop.
convert 0 bytes pdf.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 comprehensive_pdf_txt_analysis(folder_path): | |
""" | |
Analiză completă: compară fișierele PDF din directorul fizic cu cele din files.txt | |
și cu fișierele TXT existente | |
""" | |
folder_path = folder_path.replace("\\", "/") | |
print(f"=== ANALIZĂ COMPREHENSIVĂ PDF->TXT ===") | |
print(f"Folder path: {folder_path}") | |
output_dir = os.path.join(folder_path, "Output") | |
files_txt_path = os.path.join(folder_path, 'files.txt') | |
print(f"Output directory: {output_dir}") | |
print(f"Files.txt path: {files_txt_path}") | |
# === PASUL 1: Scanează directorul fizic pentru PDF-uri === | |
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 în director fizic: {len(pdf_files_in_dir)}") | |
# Verifică specific fișierul menționat | |
target_file = "Auster, Paul - Sunset Park.pdf" | |
if target_file in pdf_files_in_dir: | |
print(f"✓ GĂSIT în director fizic: {target_file}") | |
else: | |
print(f"✗ NU GĂSIT în director fizic: {target_file}") | |
# Caută variante similare | |
print(f"Căutare variante similare pentru 'Auster':") | |
for f in pdf_files_in_dir: | |
if 'auster' in f.lower(): | |
print(f" Găsit: {repr(f)}") | |
except Exception as e: | |
print(f"EROARE la scanarea directorului: {str(e)}") | |
return | |
# === PASUL 2: Citește files.txt === | |
print(f"\n=== PASUL 2: CITIRE files.txt ===") | |
pdf_files_in_txt = [] | |
if os.path.exists(files_txt_path): | |
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"Total linii în files.txt: {len(lines)}") | |
print(f"Fișiere PDF în files.txt: {len(pdf_files_in_txt)}") | |
# Verifică fișierul target în files.txt | |
if target_file in pdf_files_in_txt: | |
print(f"✓ GĂSIT în files.txt: {target_file}") | |
else: | |
print(f"✗ NU GĂSIT în files.txt: {target_file}") | |
print(f"Căutare variante similare pentru 'Auster' în files.txt:") | |
for f in pdf_files_in_txt: | |
if 'auster' in f.lower(): | |
print(f" Găsit: {repr(f)}") | |
except Exception as e: | |
print(f"EROARE la citirea files.txt: {str(e)}") | |
return | |
else: | |
print(f"✗ files.txt NU EXISTĂ!") | |
return | |
# === PASUL 3: Comparație între director fizic și files.txt === | |
print(f"\n=== PASUL 3: COMPARAȚIE DIRECTOR vs files.txt ===") | |
set_dir = set(pdf_files_in_dir) | |
set_txt = set(pdf_files_in_txt) | |
# Fișiere în director dar NU în files.txt | |
in_dir_not_in_txt = set_dir - set_txt | |
# Fișiere în files.txt dar NU în director | |
in_txt_not_in_dir = set_txt - set_dir | |
# Fișiere în ambele | |
in_both = set_dir & set_txt | |
print(f"Fișiere în AMBELE (director și files.txt): {len(in_both)}") | |
print(f"Fișiere în DIRECTOR dar NU în files.txt: {len(in_dir_not_in_txt)}") | |
print(f"Fișiere în files.txt dar NU în DIRECTOR: {len(in_txt_not_in_dir)}") | |
if in_dir_not_in_txt: | |
print(f"\n--- FIȘIERE ÎN DIRECTOR DAR NU ÎN files.txt ---") | |
for i, f in enumerate(sorted(in_dir_not_in_txt), 1): | |
print(f"{i:3d}. {f}") | |
if f == target_file: | |
print(f" ^^^ ACESTA ESTE FIȘIERUL CĂUTAT!") | |
if in_txt_not_in_dir: | |
print(f"\n--- FIȘIERE ÎN files.txt DAR NU ÎN DIRECTOR ---") | |
for i, f in enumerate(sorted(in_txt_not_in_dir), 1): | |
print(f"{i:3d}. {f}") | |
# === PASUL 4: Verifică fișierele TXT existente === | |
print(f"\n=== PASUL 4: VERIFICARE FIȘIERE TXT ===") | |
os.makedirs(output_dir, exist_ok=True) | |
try: | |
existing_txt_files = [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 fișierele din director fizic, verifică care au TXT | |
txt_missing_for_dir_files = [] | |
txt_existing_for_dir_files = [] | |
for pdf_file in 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_existing_for_dir_files.append((pdf_file, txt_file)) | |
else: | |
txt_missing_for_dir_files.append((pdf_file, txt_file, txt_path)) | |
print(f"PDF-uri din director cu TXT existent: {len(txt_existing_for_dir_files)}") | |
print(f"PDF-uri din director cu TXT LIPSĂ: {len(txt_missing_for_dir_files)}") | |
# Verifică specific fișierul target | |
target_txt = target_file[:-4] + '.txt' | |
target_txt_path = os.path.join(output_dir, target_txt) | |
print(f"\nVerificare {target_file}:") | |
print(f" PDF în director fizic: {target_file in pdf_files_in_dir}") | |
print(f" PDF în files.txt: {target_file in pdf_files_in_txt}") | |
print(f" TXT path: {target_txt_path}") | |
print(f" TXT exists: {os.path.exists(target_txt_path)}") | |
if txt_missing_for_dir_files: | |
print(f"\n--- FIȘIERE PDF DIN DIRECTOR CARE NU AU TXT ---") | |
for i, (pdf_file, txt_file, txt_path) in enumerate(txt_missing_for_dir_files, 1): | |
marker = " ← TARGET FILE!" if pdf_file == target_file else "" | |
print(f"{i:3d}. {pdf_file} -> {txt_file}{marker}") | |
except Exception as e: | |
print(f"EROARE la verificarea fișierelor TXT: {str(e)}") | |
return | |
# === PASUL 5: Oferă opțiuni de remediere === | |
print(f"\n=== PASUL 5: OPȚIUNI DE REMEDIERE ===") | |
if in_dir_not_in_txt: | |
print(f"\n1. ACTUALIZARE files.txt") | |
print(f" Sunt {len(in_dir_not_in_txt)} fișiere PDF în director care nu sunt în files.txt") | |
response = input(f" Vrei să adaugi aceste fișiere la files.txt? (y/n): ") | |
if response.lower() in ['y', 'yes', 'da']: | |
update_files_txt(folder_path, in_dir_not_in_txt) | |
if txt_missing_for_dir_files: | |
print(f"\n2. CREARE FIȘIERE TXT LIPSĂ") | |
print(f" Sunt {len(txt_missing_for_dir_files)} fișiere PDF care nu au TXT corespunzător") | |
response = input(f" Vrei să creezi aceste fișiere TXT? (y/n): ") | |
if response.lower() in ['y', 'yes', 'da']: | |
create_missing_txt_files(txt_missing_for_dir_files) | |
def update_files_txt(folder_path, new_files): | |
"""Adaugă fișierele lipsă la files.txt""" | |
files_txt_path = os.path.join(folder_path, 'files.txt') | |
try: | |
print(f"Adaugare {len(new_files)} fișiere la files.txt...") | |
with open(files_txt_path, 'a', encoding='utf-8') as f: | |
for file in sorted(new_files): | |
f.write(file + '\n') | |
print(f" + Adăugat: {file}") | |
print(f"✓ files.txt actualizat cu succes!") | |
except Exception as e: | |
print(f"✗ EROARE la actualizarea files.txt: {str(e)}") | |
def create_missing_txt_files(missing_files): | |
"""Creează fișierele TXT lipsă""" | |
created = 0 | |
errors = 0 | |
print(f"Creare {len(missing_files)} fișiere TXT...") | |
for i, (pdf_file, txt_file, txt_path) in enumerate(missing_files, 1): | |
try: | |
with open(txt_path, 'w', encoding='utf-8') as f: | |
pass # Fișier gol | |
print(f"{i:3d}. ✓ Creat: {txt_file}") | |
created += 1 | |
except Exception as e: | |
print(f"{i:3d}. ✗ EROARE la {txt_file}: {str(e)}") | |
errors += 1 | |
print(f"\n✓ REZULTAT: {created} create, {errors} erori") | |
# Rulare | |
if __name__ == "__main__": | |
folder_path = "g:/De pus AZI PE INTERNET ARCHIVE" | |
comprehensive_pdf_txt_analysis(folder_path) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment