Skip to main content

A Python 3, asyncio-based library for the Recollect Waste API

Project description

🗑 aiorecollect: A Python 3 Library for Pinboard

CI PyPi Version License Code Coverage Maintainability Say Thanks

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.7
  • Python 3.8
  • Python 3.9

Place and Service IDs

To use aiorecollect, you must know both your Recollect Place and Service IDs:

  1. In Chrome open developer tools and go to network tab.
  2. Go to your city's Recollect collection calendar.
  3. Search for and select your address in the UI.
  4. Watch for a request that looks like https://api.recollect.net/api/places/(place_id)/services/(service_id)/events...
  5. Use the place_id and service_id when instantiating a new Client.

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_results = await client.async_get_pickup_events()

    # ...or get all pickup events within a certain date range:
    pickup_results = 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: a datetime.date that denotes the pickup date
  • pickup_types: a list of pickup types that will occur in this event
  • area_name: the name of the area in which the event is occurring

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

  1. Check for open features/bugs or initiate a discussion on one.
  2. Fork the repository.
  3. (optional, but highly recommended) Create a virtual environment: python3 -m venv .venv
  4. (optional, but highly recommended) Enter the virtual environment: source ./.venv/bin/activate
  5. Install the dev environment: script/setup
  6. Code your new feature or bug fix.
  7. Write tests that cover your new functionality.
  8. Run tests and ensure 100% code coverage: script/test
  9. Update README.md with any new documentation.
  10. Add yourself to AUTHORS.md.
  11. Submit a pull request!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiorecollect-0.2.2.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aiorecollect-0.2.2-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file aiorecollect-0.2.2.tar.gz.

File metadata

  • Download URL: aiorecollect-0.2.2.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.7.9 Linux/5.4.0-1031-azure

File hashes

Hashes for aiorecollect-0.2.2.tar.gz
Algorithm Hash digest
SHA256 a772cd9b3ccb573ed5f1683f24a6bf7a83e7594b09a44d3ce09318a2a3f6a2ad
MD5 ddfe1793f767712e486e261516acd0ae
BLAKE2b-256 65050381495b4485954d2e2061d96c95e376cae59df6ad3ba4c33c0e3483156e

See more details on using hashes here.

File details

Details for the file aiorecollect-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: aiorecollect-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 4.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.7.9 Linux/5.4.0-1031-azure

File hashes

Hashes for aiorecollect-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 51505acf1050afb9ffdf98bd198233b6ee78ea796f0c98db72f9775f800fba0f
MD5 c57fab9c8f16eb655dedd2e6d950a28a
BLAKE2b-256 7e44a95458e9bca59e364a99aadc81d6e373c0c1ecea20c7f6709bcb41df6af7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page