Pokemon Go scraper. Based on an early version of AHAAAAAAA/PokemonGo-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
.
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:
- multithreaded
- multiple accounts at the same time
- able to map entire city in real time
- data gathering for further analysis
- visualization
/u/gprez made a great tutorial on Reddit. Check it out if you're confused after reading this readme.
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
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
# LAT_GAIN and LON_GAIN can be configured to tell how big a space between
# points visited by worker should be. LAT_GAIN should also compensate for
# differences in distance between degrees as you go north/south.
LAT_GAIN = 0.0015
LON_GAIN = 0.0025
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]
# List of stage 2 & rare evolutions to show in the report
STAGE2 = [
3, 6, 9, 12, 15, 18, 31, 34, 45, 62, 65, 68, 71, 76, 94, 139, 141, 149
]
Run python REPL and:
import db
db.Base.metadata.create_all(db.get_engine())
You can now write !add 16
or any Pokénumber to add that, !del 16
to delete them and !read
to read the notfication lList
npm install discord.js
npm install request
npm install node-geocoder
npm install fs
Running the Bot Application
node data.js
Changing the language in data.js line 113,130,144,148,156,170,178,186
var message = '**' + pokemon.name + '** (' + pokemon.pokemon_id + ') gesichtet ! Verschwindet in **' + min_diff + '** minuten \n'+streetName+'';
See LICENSE.