Files
novafarma/execute_simple_rename.py
David Kotnik 3cd262b5d3 🎨 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
2026-01-23 06:26:18 +01:00

159 lines
4.8 KiB
Python

#!/usr/bin/env python3
"""
EXECUTE SIMPLE RENAME - Dejansko preimenuje vse datoteke
"""
import re
import json
from pathlib import Path
from collections import Counter
REFERENCA_DIR = Path("/Users/davidkotnik/repos/novafarma/assets/slike/glavna_referenca")
# Pattern matching (enak kot prej)
PATTERNS = {
'scientist': ['scientist'],
'herbalist': ['herbalist'],
'shepherd': ['shepherd'],
'tracker': ['tracker'],
'dancer': ['dancer'],
'botanist': ['botanist'],
'merchant': ['merchant'],
'priest': ['priest'],
'farmer': ['farmer'],
'guard': ['guard'],
'kai': ['kai'],
'ana': ['ana'],
'gronk': ['gronk'],
'wheat': ['wheat'],
'corn': ['corn', 'koruza'],
'potato': ['potato', 'krompir'],
'carrot': ['carrot', 'korenje'],
'tomato': ['tomato', 'paradiznik'],
'cannabis': ['cannabis', 'konoplja', 'ganja'],
'onion': ['onion', 'cebula'],
'pepper': ['pepper', 'paprika'],
'mushroom': ['mushroom'],
'apple': ['apple', 'jablana'],
'cherry': ['cherry', 'visnja'],
'orange': ['orange', 'pomaranča'],
'pear': ['pear', 'hruška'],
'oak': ['oak'],
'pine': ['pine'],
'house': ['house', 'hisa'],
'barn': ['barn', 'hlev'],
'church': ['church', 'cerkev'],
'school': ['school', 'sola'],
'hospital': ['hospital'],
'fence': ['fence'],
'chest': ['chest'],
'barrel': ['barrel'],
'tent': ['tent'],
'axe': ['axe', 'sekira'],
'zombie': ['zombie', 'zombi'],
'ghost': ['ghost', 'duh'],
}
def smart_categorize(filename):
"""Prepozna kategorijo iz imena"""
filename_lower = filename.lower()
for simple_name, keywords in PATTERNS.items():
for keyword in keywords:
if keyword in filename_lower:
return simple_name
# Default
clean = filename
clean = re.sub(r'^(moje_slike_koncna|src_assets|assets)_', '', clean, flags=re.IGNORECASE)
clean = re.sub(r'_(library|godot|references)_?', '', clean, flags=re.IGNORECASE)
clean = re.sub(r'\d+_', '', clean)
words = re.split(r'[_\-\s]+', clean)
for word in words:
if len(word) > 3:
return word.lower()
return 'unknown'
def execute_rename():
"""Izvrši rename"""
print("🔄 ZAČENJAM PREIMENOVANJE...\n")
all_files = list(REFERENCA_DIR.glob('*.png')) + list(REFERENCA_DIR.glob('*.jpg'))
# Kategoriziraj
categorized = {}
for filepath in all_files:
category = smart_categorize(filepath.stem)
if category not in categorized:
categorized[category] = []
categorized[category].append(filepath)
# Rename
renamed = []
errors = []
for category, files in sorted(categorized.items()):
if len(files) == 1:
old_path = files[0]
new_name = f"{category}{old_path.suffix}"
new_path = REFERENCA_DIR / new_name
try:
if not new_path.exists():
old_path.rename(new_path)
renamed.append((old_path.name, new_name))
else:
errors.append(f"Already exists: {new_name}")
except Exception as e:
errors.append(f"Error: {old_path.name}{e}")
else:
for i, old_path in enumerate(files, 1):
new_name = f"{category}{i}{old_path.suffix}"
new_path = REFERENCA_DIR / new_name
try:
if not new_path.exists():
old_path.rename(new_path)
renamed.append((old_path.name, new_name))
else:
errors.append(f"Already exists: {new_name}")
except Exception as e:
errors.append(f"Error: {old_path.name}{e}")
if i % 100 == 0:
print(f" Obdelanih: {len(renamed)}/{len(all_files)}")
# Poročilo
print("\n" + "=" * 80)
print(" KONČNO POROČILO")
print("=" * 80)
print(f"✅ Uspešno preimenovanih: {len(renamed)}")
print(f"❌ Napak: {len(errors)}")
print("=" * 80)
if errors:
print("\n⚠️ NAPAKE:")
for err in errors[:20]:
print(f" {err}")
if len(errors) > 20:
print(f" ... in še {len(errors) - 20} napak")
# Shrani log
log_file = REFERENCA_DIR / "rename_log.txt"
with open(log_file, 'w', encoding='utf-8') as f:
f.write("SIMPLE RENAME LOG\n")
f.write("=" * 80 + "\n\n")
for old, new in renamed:
f.write(f"{old}{new}\n")
print(f"\n📄 Log shranjen: rename_log.txt")
print(f"\n🎉 PREIMENOVANJE KONČANO!")
if __name__ == "__main__":
print("=" * 80)
print(" EXECUTE SIMPLE RENAME")
print("=" * 80)
execute_rename()