PoGo mapper and notifier
Monocle is the distinguished Pokémon Go scanner capable of scanning large areas for spawns. Features spawnpoint scanning, Twitter and PushBullet notifications, accurate expiration times and estimates based on historical data, pokestop and gym collection, a CAPTCHA solving script, and more.
A demonstration of the Twitter notifications can be viewed here.
It uses a database table of spawnpoints and expiration times to visit points soon after Pokemon spawn. For each point it determines which eligible worker can reach the point with the lowest speed, or tries again if all workers would be over the configurable speed limit. This method scans very efficiently and finds Pokemon very soon after they spawn, and also leads to unpredictable worker movements that look less robotic. The spawnpoint database continually expands as Pokemon are discovered. If you don't have enough accounts to keep up with the number of spawns in your database, it will automatically skip points that are unreachable within the speed limit or points that it has already seen spawn that cycle from other nearby points.
If you don't have an existing database of spawn points it will spread your workers out over the area you specify in config and collect the locations of spawn points from GetMapObjects requests. It will then visit those points whenever it doesn't have a known spawn (with its expiration time) to visit soon. So it will gradually learn the expiration times of more and more spawn points as you use it.
There's also a simple interface that displays active Pokemon on a map, and can generate nice-looking reports.
Since it uses Leaflet for mapping, the appearance and data source can easily be configured to match any of these with the MAP_PROVIDER_URL
config option.
git clone --recursive https://github.com/Noctem/Monocle.git
pip3 install -r requirements.txt
pip3 install
additional packages listed in optional-requirements
python3 scripts/create_db.py
from the command linepython3 scan.py
python3 web.py
Note: Monocle works with Python 3.5 or later only. Python 2.7 is not supported and is not compatible at all since I moved from threads to coroutines. Seriously, it's 2017, Python 2.7 hasn't been developed for 6 years, why don't you upgrade already?
Note that if you want more than 10 workers simultaneously running, SQLite is likely not the best choice. I personally use and recommend PostgreSQL, but MySQL and SQLite should also work.
There are three reports, all available as web pages on the same server as the live map:
/report
/report/<pokemon_id>
gyms.py
The workers' live locations and stats can be viewed from the main map by enabling the workers layer, or at /workers
(communicates directly with the worker process and requires no DB queries).
The gyms statistics server is in a separate file, because it's intended to be shared publicly as a webpage.
Visit our Wiki for more info.
See LICENSE.
This project is based on the coroutines branch of pokeminer (now discontinued). Pokeminer was originally based on an early version of PokemonGo-Map, but no longer shares any code with it. It uses aiopogo, my fork of pgoapi which uses aiohttp for asynchronous network requests.
The excellent image near the top of this README was painted by darkestnight.