Python-PokeManager: Uses Python API for Pokemon Go to mass transfer Pokemon

Pokemon Manager for Pokemon Go

This tool is a CLI tool that uses the Python API for Pokemon Go available here, so give them the credit for making this possible. Also, anything that will work for that API will work here as well.

Feel free to fork this and submit merge requests - I will review them and merge them if they fit with my vision for this tool.

If you have any suggestions, and I like them, I will be happy to look into it - but please don't expect me to be as active as the other developments going on. Submit an issue with [Feature] at the beginning if you would like to make a suggestion.

Disclaimer: This is built using an unofficial API. All of the unofficial APIs stand a risk of getting you banned. So use with caution!

What does it do?

It does 4 things:

  1. Allows you to view all your Pokemon and their stats (CP, IVs, and Moves)
  2. It groups / sorts alphabetically, and then by IV%
  3. It colour codes based on the IV% (Green for >75, Yellow for >50, White for the rest)
  4. Allows you to view how many of each Pokemon you have, as well as how many candies you have for that Pokemon
  5. It also shows how many you can evolve
  6. At the bottom of the list it will show you how many "base" Pokemon you can evolve. That is, those Pokemon that are tier 1 evolves only
  7. Allows you to mass transfer Pokemon
  8. You can set "safe" limits of IV% and CP. This will not transfer anything that is above either of those levels
  9. You can set up an exception list of Pokemon to never transfer. Look for exceptions.config in the root folder. 1 Pokemon per line
  10. It will show you how many of that Pokemon is "safe" to transfer, along with their stats
  11. It will ask how many of the "safe" Pokemon you want to transfer.
  12. It then shows you the pokemon that will be transferred, and their stats. And asks to confirm if you want to transfer them.
  13. If specifying certain numbers (lower than the total "safe" Pokemon) it will always transfer the lowest IV% Pokemon first
  14. You can also choose to transfer duplicate Pokemon. This will keep the most powerful of each type of Pokemon, and transfer the rest (Can also set IV% cutoff) 1. This will also *not transfer starred Pokemon
  15. Allows you to rename your Pokemon to include their IVs
  16. Currently it will rename your Pokemon to IV%-ATK/DEF/STA. There is a char limit of 12, so no room for anything else. I chose IV first because you can order by name, thus getting highest IV.
  17. It allows you to set an IV% limit so it will only rename those Pokemon that are above that limit

Important Info / Updates

  • Make sure you configure exceptions.config in the root folder with the bat file. Pokemon listed here will never be transferred. 1 Pokemon name per line.
  • You can now export the View and Counts to CSV files. They will be in the same directory as the .bat file (or from whichever directory you run the python command)
  • Pokemon names must be in ALL CAPITALS. It uses the API names (easy to look up)
  • You can specify ALL to transfer all Pokemon below the IV and CP thresholds
  • The release and rename functions will take a long time if there are a lot of pokemon. This is to help reduce bot detection by adding delays to requests
  • If you have 2FA and it gives you Auth errors, set up an App Password.

How to run it

Locally, with python

Make sure you have Python and the requirements installed. If you don't have Python installed, search how to do it. Use Version 2.7.x. Make sure you have pip as well.

To install the requirements, open a CMD window in the root folder and run:

pip install -r requirements.txt

If this gives you an error about not finding pip, please search how to install Python and pip (and make sure python is added to your PATH).

In the root directory there is a file called PokeManager.bat. Open it with your favourite editor and you should see this:

python ".\pogo\demo.py" -a google -u "[email protected]" -p "password"

Replace the email, password, and coordinates (coordinates can also be a location that Google recognises)

If you are on Linux or Max OS, you should replace the line with:

python "./pogo/demo.py" -a google -u "[email protected]" -p "password"

Run PokeManager.bat. There should be a menu presented to you. Follow along. Don't try to break it - you will.

If you want to use PTC, change -a google to -a ptc

Using Docker

If you have docker installed, you can build this locally using the supplied Dockerfile:

docker build .

Then you can run the image that was just built:

docker run --rm -it -e "AUTHTYPE=google" -e "[email protected]" -e "PASSWORD=your-password" -e "STARTINGPOINT=lat, long" <the image ID that was just made>

or to use a pre-built docker image:

Pre-built image:

docker run --rm -it -e "AUTHTYPE=google" -e "[email protected]" -e "PASSWORD=your-password" -e "STARTINGPOINT=lat, long" ryebrye/pokemongo-manager:latest

Screenshots

Main Menu

Main Menu

Viewing Pokemon

Viewing Pokemon

Viewing Totals of Pokemon

Counting Pokemon

Transferring Pokemon

Transferring Pokemon

Renaming Pokemon

Renaming Pokemon

Comments

  • [View Pokemon] Add an Pokedex sorting
    [View Pokemon] Add an Pokedex sorting

    Aug 29, 2016

    Allow to sort "View Pokemon" by Pokedex number: easier for non-English players (+ replace list by dict: easier to manipulate)

    Reply
  • Update README.md
    Update README.md

    Sep 19, 2016

    for those who are not familiar with how to check --help, added in the -l into your installation as it wasnt listed anywhere how to do it, nor are coordinates inside the .bat when you first git clone.

    Reply
  • PokemonMove has no value for 242
    PokemonMove has no value for 242

    Nov 25, 2016

    I'm assuming this is Ditto and Transform, but when trying to do option 1 (View Pokemon), I am now getting:

    Value Error: Enum PokemonMove has no name defined for value 242.

    EDIT: I was able to add it to the two placed in the PokemonMove_pb2 and then compile and it worked.

    Reply
  • Gen2 Pokemons are missing and causing it to crash.
    Gen2 Pokemons are missing and causing it to crash.

    Jan 2, 2017

    MAIN MENU

    1: View Pokemon 2: View Counts 3: Transfer Pokemon 4: Transfer Duplicate Pokemon 5: Rename Pokemon 6: Set Favorite 7: Exit

    Enter choice: 1 Traceback (most recent call last): File "./pogo/demo.py", line 634, in mainMenu(session) File "./pogo/demo.py", line 573, in mainMenu if menuChoice == 1: viewPokemon(session) File "./pogo/demo.py", line 520, in viewPokemon L = [pokedex[pokemon.pokemon_id],pokemon.cp,pokemon.individual_attack,pokemon.individual_defense,pokemon.individual_stamina,IvPercent,pokemon,move_1,move_2] KeyError: 239

    Hatched an elekid which is 239 in Gen2.

    Reply
  • Connection problem since 13/02/17
    Connection problem since 13/02/17

    Feb 15, 2017

    Can't connect using the API since 13th February (it seems to be a general problem on other pogo api too) :

    Creating Google session for xxxx Starting new HTTPS connection (1): android.clients.google.com Starting new HTTPS connection (1): android.clients.google.com Limited functionality. No location provided Starting new HTTPS connection (1): pgorelease.nianticlabs.com Invalid URL u'https:///rpc': No host supplied Traceback (most recent call last): File "./Loisirs/PokemonGo/AutomaticRenamer/pogo/demo.py", line 709, in session = poko_session.authenticate(args.location) File "/Users/Pierre/Loisirs/PokemonGo/AutomaticRenamer/pogo/api.py", line 149, in authenticate }[self.provider](locationLookup=locationLookup, noop=noop) File "/Users/Pierre/Loisirs/PokemonGo/AutomaticRenamer/pogo/api.py", line 101, in createGoogleSession noop=noop File "/Users/Pierre/Loisirs/PokemonGo/AutomaticRenamer/pogo/api.py", line 71, in createPogoSession location File "/Users/Pierre/Loisirs/PokemonGo/AutomaticRenamer/pogo/session.py", line 62, in init self.getInventory() File "/Users/Pierre/Loisirs/PokemonGo/AutomaticRenamer/pogo/session.py", line 216, in getInventory self.getProfile() File "/Users/Pierre/Loisirs/PokemonGo/AutomaticRenamer/pogo/session.py", line 249, in getProfile res = self.wrapAndRequest(payload) File "/Users/Pierre/Loisirs/PokemonGo/AutomaticRenamer/pogo/session.py", line 151, in wrapAndRequest res = self.request(self.wrapInRequest(payload, defaults=defaults)) File "/Users/Pierre/Loisirs/PokemonGo/AutomaticRenamer/pogo/session.py", line 148, in request raise GeneralPogoException('Probably server fires.') custom_exceptions.GeneralPogoException: Probably server fires.

    Reply
  • access token not generated
    access token not generated

    Apr 7, 2017

    Starting new HTTPS connection (1): android.clients.google.com
    Starting new HTTPS connection (1): android.clients.google.com
    Access token not generated
    Session not created successfully
    

    I installed and did everything y'all said to do but ^ im running windows 10

    Reply
  • Count evolutions (does not account for second order evolutions yet)
    Count evolutions (does not account for second order evolutions yet)

    Jul 27, 2016

    Players may use the number of possible evolutions to maximize XP gain from evolving Pokémon in combination with a Lucky Egg.

    Reply
  • Showing numbers of pokemon to transfer then evolve
    Showing numbers of pokemon to transfer then evolve

    Aug 10, 2016

    Calculate first the number of pokemon to transfer and then the updated number of pokemon to evolve. Also the math is know taking consideration of the bonus candy after each evolution

    Reply
  • Can't run on Linux
    Can't run on Linux

    Jul 29, 2016

    Hi! I tried running PokeManager on Linux, had this as a result:

    [email protected]:~$ cd /home/tokarevi/PokeManager-master [email protected]:~/PokeManager-master$ ./PokeManager.bat Traceback (most recent call last): File "./pogo/demo.py", line 10, in import POGOProtos.Enums.PokemonMove_pb2 as PokemonMove_pb2 File "/home/tokarevi/PokeManager-master/pogo/POGOProtos/Enums/PokemonMove_pb2.py", line 10, in from google.protobuf import symbol_database as _symbol_database File "/usr/local/lib/python2.7/dist-packages/google/protobuf/symbol_database.py", line 180, in _DEFAULT = SymbolDatabase(pool=descriptor_pool.Default()) AttributeError: 'module' object has no attribute 'Default'

    How can this be corrected?

    question 
    Reply
  • [Feature] Transfer duplicate pokemon should also use exceptions.config
    [Feature] Transfer duplicate pokemon should also use exceptions.config

    Aug 1, 2016

    I could pull request if u want, but it's pretty simple change that should be easy enough to do for you.

    enhancement 
    Reply
  • Missing parenthese
    Missing parenthese

    Jul 26, 2016

    Hi, Very good job :) I have a problem with the CMD,

    capture

    You can help me ?

    thanks

    question 
    Reply
  • Error on running the .bat
    Error on running the .bat

    Aug 1, 2016

    capture i set everything ok just follow your steps, however, when i ran the .bat file, the window didn't show me a main menu like yours. may u figure out where the trouble is & help me fix this issue? many THANX! :-b

    help wanted question 
    Reply