Skip to content

Commit

Permalink
refactor wollongongwaste_com_au
Browse files Browse the repository at this point in the history
  • Loading branch information
mampfes committed Feb 4, 2023
1 parent 006359c commit 8eb1101
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 58 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import json
from datetime import datetime, date, timedelta
from datetime import date, datetime, timedelta

import requests
from waste_collection_schedule import Collection
Expand All @@ -8,12 +7,16 @@
DESCRIPTION = "Source script for wollongongwaste.com.au"
URL = "https://wollongongwaste.com"
COUNTRY = "au"
TEST_CASES = {
"TestName1": {"propertyID": "21444"}
}
TEST_CASES = {"TestName1": {"propertyID": "21444"}}

API_URL = "https://wollongong.waste-info.com.au/api/v1/properties/"

ICON_MAP = {
"waste": "mdi:trash-can",
"organic": "mdi:leaf",
"recycle": "mdi:recycle",
}


def day_of_week(start_date, end_date, day_of_week_index):
day_of_week_dates = []
Expand All @@ -23,57 +26,45 @@ def day_of_week(start_date, end_date, day_of_week_index):
start_date += timedelta(days=1)
return day_of_week_dates


class Source:
def __init__(self,propertyID):
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)
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")
"end": enddate.strftime("%Y-%m-%dT%H:%M:%S.%fZ"),
}

r = requests.get(f"{self._url}{self._propertyID}.json", data=data)
r = requests.get(f"{API_URL}{self._propertyID}.json", data=data)
r.raise_for_status()
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)
waste_type = entry["event_type"]
if waste_type in ("waste", "organic"):
for day in entry["daysOfWeek"]:
for pickupdate in day_of_week(startdate, enddate, day - 1):
entries.append(
Collection(
date=pickupdate.date(),
t="FOGO (Green)",
icon = "mdi:leaf",
t=waste_type,
icon=ICON_MAP.get(waste_type),
)
)
if entry['event_type'] == "recycle":
if waste_type in ("recycle"):
entries.append(
Collection(
date=date(*map(int, entry['start'].split('-'))),
t="Recycling (Yelllow)",
icon="mdi:recycle"
date=date(*map(int, entry["start"].split("-"))),
t=waste_type,
icon=ICON_MAP.get(waste_type),
)
)
return entries

40 changes: 16 additions & 24 deletions doc/source/wollongongwaste_com_au.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,42 +14,34 @@ waste_collection_schedule:
### Configuration Variables
### Configuration Variables
**propertyID**<br>
**propertyID**
*(string) (mandatory)*
This is required.
#### How to find your `propertyID`
### How to find your propertyID
Get your locality.
Go to <https://wollongong.waste-info.com.au/api/v1/localities.json>
amd get the locality ID from the above json.
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,
e.g.: <https://wollongong.waste-info.com.au/api/v1/streets.json?locality=19>
Get the street 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.
Add it as `street=<id>` to the property query,
e.g.: <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
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`, e.g.: <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

## Example using UPRN
```yaml
waste_collection_schedule:
sources:
- name: wollongongwaste_com_au
args:
uprn: 21444
sources:
- name: wollongongwaste_com_au
args:
propertyID: 21444
```

0 comments on commit 8eb1101

Please sign in to comment.