add Backend of My Local Services App

You can just search schedule using coordinates
This commit is contained in:
5ila5
2024-08-27 19:58:04 +02:00
committed by 5ila5
parent 9497988772
commit b667af0ef6
5 changed files with 558 additions and 1 deletions

View File

@@ -29,6 +29,10 @@ If your service provider is not listed, feel free to open a [source request issu
<details>
<summary>Australia</summary>
- [Adelaide Hills Council](/doc/source/app_my_local_services_au.md) / ahc.sa.gov.au
- [Adelaide Plains Council](/doc/source/app_my_local_services_au.md) / apc.sa.gov.au
- [Alexandrina Council](/doc/source/app_my_local_services_au.md) / alexandrina.sa.gov.au
- [App Backend of My Local Services](/doc/source/app_my_local_services_au.md) / localcouncils.sa.gov.au
- [Armadale (Western Australia)](/doc/source/armadale_wa_gov_au.md) / armadale.wa.gov.au
- [Australian Capital Territory (ACT)](/doc/source/act_gov_au.md) / cityservices.act.gov.au/recycling-and-waste
- [Banyule City Council](/doc/source/banyule_vic_gov_au.md) / banyule.vic.gov.au
@@ -36,21 +40,47 @@ If your service provider is not listed, feel free to open a [source request issu
- [Bayside City Council](/doc/source/impactapps_com_au.md) / bayside.vic.gov.au
- [Bega Valley Shire Council](/doc/source/impactapps_com_au.md) / begavalley.nsw.gov.au
- [Belmont City Council](/doc/source/belmont_wa_gov_au.md) / belmont.wa.gov.au
- [Berri Barmera Council](/doc/source/app_my_local_services_au.md) / berribarmera.sa.gov.au
- [Blacktown City Council (NSW)](/doc/source/blacktown_nsw_gov_au.md) / blacktown.nsw.gov.au
- [Blue Mountains City Council](/doc/source/impactapps_com_au.md) / bmcc.nsw.gov.au
- [Brisbane City Council](/doc/source/brisbane_qld_gov_au.md) / brisbane.qld.gov.au
- [Burwood City Council](/doc/source/impactapps_com_au.md) / burwood.nsw.gov.au
- [Campbelltown City Council](/doc/source/app_my_local_services_au.md) / campbelltown.sa.gov.au
- [Campbelltown City Council (NSW)](/doc/source/campbelltown_nsw_gov_au.md) / campbelltown.nsw.gov.au
- [Cardinia Shire Council](/doc/source/cardinia_vic_gov_au.md) / cardinia.vic.gov.au
- [City of Adelaide](/doc/source/app_my_local_services_au.md) / adelaidecitycouncil.com
- [City of Ballarat](/doc/source/ballarat_vic_gov_au.md) / ballarat.vic.gov.au
- [City of Burnside](/doc/source/app_my_local_services_au.md) / burnside.sa.gov.au
- [City of Canada Bay Council](/doc/source/canadabay_nsw_gov_au.md) / canadabay.nsw.gov.au
- [City of Charles Sturt](/doc/source/app_my_local_services_au.md) / charlessturt.sa.gov.au
- [City of Cockburn](/doc/source/cockburn_wa_gov_au.md) / cockburn.wa.gov.au
- [City of Darebin](/doc/source/darebin_vic_gov_au.md) / darebin.vic.gov.au
- [City of Greater Geelong](/doc/source/geelongaustralia_com_au.md) / geelongaustralia.com.au
- [City of Kingston](/doc/source/kingston_vic_gov_au.md) / kingston.vic.gov.au
- [City of Mitcham](/doc/source/app_my_local_services_au.md) / mitchamcouncil.sa.gov.au
- [City of Mount Gambier](/doc/source/app_my_local_services_au.md) / mountgambier.sa.gov.au
- [City of Norwood Payneham and St Peters](/doc/source/app_my_local_services_au.md) / npsp.sa.gov.au
- [City of Onkaparinga](/doc/source/app_my_local_services_au.md) / onkaparingacity.com
- [City of Onkaparinga Council](/doc/source/onkaparingacity_com.md) / onkaparingacity.com
- [City of Port Adelaide Enfield](/doc/source/app_my_local_services_au.md) / cityofpae.sa.gov.au
- [City of Prospect](/doc/source/app_my_local_services_au.md) / prospect.sa.gov.au
- [City of Salisbury](/doc/source/app_my_local_services_au.md) / salisbury.sa.gov.au
- [City of West Torrens](/doc/source/app_my_local_services_au.md) / westtorrens.sa.gov.au
- [City of Whyalla](/doc/source/app_my_local_services_au.md) / whyalla.sa.gov.au
- [Clare and Gilbert Valleys Council](/doc/source/app_my_local_services_au.md) / claregilbertvalleys.sa.gov.au
- [Coorong District Council](/doc/source/app_my_local_services_au.md) / coorong.sa.gov.au
- [Council of Copper Coast](/doc/source/app_my_local_services_au.md) / coppercoast.sa.gov.au
- [Cowra Council](/doc/source/impactapps_com_au.md) / cowracouncil.com.au
- [Cumberland Council (NSW)](/doc/source/cumberland_nsw_gov_au.md) / cumberland.nsw.gov.au
- [District Council of Barunga West](/doc/source/app_my_local_services_au.md) / barungawest.sa.gov.au
- [District Council of Ceduna](/doc/source/app_my_local_services_au.md) / ceduna.sa.gov.au
- [District Council of Cleve](/doc/source/app_my_local_services_au.md) / cleve.sa.gov.au
- [District Council of Elliston](/doc/source/app_my_local_services_au.md) / elliston.sa.gov.au
- [District Council of Loxton Waikerie](/doc/source/app_my_local_services_au.md) / loxtonwaikerie.sa.gov.au
- [District Council of Mount Barker](/doc/source/app_my_local_services_au.md) / mountbarker.sa.gov.au
- [District Council of Mount Remarkable](/doc/source/app_my_local_services_au.md) / mtr.sa.gov.au
- [District Council of Robe](/doc/source/app_my_local_services_au.md) / robe.sa.gov.au
- [District Council of Streaky Bay](/doc/source/app_my_local_services_au.md) / streakybay.sa.gov.au
- [Forbes Shire Council](/doc/source/impactapps_com_au.md) / forbes.nsw.gov.au
- [Frankston City Council](/doc/source/frankston_vic_gov_au.md) / frankston.gov.au
- [Gold Coast City Council](/doc/source/goldcoast_qld_gov_au.md) / goldcoast.qld.gov.au
@@ -64,6 +94,7 @@ If your service provider is not listed, feel free to open a [source request issu
- [Knox City Council](/doc/source/knox_vic_gov_au.md) / knox.vic.gov.au
- [Ku-ring-gai Council](/doc/source/kuringgai_nsw_gov_au.md) / krg.nsw.gov.au
- [Lake Macquarie City Council](/doc/source/lakemac_nsw_gov_au.md) / lakemac.com.au
- [Light Regional Council](/doc/source/app_my_local_services_au.md) / light.sa.gov.au
- [Lithgow City Council](/doc/source/impactapps_com_au.md) / lithgow.nsw.gov.au
- [Livingstone Shire Council](/doc/source/impactapps_com_au.md) / livingstone.qld.gov.au
- [Loddon Shire Council](/doc/source/impactapps_com_au.md) / loddon.vic.gov.au
@@ -74,37 +105,51 @@ If your service provider is not listed, feel free to open a [source request issu
- [Maroondah City Council](/doc/source/maroondah_vic_gov_au.md) / maroondah.vic.gov.au
- [Melton City Council](/doc/source/melton_vic_gov_au.md) / melton.vic.gov.au
- [Merri-bek City Council](/doc/source/merri_bek_vic_gov_au.md) / merri-bek.vic.gov.au
- [Mid Murray Council](/doc/source/app_my_local_services_au.md) / mid-murray.sa.gov.au
- [Moira Shire Council](/doc/source/impactapps_com_au.md) / moira.vic.gov.au
- [Moree Plains Shire Council](/doc/source/impactapps_com_au.md) / mpsc.nsw.gov.au
- [Moreton Bay](/doc/ics/moretonbay_qld_gov_au.md) / moretonbay.qld.gov.au
- [Mosman Council](/doc/source/mosman_nsw_gov_au.md) / mosman.nsw.gov.au
- [Naracoorte Lucindale Council](/doc/source/app_my_local_services_au.md) / naracoortelucindale.sa.gov.au
- [Nillumbik Shire Council](/doc/source/nillumbik_vic_gov_au.md) / nillumbik.vic.gov.au
- [North Adelaide Waste Management Authority](/doc/source/nawma_sa_gov_au.md) / nawma.sa.gov.au
- [Northern Areas Council](/doc/source/app_my_local_services_au.md) / nacouncil.sa.gov.au/page.aspx
- [Penrith City Council](/doc/source/impactapps_com_au.md) / penrithcity.nsw.gov.au
- [Port Adelaide Enfield, South Australia](/doc/source/portenf_sa_gov_au.md) / ecouncil.portenf.sa.gov.au
- [Port Augusta City Council](/doc/source/app_my_local_services_au.md) / portaugusta.sa.gov.au
- [Port Macquarie Hastings Council](/doc/source/impactapps_com_au.md) / pmhc.nsw.gov.au
- [Port Pirie Regional Council](/doc/source/app_my_local_services_au.md) / pirie.sa.gov.au
- [Port Stephens Council](/doc/source/portstephens_nsw_gov_au.md) / portstephens.nsw.gov.au
- [Queanbeyan-Palerang Regional Council](/doc/source/impactapps_com_au.md) / qprc.nsw.gov.au
- [RecycleSmart](/doc/source/recyclesmart_com.md) / recyclesmart.com
- [Redland City Council (QLD)](/doc/source/redland_qld_gov_au.md) / redland.qld.gov.au
- [Regional Council of Goyder](/doc/source/app_my_local_services_au.md) / goyder.sa.gov.au
- [Renmark Paringa Council](/doc/source/app_my_local_services_au.md) / renmarkparinga.sa.gov.au
- [Rural City of Murray Bridge](/doc/source/app_my_local_services_au.md) / murraybridge.sa.gov.au
- [Shellharbour City Council](/doc/source/shellharbourwaste_com_au.md) / shellharbourwaste.com.au
- [Singleton Council](/doc/source/impactapps_com_au.md) / singleton.nsw.gov.au
- [Snowy Valleys Council](/doc/source/impactapps_com_au.md) / snowyvalleys.nsw.gov.au
- [South Burnett Regional Council](/doc/source/impactapps_com_au.md) / southburnett.qld.gov.au
- [Southern Mallee District Council](/doc/source/app_my_local_services_au.md) / southernmallee.sa.gov.au
- [Stirling](/doc/source/stirling_wa_gov_au.md) / stirling.wa.gov.au
- [Stonnington City Council](/doc/source/stonnington_vic_gov_au.md) / stonnington.vic.gov.au
- [The Flinders Ranges Council](/doc/source/app_my_local_services_au.md) / frc.sa.gov.au/page.aspx
- [The Hawkesbury City Council, Sydney](/doc/source/hawkesbury_nsw_gov_au.md) / hawkesbury.nsw.gov.au
- [The Hills Shire Council, Sydney](/doc/source/thehills_nsw_gov_au.md) / thehills.nsw.gov.au
- [Town of Victoria Park](/doc/source/victoriapark_wa_gov_au.md) / victoriapark.wa.gov.au
- [Town of Walkerville](/doc/source/app_my_local_services_au.md) / walkerville.sa.gov.au
- [Townsville](/doc/source/townsville_qld_gov_au.md) / townsville.qld.gov.au
- [Unley City Council (SA)](/doc/source/unley_sa_gov_au.md) / unley.sa.gov.au
- [Wakefield Regional Council](/doc/source/app_my_local_services_au.md) / wakefieldrc.sa.gov.au
- [Wellington Shire Council](/doc/source/impactapps_com_au.md) / wellington.vic.gov.au
- [Whitehorse City Counfil](/doc/source/whitehorse_vic_gov_au.md) / whitehorse.vic.gov.au
- [Whittlesea City Council](/doc/source/whittlesea_vic_gov_au.md) / whittlesea.vic.gov.au/My-Neighbourhood
- [Wollondilly Shire Council](/doc/source/wollondilly_nsw_gov_au.md) / wollondilly.nsw.gov.au
- [Wollongong City Council](/doc/source/wollongongwaste_com_au.md) / wollongongwaste.com
- [Wyndham City Council, Melbourne](/doc/source/wyndham_vic_gov_au.md) / wyndham.vic.gov.au
- [Yankalilla District Council](/doc/source/app_my_local_services_au.md) / yankalilla.sa.gov.au
- [Yarra Ranges Council](/doc/source/yarra_ranges_vic_gov_au.md) / yarraranges.vic.gov.au
- [Yorke Peninsula Council](/doc/source/app_my_local_services_au.md) / yorke.sa.gov.au
</details>
<details>

View File

@@ -1,5 +1,25 @@
{
"Australia": [
{
"title": "Adelaide Hills Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Adelaide Plains Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Alexandrina Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "App Backend of My Local Services",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Armadale (Western Australia)",
"module": "armadale_wa_gov_au",
@@ -41,6 +61,11 @@
"module": "belmont_wa_gov_au",
"default_params": {}
},
{
"title": "Berri Barmera Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Blacktown City Council (NSW)",
"module": "blacktown_nsw_gov_au",
@@ -65,6 +90,11 @@
"service": "Burwood City Council"
}
},
{
"title": "Campbelltown City Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Campbelltown City Council (NSW)",
"module": "campbelltown_nsw_gov_au",
@@ -75,16 +105,31 @@
"module": "cardinia_vic_gov_au",
"default_params": {}
},
{
"title": "City of Adelaide",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "City of Ballarat",
"module": "ballarat_vic_gov_au",
"default_params": {}
},
{
"title": "City of Burnside",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "City of Canada Bay Council",
"module": "canadabay_nsw_gov_au",
"default_params": {}
},
{
"title": "City of Charles Sturt",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "City of Cockburn",
"module": "cockburn_wa_gov_au",
@@ -105,11 +150,71 @@
"module": "kingston_vic_gov_au",
"default_params": {}
},
{
"title": "City of Mitcham",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "City of Mount Gambier",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "City of Norwood Payneham and St Peters",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "City of Onkaparinga",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "City of Onkaparinga Council",
"module": "onkaparingacity_com",
"default_params": {}
},
{
"title": "City of Port Adelaide Enfield",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "City of Prospect",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "City of Salisbury",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "City of West Torrens",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "City of Whyalla",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Clare and Gilbert Valleys Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Coorong District Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Council of Copper Coast",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Cowra Council",
"module": "impactapps_com_au",
@@ -122,6 +227,51 @@
"module": "cumberland_nsw_gov_au",
"default_params": {}
},
{
"title": "District Council of Barunga West",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "District Council of Ceduna",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "District Council of Cleve",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "District Council of Elliston",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "District Council of Loxton Waikerie",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "District Council of Mount Barker",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "District Council of Mount Remarkable",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "District Council of Robe",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "District Council of Streaky Bay",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Forbes Shire Council",
"module": "impactapps_com_au",
@@ -191,6 +341,11 @@
"module": "lakemac_nsw_gov_au",
"default_params": {}
},
{
"title": "Light Regional Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Lithgow City Council",
"module": "impactapps_com_au",
@@ -247,6 +402,11 @@
"module": "merri_bek_vic_gov_au",
"default_params": {}
},
{
"title": "Mid Murray Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Moira Shire Council",
"module": "impactapps_com_au",
@@ -271,6 +431,11 @@
"module": "mosman_nsw_gov_au",
"default_params": {}
},
{
"title": "Naracoorte Lucindale Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Nillumbik Shire Council",
"module": "nillumbik_vic_gov_au",
@@ -281,6 +446,11 @@
"module": "nawma_sa_gov_au",
"default_params": {}
},
{
"title": "Northern Areas Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Penrith City Council",
"module": "impactapps_com_au",
@@ -293,6 +463,11 @@
"module": "portenf_sa_gov_au",
"default_params": {}
},
{
"title": "Port Augusta City Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Port Macquarie Hastings Council",
"module": "impactapps_com_au",
@@ -300,6 +475,11 @@
"service": "Port Macquarie Hastings Council"
}
},
{
"title": "Port Pirie Regional Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Port Stephens Council",
"module": "portstephens_nsw_gov_au",
@@ -322,6 +502,21 @@
"module": "redland_qld_gov_au",
"default_params": {}
},
{
"title": "Regional Council of Goyder",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Renmark Paringa Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Rural City of Murray Bridge",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Shellharbour City Council",
"module": "shellharbourwaste_com_au",
@@ -348,6 +543,11 @@
"service": "South Burnett Regional Council"
}
},
{
"title": "Southern Mallee District Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Stirling",
"module": "stirling_wa_gov_au",
@@ -358,6 +558,11 @@
"module": "stonnington_vic_gov_au",
"default_params": {}
},
{
"title": "The Flinders Ranges Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "The Hawkesbury City Council, Sydney",
"module": "hawkesbury_nsw_gov_au",
@@ -373,6 +578,11 @@
"module": "victoriapark_wa_gov_au",
"default_params": {}
},
{
"title": "Town of Walkerville",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Townsville",
"module": "townsville_qld_gov_au",
@@ -383,6 +593,11 @@
"module": "unley_sa_gov_au",
"default_params": {}
},
{
"title": "Wakefield Regional Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Wellington Shire Council",
"module": "impactapps_com_au",
@@ -415,10 +630,20 @@
"module": "wyndham_vic_gov_au",
"default_params": {}
},
{
"title": "Yankalilla District Council",
"module": "app_my_local_services_au",
"default_params": {}
},
{
"title": "Yarra Ranges Council",
"module": "yarra_ranges_vic_gov_au",
"default_params": {}
},
{
"title": "Yorke Peninsula Council",
"module": "app_my_local_services_au",
"default_params": {}
}
],
"Austria": [

View File

@@ -0,0 +1,199 @@
from datetime import datetime, timedelta
import requests
from dateutil.rrule import WEEKLY, rrule, weekday
from waste_collection_schedule import Collection # type: ignore[attr-defined]
TITLE = "App Backend of My Local Services"
DESCRIPTION = "Source for App Backend of My Local Services."
URL = "https://www.localcouncils.sa.gov.au"
TEST_CASES = {
"35 Laurel Terrace; Robe SA 5276; Australia": {
"lat": "-37.1647585",
"lon": "139.7851318",
},
"18 Graeber Road, Lobethal SA 5241": {
"lat": "-34.916506399999996",
"lon": "138.8820226",
},
"25 Wyatt St, Mount Gambier SA 5290, Australia": {
"lat": "-37.824624961239614",
"lon": "140.77720893956482",
},
}
EXTRA_INFO = [ # list from https://www.localcouncils.sa.gov.au/my-local-services-app#accordion__target-1426969-2
{"url": "http://www.adelaidecitycouncil.com", "title": "City of Adelaide"},
{"url": "https://www.ahc.sa.gov.au", "title": "Adelaide Hills Council"},
{"url": "http://www.apc.sa.gov.au", "title": "Adelaide Plains Council"},
{"url": "http://www.alexandrina.sa.gov.au", "title": "Alexandrina Council"},
{"url": "http://www.berribarmera.sa.gov.au", "title": "Berri Barmera Council"},
{"url": "http://www.campbelltown.sa.gov.au", "title": "Campbelltown City Council"},
{"url": "http://www.burnside.sa.gov.au", "title": "City of Burnside"},
{"url": "http://www.charlessturt.sa.gov.au", "title": "City of Charles Sturt"},
{"url": "http://www.mountgambier.sa.gov.au", "title": "City of Mount Gambier"},
{"url": "http://www.mitchamcouncil.sa.gov.au", "title": "City of Mitcham"},
{
"url": "https://www.npsp.sa.gov.au",
"title": "City of Norwood Payneham and St Peters",
},
{"url": "http://www.onkaparingacity.com", "title": "City of Onkaparinga"},
{
"url": "https://www.cityofpae.sa.gov.au",
"title": "City of Port Adelaide Enfield",
},
{"url": "http://www.prospect.sa.gov.au", "title": "City of Prospect"},
{"url": "http://www.salisbury.sa.gov.au", "title": "City of Salisbury"},
{"url": "http://www.westtorrens.sa.gov.au", "title": "City of West Torrens"},
{"url": "http://www.whyalla.sa.gov.au", "title": "City of Whyalla"},
{
"url": "http://www.claregilbertvalleys.sa.gov.au",
"title": "Clare and Gilbert Valleys Council",
},
{"url": "http://www.coorong.sa.gov.au", "title": "Coorong District Council"},
{
"url": "http://www.barungawest.sa.gov.au",
"title": "District Council of Barunga West",
},
{"url": "http://www.cleve.sa.gov.au", "title": "District Council of Cleve"},
{"url": "http://www.coppercoast.sa.gov.au", "title": "Council of Copper Coast"},
{"url": "http://www.ceduna.sa.gov.au", "title": "District Council of Ceduna"},
{"url": "http://www.elliston.sa.gov.au", "title": "District Council of Elliston"},
{
"url": "http://www.loxtonwaikerie.sa.gov.au",
"title": "District Council of Loxton Waikerie",
},
{
"url": "https://www.mountbarker.sa.gov.au",
"title": "District Council of Mount Barker",
},
{
"url": "https://www.mtr.sa.gov.au",
"title": "District Council of Mount Remarkable",
},
{"url": "https://www.robe.sa.gov.au", "title": "District Council of Robe"},
{
"url": "http://www.streakybay.sa.gov.au",
"title": "District Council of Streaky Bay",
},
{"url": "http://www.light.sa.gov.au", "title": "Light Regional Council"},
{"url": "http://www.mid-murray.sa.gov.au", "title": "Mid Murray Council"},
{
"url": "http://www.naracoortelucindale.sa.gov.au",
"title": "Naracoorte Lucindale Council",
},
{
"url": "https://www.nacouncil.sa.gov.au/page.aspx",
"title": "Northern Areas Council",
},
{"url": "http://www.portaugusta.sa.gov.au", "title": "Port Augusta City Council"},
{"url": "http://www.pirie.sa.gov.au", "title": "Port Pirie Regional Council"},
{"url": "http://www.goyder.sa.gov.au", "title": "Regional Council of Goyder"},
{"url": "http://www.renmarkparinga.sa.gov.au", "title": "Renmark Paringa Council"},
{
"url": "http://www.murraybridge.sa.gov.au",
"title": "Rural City of Murray Bridge",
},
{
"url": "http://www.southernmallee.sa.gov.au",
"title": "Southern Mallee District Council",
},
{
"url": "http://www.frc.sa.gov.au/page.aspx",
"title": "The Flinders Ranges Council",
},
{"url": "http://www.walkerville.sa.gov.au", "title": "Town of Walkerville"},
{"url": "http://www.wakefieldrc.sa.gov.au", "title": "Wakefield Regional Council"},
{"url": "http://www.yankalilla.sa.gov.au", "title": "Yankalilla District Council"},
{"url": "http://yorke.sa.gov.au", "title": "Yorke Peninsula Council"},
]
COUNTRY = "au"
ICON_MAP = {
"Trash": "mdi:trash-can",
"Glass": "mdi:bottle-soda",
"Bio": "mdi:leaf",
"Paper": "mdi:package-variant",
"Recycle": "mdi:recycle",
}
API_URL = "https://services1.arcgis.com/37apdbovSVEwr4YE/ArcGIS/rest/services/MyLocalServices/FeatureServer/{endpoint}/query?f=pjson&geometry=%7B%22x%22:{lon},%22y%22:{lat},%22spatialReference%22:%7B%22wkid%22:4326%7D%7D&geometryType=esriGeometryPoint&inSR=4326&outFields=Waste_Type,Col_Day,Col_Freq,Colour,Col_Offset,Alternate,Exclusion,Additional&returnCountOnly=false&returnGeometry=false&returnIdsOnly=false&spatialRel=esriSpatialRelIntersects"
ENDPOINTS = (0, 1, 2, 4)
class Source:
def __init__(self, lat: float, lon: float):
if not isinstance(lat, float):
try:
lat = float(lat)
except ValueError:
raise ValueError("Latitude must be a float")
if not isinstance(lon, float):
try:
lon = float(lon)
except ValueError:
raise ValueError("Longitude must be a float")
self._lat: float = lat
self._lon: float = lon
def fetch(self) -> list[Collection]:
# get json file
entries = []
for endpoint in ENDPOINTS:
r = requests.get(
API_URL.format(endpoint=endpoint, lat=self._lat, lon=self._lon)
)
r.raise_for_status()
for features in r.json()["features"]:
data = features["attributes"]
exclusions_str: str | None = data["Exclusion"]
additionals_str: str | None = data["Additional"]
waste_type: str = data["Waste_Type"]
weekday_int: int = (
data["Col_Day"] + -2
) % 7 # Normalise to 0(monday)-6(sunday) as response is 1(sunday)-7(saturday)
freq: int = data["Col_Freq"]
offset: int = data["Col_Offset"]
start = datetime.now().replace(
month=1, day=1, hour=0, minute=0, second=0, microsecond=0
).date() + timedelta(weeks=offset)
end = datetime.now().replace(
hour=0, minute=0, second=0, microsecond=0
).date() + timedelta(days=365)
dates = [
d.date()
for d in rrule(
WEEKLY,
byweekday=weekday(weekday_int),
interval=freq,
dtstart=start,
until=end,
)
]
if additionals_str:
for additional_str in additionals_str.split(", "):
dates.append(
datetime.strptime(additional_str, "%Y-%m-%d").date()
)
if exclusions_str:
for exclusion_str in exclusions_str.split(", "):
try:
dates.remove(
datetime.strptime(exclusion_str, "%Y-%m-%d").date()
)
except ValueError:
print("Exclusion date not found in dates", exclusion_str)
icon = ICON_MAP.get(waste_type.upper()) # Collection icon
for d in dates:
entries.append(Collection(date=d, t=waste_type, icon=icon))
return entries

View File

@@ -0,0 +1,88 @@
# App Backend of My Local Services
Support for schedules provided by [App Backend of My Local Services](https://www.localcouncils.sa.gov.au), serving App Backend of My Local Services, Australia.
## Configuration via configuration.yaml
```yaml
waste_collection_schedule:
sources:
- name: app_my_local_services_au
args:
lat: LATITUDE
lon: LONGITUDE
```
### Configuration Variables
**lat**
*(String) (required)*
**lon**
*(String) (required)*
## Example
```yaml
waste_collection_schedule:
sources:
- name: app_my_local_services_au
args:
lat: -34.916506399999996
lon: 138.8820226
```
## Supported Councils
The Website says that the following councils are supported, but we did not test all of them. If you find that your council is not supported, please open an issue.
- City of Adelaide
- Adelaide Hills Council
- Adelaide Plains Council
- Alexandrina Council
- Berri Barmera Council
- Campbelltown City Council
- City of Burnside
- City of Charles Sturt
- City of Mount Gambier
- City of Mitcham
- City of Norwood Payneham and St Peters
- City of Onkaparinga
- City of Port Adelaide Enfield
- City of Prospect
- City of Salisbury
- City of West Torrens
- City of Whyalla
- Clare and Gilbert Valleys Council
- Coorong District Council
- District Council of Barunga West
- District Council of Cleve
- Council of Copper Coast
- District Council of Ceduna
- District Council of Elliston
- District Council of Loxton Waikerie
- District Council of Mount Barker
- District Council of Mount Remarkable
- District Council of Robe
- District Council of Streaky Bay
- Light Regional Council
- Mid Murray Council
- Naracoorte Lucindale Council
- Northern Areas Council
- Port Augusta City Council
- Port Pirie Regional Council
- Regional Council of Goyder
- Renmark Paringa Council
- Rural City of Murray Bridge
- Southern Mallee District Council
- The Flinders Ranges Council
- Town of Walkerville
- Wakefield Regional Council
- Yankalilla District Council
- Yorke Peninsula Council
## How to get the source argument
Find the latitude and longitude of your address using [Google Maps](https://www.google.com/maps) or any other maps service. It should be as accurate as possible(many decimal places) to get the correct schedule.

File diff suppressed because one or more lines are too long