def _getOnlineAsync(self): try: data = xvmapi.getOnlineUsersCount() if not data: return # typical response: #{ # "EU": [{"players_online":4297,"server":"EU2"},{"players_online":8331,"server":"EU1"}], # "NA": [{"players_online":22740,"server":"303"}], # "ASIA":[{"players_online":6603,"server":"503"},{"players_online":6101,"server":"502"}], # "RU": [{"players_online":14845,"server":"RU8"},{"players_online":8597,"server":"RU2"},{"players_online":9847,"server":"RU1"},{"players_online":3422,"server":"RU3"},{"players_online":11508,"server":"RU6"},{"players_online":6795,"server":"RU5"},{"players_online":3354,"server":"RU4"}] #} data_dict = {} data_region = data.get(self.region, None) if not data_region: return for data_host in data_region: server = data_host['server'] server = self.peripheryIdMap.get(server, server) data_dict[server] = data_host['players_online'] res = [] best_online = 0 for host in (self.hangarHosts if self.hangarSpace.inited else self.loginHosts): best_online = max(best_online, int(data_dict.get(host, 0))) res.append({'cluster': host, 'people_online': data_dict.get(host, self.hangarErrorString if self.hangarSpace.inited else self.loginErrorString)}) if (self.hangarSpace.inited and self.hangarShowTitle) or (not self.hangarSpace.inited and self.loginShowTitle): res.insert(0, {'cluster': '###best_online###', 'people_online': best_online}) # will appear first, key is replaced by localized "Online" except Exception, ex: err('_getOnlineAsync() exception: ' + traceback.format_exc())
def _getOnlineAsync(self): try: data = xvmapi.getOnlineUsersCount() if not data: return # typical response: #{ # "eu": [{"players_online":4297,"server":"EU2"},{"players_online":8331,"server":"EU1"}], # "na": [{"players_online":22740,"server":"NA EAST"},{"players_online":7431,"server":"NA WEST"}], # "asia":[{"players_online":6603,"server":"ASIA"}], # "kr": [{"players_online":868,"server":"KR"}], # "ru": [{"players_online":14845,"server":"RU8"},{"players_online":8597,"server":"RU2"},{"players_online":9847,"server":"RU1"},{"players_online":3422,"server":"RU3"},{"players_online":11508,"server":"RU6"},{"players_online":6795,"server":"RU5"},{"players_online":3354,"server":"RU4"}] #} data_dict = {} for data_host in data.get(self.region, []): server = data_host['server'] if server.startswith('NA '): # API returns "NA EAST" instead of "US East" => can't determine current server server = 'US ' + server[3:].capitalize() if self.region == 'ru' and server == '110': server = 'RU10' data_dict[server] = data_host['players_online'] res = [] best_online = 0 for host in (self.hangarHosts if g_hangarSpace.inited else self.loginHosts): best_online = max(best_online, int(data_dict.get(host, 0))) res.append({'cluster': host, 'people_online': data_dict.get(host, self.hangarErrorString if g_hangarSpace.inited else self.loginErrorString)}) if (g_hangarSpace.inited and self.hangarShowTitle) or (not g_hangarSpace.inited and self.loginShowTitle): res.insert(0, {'cluster': '###best_online###', 'people_online': best_online}) # will appear first, key is replaced by localized "Online" except Exception, ex: err('_getOnlineAsync() exception: ' + traceback.format_exc())