adapted to new API

This commit is contained in:
christian
2023-01-05 06:58:49 +01:00
parent 032756ed33
commit 56f56fcc46
2 changed files with 51 additions and 13 deletions

View File

@@ -1,16 +1,19 @@
import urllib
import logging
import requests
import urllib
from bs4 import BeautifulSoup
from datetime import date
from waste_collection_schedule import Collection # type: ignore[attr-defined]
from waste_collection_schedule.service.ICS import ICS
TITLE = "AWB Oldenburg"
DESCRIPTION = "Source for 'Abfallwirtschaftsbetrieb Stadt Oldenburg (Oldb)'."
URL = "https://services.oldenburg.de/index.php"
URL = "https://www.oldenburg.de/startseite/leben-umwelt/awb/abfall-a-z/abfuhrkalender.html"
TEST_CASES = {
"Polizeiinspektion Oldenburg": {"street": "Friedhofsweg", "house_number": 30}
}
_LOGGER = logging.getLogger(__name__)
class Source:
def __init__(self, street, house_number):
@@ -20,18 +23,27 @@ class Source:
def fetch(self):
street_idx = self.get_street_idx(self._street)
if street_idx == -1:
_LOGGER.error("Error: Street not found..")
return []
year = date.today().year
args = {
"id": 430,
"tx_citkoabfall_abfallkalender[strasse]": str(self._street).encode("utf-8"),
"tx_citkoabfall_abfallkalender[hausnummer]": str(self._house_number).encode(
"tx_collectioncalendar_abfuhrkalender[action]": "exportIcs",
"tx_collectioncalendar_abfuhrkalender[controller]": "Frontend\Export",
"tx_collectioncalendar_abfuhrkalender[houseNumber]": str(self._house_number).encode(
"utf-8"
),
"tx_citkoabfall_abfallkalender[abfallarten][0]": 61,
"tx_citkoabfall_abfallkalender[abfallarten][1]": 60,
"tx_citkoabfall_abfallkalender[abfallarten][2]": 59,
"tx_citkoabfall_abfallkalender[abfallarten][3]": 58,
"tx_citkoabfall_abfallkalender[action]": "ics",
"tx_citkoabfall_abfallkalender[controller]": "FrontendIcs",
"tx_collectioncalendar_abfuhrkalender[street]": str(street_idx).encode(
"utf-8"
),
"tx_collectioncalendar_abfuhrkalender[wasteTypes][1]": 1,
"tx_collectioncalendar_abfuhrkalender[wasteTypes][2]": 2,
"tx_collectioncalendar_abfuhrkalender[wasteTypes][3]": 3,
"tx_collectioncalendar_abfuhrkalender[wasteTypes][4]": 4,
"tx_collectioncalendar_abfuhrkalender[wasteTypes][5]": 5,
"tx_collectioncalendar_abfuhrkalender[year]": year
}
# use '%20' instead of '+' in URL
@@ -47,3 +59,29 @@ class Source:
for d in dates:
entries.append(Collection(d[0], d[1]))
return entries
def get_street_mapping(self): # thanks @dt215git (https://github.com/mampfes/hacs_waste_collection_schedule/issues/539#issuecomment-1371413297)
s = requests.Session()
r = s.get(URL)
soup = BeautifulSoup(r.text, "html.parser")
items = soup.find_all("option")
items = items[2:] # first two values are not street addresses so remove them
streets = []
ids = []
for item in items:
streets.append(item.text) # street name
ids.append(item.attrs["value"]) # dropdown value
mapping = {k:v for (k,v) in zip(streets, ids)}
return mapping
def get_street_idx(self, street):
mapping = self.get_street_mapping()
for _street, idx in mapping.items():
if _street == street:
return idx
return -1

View File

@@ -1,6 +1,6 @@
# Abfallwirtschaftsbetrieb Stadt Oldenburg (Oldb)
Support for schedules provided by [services.oldenburg.de](https://services.oldenburg.de/index.php?id=430).
Support for schedules provided by [www.oldenburg.de](https://www.oldenburg.de/startseite/leben-umwelt/awb/abfall-a-z/abfuhrkalender.html).
## Configuration via configuration.yaml