feat: Add notification for upcoming sessions
This commit is contained in:
92
README.md
Normal file
92
README.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# Crossfit Application
|
||||
|
||||
This is a Python application for managing Crossfit bookings and notifications. The application automates the process of booking Crossfit sessions and sends notifications via email and Telegram when a booking is successful.
|
||||
|
||||
## Features
|
||||
|
||||
- Automated booking of Crossfit sessions
|
||||
- Email and Telegram notifications for successful bookings
|
||||
- Configurable preferred sessions
|
||||
- Retry logic for booking failures
|
||||
- Detailed logging
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Docker
|
||||
- Docker Compose
|
||||
|
||||
## Setup
|
||||
|
||||
1. Create a `.env` file based on `.env.example` and fill in the required credentials.
|
||||
2. Build and run the application using Docker Compose:
|
||||
|
||||
```bash
|
||||
docker-compose up --build
|
||||
```
|
||||
|
||||
3. The application will run in a Docker container, and the logs will be stored in the `./log` directory.
|
||||
|
||||
## Usage
|
||||
|
||||
The application will automatically check for available sessions and book them based on your preferences. It will send notifications via email and Telegram when a booking is successful.
|
||||
|
||||
### Environment Variables
|
||||
|
||||
The following environment variables are required:
|
||||
|
||||
- `CROSSFIT_USERNAME`: Your Crossfit username
|
||||
- `CROSSFIT_PASSWORD`: Your Crossfit password
|
||||
- `EMAIL_FROM`: Your email address
|
||||
- `EMAIL_TO`: Recipient email address
|
||||
- `EMAIL_PASSWORD`: Your email password
|
||||
- `TELEGRAM_TOKEN`: Your Telegram bot token
|
||||
- `TELEGRAM_CHAT_ID`: Your Telegram chat ID
|
||||
|
||||
### Preferred Sessions
|
||||
|
||||
You can configure your preferred sessions in the `crossfit_booker.py` file. The preferred sessions are defined as a list of tuples, where each tuple contains the day of the week, start time, and session name.
|
||||
|
||||
```python
|
||||
PREFERRED_SESSIONS = [
|
||||
(4, "17:00", "WEIGHTLIFTING"), # Friday 17:00 WEIGHTLIFTING
|
||||
(5, "12:30", "HYROX"), # Saturday 12:30 HYROX
|
||||
(2, "18:30", "CONDITIONING"), # Wednesday 18:30 CONDITIONING
|
||||
]
|
||||
```
|
||||
|
||||
## Files
|
||||
|
||||
- `Dockerfile`: Docker image definition
|
||||
- `docker-compose.yml`: Docker Compose service definition
|
||||
- `.env.example`: Example environment variables file
|
||||
- `.dockerignore`: Docker ignore file
|
||||
- `.gitignore`: Git ignore file
|
||||
- `book_crossfit.py`: Main application script
|
||||
- `crossfit_booker.py`: Crossfit booking script
|
||||
- `session_notifier.py`: Session notification script
|
||||
- `requirements.txt`: Python dependencies
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
.
|
||||
├── Dockerfile
|
||||
├── docker-compose.yml
|
||||
├── .env.example
|
||||
├── .dockerignore
|
||||
├── .gitignore
|
||||
├── book_crossfit.py
|
||||
├── crossfit_booker.py
|
||||
├── session_notifier.py
|
||||
├── requirements.txt
|
||||
└── log
|
||||
└── crossfit_booking.log
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
Contributions are welcome! Please open an issue or submit a pull request.
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
|
||||
Reference in New Issue
Block a user