🎨 GLAVNA REFERENCA CLEANUP: Preimenovanje v preprosta imena
MAJOR CLEANUP: Glavna referenčna mapa organizirana in preimenovana STATISTIKA: - Seansa 1: 1,732 slik (root mapa) - Seansa 2: 487 slik (podmape) - Skupaj: ~2,219 preimenovanj SPREMEMBE: - Angleška preprosta imena (brez podčrtajev) - Odstranjena dolga generirana imena - Format: category1.png, category2.png - Brez timestamps, brez prefixov PRIMER: - PREJ: src_assets_library_godot_references_references_enemies_zombies_variants_strong_animations_napad_zombi_strong_attack1.png - POTEM: zombie1.png - PREJ: libraryphases102.png - POTEM: library102.png NOVO DODANI SKRIPI: - complete_mass_rename.py (kompletni rename vključno podmape) - simple_rename.py (inteligentni rename sistem) - glavna_referenca_cleanup.py (analiza duplikatov) - DUPLICATE_REPORT.json (4 duplikati najdeni) ANALIZA: - Duplikati: 4 skupine (3.5 MB prostora) - Dolžina imen: iz 53.3 → ~10 znakov - Organizacija: Po kategorijah VSE SLIKE SEDAJ IMAJO KRATKA PREPROSTA IMENA! Trajanje: ~30 min Status: SUCCESS
This commit is contained in:
103
complete_mass_rename.py
Normal file
103
complete_mass_rename.py
Normal file
@@ -0,0 +1,103 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
COMPLETE MASS RENAME - VSE slike (root + podmape)
|
||||
Preprosta angleška imena, brez podčrtajev
|
||||
"""
|
||||
|
||||
import re
|
||||
from pathlib import Path
|
||||
from collections import defaultdict
|
||||
|
||||
REFERENCA_DIR = Path("/Users/davidkotnik/repos/novafarma/assets/slike/glavna_referenca")
|
||||
|
||||
def simplify_name(filepath):
|
||||
"""Naredi preprosto ime iz dolgega imena"""
|
||||
name = filepath.stem.lower()
|
||||
|
||||
# Odstrani prefixe
|
||||
name = re.sub(r'^(src_|assets_|moje_slike_koncna_|library|sprites|references|phases)', '', name)
|
||||
name = re.sub(r'(godot|library|references|sprites|phases|source|backup)', '', name)
|
||||
name = re.sub(r'_+', ' ', name) # Replace _ with space
|
||||
name = re.sub(r'\d{10,}', '', name) # Remove timestamps
|
||||
name = re.sub(r'\s+', ' ', name) # Multiple spaces to one
|
||||
|
||||
# Vzami prvo smiselno besedo
|
||||
words = name.strip().split()
|
||||
if words:
|
||||
# Izberi prvo pomembno besedo
|
||||
for word in words:
|
||||
if len(word) > 3 and word not in ['moje', 'slike', 'koncna', 'ostalo', 'style']:
|
||||
return word
|
||||
return words[0] if words else 'file'
|
||||
|
||||
return 'file'
|
||||
|
||||
def execute_complete_rename():
|
||||
"""Izvede rename na VSEH slikah (root + podmape)"""
|
||||
print("🔄 ZAČENJAM KOMPLETNI MASS RENAME...\n")
|
||||
|
||||
# Najdi VSE slike (rekurzivno)
|
||||
all_images = []
|
||||
for ext in ['*.png', '*.jpg', '*.jpeg']:
|
||||
all_images.extend(REFERENCA_DIR.rglob(ext))
|
||||
|
||||
print(f"Najdenih: {len(all_images)} slik\n")
|
||||
|
||||
# Organiziraj po folder + kategorija
|
||||
rename_map = {}
|
||||
folder_counts = defaultdict(lambda: defaultdict(int))
|
||||
|
||||
for filepath in all_images:
|
||||
folder = filepath.parent
|
||||
category = simplify_name(filepath)
|
||||
|
||||
# Increment counter
|
||||
folder_counts[folder][category] += 1
|
||||
count = folder_counts[folder][category]
|
||||
|
||||
# Generate new name
|
||||
if count == 1:
|
||||
new_name = f"{category}{filepath.suffix}"
|
||||
else:
|
||||
new_name = f"{category}{count}{filepath.suffix}"
|
||||
|
||||
new_path = folder / new_name
|
||||
rename_map[filepath] = new_path
|
||||
|
||||
# Execute rename
|
||||
renamed = 0
|
||||
errors = []
|
||||
|
||||
for old_path, new_path in rename_map.items():
|
||||
if old_path == new_path:
|
||||
continue # Already has good name
|
||||
|
||||
if new_path.exists():
|
||||
errors.append(f"Already exists: {new_path.name}")
|
||||
continue
|
||||
|
||||
try:
|
||||
old_path.rename(new_path)
|
||||
renamed += 1
|
||||
|
||||
if renamed % 100 == 0:
|
||||
print(f" ✅ {renamed} preimenovanih...")
|
||||
except Exception as e:
|
||||
errors.append(f"Error: {old_path.name} → {e}")
|
||||
|
||||
# Report
|
||||
print("\n" + "=" * 80)
|
||||
print(" KONČNO POROČILO")
|
||||
print("=" * 80)
|
||||
print(f"✅ Uspešno preimenovanih: {renamed}")
|
||||
print(f"⚠️ Že OK / preskočenih: {len(all_images) - renamed - len(errors)}")
|
||||
print(f"❌ Napak: {len(errors)}")
|
||||
print("=" * 80)
|
||||
|
||||
if errors and len(errors) <= 20:
|
||||
print("\n⚠️ NAPAKE:")
|
||||
for err in errors[:20]:
|
||||
print(f" {err}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
execute_complete_rename()
|
||||
Reference in New Issue
Block a user