diff --git a/src/display_controller.py b/src/display_controller.py index 227c9cb5..5d82ddac 100644 --- a/src/display_controller.py +++ b/src/display_controller.py @@ -581,8 +581,16 @@ class DisplayController: # Defer sport manager updates that might do heavy API fetching if hasattr(self, 'ncaa_fb_live') and self.ncaa_fb_live: self.display_manager.defer_update(self.ncaa_fb_live.update, priority=3) + if hasattr(self, 'ncaa_fb_recent') and self.ncaa_fb_recent: + self.display_manager.defer_update(self.ncaa_fb_recent.update, priority=3) + if hasattr(self, 'ncaa_fb_upcoming') and self.ncaa_fb_upcoming: + self.display_manager.defer_update(self.ncaa_fb_upcoming.update, priority=3) if hasattr(self, 'nfl_live') and self.nfl_live: self.display_manager.defer_update(self.nfl_live.update, priority=3) + if hasattr(self, 'nfl_recent') and self.nfl_recent: + self.display_manager.defer_update(self.nfl_recent.update, priority=3) + if hasattr(self, 'nfl_upcoming') and self.nfl_upcoming: + self.display_manager.defer_update(self.nfl_upcoming.update, priority=3) # Continue with non-scrolling-sensitive updates if self.weather: self.weather.get_weather() if self.calendar: self.calendar.update(time.time()) diff --git a/src/ncaa_fb_managers.py b/src/ncaa_fb_managers.py index 1c93af35..2ddefffa 100644 --- a/src/ncaa_fb_managers.py +++ b/src/ncaa_fb_managers.py @@ -1193,7 +1193,7 @@ class NCAAFBRecentManager(BaseNCAAFBManager): # Renamed class self.games_list = [] # Filtered list for display (favorite teams) self.current_game_index = 0 self.last_update = 0 - self.update_interval = 300 # Check for recent games every 5 mins + self.update_interval = self.ncaa_fb_config.get("recent_update_interval", 3600) # Check for recent games every hour self.last_game_switch = 0 self.game_display_duration = 15 # Display each recent game for 15 seconds self.logger.info(f"Initialized NCAAFBRecentManager with {len(self.favorite_teams)} favorite teams") # Changed log prefix @@ -1492,7 +1492,7 @@ class NCAAFBUpcomingManager(BaseNCAAFBManager): # Renamed class self.games_list = [] # Filtered list for display (favorite teams) self.current_game_index = 0 self.last_update = 0 - self.update_interval = 300 # Check for upcoming games every 5 mins + self.update_interval = self.ncaa_fb_config.get("upcoming_update_interval", 3600) # Check for upcoming games every hour self.last_log_time = 0 self.log_interval = 300 self.last_warning_time = 0 diff --git a/src/nfl_managers.py b/src/nfl_managers.py index d53d25ae..71d95f20 100644 --- a/src/nfl_managers.py +++ b/src/nfl_managers.py @@ -313,11 +313,29 @@ class BaseNFLManager: # Renamed class return None + def _fetch_current_nfl_games(self) -> Optional[Dict]: + """Fetch only current NFL games for live updates (not entire season).""" + try: + # Fetch current week's games only + url = "https://site.api.espn.com/apis/site/v2/sports/football/nfl/scoreboard" + response = self.session.get(url, headers=self.headers, timeout=10) + response.raise_for_status() + data = response.json() + events = data.get('events', []) + + self.logger.info(f"[NFL Live] Fetched {len(events)} current games") + return {'events': events} + except requests.exceptions.RequestException as e: + self.logger.error(f"[NFL Live] API error fetching current games: {e}") + return None + def _fetch_data(self, date_str: str = None) -> Optional[Dict]: """Fetch data using shared data mechanism or direct fetch for live.""" if isinstance(self, NFLLiveManager): - return self._fetch_nfl_api_data(use_cache=False) + # Live games should fetch only current games, not entire season + return self._fetch_current_nfl_games() else: + # Recent and Upcoming managers should use cached season data return self._fetch_nfl_api_data(use_cache=True) def _load_fonts(self): @@ -1005,7 +1023,7 @@ class NFLRecentManager(BaseNFLManager): # Renamed class self.games_list = [] # Filtered list for display (favorite teams) self.current_game_index = 0 self.last_update = 0 - self.update_interval = 300 # Check for recent games every 5 mins + self.update_interval = self.nfl_config.get("recent_update_interval", 3600) # Check for recent games every hour self.last_game_switch = 0 self.game_display_duration = 15 # Display each recent game for 15 seconds self.logger.info(f"Initialized NFLRecentManager with {len(self.favorite_teams)} favorite teams") @@ -1245,7 +1263,7 @@ class NFLUpcomingManager(BaseNFLManager): # Renamed class self.games_list = [] # Filtered list for display (favorite teams) self.current_game_index = 0 self.last_update = 0 - self.update_interval = 300 # Check for upcoming games every 5 mins + self.update_interval = self.nfl_config.get("upcoming_update_interval", 3600) # Check for upcoming games every hour self.last_log_time = 0 self.log_interval = 300 self.last_warning_time = 0