Added City of Ryde, Australia (#2579)

* New source - City of Ryde, uses same API as Campbelltown, with City of Ryde URL prepended

* Updated source and added doc

* Added City of Ryde to sources

* Removed hardcoded 'NSW' from query to fix API lookup

* Added City of Ryde

* Updated per PR #2579 comments
* Used requests for param encoding
* Added exception for address lookup failure

* reformatting + ./update_docu_links.py

---------

Co-authored-by: 5ila5 <5ila5@users.noreply.github.com>
This commit is contained in:
harrytheeskimo
2024-08-31 22:15:29 +10:00
committed by GitHub
parent db91e6464b
commit 5abe9feb22
5 changed files with 192 additions and 1 deletions

View File

@@ -0,0 +1,61 @@
# City of Ryde (NSW)
Support for schedules provided by [City of Ryde](https://www.ryde.nsw.gov.au/Environment-and-Waste/Waste-and-Recycling).
## Configuration via configuration.yaml
```yaml
waste_collection_schedule:
sources:
- name: ryde_nsw_gov_au
args:
post_code: POST_CODE
suburb: SUBURB
street_name: STREET_NAME
street_number: STREET_NUMBER
```
### Configuration Variables
**post_code**
*(string) (required)*
**suburb**
*(string) (required)*
**street_name**
*(string) (required)*
**street_number**
*(string) (required)*
## Example
```yaml
waste_collection_schedule:
sources:
- name: ryde_nsw_gov_au
args:
post_code: 2112
suburb: Ryde
street_name: Victoria Road
street_number: 504
```
## How to get the source arguments
Visit the [City of Ryde Waste and Recycling](https://www.ryde.nsw.gov.au/Environment-and-Waste/Waste-and-Recycling) page, follow the quick link to *Check my collection day*, and search for your address. The street address arguments used to configure hacs_waste_collection_schedule should exactly match the street address shown in the autocomplete result.
## How this integration uses City of Ryde's APIs
Two API calls are currently needed to retrieve waste collection schedule results from Campbelltown Council:
1. The address search API at https://www.ryde.nsw.gov.au/api/v1/myarea/search
2. The waste services API at https://www.ryde.nsw.gov.au/ocapi/Public/myarea/wasteservices
This integration does the following:
1. Calls the address search API to retrieve the "location ID" for the given location. Eg. https://www.ryde.nsw.gov.au/api/v1/myarea/search?keywords=504+Victoria+Road%2C+Ryde
2. Retrieves waste/collection info from the waste services API using the "location ID" retrieved in step #1. Eg. https://www.ryde.nsw.gov.au/ocapi/Public/myarea/wasteservices?geolocationid=619ef4ca-45e2-4866-a55b-165e6d563943&ocsvclang=en-AU
3. Parses the HTML returned by the waste services API in step #2 to extract the data
# Similarities with other sources
For future work it's good to note that City of Ryde uses the same APIs as Campbelltown City Council & Blacktown City Council, to the point I was able to copy and paste their files with minimal modification.