Skip to content

DeastinY/pokeminer

 
 

Repository files navigation

pokeminer

Pokemon Go scraper. Based on an early version of AHAAAAAAA/PokemonGo-Map.

Oh great, another map?

This is not just a map. Apart from much cleaner codebase that suits my needs better, the example.py has been split into two entities: worker.py and web.py.

So what's this for?

This tool (or more importantly, worker.py) gets rectangle as a start..end coordinates (configured in config.py) and spawns n workers. Each of the worker uses different Google/PTC account to scan its surrounding area for Pokemon. To put it simply: you can scan entire city for Pokemon. All gathered information is put into a database for further processing (since servers are unstable, accounts may get banned, Pokemon disappear etc.). worker.py is fully threaded, waits a bit before rescanning, and logins again after 10 scans just to make sure connection with server is in good state.

And web.py? It's just a simple interface for gathered data that displays active Pokemon on a map.

Here it is in action:

In action!

Bulletpoint list of features

  • multithreaded
  • multiple accounts at the same time
  • able to map entire city in real time
  • data gathering for further analysis
  • visualization

ELI5: setting up

/u/gprez made a great tutorial on Reddit. Check it out if you're confused after reading this readme.

Running

The only parameter worker accepts is step limit, just as in example.py.

python worker.py -st 8

To run interface:

python web.py --host 127.0.0.1 --port 8000

Configuration

You need to have at least rows x columns accounts. So for below example, you need to have 20 accounts.

DB_ENGINE = 'sqlite:///db.sqlite'  # anything SQLAlchemy accepts
MAP_START = (12.3456, 14.5)  # top left corner
MAP_END = (13.4567, 15.321)  # bottom right corner
GRID = (4, 5)  # row, column

ACCOUNTS = [
    # username, password, service (google/ptc)
    ('trainer1', 'secret', 'google'),
    ('trainer2', 'secret', 'ptc'),
    ('trainer3', 'secret', 'google'),
    # ...
]

# Trash Pokemon won't be shown on the live map.
# Their data will still be collected to the database.
TRASH_IDS = [16, 19, 41, 96]

Setting up database

Run python REPL and:

import db
db.Base.metadata.create_all(db.get_engine())

Creating Heatmaps

To create simple heatmaps follow these steps:

  1. Follow the steps here to set up Jupyter and gmaps
  2. Fire up the IPythonNotebook example
  3. Enter your gmaps API key
  4. Copy the db.sqlite file next to the notebook
  5. Execute the commands in the Notebook one after another by pressing SHIFT+ENTER
  6. ...
  7. Profit

License

See LICENSE.

About

Pokemon location scraper

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 63.4%
  • HTML 22.2%
  • Jupyter Notebook 8.0%
  • Protocol Buffer 6.4%