adding tonnenleerung_de

This commit is contained in:
5ila5
2024-02-05 18:53:20 +01:00
committed by 5ila5
parent 204f7b3a0d
commit 73a9771260
4 changed files with 138 additions and 1 deletions

View File

@@ -926,6 +926,9 @@ Waste collection schedules in the following formats and countries are supported.
- [TBR Remscheid](/doc/source/muellmax_de.md) / tbr-info.de
- [TBV Velbert](/doc/source/tbv_velbert_de.md) / tbv-velbert.de
- [Technischer Betriebsdienst Reutlingen](/doc/ics/tbr_reutlingen_de.md) / tbr-reutlingen.de
- [tonnenleerung.de LK Aichach-Friedberg + Neuburg-Schrobenhausen](/doc/source/tonnenleerung_de.md) / tonnenleerung.de
- [tonnenleerung.de LK Aichach-Friedberg + Neuburg-Schrobenhausen](/doc/source/tonnenleerung_de.md) / tonnenleerung.de/aic-fdb
- [tonnenleerung.de LK Aichach-Friedberg + Neuburg-Schrobenhausen](/doc/source/tonnenleerung_de.md) / tonnenleerung.de/nd-sob
- [Tuttlingen](/doc/source/app_abfallplus_de.md) / Abfall+ App: abfallwecker
- [Tuttlingen](/doc/source/app_abfallplus_de.md) / Abfall+ App: unterallgaeu
- [Tübingen](/doc/source/app_abfallplus_de.md) / Abfall+ App: app

View File

@@ -0,0 +1,88 @@
import json
import re
from datetime import datetime
import requests
from waste_collection_schedule import Collection # type: ignore[attr-defined]
TITLE = "tonnenleerung.de LK Aichach-Friedberg + Neuburg-Schrobenhausen"
DESCRIPTION = (
"Source for tonnenleerung.de LK Aichach-Friedberg + Neuburg-Schrobenhausen."
)
URL = "https://tonnenleerung.de"
TEST_CASES = {
"nd-sob/neuburg-donau/abbevillestrasse/": {
"url": "nd-sob/neuburg-donau/abbevillestrasse/"
},
"aic-fdb/affing/": {"url": "https://tonnenleerung.de/aic-fdb/affing"},
"nd-sob/schrobenhausen/albertus-magnus-weg/": {
"url": "/nd-sob/schrobenhausen/albertus-magnus-weg/"
},
}
ICON_MAP = {
"grau4": "mdi:trash-can",
"grau": "mdi:trash-can",
"Bio": "mdi:leaf",
"blau": "mdi:package-variant",
"gelb": "mdi:recycle",
}
API_URL = "https://tonnenleerung.de/{url}"
EXTRA_INFO = [
{
"name": "LK Aichach-Friedberg",
"url": "https://tonnenleerung.de/aic-fdb/",
},
{
"name": "LK Neuburg-Schrobenhausen",
"url": "https://tonnenleerung.de/nd-sob/",
},
]
# Array names included in the html file
ARRAY_NAMES = ["blauArray", "gelbArray", "grauArray", "braunArray", "grau4Array"]
REGEX_TEMPLATE = r"{array_name}\s?=\s?\[[,\"\-\d]*\]"
# Array names to names shown on the frontend
NAME_2_TYPE = {
"blauArray": "blau",
"gelbArray": "gelb",
"grauArray": "grau",
"braunArray": "Bio",
"grau4Array": "grau4",
}
class Source:
def __init__(self, url: str):
self._url: str = url
if "tonnenleerung.de" in self._url:
self._url = self._url.split("tonnenleerung.de")[1]
if self._url.startswith("/"):
self._url = self._url[1:]
def fetch(self):
# get json file
r = requests.get(API_URL.format(url=self._url))
r.raise_for_status()
entries = []
for array_name in ARRAY_NAMES:
array = re.search(REGEX_TEMPLATE.format(array_name=array_name), r.text)
if not array:
continue
bin_type = NAME_2_TYPE[array_name]
dates = json.loads(array.group(0).split("=")[1])
for date_str in dates:
date = datetime.strptime(date_str, "%Y-%m-%d").date()
icon = ICON_MAP.get(bin_type) # Collection icon
entries.append(Collection(date=date, t=bin_type, icon=icon))
return entries

View File

@@ -0,0 +1,46 @@
# tonnenleerung.de LK Aichach-Friedberg + Neuburg-Schrobenhausen
Support for schedules provided by [tonnenleerung.de LK Aichach-Friedberg + Neuburg-Schrobenhausen](https://tonnenleerung.de), serving LK Aichach-Friedberg + Neuburg-Schrobenhausen, Germany.
## Configuration via configuration.yaml
```yaml
waste_collection_schedule:
sources:
- name: tonnenleerung_de
args:
url: URL
```
### Configuration Variables
**url**
*(String) (required)*
## Example
```yaml
waste_collection_schedule:
sources:
- name: tonnenleerung_de
args:
url: nd-sob/neuburg-donau/abbevillestrasse/
```
should work with full ULR as well.
```yaml
waste_collection_schedule:
sources:
- name: tonnenleerung_de
args:
url: https://tonnenleerung.de/aic-fdb/affing
```
## How to get the source argument
Go to [https://tonnenleerung.de](https://tonnenleerung.de) and search your address. Use the url after https://tonnenleerung.de/ url parameter.
e.g https://tonnenleerung.de/nd-sob/neuburg-donau/abbevillestrasse/ -> nd-sob/neuburg-donau/abbevillestrasse/

File diff suppressed because one or more lines are too long