diff --git a/titles/ongeki/read.py b/titles/ongeki/read.py index a804956..98aaf67 100644 --- a/titles/ongeki/read.py +++ b/titles/ongeki/read.py @@ -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}")