📡 Monitors TestFlight beta links and sends notifications when a beta becomes available!
Uses FastAPI for the server, Apprise for notifications, and aiohttp for asynchronous HTTP requests.
✅ TestFlight Monitoring – Automatically checks TestFlight beta links for availability.
🔔 Notifications – Sends alerts using Apprise when slots open up.
❤️ Heartbeat Notifications – Sends periodic status updates to ensure the bot is active.
📜 Logging – Uses Python’s logging
module for better log management.
🛑 Graceful Shutdown – Cleans up resources properly on exit.
🔧 Environment Variable Validation – Ensures required configurations are set before starting.
- 🐍 Python 3.8+
- 📦 Install dependencies:
pip install -r requirements.txt
Create a .env
file in the project root with these values:
# List of TestFlight IDs to monitor (comma-separated)
ID_LIST=abc123,def456,ghi789
# Apprise notification URLs (comma-separated for multiple services)
APPRISE_URL=mailto://user:[email protected],discord://webhook_id/webhook_token
# Interval in milliseconds between checks
INTERVAL_CHECK=10000
Start the script using:
python main.py
The FastAPI server will be accessible at: http://localhost:8089
🔹 utils/notifications.py
– Handles notifications with error handling.
🔹 utils/formatting.py
– Provides functions for formatting dates & links.
🔹 utils/colors.py
– Adds color-coded console output for better visibility.
The application logs messages in the console with timestamps and log levels:
2025-04-02 12:00:00 - INFO - Notification sent: Heartbeat - 2025-04-02 12:00:00
2025-04-02 12:01:00 - INFO - 200 - abc123 - AppName - Available
Notification sent: https://testflight.apple.com/join/abc123
To confirm the bot is running, it sends a heartbeat notification every 6 hours.
✅ Example Heartbeat Message:
2025-04-02 18:00:00 - INFO - Notification sent: Heartbeat - 2025-04-02 18:00:00
The bot handles SIGINT and SIGTERM signals to properly close connections before stopping.
Want to help improve this project? Feel free to submit issues or create a pull request!
This project is licensed under the MIT License.
To create a new release, follow these steps:
- Update the version number in
main.py
. - Update the
CHANGELOG.md
file with the changes for the new release. - Commit the changes and push to the
main
branch. - Create a new tag for the release:
git tag -a vX.X.X -m "Release vX.X.X" git push origin vX.X.X
- The GitHub Actions workflow will automatically create a new release and upload the assets.
For more details, see the CHANGELOG.md file.