aboutsummaryrefslogtreecommitdiff
path: root/nba/scores.py
diff options
context:
space:
mode:
authorChristian Cleberg <hello@cmc.pub>2025-03-29 00:23:35 -0500
committerChristian Cleberg <hello@cmc.pub>2025-03-29 00:23:35 -0500
commitea85cd451eb052e80b38a04e25918290094325b4 (patch)
tree443fccfc7fe2a23443ac993e84436a757b3efc77 /nba/scores.py
downloadnba-scores-ea85cd451eb052e80b38a04e25918290094325b4.tar.gz
nba-scores-ea85cd451eb052e80b38a04e25918290094325b4.tar.bz2
nba-scores-ea85cd451eb052e80b38a04e25918290094325b4.zip
initial commit
Diffstat (limited to 'nba/scores.py')
-rw-r--r--nba/scores.py85
1 files changed, 85 insertions, 0 deletions
diff --git a/nba/scores.py b/nba/scores.py
new file mode 100644
index 0000000..6c4b660
--- /dev/null
+++ b/nba/scores.py
@@ -0,0 +1,85 @@
+"""
+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"))