WMATA Realtime Snapshot
Overview
Provide a point-in-time mirror of Washington DC Metro's realtime train schedule
Installation
-
Install the package
pip install django-wmata-realtime-snapshot
-
Add the app to your django project's settings
INSTALLED_APPS = ( ... wmata_realtime_snapshot, )
-
Get a WMATA API key
If you don't already have a WMATA API account, sign up here: https://developer.wmata.com/signup
Alternatively, you may have success using the demo key provided here: https://developer.wmata.com/Products
Once you have a key, (e.g.
1234IAMAKEY
), you can use it to download a dump of the realtime data. -
Download a JSON and/or XML dump from WMATA
These instructions are for a UNIX based system.
JSON Dump:
curl https://api.wmata.com/StationPrediction.svc/json/GetPrediction/All?api_key=1234IAMAKEY > realtime_dump.json
XML Dump:
curl https://api.wmata.com/StationPrediction.svc/GetPrediction/All?api_key=1234IAMAKEY > realtime_dump.xml
To download both at the same time:
curl https://api.wmata.com/StationPrediction.svc/json/GetPrediction/All?api_key=1234IAMAKEY > realtime_dump.json & curl https://api.wmata.com/StationPrediction.svc/GetPrediction/All?api_key=1234IAMAKEY > realtime_dump.xml
-
Add your dumps to the Django settings file
In your Django settings, define the following variables for the dumps you want to serve.
WMATA_JSON_DUMP='path/to/realtime_dump.json' WMATA_XML_DUMP='path/to/realtime_dump.xml'
Any endpoint type (json or xml) that does not have a dump file to read will return a json/xml error message when querying the snapshot API:
{"Error": "No JSON resource has been defined. Please read the installation instructions."}
<Error>No XML resource has been defined. Please read the installation instructions.</Error>
-
Add a url endpoint
url(r'^mirror/', include('wmata_realtime_snapshot.urls', namespace='wmata_realtime_snapshot')),
-
Visit the API
The API path is the same as the real WMATA API for easy plug-n-play:
http://localhost:8000/mirror/StationPrediction.svc/json/GetPrediction/All http://localhost:8000/mirror/StationPrediction.svc/GetPrediction/B01 http://localhost:8000/mirror/StationPrediction.svc/json/GetPrediction/K08,D13,A05