prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  missing file or path in source: aha_region_de.py
  Hi,
  I recently installed Version 1.42.0 using HACS and cant get it to run.
  Changed the adress to one of the test-adresses, but same issue.
  
  That home directory '/home/silas/tmp/test.html' seems like debug file for some server-responds. But thats not going to work :)
  
  Any ideas?
  
  Thanks for your help!
  
  configuration.yaml
  ```
  waste_collection_schedule:
    sources:
      - name: aha_region_de
        args:
          gemeinde: "Hannover"
          strasse: "Voltastr. / Vahrenwald"
          hnr: "25"
          zusatz: ""
  ```
  
  ```
  Logger: waste_collection_schedule.source_shell
  Source: custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py:136
  Integration: waste_collection_schedule (documentation)
  First occurred: 20:08:22 (2 occurrences)
  Last logged: 20:09:05
  
  fetch failed for source Zweckverband Abfallwirtschaft Region Hannover: Traceback (most recent call last): File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py", line 134, in fetch entries = self._source.fetch() ^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/waste_collection_schedule/waste_collection_schedule/source/aha_region_de.py", line 85, in fetch with open("/home/silas/tmp/test.html", "w") as f: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: '/home/silas/tmp/test.html'`
  ```
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `custom_components/waste_collection_schedule/waste_collection_schedule/source/aha_region_de.py`
  Content:
  ```
  1 from waste_collection_schedule import Collection  # type: ignore[attr-defined]
  2 from waste_collection_schedule.service.ICS import ICS
  3 
  4 import requests
  5 from bs4 import BeautifulSoup
  6 
  7 TITLE = "Zweckverband Abfallwirtschaft Region Hannover"
  8 DESCRIPTION = "Source for Zweckverband Abfallwirtschaft Region Hannover."
  9 URL = "https://www.aha-region.de/"
  10 TEST_CASES = {
  11     "Neustadt a. Rbge., Am Rotdorn / Nöpke, 1 ": {
  12         "gemeinde": "Neustadt a. Rbge.",
  13         "strasse": "Am Rotdorn / Nöpke",
  14         "hnr": 1,
  15     },
  16     "Isernhagen, Am Lohner Hof / Isernhagen Fb, 10": {
  17        "gemeinde": "Isernhagen",
  18        "strasse": "Am Lohner Hof / Isernhagen Fb",
  19        "hnr": "10",
  20     },
  21     "Hannover, Voltastr. / Vahrenwald, 25": {
  22         "gemeinde": "Hannover",
  23         "strasse": "Voltastr. / Vahrenwald",
  24         "hnr": "25",
  25     },
  26     "Hannover, Melanchthonstr., 10A": {
  27         "gemeinde": "Hannover",
  28         "strasse": "Melanchthonstr.",
  29         "hnr": "10",
  30         "zusatz": "A",
  31     }
  32 }
  33 
  34 ICON_MAP = {
  35     "Restabfall": "mdi:trash-can",
  36     "Glass": "mdi:bottle-soda",
  37     "Bioabfall": "mdi:leaf",
  38     "Papier": "mdi:package-variant",
  39     "Leichtverpackungen": "mdi:recycle",
  40 }
  41 
  42 API_URL = "https://www.aha-region.de/abholtermine/abfuhrkalender"
  43 
  44 class Source:
  45     def __init__(self, gemeinde: str, strasse: str, hnr: str | int, zusatz: str | int = ""):
  46         self._gemeinde: str = gemeinde
  47         self._strasse: str = strasse
  48         self._hnr: str = str(hnr)
  49         self._zusatz: str = str(zusatz)
  50         self._ics = ICS()
  51 
  52     def fetch(self):
  53         # find strassen_id
  54         r = requests.get(API_URL, params={"gemeinde": self._gemeinde, "von": "A", "bis": "["})
  55         r.raise_for_status()
  56 
  57         strassen_id = None
  58         selects = BeautifulSoup(r.text, "html.parser").find("select", {"id": "strasse"}).find_all("option")
  59         for select in selects:
  60             if select.text.lower().replace(" ", "") == self._strasse.lower().replace(" ", ""):
  61                 strassen_id = select["value"]
  62                 break
  63 
  64         if not strassen_id:
  65             raise Exception("Street not found for gemeinde: " + self._gemeinde + " and strasse: " + self._strasse)
  66 
  67         # request overview page
  68         args = {
  69             "gemeinde": self._gemeinde,
  70             "jsaus": "",
  71             "strasse": strassen_id,
  72             "hausnr": self._hnr,
  73             "hausnraddon": self._zusatz,
  74             "anzeigen": "Suchen",
  75         }
  76 
  77         r = requests.post(API_URL, data=args)
  78         r.raise_for_status()
  79 
  80         soup = BeautifulSoup(r.text, "html.parser")
  81         # find all ICAL download buttons
  82         download_buttons = soup.find_all("button", {"name": "ical_apple"})
  83 
  84         if not download_buttons:
  85             with open("/home/silas/tmp/test.html", "w") as f:
  86                 f.write(r.text)
  87             raise Exception("Invalid response from server, check you configuration if it is correct.")
  88 
  89         entries = []
  90 
  91         for button in download_buttons:
  92             # get form data and request ICAL file for every waste type
  93             args = {}
  94             args["ical_apple"] = button["value"]
  95             form = button.parent
  96             for input in form.find_all("input"):
  97                 args[input["name"]] = input["value"]
  98 
  99             r = requests.post(API_URL, data=args)
  100             r.encoding = "utf-8"
  101 
  102             dates = self._ics.convert(r.text)
  103 
  104             for d in dates:
  105                 bin_type = d[1].replace("Abfuhr", "").strip()
  106                 entries.append(Collection(d[0], bin_type, ICON_MAP.get(bin_type)))
  107 
  108         return entries
  109
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/source/aha_region_de.py b/custom_components/waste_collection_schedule/waste_collection_schedule/source/aha_region_de.py
  --- a/custom_components/waste_collection_schedule/waste_collection_schedule/source/aha_region_de.py
  +++ b/custom_components/waste_collection_schedule/waste_collection_schedule/source/aha_region_de.py
  @@ -1,8 +1,7 @@
  -from waste_collection_schedule import Collection  # type: ignore[attr-defined]
  -from waste_collection_schedule.service.ICS import ICS
  -
   import requests
   from bs4 import BeautifulSoup
  +from waste_collection_schedule import Collection  # type: ignore[attr-defined]
  +from waste_collection_schedule.service.ICS import ICS
   
   TITLE = "Zweckverband Abfallwirtschaft Region Hannover"
   DESCRIPTION = "Source for Zweckverband Abfallwirtschaft Region Hannover."
  @@ -14,9 +13,9 @@
           "hnr": 1,
       },
       "Isernhagen, Am Lohner Hof / Isernhagen Fb, 10": {
  -       "gemeinde": "Isernhagen",
  -       "strasse": "Am Lohner Hof / Isernhagen Fb",
  -       "hnr": "10",
  +        "gemeinde": "Isernhagen",
  +        "strasse": "Am Lohner Hof / Isernhagen Fb",
  +        "hnr": "10",
       },
       "Hannover, Voltastr. / Vahrenwald, 25": {
           "gemeinde": "Hannover",
  @@ -28,7 +27,7 @@
           "strasse": "Melanchthonstr.",
           "hnr": "10",
           "zusatz": "A",
  -    }
  +    },
   }
   
   ICON_MAP = {
  @@ -41,8 +40,11 @@
   
   API_URL = "https://www.aha-region.de/abholtermine/abfuhrkalender"
   
  +
   class Source:
  -    def __init__(self, gemeinde: str, strasse: str, hnr: str | int, zusatz: str | int = ""):
  +    def __init__(
  +        self, gemeinde: str, strasse: str, hnr: str | int, zusatz: str | int = ""
  +    ):
           self._gemeinde: str = gemeinde
           self._strasse: str = strasse
           self._hnr: str = str(hnr)
  @@ -51,18 +53,31 @@
   
       def fetch(self):
           # find strassen_id
  -        r = requests.get(API_URL, params={"gemeinde": self._gemeinde, "von": "A", "bis": "["})
  +        r = requests.get(
  +            API_URL, params={"gemeinde": self._gemeinde, "von": "A", "bis": "["}
  +        )
           r.raise_for_status()
   
           strassen_id = None
  -        selects = BeautifulSoup(r.text, "html.parser").find("select", {"id": "strasse"}).find_all("option")
  +        selects = (
  +            BeautifulSoup(r.text, "html.parser")
  +            .find("select", {"id": "strasse"})
  +            .find_all("option")
  +        )
           for select in selects:
  -            if select.text.lower().replace(" ", "") == self._strasse.lower().replace(" ", ""):
  +            if select.text.lower().replace(" ", "") == self._strasse.lower().replace(
  +                " ", ""
  +            ):
                   strassen_id = select["value"]
                   break
   
           if not strassen_id:
  -            raise Exception("Street not found for gemeinde: " + self._gemeinde + " and strasse: " + self._strasse)
  +            raise Exception(
  +                "Street not found for gemeinde: "
  +                + self._gemeinde
  +                + " and strasse: "
  +                + self._strasse
  +            )
   
           # request overview page
           args = {
  @@ -82,9 +97,9 @@
           download_buttons = soup.find_all("button", {"name": "ical_apple"})
   
           if not download_buttons:
  -            with open("/home/silas/tmp/test.html", "w") as f:
  -                f.write(r.text)
  -            raise Exception("Invalid response from server, check you configuration if it is correct.")
  +            raise Exception(
  +                "Invalid response from server, check you configuration if it is correct."
  +            )
   
           entries = []
  
verification_info: {"golden_diff": "diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/source/aha_region_de.py b/custom_components/waste_collection_schedule/waste_collection_schedule/source/aha_region_de.py\n--- a/custom_components/waste_collection_schedule/waste_collection_schedule/source/aha_region_de.py\n+++ b/custom_components/waste_collection_schedule/waste_collection_schedule/source/aha_region_de.py\n@@ -1,8 +1,7 @@\n-from waste_collection_schedule import Collection  # type: ignore[attr-defined]\n-from waste_collection_schedule.service.ICS import ICS\n-\n import requests\n from bs4 import BeautifulSoup\n+from waste_collection_schedule import Collection  # type: ignore[attr-defined]\n+from waste_collection_schedule.service.ICS import ICS\n \n TITLE = \"Zweckverband Abfallwirtschaft Region Hannover\"\n DESCRIPTION = \"Source for Zweckverband Abfallwirtschaft Region Hannover.\"\n@@ -14,9 +13,9 @@\n         \"hnr\": 1,\n     },\n     \"Isernhagen, Am Lohner Hof / Isernhagen Fb, 10\": {\n-       \"gemeinde\": \"Isernhagen\",\n-       \"strasse\": \"Am Lohner Hof / Isernhagen Fb\",\n-       \"hnr\": \"10\",\n+        \"gemeinde\": \"Isernhagen\",\n+        \"strasse\": \"Am Lohner Hof / Isernhagen Fb\",\n+        \"hnr\": \"10\",\n     },\n     \"Hannover, Voltastr. / Vahrenwald, 25\": {\n         \"gemeinde\": \"Hannover\",\n@@ -28,7 +27,7 @@\n         \"strasse\": \"Melanchthonstr.\",\n         \"hnr\": \"10\",\n         \"zusatz\": \"A\",\n-    }\n+    },\n }\n \n ICON_MAP = {\n@@ -41,8 +40,11 @@\n \n API_URL = \"https://www.aha-region.de/abholtermine/abfuhrkalender\"\n \n+\n class Source:\n-    def __init__(self, gemeinde: str, strasse: str, hnr: str | int, zusatz: str | int = \"\"):\n+    def __init__(\n+        self, gemeinde: str, strasse: str, hnr: str | int, zusatz: str | int = \"\"\n+    ):\n         self._gemeinde: str = gemeinde\n         self._strasse: str = strasse\n         self._hnr: str = str(hnr)\n@@ -51,18 +53,31 @@\n \n     def fetch(self):\n         # find strassen_id\n-        r = requests.get(API_URL, params={\"gemeinde\": self._gemeinde, \"von\": \"A\", \"bis\": \"[\"})\n+        r = requests.get(\n+            API_URL, params={\"gemeinde\": self._gemeinde, \"von\": \"A\", \"bis\": \"[\"}\n+        )\n         r.raise_for_status()\n \n         strassen_id = None\n-        selects = BeautifulSoup(r.text, \"html.parser\").find(\"select\", {\"id\": \"strasse\"}).find_all(\"option\")\n+        selects = (\n+            BeautifulSoup(r.text, \"html.parser\")\n+            .find(\"select\", {\"id\": \"strasse\"})\n+            .find_all(\"option\")\n+        )\n         for select in selects:\n-            if select.text.lower().replace(\" \", \"\") == self._strasse.lower().replace(\" \", \"\"):\n+            if select.text.lower().replace(\" \", \"\") == self._strasse.lower().replace(\n+                \" \", \"\"\n+            ):\n                 strassen_id = select[\"value\"]\n                 break\n \n         if not strassen_id:\n-            raise Exception(\"Street not found for gemeinde: \" + self._gemeinde + \" and strasse: \" + self._strasse)\n+            raise Exception(\n+                \"Street not found for gemeinde: \"\n+                + self._gemeinde\n+                + \" and strasse: \"\n+                + self._strasse\n+            )\n \n         # request overview page\n         args = {\n@@ -82,9 +97,9 @@\n         download_buttons = soup.find_all(\"button\", {\"name\": \"ical_apple\"})\n \n         if not download_buttons:\n-            with open(\"/home/silas/tmp/test.html\", \"w\") as f:\n-                f.write(r.text)\n-            raise Exception(\"Invalid response from server, check you configuration if it is correct.\")\n+            raise Exception(\n+                \"Invalid response from server, check you configuration if it is correct.\"\n+            )\n \n         entries = []\n", "issue": "missing file or path in source: aha_region_de.py\nHi,\r\nI recently installed Version 1.42.0 using HACS and cant get it to run.\r\nChanged the adress to one of the test-adresses, but same issue.\r\n\r\nThat home directory '/home/silas/tmp/test.html' seems like debug file for some server-responds. But thats not going to work :)\r\n\r\nAny ideas?\r\n\r\nThanks for your help!\r\n\r\nconfiguration.yaml\r\n```\r\nwaste_collection_schedule:\r\n  sources:\r\n    - name: aha_region_de\r\n      args:\r\n        gemeinde: \"Hannover\"\r\n        strasse: \"Voltastr. / Vahrenwald\"\r\n        hnr: \"25\"\r\n        zusatz: \"\"\r\n```\r\n\r\n```\r\nLogger: waste_collection_schedule.source_shell\r\nSource: custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py:136\r\nIntegration: waste_collection_schedule (documentation)\r\nFirst occurred: 20:08:22 (2 occurrences)\r\nLast logged: 20:09:05\r\n\r\nfetch failed for source Zweckverband Abfallwirtschaft Region Hannover: Traceback (most recent call last): File \"/config/custom_components/waste_collection_schedule/waste_collection_schedule/source_shell.py\", line 134, in fetch entries = self._source.fetch() ^^^^^^^^^^^^^^^^^^^^ File \"/config/custom_components/waste_collection_schedule/waste_collection_schedule/source/aha_region_de.py\", line 85, in fetch with open(\"/home/silas/tmp/test.html\", \"w\") as f: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: '/home/silas/tmp/test.html'`\r\n```\n", "before_files": [{"content": "from waste_collection_schedule import Collection  # type: ignore[attr-defined]\nfrom waste_collection_schedule.service.ICS import ICS\n\nimport requests\nfrom bs4 import BeautifulSoup\n\nTITLE = \"Zweckverband Abfallwirtschaft Region Hannover\"\nDESCRIPTION = \"Source for Zweckverband Abfallwirtschaft Region Hannover.\"\nURL = \"https://www.aha-region.de/\"\nTEST_CASES = {\n    \"Neustadt a. Rbge., Am Rotdorn / N\u00f6pke, 1 \": {\n        \"gemeinde\": \"Neustadt a. Rbge.\",\n        \"strasse\": \"Am Rotdorn / N\u00f6pke\",\n        \"hnr\": 1,\n    },\n    \"Isernhagen, Am Lohner Hof / Isernhagen Fb, 10\": {\n       \"gemeinde\": \"Isernhagen\",\n       \"strasse\": \"Am Lohner Hof / Isernhagen Fb\",\n       \"hnr\": \"10\",\n    },\n    \"Hannover, Voltastr. / Vahrenwald, 25\": {\n        \"gemeinde\": \"Hannover\",\n        \"strasse\": \"Voltastr. / Vahrenwald\",\n        \"hnr\": \"25\",\n    },\n    \"Hannover, Melanchthonstr., 10A\": {\n        \"gemeinde\": \"Hannover\",\n        \"strasse\": \"Melanchthonstr.\",\n        \"hnr\": \"10\",\n        \"zusatz\": \"A\",\n    }\n}\n\nICON_MAP = {\n    \"Restabfall\": \"mdi:trash-can\",\n    \"Glass\": \"mdi:bottle-soda\",\n    \"Bioabfall\": \"mdi:leaf\",\n    \"Papier\": \"mdi:package-variant\",\n    \"Leichtverpackungen\": \"mdi:recycle\",\n}\n\nAPI_URL = \"https://www.aha-region.de/abholtermine/abfuhrkalender\"\n\nclass Source:\n    def __init__(self, gemeinde: str, strasse: str, hnr: str | int, zusatz: str | int = \"\"):\n        self._gemeinde: str = gemeinde\n        self._strasse: str = strasse\n        self._hnr: str = str(hnr)\n        self._zusatz: str = str(zusatz)\n        self._ics = ICS()\n\n    def fetch(self):\n        # find strassen_id\n        r = requests.get(API_URL, params={\"gemeinde\": self._gemeinde, \"von\": \"A\", \"bis\": \"[\"})\n        r.raise_for_status()\n\n        strassen_id = None\n        selects = BeautifulSoup(r.text, \"html.parser\").find(\"select\", {\"id\": \"strasse\"}).find_all(\"option\")\n        for select in selects:\n            if select.text.lower().replace(\" \", \"\") == self._strasse.lower().replace(\" \", \"\"):\n                strassen_id = select[\"value\"]\n                break\n\n        if not strassen_id:\n            raise Exception(\"Street not found for gemeinde: \" + self._gemeinde + \" and strasse: \" + self._strasse)\n\n        # request overview page\n        args = {\n            \"gemeinde\": self._gemeinde,\n            \"jsaus\": \"\",\n            \"strasse\": strassen_id,\n            \"hausnr\": self._hnr,\n            \"hausnraddon\": self._zusatz,\n            \"anzeigen\": \"Suchen\",\n        }\n\n        r = requests.post(API_URL, data=args)\n        r.raise_for_status()\n\n        soup = BeautifulSoup(r.text, \"html.parser\")\n        # find all ICAL download buttons\n        download_buttons = soup.find_all(\"button\", {\"name\": \"ical_apple\"})\n\n        if not download_buttons:\n            with open(\"/home/silas/tmp/test.html\", \"w\") as f:\n                f.write(r.text)\n            raise Exception(\"Invalid response from server, check you configuration if it is correct.\")\n\n        entries = []\n\n        for button in download_buttons:\n            # get form data and request ICAL file for every waste type\n            args = {}\n            args[\"ical_apple\"] = button[\"value\"]\n            form = button.parent\n            for input in form.find_all(\"input\"):\n                args[input[\"name\"]] = input[\"value\"]\n\n            r = requests.post(API_URL, data=args)\n            r.encoding = \"utf-8\"\n\n            dates = self._ics.convert(r.text)\n\n            for d in dates:\n                bin_type = d[1].replace(\"Abfuhr\", \"\").strip()\n                entries.append(Collection(d[0], bin_type, ICON_MAP.get(bin_type)))\n\n        return entries\n", "path": "custom_components/waste_collection_schedule/waste_collection_schedule/source/aha_region_de.py"}], "after_files": [{"content": "import requests\nfrom bs4 import BeautifulSoup\nfrom waste_collection_schedule import Collection  # type: ignore[attr-defined]\nfrom waste_collection_schedule.service.ICS import ICS\n\nTITLE = \"Zweckverband Abfallwirtschaft Region Hannover\"\nDESCRIPTION = \"Source for Zweckverband Abfallwirtschaft Region Hannover.\"\nURL = \"https://www.aha-region.de/\"\nTEST_CASES = {\n    \"Neustadt a. Rbge., Am Rotdorn / N\u00f6pke, 1 \": {\n        \"gemeinde\": \"Neustadt a. Rbge.\",\n        \"strasse\": \"Am Rotdorn / N\u00f6pke\",\n        \"hnr\": 1,\n    },\n    \"Isernhagen, Am Lohner Hof / Isernhagen Fb, 10\": {\n        \"gemeinde\": \"Isernhagen\",\n        \"strasse\": \"Am Lohner Hof / Isernhagen Fb\",\n        \"hnr\": \"10\",\n    },\n    \"Hannover, Voltastr. / Vahrenwald, 25\": {\n        \"gemeinde\": \"Hannover\",\n        \"strasse\": \"Voltastr. / Vahrenwald\",\n        \"hnr\": \"25\",\n    },\n    \"Hannover, Melanchthonstr., 10A\": {\n        \"gemeinde\": \"Hannover\",\n        \"strasse\": \"Melanchthonstr.\",\n        \"hnr\": \"10\",\n        \"zusatz\": \"A\",\n    },\n}\n\nICON_MAP = {\n    \"Restabfall\": \"mdi:trash-can\",\n    \"Glass\": \"mdi:bottle-soda\",\n    \"Bioabfall\": \"mdi:leaf\",\n    \"Papier\": \"mdi:package-variant\",\n    \"Leichtverpackungen\": \"mdi:recycle\",\n}\n\nAPI_URL = \"https://www.aha-region.de/abholtermine/abfuhrkalender\"\n\n\nclass Source:\n    def __init__(\n        self, gemeinde: str, strasse: str, hnr: str | int, zusatz: str | int = \"\"\n    ):\n        self._gemeinde: str = gemeinde\n        self._strasse: str = strasse\n        self._hnr: str = str(hnr)\n        self._zusatz: str = str(zusatz)\n        self._ics = ICS()\n\n    def fetch(self):\n        # find strassen_id\n        r = requests.get(\n            API_URL, params={\"gemeinde\": self._gemeinde, \"von\": \"A\", \"bis\": \"[\"}\n        )\n        r.raise_for_status()\n\n        strassen_id = None\n        selects = (\n            BeautifulSoup(r.text, \"html.parser\")\n            .find(\"select\", {\"id\": \"strasse\"})\n            .find_all(\"option\")\n        )\n        for select in selects:\n            if select.text.lower().replace(\" \", \"\") == self._strasse.lower().replace(\n                \" \", \"\"\n            ):\n                strassen_id = select[\"value\"]\n                break\n\n        if not strassen_id:\n            raise Exception(\n                \"Street not found for gemeinde: \"\n                + self._gemeinde\n                + \" and strasse: \"\n                + self._strasse\n            )\n\n        # request overview page\n        args = {\n            \"gemeinde\": self._gemeinde,\n            \"jsaus\": \"\",\n            \"strasse\": strassen_id,\n            \"hausnr\": self._hnr,\n            \"hausnraddon\": self._zusatz,\n            \"anzeigen\": \"Suchen\",\n        }\n\n        r = requests.post(API_URL, data=args)\n        r.raise_for_status()\n\n        soup = BeautifulSoup(r.text, \"html.parser\")\n        # find all ICAL download buttons\n        download_buttons = soup.find_all(\"button\", {\"name\": \"ical_apple\"})\n\n        if not download_buttons:\n            raise Exception(\n                \"Invalid response from server, check you configuration if it is correct.\"\n            )\n\n        entries = []\n\n        for button in download_buttons:\n            # get form data and request ICAL file for every waste type\n            args = {}\n            args[\"ical_apple\"] = button[\"value\"]\n            form = button.parent\n            for input in form.find_all(\"input\"):\n                args[input[\"name\"]] = input[\"value\"]\n\n            r = requests.post(API_URL, data=args)\n            r.encoding = \"utf-8\"\n\n            dates = self._ics.convert(r.text)\n\n            for d in dates:\n                bin_type = d[1].replace(\"Abfuhr\", \"\").strip()\n                entries.append(Collection(d[0], bin_type, ICON_MAP.get(bin_type)))\n\n        return entries\n", "path": "custom_components/waste_collection_schedule/waste_collection_schedule/source/aha_region_de.py"}]}