46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
import argparse
|
|
|
|
from bemani.format import IIDXMusicDB
|
|
|
|
|
|
def main() -> None:
|
|
parser = argparse.ArgumentParser(description="A utility to patch a IIDX music database.")
|
|
parser.add_argument(
|
|
"infile",
|
|
help="Music DB to work with.",
|
|
type=str,
|
|
)
|
|
parser.add_argument(
|
|
"outfile",
|
|
help="Music DB to overwrite.",
|
|
type=str,
|
|
)
|
|
parser.add_argument(
|
|
"--hide-leggendarias",
|
|
help="Hide leggendarias in normal folders.",
|
|
action="store_true",
|
|
)
|
|
args = parser.parse_args()
|
|
|
|
rfp = open(args.infile, "rb")
|
|
data = rfp.read()
|
|
rfp.close()
|
|
|
|
db = IIDXMusicDB(data)
|
|
if args.hide_leggendarias:
|
|
for song in db.songs:
|
|
if song.title[-1:] == "†" or (
|
|
song.difficulties[0] == 0 and song.difficulties[1] == 0 and song.difficulties[2] == 12
|
|
):
|
|
print(f"Patching '{song.title}' to only appear in leggendaria folder!")
|
|
song.folder = 0x5C
|
|
|
|
print("Generating new database file...")
|
|
wfp = open(args.outfile, "wb")
|
|
wfp.write(db.get_new_db())
|
|
wfp.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|