39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
from . import poBaseURL
|
|
from .po_station import PoStation
|
|
from .urlreader import UrlReader
|
|
|
|
|
|
class PoStationReader(UrlReader):
|
|
|
|
def __init__(self):
|
|
"""
|
|
Initialisiert die Super-Klasse mit URL für die Stationen
|
|
"""
|
|
super().__init__(poBaseURL + 'stations.json')
|
|
|
|
def get_stations(self):
|
|
"""
|
|
Fragt die Liste aller Stationen via UrlReader.get_json_response ab und macht PoStation daraus oder None im Fehlerfall
|
|
:return: list[PoStation] | None
|
|
"""
|
|
print("PoStationReader::get_stations: Lade Stationen herunter...")
|
|
|
|
stations_json = self.get_json_response()
|
|
if stations_json is None or len(stations_json) == 0:
|
|
# Keine Stationen erhalten → Abbruch
|
|
print("PoStationReader::get_stations: Keine Stationen erhalten")
|
|
return None
|
|
|
|
stations = []
|
|
for station_json in stations_json:
|
|
try:
|
|
# Versuche eine Station zu erstellen
|
|
stations.append(PoStation(station_json))
|
|
except Exception as e:
|
|
# Fehler → Überspringe diese Station
|
|
print("PoStationReader::get_stations: Fehler: error=%s, json=%s" % (e, station_json))
|
|
|
|
print("PoStationReader::get_stations: %d Stationen erhalten" % (len(stations),))
|
|
|
|
return stations
|