mirror of
https://github.com/sascha-hemi/hacs_waste_collection_schedule.git
synced 2026-03-21 04:06:03 +01:00
added zva_sek_de #763
This commit is contained in:
@@ -256,6 +256,7 @@ Waste collection schedules in the following formats and countries are supported.
|
||||
- [WZV Kreis Segeberg](/doc/source/c_trace_de.md) / wzv.de
|
||||
- [ZAW Darmstadt-Dieburg](/doc/source/zaw_online_de.md) / zaw-online.de
|
||||
- [Zweckverband Abfallwirtschaft Saale-Orla](/doc/source/awido_de.md) / zaso-online.de
|
||||
- [Zweckverband Abfallwirtschaft Schwalm-Eder-Kreis](/doc/source/zva_sek_de.md) / zva-sek.de
|
||||
- [Zweckverband München-Südost](/doc/source/awido_de.md) / zvmso.de
|
||||
</details>
|
||||
|
||||
|
||||
@@ -0,0 +1,128 @@
|
||||
import re
|
||||
import requests
|
||||
from datetime import datetime
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
from waste_collection_schedule import Collection # type: ignore[attr-defined]
|
||||
from waste_collection_schedule.service.ICS import ICS
|
||||
|
||||
TITLE = "Zweckverband Abfallwirtschaft Schwalm-Eder-Kreis"
|
||||
DESCRIPTION = "Source for ZVA (Zweckverband Abfallwirtschaft Schwalm-Eder-Kreis)."
|
||||
URL = "https://www.zva-sek.de"
|
||||
TEST_CASES = {
|
||||
"Fritzlar": {
|
||||
"bezirk": "Fritzlar",
|
||||
"ortsteil": "Fritzlar-kernstadt",
|
||||
"strasse": "Ahornweg",
|
||||
},
|
||||
"Ottrau": {
|
||||
"bezirk": "Ottrau",
|
||||
"ortsteil": "immichenhain",
|
||||
"strasse": "",
|
||||
},
|
||||
"Knüllwald": {
|
||||
"bezirk": "Knüllwald",
|
||||
"ortsteil": "Hergetsfeld",
|
||||
},
|
||||
}
|
||||
SERVLET = (
|
||||
"https://www.zva-sek.de/module/abfallkalender/generate_ical.php"
|
||||
)
|
||||
MAIN_URL = "https://www.zva-sek.de/online-dienste/abfallkalender-{year}/{file}"
|
||||
API_URL = "https://www.zva-sek.de/module/abfallkalender/{file}"
|
||||
|
||||
|
||||
class Source:
|
||||
def __init__(
|
||||
self, bezirk: str, ortsteil: str, strasse: str = None
|
||||
):
|
||||
self._bezirk = bezirk
|
||||
self._ortsteil = ortsteil
|
||||
self._street = strasse if strasse != "" else None
|
||||
self._ics = ICS()
|
||||
|
||||
def fetch(self):
|
||||
session = requests.session()
|
||||
year = datetime.now().year
|
||||
|
||||
bezirk_id = None
|
||||
ortsteil_id = None
|
||||
|
||||
# get bezirke id
|
||||
r = session.get(MAIN_URL.format(
|
||||
year=year, file=f"abfallkalender-{year}.html"))
|
||||
if (r.status_code == 404): # try last year URL if this year is not available
|
||||
r = session.get(MAIN_URL.format(
|
||||
year=year, file=f"abfallkalender-{year-1}.html"))
|
||||
r.raise_for_status()
|
||||
|
||||
soup = BeautifulSoup(r.text, features="html.parser")
|
||||
for option in soup.find("select", {"name": "ak_bezirk"}).find_all("option"):
|
||||
if option.text.lower() == self._bezirk.lower():
|
||||
self._bezirk = option.get("value")
|
||||
bezirk_id = option.get("value")
|
||||
break
|
||||
|
||||
if not bezirk_id:
|
||||
raise Exception(f"bezirk not found")
|
||||
|
||||
# get ortsteil id
|
||||
r = session.get(API_URL.format(
|
||||
file="get_ortsteile.php"), params={"bez_id": bezirk_id})
|
||||
r.raise_for_status()
|
||||
last_orts_id = None
|
||||
for part in r.text.split(";")[2:-1]:
|
||||
# part is "f.ak_ortsteil.options[5].text = 'Alte Kasseler Straße'" or "ak_ortsteil.options[6].value = '2'"
|
||||
if ("length" in part):
|
||||
continue
|
||||
if part.split(" = ")[1][1:-1].lower() == self._ortsteil.lower():
|
||||
ortsteil_id = last_orts_id
|
||||
break
|
||||
last_orts_id = part.split(" = ")[1][1:-1]
|
||||
|
||||
if not ortsteil_id:
|
||||
raise Exception(f"ortsteil not found")
|
||||
|
||||
street_id = None
|
||||
|
||||
# get street id if steet given
|
||||
if self._street is not None:
|
||||
r = session.get(API_URL.format(
|
||||
file="get_strassen.php"), params={"ot_id": ortsteil_id.split("-")[0]})
|
||||
r.raise_for_status()
|
||||
last_street_id = None
|
||||
for part in r.text.split(";")[2:-1]:
|
||||
# part is "f.ak_strasse.options[5].text = 'Alte Kasseler Straße'" or "ak_strasse.options[6].value = '2'"
|
||||
if ("length" in part):
|
||||
continue
|
||||
if part.split(" = ")[1][1:-1].lower() == self._street.lower():
|
||||
street_id = last_street_id
|
||||
break
|
||||
last_street_id = part.split(" = ")[1][1:-1]
|
||||
|
||||
if not street_id:
|
||||
raise Exception(f"street not found")
|
||||
|
||||
args = {
|
||||
"year": str(year),
|
||||
"ak_bezirk": bezirk_id,
|
||||
"ak_ortsteil": ortsteil_id,
|
||||
"alle_arten": "",
|
||||
}
|
||||
if self._street is not None:
|
||||
args["ak_strasse"] = street_id
|
||||
|
||||
r = session.post(
|
||||
SERVLET,
|
||||
data=args,
|
||||
)
|
||||
|
||||
r.raise_for_status()
|
||||
dates = self._ics.convert(r.text)
|
||||
|
||||
entries = []
|
||||
for d in dates:
|
||||
entries.append(Collection(d[0], re.sub(
|
||||
"[ ]*am [0-9]+.[0-9]+.[0-9]+[ ]*", "", d[1])))
|
||||
return entries
|
||||
54
doc/source/zva_sek_de.md
Normal file
54
doc/source/zva_sek_de.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# Zweckverband Abfallwirtschaft Schwalm-Eder-Kreis (ZVA)
|
||||
|
||||
Support for schedules provided by [Abfallwirtschaft Schwalm-Eder-Kreis](https://www.zva-sek.de/) located in Hessia, Germany.
|
||||
|
||||
## Configuration via configuration.yaml
|
||||
|
||||
```yaml
|
||||
waste_collection_schedule:
|
||||
sources:
|
||||
- name: zva_sek_de
|
||||
args:
|
||||
bezirk: BEZITK
|
||||
ortsteil: ORTSTEIL
|
||||
strasse: STRASSE
|
||||
|
||||
```
|
||||
|
||||
### Configuration Variables
|
||||
|
||||
**bezirk**
|
||||
*(string) (required)*
|
||||
|
||||
**ortsteil**
|
||||
*(string) (required)*
|
||||
|
||||
**strasse**
|
||||
*(string) (optional) (default: "")*
|
||||
|
||||
|
||||
## Example
|
||||
|
||||
```yaml
|
||||
waste_collection_schedule:
|
||||
sources:
|
||||
- name: zva_sek_de
|
||||
args:
|
||||
bezirk: "Fritzlar"
|
||||
ortsteil: "Fritzlar-kernstadt"
|
||||
strasse: "Ahornweg"
|
||||
```
|
||||
|
||||
```yaml
|
||||
waste_collection_schedule:
|
||||
sources:
|
||||
- name: zva_sek_de
|
||||
args:
|
||||
bezirk: "Ottrau"
|
||||
ortsteil: "Immichenhain"
|
||||
|
||||
```
|
||||
|
||||
## How to get the source arguments
|
||||
|
||||
These values are the location you want to query for. Make sure, the writing is exactly as it is on [https://www.zva-sek.de/online-dienste](https://www.zva-sek.de/online-dienste) Online-Dienste -> Abfallkalender. Typos will result in an parsing error which is printed in the log.
|
||||
2
info.md
2
info.md
@@ -20,7 +20,7 @@ Waste collection schedules from service provider web sites are updated daily, de
|
||||
| Austria | Burgenländischer Müllverband, infeo, Stadtservice Korneuburg, Umweltprofis, WSZ Moosburg |
|
||||
| Belgium | Hygea, Recycle! |
|
||||
| Canada | City of Toronto |
|
||||
| Germany | Abfall Stuttgart, Abfall-Wirtschafts-Verband Nordschwaben, Abfall.IO / AbfallPlus, Abfallbewirtschaftung Ostalbkreis, Abfallkalender Offenbach am Main, Abfallkalender Würzburg, AbfallNavi (RegioIT.de), Abfalltermine Forchheim, Abfallwirtschaft Alb-Donau-Kreis, Abfallwirtschaft Germersheim, Abfallwirtschaft Isar-Inn, Abfallwirtschaft Lahn-Dill-Kreises, Abfallwirtschaft Landkreis Böblingen, Abfallwirtschaft Landkreis Freudenstadt, Abfallwirtschaft Landkreis Harburg, Abfallwirtschaft Landkreis Kitzingen, Abfallwirtschaft Landkreis Landsberg am Lech, Abfallwirtschaft Landkreis Wolfenbüttel, Abfallwirtschaft Neckar-Odenwald-Kreis, Abfallwirtschaft Nürnberger Land, Abfallwirtschaft Ortenaukreis, Abfallwirtschaft Rems-Murr, Abfallwirtschaft Rendsburg, Abfallwirtschaft Rheingau-Taunus-Kreis, Abfallwirtschaft Stadt Fürth, Abfallwirtschaft Stadt Nürnberg, Abfallwirtschaft Stadt Schweinfurt, Abfallwirtschaft Südholstein, Abfallwirtschaft Werra-Meißner-Kreis, Abfallwirtschaft Zollernalbkreis, Abfallwirtschafts-Zweckverband des Landkreises Hersfeld-Rotenburg, Abfallwirtschaftsbetrieb Bergisch Gladbach, Abfallwirtschaftsbetrieb Esslingen, Abfallwirtschaftsbetrieb Landkreis Ahrweiler, Abfallwirtschaftsbetrieb Landkreis Altenkirchen, Abfallwirtschaftsbetrieb Landkreis Augsburg, Abfallwirtschaftsbetrieb Landkreis Aurich, Abfallwirtschaftsverband Kreis Groß-Gerau, ALBA Berlin, ART Trier, ASO Abfall-Service Osterholz, AWA Entsorgungs GmbH, AWB Bad Kreuznach, AWB Köln, AWB Landkreis Bad Dürkheim, AWB Landkreis Fürstenfeldbruck, AWB Landkreis Göppingen, AWB Oldenburg, AWB Westerwaldkreis, AWG Kreis Warendorf, AWIDO Online, Bau & Service Oberursel, Bergischer Abfallwirtschaftverbund, Berlin Recycling, Berliner Stadtreinigungsbetriebe, Bielefeld, Bogenschütz Entsorgung, Bremer Stadtreinigung, Bürgerportal, C-Trace, CM City Media - Müllkalender, Dillingen Saar, Dinslaken, EAD Darmstadt, EGN Abfallkalender, EGST Steinfurt, EGW Westmünsterland, Entsorgungs- und Wirtschaftsbetrieb Landau in der Pfalz, Entsorgungsbetriebe Essen, Gemeinde Aschheim, Gemeinde Blankenheim, Gemeinde Bühlerzell, Gemeinde Deggenhausertal, Gemeinde Kalletal, Gemeinde Kappelrodeck, Gemeinde Kressbronn am Bodensee, Gemeinde Lindlar, Gemeinde Mittelbiberach, Gemeinde Oberstadion, Gemeinde Roetgen, Gemeinde Schutterwald, Gemeinde Senden (Westfalen), Gemeinde Unterhaching, Göttinger Entsorgungsbetriebe, Gütersloh, Halver, Hohenlohekreis, Jumomind, KAEV Niederlausitz, Kreis Coesfeld, Kreis Heinsberg, Kreis Pinneberg, Kreisstadt Dietzenbach, Kreisstadt St. Wendel, Kreiswirtschaftsbetriebe Goslar, KV Cochem-Zell, KWU Entsorgung Landkreis Oder-Spree, Landkreis Ansbach, Landkreis Aschaffenburg, Landkreis Bayreuth, Landkreis Berchtesgadener Land, Landkreis Calw, Landkreis Coburg, Landkreis Erding, Landkreis Erlangen-Höchstadt, Landkreis Fulda, Landkreis Gotha, Landkreis Günzburg, Landkreis Heilbronn, Landkreis Kelheim, Landkreis Kronach, Landkreis Limburg-Weilburg, Landkreis Nordwestmecklenburg, Landkreis Ostallgäu, Landkreis Rhön Grabfeld, Landkreis Rosenheim, Landkreis Rotenburg (Wümme), Landkreis Roth, Landkreis Schweinfurt, Landkreis Schwäbisch Hall, Landkreis Schwäbisch Hall, Landkreis Sigmaringen, Landkreis Südliche Weinstraße, Landkreis Tirschenreuth, Landkreis Tübingen, Landkreis Weißenburg-Gunzenhausen, Landkreis Wittmund, Landkreisbetriebe Neuburg-Schrobenhausen, Landratsamt Aichach-Friedberg, Landratsamt Dachau, Landratsamt Main-Tauber-Kreis, Landratsamt Traunstein, Landratsamt Unterallgäu, Ludwigshafen am Rhein, MZV Biedenkopf, MüllALARM / Schönmackers, Müllmax, Neunkirchen Siegerland, Neustadt a.d. Waldnaab, Pullach im Isartal, RegioEntsorgung Städteregion Aachen, Rhein-Hunsrück Entsorgung (RHE), Rhein-Neckar-Kreis, Sector 27 - Datteln, Marl, Oer-Erkenschwick, Stadt Aachen, Stadt Arnsberg, Stadt Bayreuth, Stadt Cottbus, Stadt Dorsten, Stadt Ehingen, Stadt Emden, Stadt Emmendingen, Stadt Fulda, Stadt Kaufbeuren, Stadt Kraichtal, Stadt Landshut, Stadt Memmingen, Stadt Messstetten, Stadt Norderstedt, Stadt Overath, Stadt Regensburg, Stadt Solingen, Stadt Unterschleißheim, Stadt Willich, Stadtreinigung Dresden, Stadtreinigung Hamburg, Stadtreinigung Leipzig, StadtService Brühl, STL Lüdenscheid, Städteservice Raunheim Rüsselsheim, Südbrandenburgischer Abfallzweckverband, WBO Wirtschaftsbetriebe Oberhausen, Wermelskirchen, WGV Recycling GmbH, Wolfsburger Abfallwirtschaft und Straßenreinigung, WZV Kreis Segeberg, ZAW Darmstadt-Dieburg, Zweckverband Abfallwirtschaft Saale-Orla, Zweckverband München-Südost |
|
||||
| Germany | Abfall Stuttgart, Abfall-Wirtschafts-Verband Nordschwaben, Abfall.IO / AbfallPlus, Abfallbewirtschaftung Ostalbkreis, Abfallkalender Offenbach am Main, Abfallkalender Würzburg, AbfallNavi (RegioIT.de), Abfalltermine Forchheim, Abfallwirtschaft Alb-Donau-Kreis, Abfallwirtschaft Germersheim, Abfallwirtschaft Isar-Inn, Abfallwirtschaft Lahn-Dill-Kreises, Abfallwirtschaft Landkreis Böblingen, Abfallwirtschaft Landkreis Freudenstadt, Abfallwirtschaft Landkreis Harburg, Abfallwirtschaft Landkreis Kitzingen, Abfallwirtschaft Landkreis Landsberg am Lech, Abfallwirtschaft Landkreis Wolfenbüttel, Abfallwirtschaft Neckar-Odenwald-Kreis, Abfallwirtschaft Nürnberger Land, Abfallwirtschaft Ortenaukreis, Abfallwirtschaft Rems-Murr, Abfallwirtschaft Rendsburg, Abfallwirtschaft Rheingau-Taunus-Kreis, Abfallwirtschaft Stadt Fürth, Abfallwirtschaft Stadt Nürnberg, Abfallwirtschaft Stadt Schweinfurt, Abfallwirtschaft Südholstein, Abfallwirtschaft Werra-Meißner-Kreis, Abfallwirtschaft Zollernalbkreis, Abfallwirtschafts-Zweckverband des Landkreises Hersfeld-Rotenburg, Abfallwirtschaftsbetrieb Bergisch Gladbach, Abfallwirtschaftsbetrieb Esslingen, Abfallwirtschaftsbetrieb Landkreis Ahrweiler, Abfallwirtschaftsbetrieb Landkreis Altenkirchen, Abfallwirtschaftsbetrieb Landkreis Augsburg, Abfallwirtschaftsbetrieb Landkreis Aurich, Abfallwirtschaftsverband Kreis Groß-Gerau, ALBA Berlin, ART Trier, ASO Abfall-Service Osterholz, AWA Entsorgungs GmbH, AWB Bad Kreuznach, AWB Köln, AWB Landkreis Bad Dürkheim, AWB Landkreis Fürstenfeldbruck, AWB Landkreis Göppingen, AWB Oldenburg, AWB Westerwaldkreis, AWG Kreis Warendorf, AWIDO Online, Bau & Service Oberursel, Bergischer Abfallwirtschaftverbund, Berlin Recycling, Berliner Stadtreinigungsbetriebe, Bielefeld, Bogenschütz Entsorgung, Bremer Stadtreinigung, Bürgerportal, C-Trace, CM City Media - Müllkalender, Dillingen Saar, Dinslaken, EAD Darmstadt, EGN Abfallkalender, EGST Steinfurt, EGW Westmünsterland, Entsorgungs- und Wirtschaftsbetrieb Landau in der Pfalz, Entsorgungsbetriebe Essen, Gemeinde Aschheim, Gemeinde Blankenheim, Gemeinde Bühlerzell, Gemeinde Deggenhausertal, Gemeinde Kalletal, Gemeinde Kappelrodeck, Gemeinde Kressbronn am Bodensee, Gemeinde Lindlar, Gemeinde Mittelbiberach, Gemeinde Oberstadion, Gemeinde Roetgen, Gemeinde Schutterwald, Gemeinde Senden (Westfalen), Gemeinde Unterhaching, Göttinger Entsorgungsbetriebe, Gütersloh, Halver, Hohenlohekreis, Jumomind, KAEV Niederlausitz, Kreis Coesfeld, Kreis Heinsberg, Kreis Pinneberg, Kreisstadt Dietzenbach, Kreisstadt St. Wendel, Kreiswirtschaftsbetriebe Goslar, KV Cochem-Zell, KWU Entsorgung Landkreis Oder-Spree, Landkreis Ansbach, Landkreis Aschaffenburg, Landkreis Bayreuth, Landkreis Berchtesgadener Land, Landkreis Calw, Landkreis Coburg, Landkreis Erding, Landkreis Erlangen-Höchstadt, Landkreis Fulda, Landkreis Gotha, Landkreis Günzburg, Landkreis Heilbronn, Landkreis Kelheim, Landkreis Kronach, Landkreis Limburg-Weilburg, Landkreis Nordwestmecklenburg, Landkreis Ostallgäu, Landkreis Rhön Grabfeld, Landkreis Rosenheim, Landkreis Rotenburg (Wümme), Landkreis Roth, Landkreis Schweinfurt, Landkreis Schwäbisch Hall, Landkreis Schwäbisch Hall, Landkreis Sigmaringen, Landkreis Südliche Weinstraße, Landkreis Tirschenreuth, Landkreis Tübingen, Landkreis Weißenburg-Gunzenhausen, Landkreis Wittmund, Landkreisbetriebe Neuburg-Schrobenhausen, Landratsamt Aichach-Friedberg, Landratsamt Dachau, Landratsamt Main-Tauber-Kreis, Landratsamt Traunstein, Landratsamt Unterallgäu, Ludwigshafen am Rhein, MZV Biedenkopf, MüllALARM / Schönmackers, Müllmax, Neunkirchen Siegerland, Neustadt a.d. Waldnaab, Pullach im Isartal, RegioEntsorgung Städteregion Aachen, Rhein-Hunsrück Entsorgung (RHE), Rhein-Neckar-Kreis, Sector 27 - Datteln, Marl, Oer-Erkenschwick, Stadt Aachen, Stadt Arnsberg, Stadt Bayreuth, Stadt Cottbus, Stadt Dorsten, Stadt Ehingen, Stadt Emden, Stadt Emmendingen, Stadt Fulda, Stadt Kaufbeuren, Stadt Kraichtal, Stadt Landshut, Stadt Memmingen, Stadt Messstetten, Stadt Norderstedt, Stadt Overath, Stadt Regensburg, Stadt Solingen, Stadt Unterschleißheim, Stadt Willich, Stadtreinigung Dresden, Stadtreinigung Hamburg, Stadtreinigung Leipzig, StadtService Brühl, STL Lüdenscheid, Städteservice Raunheim Rüsselsheim, Südbrandenburgischer Abfallzweckverband, WBO Wirtschaftsbetriebe Oberhausen, Wermelskirchen, WGV Recycling GmbH, Wolfsburger Abfallwirtschaft und Straßenreinigung, WZV Kreis Segeberg, ZAW Darmstadt-Dieburg, Zweckverband Abfallwirtschaft Saale-Orla, Zweckverband Abfallwirtschaft Schwalm-Eder-Kreis, Zweckverband München-Südost |
|
||||
| Lithuania | Kauno švara |
|
||||
| Netherlands | ACV Group, Alpen an den Rijn, Area Afval, Avalex, Avri, Bar Afvalbeheer, Circulus, Cyclus NV, Dar, Den Haag, GAD, Gemeente Almere, Gemeente Berkelland, Gemeente Cranendonck, Gemeente Hellendoorn, Gemeente Lingewaard, Gemeente Meppel, Gemeente Middelburg + Vlissingen, Gemeente Peel en Maas, Gemeente Schouwen-Duiveland, Gemeente Sudwest-Fryslan, Gemeente Venray, Gemeente Voorschoten, Gemeente Wallre, Gemeente Westland, HVC Groep, Meerlanden, Mijn Blink, PreZero, Purmerend, RAD BV, Reinigingsbedrijf Midden Nederland, Reinis, Spaarne Landen, Stadswerk 072, Twente Milieu, Waardlanden, Ximmio, ZRD |
|
||||
| New Zealand | Auckland Council, Christchurch City Council, Gore, Invercargill & Southland, Horowhenua District Council, Waipa District Council, Wellington City Council |
|
||||
|
||||
Reference in New Issue
Block a user