Pegelonline/po_modules/po_waterlevel_reader.py
2025-09-29 16:26:42 +02:00

39 lines
1.5 KiB
Python

from . import poBaseURL
from .po_waterlevel import PoWaterlevel
from .urlreader import UrlReader
class PoWaterlevelReader(UrlReader):
def __init__(self):
"""
Initialisiert die Super-Klasse mit URL für die Waterlevel
"""
super().__init__(poBaseURL + 'stations.json?timeseries=W&includeTimeseries=true&includeCurrentMeasurement=true')
def get_waterlevels(self):
"""
Fragt die Liste aller Waterlevels via UrlReader.get_json_response ab und macht PoWaterlevel daraus oder None im Fehlerfall
:return: list[PoWaterlevel] | None
"""
print("PoWaterlevelReader::get_waterlevels: Lade Pegelstände herunter...")
waterlevels_json = self.get_json_response()
if waterlevels_json is None or len(waterlevels_json) == 0:
# Keine Waterlevels erhalten → Abbruch
print("PoWaterlevelReader::get_waterlevels: FEHLER: Keine Pegelstände erhalten")
return None
waterlevels = []
for waterlevel_json in waterlevels_json:
try:
# Versuche eine Waterlevel zu erstellen
waterlevels.append(PoWaterlevel(waterlevel_json))
except Exception as e:
# Fehler → Überspringe diesen Waterlevel
print("PoWaterlevelReader::get_waterlevels: Fehler: error=%s, json=%s" % (e, waterlevel_json))
print("PoWaterlevelReader::get_waterlevels: %d Pegelstände erhalten" % (len(waterlevels),))
return waterlevels