Created
June 27, 2025 11:27
-
-
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
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 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