Search in sources :

Example 1 with PtcCredentialProvider

use of com.pokegoapi.auth.PtcCredentialProvider in project PokeGOAPI-Java by Grover-c13.

the class CatchPokemonAtAreaExample method main.

/**
	 * Catches a pokemon at an area.
	 *
	 * @param args args
	 */
public static void main(String[] args) {
    OkHttpClient http = new OkHttpClient();
    final PokemonGo api = new PokemonGo(http);
    try {
        HashProvider hasher = ExampleConstants.getHashProvider();
        api.login(new PtcCredentialProvider(http, ExampleConstants.LOGIN, ExampleConstants.PASSWORD), hasher);
        api.setLocation(ExampleConstants.LATITUDE, ExampleConstants.LONGITUDE, ExampleConstants.ALTITUDE);
        // Catch all pokemon in the current area
        catchArea(api);
        MapObjects mapObjects = api.getMap().getMapObjects();
        //Find all pokestops with pokemon nearby
        List<Pokestop> travelPokestops = new ArrayList<>();
        Set<NearbyPokemon> nearby = mapObjects.getNearby();
        for (NearbyPokemon nearbyPokemon : nearby) {
            String fortId = nearbyPokemon.getFortId();
            //Check if nearby pokemon is near a pokestop
            if (fortId != null && fortId.length() > 0) {
                //Find the pokestop with the fort id of the nearby pokemon
                Pokestop pokestop = mapObjects.getPokestop(fortId);
                if (pokestop != null && !travelPokestops.contains(pokestop)) {
                    travelPokestops.add(pokestop);
                }
            }
        }
        //Sort from closest to farthest
        Collections.sort(travelPokestops, new Comparator<Pokestop>() {

            @Override
            public int compare(Pokestop primary, Pokestop secondary) {
                double lat = api.getLatitude();
                double lng = api.getLongitude();
                double distance1 = MapUtil.distFrom(primary.getLatitude(), primary.getLongitude(), lat, lng);
                double distance2 = MapUtil.distFrom(secondary.getLatitude(), secondary.getLongitude(), lat, lng);
                return Double.compare(distance1, distance2);
            }
        });
        for (Pokestop pokestop : travelPokestops) {
            Point destination = new Point(pokestop.getLatitude(), pokestop.getLongitude());
            //Use the current player position as the source and the pokestop position as the destination
            //Travel to Pokestop at 20KMPH
            Path path = new Path(api.getPoint(), destination, 20.0);
            System.out.println("Traveling to " + destination + " at 20KMPH!");
            path.start(api);
            try {
                while (!path.isComplete()) {
                    //Calculate the desired intermediate point for the current time
                    Point point = path.calculateIntermediate(api);
                    //Set the API location to that point
                    api.setLatitude(point.getLatitude());
                    api.setLongitude(point.getLongitude());
                    //Sleep for 2 seconds before setting the location again
                    Thread.sleep(2000);
                }
            } catch (InterruptedException e) {
                break;
            }
            System.out.println("Finished traveling to pokestop, catching pokemon.");
            catchArea(api);
        }
    } catch (NoSuchItemException | RequestFailedException e) {
        Log.e("Main", "An exception occurred while running example: ", e);
    }
}
Also used : Path(com.pokegoapi.util.path.Path) PtcCredentialProvider(com.pokegoapi.auth.PtcCredentialProvider) OkHttpClient(okhttp3.OkHttpClient) ArrayList(java.util.ArrayList) Point(com.pokegoapi.api.map.Point) MapObjects(com.pokegoapi.api.map.MapObjects) NoSuchItemException(com.pokegoapi.exceptions.NoSuchItemException) RequestFailedException(com.pokegoapi.exceptions.request.RequestFailedException) PokemonGo(com.pokegoapi.api.PokemonGo) Pokestop(com.pokegoapi.api.map.fort.Pokestop) HashProvider(com.pokegoapi.util.hash.HashProvider) NearbyPokemon(com.pokegoapi.api.map.pokemon.NearbyPokemon)

Example 2 with PtcCredentialProvider

use of com.pokegoapi.auth.PtcCredentialProvider in project PokeGOAPI-Java by Grover-c13.

the class FightGymExample method main.

/**
	 * Fights gyms in the nearby area.
	 */
public static void main(String[] args) {
    OkHttpClient http = new OkHttpClient();
    final PokemonGo api = new PokemonGo(http);
    try {
        //Login and set location
        HashProvider hasher = ExampleConstants.getHashProvider();
        api.login(new PtcCredentialProvider(http, ExampleConstants.LOGIN, ExampleConstants.PASSWORD), hasher);
        api.setLocation(ExampleConstants.LATITUDE, ExampleConstants.LONGITUDE, ExampleConstants.ALTITUDE);
        List<Pokemon> pokemons = api.getInventories().getPokebank().getPokemons();
        //List to put all pokemon that can be used in a gym battle
        List<Pokemon> possiblePokemon = new ArrayList<>();
        for (Pokemon pokemon : pokemons) {
            //Check if pokemon has full health and is not deployed in a gym
            if (pokemon.getDeployedFortId().length() == 0) {
                if (pokemon.getStamina() < pokemon.getMaxStamina()) {
                    healPokemonFull(api, pokemon);
                    if (!(pokemon.isInjured() || pokemon.isFainted())) {
                        possiblePokemon.add(pokemon);
                    }
                    Thread.sleep(1000);
                } else {
                    possiblePokemon.add(pokemon);
                }
            } else {
                System.out.println(pokemon.getPokemonId() + " already deployed.");
            }
        }
        //Sort by highest CP
        Collections.sort(possiblePokemon, new Comparator<Pokemon>() {

            @Override
            public int compare(Pokemon primary, Pokemon secondary) {
                return Integer.compare(secondary.getCp(), primary.getCp());
            }
        });
        //Pick the top 6 pokemon from the possible list
        final Pokemon[] attackers = new Pokemon[6];
        for (int i = 0; i < 6; i++) {
            attackers[i] = possiblePokemon.get(i);
        }
        //Sort from closest to farthest
        MapObjects mapObjects = api.getMap().getMapObjects();
        List<Gym> gyms = new ArrayList<>(mapObjects.getGyms());
        Collections.sort(gyms, new Comparator<Gym>() {

            @Override
            public int compare(Gym primary, Gym secondary) {
                double lat = api.getLatitude();
                double lng = api.getLongitude();
                double distance1 = MapUtil.distFrom(primary.getLatitude(), primary.getLongitude(), lat, lng);
                double distance2 = MapUtil.distFrom(secondary.getLatitude(), secondary.getLongitude(), lat, lng);
                return Double.compare(distance1, distance2);
            }
        });
        for (Gym gym : gyms) {
            //Check if gym is attackable, and check if it is not owned by your team
            if (gym.isAttackable() && gym.getOwnedByTeam() != api.getPlayerProfile().getPlayerData().getTeam()) {
                //Walk to gym; Documented pathing in TravelToPokestopExample
                Point destination = new Point(gym.getLatitude(), gym.getLongitude());
                Path path = new Path(api.getPoint(), destination, 50.0);
                System.out.println("Traveling to " + destination + " at 50KMPH!");
                path.start(api);
                try {
                    while (!path.isComplete()) {
                        Point point = path.calculateIntermediate(api);
                        api.setLatitude(point.getLatitude());
                        api.setLongitude(point.getLongitude());
                        System.out.println("Time left: " + (int) (path.getTimeLeft(api) / 1000) + " seconds.");
                        Thread.sleep(2000);
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("Beginning battle with gym.");
                //Create battle object
                Battle battle = gym.battle();
                //Start battle
                battle.start(new FightHandler(attackers));
                while (battle.isActive()) {
                    handleAttack(battle);
                }
                //Heal all pokemon after battle
                for (Pokemon pokemon : possiblePokemon) {
                    if (pokemon.getStamina() < pokemon.getMaxStamina()) {
                        healPokemonFull(api, pokemon);
                        Thread.sleep(1000);
                    }
                }
                //If prestige reaches 0, deploy your pokemon
                if (battle.getGym().getPoints() <= 0) {
                    Pokemon best = possiblePokemon.get(0);
                    System.out.println("Deploying " + best.getPokemonId() + " to gym.");
                    battle.getGym().deployPokemon(best);
                }
            }
        }
    } catch (RequestFailedException | InterruptedException e) {
        // failed to login, invalid credentials, auth issue or server issue.
        Log.e("Main", "Failed to login, captcha or server issue: ", e);
    }
}
Also used : Path(com.pokegoapi.util.path.Path) PtcCredentialProvider(com.pokegoapi.auth.PtcCredentialProvider) OkHttpClient(okhttp3.OkHttpClient) ArrayList(java.util.ArrayList) Point(com.pokegoapi.api.map.Point) MapObjects(com.pokegoapi.api.map.MapObjects) Point(com.pokegoapi.api.map.Point) Battle(com.pokegoapi.api.gym.Battle) RequestFailedException(com.pokegoapi.exceptions.request.RequestFailedException) PokemonGo(com.pokegoapi.api.PokemonGo) HashProvider(com.pokegoapi.util.hash.HashProvider) Gym(com.pokegoapi.api.gym.Gym) Pokemon(com.pokegoapi.api.pokemon.Pokemon)

Example 3 with PtcCredentialProvider

use of com.pokegoapi.auth.PtcCredentialProvider in project PokeGOAPI-Java by Grover-c13.

the class SolveCaptchaExample method main.

/**
	 * Opens a window for captcha solving if needed
	 *
	 * @param args args
	 */
public static void main(String[] args) {
    OkHttpClient http = new OkHttpClient();
    PokemonGo api = new PokemonGo(http);
    try {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                //Startup JFX
                PlatformImpl.startup(new Runnable() {

                    @Override
                    public void run() {
                    }
                });
                //Stop the JavaFX thread from exiting
                Platform.setImplicitExit(false);
            }
        });
        //Add listener to listen for the captcha URL
        api.addListener(new LoginListener() {

            @Override
            public void onLogin(PokemonGo api) {
                System.out.println("Successfully logged in with SolveCaptchaExample!");
            }

            @Override
            public void onChallenge(PokemonGo api, String challengeURL) {
                System.out.println("Captcha received! URL: " + challengeURL);
                completeCaptcha(api, challengeURL);
            }
        });
        HashProvider hasher = ExampleConstants.getHashProvider();
        api.login(new PtcCredentialProvider(http, ExampleConstants.LOGIN, ExampleConstants.PASSWORD), hasher);
        while (!api.hasChallenge()) {
        }
    } catch (Exception e) {
        Log.e("Main", "Failed to run captcha example! ", e);
    }
}
Also used : PtcCredentialProvider(com.pokegoapi.auth.PtcCredentialProvider) OkHttpClient(okhttp3.OkHttpClient) LoginListener(com.pokegoapi.api.listener.LoginListener) PokemonGo(com.pokegoapi.api.PokemonGo) HashProvider(com.pokegoapi.util.hash.HashProvider)

Example 4 with PtcCredentialProvider

use of com.pokegoapi.auth.PtcCredentialProvider in project PokeGOAPI-Java by Grover-c13.

the class TransferMultiplePokemon method main.

/**
	 * Transfers all bad pokemon from the player's inventory.
	 */
public static void main(String[] args) {
    OkHttpClient http = new OkHttpClient();
    PokemonGo api = new PokemonGo(http);
    try {
        HashProvider hasher = ExampleConstants.getHashProvider();
        api.login(new PtcCredentialProvider(http, ExampleConstants.LOGIN, ExampleConstants.PASSWORD), hasher);
        api.setLocation(ExampleConstants.LATITUDE, ExampleConstants.LONGITUDE, ExampleConstants.ALTITUDE);
        PokeBank pokebank = api.getInventories().getPokebank();
        List<Pokemon> pokemons = pokebank.getPokemons();
        List<Pokemon> transferPokemons = new ArrayList<>();
        //Find all pokemon of bad types or with IV less than 25%
        for (Pokemon pokemon : pokemons) {
            PokemonId id = pokemon.getPokemonId();
            double iv = pokemon.getIvInPercentage();
            if (iv < 90) {
                if (id == PokemonId.RATTATA || id == PokemonId.PIDGEY || id == PokemonId.CATERPIE || id == PokemonId.WEEDLE || id == PokemonId.MAGIKARP || id == PokemonId.ZUBAT || iv < 25) {
                    transferPokemons.add(pokemon);
                }
            }
        }
        System.out.println("Releasing " + transferPokemons.size() + " pokemon.");
        Pokemon[] transferArray = transferPokemons.toArray(new Pokemon[transferPokemons.size()]);
        Map<PokemonFamilyId, Integer> responses = pokebank.releasePokemon(transferArray);
        //Loop through all responses and find the total amount of candies earned for each family
        Map<PokemonFamilyId, Integer> candies = new HashMap<>();
        for (Map.Entry<PokemonFamilyId, Integer> entry : responses.entrySet()) {
            int candyAwarded = entry.getValue();
            PokemonFamilyId family = entry.getKey();
            Integer candy = candies.get(family);
            if (candy == null) {
                //candies map does not yet contain the amount if null, so set it to 0
                candy = 0;
            }
            //Add the awarded candies from this request
            candy += candyAwarded;
            candies.put(family, candy);
        }
        for (Map.Entry<PokemonFamilyId, Integer> entry : candies.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue() + " candies awarded");
        }
    } catch (RequestFailedException e) {
        // failed to login, invalid credentials, auth issue or server issue.
        Log.e("Main", "Failed to login. Invalid credentials, captcha or server issue: ", e);
    }
}
Also used : PtcCredentialProvider(com.pokegoapi.auth.PtcCredentialProvider) PokeBank(com.pokegoapi.api.inventory.PokeBank) OkHttpClient(okhttp3.OkHttpClient) PokemonId(POGOProtos.Enums.PokemonIdOuterClass.PokemonId) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) PokemonFamilyId(POGOProtos.Enums.PokemonFamilyIdOuterClass.PokemonFamilyId) RequestFailedException(com.pokegoapi.exceptions.request.RequestFailedException) PokemonGo(com.pokegoapi.api.PokemonGo) HashProvider(com.pokegoapi.util.hash.HashProvider) Pokemon(com.pokegoapi.api.pokemon.Pokemon) HashMap(java.util.HashMap) Map(java.util.Map)

Example 5 with PtcCredentialProvider

use of com.pokegoapi.auth.PtcCredentialProvider in project PokeGOAPI-Java by Grover-c13.

the class TransferOnePidgeyExample method main.

/**
	 * Transfers one pidgey from the player's inventory.
	 */
public static void main(String[] args) {
    OkHttpClient http = new OkHttpClient();
    PokemonGo api = new PokemonGo(http);
    try {
        HashProvider hasher = ExampleConstants.getHashProvider();
        api.login(new PtcCredentialProvider(http, ExampleConstants.LOGIN, ExampleConstants.PASSWORD), hasher);
        api.setLocation(ExampleConstants.LATITUDE, ExampleConstants.LONGITUDE, ExampleConstants.ALTITUDE);
        List<Pokemon> pidgeys = api.getInventories().getPokebank().getPokemonByPokemonId(PokemonIdOuterClass.PokemonId.PIDGEY);
        if (pidgeys.size() > 0) {
            Pokemon pest = pidgeys.get(0);
            // print the pokemon data
            pest.debug();
            ReleasePokemonResponseOuterClass.ReleasePokemonResponse.Result result = pest.transferPokemon();
            Log.i("Main", "Transfered Pidgey result:" + result);
        } else {
            Log.i("Main", "You have no pidgeys :O");
        }
    } catch (RequestFailedException e) {
        // failed to login, invalid credentials, auth issue or server issue.
        Log.e("Main", "Failed to login. Invalid credentials, captcha or server issue: ", e);
    }
}
Also used : PtcCredentialProvider(com.pokegoapi.auth.PtcCredentialProvider) OkHttpClient(okhttp3.OkHttpClient) RequestFailedException(com.pokegoapi.exceptions.request.RequestFailedException) PokemonGo(com.pokegoapi.api.PokemonGo) HashProvider(com.pokegoapi.util.hash.HashProvider) Pokemon(com.pokegoapi.api.pokemon.Pokemon)

Aggregations

PokemonGo (com.pokegoapi.api.PokemonGo)8 PtcCredentialProvider (com.pokegoapi.auth.PtcCredentialProvider)8 HashProvider (com.pokegoapi.util.hash.HashProvider)8 OkHttpClient (okhttp3.OkHttpClient)8 RequestFailedException (com.pokegoapi.exceptions.request.RequestFailedException)7 Point (com.pokegoapi.api.map.Point)3 Pokemon (com.pokegoapi.api.pokemon.Pokemon)3 Path (com.pokegoapi.util.path.Path)3 ArrayList (java.util.ArrayList)3 MapObjects (com.pokegoapi.api.map.MapObjects)2 Pokestop (com.pokegoapi.api.map.fort.Pokestop)2 PokemonFamilyId (POGOProtos.Enums.PokemonFamilyIdOuterClass.PokemonFamilyId)1 PokemonId (POGOProtos.Enums.PokemonIdOuterClass.PokemonId)1 Battle (com.pokegoapi.api.gym.Battle)1 Gym (com.pokegoapi.api.gym.Gym)1 PokeBank (com.pokegoapi.api.inventory.PokeBank)1 LoginListener (com.pokegoapi.api.listener.LoginListener)1 TutorialListener (com.pokegoapi.api.listener.TutorialListener)1 PokestopLootResult (com.pokegoapi.api.map.fort.PokestopLootResult)1 NearbyPokemon (com.pokegoapi.api.map.pokemon.NearbyPokemon)1