A lightweight Python project that scrapes a website and sends notifications when changes are detected.
Originally built for signup to openhouse-zuerich.ch with notification delivery via Telegram Bot.
-
Clone and install dependencies
git clone https://github.com/your-username/reservation-notifier.git cd reservation-notifier poetry install -
Configure webpages to watch In folder
configmodify fileurls.jsonwith the urls you want to watch and scrape. -
Set up a Telegram Bot
- Create a bot with @BotFather → get your
TELEGRAM_TOKEN. - Find your Chat ID by visiting:
https://api.telegram.org/bot<TELEGRAM_TOKEN>/getUpdates - Test the bot via
poetry run python run send_test_telegram.py
- Create a bot with @BotFather → get your
-
Create a .env file In main folder rename
.env_templateto.envand modify this content:TELEGRAM_TOKEN=your_token_here CHAT_ID=your_chat_id_here TRIGGER_WORD=your_word_to_scrape_here -
Run the checker and notifier
poetry run python src/reservation_notifier/main.py
| Feature | Description | Priority | Tech Notes |
|---|---|---|---|
| Web scraper | Detect when a website changes. | High | BeautifulSoup |
| Telegram notification | Send alerts to Telegram chat. | High | requests |
| Feature | Description | Impact | Effort | Notes |
|---|---|---|---|---|
| Email notifications | Alternative to Telegram | Medium | Low | Risks email security |
| Private channel alerts | Push updates to a Telegram channel | Medium | Low | Reliable mobile alerts |
| Automatic sign-in | Scrape behind login pages | High | High | Needs session handling |
| Status tracker | Notify only when state changes | High | Medium | Add in main.py |
| Service, cron | Service to run script automatically | Low | Medium | systemd service / cron so the notifier runs automatically in the background |
Requirements that were discovered while building the project.
- Security: Use Telegram chat instead of email sent from my private account → avoid risking personal accounts
- Notifications: Prefer Telegram private channel instead of chats → more reliable notifications on mobile
- Connectivity: You must have a stable internet connection → tether to a second phone with hotspot if unstable
- Improvement: Status tracker in
main.py→ prevent spamming, avoid duplicate alerts
- Notifier for Filmpodium → movie program updates
- Notifier for Berlin Marathon 2026 → registration alerts
- Notifier for Birthday Database → reminders
- Last reviewed: 2025-09-22
- Next review: TBD
This project is licensed under the MIT License – see the LICENSE file for details.