aboutsummaryrefslogtreecommitdiff
path: root/nba/scores.py
blob: 6c4b6600510459fea98711d47def0ac9d6623937 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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"))