🎨 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:
200
simple_rename.py
Normal file
200
simple_rename.py
Normal file
@@ -0,0 +1,200 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
SIMPLE RENAME - Vse slike dobijo preprosta angleška imena
|
||||
BREZ podčrtajev, samo kaj vidiš!
|
||||
"""
|
||||
|
||||
import re
|
||||
from pathlib import Path
|
||||
from collections import Counter
|
||||
|
||||
REFERENCA_DIR = Path("/Users/davidkotnik/repos/novafarma/assets/slike/glavna_referenca")
|
||||
|
||||
# Pattern matching za prepoznavanje vsebine
|
||||
PATTERNS = {
|
||||
# NPCji
|
||||
'scientist': ['scientist'],
|
||||
'herbalist': ['herbalist'],
|
||||
'shepherd': ['shepherd'],
|
||||
'tracker': ['tracker'],
|
||||
'dancer': ['dancer'],
|
||||
'botanist': ['botanist'],
|
||||
'merchant': ['merchant'],
|
||||
'priest': ['priest'],
|
||||
'farmer': ['farmer'],
|
||||
'guard': ['guard'],
|
||||
'fisherman': ['fisherman'],
|
||||
'hunter': ['hunter'],
|
||||
'miner': ['miner'],
|
||||
'baker': ['baker', 'pek'],
|
||||
'blacksmith': ['blacksmith', 'kovac'],
|
||||
'electrician': ['electrician', 'elektricar', 'tehnik'],
|
||||
'mayor': ['mayor', 'zupan'],
|
||||
'teacher': ['teacher'],
|
||||
|
||||
# Glavni liki
|
||||
'kai': ['kai'],
|
||||
'ana': ['ana'],
|
||||
'gronk': ['gronk'],
|
||||
|
||||
# Rastline/Crops
|
||||
'wheat': ['wheat', 'pšenica'],
|
||||
'corn': ['corn', 'koruza'],
|
||||
'potato': ['potato', 'krompir'],
|
||||
'carrot': ['carrot', 'korenje'],
|
||||
'tomato': ['tomato', 'paradiznik'],
|
||||
'cannabis': ['cannabis', 'konoplja', 'ganja'],
|
||||
'onion': ['onion', 'cebula'],
|
||||
'pepper': ['pepper', 'paprika'],
|
||||
'strawberry': ['strawberry', 'jagoda'],
|
||||
'mushroom': ['mushroom', 'goba'],
|
||||
|
||||
# Drevesa
|
||||
'apple': ['apple', 'jablana'],
|
||||
'cherry': ['cherry', 'visnja'],
|
||||
'orange': ['orange', 'pomaranča'],
|
||||
'pear': ['pear', 'hruška'],
|
||||
'peach': ['peach', 'breskev'],
|
||||
'plum': ['plum', 'sliva'],
|
||||
'oak': ['oak'],
|
||||
'pine': ['pine'],
|
||||
|
||||
# Stavbe
|
||||
'house': ['house', 'hisa'],
|
||||
'barn': ['barn', 'hlev'],
|
||||
'church': ['church', 'cerkev'],
|
||||
'school': ['school', 'sola'],
|
||||
'shop': ['shop', 'store'],
|
||||
'tavern': ['tavern', 'inn'],
|
||||
'hospital': ['hospital'],
|
||||
|
||||
# Objekti
|
||||
'fence': ['fence', 'ograja'],
|
||||
'gate': ['gate', 'vrata'],
|
||||
'bench': ['bench', 'klop'],
|
||||
'chest': ['chest', 'skrinja'],
|
||||
'barrel': ['barrel', 'sod'],
|
||||
'campfire': ['campfire', 'tabor'],
|
||||
'tent': ['tent', 'šotor'],
|
||||
|
||||
# Orodja
|
||||
'axe': ['axe', 'sekira'],
|
||||
'hoe': ['hoe', 'motika'],
|
||||
'pickaxe': ['pickaxe', 'kramp'],
|
||||
'scythe': ['scythe', 'kosa'],
|
||||
'shovel': ['shovel', 'lopata'],
|
||||
'watering': ['watering'],
|
||||
|
||||
# Sovražniki
|
||||
'zombie': ['zombie', 'zombi'],
|
||||
'ghost': ['ghost', 'duh'],
|
||||
'skeleton': ['skeleton', 'okostnjak'],
|
||||
|
||||
# UI
|
||||
'button': ['button', 'gumb'],
|
||||
'panel': ['panel'],
|
||||
'icon': ['icon', 'ikona'],
|
||||
'frame': ['frame', 'okvir'],
|
||||
|
||||
# Deli/Akcije
|
||||
'walk': ['walk', 'hoja'],
|
||||
'idle': ['idle', 'mirovanje'],
|
||||
'action': ['action', 'akcija'],
|
||||
'portrait': ['portrait', 'portret'],
|
||||
'reference': ['reference', 'referenca'],
|
||||
}
|
||||
|
||||
def smart_categorize(filename):
|
||||
"""Pametno prepozna kaj je na sliki iz imena"""
|
||||
filename_lower = filename.lower()
|
||||
|
||||
# Najprej poskusi najti direktno ujemanje
|
||||
for simple_name, keywords in PATTERNS.items():
|
||||
for keyword in keywords:
|
||||
if keyword in filename_lower:
|
||||
return simple_name
|
||||
|
||||
# Default - vzami prvo besedo iz imena
|
||||
# Odstrani prefixe
|
||||
clean = filename
|
||||
clean = re.sub(r'^(moje_slike_koncna|src_assets|assets)_', '', clean, flags=re.IGNORECASE)
|
||||
clean = re.sub(r'^(liki|okolje|predmeti|ostalo)_', '', clean, flags=re.IGNORECASE)
|
||||
clean = re.sub(r'_?(library|godot|references|sprites)_?', '', clean, flags=re.IGNORECASE)
|
||||
clean = re.sub(r'\d+_', '', clean) # Odstrani številke na začetku
|
||||
|
||||
# Vzami prvo smiselno besedo
|
||||
words = re.split(r'[_\-\s]+', clean)
|
||||
for word in words:
|
||||
if len(word) > 3 and word.lower() not in ['moje', 'slike', 'koncna', 'assets', 'style']:
|
||||
return word.lower()
|
||||
|
||||
return 'unknown'
|
||||
|
||||
def generate_rename_map():
|
||||
"""Generira rename map za vse slike"""
|
||||
print("🔄 GENERIRAM PREPROSTA IMENA...\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)
|
||||
|
||||
# Generiraj nova imena
|
||||
rename_map = {}
|
||||
|
||||
for category, files in sorted(categorized.items()):
|
||||
if len(files) == 1:
|
||||
# Samo ena slika te kategorije
|
||||
new_name = f"{category}.png"
|
||||
else:
|
||||
# Več slik - dodaj številke
|
||||
for i, filepath in enumerate(files, 1):
|
||||
new_name = f"{category}{i}.png"
|
||||
rename_map[filepath] = new_name
|
||||
continue
|
||||
|
||||
rename_map[files[0]] = new_name
|
||||
|
||||
print(f"✅ Generiral {len(rename_map)} imen\n")
|
||||
|
||||
# Poročilo
|
||||
print("📊 KATEGORIJE:")
|
||||
for category in sorted(categorized.keys(), key=lambda x: len(categorized[x]), reverse=True)[:20]:
|
||||
count = len(categorized[category])
|
||||
if count > 1:
|
||||
print(f" {category}: {count} slik → {category}1.png, {category}2.png, ...")
|
||||
else:
|
||||
print(f" {category}: 1 slika → {category}.png")
|
||||
|
||||
return rename_map
|
||||
|
||||
def preview_renames(rename_map, n=30):
|
||||
"""Pokaži preview prvih N preimenovanj"""
|
||||
print(f"\n📝 PREVIEW PRVIH {n} PREIMENOVANJ:")
|
||||
print("=" * 100)
|
||||
|
||||
for i, (old_path, new_name) in enumerate(list(rename_map.items())[:n], 1):
|
||||
old_name = old_path.name
|
||||
print(f"{i:3d}. {old_name:60s} → {new_name}")
|
||||
|
||||
if len(rename_map) > n:
|
||||
print(f"... in še {len(rename_map) - n} drugih")
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("=" * 100)
|
||||
print(" SMART SIMPLE RENAME - Preprosta angleška imena")
|
||||
print("=" * 100)
|
||||
|
||||
rename_map = generate_rename_map()
|
||||
preview_renames(rename_map, 50)
|
||||
|
||||
print("\n" + "=" * 100)
|
||||
print(f"✅ PRIPRAVLJENO: {len(rename_map)} preimenovanj")
|
||||
print("=" * 100)
|
||||
print("\n💡 NASLEDNJI KORAK:")
|
||||
print(" Če je preview OK, izvršim rename!")
|
||||
Reference in New Issue
Block a user