A Python-based tool for tracking availability across different sources. This program can be used to monitor availability of apartments, products, appointments, or anything with an API, and sends notifications when changes are detected. It can be configured to run via cron job at user-specified intervals for automated monitoring.
- Tracks availability of multiple items simultaneously
- Modular design for easy addition of new trackers
- Pushover notifications by default
- Optional per-tracker Discord channel routing
- Python 3.x
- uv (Python package manager)
- Clone the repository:
git clone <repository-url>
cd availability-tracker- Install dependencies using uv:
uv sync- Activate the virtual environment:
source .venv/bin/activate- Create a
.envfile in the root directory with your Pushover credentials:
pushover_app_token=your-app-token
pushover_user_key=your-user-key
Create an incoming webhook for each Discord channel that should receive tracker notifications. Assign each channel an alias, then map tracker names to aliases:
DISCORD_ROUTES=hai_ivy_track=HAI_JOBS,hai_equator_track=HAI_JOBS,sheridan=APARTMENTS
DISCORD_WEBHOOK_HAI_JOBS=https://discord.com/api/webhooks/...
DISCORD_WEBHOOK_APARTMENTS=https://discord.com/api/webhooks/...Aliases may contain uppercase letters, numbers, and underscores. Each tracker can
appear once and route to one Discord channel. Trackers omitted from
DISCORD_ROUTES continue to use Pushover. If a Discord webhook is missing or a
send fails, that notification is logged and is not rerouted to Pushover.
Run the program using:
python3 main.pyThe program will:
- Check availability for configured items
- Process the results
- Send notifications through Pushover or the configured Discord channel
main.py- Main program entry pointtrackers/- Directory containing individual item trackersplists/- macOS launch agent templatesservice/pushover_service.py- Handles default Pushover notificationsservice/discord_service.py- Handles Discord webhook notificationsutil.py- Utility functions