adding abki_de

This commit is contained in:
5ila5
2023-04-13 19:39:35 +02:00
parent 58b0ea6867
commit 59aecdc15d
4 changed files with 103 additions and 1 deletions

View File

@@ -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

View File

@@ -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
View 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.

File diff suppressed because one or more lines are too long