mirror of
https://github.com/sascha-hemi/hacs_waste_collection_schedule.git
synced 2026-03-21 00:04:11 +01:00
adding abki_de
This commit is contained in:
@@ -116,6 +116,7 @@ Waste collection schedules in the following formats and countries are supported.
|
||||
- [Abfallwirtschaftsbetrieb Bergisch Gladbach](/doc/source/abfallnavi_de.md) / bergischgladbach.de
|
||||
- [Abfallwirtschaftsbetrieb Esslingen](/doc/source/awb_es_de.md) / awb-es.de
|
||||
- [Abfallwirtschaftsbetrieb Ilm-Kreis](/doc/ics/ilm_kreis_de.md) / ilm-kreis.de
|
||||
- [Abfallwirtschaftsbetrieb Kiel (ABK)](/doc/source/abki_de.md) / abki.de
|
||||
- [Abfallwirtschaftsbetrieb Landkreis Ahrweiler](/doc/source/meinawb_de.md) / meinawb.de
|
||||
- [Abfallwirtschaftsbetrieb Landkreis Altenkirchen](/doc/source/awido_de.md) / awb-ak.de
|
||||
- [Abfallwirtschaftsbetrieb Landkreis Augsburg](/doc/source/c_trace_de.md) / awb-landkreis-augsburg.de
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
import requests
|
||||
from waste_collection_schedule import Collection # type: ignore[attr-defined]
|
||||
from waste_collection_schedule.service.ICS import ICS
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
TITLE = "Abfallwirtschaftsbetrieb Kiel (ABK)"
|
||||
DESCRIPTION = "Source for Abfallwirtschaftsbetrieb Kiel (ABK)."
|
||||
URL = "https://abki.de/"
|
||||
TEST_CASES = {
|
||||
"auguste-viktoria-straße, 14": {"street": "auguste-viktoria-straße", "number": 14},
|
||||
"Achterwehrer Straße, 1 A": {"street": "Achterwehrer Straße", "number": "1 a"},
|
||||
}
|
||||
|
||||
|
||||
ICON_MAP = {
|
||||
"Restabfall": "mdi:trash-can",
|
||||
"Glass": "mdi:bottle-soda",
|
||||
"Bioabfall": "mdi:leaf",
|
||||
"Papier": "mdi:package-variant",
|
||||
"Gelbe": "mdi:recycle",
|
||||
}
|
||||
|
||||
|
||||
ICAL_URL = "https://abki.de/abki-services/abki-leerungen-ical"
|
||||
REQUEST_DATA_ARG = "{year}-{street}-{number}-stand-{date}"
|
||||
|
||||
|
||||
class Source:
|
||||
def __init__(self, street: str, number: str | int):
|
||||
self._street: str = street.replace(" ", "-").lower()
|
||||
self._number: str = str(number).replace(" ", "-").lower()
|
||||
self._ics = ICS()
|
||||
|
||||
def fetch(self):
|
||||
now = datetime.now()
|
||||
args = {
|
||||
"street": self._street,
|
||||
"number": self._number,
|
||||
"date": now.strftime("%d-%m-%Y"),
|
||||
}
|
||||
|
||||
# get ICS file
|
||||
request_data = REQUEST_DATA_ARG.format(year=now.year, **args)
|
||||
r = requests.get(ICAL_URL, params={"data": request_data})
|
||||
|
||||
dates = self._ics.convert(r.text)
|
||||
|
||||
# if december, also try to get next year
|
||||
if now.month == 12:
|
||||
request_data = REQUEST_DATA_ARG.format(year=now.year+1, **args)
|
||||
try:
|
||||
r = requests.get(ICAL_URL, params={"data": request_data})
|
||||
dates += self._ics.convert(r.text)
|
||||
except:
|
||||
pass
|
||||
|
||||
entries = []
|
||||
for d in dates:
|
||||
entries.append(Collection(d[0], d[1], ICON_MAP.get(d[1].split(" ")[0])))
|
||||
|
||||
return entries
|
||||
39
doc/source/abki_de.md
Normal file
39
doc/source/abki_de.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# Abfallwirtschaftsbetrieb Kiel (ABK)
|
||||
|
||||
Support for schedules provided by [Abfallwirtschaftsbetrieb Kiel (ABK)](https://abki.de/), serving Kiel, Germany.
|
||||
|
||||
## Configuration via configuration.yaml
|
||||
|
||||
```yaml
|
||||
waste_collection_schedule:
|
||||
sources:
|
||||
- name: abki_de
|
||||
args:
|
||||
street: STREET
|
||||
number: "HOUSE NUMBER"
|
||||
|
||||
```
|
||||
|
||||
### Configuration Variables
|
||||
|
||||
**street**
|
||||
*(String) (required)*
|
||||
|
||||
**number**
|
||||
*(String | Integer) (required)*
|
||||
|
||||
## Example
|
||||
|
||||
```yaml
|
||||
waste_collection_schedule:
|
||||
sources:
|
||||
- name: abki_de
|
||||
args:
|
||||
street: Achterwehrer Straße
|
||||
number: 1 a
|
||||
|
||||
```
|
||||
|
||||
## How to get the source argument
|
||||
|
||||
Find the parameter of your address using [https://abki.de/dienste/entsorgung-und-recycling/behälter/leerungstermine.html](https://abki.de/dienste/entsorgung-und-recycling/behälter/leerungstermine.html) and write them exactly like on the web page.
|
||||
Reference in New Issue
Block a user