From 3722b951c19eb33f86ee1e09c74863d7bb77ca9c Mon Sep 17 00:00:00 2001 From: Dawid Pietrykowski Date: Tue, 28 Jan 2025 14:08:44 +0100 Subject: [PATCH] Initial commit: demo scripts for realtime and timetable API --- requirements.txt | 2 ++ scripts/realtime.py | 9 +++++++++ scripts/timetable.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 requirements.txt create mode 100755 scripts/realtime.py create mode 100644 scripts/timetable.py diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..0d8c2ce --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +requests +gtfs-realtime-bindings diff --git a/scripts/realtime.py b/scripts/realtime.py new file mode 100755 index 0000000..52cda8a --- /dev/null +++ b/scripts/realtime.py @@ -0,0 +1,9 @@ +from google.transit import gtfs_realtime_pb2 +import requests + +feed = gtfs_realtime_pb2.FeedMessage() +response = requests.get('https://www.ztm.poznan.pl/pl/dla-deweloperow/getGtfsRtFile?file=trip_updates.pb') +feed.ParseFromString(response.content) +for entity in feed.entity: + if entity.HasField('trip_update'): + print(entity.trip_update) diff --git a/scripts/timetable.py b/scripts/timetable.py new file mode 100644 index 0000000..1a011f8 --- /dev/null +++ b/scripts/timetable.py @@ -0,0 +1,43 @@ +import requests +import json + +def get_tram_departures(): + url = "https://www.poznan.pl/mim/komunikacja/service.html" + + params = { + "stop_id": "POKA42" + } + + try: + response = requests.get(url, params=params) + data = response.json() + + for route in data.get('routes', []): + if route['name'] == '16': + for variant in route.get('variants', []): + if variant['headsign'] == 'Os. Sobieskiego': + for service in variant.get('services', []): + # Get first 3 departures + departures = service.get('departures', [])[0:3] + return departures + + return [] + + except requests.exceptions.RequestException as e: + print(f"Error making request: {e}") + return [] + except json.JSONDecodeError as e: + print(f"Error parsing JSON: {e}") + return [] + +def main(): + departures = get_tram_departures() + if departures: + print("Next 3 departures for tram 16 to Os. Sobieskiego:") + for departure in departures: + print(departure) + else: + print("No departures found or error occurred") + +if __name__ == "__main__": + main()