diff --git a/config/config.json b/config/config.json index 6ccbdc5d..9207459b 100644 --- a/config/config.json +++ b/config/config.json @@ -75,18 +75,18 @@ "use_short_date_format": true }, "clock": { - "enabled": false, + "enabled": true, "format": "%I:%M %p", "update_interval": 1 }, "weather": { - "enabled": false, + "enabled": true, "update_interval": 1800, "units": "imperial", "display_format": "{temp}°F\n{condition}" }, "stocks": { - "enabled": false, + "enabled": true, "update_interval": 600, "scroll_speed": 1, "scroll_delay": 0.01, @@ -97,7 +97,7 @@ "display_format": "{symbol}: ${price} ({change}%)" }, "crypto": { - "enabled": false, + "enabled": true, "update_interval": 600, "symbols": [ "BTC-USD", "ETH-USD" @@ -105,7 +105,7 @@ "display_format": "{symbol}: ${price} ({change}%)" }, "stock_news": { - "enabled": false, + "enabled": true, "update_interval": 3600, "scroll_speed": 1, "scroll_delay": 0.01, @@ -113,7 +113,7 @@ "headlines_per_rotation": 2 }, "odds_ticker": { - "enabled": false, + "enabled": true, "show_favorite_teams_only": true, "games_per_favorite_team": 1, "max_games_per_league": 5, @@ -128,7 +128,7 @@ "show_channel_logos": true }, "calendar": { - "enabled": false, + "enabled": true, "credentials_file": "credentials.json", "token_file": "token.pickle", "update_interval": 3600, @@ -179,7 +179,7 @@ } }, "nfl_scoreboard": { - "enabled": false, + "enabled": true, "live_priority": true, "live_game_duration": 20, "show_odds": true, @@ -201,7 +201,7 @@ } }, "ncaa_fb_scoreboard": { - "enabled": false, + "enabled": true, "live_priority": true, "live_game_duration": 20, "show_odds": true, @@ -264,12 +264,12 @@ } }, "youtube": { - "enabled": false, + "enabled": true, "update_interval": 3600 }, "mlb": { - "enabled": false, - "live_priority": true, + "enabled": true, + "live_priority": false, "live_game_duration": 30, "show_odds": true, "test_mode": false, @@ -292,8 +292,8 @@ } }, "milb": { - "enabled": false, - "live_priority": true, + "enabled": true, + "live_priority": false, "live_game_duration": 30, "test_mode": false, "update_interval_seconds": 3600, @@ -346,13 +346,13 @@ } }, "music": { - "enabled": true, + "enabled": true, "preferred_source": "ytm", "YTM_COMPANION_URL": "http://192.168.86.12:9863", "POLLING_INTERVAL_SECONDS": 1 }, "of_the_day": { - "enabled": true, + "enabled": true, "display_rotate_interval": 20, "update_interval": 3600, "subtitle_rotate_interval": 10, diff --git a/src/display_controller.py b/src/display_controller.py index 1c40b349..485b99c5 100644 --- a/src/display_controller.py +++ b/src/display_controller.py @@ -759,8 +759,14 @@ class DisplayController: """Add or remove live modes from available_modes based on live_priority and live games.""" # Helper to add/remove live modes for all sports def update_mode(mode_name, manager, live_priority): + # If manager is None (sport disabled), remove the mode from rotation + if manager is None: + if mode_name in self.available_modes: + self.available_modes.remove(mode_name) + return + if not live_priority: - if manager and getattr(manager, 'live_games', None): + if getattr(manager, 'live_games', None): if mode_name not in self.available_modes: self.available_modes.append(mode_name) else: @@ -822,7 +828,8 @@ class DisplayController: ('ncaam_basketball', 'ncaam_basketball_live', self.ncaam_basketball_live_priority) ]: manager = getattr(self, attr, None) - if priority and manager and getattr(manager, 'live_games', None): + # Only consider sports that are enabled (manager is not None) + if manager is not None and priority and getattr(manager, 'live_games', None): live_priority_takeover = True live_priority_sport = sport break @@ -1013,6 +1020,13 @@ class DisplayController: self.force_clear = False elif self.current_display_mode != 'none': logger.warning(f"No manager found or selected for display mode: {self.current_display_mode}") + # If we can't display the current mode, switch to the next available mode + if self.available_modes: + self.current_mode_index = (self.current_mode_index + 1) % len(self.available_modes) + self.current_display_mode = self.available_modes[self.current_mode_index] + logger.info(f"Switching to next available mode: {self.current_display_mode}") + else: + logger.error("No available display modes found!") except Exception as e: logger.error(f"Error during display update for mode {self.current_display_mode}: {e}", exc_info=True)