#!/usr/bin/env python3 """ Script to demonstrate how to execute the book_session method from crossfit_booker.py """ import sys import os import logging from src.auth import AuthHandler from src.booker import Booker from src.session_notifier import SessionNotifier # Load environment variables from dotenv import load_dotenv load_dotenv() # Configure logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') def main(): # Check if a session ID was provided as an argument if len(sys.argv) < 2: print("Usage: python execute_book_session.py ") sys.exit(1) session_id = sys.argv[1] # Initialize components auth_handler = AuthHandler( os.environ.get("CROSSFIT_USERNAME"), os.environ.get("CROSSFIT_PASSWORD") ) # Initialize notification system (minimal for single session booking) email_credentials = { "from": os.environ.get("EMAIL_FROM"), "to": os.environ.get("EMAIL_TO"), "password": os.environ.get("EMAIL_PASSWORD") } telegram_credentials = { "token": os.environ.get("TELEGRAM_TOKEN"), "chat_id": os.environ.get("TELEGRAM_CHAT_ID") } enable_email = os.environ.get("ENABLE_EMAIL_NOTIFICATIONS", "true").lower() in ("true", "1", "yes") enable_telegram = os.environ.get("ENABLE_TELEGRAM_NOTIFICATIONS", "true").lower() in ("true", "1", "yes") notifier = SessionNotifier( email_credentials, telegram_credentials, enable_email=enable_email, enable_telegram=enable_telegram ) # Create an instance of Booker booker = Booker(auth_handler, notifier) # Login to authenticate print("Attempting to authenticate...") if not auth_handler.login(): print("Failed to authenticate. Please check your credentials and try again.") sys.exit(1) print("Authentication successful!") # Book the session print(f"Attempting to book session with ID: {session_id}") success = booker.book_session(session_id) if success: print(f"Successfully booked session {session_id}") else: print(f"Failed to book session {session_id}") if __name__ == "__main__": try: main() except Exception as e: print(f"An error occurred: {e}") sys.exit(1)