Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save me-suzy/d6dc842e8dd057935ac014f961aa1270 to your computer and use it in GitHub Desktop.
Save me-suzy/d6dc842e8dd057935ac014f961aa1270 to your computer and use it in GitHub Desktop.
Creeaza mai multe fisiere de 0 bytes cu extensia txt din fisierele pdf 3 BUN.py
import os
def find_missing_pdfs(folder_path):
"""
Identifică exact care fișiere PDF nu au fost procesate și de ce
"""
folder_path = folder_path.replace("\\", "/")
print(f"=== DETECTIV FIȘIERE LIPSĂ ===")
print(f"Director: {folder_path}")
output_dir = os.path.join(folder_path, "Output")
files_txt_path = os.path.join(folder_path, 'files.txt')
# === PASUL 1: Scanează toate fișierele din director ===
print(f"\n=== PASUL 1: SCANARE COMPLETĂ DIRECTOR ===")
try:
all_files_in_dir = os.listdir(folder_path)
print(f"Total fișiere în director: {len(all_files_in_dir)}")
# Filtrează PDF-urile și alte tipuri cu debugging detaliat
pdf_files_detailed = []
suspicious_files = []
other_files = []
for file in all_files_in_dir:
file_lower = file.lower()
if file_lower.endswith('.pdf'):
pdf_files_detailed.append(file)
elif '.pdf' in file_lower:
suspicious_files.append(file)
else:
other_files.append(file)
print(f"Fișiere PDF identificate (terminare .pdf): {len(pdf_files_detailed)}")
print(f"Fișiere suspecte (conțin .pdf dar nu se termină cu .pdf): {len(suspicious_files)}")
print(f"Alte fișiere (non-PDF): {len(other_files)}")
if suspicious_files:
print(f"\n⚠ FIȘIERE SUSPICIOASE:")
for i, file in enumerate(suspicious_files, 1):
print(f" {i}. {repr(file)}")
if other_files:
print(f"\nℹ ALTE FIȘIERE (non-PDF):")
for i, file in enumerate(other_files[:5], 1): # Primele 5
print(f" {i}. {repr(file)}")
if len(other_files) > 5:
print(f" ... și încă {len(other_files) - 5}")
except Exception as e:
print(f"EROARE la scanarea directorului: {str(e)}")
return
# === PASUL 2: Citește files.txt ===
print(f"\n=== PASUL 2: ANALIZA files.txt ===")
files_in_txt = []
if os.path.exists(files_txt_path):
try:
with open(files_txt_path, 'r', encoding='utf-8') as f:
all_lines = [line.strip() for line in f if line.strip()]
print(f"Total linii în files.txt: {len(all_lines)}")
files_in_txt = [f for f in all_lines if f.lower().endswith('.pdf')]
print(f"Linii PDF în files.txt: {len(files_in_txt)}")
non_pdf_lines = [f for f in all_lines if not f.lower().endswith('.pdf')]
print(f"Linii non-PDF în files.txt: {len(non_pdf_lines)}")
if non_pdf_lines:
print(f"Linii non-PDF din files.txt:")
for i, line in enumerate(non_pdf_lines[:5], 1): # Primele 5
print(f" {i}. {repr(line)}")
if len(non_pdf_lines) > 5:
print(f" ... și încă {len(non_pdf_lines) - 5}")
except Exception as e:
print(f"EROARE la citirea files.txt: {str(e)}")
return
else:
print(f"files.txt nu există!")
return
# === PASUL 3: Verifică fișierele TXT ===
print(f"\n=== PASUL 3: ANALIZA FIȘIERE TXT ===")
try:
if os.path.exists(output_dir):
files_in_output = os.listdir(output_dir)
txt_files_in_output = [f for f in files_in_output if f.lower().endswith('.txt')]
print(f"Fișiere TXT în Output: {len(txt_files_in_output)}")
else:
txt_files_in_output = []
print(f"Directorul Output nu există!")
except Exception as e:
print(f"EROARE la scanarea Output: {str(e)}")
txt_files_in_output = []
# === PASUL 4: Comparații detaliate ===
print(f"\n=== PASUL 4: COMPARAȚII DETALIATE ===")
set_pdfs_in_dir = set(pdf_files_detailed)
set_pdfs_in_txt = set(files_in_txt)
# Include suspicious files by extracting base name
suspicious_pdfs = set()
for s_file in suspicious_files:
base_name = s_file[:s_file.lower().index('.pdf') + 4] # Extract up to .pdf
suspicious_pdfs.add(base_name)
set_all_pdfs = set_pdfs_in_dir.union(suspicious_pdfs)
# Diferențele
in_dir_not_in_txt = set_all_pdfs - set_pdfs_in_txt
in_txt_not_in_dir = set_pdfs_in_txt - set_all_pdfs
in_both = set_all_pdfs & set_pdfs_in_txt
print(f"STATISTICI COMPARAȚIE:")
print(f" - PDF-uri în director (inclusiv suspecte): {len(set_all_pdfs)}")
print(f" - PDF-uri în files.txt: {len(set_pdfs_in_txt)}")
print(f" - PDF-uri în ambele: {len(in_both)}")
print(f" - În director dar NU în files.txt: {len(in_dir_not_in_txt)}")
print(f" - În files.txt dar NU în director: {len(in_txt_not_in_dir)}")
# === PASUL 5: Identifică EXACT fișierele lipsă ===
print(f"\n=== PASUL 5: FIȘIERELE LIPSĂ ===")
if in_dir_not_in_txt:
print(f"\n🔍 GĂSITE! {len(in_dir_not_in_txt)} FIȘIERE PDF ÎN DIRECTOR DAR NU ÎN files.txt:")
for i, file in enumerate(sorted(in_dir_not_in_txt), 1):
print(f" {i:2d}. {repr(file)}")
if in_txt_not_in_dir:
print(f"\n📝 {len(in_txt_not_in_dir)} FIȘIERE ÎN files.txt DAR NU ÎN DIRECTOR:")
for i, file in enumerate(sorted(in_txt_not_in_dir), 1):
print(f" {i:2d}. {repr(file)}")
# === PASUL 6: Verifică care TXT-uri lipsesc ===
print(f"\n=== PASUL 6: VERIFICARE TXT-URI LIPSĂ ===")
txt_missing_from_dir = []
for pdf_file in sorted(set_all_pdfs):
txt_file = pdf_file[:-4] + '.txt'
txt_path = os.path.join(output_dir, txt_file)
if not os.path.exists(txt_path):
txt_missing_from_dir.append((pdf_file, txt_file))
print(f"PDF-uri din director fără TXT: {len(txt_missing_from_dir)}")
if txt_missing_from_dir:
print(f"\n📋 FIȘIERE PDF FĂRĂ TXT CORESPUNZĂTOR:")
for i, (pdf_file, txt_file) in enumerate(txt_missing_from_dir, 1):
print(f" {i:2d}. {pdf_file} -> {txt_file}")
if os.path.exists(os.path.join(folder_path, pdf_file)):
print(f" ✓ PDF-ul există în director")
else:
print(f" ✗ PDF-ul nu există în director")
if any(c in '\/:*?"<>|' for c in pdf_file):
print(f" ⚠ Conține caractere interzise: {repr(pdf_file)}")
# === PASUL 7: Încearcă să proceseze fișierele lipsă ===
if in_dir_not_in_txt or txt_missing_from_dir:
print(f"\n=== PASUL 7: PROCESARE AUTOMATĂ FIȘIERE LIPSĂ ===")
print(f"Se încearcă procesarea celor {len(in_dir_not_in_txt) + len(txt_missing_from_dir)} fișiere...")
# Adaugă la files.txt și creează TXT-urile
added_to_txt = 0
created_txt = 0
errors_txt = 0
try:
with open(files_txt_path, 'a', encoding='utf-8') as f:
for pdf_file, _ in txt_missing_from_dir:
if pdf_file in in_dir_not_in_txt:
f.write(pdf_file + '\n')
added_to_txt += 1
print(f"✓ Adăugate {added_to_txt} fișiere la files.txt")
except Exception as e:
print(f"✗ EROARE la adăugarea în files.txt: {str(e)}")
for pdf_file, txt_file in txt_missing_from_dir:
txt_path = os.path.join(output_dir, txt_file)
try:
with open(txt_path, 'w', encoding='utf-8') as f:
pass
created_txt += 1
print(f" ✓ Creat: {txt_file}")
except Exception as e:
errors_txt += 1
print(f" ✗ EROARE la {txt_file}: {str(e)}")
print(f"\n✓ TXT-uri create: {created_txt}")
print(f"✗ Erori: {errors_txt}")
# === RAPORT FINAL ===
print(f"\n{'='*60}")
print(f"=== RAPORT FINAL - REZOLVAREA MISTERULUI ===")
print(f"{'='*60}")
print(f"PDF-uri în director (inclusiv suspecte): {len(set_all_pdfs)}")
print(f"PDF-uri în files.txt inițial: {len(files_in_txt)}")
print(f"TXT-uri în Output: {len(txt_files_in_output)}")
print(f"Diferența identificată: {len(in_dir_not_in_txt)} fișiere PDF nu erau în files.txt")
if len(in_dir_not_in_txt) == (384 - 376):
print(f"🎯 MISTERUL REZOLVAT! Cele {len(in_dir_not_in_txt)} fișiere lipsă au fost identificate și procesate!")
else:
print(f"🤔 Încă sunt diferențe neexplicate... ({384 - len(set_all_pdfs)} fișiere neidentificate)")
# Rulare
if __name__ == "__main__":
folder_path = "g:/De pus AZI PE INTERNET ARCHIVE"
find_missing_pdfs(folder_path)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment