diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/source/stavanger_no.py b/custom_components/waste_collection_schedule/waste_collection_schedule/source/stavanger_no.py index 93e8b02a..0291d72a 100644 --- a/custom_components/waste_collection_schedule/waste_collection_schedule/source/stavanger_no.py +++ b/custom_components/waste_collection_schedule/waste_collection_schedule/source/stavanger_no.py @@ -1,14 +1,20 @@ from datetime import datetime -from waste_collection_schedule import Collection # type: ignore[attr-defined] -import json + import requests from bs4 import BeautifulSoup +from waste_collection_schedule import Collection # type: ignore[attr-defined] -TITLE = "Stavanger" +TITLE = "Stavanger Kommune" DESCRIPTION = "Source for Stavanger Kommune, Norway" URL = "https://www.stavanger.kommune.no/" TEST_CASES = { - "TestcaseI": {"id": "57bf9d36-722e-400b-ae93-d80f8e354724", "municipality": "Stavanger", "gnumber": "57", "bnumber": "922", "snumber": "0"}, + "TestcaseI": { + "id": "57bf9d36-722e-400b-ae93-d80f8e354724", + "municipality": "Stavanger", + "gnumber": "57", + "bnumber": "922", + "snumber": "0", + }, } ICON_MAP = { @@ -18,6 +24,7 @@ ICON_MAP = { "Juletre": "mdi:pine-tree", } + class Source: def __init__(self, id, municipality, gnumber, bnumber, snumber): self._id = id @@ -27,43 +34,38 @@ class Source: self._snumber = snumber def fetch(self): - url = 'https://www.stavanger.kommune.no/renovasjon-og-miljo/tommekalender/finn-kalender/show' - headers = { - 'referer': 'https://www.stavanger.kommune.no' - } + url = "https://www.stavanger.kommune.no/renovasjon-og-miljo/tommekalender/finn-kalender/show" + headers = {"referer": "https://www.stavanger.kommune.no"} - params = { - 'id' : self._id, - 'municipality' : self._municipality, - 'gnumber' : self._gnumber, - 'bnumber' : self._bnumber, - 'snumber' : self._snumber - } + params = { + "id": self._id, + "municipality": self._municipality, + "gnumber": self._gnumber, + "bnumber": self._bnumber, + "snumber": self._snumber, + } - r = requests.get(url, params=params, headers=headers) + r = requests.get(url, params=params, headers=headers) + r.raise_for_status() - print(r.text) + soup = BeautifulSoup(r.text, "html.parser") - soup = BeautifulSoup(r.text, "html.parser") + tag = soup.find_all("option") + year = tag[0].get("value").split("-") + year = year[1] - tag = soup.find_all("option") - year = tag[0].get('value').split('-') - year = year[1] + entries = [] + for tag in soup.find_all("tr", {"class": "waste-calendar__item"}): + if tag.text.strip() == "Dato og dag\nAvfallstype": + continue - entries = [] - for tag in soup.find_all("tr", {"class":"waste-calendar__item"}): - if tag.text.strip() == 'Dato og dag\nAvfallstype': - continue + date = tag.text.strip().split(" - ") + date = datetime.strptime(date[0] + "." + year, "%d.%m.%Y").date() - date = tag.text.strip().split(' - ') - date = datetime.strptime(date[0]+'.'+year, '%d.%m.%Y').date() - #print (date) + for img in tag.find_all("img"): + waste_type = img.get("title") + entries.append( + Collection(date, waste_type, icon=ICON_MAP.get(waste_type)) + ) - for img in tag.find_all("img"): - print (date,img.get('title')) - icon = ICON_MAP.get(img.get('title')) - entries.append( - Collection(date, img.get('title'), icon=icon) - ) - - return entries + return entries diff --git a/doc/source/stavanger_no.md b/doc/source/stavanger_no.md index 4f7d523d..ca22bb4f 100644 --- a/doc/source/stavanger_no.md +++ b/doc/source/stavanger_no.md @@ -20,14 +20,19 @@ waste_collection_schedule: **id** *(string) (required)* + **municipality** *(string) (required)* + **gnumber** *(string) (required)* + **bnumber** *(string) (required)* + **snumber** *(string) (required)* + ## Example ```yaml @@ -47,7 +52,7 @@ waste_collection_schedule: Visit the [Stavanger Kommune, Norway](https://www.stavanger.kommune.no/renovasjon-og-miljo/tommekalender/finn-kalender/) page and search for your address. use the parameters for url -##Example URL +## Example URL https://www.stavanger.kommune.no/renovasjon-og-miljo/tommekalender/finn-kalender/show?id=afe76cc0-19a9-4345-99bc-920bd16ab7cc&municipality=Stavanger&gnumber=58&bnumber=968&snumber=0 @@ -58,4 +63,3 @@ extract the arguments from this url you get. in this example **gnumber**=58 **bnumber**=968 **snumber**=0 -