Пример #1
0
    def getDefaults():
        # Allocate for 4 default requests
        data = [
            None,
        ] * 4

        # Create Egg request
        data[0] = Request_pb2.Request(
            request_type=RequestType_pb2.GET_HATCHED_EGGS)

        # Create Inventory Request
        data[1] = Request_pb2.Request(
            request_type=RequestType_pb2.GET_INVENTORY,
            request_message=GetInventoryMessage_pb2.GetInventoryMessage(
                last_timestamp_ms=0).SerializeToString())

        # Create Badge request
        data[2] = Request_pb2.Request(
            request_type=RequestType_pb2.CHECK_AWARDED_BADGES)

        # Create Settings request
        data[3] = Request_pb2.Request(
            request_type=RequestType_pb2.DOWNLOAD_SETTINGS,
            request_message=DownloadSettingsMessage_pb2.
            DownloadSettingsMessage(
                hash="4a2e9bc330dae60e7b74fc85b98868ab4700802e"
            ).SerializeToString())

        return data
Пример #2
0
    def catchPokemon(self,
                     pokemon,
                     pokeball=items.POKE_BALL,
                     normalized_reticle_size=1.950,
                     hit_pokemon=True,
                     spin_modifier=0.850,
                     normalized_hit_position=1.0):

        # Create request
        payload = [
            Request.Request(
                request_type=RequestType.CATCH_POKEMON,
                request_message=CatchPokemonMessage.CatchPokemonMessage(
                    encounter_id=pokemon.encounter_id,
                    pokeball=pokeball,
                    normalized_reticle_size=normalized_reticle_size,
                    spawn_point_id=pokemon.spawn_point_id,
                    hit_pokemon=hit_pokemon,
                    spin_modifier=spin_modifier,
                    normalized_hit_position=normalized_hit_position).
                SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload)

        # Parse
        self._state.catch.ParseFromString(res.returns[0])

        # Return everything
        return self._state.catch
Пример #3
0
    def getMapObjects(self, radius=10):
        # Work out location details
        cells = self.location.getCells(radius)
        latitude, longitude, _ = self.getCoordinates()
        timestamps = [
            0,
        ] * len(cells)

        # Create request
        payload = [
            Request_pb2.Request(
                request_type=RequestType_pb2.GET_MAP_OBJECTS,
                request_message=GetMapObjectsMessage_pb2.GetMapObjectsMessage(
                    cell_id=cells,
                    since_timestamp_ms=timestamps,
                    latitude=latitude,
                    longitude=longitude).SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload)

        # Parse
        self._state.mapObjects.ParseFromString(res.returns[0])

        # Return everything
        return self._state.mapObjects
Пример #4
0
    def createApiEndpoint(self):
        payload = []
        msg = Request_pb2.Request(request_type=RequestType_pb2.GET_PLAYER)
        payload.append(msg)
        req = self.wrapInRequest(payload)
        res = self.request(req, API_URL)
        if res is None:
            logging.critical('Servers seem to be busy. Exiting.')
            raise Exception('Could not connect to servers')

        return res.api_url
Пример #5
0
    def getProfile(self):
        # Create profile request
        payload = [Request.Request(request_type=RequestType.GET_PLAYER)]

        # Send
        res = self.wrapAndRequest(payload)

        # Parse
        self._state.profile.ParseFromString(res.returns[0])

        # Return everything
        return self._state.profile
Пример #6
0
def collect_reward(session):
    profile = session.getProfile()
    next_collect = profile.player_data.daily_bonus.next_defender_bonus_collect_timestamp_ms
    next_collect = datetime.fromtimestamp(next_collect / 1000)
    now = datetime.now()
    if next_collect > now:
        sleep_seconds = int((next_collect - now).total_seconds())
        sleep_seconds += randint(60, 60 * 17)
        print 'Reward collect time is {}, sleeping for {} seconds'.format(
            next_collect, sleep_seconds)
        time.sleep(sleep_seconds)
    payload = [
        Request.Request(
            request_type=RequestType.COLLECT_DAILY_DEFENDER_BONUS, )
    ]
    session.wrapAndRequest(payload, defaults=False)
Пример #7
0
    def useXpBoost(self):

        payload = [
            Request.Request(
                request_type=RequestType.USE_ITEM_XP_BOOST,
                request_message=UseItemXpBoostMessage.UseItemXpBoostMessage(
                    item_id=items.LUCKY_EGG).SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload, defaults=False)

        # Parse
        self._state.xpBoost.ParseFromString(res.returns[0])

        # Return everything
        return self._state.xpBoost
Пример #8
0
    def getLevelUp(self, newLevel):

        payload = [
            Request.Request(
                request_type=RequestType.LEVEL_UP_REWARDS,
                request_message=LevelUpRewardsMessage.LevelUpRewardsMessage(
                    level=newLevel).SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload, defaults=False)

        # Parse
        self._state.levelUp.ParseFromString(res.returns[0])

        # Return everything
        return self._state.levelUp
Пример #9
0
    def releasePokemon(self, pokemon):

        payload = [
            Request.Request(
                request_type=RequestType.RELEASE_POKEMON,
                request_message=ReleasePokemonMessage.ReleasePokemonMessage(
                    pokemon_id=pokemon.id).SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload, defaults=False)

        # Parse
        self._state.release.ParseFromString(res.returns[0])

        # Return everything
        return self._state.release
Пример #10
0
    def evolvePokemon(self, pokemon):

        payload = [
            Request.Request(
                request_type=RequestType.EVOLVE_POKEMON,
                request_message=EvolvePokemonMessage.EvolvePokemonMessage(
                    pokemon_id=pokemon.id).SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload)

        # Parse
        self._state.evolve.ParseFromString(res.returns[0])

        # Return everything
        return self._state.evolve
Пример #11
0
    def setPlayerTeam(self, team):

        # Create request
        payload = [
            Request_pb2.Request(
                request_type=RequestType_pb2.SETPLAYERTEAMMESSAGE,
                request_message=SetPlayerTeamMessage_pb2.SetPlayerTeamMessage(
                    team=team).SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload, defaults=False)

        # Parse
        self._state.playerTeam.ParseFromString(res.returns[0])

        # Return everything
        return self._state.playerTeam
Пример #12
0
    def nicknamePokemon(self, pokemon, nickname):
        # Create request
        payload = [
            Request_pb2.Request(
                request_type=RequestType_pb2.NICKNAME_POKEMON,
                request_message=NicknamePokemonMessage_pb2.
                NicknamePokemonMessage(pokemon_id=pokemon.id,
                                       nickname=nickname).SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload)

        # Parse
        self._state.nickname.ParseFromString(res.returns[0])

        # Return everything
        return self._state.nickname
Пример #13
0
    def upgradePokemon(self, pokemon):

        # Create request
        payload = [
            Request.Request(
                request_type=RequestType.UPGRADE_POKEMON,
                request_message=UpgradePokemonMessage.UpgradePokemonMessage(
                    pokemon_id=pokemon.id).SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload, defaults=False)

        # Parse
        self._state.upgradePokemon.ParseFromString(res.returns[0])

        # Return everything
        return self._state.upgradePokemon
Пример #14
0
    def setEgg(self, item, pokemon):

        # Create request
        payload = [
            Request.Request(request_type=RequestType.USE_ITEM_EGG_INCUBATOR,
                            request_message=UseItemEggIncubatorMessage.
                            UseItemEggIncubatorMessage(
                                item_id=item.id,
                                pokemon_id=pokemon.id).SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload)

        # Parse
        self._state.incubator.ParseFromString(res.returns[0])

        # Return everything
        return self._state.incubator
Пример #15
0
    def recycleItem(self, item_id, count):

        # Create request
        payload = [
            Request_pb2.Request(
                request_type=RequestType_pb2.RECYCLE_INVENTORY_ITEM,
                request_message=RecycleInventoryItemMessage_pb2.
                RecycleInventoryItemMessage(item_id=item_id,
                                            count=count).SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload)

        # Parse
        self._state.recycle.ParseFromString(res.returns[0])

        # Return everything
        return self._state.recycle
Пример #16
0
    def useItemRevive(self, item_id, pokemon):

        # Create request
        payload = [
            Request_pb2.Request(
                request_type=RequestType_pb2.USEITEMREVIVEMESSAGE,
                request_message=UseItemReviveMessage_pb2.UseItemReviveMessage(
                    item_id=item_id,
                    pokemon_id=pokemon.id).SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload, defaults=False)

        # Parse
        self._state.itemRevive.ParseFromString(res.returns[0])

        # Return everything
        return self._state.itemRevive
Пример #17
0
    def useItemCapture(self, item_id, pokemon):

        # Create request
        payload = [
            Request.Request(
                request_type=RequestType.USE_ITEM_CAPTURE,
                request_message=UseItemCaptureMessage.UseItemCaptureMessage(
                    item_id=item_id,
                    encounter_id=pokemon.encounter_id).SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload, defaults=False)

        # Parse
        self._state.itemCapture.ParseFromString(res.returns[0])

        # Return everything
        return self._state.itemCapture
Пример #18
0
    def setFavoritePokemon(self, pokemon, is_favorite):

        # Create Request
        payload = [
            Request.Request(request_type=RequestType.SET_FAVORITE_POKEMON,
                            request_message=SetFavoritePokemonMessage.
                            SetFavoritePokemonMessage(
                                pokemon_id=pokemon.id,
                                is_favorite=is_favorite).SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload, defaults=False)

        # Parse
        self._state.favoritePokemon.ParseFromString(res.returns[0])

        # Return Everything
        return self._state.favoritePokemon
Пример #19
0
    def useItemPotion(self, item_id, pokemon):

        # Create Request
        payload = [
            Request.Request(
                request_type=RequestType.USE_ITEM_POTION,
                request_message=UseItemPotionMessage.UseItemPotionMessage(
                    item_id=item_id,
                    pokemon_id=pokemon.id).SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload, defaults=False)

        # Parse
        self._state.itemPotion.ParseFromString(res.returns[0])

        # Return everything
        return self._state.itemPotion
Пример #20
0
    def getFortDetails(self, fort):

        # Create request
        payload = [Request_pb2.Request(
            request_type=RequestType_pb2.FORT_DETAILS,
            request_message=FortDetailsMessage_pb2.FortDetailsMessage(
                fort_id=fort.id,
                latitude=fort.latitude,
                longitude=fort.longitude,
            ).SerializeToString()
        )]

        # Send
        res = self.wrapAndRequest(payload)

        # Parse
        self._state.fortDetails.ParseFromString(res.returns[0])

        # Return everything
        return self._state.fortDetails
Пример #21
0
    def encounterPokemon(self, pokemon):

        # Create request
        payload = [
            Request.Request(request_type=RequestType.ENCOUNTER,
                            request_message=EncounterMessage.EncounterMessage(
                                encounter_id=pokemon.encounter_id,
                                spawn_point_id=pokemon.spawn_point_id,
                                player_latitude=self.location.latitude,
                                player_longitude=self.location.longitude).
                            SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload)

        # Parse
        self._state.encounter.ParseFromString(res.returns[0])

        # Return everything
        return self._state.encounter
Пример #22
0
    def getFortSearch(self, fort):

        # Create request
        payload = [
            Request_pb2.Request(
                request_type=RequestType_pb2.FORT_SEARCH,
                request_message=FortSearchMessage_pb2.FortSearchMessage(
                    fort_id=fort.id,
                    player_latitude=self.location.latitude,
                    player_longitude=self.location.longitude,
                    fort_latitude=fort.latitude,
                    fort_longitude=fort.longitude).SerializeToString())
        ]

        # Send
        res = self.wrapAndRequest(payload)

        # Parse
        self._state.fortSearch.ParseFromString(res.returns[0])

        # Return everything
        return self._state.fortSearch