39 lines
1.5 KiB
Python
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
|