Merge pull request #363 from lal12/master

Added source for wermelskirchen
This commit is contained in:
Steffen Zimmermann
2022-12-17 14:27:34 +01:00
committed by GitHub
4 changed files with 130 additions and 0 deletions

View File

@@ -131,6 +131,7 @@ Currently the following service providers are supported:
- [Südbrandenburgischer Abfallzweckverband](./doc/source/sbazv_de.md)
- [Umweltbetrieb Stadt Bielefeld](./doc/source/bielefeld_de.md)
- [WAS Wolfsburg](./doc/source/was_wolfsburg_de.md)
- [Wermelskirchen](./doc/source/wermelskirchen_de.md)
### Lithuania

View File

@@ -0,0 +1,86 @@
import requests
from datetime import datetime
import urllib.parse
from waste_collection_schedule import Collection # type: ignore[attr-defined]
from waste_collection_schedule.service.ICS import ICS
TITLE = "Abfallkalender Wermelskirchen"
DESCRIPTION = "Source for Abfallabholung Wermelskirchen, Germany"
URL = "https://www.wermelskirchen.de/rathaus/buergerservice/formulare-a-z/abfallkalender-online/"
TEST_CASES = {
"Rathaus": {"street": "Telegrafenstraße", "house_number": "29"},
"Krankenhaus": {"street": "Königstraße", "house_number": "100"},
"Mehrzweckhalle": {"street": "An der Mehrzweckhalle", "house_number": "1"},
}
INFOS = {
"Restabfall 2-woechentlich": {
"icon": "mdi:trash-can",
"image": "https://abfallkalender.citkomm.de/fileadmin/_processed_/1/b/csm_Restmuell_6b2b32c774.png"
},
"Restabfall 4-woechentlich": {
"icon": "mdi:trash-can",
"image": "https://abfallkalender.citkomm.de/fileadmin/_processed_/1/b/csm_Restmuell_6b2b32c774.png"
},
"Restabfall 6-woechentlich": {
"icon": "mdi:trash-can",
"image": "https://abfallkalender.citkomm.de/fileadmin/_processed_/1/b/csm_Restmuell_6b2b32c774.png"
},
"Gelber Sack": {
"icon": "mdi:recycle-variant",
"image": "https://abfallkalender.citkomm.de/fileadmin/_processed_/f/4/csm_GelbeTonne_24ffc276b2.png"
},
"Papier": {
"icon": "mdi:package-variant",
"image": "https://abfallkalender.citkomm.de/fileadmin/_processed_/2/3/csm_Papiertonne_919ed3b5da.png"
},
"Biotonne": {
"icon": "mdi:leaf",
"image": "https://abfallkalender.citkomm.de/fileadmin/_processed_/6/f/csm_Biotonne_wk_ae1b0e61aa.png"
},
"Schadstoffsammlung": {
"icon": "mdi:bottle-tonic-skull",
"image": "https://abfallkalender.citkomm.de/fileadmin/_processed_/4/2/csm_sondermuell_62f5701a7b.png"
},
"Weihnachtsbaum": {
"icon": "mdi:pine-tree",
"image": ""
},
}
class Source:
def __init__(self, street, house_number):
self._street = street
self._house_number = str(house_number)
self._ics = ICS()
def fetch(self):
# the url contains the current year, but this doesn't really seems to matter at least for the ical, since the result is always the same
# still replace it for compatibility sake
now = datetime.now()
url = (
"https://abfallkalender.citkomm.de/wermelskirchen/abfallkalender-"+
str(now.year)+
"/ics/FrontendIcs.html?tx_citkoabfall_abfallkalender%5Bstrasse%5D="+
urllib.parse.quote_plus(self._street)+
"&tx_citkoabfall_abfallkalender%5Bhausnummer%5D="+
urllib.parse.quote_plus(self._house_number)+
"&tx_citkoabfall_abfallkalender%5Babfallarten%5D%5B0%5D=86&tx_citkoabfall_abfallkalender%5Babfallarten%5D%5B1%5D=85&tx_citkoabfall_abfallkalender%5Babfallarten%5D%5B2%5D=84&tx_citkoabfall_abfallkalender%5Babfallarten%5D%5B3%5D=82&tx_citkoabfall_abfallkalender%5Babfallarten%5D%5B4%5D=81&tx_citkoabfall_abfallkalender%5Babfallarten%5D%5B5%5D=80&tx_citkoabfall_abfallkalender%5Babfallarten%5D%5B6%5D=79&tx_citkoabfall_abfallkalender%5Babfallarten%5D%5B7%5D=76&tx_citkoabfall_abfallkalender%5Babfallarten%5D%5B8%5D=75&tx_citkoabfall_abfallkalender%5Babfallarten%5D%5B9%5D=74"
)
r = requests.get(url)
r.raise_for_status()
r.encoding = "utf-8"
dates = self._ics.convert(r.text)
entries = []
for d in dates:
info = INFOS.get(d[1], {"icon": "mdi:trash-can", "image": ""})
entries.append(Collection(
d[0],
d[1],
picture = info['image'],
icon = info['icon']
))
return entries

View File

@@ -0,0 +1,42 @@
# Wermelskirchen Abfallkalender
Support for schedules provided by [Abfallkalender Wermelskirchen](https://www.wermelskirchen.de/rathaus/buergerservice/formulare-a-z/abfallkalender-online/) located in NRW, Germany.
## Limitations
The used api (ics) only provides future waste collection dates.
## Configuration via configuration.yaml
```yaml
waste_collection_schedule:
sources:
- name: wermelskirchen_de
args:
street: Telegrafenstraße
house_number: "10"
customize:
- type: Restabfall 2-woechentlich
alias: Restabfall
show: false
- type: Restabfall 4-woechentlich
alias: Restabfall
show: true
- type: Restabfall 6-woechentlich
alias: Restabfall
show: false
```
### Configuration Variables
**street**<br>
*(string) (required)*
**house_number**<br>
*(string) (required)*
## How to get the source arguments
Set your street and your house number. Should they not work, check on [Abfallkalender Wermelskirchen](https://www.wermelskirchen.de/rathaus/buergerservice/formulare-a-z/abfallkalender-online/) and use the closest entries.
Depending on your booked schedule for "Restabfall"/"Restmüll" you should set `show` in one of the types to true and the others to false.

View File

@@ -116,6 +116,7 @@ Currently the following service providers are supported:
- [Südbrandenburgischer Abfallzweckverband](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/sbazv_de.md)
- [Umweltbetrieb Stadt Bielefeld](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/bielefeld_de.md)
- [WAS Wolfsburg](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/was_wolfsburg_de.md)
- [Wermelskirchen](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/wermelskirchen_de.md)
### Lithuania