wd60622 / cta

Python Client for Chicago Transit Authority

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Chicago Transit Authority API

The CTA has three public endpoints for tracking CTA trains. This client supports those endpoints.

The CTAClient has methods for each endpoints. Namely,

  • arrivals: Arrival information for a given station(s) or stop(s).
  • follow: Follow specific train by runnumber.
  • locations: Get all trains for a given route(s).

More endpoint specific documentation found here

This API requires a key which can be easily received here. Follow the .env.example file for setting.

Installation

This package is available on pip. Install with:

$ pip install python-cta

Getting Started

from cta import CTAClient
damen_blue_line_mapid = 40590

# Get arrival information for damen blue line station.
cta_client = CTAClient()
arrival_response = cta_client.arrivals(mapid=damen_blue_line_mapid)
df_arrivals = arrival_response.to_frame()
print(df_arrivals)

# Follow specific train
runnumber = df_arrivals["rn"].tolist()[0]
follow_response = cta_client.follow(runnumber=runnumber)
df_follow = follow_response.to_frame()
print(df_follow)
from cta import Route

# Get the location of all Blue Line trains.
location_response = cta_client.locations(Route.BLUE)
df_locations = location_response.to_frame()
print(df_locations)

# Or all trains on the track
location_response = cta_client.locations(route=[route for route in Route])
df_locations = location_response.to_frame()
print(df_locations)

Information about the stations can be found with the Stations class. Below is an example to find the mapid for Damen blue line.

from cta import Stations

stations = Stations()
df_stations = stations.data
print(df_stations)

df_damen = stations.lookup("Damen", route=Route.BLUE)
print(df_damen)

Try this example for yourself in scripts/readme_example.py

Notes

This currently doesn't support the CTA bus API endpoints. However, it might in the future.

About

Python Client for Chicago Transit Authority


Languages

Language:Python 99.2%Language:Makefile 0.8%Language:Shell 0.0%