Skip to main content

Wrapper for the Chicago CTA XML API.

Project description

<A name="toc1-0" title="Chicago (ORD)ata" />
# Chicago (ORD)ata

This library is for accessing Chicago related data via Python. I'd prefer to focus on web APIs but I'm gonna go where the data is.

<A name="toc2-5" title="CTA Traintracker" />
## CTA Traintracker

To start, I'm implementing Train Tracker API. Below is a cursory usage example.

<A name="toc3-10" title="To start up, just instantiate an instance of the Train class to initialize the connection to the API." />
### To start up, just instantiate an instance of the Train class to initialize the connection to the API.

>>> import ordat.cta as cta
>>> train = cta.Train(key='YOURKEYHERE')

<A name="toc3-16" title="Get Arrivals by mapid" />
### Get Arrivals by mapid

>>> train.arrivals(mapid=40380)
[Blue Line/Clark/Lake run 139 to O'Hare at 03:00:00, Blue Line/Clark/Lake run 225 to Forest Park at 03:06:52]

<A name="toc3-22" title="Advanced Mode: Find All Scheduled/Active Runs" />
### Advanced Mode: Find All Scheduled/Active Runs

>>> # get arrivals for every station in the system
>>> all_arrivals = reduce(lambda a1,a2: a1+a2, [station.arrivals() for station in cta.Station.all])
>>> # get the run numbers of every active train in the system at the current time
>>> run_nums = set([arrival.run_number for arrival in all_arrivals])
>>> len(run_nums)
16

This was run late at night, so it found far less than normal!

<A name="toc3-34" title="Find Current Train Locations" />
### Find Current Train Locations

import ordat.cta as cta
train = cta.Train(key='YOURKEYHERE')
tr = cta.panopticon.Tracker()
for rn,lat,lon in tr.step() :
print rn, lat, lon

This can take a bit to pick up the locations, so run the last two lines a couple times and wait in between.

<A name="toc3-45" title="Station Search, Station Arrivals, Stop Arrivals" />
### Station Search, Station Arrivals, Stop Arrivals

>>> # Find a station, and then check its arrivals
>>> cta.Station.find('Clark/Lake')[0].arrivals()
[Blue Line/Clark/Lake run 139 to O'Hare at 03:00:00, Blue Line/Clark/Lake run 225 to Forest Park at 03:05:53]
>>> # Check what lines a station services
>>> cta.Station.find('Clark/Lake')[0].lines
[Pink Line, Blue Line, Purple Express Line, Orange Line, Brown Line, Green Line]
>>> cl_stops = cta.Station.find('Clark/Lake')[0].stops
>>> cl_stops
[E-bound Stop Clark/Lake (Inner Loop) at Station Clark/Lake, W-bound Stop Clark/Lake (Outer Loop) at Station Clark/Lake, S-bound Stop Clark/Lake (Forest Pk-bound) at Station Clark/Lake, N-bound Stop Clark/Lake (O'Hare-bound) at Station Clark/Lake]
>>> cl_stops[-1].arrivals()
[Blue Line/Clark/Lake run 139 to O'Hare at 03:00:00]

I intend to make the data more well formed and parsed, validated etc later. It implements a thin little caching layer to conserve API usage for requests for the same information placed in quick succession.

This is a quick wrapper around http://www.transitchicago.com/assets/1/developer_center/cta_Train_Tracker_API_documentation_v1_2.pdf

To add:

* Finding closest stations by lat/long, line, name, etc
* inbuilt code for acquiring data about stop-to-stop transit timings
* ability to understand delays, scheduled stops, faults in the system
* Unit testing for all of above
* Relate responses and requests on the arrivals API to my object hierarchy
* Color codes on lines
* Directionality of lines
* Determine 'next' stops for each stop (platform)

<A name="toc1-75" title="Dependencies" />
# Dependencies

* git://github.com/martinblech/xmltodict.git
* Everything in requirements.txt

<A name="toc1-81" title="Tests" />
# Tests

PYTHONPATH=../xmltodict:~/pyenvs/cta/lib/python2.7/site-packages/ nosetests -vv tests

The above is just an example, I'm not sure why virtualenv isn't picking up the requests module just by sourcing activate.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ordat-0.1.0.tar.gz (13.5 kB view details)

Uploaded Source

File details

Details for the file ordat-0.1.0.tar.gz.

File metadata

  • Download URL: ordat-0.1.0.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for ordat-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bea9bbe0d2523b3ae01e62fa500f7da0acb699047146b08ef0a96590d4f20424
MD5 7c4317817a9a51b9e280a1ec53436307
BLAKE2b-256 d26b21477a3fe153a360cc3cc2af560767ec4e139f70ef4d7e5ebfd2a59a51a6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page