blob: 47ed552ef954f4f4638354a9786e6c7d7d193633 (
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
86
87
88
89
90
|
"""
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"))
|