Git Product home page Git Product logo

pgoapi's Introduction

pgoapi - a python pokemon go api lib/demo

pgoapi is a client/api/demo for Pokemon Go by https://github.com/tejado.
It allows automatic parsing of requests/responses by finding the correct protobuf objects over a naming convention and will return the response in a parsed python dictionary format.

  • This is unofficial - USE AT YOUR OWN RISK !
  • I don't play pokemon go !
  • No bot/farming code included !

Supports

  • Python 2 and 3
  • Google/PTC auth
  • Address parsing for GPS coordinates
  • Allows chaining of RPC calls
  • Good logging/debugging possibilities
  • Easy extension of further calls! No source code change required!
  • Uses POGOProtos
  • Following RPC calls:
    • GET_PLAYER
    • GET_INVENTORY
    • GET_MAP_OBJECTS
    • DOWNLOAD_SETTINGS
    • DOWNLOAD_ITEM_TEMPLATES
    • CHECK_AWARDED_BADGES
    • FORT_SEARCH (spinning of pokestops)
    • RELEASE_POKEMON (release pokemon and get candy/xp)
    • EVOLVE_POKEMON
    • ...
    • more should be possible now but have to be tested (PLEASE support here)

Installation (lib only - without pokecli etc.)

pip.exe install  git+https://github.com/tejado/pgoapi.git

Usage

pokecli

usage: pokecli.py [-h] -a AUTH_SERVICE -u USERNAME -p PASSWORD -l LOCATION [-d] [-t]

optional arguments:
  -h, --help                                    show this help message and exit
  -a AUTH_SERVICE, --auth_service AUTH_SERVICE  Auth Service ('ptc' or 'google')
  -u USERNAME, --username USERNAME              Username
  -p PASSWORD, --password PASSWORD              Password
  -l LOCATION, --location LOCATION              Location
  -d, --debug                                   Debug Mode
  -t, --test                                    Only parse the specified location

pokecli demo

$ python2 pokecli.py -a ptc -u tejado -p 1234 --location "New York, Washington Square"
2016-07-19 01:22:14,806 [   pokecli] [ INFO] Your given location: Washington Square, Greenwich, NY 12834, USA
2016-07-19 01:22:14,806 [   pokecli] [ INFO] lat/long/alt: 43.0909305 -73.4989367 0.0
2016-07-19 01:22:14,808 [  auth_ptc] [ INFO] Login for: tejado
2016-07-19 01:22:15,584 [  auth_ptc] [ INFO] PTC Login successful
2016-07-19 01:22:15,584 [    pgoapi] [ INFO] Starting RPC login sequence (app simulation)
2016-07-19 01:22:15,584 [    pgoapi] [ INFO] Create new request...
2016-07-19 01:22:15,584 [    pgoapi] [ INFO] Adding 'GET_PLAYER' to RPC request
2016-07-19 01:22:15,584 [    pgoapi] [ INFO] Adding 'GET_HATCHED_EGGS' to RPC request
2016-07-19 01:22:15,584 [    pgoapi] [ INFO] Adding 'GET_INVENTORY' to RPC request
2016-07-19 01:22:15,584 [    pgoapi] [ INFO] Adding 'CHECK_AWARDED_BADGES' to RPC request
2016-07-19 01:22:15,584 [    pgoapi] [ INFO] Adding 'DOWNLOAD_SETTINGS' to RPC request including arguments
2016-07-19 01:22:15,585 [    pgoapi] [ INFO] Execution of RPC
2016-07-19 01:22:16,259 [    pgoapi] [ INFO] Cleanup of request!
2016-07-19 01:22:16,259 [    pgoapi] [ INFO] Finished RPC login sequence (app simulation)
2016-07-19 01:22:16,259 [    pgoapi] [ INFO] Login process completed
2016-07-19 01:22:16,259 [    pgoapi] [ INFO] Create new request...
2016-07-19 01:22:16,259 [    pgoapi] [ INFO] Adding 'GET_PLAYER' to RPC request
2016-07-19 01:22:16,259 [    pgoapi] [ INFO] Execution of RPC
2016-07-19 01:22:16,907 [    pgoapi] [ INFO] Cleanup of request!
Response dictionary:
...
      "profile": {
        "username": "tejado",
        "item_storage": 350,
        "unknown12": "",
        "unknown13": "",
        "creation_time": 1468139...,
        "currency": [
          {
            "type": "POKECOIN"
          },
          {
            "amount": 400,
            "type": "STARDUST"
          }
        ],
        "daily_bonus": {},
        "avatar": {
          "unknown2": 1,
          "unknown3": 4,
          "unknown9": 2,
          "unknown10": 1
        },
        "tutorial": "AAEDBAc=\n",
        "poke_storage": 250
      },
...

pokecli with Docker (optional)

Build and run container:

docker build -t pokecli .
docker run pokecli

Optionally create an alias:

alias pokecli='docker run pokecli'

pgoapi extension

All (known) RPC calls against the original Pokemon Go servers are listed in the RequestMethod Enum in the pgoapi/protos/RpcEnum.proto file. These can be executed over the name, e.g. the call for get_player is:

api = PGoApi()
...
api.get_player()
api.call()

The pgoapi will send this as a RPC request and tries to parse the response over a protobuf object with the same name (get_player) converted to CamelCase + 'Response'. In our example, it would be 'GetPlayerResponse'. These protobuf definitions have to be inside RpcSub (pgoapi/protos/RpcSub.proto).

If a request needs parameters, they can be added as arguments and pgoapi will try to add them automatically to the request, e.g.:

*RpcSub.proto:*
message DownloadSettingsRequest {
  optional string hash = 1;
}

*python:*
api = PGoApi()
...
api.download_settings(hash="4a2e9bc330dae60e7b74fc85b98868ab4700802e")
api.call()

Requirements

  • Python 2 or 3
  • requests
  • protobuf (>=3)
  • gpsoauth
  • geopy (only for pokecli demo)
  • s2sphere (only for pokecli demo)

Contribution

Contributions are highly welcome. Please use github or pgoapi.slack.com for it!
Join pgoapi.slack.com here!

Credits

Mila432 for the login secrets
elliottcarlson for the Google Auth PR
AeonLucid for improved protos
AHAAAAAAA for parts of the s2sphere stuff

Ports

C# Port by BclEx
Node Port by Arm4x

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.