mirror of
https://github.com/sascha-hemi/hacs_waste_collection_schedule.git
synced 2026-03-21 04:06:03 +01:00
Added support for Wollongong, Australia
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
import json
|
||||
from datetime import datetime, date, timedelta
|
||||
|
||||
import requests
|
||||
from waste_collection_schedule import Collection
|
||||
|
||||
TITLE = "Wollongong Council"
|
||||
DESCRIPTION = "Source script for wollongongwaste.com.au"
|
||||
URL = "https://wollongongwaste.com"
|
||||
COUNTRY = "au"
|
||||
TEST_CASES = {
|
||||
"TestName1": {"propertyID": "21444"}
|
||||
}
|
||||
|
||||
API_URL = "https://wollongong.waste-info.com.au/api/v1/properties/"
|
||||
|
||||
|
||||
def day_of_week(start_date, end_date, day_of_week_index):
|
||||
day_of_week_dates = []
|
||||
while start_date <= end_date:
|
||||
if start_date.weekday() == day_of_week_index:
|
||||
day_of_week_dates.append(start_date)
|
||||
start_date += timedelta(days=1)
|
||||
return day_of_week_dates
|
||||
|
||||
class Source:
|
||||
def __init__(self,propertyID):
|
||||
self._propertyID = propertyID
|
||||
self._url = API_URL
|
||||
|
||||
def fetch(self):
|
||||
# Have to specify a start and end, or the API returns nothing. So lets request this year, and next year.
|
||||
# start=2022-12-31T13:00:00.000Z&end=2024-12-30T13:00:00.000Z
|
||||
startdate = datetime(date.today().year-1, 12, 31, 13, 0, 0)
|
||||
enddate = datetime(date.today().year+1, 12, 31, 13, 0, 0)
|
||||
|
||||
data = {
|
||||
"start": startdate.strftime("%Y-%m-%dT%H:%M:%S.%fZ"),
|
||||
"end": enddate.strftime("%Y-%m-%dT%H:%M:%S.%fZ")
|
||||
}
|
||||
|
||||
r = requests.get(f"{self._url}{self._propertyID}.json", data=data)
|
||||
d = r.json()
|
||||
|
||||
entries = []
|
||||
for entry in d:
|
||||
if entry['event_type'] == "waste":
|
||||
dow = entry['daysOfWeek']
|
||||
for day in dow:
|
||||
for pickupdate in day_of_week(startdate, enddate, day-1):
|
||||
entries.append(
|
||||
Collection(
|
||||
date=pickupdate.date(),
|
||||
t="Waste to Landfill (Red)",
|
||||
icon = "mdi:trash-can"
|
||||
)
|
||||
)
|
||||
if entry['event_type'] == "organic":
|
||||
dow = entry['daysOfWeek']
|
||||
for day in dow:
|
||||
for pickupdate in day_of_week(startdate, enddate, day-1):
|
||||
print(pickupdate)
|
||||
entries.append(
|
||||
Collection(
|
||||
date=pickupdate.date(),
|
||||
t="FOGO (Green)",
|
||||
icon = "mdi:leaf",
|
||||
)
|
||||
)
|
||||
if entry['event_type'] == "recycle":
|
||||
entries.append(
|
||||
Collection(
|
||||
date=date(*map(int, entry['start'].split('-'))),
|
||||
t="Recycling (Yelllow)",
|
||||
icon="mdi:recycle"
|
||||
)
|
||||
)
|
||||
return entries
|
||||
|
||||
55
doc/source/wollongongwaste_com_au.md
Normal file
55
doc/source/wollongongwaste_com_au.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# Wollongong City Council
|
||||
|
||||
Support for schedules provided by [Wollongong Waste](https://www.wollongongwaste.com.au/), serving Wollongong Council in the Illawara, New South Wales, Australia
|
||||
|
||||
## Configuration via configuration.yaml
|
||||
|
||||
```yaml
|
||||
waste_collection_schedule:
|
||||
sources:
|
||||
- name: wollongongwaste_com_au
|
||||
args:
|
||||
propertyID: UNIQUE_PROPERTY_ID
|
||||
```
|
||||
|
||||
### Configuration Variables
|
||||
|
||||
### Configuration Variables
|
||||
|
||||
**propertyID**<br>
|
||||
*(string) (mandatory)*
|
||||
|
||||
This is required.
|
||||
|
||||
|
||||
#### How to find your `propertyID`
|
||||
|
||||
Get your locality.
|
||||
|
||||
https://wollongong.waste-info.com.au/api/v1/localities.json
|
||||
get the locality ID from the above json.
|
||||
|
||||
Add it as locality=<id> to the Street query
|
||||
eg: https://wollongong.waste-info.com.au/api/v1/streets.json?locality=19
|
||||
Get the street ID from the above json
|
||||
|
||||
Add it as street=<id> to the property query
|
||||
eg: https://wollongong.waste-info.com.au/api/v1/properties.json?street=663
|
||||
get the property ID from the above json.
|
||||
|
||||
This is your propertyID
|
||||
|
||||
This is all you need to directly query your calendar json in future, you can skip all the above steps once you know your property ID
|
||||
|
||||
You could also use [Waste Calendar](https://www.wollongongwaste.com.au/calendar/) with developer tools open on the Network tab, look up your address, and make note of the filename in the last request. It will be in the format <propertyID>.json
|
||||
eg: https://wollongong.waste-info.com.au/api/v1/properties/21444.json?start=2022-12-31T13:00:00.000Z&end=2023-12-30T13:00:00.000Z
|
||||
|
||||
|
||||
## Example using UPRN
|
||||
```yaml
|
||||
waste_collection_schedule:
|
||||
sources:
|
||||
- name: wollongongwaste_com_au
|
||||
args:
|
||||
uprn: 21444
|
||||
```
|
||||
Reference in New Issue
Block a user