Skip to content

Instantly share code, notes, and snippets.

@me-suzy
Last active June 27, 2025 10:57
Show Gist options
  • Save me-suzy/751ec31b1b085d33a8db61e65f3923b3 to your computer and use it in GitHub Desktop.
Save me-suzy/751ec31b1b085d33a8db61e65f3923b3 to your computer and use it in GitHub Desktop.
convert 0 bytes pdf.py
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