diff --git a/src/ncaa_fb_managers.py b/src/ncaa_fb_managers.py index eb284c56..019bcdca 100644 --- a/src/ncaa_fb_managers.py +++ b/src/ncaa_fb_managers.py @@ -1133,23 +1133,37 @@ class NCAAFBRecentManager(BaseNCAAFBManager): # Renamed class # Filter for favorite teams if self.favorite_teams: - team_games = [game for game in processed_games - if game['home_abbr'] in self.favorite_teams or - game['away_abbr'] in self.favorite_teams] + # Get all games involving favorite teams + favorite_team_games = [game for game in processed_games + if game['home_abbr'] in self.favorite_teams or + game['away_abbr'] in self.favorite_teams] self.logger.info(f"[NCAAFB Recent] Found {favorite_games_found} favorite team games out of {len(processed_games)} total final games within last 21 days") + # Select one game per favorite team (most recent game for each team) + team_games = [] + for team in self.favorite_teams: + # Find games where this team is playing + team_specific_games = [game for game in favorite_team_games + if game['home_abbr'] == team or game['away_abbr'] == team] + + if team_specific_games: + # Sort by game time and take the most recent + team_specific_games.sort(key=lambda g: g.get('start_time_utc') or datetime.min.replace(tzinfo=timezone.utc), reverse=True) + team_games.append(team_specific_games[0]) + + # Sort the final list by game time (most recent first) + team_games.sort(key=lambda g: g.get('start_time_utc') or datetime.min.replace(tzinfo=timezone.utc), reverse=True) + # Debug: Show which games are selected for display for i, game in enumerate(team_games): self.logger.info(f"[NCAAFB Recent DEBUG] Game {i+1} for display: {game['away_abbr']} @ {game['home_abbr']} - {game.get('start_time_utc')} - Score: {game['away_score']}-{game['home_score']}") else: team_games = processed_games # Show all recent games if no favorites defined self.logger.info(f"[NCAAFB Recent] Found {len(processed_games)} total final games within last 21 days (no favorite teams configured)") - - # Sort by game time, most recent first - team_games.sort(key=lambda g: g.get('start_time_utc') or datetime.min.replace(tzinfo=timezone.utc), reverse=True) - - # Limit to the specified number of recent games - team_games = team_games[:self.recent_games_to_show] + # Sort by game time, most recent first + team_games.sort(key=lambda g: g.get('start_time_utc') or datetime.min.replace(tzinfo=timezone.utc), reverse=True) + # Limit to the specified number of recent games + team_games = team_games[:self.recent_games_to_show] # Check if the list of games to display has changed new_game_ids = {g['id'] for g in team_games} diff --git a/src/nfl_managers.py b/src/nfl_managers.py index 103f78b1..e238c786 100644 --- a/src/nfl_managers.py +++ b/src/nfl_managers.py @@ -893,18 +893,32 @@ class NFLRecentManager(BaseNFLManager): # Renamed class # Filter for favorite teams only if the config is set if self.nfl_config.get("show_favorite_teams_only", False): - team_games = [game for game in processed_games - if game['home_abbr'] in self.favorite_teams or - game['away_abbr'] in self.favorite_teams] + # Get all games involving favorite teams + favorite_team_games = [game for game in processed_games + if game['home_abbr'] in self.favorite_teams or + game['away_abbr'] in self.favorite_teams] + + # Select one game per favorite team (most recent game for each team) + team_games = [] + for team in self.favorite_teams: + # Find games where this team is playing + team_specific_games = [game for game in favorite_team_games + if game['home_abbr'] == team or game['away_abbr'] == team] + + if team_specific_games: + # Sort by game time and take the most recent + team_specific_games.sort(key=lambda g: g.get('start_time_utc') or datetime.min.replace(tzinfo=self._get_timezone()), reverse=True) + team_games.append(team_specific_games[0]) + + # Sort the final list by game time (most recent first) + team_games.sort(key=lambda g: g.get('start_time_utc') or datetime.min.replace(tzinfo=self._get_timezone()), reverse=True) else: team_games = processed_games # Show all recent games if no favorites defined - - # Sort by game time, most recent first - team_games.sort(key=lambda g: g.get('start_time_utc') or datetime.min.replace(tzinfo=self._get_timezone()), reverse=True) - - # Limit to the specified number of recent games (default 5) - recent_games_to_show = self.nfl_config.get("recent_games_to_show", 5) - team_games = team_games[:recent_games_to_show] + # Sort by game time, most recent first + team_games.sort(key=lambda g: g.get('start_time_utc') or datetime.min.replace(tzinfo=self._get_timezone()), reverse=True) + # Limit to the specified number of recent games (default 5) + recent_games_to_show = self.nfl_config.get("recent_games_to_show", 5) + team_games = team_games[:recent_games_to_show] # Check if the list of games to display has changed new_game_ids = {g['id'] for g in team_games}