From 8b68e13719addcd29682ad8accb6c59a30986f9b Mon Sep 17 00:00:00 2001 From: Vincent Desprez Date: Sat, 12 Oct 2024 14:34:13 +0200 Subject: [PATCH] Fix & improvements after review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Drop inheritance in favor of EXTRA_INFO, thanks @5ila5 - Align icons on #2814 - Add more instances: Châteauroux, Saint Quentin en Yvelines, Saumur, Versailles --- README.md | 12 +- .../waste_collection_schedule/sources.json | 68 +++++++-- .../translations/de.json | 101 ++----------- .../translations/en.json | 97 +------------ .../translations/it.json | 97 +------------ .../source/dechets_gpseo_fr.py | 52 ------- .../source/orleans_metropole_fr.py | 50 ------- .../source/publidata_fr.py | 137 +++++++++++------- .../source/tours_metropole_fr.py | 50 ------- doc/source/dechets_gpseo_fr.md | 38 ----- doc/source/orleans_metropole_fr.md | 38 ----- doc/source/tours_metropole_fr.md | 38 ----- info.md | 2 +- 13 files changed, 171 insertions(+), 609 deletions(-) delete mode 100644 custom_components/waste_collection_schedule/waste_collection_schedule/source/dechets_gpseo_fr.py delete mode 100644 custom_components/waste_collection_schedule/waste_collection_schedule/source/orleans_metropole_fr.py delete mode 100644 custom_components/waste_collection_schedule/waste_collection_schedule/source/tours_metropole_fr.py delete mode 100644 doc/source/dechets_gpseo_fr.md delete mode 100644 doc/source/orleans_metropole_fr.md delete mode 100644 doc/source/tours_metropole_fr.md diff --git a/README.md b/README.md index 54da7de4a..ff1242f92 100644 --- a/README.md +++ b/README.md @@ -684,13 +684,17 @@ If your service provider is not listed, feel free to open a [source request issu
France +- [Châteauroux Métropole](/doc/source/publidata_fr.md) / chateauroux-metropole.fr - [Communauté de Communes de Montesquieu](/doc/source/cc-montesquieu_fr.md) / cc-montesquieu.fr -- [Generic source for publidata-based waste schedule management](/doc/source/publidata_fr.md) / publidata.io/fr -- [GPSEO Waste Collection](/doc/source/dechets_gpseo_fr.md) / dechets.gpseo.fr +- [Grand Paris Seine et Oise](/doc/source/publidata_fr.md) / infos-dechets.gpseo.fr - [Mairie de Mamirolle](/doc/source/mamirolle_info.md) / mamirolle.info -- [Orléans Métropole Waste Collection](/doc/source/orleans_metropole_fr.md) / triermondechet.orleans-metropole.fr +- [Orléans Métropole](/doc/source/publidata_fr.md) / triermondechet.orleans-metropole.fr +- [Publidata generic source](/doc/source/publidata_fr.md) / publidata.io/fr +- [Saint Quentin en Yvelines](/doc/source/publidata_fr.md) / saint-quentin-en-yvelines.fr +- [Saumur Val de Loire](/doc/source/publidata_fr.md) / saumurvaldeloire.fr - [Sivom Rive Droite - Bassens](/doc/source/sivom_rivedroite_fr.md) / sivom-rivedroite.fr -- [Tours Métropole Waste Collection](/doc/source/tours_metropole_fr.md) / tours-metropole.fr/mes-poubelles-connaitre-les-jours-de-collecte-et-sinformer-sur-le-tri +- [Tours Métropole](/doc/source/publidata_fr.md) / tours-metropole.fr +- [Versailles Grand Parc](/doc/source/publidata_fr.md) / versaillesgrandparc.fr
diff --git a/custom_components/waste_collection_schedule/sources.json b/custom_components/waste_collection_schedule/sources.json index 2b0547d1d..4c6e60ba5 100644 --- a/custom_components/waste_collection_schedule/sources.json +++ b/custom_components/waste_collection_schedule/sources.json @@ -3910,6 +3910,14 @@ } ], "France": [ + { + "title": "Ch\u00e2teauroux M\u00e9tropole", + "module": "publidata_fr", + "default_params": { + "instance_id": 897 + }, + "id": "publidata_fr" + }, { "title": "Communaut\u00e9 de Communes de Montesquieu", "module": "cc-montesquieu_fr", @@ -3917,17 +3925,13 @@ "id": "cc-montesquieu_fr" }, { - "title": "Generic source for publidata-based waste schedule management", + "title": "Grand Paris Seine et Oise", "module": "publidata_fr", - "default_params": {}, + "default_params": { + "instance_id": 1292 + }, "id": "publidata_fr" }, - { - "title": "GPSEO Waste Collection", - "module": "dechets_gpseo_fr", - "default_params": {}, - "id": "dechets_gpseo_fr" - }, { "title": "Mairie de Mamirolle", "module": "mamirolle_info", @@ -3935,10 +3939,34 @@ "id": "mamirolle_info" }, { - "title": "Orl\u00e9ans M\u00e9tropole Waste Collection", - "module": "orleans_metropole_fr", + "title": "Orl\u00e9ans M\u00e9tropole", + "module": "publidata_fr", + "default_params": { + "instance_id": 100 + }, + "id": "publidata_fr" + }, + { + "title": "Publidata generic source", + "module": "publidata_fr", "default_params": {}, - "id": "orleans_metropole_fr" + "id": "publidata_fr" + }, + { + "title": "Saint Quentin en Yvelines", + "module": "publidata_fr", + "default_params": { + "instance_id": 701 + }, + "id": "publidata_fr" + }, + { + "title": "Saumur Val de Loire", + "module": "publidata_fr", + "default_params": { + "instance_id": 159 + }, + "id": "publidata_fr" }, { "title": "Sivom Rive Droite - Bassens", @@ -3947,10 +3975,20 @@ "id": "sivom_rivedroite_fr" }, { - "title": "Tours M\u00e9tropole Waste Collection", - "module": "tours_metropole_fr", - "default_params": {}, - "id": "tours_metropole_fr" + "title": "Tours M\u00e9tropole", + "module": "publidata_fr", + "default_params": { + "instance_id": 65 + }, + "id": "publidata_fr" + }, + { + "title": "Versailles Grand Parc", + "module": "publidata_fr", + "default_params": { + "instance_id": 251 + }, + "id": "publidata_fr" } ], "Generic": [ diff --git a/custom_components/waste_collection_schedule/translations/de.json b/custom_components/waste_collection_schedule/translations/de.json index 6bc4da090..81746ce5d 100644 --- a/custom_components/waste_collection_schedule/translations/de.json +++ b/custom_components/waste_collection_schedule/translations/de.json @@ -2515,32 +2515,12 @@ }, "data_description": {} }, - "args_cc-montesquieu_fr": { - "title": "Quelle konfigurieren", - "description": "Konfiguriere deinen Service Provider. Mehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/cc-montesquieu_fr.md", - "data": { - "calendar_title": "Kalender Titel", - "commune": "Stadt" - }, - "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_cc-montesquieu_fr": { - "title": "Quelle Neu Konfigurieren", - "description": "Konfiguriere deinen Service Provider. Mehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/cc-montesquieu_fr.md", - "data": { - "calendar_title": "Kalender Titel", - "commune": "Stadt" - }, - "data_description": {} - }, "args_publidata_fr": { "title": "Quelle konfigurieren", "description": "Konfiguriere deinen Service Provider. \n\nDer INSEE-Code Ihrer Gemeinde kann leicht über Google gefunden werden. Die instance_id kann durch einen Netzwerk-Inspektor vom offiziellen Widget ermittelt werden\n\nMehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/publidata_fr.md", "data": { "calendar_title": "Kalender Titel", - "address": "Adresse", + "address": "Addresse", "insee_code": "INSEE-Code", "instance_id": "Instanz-ID" }, @@ -2556,7 +2536,7 @@ "description": "Konfiguriere deinen Service Provider. \n\nDer INSEE-Code Ihrer Gemeinde kann leicht über Google gefunden werden. Die instance_id kann durch einen Netzwerk-Inspektor vom offiziellen Widget ermittelt werden\n\nMehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/publidata_fr.md", "data": { "calendar_title": "Kalender Titel", - "address": "Adresse", + "address": "Addresse", "insee_code": "INSEE-Code", "instance_id": "Instanz-ID" }, @@ -2566,32 +2546,25 @@ "instance_id": "Eine Kennung Ihres Abfallsammeldienstes. Zum Beispiel ist die von GPSEO 1292 und kann durch Inspektion der Netzwerkaufrufe auf https://infos-dechets.gpseo.fr/4E79YtZv7M/list/?addressId=78005_0073_00002 gefunden werden" } }, - "args_dechets_gpseo_fr": { + "args_cc-montesquieu_fr": { "title": "Quelle konfigurieren", - "description": "Konfiguriere deinen Service Provider. \n\nDer INSEE-Code, der sich vom Postleitzahl unterscheidet, kann leicht auf Google gefunden werden\n\nMehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/dechets_gpseo_fr.md", + "description": "Konfiguriere deinen Service Provider. Mehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/cc-montesquieu_fr.md", "data": { "calendar_title": "Kalender Titel", - "address": "Adresse", - "insee_code": "INSEE-Code" + "commune": "Stadt" }, "data_description": { - "calendar_title": "Ein lesbarerer oder benutzerfreundlicherer Name für den Müllkalender. Wenn nichts angegeben wird, wird der Name der Quelle verwendet.", - "address": "Ihre vollständige Adresse", - "insee_code": "Der 5-stellige INSEE-Code Ihrer Gemeinde" + "calendar_title": "Ein lesbarerer oder benutzerfreundlicherer Name für den Müllkalender. Wenn nichts angegeben wird, wird der Name der Quelle verwendet." } }, - "reconfigure_dechets_gpseo_fr": { + "reconfigure_cc-montesquieu_fr": { "title": "Quelle Neu Konfigurieren", - "description": "Konfiguriere deinen Service Provider. \n\nDer INSEE-Code, der sich vom Postleitzahl unterscheidet, kann leicht auf Google gefunden werden\n\nMehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/dechets_gpseo_fr.md", + "description": "Konfiguriere deinen Service Provider. Mehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/cc-montesquieu_fr.md", "data": { "calendar_title": "Kalender Titel", - "address": "Adresse", - "insee_code": "INSEE-Code" + "commune": "Stadt" }, - "data_description": { - "address": "Ihre vollständige Adresse", - "insee_code": "Der 5-stellige INSEE-Code Ihrer Gemeinde" - } + "data_description": {} }, "args_mamirolle_info": { "title": "Quelle konfigurieren", @@ -2613,33 +2586,6 @@ }, "data_description": {} }, - "args_orleans_metropole_fr": { - "title": "Quelle konfigurieren", - "description": "Konfiguriere deinen Service Provider. \n\nDer INSEE-Code, der sich vom Postleitzahl unterscheidet, kann leicht auf Google gefunden werden\n\nMehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/orleans_metropole_fr.md", - "data": { - "calendar_title": "Kalender Titel", - "address": "Adresse", - "insee_code": "INSEE-Code" - }, - "data_description": { - "calendar_title": "Ein lesbarerer oder benutzerfreundlicherer Name für den Müllkalender. Wenn nichts angegeben wird, wird der Name der Quelle verwendet.", - "address": "Ihre vollständige Adresse", - "insee_code": "Der 5-stellige INSEE-Code Ihrer Gemeinde" - } - }, - "reconfigure_orleans_metropole_fr": { - "title": "Quelle Neu Konfigurieren", - "description": "Konfiguriere deinen Service Provider. \n\nDer INSEE-Code, der sich vom Postleitzahl unterscheidet, kann leicht auf Google gefunden werden\n\nMehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/orleans_metropole_fr.md", - "data": { - "calendar_title": "Kalender Titel", - "address": "Adresse", - "insee_code": "INSEE-Code" - }, - "data_description": { - "address": "Ihre vollständige Adresse", - "insee_code": "Der 5-stellige INSEE-Code Ihrer Gemeinde" - } - }, "args_sivom_rivedroite_fr": { "title": "Quelle konfigurieren", "description": "Konfiguriere deinen Service Provider. Mehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/sivom_rivedroite_fr.md", @@ -2660,33 +2606,6 @@ }, "data_description": {} }, - "args_tours_metropole_fr": { - "title": "Quelle konfigurieren", - "description": "Konfiguriere deinen Service Provider. \n\nDer INSEE-Code, der sich vom Postleitzahl unterscheidet, kann leicht auf Google gefunden werden\n\nMehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/tours_metropole_fr.md", - "data": { - "calendar_title": "Kalender Titel", - "address": "Adresse", - "insee_code": "INSEE-Code" - }, - "data_description": { - "calendar_title": "Ein lesbarerer oder benutzerfreundlicherer Name für den Müllkalender. Wenn nichts angegeben wird, wird der Name der Quelle verwendet.", - "address": "Ihre vollständige Adresse", - "insee_code": "Der 5-stellige INSEE-Code Ihrer Gemeinde" - } - }, - "reconfigure_tours_metropole_fr": { - "title": "Quelle Neu Konfigurieren", - "description": "Konfiguriere deinen Service Provider. \n\nDer INSEE-Code, der sich vom Postleitzahl unterscheidet, kann leicht auf Google gefunden werden\n\nMehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/tours_metropole_fr.md", - "data": { - "calendar_title": "Kalender Titel", - "address": "Adresse", - "insee_code": "INSEE-Code" - }, - "data_description": { - "address": "Ihre vollständige Adresse", - "insee_code": "Der 5-stellige INSEE-Code Ihrer Gemeinde" - } - }, "args_ics": { "title": "Quelle konfigurieren", "description": "Konfiguriere deinen Service Provider. Mehr details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/ics.md", diff --git a/custom_components/waste_collection_schedule/translations/en.json b/custom_components/waste_collection_schedule/translations/en.json index 46032d1f2..b60e75754 100644 --- a/custom_components/waste_collection_schedule/translations/en.json +++ b/custom_components/waste_collection_schedule/translations/en.json @@ -2515,29 +2515,6 @@ }, "data_description": {} }, - "args_cc-montesquieu_fr": { - "title": "Configure Source", - "description": "Configure your service provider. More details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/cc-montesquieu_fr.md.", - "data": { - "calendar_title": "Calendar Title", - "commune": "City" - }, - "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.", - "commune": "city of Montesquieu's community : Ayguemorte-les-Graves, Beautiran, Cabanac-et-Villagrains, Cadaujac, Castres-Gironde, Isle Saint-Georges, La Brède, Léognan, Martillac, Saint-Médard-d’Eyrans, Saint-Morillon, Saint-Selve, Saucats" - } - }, - "reconfigure_cc-montesquieu_fr": { - "title": "Reconfigure Source", - "description": "Configure your service provider. More details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/cc-montesquieu_fr.md.", - "data": { - "calendar_title": "Calendar Title", - "commune": "City" - }, - "data_description": { - "commune": "city of Montesquieu's community : Ayguemorte-les-Graves, Beautiran, Cabanac-et-Villagrains, Cadaujac, Castres-Gironde, Isle Saint-Georges, La Brède, Léognan, Martillac, Saint-Médard-d’Eyrans, Saint-Morillon, Saint-Selve, Saucats" - } - }, "args_publidata_fr": { "title": "Configure Source", "description": "Configure your service provider. \n\nThe INSEE code of your commune is easily found on google. instance_id can be found through a network inspecter from the official widget\n\nMore details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/publidata_fr.md.", @@ -2569,31 +2546,27 @@ "instance_id": "An identifier of your waste collection service. For examlpe GPSEO's is 1292 and found by inspecting the network calls on https://infos-dechets.gpseo.fr/4E79YtZv7M/list/?addressId=78005_0073_00002" } }, - "args_dechets_gpseo_fr": { + "args_cc-montesquieu_fr": { "title": "Configure Source", - "description": "Configure your service provider. \n\nThe INSEE code, different from postal code, can easily be found on Google\n\nMore details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/dechets_gpseo_fr.md.", + "description": "Configure your service provider. More details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/cc-montesquieu_fr.md.", "data": { "calendar_title": "Calendar Title", - "address": "Address", - "insee_code": "INSEE Code" + "commune": "City" }, "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.", - "address": "Your full address", - "insee_code": "The 5-digit INSEE code of your commune" + "commune": "city of Montesquieu's community : Ayguemorte-les-Graves, Beautiran, Cabanac-et-Villagrains, Cadaujac, Castres-Gironde, Isle Saint-Georges, La Brède, Léognan, Martillac, Saint-Médard-d’Eyrans, Saint-Morillon, Saint-Selve, Saucats" } }, - "reconfigure_dechets_gpseo_fr": { + "reconfigure_cc-montesquieu_fr": { "title": "Reconfigure Source", - "description": "Configure your service provider. \n\nThe INSEE code, different from postal code, can easily be found on Google\n\nMore details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/dechets_gpseo_fr.md.", + "description": "Configure your service provider. More details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/cc-montesquieu_fr.md.", "data": { "calendar_title": "Calendar Title", - "address": "Address", - "insee_code": "INSEE Code" + "commune": "City" }, "data_description": { - "address": "Your full address", - "insee_code": "The 5-digit INSEE code of your commune" + "commune": "city of Montesquieu's community : Ayguemorte-les-Graves, Beautiran, Cabanac-et-Villagrains, Cadaujac, Castres-Gironde, Isle Saint-Georges, La Brède, Léognan, Martillac, Saint-Médard-d’Eyrans, Saint-Morillon, Saint-Selve, Saucats" } }, "args_mamirolle_info": { @@ -2616,33 +2589,6 @@ }, "data_description": {} }, - "args_orleans_metropole_fr": { - "title": "Configure Source", - "description": "Configure your service provider. \n\nThe INSEE code, different from postal code, can easily be found on Google\n\nMore details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/orleans_metropole_fr.md.", - "data": { - "calendar_title": "Calendar Title", - "address": "Address", - "insee_code": "INSEE Code" - }, - "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.", - "address": "Your full address", - "insee_code": "The 5-digit INSEE code of your commune" - } - }, - "reconfigure_orleans_metropole_fr": { - "title": "Reconfigure Source", - "description": "Configure your service provider. \n\nThe INSEE code, different from postal code, can easily be found on Google\n\nMore details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/orleans_metropole_fr.md.", - "data": { - "calendar_title": "Calendar Title", - "address": "Address", - "insee_code": "INSEE Code" - }, - "data_description": { - "address": "Your full address", - "insee_code": "The 5-digit INSEE code of your commune" - } - }, "args_sivom_rivedroite_fr": { "title": "Configure Source", "description": "Configure your service provider. More details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/sivom_rivedroite_fr.md.", @@ -2663,33 +2609,6 @@ }, "data_description": {} }, - "args_tours_metropole_fr": { - "title": "Configure Source", - "description": "Configure your service provider. \n\nThe INSEE code, different from postal code, can easily be found on Google\n\nMore details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/tours_metropole_fr.md.", - "data": { - "calendar_title": "Calendar Title", - "address": "Address", - "insee_code": "INSEE Code" - }, - "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.", - "address": "Your full address", - "insee_code": "The 5-digit INSEE code of your commune" - } - }, - "reconfigure_tours_metropole_fr": { - "title": "Reconfigure Source", - "description": "Configure your service provider. \n\nThe INSEE code, different from postal code, can easily be found on Google\n\nMore details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/tours_metropole_fr.md.", - "data": { - "calendar_title": "Calendar Title", - "address": "Address", - "insee_code": "INSEE Code" - }, - "data_description": { - "address": "Your full address", - "insee_code": "The 5-digit INSEE code of your commune" - } - }, "args_ics": { "title": "Configure Source", "description": "Configure your service provider. More details: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/ics.md.", diff --git a/custom_components/waste_collection_schedule/translations/it.json b/custom_components/waste_collection_schedule/translations/it.json index 956107d9a..badb9ac81 100644 --- a/custom_components/waste_collection_schedule/translations/it.json +++ b/custom_components/waste_collection_schedule/translations/it.json @@ -2515,26 +2515,6 @@ }, "data_description": {} }, - "args_cc-montesquieu_fr": { - "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/cc-montesquieu_fr.md.", - "data": { - "calendar_title": "Nome Calendario", - "commune": "Commune" - }, - "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_cc-montesquieu_fr": { - "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/cc-montesquieu_fr.md.", - "data": { - "calendar_title": "Nome Calendario", - "commune": "Commune" - }, - "data_description": {} - }, "args_publidata_fr": { "title": "Configurazione Sorgente", "description": "Compila i campi per ottenere le informazioni sul tuo servizio di raccolta. \n\nIl codice INSEE del tuo comune si trova facilmente su Google. L'instance_id può essere trovato attraverso un ispettore di rete dal widget ufficiale\n\nMaggiori informazioni: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/publidata_fr.md.", @@ -2566,32 +2546,25 @@ "instance_id": "Un identificatore del tuo servizio di raccolta rifiuti. Ad esempio, quello di GPSEO è 1292 e si trova ispezionando le chiamate di rete su https://infos-dechets.gpseo.fr/4E79YtZv7M/list/?addressId=78005_0073_00002" } }, - "args_dechets_gpseo_fr": { + "args_cc-montesquieu_fr": { "title": "Configurazione Sorgente", - "description": "Compila i campi per ottenere le informazioni sul tuo servizio di raccolta. \n\nIl codice INSEE, diverso dal codice postale, può essere facilmente trovato su Google\n\nMaggiori informazioni: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/dechets_gpseo_fr.md.", + "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/cc-montesquieu_fr.md.", "data": { "calendar_title": "Nome Calendario", - "address": "Indirizzo", - "insee_code": "Codice INSEE" + "commune": "Commune" }, "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.", - "address": "Il tuo indirizzo completo", - "insee_code": "Il codice INSEE a 5 cifre del tuo comune" + "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_dechets_gpseo_fr": { + "reconfigure_cc-montesquieu_fr": { "title": "Riconfigurazione Sorgente", - "description": "Compila i campi per ottenere le informazioni sul tuo servizio di raccolta. \n\nIl codice INSEE, diverso dal codice postale, può essere facilmente trovato su Google\n\nPer maggiori informazioni: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/dechets_gpseo_fr.md.", + "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/cc-montesquieu_fr.md.", "data": { "calendar_title": "Nome Calendario", - "address": "Indirizzo", - "insee_code": "Codice INSEE" + "commune": "Commune" }, - "data_description": { - "address": "Il tuo indirizzo completo", - "insee_code": "Il codice INSEE a 5 cifre del tuo comune" - } + "data_description": {} }, "args_mamirolle_info": { "title": "Configurazione Sorgente", @@ -2613,33 +2586,6 @@ }, "data_description": {} }, - "args_orleans_metropole_fr": { - "title": "Configurazione Sorgente", - "description": "Compila i campi per ottenere le informazioni sul tuo servizio di raccolta. \n\nIl codice INSEE, diverso dal codice postale, può essere facilmente trovato su Google\n\nMaggiori informazioni: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/orleans_metropole_fr.md.", - "data": { - "calendar_title": "Nome Calendario", - "address": "Indirizzo", - "insee_code": "Codice INSEE" - }, - "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.", - "address": "Il tuo indirizzo completo", - "insee_code": "Il codice INSEE a 5 cifre del tuo comune" - } - }, - "reconfigure_orleans_metropole_fr": { - "title": "Riconfigurazione Sorgente", - "description": "Compila i campi per ottenere le informazioni sul tuo servizio di raccolta. \n\nIl codice INSEE, diverso dal codice postale, può essere facilmente trovato su Google\n\nPer maggiori informazioni: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/orleans_metropole_fr.md.", - "data": { - "calendar_title": "Nome Calendario", - "address": "Indirizzo", - "insee_code": "Codice INSEE" - }, - "data_description": { - "address": "Il tuo indirizzo completo", - "insee_code": "Il codice INSEE a 5 cifre del tuo comune" - } - }, "args_sivom_rivedroite_fr": { "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/sivom_rivedroite_fr.md.", @@ -2660,33 +2606,6 @@ }, "data_description": {} }, - "args_tours_metropole_fr": { - "title": "Configurazione Sorgente", - "description": "Compila i campi per ottenere le informazioni sul tuo servizio di raccolta. \n\nIl codice INSEE, diverso dal codice postale, può essere facilmente trovato su Google\n\nMaggiori informazioni: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/tours_metropole_fr.md.", - "data": { - "calendar_title": "Nome Calendario", - "address": "Indirizzo", - "insee_code": "Codice INSEE" - }, - "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.", - "address": "Il tuo indirizzo completo", - "insee_code": "Il codice INSEE a 5 cifre del tuo comune" - } - }, - "reconfigure_tours_metropole_fr": { - "title": "Riconfigurazione Sorgente", - "description": "Compila i campi per ottenere le informazioni sul tuo servizio di raccolta. \n\nIl codice INSEE, diverso dal codice postale, può essere facilmente trovato su Google\n\nPer maggiori informazioni: https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/tours_metropole_fr.md.", - "data": { - "calendar_title": "Nome Calendario", - "address": "Indirizzo", - "insee_code": "Codice INSEE" - }, - "data_description": { - "address": "Il tuo indirizzo completo", - "insee_code": "Il codice INSEE a 5 cifre del tuo comune" - } - }, "args_ics": { "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/ics.md.", diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/source/dechets_gpseo_fr.py b/custom_components/waste_collection_schedule/waste_collection_schedule/source/dechets_gpseo_fr.py deleted file mode 100644 index 15c855c48..000000000 --- a/custom_components/waste_collection_schedule/waste_collection_schedule/source/dechets_gpseo_fr.py +++ /dev/null @@ -1,52 +0,0 @@ -from . import publidata_fr - -TITLE = "GPSEO Waste Collection" -DESCRIPTION = "Source for GPSEO waste collection services." -URL = "https://dechets.gpseo.fr/" -COUNTRY = "fr" - -TEST_CASES = { - "Mantes la Ville": {"address": "11 rue Jean Moulin", "insee_code": "78362"}, - "Villennes sur Seine": {"address": "157 rue maurice utrillo", "insee_code": "78672"}, - "Poissy": {"address": "77 avenue Maurice Berteaux", "insee_code": "78498"}, -} - -HOW_TO_GET_ARGUMENTS_DESCRIPTION = { - "en": "The INSEE code, different from postal code, can easily be found on Google", - "de": "Der INSEE-Code, der sich vom Postleitzahl unterscheidet, kann leicht auf Google gefunden werden", - "it": "Il codice INSEE, diverso dal codice postale, può essere facilmente trovato su Google", -} - -PARAM_DESCRIPTIONS = { - "en": { - "address": "Your full address", - "insee_code": "The 5-digit INSEE code of your commune", - }, - "de": { - "address": "Ihre vollständige Adresse", - "insee_code": "Der 5-stellige INSEE-Code Ihrer Gemeinde", - }, - "it": { - "address": "Il tuo indirizzo completo", - "insee_code": "Il codice INSEE a 5 cifre del tuo comune", - }, -} - -PARAM_TRANSLATIONS = { - "en": { - "address": "Address", - "insee_code": "INSEE Code", - }, - "de": { - "address": "Adresse", - "insee_code": "INSEE-Code", - }, - "it": { - "address": "Indirizzo", - "insee_code": "Codice INSEE", - }, -} - -class Source(publidata_fr.Source): - def __init__(self, address, insee_code): - return super().__init__(address, insee_code, 1292) diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/source/orleans_metropole_fr.py b/custom_components/waste_collection_schedule/waste_collection_schedule/source/orleans_metropole_fr.py deleted file mode 100644 index 2c649aefb..000000000 --- a/custom_components/waste_collection_schedule/waste_collection_schedule/source/orleans_metropole_fr.py +++ /dev/null @@ -1,50 +0,0 @@ -from . import publidata_fr - -TITLE = "Orléans Métropole Waste Collection" -DESCRIPTION = "Source for Orléans Métropole waste collection services." -URL = "https://triermondechet.orleans-metropole.fr/" -COUNTRY = "fr" - -TEST_CASES = { - "Boigny sur Bionne": {"address": "13 rue de la Commanderie", "insee_code": "45034"}, -} - -HOW_TO_GET_ARGUMENTS_DESCRIPTION = { - "en": "The INSEE code, different from postal code, can easily be found on Google", - "de": "Der INSEE-Code, der sich vom Postleitzahl unterscheidet, kann leicht auf Google gefunden werden", - "it": "Il codice INSEE, diverso dal codice postale, può essere facilmente trovato su Google", -} - -PARAM_DESCRIPTIONS = { - "en": { - "address": "Your full address", - "insee_code": "The 5-digit INSEE code of your commune", - }, - "de": { - "address": "Ihre vollständige Adresse", - "insee_code": "Der 5-stellige INSEE-Code Ihrer Gemeinde", - }, - "it": { - "address": "Il tuo indirizzo completo", - "insee_code": "Il codice INSEE a 5 cifre del tuo comune", - }, -} - -PARAM_TRANSLATIONS = { - "en": { - "address": "Address", - "insee_code": "INSEE Code", - }, - "de": { - "address": "Adresse", - "insee_code": "INSEE-Code", - }, - "it": { - "address": "Indirizzo", - "insee_code": "Codice INSEE", - }, -} - -class Source(publidata_fr.Source): - def __init__(self, address, insee_code): - return super().__init__(address, insee_code, 100) diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/source/publidata_fr.py b/custom_components/waste_collection_schedule/waste_collection_schedule/source/publidata_fr.py index 699ce071d..ca35ab068 100644 --- a/custom_components/waste_collection_schedule/waste_collection_schedule/source/publidata_fr.py +++ b/custom_components/waste_collection_schedule/waste_collection_schedule/source/publidata_fr.py @@ -6,25 +6,28 @@ from datetime import datetime, timedelta, timezone from dateutil.rrule import rruleset, rrule, WEEKLY, MONTHLY, DAILY, MO, TU, WE, TH, FR, SA, SU -TITLE = "Generic source for publidata-based waste schedule management" + +TITLE = "Publidata generic source" DESCRIPTION = "Publidata is a French public operator with a reach of up to 6M inhabitants. Check if your area is concerned on their website." URL = "https://www.publidata.io/fr/" COUNTRY = "fr" TEST_CASES = { "GPSEO, Mantes la Ville": {"address": "11 rue Jean Moulin", "insee_code": "78362", "instance_id": 1292}, - "GPSEO, Villennes sur Seine": {"address": "157 rue maurice utrillo", "insee_code": "78672", "instance_id": 1292}, - "GPSEO, Poissy": {"address": "77 avenue Maurice Berteaux", "insee_code": "78498", "instance_id": 1292}, "Orleans Métropole, Boigny sur Bionne": {"address": "13 rue de la Commanderie", "insee_code": "45034", "instance_id": 100}, "Tours Métropole, Ballan-Miré": {"address": "3 Rue de Miré", "insee_code": "37018", "instance_id": 65}, + "Saumur Val de Loire, Allones": {"address": "5 rue du Bellay", "insee_code": "49002", "instance_id": 159}, + "Châteauroux Métropole, Ardentes": {"address": "1 rue du 8 mai 1945", "insee_code": "36005", "instance_id": 897}, + "Saint Quentin en Yvelines, Coignières": {"address": "1 rue du four à chaux", "insee_code": "78168", "instance_id": 701}, + "Versailles Grand Parc, Bailly": {"address": "1 rue de Maule", "insee_code": "78043", "instance_id": 251}, } ICON_MAP = { "omr": "mdi:trash-can", - "emb": "mdi:bottle-soda", - "enc": "mdi:leaf", - "dv": "mdi:package-variant", - "verre": "mdi:recycle", + "emb": "mdi:recycle", + "enc": "mdi:truck-remove", + "dv": "mdi:leaf", + "verre": "mdi:bottle-wine", } LABEL_MAP = { @@ -77,6 +80,16 @@ }, } +EXTRA_INFO = [ + {"title": "Grand Paris Seine et Oise", "url": "https://infos-dechets.gpseo.fr/", "default_params": {"instance_id": 1292}}, + {"title": "Orléans Métropole", "url": "https://triermondechet.orleans-metropole.fr/", "default_params": {"instance_id": 100}}, + {"title": "Tours Métropole", "url": "https://www.tours-metropole.fr/", "default_params": {"instance_id": 65}}, + {"title": "Saumur Val de Loire", "url": "https://www.saumurvaldeloire.fr/", "default_params": {"instance_id": 159}}, + {"title": "Châteauroux Métropole", "url": "https://www.chateauroux-metropole.fr/", "default_params": {"instance_id": 897}}, + {"title": "Saint Quentin en Yvelines", "url": "https://www.saint-quentin-en-yvelines.fr/", "default_params": {"instance_id": 701}}, + {"title": "Versailles Grand Parc", "url": "https://www.versaillesgrandparc.fr/", "default_params": {"instance_id": 251}}, +] + _CALENDAR_DAY_VERY_ABBR = { "Mo": MO, "Tu": TU, @@ -97,7 +110,7 @@ def __init__(self, address, insee_code, instance_id): self.insee_code = insee_code self.instance_id = instance_id - + def _get_address_params(self, address, insee_code): params = { "q": address, @@ -106,21 +119,21 @@ def _get_address_params(self, address, insee_code): "lookup": "publidata", } response = requests.get(self.geocoder_url, params=params) - + if response.status_code != 200: raise SourceArgumentException("address", "Error response from geocoder") - + data = response.json()[0]['data']['features'] if not data: raise SourceArgumentException("address", "No results found for the given address and INSEE code") - + lat, lon = data[0]['geometry']['coordinates'] return { "lat": lat, "lon": lon, "address_id": data[0]['properties']['id'], } - + def _perform_query(self): api_url = "https://api.publidata.io/v2/search" params = { @@ -130,18 +143,18 @@ def _perform_query(self): "instances[]": self.instance_id, **self.address_params, } - + response = requests.get(api_url, params=params) - + if response.status_code != 200: - raise Exception(f"Error fetching data from {api_url}: {response.status_code}") # TODO: Check if this is the correct exception to raise - + raise Exception(f"Error fetching data from {api_url}: {response.status_code}") + return self._sanitize_response(response.json()) - + def _sanitize_response(self, data): """ Sanitize the response from the publidata API to extract the collection schedules for each type of waste. - + Example output: { "emb": { @@ -188,8 +201,8 @@ def _sanitize_response(self, data): result = {} hits = data.get('hits', {}).get('hits', []) if not hits: - raise Exception("TODO") - + raise Exception("Unexpected response format") + for hit in hits: source = hit.get('_source', {}) if source.get('metas', {}).get('sectorization') == 'single': @@ -197,7 +210,7 @@ def _sanitize_response(self, data): if garbage_type: result[garbage_type] = {'schedules': source.get('schedules', {})} return result - + def _parse_closure(self, schedule): """ Parse a closure schedule and return a daily rrule between the start and end dates. @@ -209,10 +222,10 @@ def _parse_closure(self, schedule): dtstart=start_date, until=end_date ) - + def _is_week_day(self, input_string): return any(day in input_string for day in _CALENDAR_DAY_VERY_ABBR) - + def _parse_week_day(self, input_string): """ parse a string like "Mo" "Tu[2]", "We[2,4]" or "We,Th,Fr" and return the corresponding rrule.weekday object @@ -228,21 +241,21 @@ def _parse_week_day(self, input_string): if not weekdays: raise ValueError(f"Invalid day format: {day}") - + return {"byweekday": weekdays} - + def _is_time(self, input_string): return re.match(r'^(\d{2}:\d{2})', input_string) - + def _is_day_number(self, input_string): return bool(re.match(r'^(\d{1,2})(,\d{1,2})*$', input_string)) - + def _parse_day_number(self, input_string): return {"bymonthday": [int(day) for day in input_string.split(',')]} - + def _is_month(self, input_string): return any(month in input_string for month in _CALENDAR_MONTHS_ABBR) - + def _parse_month(self, input_string): input_string = input_string.replace(':', '') # match some actual cases in production if '-' in input_string: @@ -250,21 +263,21 @@ def _parse_month(self, input_string): month_list = list(range(_CALENDAR_MONTHS_ABBR.index(start_month) + 1, _CALENDAR_MONTHS_ABBR.index(end_month) + 1)) else: month_list = [_CALENDAR_MONTHS_ABBR.index(month) + 1 for month in input_string.split(',')] - + return {"bymonth": month_list} - + def _is_year(self, input_string): return bool(re.match(r'^(\d{4})', input_string)) - + def _parse_year(self, input_string): if '-' in input_string: start_year, end_year = [int(year) for year in input_string.split('-')] else: start_year = int(input_string) end_year = start_year - + return {"dtstart": datetime(start_year, 1, 1, tzinfo=timezone.utc), "until": datetime(end_year, 12, 31, tzinfo=timezone.utc)} - + def _parse_part(self, part): """ Parse a part of the opening_hours string and return the corresponding kwargs to rrule constructor @@ -286,30 +299,43 @@ def _parse_part(self, part): return {} # ignore those, the plugin doesn’t support time else: raise ValueError(f"Invalid part: {part}") - + def _parse_week_no(self, input_string): - weeks = input_string.split('-') - start_week = int(weeks[0]) - end_week = int(weeks[1].split('/')[0]) - interval = int(weeks[1].split('/')[1]) - return {"byweekno": list(range(start_week, end_week + 1, interval))} - + week_nos = [] + for sub_string in input_string.split(','): + if '-' not in sub_string: + week_nos.append(int(sub_string)) + continue + + weeks = sub_string.split('-') + start_week = int(weeks[0]) + if '/' in weeks[1]: + end_week = int(weeks[1].split('/')[0]) + interval = int(weeks[1].split('/')[1]) + else: + end_week = int(weeks[1]) + interval = 1 + + week_nos.extend(list(range(start_week, end_week + 1, interval))) + + return {"byweekno": week_nos} + def _parse_regular(self, schedule): """ Parse a regular schedule and return a rrule object. - + Example input: "end_at": "2025-07-16T00:00:00.000+00:00", "opening_hours": "week 2-52/2 Mo 12:00-17:00", "name": "Horaires de collecte", "id": 1019827, - "start_at": "2024-01-08T00:00:00.000+00:00" - + "start_at": "2024-01-08T00:00:00.000+00:00" + Return: rrule object - - + + Handled opening_hours formats: "week 2-52/2 Mo 12:00-17:00" "Feb,May,Aug,Nov Th[4] 05:00-12:00" @@ -319,15 +345,18 @@ def _parse_regular(self, schedule): "2024-2025 Mo 05:00-12:00" "2024-2025 Dec: We[2,4] 09:00-19:00" "2024-2025 Sep-Nov We 09:00-19:00" + "week 18 Mo,Fr 14:00-18:00" + "week 1-52 Mo 12:00-17:00" + "week 1-17,19-52 Mo,We,Fr 14:00-18:00" """ start_date = datetime.strptime(schedule['start_at'], '%Y-%m-%dT%H:%M:%S.%f%z') if schedule['start_at'] else None if schedule['end_at']: end_date = datetime.strptime(schedule['end_at'], '%Y-%m-%dT%H:%M:%S.%f%z') else: end_date = (datetime.now(timezone.utc) + timedelta(days=365)) - + opening_hours = schedule['opening_hours'] - + parts = opening_hours.split() kwargs = { "freq": MONTHLY, @@ -337,24 +366,24 @@ def _parse_regular(self, schedule): if parts[0] == 'week': kwargs["freq"] = WEEKLY - kwargs.update(self._parse_week_no(parts[1])) + kwargs.update(self._parse_week_no(parts[1])) parts = parts[2:] for part in parts: kwargs.update(self._parse_part(part)) - + # Create the rrule rule = rrule(**kwargs) - + return rule def fetch(self): self.address_params = self._get_address_params(self.address, self.insee_code) entries = [] - + sanitized_response = self._perform_query() - + for waste_type, waste_data in sanitized_response.items(): my_rruleset = rruleset() for schedule in waste_data['schedules']: @@ -362,7 +391,7 @@ def fetch(self): my_rruleset.rrule(self._parse_regular(schedule)) elif schedule['schedule_type'] in ('closed', 'closing_exception'): my_rruleset.exrule(self._parse_closure(schedule)) - + for entry in my_rruleset: entries.append(Collection(entry.date(), LABEL_MAP.get(waste_type), icon=ICON_MAP.get(waste_type))) diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/source/tours_metropole_fr.py b/custom_components/waste_collection_schedule/waste_collection_schedule/source/tours_metropole_fr.py deleted file mode 100644 index 8aa206374..000000000 --- a/custom_components/waste_collection_schedule/waste_collection_schedule/source/tours_metropole_fr.py +++ /dev/null @@ -1,50 +0,0 @@ -from . import publidata_fr - -TITLE = "Tours Métropole Waste Collection" -DESCRIPTION = "Source for Tours Métropole waste collection services." -URL = "https://www.tours-metropole.fr/mes-poubelles-connaitre-les-jours-de-collecte-et-sinformer-sur-le-tri" -COUNTRY = "fr" - -TEST_CASES = { - "Ballan-Miré": {"address": "3 Rue de Miré", "insee_code": "37018"}, -} - -HOW_TO_GET_ARGUMENTS_DESCRIPTION = { - "en": "The INSEE code, different from postal code, can easily be found on Google", - "de": "Der INSEE-Code, der sich vom Postleitzahl unterscheidet, kann leicht auf Google gefunden werden", - "it": "Il codice INSEE, diverso dal codice postale, può essere facilmente trovato su Google", -} - -PARAM_DESCRIPTIONS = { - "en": { - "address": "Your full address", - "insee_code": "The 5-digit INSEE code of your commune", - }, - "de": { - "address": "Ihre vollständige Adresse", - "insee_code": "Der 5-stellige INSEE-Code Ihrer Gemeinde", - }, - "it": { - "address": "Il tuo indirizzo completo", - "insee_code": "Il codice INSEE a 5 cifre del tuo comune", - }, -} - -PARAM_TRANSLATIONS = { - "en": { - "address": "Address", - "insee_code": "INSEE Code", - }, - "de": { - "address": "Adresse", - "insee_code": "INSEE-Code", - }, - "it": { - "address": "Indirizzo", - "insee_code": "Codice INSEE", - }, -} - -class Source(publidata_fr.Source): - def __init__(self, address, insee_code): - return super().__init__(address, insee_code, 65) diff --git a/doc/source/dechets_gpseo_fr.md b/doc/source/dechets_gpseo_fr.md deleted file mode 100644 index d1769d1c1..000000000 --- a/doc/source/dechets_gpseo_fr.md +++ /dev/null @@ -1,38 +0,0 @@ -#dechets_gpseo_fr.md -# GPSEO - Communauté Urbaine - -Support for schedules provided by [GPSEO - Communauté Urbaine](https://dechets.gpseo.fr/). - -If collection data is available for the address provided, it will return waste collection dates. - -## Configuration via configuration.yaml - -```yaml -waste_collection_schedule: - sources: - - name: dechets_gpseo_fr - args: - address: "ADDRESS" - insee_code: "INSEE_CODE" -``` - -### Configuration Variables - -## Examples - -```yaml -waste_collection_schedule: - sources: - - name: dechets_gpseo_fr - args: - address: 11 rue Jean Moulin - insee_code: "78362" -``` - -## How to find the insee code of your town - -You should find it very easily on google. - -## How to ensure your address is valid - -Go on [GPSEO’s website](https://dechets.gpseo.fr/) and check how the autocomplete formats your address. diff --git a/doc/source/orleans_metropole_fr.md b/doc/source/orleans_metropole_fr.md deleted file mode 100644 index 32fdad306..000000000 --- a/doc/source/orleans_metropole_fr.md +++ /dev/null @@ -1,38 +0,0 @@ -#orleans_metropole_fr.md -# Orléans Métropole - -Support for schedules provided by [Orléans Métropole](https://triermondechet.orleans-metropole.fr/). - -If collection data is available for the address provided, it will return waste collection dates. - -## Configuration via configuration.yaml - -```yaml -waste_collection_schedule: - sources: - - name: dechets_gpseo_fr - args: - address: "ADDRESS" - insee_code: "INSEE_CODE" -``` - -### Configuration Variables - -## Examples - -```yaml -waste_collection_schedule: - sources: - - name: orleans_metropole_fr - args: - address: 13 rue de la Commanderie - insee_code: "45034" -``` - -## How to find the insee code of your town - -You should find it very easily on google. - -## How to ensure your address is valid - -Go on [Orléans Métropole’s website](https://triermondechet.orleans-metropole.fr/) and check how the autocomplete formats your address. diff --git a/doc/source/tours_metropole_fr.md b/doc/source/tours_metropole_fr.md deleted file mode 100644 index 897b2d861..000000000 --- a/doc/source/tours_metropole_fr.md +++ /dev/null @@ -1,38 +0,0 @@ -#tours_metropole_fr.md -# Tours Métropole - -Support for schedules provided by [Tours Métropole](https://www.tours-metropole.fr/mes-poubelles-connaitre-les-jours-de-collecte-et-sinformer-sur-le-tri). - -If collection data is available for the address provided, it will return waste collection dates. - -## Configuration via configuration.yaml - -```yaml -waste_collection_schedule: - sources: - - name: dechets_gpseo_fr - args: - address: "ADDRESS" - insee_code: "INSEE_CODE" -``` - -### Configuration Variables - -## Examples - -```yaml -waste_collection_schedule: - sources: - - name: tours_metropole_fr - args: - address: 3 Rue de Miré - insee_code: "37018" -``` - -## How to find the insee code of your town - -You should find it very easily on google. - -## How to ensure your address is valid - -Go on [Tours Métropole’s website](https://www.tours-metropole.fr/mes-poubelles-connaitre-les-jours-de-collecte-et-sinformer-sur-le-tri) and check how the autocomplete formats your address. diff --git a/info.md b/info.md index 47c3b127b..f7adb0215 100644 --- a/info.md +++ b/info.md @@ -23,7 +23,7 @@ Waste collection schedules from service provider web sites are updated daily, de | Czech Republic | Praha, Rudna u Prahy | | Denmark | Affaldonline, Assens Forsyning, Fanø Kommune, Favrskov Forsyning, Fredericia Kommune Affald & Genbrug, Kredsløb, Langeland Forsyning, Middelfart Kommune, Nyborg Forsyning & Service A/S, Odense Renovation, Rebild Kommune, Reno Djurs, Renosyd, RenoWeb, Silkeborg Forsyning, Sorø Kommune, Vejle Kommune, Vestforbrænding, Ærø Kommune | | Finland | Kiertokapula Finland | -| France | Communauté de Communes de Montesquieu, Generic source for publidata-based waste schedule management, GPSEO Waste Collection, Mairie de Mamirolle, Orléans Métropole Waste Collection, Sivom Rive Droite - Bassens, Tours Métropole Waste Collection | +| France | Châteauroux Métropole, Communauté de Communes de Montesquieu, Grand Paris Seine et Oise, Mairie de Mamirolle, Orléans Métropole, Publidata generic source, Saint Quentin en Yvelines, Saumur Val de Loire, Sivom Rive Droite - Bassens, Tours Métropole, Versailles Grand Parc | | Germany | Aballwirtschaft Ludwigslust-Parchim AöR, Abfall App, Abfall IO ICS Version, Abfall Stuttgart, Abfall-Wirtschafts-Verband Nordschwaben, Abfall.IO / AbfallPlus, Abfallbehandlungsgesellschaft Havelland mbH (abh), Abfallbewirtschaftung Ostalbkreis, Abfallentsorgung Kreis Kassel, Abfallkalender Hattingen, Abfallkalender Herne, Abfallkalender Kassel, Abfallkalender Luebeck, Abfallkalender Mannheim, Abfallkalender Offenbach, Abfallkalender Offenbach am Main (deprecated), Abfallkalender Würzburg, AbfallNavi (RegioIT.de), Abfalltermine Forchheim, Abfallwirtschaft Alb-Donau-Kreis, Abfallwirtschaft Altkreis Göttingen, Abfallwirtschaft Altkreis Osterode am Harz, Abfallwirtschaft Dithmarschen (AWD), Abfallwirtschaft Enzkreis, Abfallwirtschaft Freiburg, Abfallwirtschaft Germersheim, Abfallwirtschaft Isar-Inn, Abfallwirtschaft Kreis Plön, Abfallwirtschaft Lahn-Dill-Kreises, Abfallwirtschaft Landkreis Böblingen, Abfallwirtschaft Landkreis Freudenstadt, Abfallwirtschaft Landkreis Göppingen, Abfallwirtschaft Landkreis Harburg, Abfallwirtschaft Landkreis Haßberge, Abfallwirtschaft Landkreis Kitzingen, Abfallwirtschaft Landkreis Landsberg am Lech, Abfallwirtschaft Landkreis Wolfenbüttel, Abfallwirtschaft Neckar-Odenwald-Kreis, Abfallwirtschaft Nürnberger Land, Abfallwirtschaft Ortenaukreis, Abfallwirtschaft Pforzheim, Abfallwirtschaft Potsdam-Mittelmark (APM), Abfallwirtschaft Rems-Murr, Abfallwirtschaft Rendsburg, Abfallwirtschaft Rheingau-Taunus-Kreis, Abfallwirtschaft Sonneberg, Abfallwirtschaft Stadt Fürth, Abfallwirtschaft Stadt Nürnberg, Abfallwirtschaft Stadt Schweinfurt, Abfallwirtschaft Südholstein, Abfallwirtschaft Werra-Meißner-Kreis, Abfallwirtschafts-Zweckverband des Landkreises Hersfeld-Rotenburg, Abfallwirtschaftsbetrieb Bergisch Gladbach, Abfallwirtschaftsbetrieb des Landkreises Pfaffenhofen a.d.Ilm (AWP), Abfallwirtschaftsbetrieb Emsland, Abfallwirtschaftsbetrieb Esslingen, Abfallwirtschaftsbetrieb Ilm-Kreis, Abfallwirtschaftsbetrieb Kiel (ABK), Abfallwirtschaftsbetrieb Landkreis Ahrweiler, Abfallwirtschaftsbetrieb Landkreis Altenkirchen, Abfallwirtschaftsbetrieb Landkreis Augsburg, Abfallwirtschaftsbetrieb Landkreis Aurich, Abfallwirtschaftsbetrieb Landkreis Karlsruhe, Abfallwirtschaftsbetrieb LK Mainz-Bingen, Abfallwirtschaftsbetrieb Unstrut-Hainich-Kreis, Abfallwirtschaftsbetriebe Münster, Abfallwirtschaftsgesellschaft Landkreis Schaumburg, Abfallwirtschaftsverband Kreis Groß-Gerau, Abfallwirtschaftsverbandes Lippe, Abfallwirtschaftszweckverband Wartburgkreis (AZV), Abfallzweckverband Rhein-Mosel-Eifel (Landkreis Mayen-Koblenz), Abfuhrtermine.info, AHE Ennepe-Ruhr-Kreis, AHK Heidekreis, ALBA Berlin, ALBA Braunschweig, ALF Lahn-Fulda, Allendorf, Altena, Altenbeken, Altmarkkreis Salzwedel, Altötting (LK), Alzey-Worms, Apps by Abfall+, Arnsberg, ART Trier, ART Trier (Depreciated), Aschaffenburg (MyMuell App), ASG Nordsachsen, ASG Wesel, ASO Abfall-Service Osterholz, ASR Stadt Chemnitz, ASTO (Abfall- Sammel- und Transportverband Oberberg), ATHOS GmbH, Attendorn, Augsburg, Aurich (MKW), AVL - Abfallverwertungsgesellschaft des Landkreises Ludwigsburg mbH, AWA Entsorgungs GmbH, AWB Abfallwirtschaft Vechta, AWB Bad Kreuznach, AWB Köln, AWB Landkreis Bad Dürkheim, AWB Landkreis Fürstenfeldbruck, AWB Oldenburg, AWB Westerwaldkreis, AWG Bassum, AWG Donau-Wald, AWG Kreis Warendorf, AWG Wuppertal, AWIDO Online, AWIGO Abfallwirtschaft Landkreis Osnabrück GmbH, AWISTA Düsseldorf, AWISTA LOGISTIK Stadt Remscheid, Awista Starnberg, AWL Neuss, AWM München, AZV Stadt und Landkreis Hof, Bad Arolsen, Bad Arolsen (MyMuell App), Bad Berleburg, Bad Driburg, Bad Homburg vdH, Bad Kissingen, Bad Wünnenberg, Bad-König, Balve, Bamberg (Stadt und Landkreis), Barnim, Battenberg, Bau & Service Oberursel, Bau- und Entsorgungsbetrieb Emden, Bergischer Abfallwirtschaftverbund, Berlin, Berlin Recycling, Berliner Stadtreinigungsbetriebe, Bestwig, Beverungen (MyMuell App), Bielefeld, Blaue Tonne - Schlaue Tonne, Bogenschütz Entsorgung, Bonn, Borchen, Borgentreich, Brakel, Braunschweig, Breckerfeld, Bremer Stadtreinigung, Brensbach, Breuberg, Brilon, Brombachtal, Bromskirchen, Burgenland (Landkreis), Burgenlandkreis, Burgwald, Büren, Bürgerportal, Bürgerportal Bedburg, C-Trace, Cederbaum Braunschweig, Celle, Cham Landkreis, Chemnitz (ASR), Chiemgau Recycling - Landkreis Rosenheim, City of Karlsruhe, CM City Media - Müllkalender, Coburg Entsorgungs- und Baubetrieb CEB, Darmstadt (MyMuell App), Darmstadt-Dieburg (ZAW), Delbrück, Dessau-Rosslau, Diemelsee, Diemelstadt, Dillingen Saar, Dinslaken, Drekopf, Drolshagen, Duisburg, EAD Darmstadt, ebwo - Entsorgungs- und Baubetrieb Anstalt des öffentlichen Rechts der Stadt Worms, Edertal, EDG Entsorgung Dortmund, EGN Abfallkalender, EGST Steinfurt, EGW Westmünsterland, Eichsfeldwerke GmbH, Eigenbetrieb Abfallwirtschaft Landkreis Spree-Neiße, Eigenbetrieb Kommunalwirtschaftliche Dienstleistungen Suhl, EKM Mittelsachsen GmbH, Entsorgung Dortmund GmbH (EDG), Entsorgungs- und Wirtschaftsbetrieb Landau in der Pfalz, Entsorgungsbetrieb Märkisch-Oderland, Entsorgungsbetrieb Stadt Mainz, Entsorgungsbetriebe Essen, Entsorgungsgesellschaft Görlitz-Löbau-Zittau, Entsorgungstermine Jena, Erbach, Erfstadt (inoffical), Esens (MyMuell App), ESG Soest - Entsorgungswirtschaft Soest GmbH, Eslohe, Essen, EVA Abfallentsorgung, EVS Entsorgungsverband Saar, FES Frankfurter Entsorgungs- und Service GmbH, Finnentrop, Flensburg (MyMuell App), Flörsheim Am Main, Frankenau, Frankfurt (Oder), Frankfurt (Oder), Freiburg im Breisgau, Fränkisch-Crumbach, Gelber Sack Stuttgart, Gelsendienste Gelsenkirchen, Gemeinde Blankenheim, Gemeinde Deggenhausertal, Gemeinde Kalletal, Gemeinde Roetgen, Gemeinde Schutterwald, Gemeinde Unterhaching, GFA Lüneburg, Gipsprojekt, Großkrotzenburg (MyMuell App), GSAK APP / Krefeld, GWA - Kreis Unna mbH, Göttinger Entsorgungsbetriebe, Gütersloh, Hagen, Hainburg (MyMuell App), Hallenberg, Hallesche Wasser und Stadtwirtschaft GmbH, Halver, Halver, Hattersheim am Main, Hatzfeld, hausmüll.info, Havelland, Heidelberg, Heilbronn Entsorgungsbetriebe, Heinz-Entsorgung (Landkreis Freising), Hemer, Herten (durth-roos.de), Hohenlohekreis, Holtgast (MyMuell App), HubertSchmid Recycling und Umweltschutz GmbH, Höchst, Höxter, Ilm-Kreis, Ingolstadt, Insert IT Apps, Iserlohn, Jumomind, KAEV Niederlausitz, Kamp-Lintfort (MyMuell App), KECL Kommunalentsorgung Chemnitzer Land, Kierspe, Kirchdorf (MyMuell App), Kommunalservice Landkreis Börde AöR, Korbach, Kreis Ahrweiler, Kreis Augsburg, Kreis Bad Kissingen, Kreis Bautzen, Kreis Bayreuth, Kreis Bergstraße, Kreis Biberach, Kreis Breisgau-Hochschwarzwald, Kreis Calw, Kreis Cloppenburg, Kreis Coesfeld, Kreis Cuxhaven, Kreis Diepholz, Kreis Emmendingen, Kreis Emsland, Kreis Freudenstadt, Kreis Fürth, Kreis Garmisch-Partenkirchen, Kreis Göppingen, Kreis Heilbronn, Kreis Heinsberg, Kreis Karlsruhe, Kreis Kitzingen, Kreis Landsberg am Lech, Kreis Landshut, Kreis Limburg-Weilburg, Kreis Ludwigsburg, Kreis Lörrach, Kreis Mayen-Koblenz, Kreis Miesbach, Kreis Miltenberg, Kreis Märkisch-Oderland, Kreis Neustadt/Aisch-Bad Windsheim, Kreis Neuwied, Kreis Nienburg / Weser, Kreis Nordfriesland, Kreis Ostallgäu, Kreis Osterholz, Kreis Pinneberg, Kreis Rastatt, Kreis Ravensburg, Kreis Reutlingen, Kreis Rotenburg (Wümme), Kreis Schaumburg, Kreis Sigmaringen, Kreis Starnberg, Kreis Steinburg, Kreis Steinfurt, Kreis Südwestpfalz, Kreis Traunstein, Kreis Uelzen, Kreis Vechta, Kreis Viersen, Kreis Vorpommern-Rügen, Kreis Weißenburg-Gunzenhausen, Kreis Wesermarsch, Kreis Würzburg, Kreisstadt Dietzenbach, Kreisstadt Friedberg, Kreisstadt Groß-Gerau, Kreisstadt St. Wendel, Kreiswerke Schmalkalden-Meiningen GmbH, Kreiswirtschaftsbetriebe Goslar, Kreuztal, Kronberg im Taunus, KV Cochem-Zell, KWU Entsorgung Landkreis Oder-Spree, Landkreis Amberg-Sulzbach, Landkreis Anhalt-Bitterfeld, Landkreis Ansbach, Landkreis Aschaffenburg, Landkreis Aschaffenburg (MyMuell App), Landkreis Bayreuth, Landkreis Berchtesgadener Land, Landkreis Biberach (MyMuell App), Landkreis Böblingen, Landkreis Böblingen, Landkreis Börde AöR (KsB), Landkreis Calw, Landkreis Coburg, Landkreis Cuxhaven, Landkreis Eichstätt (MyMuell App), Landkreis Erding, Landkreis Erlangen-Höchstadt, Landkreis Esslingen, Landkreis Friesland (MyMuell App), Landkreis Fulda, Landkreis Gießen, Landkreis Gifhorn, Landkreis Gotha, Landkreis Grafschaft, Landkreis Görlitz, Landkreis Günzburg, Landkreis Hameln-Pyrmont, Landkreis Harz, Landkreis Heidenheim, Landkreis Heilbronn, Landkreis Hildburghausen, Landkreis Kelheim, Landkreis Kronach, Landkreis Kulmbach, Landkreis Kusel, Landkreis Leer (MyMuell App), Landkreis Leipzig, Landkreis Limburg-Weilburg, Landkreis Lüchow-Dannenberg, Landkreis Main-Spessart, Landkreis Mettmann (MyMuell App), Landkreis Mühldorf a. Inn, Landkreis Neumarkt, Landkreis Nordwestmecklenburg, Landkreis Northeim (unofficial), Landkreis Ostallgäu, Landkreis Paderborn (MyMuell App), Landkreis Peine, Landkreis Ravensburg, Landkreis Reutlingen, Landkreis Rhön Grabfeld, Landkreis Rosenheim, Landkreis Rostock, Landkreis Rotenburg (Wümme), Landkreis Roth, Landkreis Roth, Landkreis Rottweil, Landkreis Schweinfurt, Landkreis Schwäbisch Hall, Landkreis Sigmaringen, Landkreis soest, Landkreis Stade, Landkreis Stendal, Landkreis Sömmerda, Landkreis Südliche Weinstraße, Landkreis Tirschenreuth, Landkreis Tübingen, Landkreis Vogtland, Landkreis Weißenburg-Gunzenhausen, Landkreis Wittenberg, Landkreis Wittmund, Landkreis Wittmund (MyMuell App), Landkreis Wittmund (MyMuell App), Landkreis Wunsiedel im Fichtelgebirge, Landkreisbetriebe Neuburg-Schrobenhausen, Landratsamt Aichach-Friedberg, Landratsamt Bodenseekreis, Landratsamt Dachau, Landratsamt Main-Tauber-Kreis, Landratsamt Miltenberg, Landratsamt Regensburg, Landratsamt Traunstein, Landratsamt Unterallgäu, Landshut, Langen, Lebacher Abfallzweckverband (LAZ), Lennestadt, Leverkusen, Lichtenau, Lichtenfels, LK Schwandorf, Lobbe App, Ludwigshafen, Ludwigshafen am Rhein, Lübbecke (Jumomind), Lübeck Entsorgungsbetriebe, Lützelbach, mags Mönchengladbacher Abfall-, Grün- und Straßenbetriebe AöR, Main-Kinzig-Kreis, Main-Kinzig-Kreis (MyMuell App), Mannheim, Marienmünster, Marsberg, Mechernich und Kommunen, Medebach, Mein-Abfallkalender.online, Meinerzhagen, Menden, Meschede, Metzingen, MHEG Mülheim an der Ruhr, Michelstadt, Minden, Mossautal, MZV Biedenkopf, Mörfelden-Walldorf, Mühlheim am Main (MyMuell App), Müllabfuhr Deutschland, MüllALARM / Schönmackers, Müllmax, München Landkreis, Nachrodt-Wiblingwerde, Neckar-Odenwald-Kreis, Nenndorf (MyMuell App), Neu Ulm, Neumünster (MyMuell App), Neunkirchen Siegerland, Neustadt a.d. Waldnaab, Neustadt an der Weinstraße, Nordsachsen, Oberhavel, Oberhavel AWU, Oberzent, Oldenburg, Olpe, Olsberg, Ortenaukreis, Ostholstein, Ostprignitz-Ruppin, Plettenberg, Potsdam, Prignitz, Prignitz, Prignitz, Pullach im Isartal, Recklinghausen, RegioEntsorgung AöR, RegioEntsorgung Städteregion Aachen, Reichelsheim, RESO, Rhein-Hunsrück (Jumomind), Rhein-Hunsrück Entsorgung (RHE), Rhein-Neckar-Kreis, Rhein-Neckar-Kreis, Rhein-Pfalz-Kreis, Rosbach Vor Der Höhe, Rosenthal, Rottweil, Rottweil, Rottweil, RSAG Rhein-Sieg-Kreis, Rüthen, Saalekreis, Salzgitter (MyMuell App), Salzlandkreis, Schalksmühle, Schleswig-Flensburg (ASF), Schmallenberg, Schmitten im Taunus (MyMuell App), Schwarze Elster, Schwarzwald-Baar-Kreis, Schöneck (MyMuell App), Schönmackers, Sector 27 - Datteln, Marl, Oer-Erkenschwick, Seligenstadt (MyMuell App), Siegen, Stadt Aachen, Stadt Arnsberg, Stadt Bayreuth, Stadt Cottbus, Stadt Cuxhaven, Stadt Darmstadt, Stadt Detmold, Stadt Dorsten, Stadt Emmendingen, Stadt Frankenberg (Eder), Stadt Fulda, Stadt Haltern am See, Stadt Hamm, Stadt Hanau, Stadt Kaufbeuren, Stadt Koblenz, Stadt Landshut, Stadt Mainhausen, Stadt Maintal, Stadt Memmingen, Stadt Messstetten, Stadt Norderstedt, Stadt Osnabrück, Stadt Overath, Stadt Regensburg, Stadt Solingen, Stadt Spenge, Stadt Unterschleißheim, Stadtbetrieb Frechen, Stadtbildpflege Kaiserslautern, Stadtentsorgung Rostock, Stadtreinigung Dresden, Stadtreinigung Hamburg, Stadtreinigung Leipzig, Stadtreinigung Leipzig, StadtService Brühl, Stadtwerke Erfurt, SWE, Stadtwerke Hürth, Steinheim, STL Lüdenscheid, Städteservice Raunheim Rüsselsheim, Sundern, SWK Herford, Südbrandenburgischer Abfallzweckverband, TBR Remscheid, TBV Velbert, Team Orange (Landkreis Würzburg), Technischer Betriebsdienst Reutlingen, tonnenleerung.de LK Aichach-Friedberg + Neuburg-Schrobenhausen, Tuttlingen, Tuttlingen, Tuttlingen, Twistetal, Tübingen, Uckermark, ULM (EBU), Ulm (MyMuell App), USB Bochum, Usingen (MyMuell App), VIVO Landkreis Miesbach, Volkmarsen (MyMuell App), Vöhl, Vöhringen (MyMuell App), Waldshut, Waldshut, Waldshut, Warburg, Warstein, WBO Wirtschaftsbetriebe Oberhausen, Wegberg (MyMuell App), Weimarer Land, Wenden, Werdohl, Wermelskirchen (Service Down), Westerholt (MyMuell App), Westerwaldkreis, WGV Recycling GmbH, Wilhelmshaven (MyMuell App), Willebadessen, Willingen, Winterberg, Wolfsburger Abfallwirtschaft und Straßenreinigung, WZV Kreis Segeberg, Würzburg, ZAH Hildesheim, ZAK Kempten, ZAW Donau-Wald, ZAW-SR, ZBG Gladbeck, ZEW Zweckverband Entsorgungsregion West, ZfA Iserlohn, Zollernalbkreis, Zollernalbkreis, Zweckverband Abfallwirtschaft Kreis Bergstraße, Zweckverband Abfallwirtschaft Oberes Elbtal, Zweckverband Abfallwirtschaft Region Hannover, Zweckverband Abfallwirtschaft Saale-Orla, Zweckverband Abfallwirtschaft Schwalm-Eder-Kreis, Zweckverband Abfallwirtschaft Südwestsachsen (ZAS), Zweckverband München-Südost | | Hungary | FKF Budapest, FKF Budaörs, ÉTH (Érd, Diósd, Nagytarcsa, Sóskút, Tárnok) | | Italy | Agliana, Alia Servizi Ambientali S.p.A., Bagno a Ripoli, Barberino di Mugello, Barberino Tavarnelle, Borgo San Lorenzo, Buggiano, Calenzano, Campi Bisenzio, Cantagallo, Capraia e Limite, Carmignano, Castelfiorentino, Cerreto Guidi, Certaldo, Chiesina Uzzanese, CIDIU S.p.A., Contarina S.p.A, Empoli, Fiesole, Figline e Incisa Valdarno, Firenze, Fucecchio, Gambassi Terme, Greve in Chianti, Il Rifiutologo, Impruneta, Iren Ambiente, isontina ambiente: Ronchi dei legionari, Lamporecchio, Larciano, Lastra a Signa, Marliana, Massa e Cozzile, Monsummano Terme, Montaione, Montale, Montecatini Terme, Montelupo Fiorentino, Montemurlo, Montespertoli, Pescia, Pieve a Nievole, Pistoia, Poggio a Caiano, Ponte Buggianese, Prato, Quarrata, Rignano sull'Arno, Sambuca Pistoiese, San Casciano in Val di Pesa, San Marcello Piteglio, Scandicci, Scarperia e San Piero, Serravalle Pistoiese, Sesto Fiorentino, Signa, Uzzano, Vaglia, Vaiano, Vernio, Vicchio, Vinci |