/stcp-api

Unofficial API to retrieve STCP information for public transit buses in Porto, Portugal

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

STCP API

Unofficial API to retrieve STCP information for public transit buses in Porto, Portugal.

Retrieves static data about lines, stops, locations, and real-time estimates of bus arrivals.

Since it's based on a non-official API, it may stop working in the future. Confirmed working as of 24 February 2024.

See the files at stcp/api.py and stcp/util.py for the complete documentation, and examples.md for usage examples.

Available operations

Function Description
get_lines gets a list of all STCP lines.
get_line_directions gets a list of directions (usually 2) of a line.
get_line_stops gets a list of all stops of a line.
get_stop_data gets information about a stop, including a list of all the lines that pass through it.
get_stop_real_times gets a real-time list of buses passing through a stop soon (up to one hour from the current time).

Utilities

Function Description
get_all_stops gets a set of all STCP stop codes across all lines.
stop_departures gets a map of upcoming departures of a stop, grouped by line.
follow_line gets the current times for a given line.

Notes

To be able to get a stop's real-time departures, a "hash" is needed, which can be obtained by scraping STCP's webpage. These hashes are stored in a local CSV cache for efficiency purposes, which is generated on the first execution. However, the cache can be disabled, and the hash request can be made on the fly, by passing use_hash_cache=False to the get_stop_real_times function.