78 lines
2.5 KiB
Python
78 lines
2.5 KiB
Python
import os
|
|
import shutil
|
|
import hashlib
|
|
|
|
BASE_DIR = os.path.abspath("assets/slike/glavna_referenca")
|
|
NPC_DIR = os.path.join(BASE_DIR, "_FOLDER_NPC")
|
|
BUILD_DIR = os.path.join(BASE_DIR, "_FOLDER_BUILDINGS")
|
|
|
|
BUILD_KEYWORDS = [
|
|
"house", "hut", "home", "shop", "store", "market", "stall", "inn", "tavern",
|
|
"barn", "shed", "silo", "mill", "castle", "tower", "fort", "wall", "gate",
|
|
"temple", "ruin", "shrine", "monument", "building", "structure", "tent",
|
|
"cabin", "shack", "architecture", "gradnja", "objekti", "zgradba", "hisa"
|
|
]
|
|
|
|
def get_hash(filepath):
|
|
try:
|
|
with open(filepath, 'rb') as f:
|
|
return hashlib.md5(f.read()).hexdigest()
|
|
except:
|
|
return None
|
|
|
|
def move_wrong_buildings():
|
|
print("🏚️ Scanning _FOLDER_NPC for misplaced buildings...")
|
|
moved = 0
|
|
if not os.path.exists(NPC_DIR):
|
|
print("❌ NPC Folder not found!")
|
|
return
|
|
|
|
for filename in os.listdir(NPC_DIR):
|
|
if filename.startswith("."): continue
|
|
|
|
# Check if it's a building
|
|
lower = filename.lower()
|
|
if any(k in lower for k in BUILD_KEYWORDS):
|
|
src = os.path.join(NPC_DIR, filename)
|
|
dst = os.path.join(BUILD_DIR, filename)
|
|
|
|
# Use unique name if exists
|
|
if os.path.exists(dst):
|
|
name, ext = os.path.splitext(filename)
|
|
c = 1
|
|
while os.path.exists(os.path.join(BUILD_DIR, f"{name}_{c}{ext}")):
|
|
c += 1
|
|
dst = os.path.join(BUILD_DIR, f"{name}_{c}{ext}")
|
|
|
|
shutil.move(src, dst)
|
|
moved += 1
|
|
# print(f" Moved {filename} -> BUILDINGS")
|
|
|
|
print(f"✅ Moved {moved} misplaced buildings to _FOLDER_BUILDINGS.")
|
|
|
|
def remove_duplicates_in_folder(folder_path):
|
|
print(f"🔍 Removing duplicates in {os.path.basename(folder_path)}...")
|
|
seen_hashes = {}
|
|
deleted = 0
|
|
|
|
for filename in os.listdir(folder_path):
|
|
if filename.startswith("."): continue
|
|
path = os.path.join(folder_path, filename)
|
|
if not os.path.isfile(path): continue
|
|
|
|
h = get_hash(path)
|
|
if h:
|
|
if h in seen_hashes:
|
|
# Duplicate!
|
|
os.remove(path)
|
|
deleted += 1
|
|
else:
|
|
seen_hashes[h] = path
|
|
|
|
print(f"✨ Removed {deleted} duplicates in {os.path.basename(folder_path)}.")
|
|
|
|
if __name__ == "__main__":
|
|
move_wrong_buildings()
|
|
remove_duplicates_in_folder(NPC_DIR)
|
|
remove_duplicates_in_folder(BUILD_DIR)
|