Skip to content

Commit

Permalink
New Source: Kiedy śmieci, Poland
Browse files Browse the repository at this point in the history
  • Loading branch information
d4m committed Jan 7, 2025
1 parent b44e14e commit b515123
Show file tree
Hide file tree
Showing 8 changed files with 288 additions and 1 deletion.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1967,6 +1967,7 @@ If your service provider is not listed, feel free to open a [source request issu
- [Gminne Przedsiębiorstwo Komunalne Sp. z o.o. w Skarszewach](/doc/source/sims_pl.md) / sisms.pl
- [Gospodarka Odpadami - Pelplin](/doc/source/sims_pl.md) / sisms.pl
- [Gospodarka Odpadami - Starogard Gdański](/doc/source/sims_pl.md) / sisms.pl
- [Kiedy śmieci](/doc/source/kiedysmieci_info.md) / kiedysmieci.info
- [Klient Szablonowy - Ekostrażnik](/doc/source/sims_pl.md) / sisms.pl
- [Klient Szablonowy - Karty Usług](/doc/source/sims_pl.md) / sisms.pl
- [KOMUS](/doc/source/sims_pl.md) / sisms.pl
Expand Down
6 changes: 6 additions & 0 deletions custom_components/waste_collection_schedule/sources.json
Original file line number Diff line number Diff line change
Expand Up @@ -12736,6 +12736,12 @@
},
"id": "sims_pl"
},
{
"title": "Kiedy \u015bmieci",
"module": "kiedysmieci_info",
"default_params": {},
"id": "kiedysmieci_info"
},
{
"title": "Klient Szablonowy - Ekostra\u017cnik",
"module": "sims_pl",
Expand Down
26 changes: 26 additions & 0 deletions custom_components/waste_collection_schedule/translations/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -10948,6 +10948,32 @@
},
"data_description": {}
},
"args_kiedysmieci_info": {
"title": "Quelle konfigurieren",
"description": "Konfiguriere deinen Service Provider. Mehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/kiedysmieci_info.md",
"data": {
"calendar_title": "Kalender Titel",
"district": "Bezirk",
"municipality": "Gemeinde",
"street": "Straße",
"voivodeship": "Voivodeship"
},
"data_description": {
"calendar_title": "Ein lesbarerer oder benutzerfreundlicherer Name für den Müllkalender. Wenn nichts angegeben wird, wird der Name der Quelle verwendet."
}
},
"reconfigure_kiedysmieci_info": {
"title": "Quelle Neu Konfigurieren",
"description": "Konfiguriere deinen Service Provider. Mehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/kiedysmieci_info.md",
"data": {
"calendar_title": "Kalender Titel",
"district": "Bezirk",
"municipality": "Gemeinde",
"street": "Straße",
"voivodeship": "Voivodeship"
},
"data_description": {}
},
"args_sepan_remondis_pl": {
"title": "Quelle konfigurieren",
"description": "Konfiguriere deinen Service Provider. Mehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/sepan_remondis_pl.md",
Expand Down
26 changes: 26 additions & 0 deletions custom_components/waste_collection_schedule/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -10979,6 +10979,32 @@
},
"data_description": {}
},
"args_kiedysmieci_info": {
"title": "Configure Source",
"description": "Configure your service provider. More details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/kiedysmieci_info.md.",
"data": {
"calendar_title": "Calendar Title",
"district": "District",
"municipality": "Municipality",
"street": "Street",
"voivodeship": "Voivodeship"
},
"data_description": {
"calendar_title": "A more readable, or user-friendly, name for the waste calendar. If nothing is provided, the name returned by the source will be used."
}
},
"reconfigure_kiedysmieci_info": {
"title": "Reconfigure Source",
"description": "Configure your service provider. More details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/kiedysmieci_info.md.",
"data": {
"calendar_title": "Calendar Title",
"district": "District",
"municipality": "Municipality",
"street": "Street",
"voivodeship": "Voivodeship"
},
"data_description": {}
},
"args_sepan_remondis_pl": {
"title": "Configure Source",
"description": "Configure your service provider. More details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/sepan_remondis_pl.md.",
Expand Down
26 changes: 26 additions & 0 deletions custom_components/waste_collection_schedule/translations/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -10909,6 +10909,32 @@
},
"data_description": {}
},
"args_kiedysmieci_info": {
"title": "Configurazione Sorgente",
"description": "Compila i campi per ottenere le informazioni sul tuo servizio di raccolta. Maggiori informazioni: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/kiedysmieci_info.md.",
"data": {
"calendar_title": "Nome Calendario",
"district": "Distretto",
"municipality": "Municipality",
"street": "Strada",
"voivodeship": "Voivodeship"
},
"data_description": {
"calendar_title": "Puoi cambiare il nome del calendario della raccolta dei rifiuti, altrimenti di default verra' utilizzato il nome del tuo fornitore di servizi."
}
},
"reconfigure_kiedysmieci_info": {
"title": "Riconfigurazione Sorgente",
"description": "Compila i campi per ottenere le informazioni sul tuo servizio di raccolta. Per maggiori informazioni: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/kiedysmieci_info.md.",
"data": {
"calendar_title": "Nome Calendario",
"district": "Distretto",
"municipality": "Municipality",
"street": "Strada",
"voivodeship": "Voivodeship"
},
"data_description": {}
},
"args_sepan_remondis_pl": {
"title": "Configurazione Sorgente",
"description": "Compila i campi per ottenere le informazioni sul tuo servizio di raccolta. Maggiori informazioni: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/sepan_remondis_pl.md.",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
import datetime
import ssl, urllib, json, requests
from waste_collection_schedule import Collection
from waste_collection_schedule.exceptions import (
SourceArgumentNotFoundWithSuggestions,
)

TITLE = "Kiedy śmieci"
DESCRIPTION = "Source script for Kiedy śmieci, Poland"
URL = "https://kiedysmieci.info"
COUNTRY = "pl"
TEST_CASES = {
"Nadolany, podkarpackie, sanocki, Bukowsko": {
"voivodeship": "podkarpackie",
"district": "sanocki",
"municipality": "Bukowsko",
"street": "Nadolany",
},
"Kędzierz, podkarpackie, dębicki, Dębica": {
"voivodeship": "podkarpackie",
"district": "dębicki",
"municipality": "Dębica",
"street": "Kędzierz",
},
}

API_URL = "https://cloud.fxsystems.com.pl:8078/odbiory_smieci/%s"

ICON_MAP = {
"zmieszane": "mdi:trash-can",
"metale i tworzywa sztuczne": "mdi:recycle",
"papier i tektura": "mdi:file-outline",
"szkło": "mdi:glass-fragile",
"biodegradowalne": "mdi:leaf",
}

def get_json(url):
#workaround to establish ssl connection to this host
ssl_ctx = ssl.create_default_context()
ssl_ctx.set_ciphers("DEFAULT")

response = urllib.request.urlopen(API_URL % url, context=ssl_ctx)
return json.loads(response.read().decode("utf-8"))

def get_municipalities():
try:
municipalities = get_json("dostepne_gminy/v5")["gminy"]
except:
municipalities = None

return municipalities

municipalities = get_municipalities()

'''
def EXTRA_INFO():
return [
{
"title": "Gmina %s [woj. %s, pow. %s]" % (m["gmina"], m["wojewodztwo"], m["powiat"]),
"default_params": {
"voivodeship": m["wojewodztwo"],
"district": m["powiat"],
"municipality": m["gmina"]
}
} for m in municipalities
]
'''

class Source:
def __init__(self, voivodeship: str, district: str, municipality: str, street: str):
self.voivodeship = voivodeship
self.district = district
self.municipality = municipality
self.street = street

voivodeships_list = self.get_voivodeships_list()

if voivodeship.lower() not in [v.lower() for v in voivodeships_list]:
raise SourceArgumentNotFoundWithSuggestions(
"voivodeship",
voivodeship,
suggestions = voivodeships_list,
)

districts_list = self.get_districts_list()

if district.lower() not in [c.lower() for c in districts_list]:
raise SourceArgumentNotFoundWithSuggestions(
"district",
district,
suggestions = districts_list,
)

municipalities_list = self.get_municipalities_list()

if municipality.lower() not in [m.lower() for m in municipalities_list]:
raise SourceArgumentNotFoundWithSuggestions(
"municipality",
municipality,
suggestions = municipalities_list,
)

streets_list = self.get_streets_list()

if street.lower() not in [s.lower() for s in streets_list]:
raise SourceArgumentNotFoundWithSuggestions(
"street",
street,
suggestions = streets_list,
)

self.schedule = self.get_schedule()

def get_voivodeships_list(self):
return list(set(m["wojewodztwo"] for m in municipalities))

def get_districts_list(self):
return list(set([m["powiat"] for m in municipalities if m["wojewodztwo"].lower() == self.voivodeship.lower()]))

def get_municipalities_list(self):
return [m["gmina"] for m in municipalities if m["wojewodztwo"].lower() == self.voivodeship.lower() and m["powiat"].lower() == self.district.lower()]

def get_streets_list(self):
try:
streets = get_json("dostepne_gminy?wojewodztwo=%s&powiat=%s&gmina=%s" % (urllib.parse.quote(self.voivodeship), urllib.parse.quote(self.district), urllib.parse.quote(self.municipality)))["listaUlic"]
streets = [s["ulica"] for s in streets]
except:
streets = None

return streets

def get_schedule(self):
try:
schedule = get_json("lista_terminow/v6?wojewodztwo=%s&powiat=%s&gmina=%s&ulica=%s" % (urllib.parse.quote(self.voivodeship), urllib.parse.quote(self.district), urllib.parse.quote(self.municipality), urllib.parse.quote(self.street)))["listaTerminow"]

except:
schedule = None

return schedule

def fetch(self) -> list[Collection]:

entries = []

for entry in self.schedule:
entries.append(
Collection(
date = datetime.datetime.strptime(entry["dataOdbioru"], "%Y-%m-%d").date(),
t = entry["nazwaTypuSmieci"],
icon = ICON_MAP.get(entry["nazwaTypuSmieci"], "mdi:trash-can"),
)
)

return entries
48 changes: 48 additions & 0 deletions doc/source/kiedysmieci_info.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Kiedy śmieci

Support for schedules provided by [Kiedy śmieci](https://kiedysmieci.info/), serving multiple municipalities, Poland.

## Configuration via configuration.yaml

```yaml
waste_collection_schedule:
sources:
- name: kiedysmieci_info
args:
voivodeship: voivodeship (województwo)
district: district (powiat)
municipality: municipality (gmina)
street: street (ulica)

```
### Configuration Variables
**voivodeship**
*(String) (required)*
**district**
*(String) (required)*
**municipality**
*(String) (required)*
**street**
*(String) (required)*
## Example
```yaml
waste_collection_schedule:
sources:
- name: kiedysmieci_info
args:
voivodeship: podkarpackie
district: sanocki
municipality: Bukowsko
street: Nadolany
```
## How to get the source argument
The parameters can be found by using the apps ([GooglePlay](https://play.google.com/store/apps/details?id=com.fxsystems.KiedySmieci_info), [AppStore](https://apps.apple.com/pl/app/kiedy-%C5%9Bmieci/id1539957094?l=pl)) or on the [website](https://kiedysmieci.info/index.html#harmonogram) by providing your municipality in the search form.
2 changes: 1 addition & 1 deletion info.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Waste collection schedules from service provider web sites are updated daily, de
| Netherlands | 's-Hertogenbosch, ACV Group, Afval Wijzer, Afvalstoffendienst.nl, Alpen an den Rijn, Altena, Area Afval, Avalex, Avri, Bar Afvalbeheer, Bernheze, Circulus, Cyclus NV, Dar, Den Haag, Edam-Volendam, 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 Waalre, Gemeente Westland, Goes, Heusden, HVC Groep, Meerlanden, Mijn Blink, Oisterwijk, PreZero, Purmerend, RAD BV, Rd4, Reinis, Spaarnelanden, Twente Milieu, Vught, Waardlanden, Ximmio, ZRD, Ôffalkalinder van Noardeast-Fryslân & Dantumadiel |
| New Zealand | Auckland Council, Christchurch City Council, Dunedin District Council, Gore, Invercargill & Southland, Hamilton City Council, Horowhenua District Council, Hutt City Council, Napier City Council, Porirua City, Rotorua Lakes Council, Tauranga City Council, Waipa District Council, Wellington City Council |
| Norway | Avfall Sør, Kristiansand, BIR (Bergensområdets Interkommunale Renovasjonsselskap), Fosen Renovasjon, IRiS, Min Renovasjon, Movar IKS, Oslo Kommune, ReMidt Orkland muni, Sandnes Kommune, Stavanger Kommune, Trondheim |
| Poland | ABRUKO PLUS, App Moje Odpady, Bydgoszcz Pronatura, Czerwonak, Murowana Goślina, Oborniki, Ecoharmonogram, Gmina Bardo, Gmina Bartniczka, Gmina Brzeg Dolny, Gmina Brzeziny, Gmina Cedry Wielkie, Gmina Chojnów, Gmina Czechowice- Dziedzice, Gmina Czernichów, Gmina Daleszyce, Gmina Dobra, Gmina Dygowo, Gmina Gaworzyce, Gmina Gać, Gmina Gniew, Gmina Gorlice, Gmina Gorzyce, Gmina Gościno, Gmina Grabów nad Prosną, Gmina Grodków, Gmina Grodzisk Mazowiecki, Gmina i Miasto Dzierzgoń, Gmina i Miasto Nowe Skalmierzyce, Gmina Inowrocław, Gmina Jeżewo, Gmina Kamionka Wielka, Gmina Kluczbork, Gmina Kolbudy, Gmina Kozy, Gmina Krotoszyce, Gmina Kruszwica, Gmina Krzanowice, Gmina Legnickie Pole, Gmina Lubrza, Gmina Miedziana Góra, Gmina Miejska Hrubieszów, Gmina Miejska Kowal, Gmina Mielec, Gmina Międzybórz, Gmina Miękinia, Gmina Mogilany, Gmina Mokrsko, Gmina Mysłakowice, Gmina Nowa Ruda, Gmina Nowa Słupia, Gmina Nowy Staw, Gmina Olsztynek, Gmina Osiecznica, Gmina Osiek, Gmina Ostrowiec Świętokrzyski, Gmina Pajęczno, Gmina Pawłowice, Gmina Polanica-Zdrój, Gmina Porąbka, Gmina Pruszcz, Gmina Przeworno, Gmina Przykładowa, Gmina Pyskowice, Gmina Radoszyce, Gmina Reda, Gmina Rumia, Gmina Skarszewy, Gmina Sobótka, Gmina Sośno, Gmina Starogard Gdański, Gmina Staszów, Gmina Stawiguda, Gmina Strzelin, Gmina Szczytna, Gmina Sztum, Gmina Szumowo, Gmina Słupca, Gmina Słupno, Gmina Topólka, Gmina Ulan-Majorat, Gmina Wieluń, Gmina Wierzchlas, Gmina Wilkowice, Gmina Wisznia Mała, Gmina Wiązów, Gmina Wodzisław, Gmina Wojcieszków, Gmina Wołów, Gmina Wąchock, Gmina Władysławowo, Gmina Zaleszany, Gmina Zbrosławice, Gmina Zduńska Wola, Gmina Złoty Stok, Gmina Łęczyce, Gmina Świdnica, Gmina Świecie, Gmina Żmigród, Gminne Przedsiębiorstwo Komunalne Sp. z o.o. w Skarszewach, Gospodarka Odpadami - Pelplin, Gospodarka Odpadami - Starogard Gdański, Klient Szablonowy - Ekostrażnik, Klient Szablonowy - Karty Usług, KOMUS, Koziegłowy/Objezierze/Oborniki, Miasto i Gmina Morawica, Miasto i Gmina Łasin, Miasto Inowrocław, Miasto Malbork, Miasto Rejowiec Fabryczny, Miasto Rydułtowy, Miasto Wałbrzych, MPGK Katowice, Parafia św. Wojciecha Biskupa i Męczennika w Nidzicy, Polkowice, Poznań, Przedsiębiorstwo Gospodarki Komunalnej w Wołowie Sp. z o.o., SISMS.pl / BLISKO, Strzelce Krajeńskie, Warsaw, Wrocław, ZGPD-7 |
| Poland | ABRUKO PLUS, App Moje Odpady, Bydgoszcz Pronatura, Czerwonak, Murowana Goślina, Oborniki, Ecoharmonogram, Gmina Bardo, Gmina Bartniczka, Gmina Brzeg Dolny, Gmina Brzeziny, Gmina Cedry Wielkie, Gmina Chojnów, Gmina Czechowice- Dziedzice, Gmina Czernichów, Gmina Daleszyce, Gmina Dobra, Gmina Dygowo, Gmina Gaworzyce, Gmina Gać, Gmina Gniew, Gmina Gorlice, Gmina Gorzyce, Gmina Gościno, Gmina Grabów nad Prosną, Gmina Grodków, Gmina Grodzisk Mazowiecki, Gmina i Miasto Dzierzgoń, Gmina i Miasto Nowe Skalmierzyce, Gmina Inowrocław, Gmina Jeżewo, Gmina Kamionka Wielka, Gmina Kluczbork, Gmina Kolbudy, Gmina Kozy, Gmina Krotoszyce, Gmina Kruszwica, Gmina Krzanowice, Gmina Legnickie Pole, Gmina Lubrza, Gmina Miedziana Góra, Gmina Miejska Hrubieszów, Gmina Miejska Kowal, Gmina Mielec, Gmina Międzybórz, Gmina Miękinia, Gmina Mogilany, Gmina Mokrsko, Gmina Mysłakowice, Gmina Nowa Ruda, Gmina Nowa Słupia, Gmina Nowy Staw, Gmina Olsztynek, Gmina Osiecznica, Gmina Osiek, Gmina Ostrowiec Świętokrzyski, Gmina Pajęczno, Gmina Pawłowice, Gmina Polanica-Zdrój, Gmina Porąbka, Gmina Pruszcz, Gmina Przeworno, Gmina Przykładowa, Gmina Pyskowice, Gmina Radoszyce, Gmina Reda, Gmina Rumia, Gmina Skarszewy, Gmina Sobótka, Gmina Sośno, Gmina Starogard Gdański, Gmina Staszów, Gmina Stawiguda, Gmina Strzelin, Gmina Szczytna, Gmina Sztum, Gmina Szumowo, Gmina Słupca, Gmina Słupno, Gmina Topólka, Gmina Ulan-Majorat, Gmina Wieluń, Gmina Wierzchlas, Gmina Wilkowice, Gmina Wisznia Mała, Gmina Wiązów, Gmina Wodzisław, Gmina Wojcieszków, Gmina Wołów, Gmina Wąchock, Gmina Władysławowo, Gmina Zaleszany, Gmina Zbrosławice, Gmina Zduńska Wola, Gmina Złoty Stok, Gmina Łęczyce, Gmina Świdnica, Gmina Świecie, Gmina Żmigród, Gminne Przedsiębiorstwo Komunalne Sp. z o.o. w Skarszewach, Gospodarka Odpadami - Pelplin, Gospodarka Odpadami - Starogard Gdański, Kiedy śmieci, Klient Szablonowy - Ekostrażnik, Klient Szablonowy - Karty Usług, KOMUS, Koziegłowy/Objezierze/Oborniki, Miasto i Gmina Morawica, Miasto i Gmina Łasin, Miasto Inowrocław, Miasto Malbork, Miasto Rejowiec Fabryczny, Miasto Rydułtowy, Miasto Wałbrzych, MPGK Katowice, Parafia św. Wojciecha Biskupa i Męczennika w Nidzicy, Polkowice, Poznań, Przedsiębiorstwo Gospodarki Komunalnej w Wołowie Sp. z o.o., SISMS.pl / BLISKO, Strzelce Krajeńskie, Warsaw, Wrocław, ZGPD-7 |
| Slovakia | fcc Environment |
| Slovenia | Moji odpadki, Ljubljana, Snaga Maribor |
| Sweden | Affärsverken, Avfallsapp.se - Multi Source, Boden, Borås Energi och Miljö, EDPEvent - Multi Source, Gästrike Återvinnare, Jönköping - June Avfall & Miljö, Kretslopp Sydost, Kristianstad Renhållning, Landskrona - Svalövs Renhållning, Lerum Vatten och Avlopp, Linköping - Tekniska Verken, Luleå, Lund Waste Collection, Mölndal, Norrtalje Vatten & Avfall, North / Middle Bohuslän - Rambo AB, Region Gotland, Ronneby Miljöteknik, Roslagsvatten, Samverkan Återvinning Miljö (SÅM), Skellefteå, SRV Återvinning, SSAM (Deprecated), SSAM Södra Smalånds Avfall & Miljö, Sysav Sophämntning, Söderköping, Uppsala Vatten, Uppsala Vatten och Avfall AB (Deprecated), VA Syd Sophämntning, VIVAB Sophämtning, Västervik Miljö & Energi |
Expand Down

0 comments on commit b515123

Please sign in to comment.