def game_stats_mon(self): minutes_spawn = request.args.get('minutes_spawn', 10) # Spawn iv = [] noniv = [] sumg = [] sumup = {} data = self._db_stats_reader.get_pokemon_count(minutes_spawn) for dat in data: if dat[2] == 1: iv.append([(self.utc2local(dat[0]) * 1000), dat[1]]) else: noniv.append([(self.utc2local(dat[0]) * 1000), dat[1]]) if (self.utc2local(dat[0]) * 1000) in sumup: sumup[(self.utc2local(dat[0]) * 1000)] += dat[1] else: sumup[(self.utc2local(dat[0]) * 1000)] = dat[1] for dat in sumup: sumg.append([dat, sumup[dat]]) spawn = {'iv': iv, 'noniv': noniv, 'sum': sumg} # good_spawns avg good_spawns = [] data = self._db_stats_reader.get_best_pokemon_spawns() if data is not None: for dat in data: mon = "%03d" % dat[1] monPic = 'asset/pokemon_icons/pokemon_icon_' + mon + '_00.png' monName_raw = (get_raid_boss_cp(dat[1])) monName = i8ln(monName_raw['name']) if self._args.db_method == "rm": lvl = calculate_mon_level(dat[6]) else: lvl = dat[6] good_spawns.append({ 'id': dat[1], 'iv': round(calculate_iv(dat[3], dat[4], dat[5]), 0), 'lvl': lvl, 'cp': dat[7], 'img': monPic, 'name': monName, 'periode': datetime.datetime.fromtimestamp(self.utc2local( dat[2])).strftime(self._datetimeformat) }) stats = {'spawn': spawn, 'good_spawns': good_spawns} return jsonify(stats)
def __prepare_mon_data(self, mon_data): ret = [] for mon in mon_data: if self.__is_in_excluded_area([mon["latitude"], mon["longitude"]]): continue if not self.__args.pokemon_webhook_nonivs \ and mon["pokemon_id"] in self.__IV_MON \ and (mon["individual_attack"] is None): # skipping this mon since IV has not been scanned yet continue mon_payload = { "encounter_id": mon["encounter_id"], "pokemon_id": mon["pokemon_id"], "spawnpoint_id": mon["spawnpoint_id"], "latitude": mon["latitude"], "longitude": mon["longitude"], "disappear_time": mon["disappear_time"], "verified": mon["spawn_verified"], } # get rarity pokemon_rarity = self.__rarity.rarity_by_id( pokemonid=mon["pokemon_id"]) if mon.get("cp_multiplier", None) is not None: mon_payload["cp_multiplier"] = mon["cp_multiplier"] mon_payload["pokemon_level"] = calculate_mon_level( mon["cp_multiplier"]) if mon["form"] is not None and mon["form"] > 0: mon_payload["form"] = mon["form"] if mon["costume"] is not None: mon_payload["costume"] = mon["costume"] if mon["cp"] is not None: mon_payload["cp"] = mon["cp"] if mon["individual_attack"] is not None: mon_payload["individual_attack"] = mon["individual_attack"] if mon["individual_defense"] is not None: mon_payload["individual_defense"] = mon["individual_defense"] if mon["individual_stamina"] is not None: mon_payload["individual_stamina"] = mon["individual_stamina"] if mon["move_1"] is not None: mon_payload["move_1"] = mon["move_1"] if mon["move_2"] is not None: mon_payload["move_2"] = mon["move_2"] if mon.get("height", None) is not None: mon_payload["height"] = mon["height"] if mon["weight"] is not None: mon_payload["weight"] = mon["weight"] if mon["gender"] is not None: mon_payload["gender"] = mon["gender"] if pokemon_rarity is not None: mon_payload["rarity"] = pokemon_rarity if mon["base_catch"] is not None: mon_payload["base_catch"] = mon["base_catch"] mon_payload["great_catch"] = mon["great_catch"] mon_payload["ultra_catch"] = mon["ultra_catch"] if mon["weather_boosted_condition"] is not None \ and mon["weather_boosted_condition"] > 0: if self.__args.quest_webhook_flavor == "default": mon_payload["boosted_weather"] = mon[ "weather_boosted_condition"] if self.__args.quest_webhook_flavor == "poracle": mon_payload["weather"] = mon["weather_boosted_condition"] entire_payload = {"type": "pokemon", "message": mon_payload} ret.append(entire_payload) return ret
def __prepare_mon_data(self, mon_data): ret = [] for mon in mon_data: if self.__is_in_excluded_area([mon["latitude"], mon["longitude"]]): continue mon_payload = { "encounter_id": str(mon["encounter_id"]), "pokemon_id": mon["pokemon_id"], "display_pokemon_id": mon['display_pokemon'], "spawnpoint_id": mon["spawnpoint_id"], "latitude": mon["latitude"], "longitude": mon["longitude"], "disappear_time": mon["disappear_time"], "verified": mon["spawn_verified"], "seen_type": str(mon["seen_type"]) } # get rarity pokemon_rarity = self.__rarity.rarity_by_id( pokemonid=mon["pokemon_id"]) if mon.get("cp_multiplier", None) is not None: mon_payload["cp_multiplier"] = mon["cp_multiplier"] mon_payload["pokemon_level"] = calculate_mon_level( mon["cp_multiplier"]) if mon["form"] is not None and mon["form"] > 0: mon_payload["form"] = mon["form"] if mon["display_form"] is not None and mon["display_form"] > 0: mon_payload["display_form"] = mon["display_form"] if mon["costume"] is not None: mon_payload["costume"] = mon["costume"] if mon["display_costume"] is not None and mon[ "display_costume"] > 0: mon_payload["display_costume"] = mon["display_costume"] if mon["cp"] is not None: mon_payload["cp"] = mon["cp"] if mon["individual_attack"] is not None: mon_payload["individual_attack"] = mon["individual_attack"] if mon["individual_defense"] is not None: mon_payload["individual_defense"] = mon["individual_defense"] if mon["individual_stamina"] is not None: mon_payload["individual_stamina"] = mon["individual_stamina"] if mon["move_1"] is not None: mon_payload["move_1"] = mon["move_1"] if mon["move_2"] is not None: mon_payload["move_2"] = mon["move_2"] if mon.get("height", None) is not None: mon_payload["height"] = mon["height"] if mon["weight"] is not None: mon_payload["weight"] = mon["weight"] if mon["gender"] is not None: mon_payload["gender"] = mon["gender"] if mon["display_gender"] is not None: mon_payload["display_gender"] = mon["display_gender"] if pokemon_rarity is not None: mon_payload["rarity"] = pokemon_rarity if mon["base_catch"] is not None: mon_payload["base_catch"] = mon["base_catch"] mon_payload["great_catch"] = mon["great_catch"] mon_payload["ultra_catch"] = mon["ultra_catch"] if mon["weather_boosted_condition"] is not None \ and mon["weather_boosted_condition"] > 0: if self.__args.quest_webhook_flavor == "default": mon_payload["boosted_weather"] = mon[ "weather_boosted_condition"] if self.__args.quest_webhook_flavor == "poracle": mon_payload["weather"] = mon["weather_boosted_condition"] if mon["seen_type"] in ("nearby_stop", "lure_wild", "lure_encounter"): mon_payload["pokestop_id"] = mon["fort_id"] mon_payload["pokestop_name"] = mon.get("stop_name") mon_payload["pokestop_url"] = mon.get("stop_url") if mon["seen_type"] == "nearby_stop": mon_payload["verified"] = False else: mon_payload["verified"] = True if mon["seen_type"] == "nearby_cell": mon_payload["cell_coords"] = S2Helper.coords_of_cell( mon["cell_id"]) mon_payload["cell_id"] = mon["cell_id"] mon_payload["verified"] = False entire_payload = {"type": "pokemon", "message": mon_payload} ret.append(entire_payload) return ret