import os import shutil # Source of Truth SOURCE_DIR = "/Users/davidkotnik/repos/novafarma/assets/references" BASE_ASSETS_DIR = "/Users/davidkotnik/repos/novafarma/assets" # Define Categories CATEGORIES = { "zombies": ["zombi", "zombie", "undead"], "characters": ["kai", "ana", "ata", "mama", "gronk", "dr_krnic", "character", "npc"], "animals": ["krava", "svinja", "ovca", "kokos", "pes", "susi", "macka", "netopir", "sova", "volk", "medved", "zival", "insekt", "metulj", "mravlja", "cebela", "polz", "dezevnik", "hrosc", "komar", "muha"], "ui": ["ui_", "gumb", "ikona", "okno", "bar", "status", "dnevnik", "inventar", "kazalec"], "items": ["orodje", "kramp", "lopata", "sekira", "motika", "kosa", "mec", "puska", "stikalo", "sod", "bencin", "kanister", "seme", "rastlina", "pridelki", "marihuana", "konoplja", "hrana", "steklenica", "nacrt", "zvitki"], "environment": ["drevo", "trava", "kamen", "grm", "tile", "tla", "pot", "rudnik", "vhod", "megla", "ozadje", "voda", "resource", "zgradba", "hisa", "koca", "sotor", "skedenj", "objekt", "vodnjak", "ograja", "kip", "postelja", "vreca", "miza", "stol", "klop"] } def organize_assets(): # 1. Create Directories for category in CATEGORIES: path = os.path.join(BASE_ASSETS_DIR, category) if not os.path.exists(path): os.makedirs(path) print(f"Created directory: {category}") # 2. Sort Files files = [f for f in os.listdir(SOURCE_DIR) if f.lower().endswith('.png')] print(f"Sorting {len(files)} files from references...") count = 0 for filename in files: src_path = os.path.join(SOURCE_DIR, filename) fname_lower = filename.lower() assigned = False # Check categories in specific order (Zombies first as requested!) # Use lists to prioritize: Zombies > Characters > Animals > UI > Items > Environment priority_order = ["zombies", "characters", "animals", "ui", "items", "environment"] for category in priority_order: keywords = CATEGORIES[category] if any(k in fname_lower for k in keywords): dst_path = os.path.join(BASE_ASSETS_DIR, category, filename) shutil.copy2(src_path, dst_path) # COPY, don't move (keep references safe) # print(f"-> {category}: {filename}") assigned = True count += 1 break if not assigned: # Fallback to 'environment' or 'misc' if unsure? # Let's put in 'environment' as catch-all or create 'misc' dst_path = os.path.join(BASE_ASSETS_DIR, "environment", filename) shutil.copy2(src_path, dst_path) print(f"-> environment (fallback): {filename}") count += 1 print(f"✅ Successfully organized {count} assets into game folders!") if __name__ == "__main__": organize_assets()