nitro-docker/assets/translation/clean_bundled.py

56 lines
1.7 KiB
Python

import json
import glob
import os
from fuzzywuzzy import process, fuzz
def normalize_classnames(classname):
return str(classname).replace("_", "").replace(" ", "")
todo_types = ["roomitemtypes", "wallitemtypes"]
orig_furniture_data = {}
# Load the JSON file
with open('../assets/gamedata/FurnitureData.json', 'r', encoding='utf-8') as f:
orig_furniture_data = json.load(f)
orig_product_dict = {}
# Load the JSON file
with open('../assets/gamedata/ProductData.json', 'r', encoding='utf-8') as f:
orig_product_dict = json.load(f)
classnames = set()
for todo_type in todo_types:
for furnitype in orig_furniture_data[todo_type]["furnitype"]:
classnames.add(normalize_classnames(furnitype['classname']))
for product in orig_product_dict["productdata"]["product"]:
classnames.add(normalize_classnames(product['code']))
not_matched = set()
nitro_files = glob.glob("../assets/bundled/furniture/*.nitro")
nitro_files_len = float(len(nitro_files))
for index, nitro in enumerate(nitro_files):
f_name = os.path.basename(nitro)
normalized = normalize_classnames(f_name.rstrip(".nitro"))
matched = False
perc = str(round((float(index + 1) / nitro_files_len) * 100.0, 2)) + "%"
for clazz in classnames.copy():
string_matched = fuzz.ratio(clazz, normalized)
if string_matched > 75:
matched = True
print("Matched", f_name, clazz, perc)
break
if not matched:
not_matched.add(nitro)
print("Unmatched delete", f_name, perc)
os.remove(nitro)
print()
print()
print("-------------------------------")
print(f"Known Classes: {len(classnames)}")
print(f"Unused Files: {len(not_matched)} this result in {int(nitro_files_len - len(not_matched))} remaining files")