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