Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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