diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 82e5c82d..affcb824 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,7 +17,7 @@ repos: hooks: - id: codespell args: - - --ignore-words-list=hass,alot,datas,dof,dur,farenheit,hist,iff,ines,ist,lightsensor,mut,nd,pres,referer,ser,serie,te,technik,ue,uint,visability,wan,wanna,withing,Adresse,termine,adresse,oder,alle,assistent,hart,marz,worthing + - --ignore-words-list=hass,alot,datas,dof,dur,farenheit,hist,iff,ines,ist,lightsensor,mut,nd,pres,referer,ser,serie,te,technik,ue,uint,visability,wan,wanna,withing,Adresse,termine,adresse,oder,alle,assistent,hart,marz,worthing,linz - --skip="./.*,*.csv,*.json" - --quiet-level=2 exclude_types: [csv, json] diff --git a/README.md b/README.md index da3ff579..34f827e0 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,7 @@ Waste collection schedules in the following formats and countries are supported. - [Bad Loipersdorf](/doc/source/citiesapps_com.md) / gemeinde.loipersdorf.at - [Bad Radkersburg](/doc/source/citiesapps_com.md) / bad-radkersburg.gv.at - [Bad Tatzmannsdorf](/doc/source/citiesapps_com.md) / bad-tatzmannsdorf.at +- [Bad Waltersdorf](/doc/source/citiesapps_com.md) / bad-waltersdorf.gv.at/home - [Bernstein](/doc/source/citiesapps_com.md) / bernstein.gv.at - [Bildein](/doc/source/citiesapps_com.md) / bildein.at - [Breitenbrunn am Neusiedler See](/doc/source/citiesapps_com.md) / breitenbrunn.at @@ -107,7 +108,9 @@ Waste collection schedules in the following formats and countries are supported. - [Ebersdorf](/doc/source/citiesapps_com.md) / ebersdorf.eu - [Eberstein](/doc/source/citiesapps_com.md) / eberstein.at - [Edelsbach bei Feldbach](/doc/source/citiesapps_com.md) / edelsbach.at +- [Eggenburg](/doc/source/citiesapps_com.md) / eggenburg.gv.at - [Eggersdorf bei Graz](/doc/source/citiesapps_com.md) / eggersdorf-graz.gv.at +- [Eichgraben](/doc/source/citiesapps_com.md) / eichgraben.at - [Eisenstadt](/doc/source/citiesapps_com.md) / eisenstadt.gv.at - [Fehring](/doc/source/citiesapps_com.md) / fehring.at - [Feistritz ob Bleiburg](/doc/source/citiesapps_com.md) / feistritz-bleiburg.gv.at @@ -128,12 +131,14 @@ Waste collection schedules in the following formats and countries are supported. - [GAUM Mistelbach](/doc/source/umweltverbaende_at.md) / mistelbach.umweltverbaende.at - [GDA Amstetten](/doc/source/umweltverbaende_at.md) / amstetten.umweltverbaende.at - [Gemeindeverband Horn](/doc/source/umweltverbaende_at.md) / horn.umweltverbaende.at +- [Gitschtal](/doc/source/citiesapps_com.md) / gitschtal.gv.at - [Gols](/doc/source/citiesapps_com.md) / gols.at - [Grafendorf bei Hartberg](/doc/source/citiesapps_com.md) / grafendorf.at - [Grafenschachen](/doc/source/citiesapps_com.md) / grafenschachen.at - [Grafenstein](/doc/source/citiesapps_com.md) / grafenstein.gv.at - [Gratkorn](/doc/source/citiesapps_com.md) / gratkorn.gv.at - [Gratwein-Straßengel](/doc/source/citiesapps_com.md) / gratwein-strassengel.gv.at +- [Großsteinbach](/doc/source/citiesapps_com.md) / gemeinde-grosssteinbach.at - [Großwarasdorf](/doc/source/citiesapps_com.md) / grosswarasdorf.at - [Großwilfersdorf](/doc/source/citiesapps_com.md) / grosswilfersdorf.steiermark.at - [Gutenberg](/doc/source/citiesapps_com.md) / gutenberg-stenzengreith.gv.at @@ -158,6 +163,8 @@ Waste collection schedules in the following formats and countries are supported. - [Heiligenkreuz](/doc/source/citiesapps_com.md) / heiligenkreuz.at - [Heiligenkreuz am Waasen](/doc/source/citiesapps_com.md) / heiligenkreuz-waasen.gv.at - [Heimschuh](/doc/source/citiesapps_com.md) / heimschuh.at +- [Henndorf am Wallersee](/doc/source/citiesapps_com.md) / henndorf.at +- [Hirm](/doc/source/citiesapps_com.md) / hirm.gv.at - [Hofstätten an der Raab](/doc/source/citiesapps_com.md) / hofstaetten.at - [Horitschon](/doc/source/citiesapps_com.md) / horitschon.at - [Horn](/doc/source/citiesapps_com.md) / horn.gv.at @@ -174,15 +181,18 @@ Waste collection schedules in the following formats and countries are supported. - [Kalsdorf bei Graz](/doc/source/citiesapps_com.md) / kalsdorf-graz.gv.at - [Kapfenstein](/doc/source/citiesapps_com.md) / kapfenstein.at - [Kemeten](/doc/source/citiesapps_com.md) / kemeten.gv.at +- [Kirchbach-Zerlach](/doc/source/citiesapps_com.md) / kirchbach-zerlach.at - [Kirchberg an der Raab](/doc/source/citiesapps_com.md) / kirchberg-raab.gv.at - [Kittsee](/doc/source/citiesapps_com.md) / kittsee.at - [Kleinmürbisch](/doc/source/citiesapps_com.md) / kleinmürbisch.at - [Klingenbach](/doc/source/citiesapps_com.md) / klingenbach.at - [Klosterneuburg](/doc/source/umweltverbaende_at.md) / klosterneuburg.umweltverbaende.at - [Klöch](/doc/source/citiesapps_com.md) / kloech.com +- [Kobersdorf](/doc/source/citiesapps_com.md) / kobersdorf.at/index.php - [Kohfidisch](/doc/source/citiesapps_com.md) / kohfidisch.at - [Korneuburg](/doc/source/citiesapps_com.md) / korneuburg.gv.at - [Krensdorf](/doc/source/citiesapps_com.md) / krensdorf.at +- [Kuchl](/doc/source/citiesapps_com.md) / kuchl.net - [Laa an der Thaya](/doc/source/citiesapps_com.md) / laa.at - [Lackenbach](/doc/source/citiesapps_com.md) / gemeinde-lackenbach.at - [Lackendorf](/doc/source/citiesapps_com.md) / lackendorf.at @@ -193,7 +203,7 @@ Waste collection schedules in the following formats and countries are supported. - [Lieboch](/doc/source/citiesapps_com.md) / lieboch.gv.at - [Linz AG](/doc/ics/linzag_at.md) / linzag.at - [Litzelsdorf](/doc/source/citiesapps_com.md) / litzelsdorf.at -- [Lockenhaus Marktgemeinde](/doc/source/citiesapps_com.md) / lockenhaus.at +- [Lockenhaus](/doc/source/citiesapps_com.md) / lockenhaus.at - [Loipersbach im Burgenland](/doc/source/citiesapps_com.md) / loipersbach.info - [Mariasdorf](/doc/source/citiesapps_com.md) / mariasdorf.at - [Markt Hartmannsdorf](/doc/source/citiesapps_com.md) / markthartmannsdorf.at @@ -240,13 +250,16 @@ Waste collection schedules in the following formats and countries are supported. - [Poysdorf](/doc/source/citiesapps_com.md) / poysdorf.at - [Pöchlarn](/doc/source/citiesapps_com.md) / poechlarn.at - [Raach am Hochgebirge](/doc/source/citiesapps_com.md) / raach.at +- [Raasdorf](/doc/source/citiesapps_com.md) / raasdorf.gv.at - [Radmer](/doc/source/citiesapps_com.md) / radmer.at - [Ragnitz](/doc/source/citiesapps_com.md) / ragnitz.gv.at - [Raiding](/doc/source/citiesapps_com.md) / raiding-online.at - [Reichenau](/doc/source/citiesapps_com.md) / reichenau.gv.at - [Rohr bei Hartberg](/doc/source/citiesapps_com.md) / rohr-bei-hartberg.at +- [Rohr im Burgenland](/doc/source/citiesapps_com.md) / rohr-bgld.at - [Rudersdorf](/doc/source/citiesapps_com.md) / rudersdorf.at - [Rust](/doc/source/citiesapps_com.md) / freistadt-rust.at +- [Saalfelden am Steinernen Meer](/doc/source/citiesapps_com.md) / stadtmarketing-saalfelden.at/de - [Sankt Georgen an der Stiefing](/doc/source/citiesapps_com.md) / st-georgen-stiefing.gv.at - [Sankt Gilgen](/doc/source/citiesapps_com.md) / gemgilgen.at - [Sankt Oswald bei Plankenwarth](/doc/source/citiesapps_com.md) / sanktoswald.net @@ -263,7 +276,10 @@ Waste collection schedules in the following formats and countries are supported. - [St. Andrä am Zicksee](/doc/source/citiesapps_com.md) / gemeinde-standrae.at - [St. Anna am Aigen](/doc/source/citiesapps_com.md) / st-anna-aigen.gv.at - [St. Egyden am Steinfeld](/doc/source/citiesapps_com.md) / st-egyden.at +- [St. Georgen an der Leys](/doc/source/citiesapps_com.md) / stgeorgenleys.at +- [St. Jakob im Rosental](/doc/source/citiesapps_com.md) / st-jakob-rosental.gv.at - [St. Johann in der Haide](/doc/source/citiesapps_com.md) / st-johann-haide.gv.at +- [St. Konrad](/doc/source/citiesapps_com.md) / st-konrad.at - [St. Lorenzen am Wechsel](/doc/source/citiesapps_com.md) / st-lorenzen-wechsel.at - [St. Margarethen an der Raab](/doc/source/citiesapps_com.md) / st-margarethen-raab.at - [St. Margarethen im Burgenland](/doc/source/citiesapps_com.md) / st-margarethen.at diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/service/CitiesAppsCom.py b/custom_components/waste_collection_schedule/waste_collection_schedule/service/CitiesAppsCom.py index 8ea368f7..686071d2 100644 --- a/custom_components/waste_collection_schedule/waste_collection_schedule/service/CitiesAppsCom.py +++ b/custom_components/waste_collection_schedule/waste_collection_schedule/service/CitiesAppsCom.py @@ -1,4 +1,3 @@ -import base64 import json import re import urllib.parse @@ -7,13 +6,16 @@ import requests SERVICE_MAP = [ { - "title": "Fürstenfeld", - "url": "https://www.fuerstenfeld.gv.at", + "title": "Altenmarkt an der Triesting", + "url": "https://www.altenmarkt-triesting.gv.at", "country": "at", }, + {"title": "Andau", "url": "https://www.andau-gemeinde.at", "country": "at"}, + {"title": "Apetlon", "url": "https://gemeinde-apetlon.at", "country": "at"}, + {"title": "Bad Blumau", "url": "https://bad-blumau-gemeinde.at", "country": "at"}, { - "title": "Söchau", - "url": "http://www.soechau.steiermark.at", + "title": "Bad Gleichenberg", + "url": "http://www.bad-gleichenberg.gv.at", "country": "at", }, { @@ -21,419 +23,50 @@ SERVICE_MAP = [ "url": "https://gemeinde.loipersdorf.at", "country": "at", }, - { - "title": "Rudersdorf", - "url": "http://www.rudersdorf.at", - "country": "at", - }, - { - "title": "Großwilfersdorf", - "url": "http://www.grosswilfersdorf.steiermark.at", - "country": "at", - }, - { - "title": "Bad Blumau", - "url": "https://bad-blumau-gemeinde.at", - "country": "at", - }, - { - "title": "Buch - St. Magdalena", - "url": "http://www.buch-stmagdalena.at", - "country": "at", - }, - { - "title": "Burgau", - "url": "https://www.burgau.info", - "country": "at", - }, - { - "title": "Dechantskirchen", - "url": "https://dechantskirchen.gv.at", - "country": "at", - }, - { - "title": "Ebersdorf", - "url": "https://www.ebersdorf.eu", - "country": "at", - }, - { - "title": "Friedberg", - "url": "https://www.friedberg.gv.at", - "country": "at", - }, - { - "title": "Grafendorf bei Hartberg", - "url": "https://grafendorf.at", - "country": "at", - }, - { - "title": "Ilz", - "url": "https://www.ilz.at", - "country": "at", - }, - { - "title": "Kaindorf", - "url": "https://www.kaindorf.at", - "country": "at", - }, - { - "title": "Ottendorf an der Rittschein", - "url": "https://www.ottendorf-rittschein.steiermark.at", - "country": "at", - }, - { - "title": "Pinggau", - "url": "https://www.pinggau.gv.at", - "country": "at", - }, - { - "title": "Rohr bei Hartberg", - "url": "https://www.rohr-bei-hartberg.at", - "country": "at", - }, - { - "title": "St. Johann in der Haide", - "url": "http://www.st-johann-haide.gv.at", - "country": "at", - }, - { - "title": "St. Lorenzen am Wechsel", - "url": "https://www.st-lorenzen-wechsel.at", - "country": "at", - }, - { - "title": "Schäffern", - "url": "https://www.schaeffern.gv.at", - "country": "at", - }, - { - "title": "Bad Gleichenberg", - "url": "http://www.bad-gleichenberg.gv.at", - "country": "at", - }, - { - "title": "Deutsch Goritz", - "url": "https://www.deutsch-goritz.at", - "country": "at", - }, - { - "title": "Edelsbach bei Feldbach", - "url": "http://www.edelsbach.at", - "country": "at", - }, - { - "title": "Jagerberg", - "url": "http://www.jagerberg.info", - "country": "at", - }, - { - "title": "Kapfenstein", - "url": "http://www.kapfenstein.at", - "country": "at", - }, - { - "title": "Kirchberg an der Raab", - "url": "https://www.kirchberg-raab.gv.at", - "country": "at", - }, - { - "title": "Klöch", - "url": "https://www.kloech.com", - "country": "at", - }, - { - "title": "Mettersdorf am Saßbach", - "url": "http://www.mettersdorf.com", - "country": "at", - }, - { - "title": "Mureck", - "url": "https://www.mureck.gv.at", - "country": "at", - }, - { - "title": "Paldau", - "url": "http://www.paldau.gv.at", - "country": "at", - }, - { - "title": "St. Anna am Aigen", - "url": "http://www.st-anna-aigen.gv.at", - "country": "at", - }, - { - "title": "St. Peter am Ottersbach", - "url": "http://www.st-peter-ottersbach.gv.at", - "country": "at", - }, - { - "title": "Tieschen", - "url": "https://www.tieschen.gv.at", - "country": "at", - }, - { - "title": "Unterlamm", - "url": "http://www.unterlamm.gv.at", - "country": "at", - }, - { - "title": "Gutenberg", - "url": "https://www.gutenberg-stenzengreith.gv.at", - "country": "at", - }, - { - "title": "Hofstätten an der Raab", - "url": "https://www.hofstaetten.at", - "country": "at", - }, - { - "title": "Markt Hartmannsdorf", - "url": "https://www.markthartmannsdorf.at", - "country": "at", - }, - { - "title": "Mitterdorf an der Raab", - "url": "https://www.mitterdorf-raab.at", - "country": "at", - }, - { - "title": "St. Margarethen an der Raab", - "url": "https://www.st-margarethen-raab.at", - "country": "at", - }, - { - "title": "St. Ruprecht an der Raab", - "url": "https://www.st.ruprecht.at", - "country": "at", - }, - { - "title": "Sinabelkirchen", - "url": "https://www.sinabelkirchen.eu", - "country": "at", - }, - { - "title": "Deutsch Kaltenbrunn", - "url": "https://www.deutschkaltenbrunn.eu", - "country": "at", - }, - { - "title": "Bildein", - "url": "http://www.bildein.at", - "country": "at", - }, - { - "title": "Burgauberg-Neudauberg", - "url": "http://www.burgauberg-neudauberg.at", - "country": "at", - }, - { - "title": "Eberau", - "url": "https://eberau.riskommunal.net", - "country": "at", - }, - { - "title": "Güssing", - "url": "https://www.guessing.co.at", - "country": "at", - }, - { - "title": "Inzenhof", - "url": "https://www.inzenhof.at", - "country": "at", - }, - { - "title": "Kleinmürbisch", - "url": "https://www.kleinmürbisch.at", - "country": "at", - }, - { - "title": "Melk", - "url": "https://www.stadt-melk.at", - "country": "at", - }, - { - "title": "Neustift bei Güssing", - "url": "http://www.xn--neustift-bei-gssing-jbc.at", - "country": "at", - }, - { - "title": "Stegersbach", - "url": "https://gemeinde.stegersbach.at", - "country": "at", - }, - { - "title": "Tobaj", - "url": "http://www.tobaj.gv.at", - "country": "at", - }, - { - "title": "Wörterberg", - "url": "http://www.woerterberg.at", - "country": "at", - }, - { - "title": "Stinatz", - "url": "http://www.stinatz.gv.at", - "country": "at", - }, - { - "title": "Tulln an der Donau", - "url": "https://www.tulln.at", - "country": "at", - }, - { - "title": "Pöchlarn", - "url": "https://www.poechlarn.at", - "country": "at", - }, - { - "title": "Stockerau", - "url": "http://www.stockerau.at", - "country": "at", - }, - { - "title": "Dobl-Zwaring", - "url": "https://www.dobl-zwaring.gv.at", - "country": "at", - }, - { - "title": "Seiersberg-Pirka", - "url": "https://www.gemeindekurier.at", - "country": "at", - }, - { - "title": "Korneuburg", - "url": "https://www.korneuburg.gv.at", - "country": "at", - }, - { - "title": "Hartberg", - "url": "https://www.hartberg.at", - "country": "at", - }, { "title": "Bad Radkersburg", "url": "https://www.bad-radkersburg.gv.at", "country": "at", }, - { - "title": "Wolfsberg", - "url": "https://www.wolfsberg.at", - "country": "at", - }, - { - "title": "Deutschkreutz", - "url": "https://www.deutschkreutz.at", - "country": "at", - }, - { - "title": "Fehring", - "url": "http://www.fehring.at", - "country": "at", - }, - { - "title": "Eisenstadt", - "url": "https://www.eisenstadt.gv.at", - "country": "at", - }, - { - "title": "Mattersburg", - "url": "https://www.mattersburg.gv.at", - "country": "at", - }, - { - "title": "Freistadt", - "url": "https://www.freistadt.at", - "country": "at", - }, - { - "title": "Feldbach", - "url": "https://www.feldbach.gv.at", - "country": "at", - }, - { - "title": "Weiz", - "url": "https://www.weiz.at", - "country": "at", - }, - { - "title": "Oberpullendorf", - "url": "https://www.oberpullendorf.gv.at", - "country": "at", - }, - { - "title": "St. Margarethen im Burgenland", - "url": "https://www.st-margarethen.at", - "country": "at", - }, - { - "title": "Hornstein", - "url": "https://www.hornstein.at", - "country": "at", - }, - { - "title": "Raiding", - "url": "https://www.raiding-online.at", - "country": "at", - }, - { - "title": "Wiesen", - "url": "https://www.wiesen.eu", - "country": "at", - }, { "title": "Bad Tatzmannsdorf", "url": "http://www.bad-tatzmannsdorf.at", "country": "at", }, + { + "title": "Bad Waltersdorf", + "url": "www.bad-waltersdorf.gv.at/home/", + "country": "at", + }, + {"title": "Bernstein", "url": "http://www.bernstein.gv.at", "country": "at"}, + {"title": "Bildein", "url": "http://www.bildein.at", "country": "at"}, { "title": "Breitenbrunn am Neusiedler See", "url": "http://www.breitenbrunn.at", "country": "at", }, + {"title": "Breitenstein", "url": "https://www.breitenstein.at", "country": "at"}, + {"title": "Bromberg", "url": "http://www.bromberg.at", "country": "at"}, + {"title": "Bruckneudorf", "url": "http://www.bruckneudorf.eu", "country": "at"}, { - "title": "Leithaprodersdorf", - "url": "http://www.leithaprodersdorf.at", + "title": "Buch - St. Magdalena", + "url": "http://www.buch-stmagdalena.at", + "country": "at", + }, + {"title": "Burgau", "url": "https://www.burgau.info", "country": "at"}, + { + "title": "Burgauberg-Neudauberg", + "url": "http://www.burgauberg-neudauberg.at", "country": "at", }, { - "title": "Wimpassing an der Leitha", - "url": "http://www.wimpassing-leitha.at", + "title": "Dechantskirchen", + "url": "https://dechantskirchen.gv.at", "country": "at", }, { - "title": "Rust", - "url": "https://www.freistadt-rust.at", - "country": "at", - }, - { - "title": "St. Andrä am Zicksee", - "url": "https://www.gemeinde-standrae.at", - "country": "at", - }, - { - "title": "Winden am See", - "url": "https://www.winden.at", - "country": "at", - }, - { - "title": "Schützen am Gebirge", - "url": "https://www.schuetzen-am-gebirge.at", - "country": "at", - }, - { - "title": "Großwarasdorf", - "url": "https://www.grosswarasdorf.at", - "country": "at", - }, - { - "title": "Horitschon", - "url": "http://www.horitschon.at", - "country": "at", - }, - { - "title": "Zagersdorf", - "url": "http://www.zagersdorf.at", + "title": "Deutsch Goritz", + "url": "https://www.deutsch-goritz.at", "country": "at", }, { @@ -442,43 +75,214 @@ SERVICE_MAP = [ "country": "at", }, { - "title": "Bruckneudorf", - "url": "http://www.bruckneudorf.eu", + "title": "Deutsch Kaltenbrunn", + "url": "https://www.deutschkaltenbrunn.eu", + "country": "at", + }, + {"title": "Deutschkreutz", "url": "https://www.deutschkreutz.at", "country": "at"}, + {"title": "Dobl-Zwaring", "url": "https://www.dobl-zwaring.gv.at", "country": "at"}, + {"title": "Drasenhofen", "url": "https://www.drasenhofen.at", "country": "at"}, + {"title": "Draßmarkt", "url": "http://www.drassmarkt.at", "country": "at"}, + {"title": "Eberau", "url": "https://eberau.riskommunal.net", "country": "at"}, + {"title": "Eberndorf", "url": "https://www.eberndorf.at", "country": "at"}, + {"title": "Ebersdorf", "url": "https://www.ebersdorf.eu", "country": "at"}, + {"title": "Eberstein", "url": "https://www.eberstein.at", "country": "at"}, + { + "title": "Edelsbach bei Feldbach", + "url": "http://www.edelsbach.at", + "country": "at", + }, + {"title": "Eggenburg", "url": "www.eggenburg.gv.at/", "country": "at"}, + { + "title": "Eggersdorf bei Graz", + "url": "https://www.eggersdorf-graz.gv.at", + "country": "at", + }, + {"title": "Eichgraben", "url": "www.eichgraben.at/", "country": "at"}, + {"title": "Eisenstadt", "url": "https://www.eisenstadt.gv.at", "country": "at"}, + {"title": "Fehring", "url": "http://www.fehring.at", "country": "at"}, + { + "title": "Feistritz ob Bleiburg", + "url": "https://feistritz-bleiburg.gv.at", + "country": "at", + }, + {"title": "Feldbach", "url": "https://www.feldbach.gv.at", "country": "at"}, + { + "title": "Feldkirchen in Kärnten", + "url": "https://www.feldkirchen.at", + "country": "at", + }, + {"title": "Ferndorf", "url": "https://www.ferndorf.gv.at", "country": "at"}, + { + "title": "Frankenau-Unterpullendorf", + "url": "https://www.frankenau-unterpullendorf.gv.at", + "country": "at", + }, + {"title": "Frauenkirchen", "url": "https://www.frauenkirchen.at", "country": "at"}, + {"title": "Freistadt", "url": "https://www.freistadt.at", "country": "at"}, + {"title": "Fresach", "url": "https://fresach.gv.at", "country": "at"}, + {"title": "Friedberg", "url": "https://www.friedberg.gv.at", "country": "at"}, + {"title": "Frohnleiten", "url": "https://www.frohnleiten.com", "country": "at"}, + { + "title": "Fürstenfeld", + "url": "https://www.fuerstenfeld.gv.at", + "country": "at", + }, + {"title": "Gabersdorf", "url": "https://www.gabersdorf.gv.at", "country": "at"}, + {"title": "Gattendorf", "url": "https://www.gattendorf.at", "country": "at"}, + {"title": "Gitschtal", "url": "gitschtal.gv.at/", "country": "at"}, + {"title": "Gols", "url": "https://www.gols.at", "country": "at"}, + { + "title": "Grafendorf bei Hartberg", + "url": "https://grafendorf.at", "country": "at", }, { - "title": "Mischendorf", - "url": "https://www.mischendorf.at", + "title": "Grafenschachen", + "url": "https://www.grafenschachen.at", + "country": "at", + }, + {"title": "Grafenstein", "url": "https://grafenstein.gv.at", "country": "at"}, + {"title": "Gratkorn", "url": "https://www.gratkorn.gv.at", "country": "at"}, + { + "title": "Gratwein-Straßengel", + "url": "https://gratwein-strassengel.gv.at", "country": "at", }, { - "title": "Pinkafeld", - "url": "https://www.pinkafeld.gv.at", + "title": "Großsteinbach", + "url": "www.gemeinde-grosssteinbach.at/", "country": "at", }, { - "title": "Vasoldsberg", - "url": "https://www.vasoldsberg.gv.at", + "title": "Großwarasdorf", + "url": "https://www.grosswarasdorf.at", "country": "at", }, + { + "title": "Großwilfersdorf", + "url": "http://www.grosswilfersdorf.steiermark.at", + "country": "at", + }, + { + "title": "Gutenberg", + "url": "https://www.gutenberg-stenzengreith.gv.at", + "country": "at", + }, + {"title": "Güssing", "url": "https://www.guessing.co.at", "country": "at"}, + { + "title": "Hagenberg im Mühlkreis", + "url": "https://www.hagenberg.at", + "country": "at", + }, + {"title": "Hannersdorf", "url": "https://www.hannersdorf.at", "country": "at"}, + {"title": "Hartberg", "url": "https://www.hartberg.at", "country": "at"}, + {"title": "Heiligenkreuz", "url": "https://www.heiligenkreuz.at", "country": "at"}, { "title": "Heiligenkreuz am Waasen", "url": "https://www.heiligenkreuz-waasen.gv.at", "country": "at", }, + {"title": "Heimschuh", "url": "https://www.heimschuh.at", "country": "at"}, + {"title": "Henndorf am Wallersee", "url": "www.henndorf.at/", "country": "at"}, + {"title": "Hirm", "url": "www.hirm.gv.at/", "country": "at"}, { - "title": "Jabing", - "url": "https://www.gemeinde-jabing.at", + "title": "Hofstätten an der Raab", + "url": "https://www.hofstaetten.at", + "country": "at", + }, + {"title": "Horitschon", "url": "http://www.horitschon.at", "country": "at"}, + {"title": "Horn", "url": "https://horn.gv.at", "country": "at"}, + {"title": "Hornstein", "url": "https://www.hornstein.at", "country": "at"}, + {"title": "Hüttenberg", "url": "https://huettenberg.at", "country": "at"}, + {"title": "Ilz", "url": "https://www.ilz.at", "country": "at"}, + {"title": "Inzenhof", "url": "https://www.inzenhof.at", "country": "at"}, + {"title": "Jabing", "url": "https://www.gemeinde-jabing.at", "country": "at"}, + {"title": "Jagerberg", "url": "http://www.jagerberg.info", "country": "at"}, + {"title": "Kaindorf", "url": "https://www.kaindorf.at", "country": "at"}, + {"title": "Kaisersdorf", "url": "http://www.kaisersdorf.com", "country": "at"}, + { + "title": "Kalsdorf bei Graz", + "url": "https://www.kalsdorf-graz.gv.at", + "country": "at", + }, + {"title": "Kapfenstein", "url": "http://www.kapfenstein.at", "country": "at"}, + {"title": "Kemeten", "url": "https://www.kemeten.gv.at", "country": "at"}, + {"title": "Kirchbach-Zerlach", "url": "www.kirchbach-zerlach.at/", "country": "at"}, + { + "title": "Kirchberg an der Raab", + "url": "https://www.kirchberg-raab.gv.at", + "country": "at", + }, + {"title": "Kittsee", "url": "https://www.kittsee.at", "country": "at"}, + { + "title": "Kleinmürbisch", + "url": "https://www.kleinmürbisch.at", + "country": "at", + }, + {"title": "Klingenbach", "url": "https://klingenbach.at", "country": "at"}, + {"title": "Klöch", "url": "https://www.kloech.com", "country": "at"}, + {"title": "Kobersdorf", "url": "www.kobersdorf.at/index.php", "country": "at"}, + {"title": "Kohfidisch", "url": "http://www.kohfidisch.at", "country": "at"}, + {"title": "Korneuburg", "url": "https://www.korneuburg.gv.at", "country": "at"}, + {"title": "Krensdorf", "url": "https://www.krensdorf.at", "country": "at"}, + {"title": "Kuchl", "url": "www.kuchl.net/", "country": "at"}, + {"title": "Laa an der Thaya", "url": "http://www.laa.at", "country": "at"}, + { + "title": "Lackenbach", + "url": "https://www.gemeinde-lackenbach.at", + "country": "at", + }, + {"title": "Lackendorf", "url": "https://www.lackendorf.at", "country": "at"}, + {"title": "Langau", "url": "http://www.langau.at", "country": "at"}, + {"title": "Langenrohr", "url": "https://www.langenrohr.gv.at", "country": "at"}, + { + "title": "Leithaprodersdorf", + "url": "http://www.leithaprodersdorf.at", "country": "at", }, { - "title": "Gattendorf", - "url": "https://www.gattendorf.at", + "title": "Leutschach an der Weinstraße", + "url": "https://www.leutschach-weinstrasse.gv.at", "country": "at", }, + {"title": "Lieboch", "url": "https://www.lieboch.gv.at", "country": "at"}, + {"title": "Litzelsdorf", "url": "https://www.litzelsdorf.at", "country": "at"}, + {"title": "Lockenhaus", "url": "www.lockenhaus.at/", "country": "at"}, { - "title": "Sigleß", - "url": "https://www.sigless.at", + "title": "Loipersbach im Burgenland", + "url": "https://www.loipersbach.info", + "country": "at", + }, + {"title": "Mariasdorf", "url": "https://www.mariasdorf.at", "country": "at"}, + { + "title": "Markt Hartmannsdorf", + "url": "https://www.markthartmannsdorf.at", + "country": "at", + }, + {"title": "Markt Neuhodis", "url": "http://www.markt-neuhodis.at", "country": "at"}, + {"title": "Marz", "url": "https://www.marz.gv.at", "country": "at"}, + {"title": "Mattersburg", "url": "https://www.mattersburg.gv.at", "country": "at"}, + {"title": "Meiseldorf", "url": "https://www.meiseldorf.gv.at", "country": "at"}, + {"title": "Melk", "url": "https://www.stadt-melk.at", "country": "at"}, + { + "title": "Mettersdorf am Saßbach", + "url": "http://www.mettersdorf.com", + "country": "at", + }, + {"title": "Miesenbach", "url": "https://www.miesenbach.at", "country": "at"}, + {"title": "Mischendorf", "url": "https://www.mischendorf.at", "country": "at"}, + {"title": "Mistelbach", "url": "https://www.mistelbach.at", "country": "at"}, + { + "title": "Mitterdorf an der Raab", + "url": "https://www.mitterdorf-raab.at", + "country": "at", + }, + {"title": "Mureck", "url": "https://www.mureck.gv.at", "country": "at"}, + {"title": "Mönchhof", "url": "https://www.moenchhof.at", "country": "at"}, + { + "title": "Mörbisch am See", + "url": "https://moerbisch.gv.at", "country": "at", }, { @@ -486,41 +290,7 @@ SERVICE_MAP = [ "url": "http://www.neudorfbeiparndorf.at", "country": "at", }, - { - "title": "Thal", - "url": "https://thal.gv.at", - "country": "at", - }, - { - "title": "Potzneusiedl", - "url": "https://www.potzneusiedl.at", - "country": "at", - }, - { - "title": "Gols", - "url": "https://www.gols.at", - "country": "at", - }, - { - "title": "Eberndorf", - "url": "https://www.eberndorf.at", - "country": "at", - }, - { - "title": "Ragnitz", - "url": "https://www.ragnitz.gv.at", - "country": "at", - }, - { - "title": "Stiwoll", - "url": "https://www.stiwoll.at", - "country": "at", - }, - { - "title": "Litzelsdorf", - "url": "https://www.litzelsdorf.at", - "country": "at", - }, + {"title": "Neudörfl", "url": "https://www.neudoerfl.gv.at", "country": "at"}, { "title": "Neufeld an der Leitha", "url": "https://www.neufeld-leitha.at", @@ -532,293 +302,38 @@ SERVICE_MAP = [ "country": "at", }, { - "title": "Klingenbach", - "url": "https://klingenbach.at", + "title": "Neustift bei Güssing", + "url": "http://www.xn--neustift-bei-gssing-jbc.at", + "country": "at", + }, + {"title": "Nickelsdorf", "url": "https://www.nickelsdorf.gv.at", "country": "at"}, + { + "title": "Oberpullendorf", + "url": "https://www.oberpullendorf.gv.at", "country": "at", }, { - "title": "Zurndorf", - "url": "https://zurndorf.at", + "title": "Oberschützen", + "url": "https://www.oberschuetzen.at", "country": "at", }, + {"title": "Oberwart", "url": "https://www.oberwart.gv.at", "country": "at"}, + {"title": "Oslip", "url": "http://www.oslip.at", "country": "at"}, { - "title": "Wiesfleck", - "url": "https://www.gemeinde-wiesfleck.at", + "title": "Ottendorf an der Rittschein", + "url": "https://www.ottendorf-rittschein.steiermark.at", "country": "at", }, + {"title": "Paldau", "url": "http://www.paldau.gv.at", "country": "at"}, + {"title": "Pama", "url": "https://www.gemeinde-pama.at", "country": "at"}, + {"title": "Pamhagen", "url": "https://www.gemeinde-pamhagen.at", "country": "at"}, + {"title": "Parndorf", "url": "http://www.gemeinde-parndorf.at", "country": "at"}, + {"title": "Payerbach", "url": "https://www.payerbach.at", "country": "at"}, + {"title": "Peggau", "url": "https://peggau.at", "country": "at"}, + {"title": "Pernegg an der Mur", "url": "http://pernegg.at", "country": "at"}, { - "title": "Wolkersdorf im Weinviertel", - "url": "http://www.wolkersdorf.at", - "country": "at", - }, - { - "title": "Poysdorf", - "url": "https://www.poysdorf.at", - "country": "at", - }, - { - "title": "Laa an der Thaya", - "url": "http://www.laa.at", - "country": "at", - }, - { - "title": "Mistelbach", - "url": "https://www.mistelbach.at", - "country": "at", - }, - { - "title": "Wies", - "url": "https://www.wies.at", - "country": "at", - }, - { - "title": "Unterkohlstätten", - "url": "https://www.unterkohlstaetten.at", - "country": "at", - }, - { - "title": "Übelbach", - "url": "https://www.uebelbach.gv.at", - "country": "at", - }, - { - "title": "Frauenkirchen", - "url": "https://www.frauenkirchen.at", - "country": "at", - }, - { - "title": "Zillingtal", - "url": "https://www.zillingtal.eu", - "country": "at", - }, - { - "title": "Andau", - "url": "https://www.andau-gemeinde.at", - "country": "at", - }, - { - "title": "Sankt Oswald bei Plankenwarth", - "url": "https://www.sanktoswald.net", - "country": "at", - }, - { - "title": "Draßmarkt", - "url": "http://www.drassmarkt.at", - "country": "at", - }, - { - "title": "Feistritz ob Bleiburg", - "url": "https://feistritz-bleiburg.gv.at", - "country": "at", - }, - { - "title": "Pamhagen", - "url": "https://www.gemeinde-pamhagen.at", - "country": "at", - }, - { - "title": "Podersdorf am See", - "url": "http://www.gemeindepodersdorfamsee.at", - "country": "at", - }, - { - "title": "St. Veit in der Südsteiermark", - "url": "https://www.st-veit-suedsteiermark.gv.at", - "country": "at", - }, - { - "title": "Peggau", - "url": "https://peggau.at", - "country": "at", - }, - { - "title": "Frankenau-Unterpullendorf", - "url": "https://www.frankenau-unterpullendorf.gv.at", - "country": "at", - }, - { - "title": "Marz", - "url": "https://www.marz.gv.at", - "country": "at", - }, - { - "title": "Völkermarkt", - "url": "https://voelkermarkt.gv.at", - "country": "at", - }, - { - "title": "Vordernberg", - "url": "http://www.vordernberg.steiermark.at", - "country": "at", - }, - { - "title": "Parndorf", - "url": "http://www.gemeinde-parndorf.at", - "country": "at", - }, - { - "title": "Oberwart", - "url": "https://www.oberwart.gv.at", - "country": "at", - }, - { - "title": "Kalsdorf bei Graz", - "url": "https://www.kalsdorf-graz.gv.at", - "country": "at", - }, - { - "title": "Grafenstein", - "url": "https://grafenstein.gv.at", - "country": "at", - }, - { - "title": "Gratkorn", - "url": "https://www.gratkorn.gv.at", - "country": "at", - }, - { - "title": "Steuerberg", - "url": "https://www.steuerberg.at", - "country": "at", - }, - { - "title": "St. Peter - Freienstein", - "url": "https://www.st-peter-freienstein.gv.at", - "country": "at", - }, - { - "title": "Oslip", - "url": "http://www.oslip.at", - "country": "at", - }, - { - "title": "Loipersbach im Burgenland", - "url": "https://www.loipersbach.info", - "country": "at", - }, - { - "title": "Eberstein", - "url": "https://www.eberstein.at", - "country": "at", - }, - { - "title": "Pernegg an der Mur", - "url": "http://pernegg.at", - "country": "at", - }, - { - "title": "Lieboch", - "url": "https://www.lieboch.gv.at", - "country": "at", - }, - { - "title": "St. Andrä", - "url": "https://www.st-andrae.gv.at", - "country": "at", - }, - { - "title": "Nickelsdorf", - "url": "https://www.nickelsdorf.gv.at", - "country": "at", - }, - { - "title": "Radmer", - "url": "https://www.radmer.at", - "country": "at", - }, - { - "title": "Breitenstein", - "url": "https://www.breitenstein.at", - "country": "at", - }, - { - "title": "Eggersdorf bei Graz", - "url": "https://www.eggersdorf-graz.gv.at", - "country": "at", - }, - { - "title": "Markt Neuhodis", - "url": "http://www.markt-neuhodis.at", - "country": "at", - }, - { - "title": "Hüttenberg", - "url": "https://huettenberg.at", - "country": "at", - }, - { - "title": "Mörbisch am See", - "url": "https://moerbisch.gv.at", - "country": "at", - }, - { - "title": "Pilgersdorf", - "url": "https://www.pilgersdorf.at", - "country": "at", - }, - { - "title": "Kittsee", - "url": "https://www.kittsee.at", - "country": "at", - }, - { - "title": "Altenmarkt an der Triesting", - "url": "https://www.altenmarkt-triesting.gv.at", - "country": "at", - }, - { - "title": "Poggersdorf", - "url": "https://gemeinde-poggersdorf.at", - "country": "at", - }, - { - "title": "Feldkirchen in Kärnten", - "url": "https://www.feldkirchen.at", - "country": "at", - }, - { - "title": "Horn", - "url": "https://horn.gv.at", - "country": "at", - }, - { - "title": "Kohfidisch", - "url": "http://www.kohfidisch.at", - "country": "at", - }, - { - "title": "Apetlon", - "url": "https://gemeinde-apetlon.at", - "country": "at", - }, - { - "title": "Unterfrauenhaid", - "url": "https://www.unterfrauenhaid.at", - "country": "at", - }, - { - "title": "Werfenweng", - "url": "http://www.gemeinde-werfenweng.at", - "country": "at", - }, - { - "title": "Kaisersdorf", - "url": "http://www.kaisersdorf.com", - "country": "at", - }, - { - "title": "Steinbrunn", - "url": "https://www.steinbrunn.at", - "country": "at", - }, - { - "title": "Mariasdorf", - "url": "https://www.mariasdorf.at", - "country": "at", - }, - { - "title": "Unterwart", - "url": "https://www.unterwart.at", + "title": "Pernegg im Waldviertel", + "url": "https://www.pernegg.info", "country": "at", }, { @@ -826,69 +341,86 @@ SERVICE_MAP = [ "url": "http://www.gemeinde.pfarrwerfen.at", "country": "at", }, + {"title": "Pilgersdorf", "url": "https://www.pilgersdorf.at", "country": "at"}, + {"title": "Pinggau", "url": "https://www.pinggau.gv.at", "country": "at"}, + {"title": "Pinkafeld", "url": "https://www.pinkafeld.gv.at", "country": "at"}, { - "title": "Gratwein-Straßengel", - "url": "https://gratwein-strassengel.gv.at", + "title": "Podersdorf am See", + "url": "http://www.gemeindepodersdorfamsee.at", + "country": "at", + }, + {"title": "Poggersdorf", "url": "https://gemeinde-poggersdorf.at", "country": "at"}, + {"title": "Potzneusiedl", "url": "https://www.potzneusiedl.at", "country": "at"}, + {"title": "Poysdorf", "url": "https://www.poysdorf.at", "country": "at"}, + {"title": "Pöchlarn", "url": "https://www.poechlarn.at", "country": "at"}, + {"title": "Raach am Hochgebirge", "url": "https://www.raach.at", "country": "at"}, + {"title": "Raasdorf", "url": "www.raasdorf.gv.at/", "country": "at"}, + {"title": "Radmer", "url": "https://www.radmer.at", "country": "at"}, + {"title": "Ragnitz", "url": "https://www.ragnitz.gv.at", "country": "at"}, + {"title": "Raiding", "url": "https://www.raiding-online.at", "country": "at"}, + {"title": "Reichenau", "url": "https://reichenau.gv.at", "country": "at"}, + { + "title": "Rohr bei Hartberg", + "url": "https://www.rohr-bei-hartberg.at", + "country": "at", + }, + {"title": "Rohr im Burgenland", "url": "www.rohr-bgld.at/", "country": "at"}, + {"title": "Rudersdorf", "url": "http://www.rudersdorf.at", "country": "at"}, + {"title": "Rust", "url": "https://www.freistadt-rust.at", "country": "at"}, + { + "title": "Saalfelden am Steinernen Meer", + "url": "www.stadtmarketing-saalfelden.at/de", "country": "at", }, { - "title": "Raach am Hochgebirge", - "url": "https://www.raach.at", + "title": "Sankt Georgen an der Stiefing", + "url": "https://www.st-georgen-stiefing.gv.at", + "country": "at", + }, + {"title": "Sankt Gilgen", "url": "https://www.gemgilgen.at", "country": "at"}, + { + "title": "Sankt Oswald bei Plankenwarth", + "url": "https://www.sanktoswald.net", "country": "at", }, { - "title": "Kemeten", - "url": "https://www.kemeten.gv.at", + "title": "Schrattenberg", + "url": "https://www.schrattenberg.gv.at", + "country": "at", + }, + {"title": "Schwadorf", "url": "https://www.schwadorf.gv.at", "country": "at"}, + {"title": "Schäffern", "url": "https://www.schaeffern.gv.at", "country": "at"}, + { + "title": "Schützen am Gebirge", + "url": "https://www.schuetzen-am-gebirge.at", "country": "at", }, { - "title": "Payerbach", - "url": "https://www.payerbach.at", + "title": "Seiersberg-Pirka", + "url": "https://www.gemeindekurier.at", + "country": "at", + }, + {"title": "Siegendorf", "url": "https://www.siegendorf.gv.at", "country": "at"}, + {"title": "Sigleß", "url": "https://www.sigless.at", "country": "at"}, + { + "title": "Sigmundsherberg", + "url": "https://www.sigmundsherberg.gv.at", "country": "at", }, { - "title": "Miesenbach", - "url": "https://www.miesenbach.at", + "title": "Sinabelkirchen", + "url": "https://www.sinabelkirchen.eu", + "country": "at", + }, + {"title": "St. Andrä", "url": "https://www.st-andrae.gv.at", "country": "at"}, + { + "title": "St. Andrä am Zicksee", + "url": "https://www.gemeinde-standrae.at", "country": "at", }, { - "title": "Gabersdorf", - "url": "https://www.gabersdorf.gv.at", - "country": "at", - }, - { - "title": "Weppersdorf", - "url": "https://www.weppersdorf.at", - "country": "at", - }, - { - "title": "Bromberg", - "url": "http://www.bromberg.at", - "country": "at", - }, - { - "title": "Neudörfl", - "url": "https://www.neudoerfl.gv.at", - "country": "at", - }, - { - "title": "Weiden am See", - "url": "https://www.weiden-see.at", - "country": "at", - }, - { - "title": "Lackenbach", - "url": "https://www.gemeinde-lackenbach.at", - "country": "at", - }, - { - "title": "Hagenberg im Mühlkreis", - "url": "https://www.hagenberg.at", - "country": "at", - }, - { - "title": "Grafenschachen", - "url": "https://www.grafenschachen.at", + "title": "St. Anna am Aigen", + "url": "http://www.st-anna-aigen.gv.at", "country": "at", }, { @@ -897,23 +429,122 @@ SERVICE_MAP = [ "country": "at", }, { - "title": "Wiesmath", - "url": "http://www.wiesmath.at", + "title": "St. Georgen an der Leys", + "url": "www.stgeorgenleys.at/", "country": "at", }, { - "title": "Meiseldorf", - "url": "https://www.meiseldorf.gv.at", + "title": "St. Jakob im Rosental", + "url": "www.st-jakob-rosental.gv.at/", "country": "at", }, { - "title": "Siegendorf", - "url": "https://www.siegendorf.gv.at", + "title": "St. Johann in der Haide", + "url": "http://www.st-johann-haide.gv.at", + "country": "at", + }, + {"title": "St. Konrad", "url": "www.st-konrad.at/", "country": "at"}, + { + "title": "St. Lorenzen am Wechsel", + "url": "https://www.st-lorenzen-wechsel.at", "country": "at", }, { - "title": "Weitersfeld", - "url": "https://www.weitersfeld.gv.at", + "title": "St. Margarethen an der Raab", + "url": "https://www.st-margarethen-raab.at", + "country": "at", + }, + { + "title": "St. Margarethen im Burgenland", + "url": "https://www.st-margarethen.at", + "country": "at", + }, + { + "title": "St. Peter - Freienstein", + "url": "https://www.st-peter-freienstein.gv.at", + "country": "at", + }, + { + "title": "St. Peter am Ottersbach", + "url": "http://www.st-peter-ottersbach.gv.at", + "country": "at", + }, + { + "title": "St. Ruprecht an der Raab", + "url": "https://www.st.ruprecht.at", + "country": "at", + }, + { + "title": "St. Veit in der Südsteiermark", + "url": "https://www.st-veit-suedsteiermark.gv.at", + "country": "at", + }, + {"title": "Stegersbach", "url": "https://gemeinde.stegersbach.at", "country": "at"}, + {"title": "Steinbrunn", "url": "https://www.steinbrunn.at", "country": "at"}, + {"title": "Steuerberg", "url": "https://www.steuerberg.at", "country": "at"}, + {"title": "Stinatz", "url": "http://www.stinatz.gv.at", "country": "at"}, + {"title": "Stiwoll", "url": "https://www.stiwoll.at", "country": "at"}, + {"title": "Stockerau", "url": "http://www.stockerau.at", "country": "at"}, + { + "title": "Straß in Steiermark", + "url": "https://www.strass-steiermark.gv.at", + "country": "at", + }, + { + "title": "Söchau", + "url": "http://www.soechau.steiermark.at", + "country": "at", + }, + {"title": "Tadten", "url": "https://www.tadten.at", "country": "at"}, + {"title": "Tattendorf", "url": "https://www.tattendorf.at", "country": "at"}, + {"title": "Thal", "url": "https://thal.gv.at", "country": "at"}, + {"title": "Tieschen", "url": "https://www.tieschen.gv.at", "country": "at"}, + {"title": "Tobaj", "url": "http://www.tobaj.gv.at", "country": "at"}, + {"title": "Tulln an der Donau", "url": "https://www.tulln.at", "country": "at"}, + { + "title": "Unterfrauenhaid", + "url": "https://www.unterfrauenhaid.at", + "country": "at", + }, + { + "title": "Unterkohlstätten", + "url": "https://www.unterkohlstaetten.at", + "country": "at", + }, + {"title": "Unterlamm", "url": "http://www.unterlamm.gv.at", "country": "at"}, + {"title": "Unterwart", "url": "https://www.unterwart.at", "country": "at"}, + {"title": "Vasoldsberg", "url": "https://www.vasoldsberg.gv.at", "country": "at"}, + { + "title": "Vordernberg", + "url": "http://www.vordernberg.steiermark.at", + "country": "at", + }, + {"title": "Völkermarkt", "url": "https://voelkermarkt.gv.at", "country": "at"}, + {"title": "Walpersbach", "url": "http://www.walpersbach.gv.at", "country": "at"}, + {"title": "Weiden am See", "url": "https://www.weiden-see.at", "country": "at"}, + {"title": "Weitersfeld", "url": "https://www.weitersfeld.gv.at", "country": "at"}, + {"title": "Weiz", "url": "https://www.weiz.at", "country": "at"}, + {"title": "Weppersdorf", "url": "https://www.weppersdorf.at", "country": "at"}, + { + "title": "Werfenweng", + "url": "http://www.gemeinde-werfenweng.at", + "country": "at", + }, + {"title": "Wies", "url": "https://www.wies.at", "country": "at"}, + {"title": "Wiesen", "url": "https://www.wiesen.eu", "country": "at"}, + {"title": "Wiesfleck", "url": "https://www.gemeinde-wiesfleck.at", "country": "at"}, + {"title": "Wiesmath", "url": "http://www.wiesmath.at", "country": "at"}, + { + "title": "Wimpassing an der Leitha", + "url": "http://www.wimpassing-leitha.at", + "country": "at", + }, + {"title": "Winden am See", "url": "https://www.winden.at", "country": "at"}, + {"title": "Wolfau", "url": "https://www.gemeinde-wolfau.at", "country": "at"}, + {"title": "Wolfsberg", "url": "https://www.wolfsberg.at", "country": "at"}, + { + "title": "Wolkersdorf im Weinviertel", + "url": "http://www.wolkersdorf.at", "country": "at", }, { @@ -921,193 +552,60 @@ SERVICE_MAP = [ "url": "https://www.wulkaprodersdorf.at", "country": "at", }, - { - "title": "Sigmundsherberg", - "url": "https://www.sigmundsherberg.gv.at", - "country": "at", - }, - { - "title": "Straß in Steiermark", - "url": "https://www.strass-steiermark.gv.at", - "country": "at", - }, - { - "title": "Hannersdorf", - "url": "https://www.hannersdorf.at", - "country": "at", - }, - { - "title": "Walpersbach", - "url": "http://www.walpersbach.gv.at", - "country": "at", - }, - { - "title": "Drasenhofen", - "url": "https://www.drasenhofen.at", - "country": "at", - }, - { - "title": "Frohnleiten", - "url": "https://www.frohnleiten.com", - "country": "at", - }, - { - "title": "Lackendorf", - "url": "https://www.lackendorf.at", - "country": "at", - }, - { - "title": "Langenrohr", - "url": "https://www.langenrohr.gv.at", - "country": "at", - }, - { - "title": "Heimschuh", - "url": "https://www.heimschuh.at", - "country": "at", - }, - { - "title": "Sankt Gilgen", - "url": "https://www.gemgilgen.at", - "country": "at", - }, + {"title": "Wörterberg", "url": "http://www.woerterberg.at", "country": "at"}, + {"title": "Zagersdorf", "url": "http://www.zagersdorf.at", "country": "at"}, { "title": "Zelking-Matzleinsdorf", "url": "http://www.zelking-matzleinsdorf.gv.at", "country": "at", }, - { - "title": "Schrattenberg", - "url": "https://www.schrattenberg.gv.at", - "country": "at", - }, - { - "title": "Tadten", - "url": "https://www.tadten.at", - "country": "at", - }, - { - "title": "Leutschach an der Weinstraße", - "url": "https://www.leutschach-weinstrasse.gv.at", - "country": "at", - }, - { - "title": "Mönchhof", - "url": "https://www.moenchhof.at", - "country": "at", - }, - { - "title": "Oberschützen", - "url": "https://www.oberschuetzen.at", - "country": "at", - }, - { - "title": "Bernstein", - "url": "http://www.bernstein.gv.at", - "country": "at", - }, - { - "title": "Heiligenkreuz", - "url": "https://www.heiligenkreuz.at", - "country": "at", - }, - { - "title": "Tattendorf", - "url": "https://www.tattendorf.at", - "country": "at", - }, - { - "title": "Langau", - "url": "http://www.langau.at", - "country": "at", - }, - { - "title": "Lockenhaus Marktgemeinde", - "url": "https://www.lockenhaus.at", - "country": "at", - }, - { - "title": "Wolfau", - "url": "https://www.gemeinde-wolfau.at", - "country": "at", - }, - { - "title": "Pama", - "url": "https://www.gemeinde-pama.at", - "country": "at", - }, - { - "title": "Krensdorf", - "url": "https://www.krensdorf.at", - "country": "at", - }, - { - "title": "Fresach", - "url": "https://fresach.gv.at", - "country": "at", - }, - { - "title": "Schwadorf", - "url": "https://www.schwadorf.gv.at", - "country": "at", - }, - { - "title": "Ferndorf", - "url": "https://www.ferndorf.gv.at", - "country": "at", - }, - { - "title": "Sankt Georgen an der Stiefing", - "url": "https://www.st-georgen-stiefing.gv.at", - "country": "at", - }, - { - "title": "Pernegg im Waldviertel", - "url": "https://www.pernegg.info", - "country": "at", - }, - { - "title": "Reichenau", - "url": "https://reichenau.gv.at", - "country": "at", - }, + {"title": "Zillingtal", "url": "https://www.zillingtal.eu", "country": "at"}, + {"title": "Zurndorf", "url": "https://zurndorf.at", "country": "at"}, + {"title": "Übelbach", "url": "https://www.uebelbach.gv.at", "country": "at"}, ] class CitiesApps: - def __init__(self) -> None: + def __init__(self, password, email=None, phone=None) -> None: + if (email is None and phone is None) or password is None: + raise Exception("(email or phone) and password required") + if email is not None and phone is not None: + raise Exception("Only provide one of email or phone not both") + # get authentication as guest self._session = requests.Session() - self._session.headers.update({"user-agent": "cities/100.100.100/Android"}) - - r = self._session.post("https://api.citiesapps.com/clients") - r.raise_for_status() - j = r.json() - auth_token = "Basic " + base64.b64encode( - j["_id"].encode("utf-8") + b":" + j["client_secret"].encode("utf-8") - ).decode("utf-8") - - r = self._session.post( - "https://api.citiesapps.com/auth/guest", - headers={"Authorization": auth_token}, - ) - r.raise_for_status() - self._session.headers.update( - {"authorization": "Bearer " + r.json()["access_token"]} + { + "user-agent": "cities/100.100.100/Android", + "requesting-app": "user-android", + } ) + username = phone if email is None else email + r = self._session.post( + "https://api.v2.citiesapps.com/auth", + json={ + "method": "email" if email is not None else "phoneNumber", + "emailOrPhoneNumber": username, + "password": password, + }, + ) + if r.status_code == 400: + raise Exception("failed to login to the App, check your login credentials") + r.raise_for_status() + + self._session.headers.update({"authorization": r.headers["access-token"]}) + def get_cities(self) -> list: - params = { - "filter": json.dumps({"type": {"$in": ["city"]}}, separators=(",", ":")), - # returns error with higher limit - "limit": 500, - } - params_str = urllib.parse.urlencode(params, safe=":$") - r = self._session.get("https://api.citiesapps.com/entities", params=params_str) - r.raise_for_status() - - return r.json()["entities"] + cities = [] + next_url = "/cities?pagination=limit:100" + while next_url: + r = self._session.get("https://api.v2.citiesapps.com" + next_url) + r.raise_for_status() + j = r.json() + next_url = j["nextUrl"] + cities += j["data"] + return cities def get_specific_citiy(self, search: str) -> dict | None: for city in self.get_cities(): @@ -1170,14 +668,25 @@ class CitiesApps: def get_supported_cities(self) -> dict[str, list]: supported_dict: dict[str, list] = {"supported": [], "not_supported": []} for city in self.get_cities(): - if city["services"]["essentials"][ - "garbage_calendar" - ] and self.get_garbage_calendars(city["_id"]): + if self.get_garbage_calendars(city["_id"]): supported_dict["supported"].append(city) else: supported_dict["not_supported"].append(city) return supported_dict + def get_city_home_page(self, city): + city_page_id = city["cityPage"]["_id"] + r = self._session.get( + f"https://api.v2.citiesapps.com/pages/{city_page_id}?include=tabBar" + ) + r.raise_for_status() + j = r.json() + if "website" not in j: + if city["name"] in SERVICE_MAP: + return SERVICE_MAP[city["name"]] + return "" + return j["website"] + def generate_service_map(self) -> list[dict[str, str]]: supported_dict = self.get_supported_cities() if len(supported_dict["not_supported"]) > 0: @@ -1189,20 +698,29 @@ class CitiesApps: ) service_map = [] - for city in supported_dict["supported"]: - slash_index = [m.start() for m in re.finditer("/", city["website_url"])] - domain_end = ( - slash_index[2] if len(slash_index) > 2 else len(city["website_url"]) - ) - url = city["website_url"][:domain_end] + supported_len = len(supported_dict["supported"]) + for id, city in enumerate(supported_dict["supported"]): + if city["name"] in [c["title"] for c in SERVICE_MAP]: + city_homepage = [ + c["url"] for c in SERVICE_MAP if city["name"] == c["title"] + ][0] + else: + print(f"{id+1}/{supported_len} {city['name']}") + city_homepage = self.get_city_home_page(city) + + slash_index = [m.start() for m in re.finditer("/", city_homepage)] + domain_end = slash_index[2] if len(slash_index) > 2 else len(city_homepage) + url = city_homepage[:domain_end] # city["country_abbreviation"] returns "de" instead of "at" sometimes service_map.append({"title": city["name"], "url": url, "country": "at"}) return service_map if __name__ == "__main__": - c = CitiesApps() + c = CitiesApps(email=input("email: "), password=input("password: ")) service_map = c.generate_service_map() + service_map_copy = SERVICE_MAP.copy() + print("[") for service in service_map: print(4 * " " + "{") @@ -1210,3 +728,20 @@ if __name__ == "__main__": print(8 * " " + f'"{key}": "{value}",') print(4 * " " + "},") print("]") + + print("\nchanges to the service map:") + for new_service in service_map: + found = False + for service in SERVICE_MAP: + if new_service["title"] == service["title"]: + if service["url"] != new_service["url"]: + print( + f"{new_service['title']}: {service['url']} -> {new_service['url']}" + ) + found = True + service_map_copy.remove(service) + break + if not found: + print(f"new service: {new_service['title']}: {new_service['url']}") + for service in service_map_copy: + print(f"service removed: {service['title']}: {service['url']}") diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/source/citiesapps_com.py b/custom_components/waste_collection_schedule/waste_collection_schedule/source/citiesapps_com.py index 68b17538..cf93bf96 100644 --- a/custom_components/waste_collection_schedule/waste_collection_schedule/source/citiesapps_com.py +++ b/custom_components/waste_collection_schedule/waste_collection_schedule/source/citiesapps_com.py @@ -1,8 +1,11 @@ -from waste_collection_schedule import Collection # type: ignore[attr-defined] -from waste_collection_schedule.service.CitiesAppsCom import CitiesApps, SERVICE_MAP - from datetime import datetime +from waste_collection_schedule import Collection # type: ignore[attr-defined] +from waste_collection_schedule.service.CitiesAppsCom import ( + SERVICE_MAP, + CitiesApps, +) + EXTRA_INFO = SERVICE_MAP TITLE = "App CITIES" DESCRIPTION = "Source for App CITIES." @@ -10,20 +13,32 @@ URL = "https://citiesapps.com" TEST_CASES = { "Fürstenfeld Haushalt Altenmarkt": { "city": "Fürstenfeld", - "calendar": "Haushalt Altenmarkt" + "calendar": "Haushalt Altenmarkt", + "email": "!secret citiesapps_com_email", + "phone": "!secret citiesapps_com_phone", + "password": "!secret citiesapps_com_password", }, "Buch - St. Magdalena Buch - St. Magdalena": { "city": "Buch - St. Magdalena", - "calendar": "Buch - St. Magdalena" + "calendar": "Buch - St. Magdalena", + "email": "!secret citiesapps_com_email", + "phone": "!secret citiesapps_com_phone", + "password": "!secret citiesapps_com_password", }, "Rudersdorf Rudersdorf 3": { "city": "Rudersdorf", - "calendar": "Rudersdorf 3" + "calendar": "Rudersdorf 3", + "email": "!secret citiesapps_com_email", + "phone": "!secret citiesapps_com_phone", + "password": "!secret citiesapps_com_password", }, "Lieboch": { "city": "Lieboch", - "calendar": "Lieboch" - } + "calendar": "Lieboch", + "email": "!secret citiesapps_com_email", + "phone": "!secret citiesapps_com_phone", + "password": "!secret citiesapps_com_password", + }, } COUNTRY = "at" @@ -43,16 +58,19 @@ ICON_MAP = { } - class Source: - def __init__(self, city: str, calendar: str): + def __init__(self, city: str, calendar: str, password, email=None, phone=None): self._city: str = city self._calendar: str = calendar + self._email: str | None = email + self._phone: str | None = phone + self._password: str = password def fetch(self): - cities_apps = CitiesApps() - garbage_plans = cities_apps.fetch_garbage_plans( - self._city, self._calendar) + cities_apps = CitiesApps( + email=self._email, phone=self._phone, password=self._password + ) + garbage_plans = cities_apps.fetch_garbage_plans(self._city, self._calendar) entries = [] for garbage_plan in garbage_plans: diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/test/test_sources.py b/custom_components/waste_collection_schedule/waste_collection_schedule/test/test_sources.py index 2440b33e..f2a0ce4d 100755 --- a/custom_components/waste_collection_schedule/waste_collection_schedule/test/test_sources.py +++ b/custom_components/waste_collection_schedule/waste_collection_schedule/test/test_sources.py @@ -10,7 +10,7 @@ from pathlib import Path import yaml -SECRET_FILENAME = "secrets.yaml" +SECRET_FILENAME = Path(__file__).resolve().parent / "secrets.yaml" SECRET_REGEX = re.compile(r"!secret\s(\w+)") diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/wizard/citiesapps_com.py b/custom_components/waste_collection_schedule/waste_collection_schedule/wizard/citiesapps_com.py index d96d5b92..8d9c7360 100755 --- a/custom_components/waste_collection_schedule/waste_collection_schedule/wizard/citiesapps_com.py +++ b/custom_components/waste_collection_schedule/waste_collection_schedule/wizard/citiesapps_com.py @@ -9,7 +9,7 @@ site.addsitedir(str(package_dir)) import waste_collection_schedule.service.CitiesAppsCom as CitiesAppsCom # noqa: E402 -app = CitiesAppsCom.CitiesApps() +app = None def ask_city(): @@ -70,7 +70,26 @@ def ask_by_street(city_id): return inquirer.prompt(questions)["cal"] -def main(): +def ask_login(): + questions = [ + inquirer.List( + "login_method", + choices=["email", "phone"], + message="How do you want to login?", + ) + ] + method = inquirer.prompt(questions)["login_method"] + + questions = [ + inquirer.Text("email", message="Enter your email address") + if method == "email" + else inquirer.Text("phone", message="Enter your phone number"), + inquirer.Password("password", message="Enter your password"), + ] + return inquirer.prompt(questions) + + +def main(password, email, phone): city_id, city = ask_city() cal = ask_calendar(city_id) @@ -83,9 +102,21 @@ def main(): - name: citiesapps_com args: city: {city} - calendar: {cal}""" + calendar: {cal} + password: {password} + {"email: " + email if email else "phone: " + phone}""" ) if __name__ == "__main__": - main() + credentials = ask_login() + app = CitiesAppsCom.CitiesApps( + password=credentials["password"], + email=credentials.get("email"), + phone=credentials.get("phone"), + ) + main( + password=credentials["password"], + email=credentials.get("email"), + phone=credentials.get("phone"), + ) diff --git a/doc/source/citiesapps_com.md b/doc/source/citiesapps_com.md index e46a9e4e..87cb9fef 100644 --- a/doc/source/citiesapps_com.md +++ b/doc/source/citiesapps_com.md @@ -15,6 +15,7 @@ Support for schedules provided by [App CITIES](https://citiesapps.com), serving | Bad Loipersdorf | [gemeinde.loipersdorf.at](https://gemeinde.loipersdorf.at) | | Bad Radkersburg | [bad-radkersburg.gv.at](https://www.bad-radkersburg.gv.at) | | Bad Tatzmannsdorf | [bad-tatzmannsdorf.at](http://www.bad-tatzmannsdorf.at) | +| Bad Waltersdorf | [bad-waltersdorf.gv.at/home](www.bad-waltersdorf.gv.at/home/) | | Bernstein | [bernstein.gv.at](http://www.bernstein.gv.at) | | Bildein | [bildein.at](http://www.bildein.at) | | Breitenbrunn am Neusiedler See | [breitenbrunn.at](http://www.breitenbrunn.at) | @@ -37,7 +38,9 @@ Support for schedules provided by [App CITIES](https://citiesapps.com), serving | Ebersdorf | [ebersdorf.eu](https://www.ebersdorf.eu) | | Eberstein | [eberstein.at](https://www.eberstein.at) | | Edelsbach bei Feldbach | [edelsbach.at](http://www.edelsbach.at) | +| Eggenburg | [eggenburg.gv.at](www.eggenburg.gv.at/) | | Eggersdorf bei Graz | [eggersdorf-graz.gv.at](https://www.eggersdorf-graz.gv.at) | +| Eichgraben | [eichgraben.at](www.eichgraben.at/) | | Eisenstadt | [eisenstadt.gv.at](https://www.eisenstadt.gv.at) | | Fehring | [fehring.at](http://www.fehring.at) | | Feistritz ob Bleiburg | [feistritz-bleiburg.gv.at](https://feistritz-bleiburg.gv.at) | @@ -53,12 +56,14 @@ Support for schedules provided by [App CITIES](https://citiesapps.com), serving | Fürstenfeld | [fuerstenfeld.gv.at](https://www.fuerstenfeld.gv.at) | | Gabersdorf | [gabersdorf.gv.at](https://www.gabersdorf.gv.at) | | Gattendorf | [gattendorf.at](https://www.gattendorf.at) | +| Gitschtal | [gitschtal.gv.at](gitschtal.gv.at/) | | Gols | [gols.at](https://www.gols.at) | | Grafendorf bei Hartberg | [grafendorf.at](https://grafendorf.at) | | Grafenschachen | [grafenschachen.at](https://www.grafenschachen.at) | | Grafenstein | [grafenstein.gv.at](https://grafenstein.gv.at) | | Gratkorn | [gratkorn.gv.at](https://www.gratkorn.gv.at) | | Gratwein-Straßengel | [gratwein-strassengel.gv.at](https://gratwein-strassengel.gv.at) | +| Großsteinbach | [gemeinde-grosssteinbach.at](www.gemeinde-grosssteinbach.at/) | | Großwarasdorf | [grosswarasdorf.at](https://www.grosswarasdorf.at) | | Großwilfersdorf | [grosswilfersdorf.steiermark.at](http://www.grosswilfersdorf.steiermark.at) | | Gutenberg | [gutenberg-stenzengreith.gv.at](https://www.gutenberg-stenzengreith.gv.at) | @@ -69,6 +74,8 @@ Support for schedules provided by [App CITIES](https://citiesapps.com), serving | Heiligenkreuz | [heiligenkreuz.at](https://www.heiligenkreuz.at) | | Heiligenkreuz am Waasen | [heiligenkreuz-waasen.gv.at](https://www.heiligenkreuz-waasen.gv.at) | | Heimschuh | [heimschuh.at](https://www.heimschuh.at) | +| Henndorf am Wallersee | [henndorf.at](www.henndorf.at/) | +| Hirm | [hirm.gv.at](www.hirm.gv.at/) | | Hofstätten an der Raab | [hofstaetten.at](https://www.hofstaetten.at) | | Horitschon | [horitschon.at](http://www.horitschon.at) | | Horn | [horn.gv.at](https://horn.gv.at) | @@ -83,14 +90,17 @@ Support for schedules provided by [App CITIES](https://citiesapps.com), serving | Kalsdorf bei Graz | [kalsdorf-graz.gv.at](https://www.kalsdorf-graz.gv.at) | | Kapfenstein | [kapfenstein.at](http://www.kapfenstein.at) | | Kemeten | [kemeten.gv.at](https://www.kemeten.gv.at) | +| Kirchbach-Zerlach | [kirchbach-zerlach.at](www.kirchbach-zerlach.at/) | | Kirchberg an der Raab | [kirchberg-raab.gv.at](https://www.kirchberg-raab.gv.at) | | Kittsee | [kittsee.at](https://www.kittsee.at) | | Kleinmürbisch | [kleinmürbisch.at](https://www.kleinmürbisch.at) | | Klingenbach | [klingenbach.at](https://klingenbach.at) | | Klöch | [kloech.com](https://www.kloech.com) | +| Kobersdorf | [kobersdorf.at/index.php](www.kobersdorf.at/index.php) | | Kohfidisch | [kohfidisch.at](http://www.kohfidisch.at) | | Korneuburg | [korneuburg.gv.at](https://www.korneuburg.gv.at) | | Krensdorf | [krensdorf.at](https://www.krensdorf.at) | +| Kuchl | [kuchl.net](www.kuchl.net/) | | Laa an der Thaya | [laa.at](http://www.laa.at) | | Lackenbach | [gemeinde-lackenbach.at](https://www.gemeinde-lackenbach.at) | | Lackendorf | [lackendorf.at](https://www.lackendorf.at) | @@ -100,7 +110,7 @@ Support for schedules provided by [App CITIES](https://citiesapps.com), serving | Leutschach an der Weinstraße | [leutschach-weinstrasse.gv.at](https://www.leutschach-weinstrasse.gv.at) | | Lieboch | [lieboch.gv.at](https://www.lieboch.gv.at) | | Litzelsdorf | [litzelsdorf.at](https://www.litzelsdorf.at) | -| Lockenhaus Marktgemeinde | [lockenhaus.at](https://www.lockenhaus.at) | +| Lockenhaus | [lockenhaus.at](www.lockenhaus.at/) | | Loipersbach im Burgenland | [loipersbach.info](https://www.loipersbach.info) | | Mariasdorf | [mariasdorf.at](https://www.mariasdorf.at) | | Markt Hartmannsdorf | [markthartmannsdorf.at](https://www.markthartmannsdorf.at) | @@ -146,13 +156,16 @@ Support for schedules provided by [App CITIES](https://citiesapps.com), serving | Poysdorf | [poysdorf.at](https://www.poysdorf.at) | | Pöchlarn | [poechlarn.at](https://www.poechlarn.at) | | Raach am Hochgebirge | [raach.at](https://www.raach.at) | +| Raasdorf | [raasdorf.gv.at](www.raasdorf.gv.at/) | | Radmer | [radmer.at](https://www.radmer.at) | | Ragnitz | [ragnitz.gv.at](https://www.ragnitz.gv.at) | | Raiding | [raiding-online.at](https://www.raiding-online.at) | | Reichenau | [reichenau.gv.at](https://reichenau.gv.at) | | Rohr bei Hartberg | [rohr-bei-hartberg.at](https://www.rohr-bei-hartberg.at) | +| Rohr im Burgenland | [rohr-bgld.at](www.rohr-bgld.at/) | | Rudersdorf | [rudersdorf.at](http://www.rudersdorf.at) | | Rust | [freistadt-rust.at](https://www.freistadt-rust.at) | +| Saalfelden am Steinernen Meer | [stadtmarketing-saalfelden.at/de](www.stadtmarketing-saalfelden.at/de) | | Sankt Georgen an der Stiefing | [st-georgen-stiefing.gv.at](https://www.st-georgen-stiefing.gv.at) | | Sankt Gilgen | [gemgilgen.at](https://www.gemgilgen.at) | | Sankt Oswald bei Plankenwarth | [sanktoswald.net](https://www.sanktoswald.net) | @@ -169,7 +182,10 @@ Support for schedules provided by [App CITIES](https://citiesapps.com), serving | St. Andrä am Zicksee | [gemeinde-standrae.at](https://www.gemeinde-standrae.at) | | St. Anna am Aigen | [st-anna-aigen.gv.at](http://www.st-anna-aigen.gv.at) | | St. Egyden am Steinfeld | [st-egyden.at](https://www.st-egyden.at) | +| St. Georgen an der Leys | [stgeorgenleys.at](www.stgeorgenleys.at/) | +| St. Jakob im Rosental | [st-jakob-rosental.gv.at](www.st-jakob-rosental.gv.at/) | | St. Johann in der Haide | [st-johann-haide.gv.at](http://www.st-johann-haide.gv.at) | +| St. Konrad | [st-konrad.at](www.st-konrad.at/) | | St. Lorenzen am Wechsel | [st-lorenzen-wechsel.at](https://www.st-lorenzen-wechsel.at) | | St. Margarethen an der Raab | [st-margarethen-raab.at](https://www.st-margarethen-raab.at) | | St. Margarethen im Burgenland | [st-margarethen.at](https://www.st-margarethen.at) | @@ -231,6 +247,9 @@ waste_collection_schedule: args: city: CITY calendar: CALENDAR + password: PASSWORD + email: EMAIL + phone: PHONE ``` @@ -242,6 +261,18 @@ waste_collection_schedule: **calendar** *(String) (required)* +**email** +*(String) (required if no phone number is provided)* + +**phone** +*(String) (required if no eimail is provided)* + +**password** +*(String) (required)* + + +After an update of the APP, CITIES disabled guest access. You need to register with your (email or phone number) and password in the app. You now need to provide the same credentials in the configuration. (provide email or phone number but not both) + ## Example ```yaml @@ -251,7 +282,8 @@ waste_collection_schedule: args: city: Fürstenfeld calendar: Haushalt Altenmarkt - + password: PASSWORD + email: EMAIL ``` ```yaml @@ -261,6 +293,8 @@ waste_collection_schedule: args: city: Buch - St. Magdalena calendar: Buch - St. Magdalena + phone: PHONE + password: PASSWORD ``` ```yaml @@ -270,6 +304,8 @@ waste_collection_schedule: args: city: Rudersdorf calendar: Rudersdorf 3 + email: EMAIL + password: PASSWORD ``` ## How to get the source argument @@ -284,7 +320,7 @@ The easiest way to find the parameter of your address is using [CITIES app](http - Open `Garbage calendar`. - You should now see the garbage calendar(s) use the exact spelling for the calendar parameter. - If the names are not descriptive enough you mostly can search by address - - Open `Search via adress`. + - Open `Search via address`. - Select your details. - You should now see in the left top corner the garbage calendar name above your selected address. diff --git a/info.md b/info.md index 3fe912a3..14c1a6fc 100644 --- a/info.md +++ b/info.md @@ -17,7 +17,7 @@ Waste collection schedules from service provider web sites are updated daily, de | Generic | ICS / iCal files | | Static | User-defined dates or repeating date patterns | | Australia | Armadale (Western Australia), Australian Capital Territory (ACT), Banyule City Council, Belmont City Council, Blacktown City Council (NSW), Brisbane City Council, Campbelltown City Council (NSW), Cardinia Shire Council, City of Canada Bay Council, City of Greater Geelong, City of Kingston, City of Onkaparinga Council, Cumberland Council (NSW), Gold Coast City Council, Hume City Council, Inner West Council (NSW), Ipswich City Council, Ku-ring-gai Council, Lake Macquarie City Council, Logan City Council, Macedon Ranges Shire Council, Mansfield Shire Council, Maribyrnong Council, Maroondah City Council, Melton City Council, Moreton Bay, Nillumbik Shire Council, North Adelaide Waste Management Authority, Port Adelaide Enfield, South Australia, RecycleSmart, Shellharbour City Council, Stonnington City Council, The Hills Shire Council, Sydney, Unley City Council (SA), Whittlesea City Council, Wollongong City Council, Wyndham City Council, Melbourne | -| Austria | Abfallverband Hollabrunn, Abfallverband Korneuburg, Abfallverband Schwechat, Abfallwirtschaft Stadt Krems, Abfallwirtschaft Stadt St Pölten, Altenmarkt an der Triesting, Andau, Apetlon, App CITIES, AWV Neunkirchen, AWV Wr. Neustadt, Bad Blumau, Bad Gleichenberg, Bad Loipersdorf, Bad Radkersburg, Bad Tatzmannsdorf, Bernstein, Bildein, Breitenbrunn am Neusiedler See, Breitenstein, Bromberg, Bruckneudorf, Buch - St. Magdalena, Burgau, Burgauberg-Neudauberg, Burgenländischer Müllverband, Dechantskirchen, Deutsch Goritz, Deutsch Jahrndorf, Deutsch Kaltenbrunn, Deutschkreutz, Die NÖ Umweltverbände, Dobl-Zwaring, Drasenhofen, Draßmarkt, Eberau, Eberndorf, Ebersdorf, Eberstein, Edelsbach bei Feldbach, Eggersdorf bei Graz, Eisenstadt, Fehring, Feistritz ob Bleiburg, Feldbach, Feldkirchen in Kärnten, Ferndorf, Frankenau-Unterpullendorf, Frauenkirchen, Freistadt, Fresach, Friedberg, Frohnleiten, Fürstenfeld, Gabersdorf, GABL, Gattendorf, GAUL Laa an der Thaya, GAUM Mistelbach, GDA Amstetten, Gemeindeverband Horn, Gols, Grafendorf bei Hartberg, Grafenschachen, Grafenstein, Gratkorn, Gratwein-Straßengel, Großwarasdorf, Großwilfersdorf, Gutenberg, GV Gmünd, GV Krems, GV Zwettl, GVA Baden, GVA Baden, GVA Lilienfeld, GVA Mödling, GVA Tulln, GVA Waidhofen/Thaya, GVU Bezirk Gänserndorf, GVU Melk, GVU Scheibbs, GVU Scheibbs, GVU St. Pölten, Güssing, Hagenberg im Mühlkreis, Hannersdorf, Hartberg, Heiligenkreuz, Heiligenkreuz am Waasen, Heimschuh, Hofstätten an der Raab, Horitschon, Horn, Hornstein, Hüttenberg, Ilz, infeo, Innsbrucker Kommunalbetriebe, Inzenhof, Jabing, Jagerberg, Kaindorf, Kaisersdorf, Kalsdorf bei Graz, Kapfenstein, Kemeten, Kirchberg an der Raab, Kittsee, Kleinmürbisch, Klingenbach, Klosterneuburg, Klöch, Kohfidisch, Korneuburg, Krensdorf, Laa an der Thaya, Lackenbach, Lackendorf, Langau, Langenrohr, Leithaprodersdorf, Leutschach an der Weinstraße, Lieboch, Linz AG, Litzelsdorf, Lockenhaus Marktgemeinde, Loipersbach im Burgenland, Mariasdorf, Markt Hartmannsdorf, Markt Neuhodis, Marktgemeinde Edlitz, Marz, Mattersburg, Meiseldorf, Melk, Mettersdorf am Saßbach, Miesenbach, Mischendorf, Mistelbach, Mitterdorf an der Raab, Mureck, Mönchhof, Mörbisch am See, Neudorf bei Parndorf, Neudörfl, Neufeld an der Leitha, Neusiedl am See, Neustift bei Güssing, Nickelsdorf, Oberpullendorf, Oberschützen, Oberwart, Oslip, Ottendorf an der Rittschein, Paldau, Pama, Pamhagen, Parndorf, Payerbach, Peggau, Pernegg an der Mur, Pernegg im Waldviertel, Pfarrwerfen, Pilgersdorf, Pinggau, Pinkafeld, Podersdorf am See, Poggersdorf, Potzneusiedl, Poysdorf, Pöchlarn, Raach am Hochgebirge, Radmer, Ragnitz, Raiding, Reichenau, Rohr bei Hartberg, Rudersdorf, Rust, Sankt Georgen an der Stiefing, Sankt Gilgen, Sankt Oswald bei Plankenwarth, Schrattenberg, Schwadorf, Schäffern, Schützen am Gebirge, Seiersberg-Pirka, Siegendorf, Sigleß, Sigmundsherberg, Sinabelkirchen, St. Andrä, St. Andrä am Zicksee, St. Anna am Aigen, St. Egyden am Steinfeld, St. Johann in der Haide, St. Lorenzen am Wechsel, St. Margarethen an der Raab, St. Margarethen im Burgenland, St. Peter - Freienstein, St. Peter am Ottersbach, St. Ruprecht an der Raab, St. Veit in der Südsteiermark, Stadt Salzburg, Stadtservice Korneuburg, Stegersbach, Steinbrunn, Steuerberg, Stinatz, Stiwoll, Stockerau, Straß in Steiermark, Söchau, Tadten, Tattendorf, Thal, Tieschen, Tobaj, Tulln an der Donau, Umweltprofis, Unterfrauenhaid, Unterkohlstätten, Unterlamm, Unterwart, Vasoldsberg, Vordernberg, Völkermarkt, Walpersbach, Weiden am See, Weitersfeld, Weiz, Weppersdorf, Werfenweng, Wies, Wiesen, Wiesfleck, Wiesmath, Wimpassing an der Leitha, Winden am See, Wolfau, Wolfsberg, Wolkersdorf im Weinviertel, WSZ Moosburg, Wulkaprodersdorf, Wörterberg, Zagersdorf, Zelking-Matzleinsdorf, Zillingtal, Zurndorf, Übelbach | +| Austria | Abfallverband Hollabrunn, Abfallverband Korneuburg, Abfallverband Schwechat, Abfallwirtschaft Stadt Krems, Abfallwirtschaft Stadt St Pölten, Altenmarkt an der Triesting, Andau, Apetlon, App CITIES, AWV Neunkirchen, AWV Wr. Neustadt, Bad Blumau, Bad Gleichenberg, Bad Loipersdorf, Bad Radkersburg, Bad Tatzmannsdorf, Bad Waltersdorf, Bernstein, Bildein, Breitenbrunn am Neusiedler See, Breitenstein, Bromberg, Bruckneudorf, Buch - St. Magdalena, Burgau, Burgauberg-Neudauberg, Burgenländischer Müllverband, Dechantskirchen, Deutsch Goritz, Deutsch Jahrndorf, Deutsch Kaltenbrunn, Deutschkreutz, Die NÖ Umweltverbände, Dobl-Zwaring, Drasenhofen, Draßmarkt, Eberau, Eberndorf, Ebersdorf, Eberstein, Edelsbach bei Feldbach, Eggenburg, Eggersdorf bei Graz, Eichgraben, Eisenstadt, Fehring, Feistritz ob Bleiburg, Feldbach, Feldkirchen in Kärnten, Ferndorf, Frankenau-Unterpullendorf, Frauenkirchen, Freistadt, Fresach, Friedberg, Frohnleiten, Fürstenfeld, Gabersdorf, GABL, Gattendorf, GAUL Laa an der Thaya, GAUM Mistelbach, GDA Amstetten, Gemeindeverband Horn, Gitschtal, Gols, Grafendorf bei Hartberg, Grafenschachen, Grafenstein, Gratkorn, Gratwein-Straßengel, Großsteinbach, Großwarasdorf, Großwilfersdorf, Gutenberg, GV Gmünd, GV Krems, GV Zwettl, GVA Baden, GVA Baden, GVA Lilienfeld, GVA Mödling, GVA Tulln, GVA Waidhofen/Thaya, GVU Bezirk Gänserndorf, GVU Melk, GVU Scheibbs, GVU Scheibbs, GVU St. Pölten, Güssing, Hagenberg im Mühlkreis, Hannersdorf, Hartberg, Heiligenkreuz, Heiligenkreuz am Waasen, Heimschuh, Henndorf am Wallersee, Hirm, Hofstätten an der Raab, Horitschon, Horn, Hornstein, Hüttenberg, Ilz, infeo, Innsbrucker Kommunalbetriebe, Inzenhof, Jabing, Jagerberg, Kaindorf, Kaisersdorf, Kalsdorf bei Graz, Kapfenstein, Kemeten, Kirchbach-Zerlach, Kirchberg an der Raab, Kittsee, Kleinmürbisch, Klingenbach, Klosterneuburg, Klöch, Kobersdorf, Kohfidisch, Korneuburg, Krensdorf, Kuchl, Laa an der Thaya, Lackenbach, Lackendorf, Langau, Langenrohr, Leithaprodersdorf, Leutschach an der Weinstraße, Lieboch, Linz AG, Litzelsdorf, Lockenhaus, Loipersbach im Burgenland, Mariasdorf, Markt Hartmannsdorf, Markt Neuhodis, Marktgemeinde Edlitz, Marz, Mattersburg, Meiseldorf, Melk, Mettersdorf am Saßbach, Miesenbach, Mischendorf, Mistelbach, Mitterdorf an der Raab, Mureck, Mönchhof, Mörbisch am See, Neudorf bei Parndorf, Neudörfl, Neufeld an der Leitha, Neusiedl am See, Neustift bei Güssing, Nickelsdorf, Oberpullendorf, Oberschützen, Oberwart, Oslip, Ottendorf an der Rittschein, Paldau, Pama, Pamhagen, Parndorf, Payerbach, Peggau, Pernegg an der Mur, Pernegg im Waldviertel, Pfarrwerfen, Pilgersdorf, Pinggau, Pinkafeld, Podersdorf am See, Poggersdorf, Potzneusiedl, Poysdorf, Pöchlarn, Raach am Hochgebirge, Raasdorf, Radmer, Ragnitz, Raiding, Reichenau, Rohr bei Hartberg, Rohr im Burgenland, Rudersdorf, Rust, Saalfelden am Steinernen Meer, Sankt Georgen an der Stiefing, Sankt Gilgen, Sankt Oswald bei Plankenwarth, Schrattenberg, Schwadorf, Schäffern, Schützen am Gebirge, Seiersberg-Pirka, Siegendorf, Sigleß, Sigmundsherberg, Sinabelkirchen, St. Andrä, St. Andrä am Zicksee, St. Anna am Aigen, St. Egyden am Steinfeld, St. Georgen an der Leys, St. Jakob im Rosental, St. Johann in der Haide, St. Konrad, St. Lorenzen am Wechsel, St. Margarethen an der Raab, St. Margarethen im Burgenland, St. Peter - Freienstein, St. Peter am Ottersbach, St. Ruprecht an der Raab, St. Veit in der Südsteiermark, Stadt Salzburg, Stadtservice Korneuburg, Stegersbach, Steinbrunn, Steuerberg, Stinatz, Stiwoll, Stockerau, Straß in Steiermark, Söchau, Tadten, Tattendorf, Thal, Tieschen, Tobaj, Tulln an der Donau, Umweltprofis, Unterfrauenhaid, Unterkohlstätten, Unterlamm, Unterwart, Vasoldsberg, Vordernberg, Völkermarkt, Walpersbach, Weiden am See, Weitersfeld, Weiz, Weppersdorf, Werfenweng, Wies, Wiesen, Wiesfleck, Wiesmath, Wimpassing an der Leitha, Winden am See, Wolfau, Wolfsberg, Wolkersdorf im Weinviertel, WSZ Moosburg, Wulkaprodersdorf, Wörterberg, Zagersdorf, Zelking-Matzleinsdorf, Zillingtal, Zurndorf, Übelbach | | Belgium | Hygea, Limburg.net, Recycle! | | Canada | Aurora (ON), Calgary (AB), Calgary, AB, City of Edmonton, AB, City of Greater Sudbury, ON, City of Peterborough, ON, London (ON), Ottawa, Canada, RM of Morris, MB, Strathcona County, ON, Toronto (ON), Waste Wise APPS | | Denmark | Renosyd |