🧹 Massive Asset Reorganization: Cleaned filenames, removed duplicates, and sorted into UI/Items/Env/Chars/Animals folders.
This commit is contained in:
75
scripts/clean_buildings_folder.py
Normal file
75
scripts/clean_buildings_folder.py
Normal file
@@ -0,0 +1,75 @@
|
||||
import os
|
||||
import shutil
|
||||
import hashlib
|
||||
|
||||
BASE_DIR = os.path.abspath("assets/slike/glavna_referenca")
|
||||
BUILD_DIR = os.path.join(BASE_DIR, "_FOLDER_BUILDINGS")
|
||||
NPC_DIR = os.path.join(BASE_DIR, "_FOLDER_NPC")
|
||||
|
||||
# Keywords that indicate a person/character (not a building)
|
||||
NPC_KEYWORDS = [
|
||||
"npc", "kai", "ana", "gronk", "susi", "player", "liki",
|
||||
"character", "enemy", "zombie", "skeleton", "troll", "warrior",
|
||||
"guard", "merchant", "trader", "baker", "smith", "doctor",
|
||||
"man", "woman", "person", "face", "portrait", "boss"
|
||||
]
|
||||
|
||||
def get_hash(filepath):
|
||||
try:
|
||||
with open(filepath, 'rb') as f:
|
||||
return hashlib.md5(f.read()).hexdigest()
|
||||
except:
|
||||
return None
|
||||
|
||||
def clean_building_folder():
|
||||
if not os.path.exists(BUILD_DIR):
|
||||
print("❌ Buildings folder missing!")
|
||||
return
|
||||
|
||||
print("👷♂️ Inspecting _FOLDER_BUILDINGS...")
|
||||
|
||||
moved_npcs = 0
|
||||
deleted_dupes = 0
|
||||
seen_hashes = {}
|
||||
|
||||
# 1. SCAN
|
||||
for filename in os.listdir(BUILD_DIR):
|
||||
if filename.startswith("."): continue
|
||||
filepath = os.path.join(BUILD_DIR, filename)
|
||||
|
||||
# A) Check if NPC
|
||||
lower = filename.lower()
|
||||
if any(k in lower for k in NPC_KEYWORDS):
|
||||
# It's an impostor! Move to NPC folder
|
||||
dst = os.path.join(NPC_DIR, filename)
|
||||
|
||||
# Handle collision
|
||||
if os.path.exists(dst):
|
||||
name, ext = os.path.splitext(filename)
|
||||
c=1
|
||||
while os.path.exists(os.path.join(NPC_DIR, f"{name}_{c}{ext}")):
|
||||
c+=1
|
||||
dst = os.path.join(NPC_DIR, f"{name}_{c}{ext}")
|
||||
|
||||
shutil.move(filepath, dst)
|
||||
moved_npcs += 1
|
||||
# print(f" 👤 Moved NPC found in buildings: {filename}")
|
||||
continue # Skip hash check since file is gone
|
||||
|
||||
# B) Check Duplicate (MD5)
|
||||
h = get_hash(filepath)
|
||||
if h:
|
||||
if h in seen_hashes:
|
||||
# Duplicate!
|
||||
os.remove(filepath)
|
||||
deleted_dupes += 1
|
||||
# print(f" 🗑️ Deleted duplicate inside buildings: {filename}")
|
||||
else:
|
||||
seen_hashes[h] = filepath
|
||||
|
||||
print(f"✅ CLEANUP REPORT:")
|
||||
print(f" 👤 Moved {moved_npcs} NPC files to _FOLDER_NPC")
|
||||
print(f" 🗑️ Deleted {deleted_dupes} duplicate files in _FOLDER_BUILDINGS")
|
||||
|
||||
if __name__ == "__main__":
|
||||
clean_building_folder()
|
||||
Reference in New Issue
Block a user