diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/source/heilbronn_de.py b/custom_components/waste_collection_schedule/waste_collection_schedule/source/heilbronn_de.py index 46e7500e..112a1efa 100644 --- a/custom_components/waste_collection_schedule/waste_collection_schedule/source/heilbronn_de.py +++ b/custom_components/waste_collection_schedule/waste_collection_schedule/source/heilbronn_de.py @@ -1,5 +1,6 @@ -import requests from datetime import datetime + +import requests from waste_collection_schedule import Collection # type: ignore[attr-defined] from waste_collection_schedule.service.ICS import ICS @@ -13,31 +14,29 @@ TEST_CASES = { "hausnr": 33, }, "Biberach": { - "strasse":"Kehrhüttenstraße", + "strasse": "Kehrhüttenstraße", "plz": 74078, - "hausnr": "90", + "hausnr": "90", }, - "klingenberg:": { - "strasse":"Wittumhalde", + "Klingenberg:": { + "strasse": "Wittumhalde", "plz": "74081", - "hausnr": 75, + "hausnr": 75, }, - "klingenberg:": { - "strasse":"Wittumhalde", + "Klingenberg (hausnr as string):": { + "strasse": "Wittumhalde", "plz": "74081", - "hausnr": "75", + "hausnr": "75", }, - "Rosenbergstraße": { - "strasse":"Rosenbergstraße", + "Rosenbergstraße 53": { + "strasse": "Rosenbergstraße", "plz": "74074", - "hausnr": "53", - + "hausnr": "53", }, - "Rosenbergstraße2": { - "strasse":"Rosenbergstraße", + "Rosenbergstraße 41": { + "strasse": "Rosenbergstraße", "plz": "74072", - "hausnr": "41", - + "hausnr": "41", }, } @@ -50,6 +49,7 @@ ICON_MAP = { "BT": "mdi:package-variant", } + class Source: def __init__(self, plz: int, strasse: str, hausnr: str | int): self._plz: str = str(plz) @@ -59,61 +59,72 @@ class Source: def fetch(self): r = requests.get( - "https://abfallratgeber.heilbronn.de/excel_hn/htdocs/street.json") + "https://abfallratgeber.heilbronn.de/excel_hn/htdocs/street.json" + ) r.raise_for_status() streets: dict = r.json() - - #all the data is spilt in to two files for diffrent kinds of trash + # all the data is spilt in to two files for different kinds of trash year_response = requests.get( - "https://abfallratgeber.heilbronn.de/excel_hn/htdocs/yearObject.json") + "https://abfallratgeber.heilbronn.de/excel_hn/htdocs/yearObject.json" + ) year_response.raise_for_status() - - yearB_response = requests.get("https://abfallratgeber.heilbronn.de/excel_hn/htdocs/yearBObject.json") + + yearB_response = requests.get( + "https://abfallratgeber.heilbronn.de/excel_hn/htdocs/yearBObject.json" + ) yearB_response.raise_for_status() - - - days_list: list[dict] = [year_response.json(),yearB_response.json()] + + days_list: list[dict] = [year_response.json(), yearB_response.json()] keys = [] - # get the values to search for in the json and save them in keys for street in streets: - - if (street['route'] == self._strasse) and (street['postal_code'] == self._plz): - - if ("street_number" in street) and (self._hausnr not in street['street_number']): + + if (street["route"] == self._strasse) and ( + street["postal_code"] == self._plz + ): + + if ("street_number" in street) and ( + self._hausnr not in street["street_number"] + ): continue keys = [] - for key in list({street['area'], street['g'], street['bt']}): + for key in list({street["area"], street["g"], street["bt"]}): keys.append(key) if "-" in key: keys.append(key.split("-")[0]) break if keys == []: - raise Exception("no address found for " + self._strasse + " " + self._hausnr + " " + self._plz) - - + raise Exception( + "no address found for " + + self._strasse + + " " + + self._hausnr + + " " + + self._plz + ) + entries = [] - # iterate over both json files and search for the keys - for days in days_list: + # iterate over both json files and search for the keys + for days in days_list: for day in days.values(): - if not "date" in day: + if "date" not in day: continue - - date: dict = datetime.strptime(day['date'], '%d.%m.%Y').date() - + + date: dict = datetime.strptime(day["date"], "%d.%m.%Y").date() + for key in keys: if key in day["districts"] and day["districts"][key] != []: for entry in day["districts"][key]: if entry in ICON_MAP: icon = ICON_MAP.get(entry) - elif len(entry)>=2 and entry[:2] == "BT": + elif len(entry) >= 2 and entry[:2] == "BT": icon = ICON_MAP.get("BT") else: icon = ICON_MAP.get(entry[0]) - entries.append(Collection(date, entry,icon)) - + entries.append(Collection(date, entry, icon)) + return entries diff --git a/doc/source/heilbronn_de.md b/doc/source/heilbronn_de.md index 8501287c..bc13cc00 100644 --- a/doc/source/heilbronn_de.md +++ b/doc/source/heilbronn_de.md @@ -30,11 +30,11 @@ waste_collection_schedule: ```yaml waste_collection_schedule: sources: - - name: bsr_de + - name: heilbronn_de args: plz: 74072 - abf_strasse: "Rosenau" - abf_hausnr: 33 + strasse: Rosenau + hausnr: 33 ``` ## How to get the source arguments