#!/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!")