From 7560e30498f1eccb432657a321e0d50749eaccdb Mon Sep 17 00:00:00 2001 From: Jennifer Taylor Date: Tue, 7 Sep 2021 17:56:46 +0000 Subject: [PATCH] Make a couple of responses faster by fetching less achievement data. --- bemani/backend/iidx/cannonballers.py | 12 ++---------- bemani/backend/iidx/copula.py | 12 ++---------- bemani/backend/iidx/pendual.py | 12 ++---------- bemani/backend/iidx/rootage.py | 12 ++---------- bemani/backend/iidx/sinobuz.py | 12 ++---------- bemani/backend/iidx/spada.py | 12 ++---------- bemani/backend/iidx/tricoro.py | 12 ++---------- bemani/backend/popn/lapistoria.py | 2 +- bemani/backend/sdvx/heavenlyhaven.py | 5 +---- 9 files changed, 16 insertions(+), 75 deletions(-) diff --git a/bemani/backend/iidx/cannonballers.py b/bemani/backend/iidx/cannonballers.py index 6b591b8..a219639 100644 --- a/bemani/backend/iidx/cannonballers.py +++ b/bemani/backend/iidx/cannonballers.py @@ -949,17 +949,9 @@ class IIDXCannonBallers(IIDXCourse, IIDXBase): ) # Figure out number of players that played this ranking - all_achievements = self.data.local.user.get_all_achievements(self.game, self.version) - num_players = 0 - for [_, ach] in all_achievements: - if ach.type != index: - continue - if ach.id != rank: - continue - num_players = num_players + 1 - + all_achievements = self.data.local.user.get_all_achievements(self.game, self.version, achievementid=rank, achievementtype=index) root = Node.void('IIDX25grade') - root.set_attribute('pnum', str(num_players)) + root.set_attribute('pnum', str(len(all_achievements))) return root def handle_IIDX25pc_common_request(self, request: Node) -> Node: diff --git a/bemani/backend/iidx/copula.py b/bemani/backend/iidx/copula.py index b3a64d3..52c8cea 100644 --- a/bemani/backend/iidx/copula.py +++ b/bemani/backend/iidx/copula.py @@ -875,17 +875,9 @@ class IIDXCopula(IIDXCourse, IIDXBase): ) # Figure out number of players that played this ranking - all_achievements = self.data.local.user.get_all_achievements(self.game, self.version) - num_players = 0 - for [_, ach] in all_achievements: - if ach.type != index: - continue - if ach.id != rank: - continue - num_players = num_players + 1 - + all_achievements = self.data.local.user.get_all_achievements(self.game, self.version, achievementid=rank, achievementtype=index) root = Node.void('IIDX23grade') - root.set_attribute('pnum', str(num_players)) + root.set_attribute('pnum', str(len(all_achievements))) return root # Invalid method diff --git a/bemani/backend/iidx/pendual.py b/bemani/backend/iidx/pendual.py index f69cdc7..3bfe117 100644 --- a/bemani/backend/iidx/pendual.py +++ b/bemani/backend/iidx/pendual.py @@ -863,17 +863,9 @@ class IIDXPendual(IIDXCourse, IIDXBase): ) # Figure out number of players that played this ranking - all_achievements = self.data.local.user.get_all_achievements(self.game, self.version) - num_players = 0 - for [_, ach] in all_achievements: - if ach.type != index: - continue - if ach.id != rank: - continue - num_players = num_players + 1 - + all_achievements = self.data.local.user.get_all_achievements(self.game, self.version, achievementid=rank, achievementtype=index) root = Node.void('IIDX22grade') - root.set_attribute('pnum', str(num_players)) + root.set_attribute('pnum', str(len(all_achievements))) return root # Invalid method diff --git a/bemani/backend/iidx/rootage.py b/bemani/backend/iidx/rootage.py index 2508fc9..ceac34d 100644 --- a/bemani/backend/iidx/rootage.py +++ b/bemani/backend/iidx/rootage.py @@ -802,17 +802,9 @@ class IIDXRootage(IIDXCourse, IIDXBase): ) # Figure out number of players that played this ranking - all_achievements = self.data.local.user.get_all_achievements(self.game, self.version) - num_players = 0 - for [_, ach] in all_achievements: - if ach.type != index: - continue - if ach.id != rank: - continue - num_players = num_players + 1 - + all_achievements = self.data.local.user.get_all_achievements(self.game, self.version, achievementid=rank, achievementtype=index) root = Node.void('IIDX26grade') - root.set_attribute('pnum', str(num_players)) + root.set_attribute('pnum', str(len(all_achievements))) return root def handle_IIDX26pc_common_request(self, request: Node) -> Node: diff --git a/bemani/backend/iidx/sinobuz.py b/bemani/backend/iidx/sinobuz.py index d3b5851..5060f7f 100644 --- a/bemani/backend/iidx/sinobuz.py +++ b/bemani/backend/iidx/sinobuz.py @@ -897,17 +897,9 @@ class IIDXSinobuz(IIDXCourse, IIDXBase): ) # Figure out number of players that played this ranking - all_achievements = self.data.local.user.get_all_achievements(self.game, self.version) - num_players = 0 - for [_, ach] in all_achievements: - if ach.type != index: - continue - if ach.id != rank: - continue - num_players = num_players + 1 - + all_achievements = self.data.local.user.get_all_achievements(self.game, self.version, achievementid=rank, achievementtype=index) root = Node.void('IIDX24grade') - root.set_attribute('pnum', str(num_players)) + root.set_attribute('pnum', str(len(all_achievements))) return root def handle_IIDX24pc_common_request(self, request: Node) -> Node: diff --git a/bemani/backend/iidx/spada.py b/bemani/backend/iidx/spada.py index 1f9e67c..da0a17f 100644 --- a/bemani/backend/iidx/spada.py +++ b/bemani/backend/iidx/spada.py @@ -986,17 +986,9 @@ class IIDXSpada(IIDXBase): ) # Figure out number of players that played this ranking - all_achievements = self.data.local.user.get_all_achievements(self.game, self.version) - num_players = 0 - for [_, ach] in all_achievements: - if ach.type != index: - continue - if ach.id != rank: - continue - num_players = num_players + 1 - + all_achievements = self.data.local.user.get_all_achievements(self.game, self.version, achievementid=rank, achievementtype=index) root = Node.void('IIDX21grade') - root.set_attribute('pnum', str(num_players)) + root.set_attribute('pnum', str(len(all_achievements))) return root # Invalid method diff --git a/bemani/backend/iidx/tricoro.py b/bemani/backend/iidx/tricoro.py index b616964..99344fe 100644 --- a/bemani/backend/iidx/tricoro.py +++ b/bemani/backend/iidx/tricoro.py @@ -962,17 +962,9 @@ class IIDXTricoro(IIDXBase): ) # Figure out number of players that played this ranking - all_achievements = self.data.local.user.get_all_achievements(self.game, self.version) - num_players = 0 - for [_, ach] in all_achievements: - if ach.type != index: - continue - if ach.id != rank: - continue - num_players = num_players + 1 - + all_achievements = self.data.local.user.get_all_achievements(self.game, self.version, achievementid=rank, achievementtype=index) root = Node.void('grade') - root.set_attribute('pnum', str(num_players)) + root.set_attribute('pnum', str(len(all_achievements))) return root # Invalid method diff --git a/bemani/backend/popn/lapistoria.py b/bemani/backend/popn/lapistoria.py index ab0c05e..7dfbee7 100644 --- a/bemani/backend/popn/lapistoria.py +++ b/bemani/backend/popn/lapistoria.py @@ -451,7 +451,7 @@ class PopnMusicLapistoria(PopnMusicBase): ) # Now, attempt to calculate ranking for this user for this run. - all_courses = self.data.local.user.get_all_achievements(self.game, self.version, course_id, "course") + all_courses = self.data.local.user.get_all_achievements(self.game, self.version, achievementid=course_id, achievementtype="course") global_ranking = sorted(all_courses, key=lambda entry: entry[1].data.get_int('total_score'), reverse=True) pref_ranking = [c for c in global_ranking if c[1].data.get_int('pref') == pref] local_ranking = [c for c in global_ranking if c[1].data.get_int('lid') == machine.arcade] diff --git a/bemani/backend/sdvx/heavenlyhaven.py b/bemani/backend/sdvx/heavenlyhaven.py index f9a5d29..3ab3e9a 100644 --- a/bemani/backend/sdvx/heavenlyhaven.py +++ b/bemani/backend/sdvx/heavenlyhaven.py @@ -3325,7 +3325,7 @@ class SoundVoltexHeavenlyHaven( skill_course = Node.void('skill_course') game.add_child(skill_course) - achievements = self.data.local.user.get_all_achievements(self.game, self.version) + achievements = self.data.local.user.get_all_achievements(self.game, self.version, achievementtype="course") courserates: Dict[Tuple[int, int], Dict[str, int]] = {} def getrates(season_id: int, course_id: int) -> Dict[str, int]: @@ -3339,9 +3339,6 @@ class SoundVoltexHeavenlyHaven( } for _, achievement in achievements: - if achievement.type != 'course': - continue - course_id = achievement.id % 100 season_id = int(achievement.id / 100) rate = getrates(season_id, course_id)