mirror of
https://github.com/sascha-hemi/hacs_waste_collection_schedule.git
synced 2026-03-21 04:06:03 +01:00
adapted to new API
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user