Compare commits
2 Commits
2bacf24aad
...
66b62d4034
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
66b62d4034 | ||
|
|
b99ddb4525 |
@@ -14,15 +14,19 @@ if __name__ == "__main__":
|
||||
]
|
||||
)
|
||||
|
||||
# Reduce the verbosity of the requests library's logging
|
||||
logging.getLogger("requests").setLevel(logging.WARNING)
|
||||
logging.info("Logging enhanced with request library noise reduction")
|
||||
|
||||
# Start the main runner
|
||||
# Create an instance of the CrossFitBooker class
|
||||
booker = CrossFitBooker()
|
||||
|
||||
# Attempt to log in to the CrossFit booking system
|
||||
if not booker.login():
|
||||
# If login fails, log the error and exit the script
|
||||
logging.error("Failed to login - Traceback: %s", traceback.format_exc())
|
||||
exit(1)
|
||||
|
||||
# Start continuous booking loop
|
||||
# Start the continuous booking loop
|
||||
booker.run()
|
||||
logging.info("Script completed")
|
||||
@@ -42,9 +42,19 @@ APP_VERSION = "5.09.21"
|
||||
|
||||
|
||||
class CrossFitBooker:
|
||||
"""
|
||||
A class for automating the booking of CrossFit sessions.
|
||||
|
||||
This class handles authentication, session availability checking,
|
||||
booking, and notifications for CrossFit sessions.
|
||||
"""
|
||||
|
||||
def __init__(self) -> None:
|
||||
"""
|
||||
Initialize the CrossFitBooker with necessary attributes.
|
||||
|
||||
Sets up authentication tokens, session headers, mandatory parameters,
|
||||
and initializes the SessionNotifier for sending notifications.
|
||||
"""
|
||||
self.auth_token: Optional[str] = None
|
||||
self.user_id: Optional[str] = None
|
||||
|
||||
@@ -8,10 +8,13 @@ class SessionConfig:
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def load_preferred_sessions():
|
||||
def load_preferred_sessions(config_file="preferred_sessions.json"):
|
||||
"""
|
||||
Load preferred sessions from a JSON file.
|
||||
|
||||
Args:
|
||||
config_file (str): Path to the JSON file containing preferred sessions.
|
||||
|
||||
Returns:
|
||||
List[Tuple[int, str, str]]: List of preferred sessions in the format
|
||||
(day_of_week, start_time, session_name_contains)
|
||||
@@ -19,21 +22,34 @@ class SessionConfig:
|
||||
preferred_sessions = []
|
||||
|
||||
try:
|
||||
with open("preferred_sessions.json", "r") as f:
|
||||
# Attempt to open and read the JSON file
|
||||
with open(config_file, "r") as f:
|
||||
data = json.load(f)
|
||||
|
||||
# Validate and parse each item in the JSON data
|
||||
for item in data:
|
||||
day_of_week = item.get("day_of_week", 0)
|
||||
start_time = item.get("start_time", "00:00")
|
||||
session_name_contains = item.get("session_name_contains", "")
|
||||
day_of_week = item.get("day_of_week", 0) # Default to Monday if not specified
|
||||
start_time = item.get("start_time", "00:00") # Default to midnight if not specified
|
||||
session_name_contains = item.get("session_name_contains", "") # Default to empty string if not specified
|
||||
|
||||
# Append the parsed session to the list
|
||||
preferred_sessions.append((day_of_week, start_time, session_name_contains))
|
||||
except (FileNotFoundError, json.JSONDecodeError) as e:
|
||||
logging.warning(f"Failed to load preferred sessions from file: {str(e)}")
|
||||
# Fall back to default hardcoded sessions
|
||||
# preferred_sessions = [
|
||||
# (2, "18:30", "CONDITIONING"), # Wednesday 18:30 CONDITIONING
|
||||
# (4, "17:00", "WEIGHTLIFTING"), # Friday 17:00 WEIGHTLIFTING
|
||||
# (5, "12:30", "HYROX"), # Saturday 12:30 HYROX
|
||||
# ]
|
||||
|
||||
except FileNotFoundError:
|
||||
# Log a warning if the file is not found
|
||||
logging.warning(f"Configuration file '{config_file}' not found. Falling back to default settings.")
|
||||
|
||||
except json.JSONDecodeError:
|
||||
# Log a warning if the file is not a valid JSON
|
||||
logging.warning(f"Failed to decode JSON from file '{config_file}'. Falling back to default settings.")
|
||||
|
||||
# Fallback to default hardcoded sessions if no valid sessions were loaded
|
||||
if not preferred_sessions:
|
||||
preferred_sessions = [
|
||||
(2, "18:30", "CONDITIONING"), # Wednesday 18:30 CONDITIONING
|
||||
(4, "17:00", "WEIGHTLIFTING"), # Friday 17:00 WEIGHTLIFTING
|
||||
(5, "12:30", "HYROX"), # Saturday 12:30 HYROX
|
||||
]
|
||||
|
||||
return preferred_sessions
|
||||
|
||||
|
||||
Reference in New Issue
Block a user