A Python 3, asyncio-based library for the ReCollect Waste API
Project description
🗑 aiorecollect: A Python 3 Library for Pinboard
aiorecollect is a Python 3, asyncio-based library for the ReCollect Waste API. It allows
users to programmatically retrieve schedules for waste removal in their area, including
trash, recycling, compost, and more.
Special thanks to @stealthhacker for the inspiration!
Installation
pip install aiorecollect
Python Versions
aiorecollect is currently supported on:
- Python 3.10
- Python 3.11
- Python 3.12
Place and Service IDs
To use aiorecollect, you must know both your ReCollect Place and Service IDs.
In general, cities/municipalities that utilize ReCollect will give you a way to subscribe to a calendar with pickup dates. If you examine the iCal URL for this calendar, the Place and Service IDs are embedded in it:
webcal://recollect.a.ssl.fastly.net/api/places/PLACE_ID/services/SERVICE_ID/events.en-US.ics
Usage
import asyncio
from datetime import date
from aiorecollect import Client
async def main() -> None:
"""Run."""
client = await Client("<PLACE ID>", "<SERVICE ID>")
# The client has a few attributes that you can access:
client.place_id
client.service_id
# Get all pickup events on the calendar:
pickup_events = await client.async_get_pickup_events()
# ...or get all pickup events within a certain date range:
pickup_events = await client.async_get_pickup_events(
start_date=date(2020, 10, 1), end_date=date(2020, 10, 31)
)
# ...or just get the next pickup event:
next_pickup = await client.async_get_next_pickup_event()
asyncio.run(main())
The PickupEvent Object
The PickupEvent object that is returned from the above calls comes with three
properties:
date: adatetime.datethat denotes the pickup datepickup_types: a list ofPickupTypeobjects that will occur with this eventarea_name: the name of the area in which the event is occurring
The PickupType Object
The PickupType object contains the "internal" name of the pickup type and a
human-friendly representation when it exists:
name: the internal name of the pickup typefriendly_name: the humany-friendly name of the pickup type (if it exists)
Connection Pooling
By default, the library creates a new connection to ReCollect with each coroutine. If
you are calling a large number of coroutines (or merely want to squeeze out every second
of runtime savings possible), an aiohttp ClientSession can be used for
connection pooling:
import asyncio
from aiohttp import ClientSession
from aiorecollect import Client
async def main() -> None:
"""Run."""
async with ClientSession() as session:
client = await Client("<PLACE ID>", "<SERVICE ID>", session=session)
# Get to work...
asyncio.run(main())
Contributing
Thanks to all of our contributors so far!
- Check for open features/bugs or initiate a discussion on one.
- Fork the repository.
- (optional, but highly recommended) Create a virtual environment:
python3 -m venv .venv - (optional, but highly recommended) Enter the virtual environment:
source ./.venv/bin/activate - Install the dev environment:
script/setup - Code your new feature or bug fix on a new branch.
- Write tests that cover your new functionality.
- Run tests and ensure 100% code coverage:
poetry run pytest --cov aiorecollect tests - Update
README.mdwith any new documentation. - Submit a pull request!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aiorecollect-2023.12.0.tar.gz.
File metadata
- Download URL: aiorecollect-2023.12.0.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.12.1 Linux/6.2.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f89df2c9bc7798b0a08e4cc5fc538a132d549fb962fc2c775728aaa3cc1dac0
|
|
| MD5 |
1259743d794e0f4ace8db41ec916fcce
|
|
| BLAKE2b-256 |
9958a1c7242954c67575e8f925a09a37c48149d90fdb868b5675730f0fd4d9a2
|
File details
Details for the file aiorecollect-2023.12.0-py3-none-any.whl.
File metadata
- Download URL: aiorecollect-2023.12.0-py3-none-any.whl
- Upload date:
- Size: 6.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.12.1 Linux/6.2.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4da0a3bccf4e81447ba67efbdbe6344660744cbfdae380c8323d3946adb7cbcc
|
|
| MD5 |
5cd6f2bc78ffa4a78f0178af5fdbe09f
|
|
| BLAKE2b-256 |
d9418efa99464b0a170e6207d90aa0765e0a5528b0657080eb620e73862dc067
|