mirror of
https://github.com/sascha-hemi/hacs_waste_collection_schedule.git
synced 2026-03-21 04:06:03 +01:00
add merri_bek_vic_gov_au source
* Add Merri-bek City Council, Australia Add source for Merri-bek City Council, Australia via API. - Add doc/source/merri_bek_vic_gov_au.md - Add source/merri_bek_vic_gov_au.py - Update README.md - Update info.md
This commit is contained in:
@@ -52,6 +52,7 @@ Waste collection schedules in the following formats and countries are supported.
|
|||||||
- [Maribyrnong Council](/doc/source/maribyrnong_vic_gov_au.md) / maribyrnong.vic.gov.au/Residents/Bins-and-recycling
|
- [Maribyrnong Council](/doc/source/maribyrnong_vic_gov_au.md) / maribyrnong.vic.gov.au/Residents/Bins-and-recycling
|
||||||
- [Maroondah City Council](/doc/source/maroondah_vic_gov_au.md) / maroondah.vic.gov.au
|
- [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
|
- [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
|
||||||
- [Moreton Bay](/doc/ics/moretonbay_qld_gov_au.md) / moretonbay.qld.gov.au
|
- [Moreton Bay](/doc/ics/moretonbay_qld_gov_au.md) / moretonbay.qld.gov.au
|
||||||
- [Nillumbik Shire Council](/doc/source/nillumbik_vic_gov_au.md) / nillumbik.vic.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
|
- [North Adelaide Waste Management Authority](/doc/source/nawma_sa_gov_au.md) / nawma.sa.gov.au
|
||||||
|
|||||||
@@ -0,0 +1,102 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
import requests
|
||||||
|
from waste_collection_schedule import Collection # type: ignore[attr-defined]
|
||||||
|
|
||||||
|
TITLE = "Merri-bek City Council"
|
||||||
|
DESCRIPTION = "Source for Merri-bek City Council (VIC) rubbish collection."
|
||||||
|
URL = "https://www.merri-bek.vic.gov.au"
|
||||||
|
|
||||||
|
TEST_CASES = {
|
||||||
|
"Monday": {
|
||||||
|
"address": "1 Widford Street Glenroy 3046",
|
||||||
|
},
|
||||||
|
"Tuesday": {
|
||||||
|
"address": "1 Gaffney Street Coburg 3058",
|
||||||
|
},
|
||||||
|
"Wednesday": {
|
||||||
|
"address": "1 Shorts Road Coburg North 3058",
|
||||||
|
},
|
||||||
|
"Thursday": {
|
||||||
|
"address": "1 Glenroy Road Glenroy 3046",
|
||||||
|
},
|
||||||
|
"Friday": {
|
||||||
|
"address": "1 Major Road Fawkner 3060",
|
||||||
|
},
|
||||||
|
"Glass Drop Off": {
|
||||||
|
"address": "1 Elesbury Avenue Brunswick East 3057",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
ICON_MAP = {
|
||||||
|
"Rubbish": "mdi:trash-can",
|
||||||
|
"Recycling": "mdi:recycle",
|
||||||
|
"Glass": "mdi:glass-fragile",
|
||||||
|
"Green": "mdi:leaf",
|
||||||
|
}
|
||||||
|
|
||||||
|
COLLECTIONS = {
|
||||||
|
"AllBinDays": ["Rubbish", "Green"],
|
||||||
|
"AllGlassDays": ["Glass"],
|
||||||
|
"AllRecycleDays": ["Recycling"],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class Source:
|
||||||
|
def __init__(self, address):
|
||||||
|
self.address = address
|
||||||
|
|
||||||
|
def fetch(self):
|
||||||
|
PARAMS = {
|
||||||
|
"where": f"EZI_Address LIKE '{self.address}%'",
|
||||||
|
"outFields": "EZI_Address,Waste_Rate_Code,Recycling_Rate_Code,FOGO_Rate_Code,Glass_Rate_Code,Day,Zone,GlassWeek",
|
||||||
|
"returnGeometry": "true",
|
||||||
|
"f": "json",
|
||||||
|
}
|
||||||
|
url = "https://services6.arcgis.com/8L5sOwfzTAvcvQur/ArcGIS/rest/services/WasteServices4Bin/FeatureServer/0/query/"
|
||||||
|
r = requests.get(
|
||||||
|
url,
|
||||||
|
params=PARAMS,
|
||||||
|
)
|
||||||
|
r.raise_for_status()
|
||||||
|
|
||||||
|
data = r.json()
|
||||||
|
features = data.get("features")
|
||||||
|
if not features:
|
||||||
|
raise Exception("address not found")
|
||||||
|
|
||||||
|
attributes = features[0]["attributes"]
|
||||||
|
|
||||||
|
PARAMS = {
|
||||||
|
"wasteDay": attributes["Day"],
|
||||||
|
"wasteRateCode": attributes["Waste_Rate_Code"],
|
||||||
|
"recycleRateCode": attributes["Recycling_Rate_Code"],
|
||||||
|
"fogoRateCode": attributes["FOGO_Rate_Code"],
|
||||||
|
"glassRateCode": attributes["Glass_Rate_Code"],
|
||||||
|
"zone": attributes["Zone"],
|
||||||
|
"glassWeekNumber": attributes["GlassWeek"],
|
||||||
|
"address": attributes["EZI_Address"],
|
||||||
|
"cpage": "94106",
|
||||||
|
}
|
||||||
|
url = "https://www.merri-bek.vic.gov.au/gis/AddressDetails.svc/fourbins/"
|
||||||
|
r = requests.get(
|
||||||
|
url,
|
||||||
|
params=PARAMS,
|
||||||
|
)
|
||||||
|
r.raise_for_status()
|
||||||
|
|
||||||
|
data = r.json()[0]
|
||||||
|
|
||||||
|
entries = [
|
||||||
|
Collection(
|
||||||
|
date=datetime.strptime(collection_date, "%d-%m-%Y").date(),
|
||||||
|
t=waste_name,
|
||||||
|
icon=ICON_MAP.get(waste_name),
|
||||||
|
)
|
||||||
|
for collection_name, waste_names in COLLECTIONS.items()
|
||||||
|
if collection_name in data
|
||||||
|
for collection_date in data[collection_name]
|
||||||
|
for waste_name in waste_names
|
||||||
|
]
|
||||||
|
|
||||||
|
return entries
|
||||||
32
doc/source/merri_bek_vic_gov_au.md
Normal file
32
doc/source/merri_bek_vic_gov_au.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Merri-bek City Council (VIC)
|
||||||
|
|
||||||
|
Support for schedules provided by [Merri-bek City Council (VIC)](https://www.merri-bek.vic.gov.au/living-in-merri-bek/waste-and-recycling/bins-and-collection-services/).
|
||||||
|
|
||||||
|
## Configuration via configuration.yaml
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
waste_collection_schedule:
|
||||||
|
sources:
|
||||||
|
- name: merri_bek_vic_gov_au
|
||||||
|
args:
|
||||||
|
address: address
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuration Variables
|
||||||
|
|
||||||
|
**address**
|
||||||
|
*(String) (required)*
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
waste_collection_schedule:
|
||||||
|
sources:
|
||||||
|
- name: merri_bek_vic_gov_au
|
||||||
|
args:
|
||||||
|
address: 90 Bell Street Coburg 3058
|
||||||
|
```
|
||||||
|
|
||||||
|
## How to get the source arguments
|
||||||
|
|
||||||
|
Search your address on [Merri-bek City Council's Website](https://www.merri-bek.vic.gov.au/living-in-merri-bek/waste-and-recycling/bins-and-collection-services/) to ensure you use the correct address format. Start typing the full address and the use autocomplete to search. After results have been found, copy the address exactly as it appears in the search box.
|
||||||
Reference in New Issue
Block a user