1
0
mirror of synced 2025-02-15 09:52:35 +01:00

ongeki: read music version from the xml

This commit is contained in:
akanyan 2024-12-30 18:31:22 +00:00
parent 0cf41ff389
commit ab64eea5c9

View File

@ -27,6 +27,27 @@ class OngekiReader(BaseReader):
self.logger.error(f"Invalid ongeki version {version}")
exit(1)
def parse_version(self, troot) -> int:
version_ids = {
"1000": OngekiConstants.VER_ONGEKI,
"1005": OngekiConstants.VER_ONGEKI_PLUS,
"1010": OngekiConstants.VER_ONGEKI_SUMMER,
"1015": OngekiConstants.VER_ONGEKI_SUMMER_PLUS,
"1020": OngekiConstants.VER_ONGEKI_RED,
"1025": OngekiConstants.VER_ONGEKI_RED_PLUS,
"1030": OngekiConstants.VER_ONGEKI_BRIGHT,
"1035": OngekiConstants.VER_ONGEKI_BRIGHT_MEMORY,
"1040": OngekiConstants.VER_ONGEKI_BRIGHT_MEMORY
}
node = troot.find("VersionID").find("id")
if node.text not in version_ids:
self.logger.warn(f"Unknown VersionID {node.text}")
return OngekiConstants.VER_ONGEKI_BRIGHT_MEMORY
return version_ids[node.text]
async def read(self) -> None:
data_dirs = []
if self.bin_dir is not None:
@ -44,17 +65,6 @@ class OngekiReader(BaseReader):
async def read_card(self, base_dir: str) -> None:
self.logger.info(f"Reading cards from {base_dir}...")
version_ids = {
"1000": OngekiConstants.VER_ONGEKI,
"1005": OngekiConstants.VER_ONGEKI_PLUS,
"1010": OngekiConstants.VER_ONGEKI_SUMMER,
"1015": OngekiConstants.VER_ONGEKI_SUMMER_PLUS,
"1020": OngekiConstants.VER_ONGEKI_RED,
"1025": OngekiConstants.VER_ONGEKI_RED_PLUS,
"1030": OngekiConstants.VER_ONGEKI_BRIGHT,
"1035": OngekiConstants.VER_ONGEKI_BRIGHT_MEMORY,
}
for root, dirs, files in os.walk(base_dir):
for dir in dirs:
if os.path.exists(f"{root}/{dir}/Card.xml"):
@ -92,11 +102,10 @@ class OngekiReader(BaseReader):
troot.find("ChoKaikaSkillID").find("id").text
)
version = version_ids[troot.find("VersionID").find("id").text]
card_number = troot.find("CardNumberString").text
await self.data.static.put_card(
version,
self.parse_version(troot),
card_id,
name=name,
charaId=chara_id,
@ -151,6 +160,7 @@ class OngekiReader(BaseReader):
title = name.find("str").text
artist = troot.find("ArtistName").find("str").text
genre = troot.find("Genre").find("str").text
version = self.parse_version(troot)
fumens = troot.find("FumenData")
for fumens_data in fumens.findall("FumenData"):
@ -164,7 +174,7 @@ class OngekiReader(BaseReader):
)
await self.data.static.put_chart(
self.version, song_id, chart_id, title, artist, genre, level
version, song_id, chart_id, title, artist, genre, level
)
self.logger.info(f"Added song {song_id} chart {chart_id}")