nijiiro-toolset/helpers.py
Farewell_ 2a104a12c7 Updated checkDatatables, encryption converts to JSON
checkDatatables has a better doublons detection (now also detects uniqueID doublons)

encryption.py now automatically changes the extension to json and back to bin for datatable files
2023-11-21 11:16:20 +01:00

88 lines
2.2 KiB
Python

import gzip
import json
import os
from encryption import decrypt_file
def isChn():
try:
try:
# Trying to load file for 08.18
json.load(gzip.open("./Data/x64/datatable/musicinfo.bin", "rb"))["items"]
return False
except Exception as error:
# Trying to load file for 32.09 CHN
json.loads(decrypt_file(input_file="./Data/x64/datatable/musicinfo.bin"))[
"items"
]
return True
except Exception as error:
print(error)
print("Couldn't find musicinfo.bin, assuming 08.18")
def loadFile(path: str):
if doesPathExist(path):
try:
if not isChn():
# Loading files for 08.18
return json.load(gzip.open(path, "rb"))["items"]
else:
# Loading files for 32.09 CHN
return json.loads(decrypt_file(input_file=path))["items"]
except Exception as error:
print(error)
print("Couldn't load", path)
return None
else:
print(path, "doesn't exist")
def findKeyInList(list: list, key: str, keyValue, value=None):
for object in list:
try:
if object[key] == keyValue:
if value is not None:
return object[value]
else:
return object
except:
if value is not None:
print(
value
+ " doesn't exist in "
+ str(object)
+ ", are you using the right language ?"
)
exit(0)
if value is not None:
return ""
else:
return None
def findAllObjects(list: list, key: str, keyValue):
templist = []
templist.append(list)
objects = []
for element in templist[0]:
if element[key] == keyValue:
objects.append(element)
return objects
def findDoubloninList(list: list, key: str, keyValue):
if len(findAllObjects(list=list, key=key, keyValue=keyValue)) > 1:
return True
return False
def doesPathExist(path: str):
if os.path.exists(path):
return True
return False