# 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.