""" Tabulates a scoreboard for today's games. """ from tabulate import tabulate # ANSI escape codes for text formatting BOLD = '\033[1m' END = '\033[0m' RED = '\033[91m' GREEN = '\033[32m' # Function to get team record from standings def get_team_record(team_name, standings) -> str: """ Retrieves a team's win-loss record from the standings data. Args: team_name (str): Name of the team. standings (dict): Team standings data. Returns: record (str): Team's win-loss record in 'W-L' format. Defaults to 'N/A'. """ for result_set in standings['resultSets']: if result_set['name'] == 'Standings': for team in result_set['rowSet']: if team[4] == team_name: return f"{team[12]}-{team[13]}" return "N/A" def build_scoreboard(games, standings) -> None: """ Prints the current day's games in a table format. Args: games (dict): JSON parsed games data. standings (dict): Team standings data. """ scoreboard_data = games['scoreboard'] games = scoreboard_data['games'] # Prepare the table data table_data = [] for game in games: home_team = game['homeTeam']['teamName'] away_team = game['awayTeam']['teamName'] game_status = game['gameStatusText'] home_score = game['homeTeam']['score'] away_score = game['awayTeam']['score'] home_record = get_team_record(home_team, standings) away_record = get_team_record(away_team, standings) # Determine the winning team if home_score > away_score: home_team_bold = f"{BOLD}{GREEN}{home_team} ({home_record}){END}{END}" away_team_bold = f"{away_team} ({away_record}){END}" home_score_bold = f"{BOLD}{GREEN}{home_score}{END}{END}" away_score_bold = f"{away_score}{END}" elif away_score > home_score: home_team_bold = f"{home_team} ({home_record}){END}" away_team_bold = f"{BOLD}{GREEN}{away_team} ({away_record}){END}{END}" home_score_bold = f"{home_score}{END}" away_score_bold = f"{BOLD}{GREEN}{away_score}{END}{END}" else: home_team_bold = f"{home_team} ({home_record})" away_team_bold = f"{away_team} ({away_record})" home_score_bold = f"{home_score}" away_score_bold = f"{away_score}" # Determine games still in progress if game_status != "Final": game_status = f"{RED}{game_status}{END}" table_data.append([ f"{home_team_bold}\n{away_team_bold}", f"{home_score_bold}\n{away_score_bold}", f"{BOLD}{game_status}{END}" ]) # Define the table headers headers = ["Team", "Score", "Game Status"] # Print the table print(tabulate(table_data, headers=headers, tablefmt="grid"))