diff --git a/ClaudeCommands.md b/ClaudeCommands.md index aa3f72f..e48ea71 100644 --- a/ClaudeCommands.md +++ b/ClaudeCommands.md @@ -29,3 +29,26 @@ read docs/TEST_PLAN.md in full Do not write code until this summary is complete. ``` +# Claude Code “Decision OS” — Usage Guide + +This guide explains **how to actually use** your Claude Code command set in real-world product and engineering work. +It’s written for **shipping software**, not prompt theory. + +If you follow this process, you will: +- Catch bad assumptions early +- Avoid rework +- Get clearer designs, safer rollouts, and better tests +- Stop Claude from jumping straight to mediocre solutions + +--- + +## Core Mental Model (Read Once) + +Every command enforces the same lifecycle: + +1. **Phase 1 — Interview (Questions Only)** + Claude asks clarifying questions. No code. No designs. No solutions. + +2. **START Gate** + You explicitly unlock execution by typing: + diff --git a/Scripts/.claude/settings.local.json b/Scripts/.claude/settings.local.json index f855ee2..332ef41 100644 --- a/Scripts/.claude/settings.local.json +++ b/Scripts/.claude/settings.local.json @@ -16,7 +16,8 @@ "Bash(ls:*)", "Bash(xargs basename:*)", "Bash(python -m sportstime_parser:*)", - "Bash(python -m py_compile:*)" + "Bash(python -m py_compile:*)", + "WebFetch(domain:en.wikipedia.org)" ] } } diff --git a/Scripts/sportstime_parser/models/game.py b/Scripts/sportstime_parser/models/game.py index c06a11e..c2d0e1d 100644 --- a/Scripts/sportstime_parser/models/game.py +++ b/Scripts/sportstime_parser/models/game.py @@ -92,14 +92,15 @@ class Game: utc_dt = local_dt.astimezone(ZoneInfo("UTC")) # Format season as string (e.g., 2025 -> "2025-26" for NBA/NHL, "2025" for MLB) - if self.sport in ("nba", "nhl"): + sport_lower = self.sport.lower() + if sport_lower in ("nba", "nhl"): season_str = f"{self.season}-{str(self.season + 1)[-2:]}" else: season_str = str(self.season) return { "canonical_id": self.id, - "sport": self.sport, + "sport": self.sport.upper(), # iOS Sport enum expects uppercase (e.g., "NFL") "season": season_str, "game_datetime_utc": utc_dt.strftime("%Y-%m-%dT%H:%M:%SZ"), "home_team_canonical_id": self.home_team_id, diff --git a/Scripts/sportstime_parser/models/stadium.py b/Scripts/sportstime_parser/models/stadium.py index 4cb35b0..a0fc5c4 100644 --- a/Scripts/sportstime_parser/models/stadium.py +++ b/Scripts/sportstime_parser/models/stadium.py @@ -78,7 +78,7 @@ class Stadium: "latitude": self.latitude, "longitude": self.longitude, "capacity": self.capacity if self.capacity is not None else 0, - "sport": self.sport, + "sport": self.sport.upper(), # iOS Sport enum expects uppercase (e.g., "NFL") "primary_team_abbrevs": primary_team_abbrevs or [], "year_opened": self.opened_year, } diff --git a/Scripts/sportstime_parser/models/team.py b/Scripts/sportstime_parser/models/team.py index 175ca7a..c2ba0a5 100644 --- a/Scripts/sportstime_parser/models/team.py +++ b/Scripts/sportstime_parser/models/team.py @@ -64,7 +64,7 @@ class Team: "canonical_id": self.id, "name": self.name, "abbreviation": self.abbreviation, - "sport": self.sport, + "sport": self.sport.upper(), # iOS Sport enum expects uppercase (e.g., "NFL") "city": self.city, "stadium_canonical_id": self.stadium_id or "", "conference_id": self.conference, diff --git a/Scripts/sportstime_parser/normalizers/stadium_resolver.py b/Scripts/sportstime_parser/normalizers/stadium_resolver.py index c6770fb..8abdde3 100644 --- a/Scripts/sportstime_parser/normalizers/stadium_resolver.py +++ b/Scripts/sportstime_parser/normalizers/stadium_resolver.py @@ -111,6 +111,30 @@ STADIUM_MAPPINGS: dict[str, dict[str, StadiumInfo]] = { "stadium_mlb_globe_life_field": StadiumInfo("stadium_mlb_globe_life_field", "Globe Life Field", "Arlington", "TX", "USA", "mlb", 32.7473, -97.0845), "stadium_mlb_rogers_centre": StadiumInfo("stadium_mlb_rogers_centre", "Rogers Centre", "Toronto", "ON", "Canada", "mlb", 43.6414, -79.3894), "stadium_mlb_nationals_park": StadiumInfo("stadium_mlb_nationals_park", "Nationals Park", "Washington", "DC", "USA", "mlb", 38.8730, -77.0074), + # Spring Training - Cactus League (Arizona) + "stadium_mlb_spring_salt_river_fields": StadiumInfo("stadium_mlb_spring_salt_river_fields", "Salt River Fields at Talking Stick", "Scottsdale", "AZ", "USA", "mlb", 33.5412, -111.8847, "America/Phoenix"), + "stadium_mlb_spring_sloan_park": StadiumInfo("stadium_mlb_spring_sloan_park", "Sloan Park", "Mesa", "AZ", "USA", "mlb", 33.4312, -111.8821, "America/Phoenix"), + "stadium_mlb_spring_hohokam_stadium": StadiumInfo("stadium_mlb_spring_hohokam_stadium", "Hohokam Stadium", "Mesa", "AZ", "USA", "mlb", 33.4385, -111.8295, "America/Phoenix"), + "stadium_mlb_spring_camelback_ranch": StadiumInfo("stadium_mlb_spring_camelback_ranch", "Camelback Ranch", "Glendale", "AZ", "USA", "mlb", 33.509, -112.272, "America/Phoenix"), + "stadium_mlb_spring_goodyear_ballpark": StadiumInfo("stadium_mlb_spring_goodyear_ballpark", "Goodyear Ballpark", "Goodyear", "AZ", "USA", "mlb", 33.4286, -112.3908, "America/Phoenix"), + "stadium_mlb_spring_tempe_diablo_stadium": StadiumInfo("stadium_mlb_spring_tempe_diablo_stadium", "Tempe Diablo Stadium", "Tempe", "AZ", "USA", "mlb", 33.4003, -111.9685, "America/Phoenix"), + "stadium_mlb_spring_scottsdale_stadium": StadiumInfo("stadium_mlb_spring_scottsdale_stadium", "Scottsdale Stadium", "Scottsdale", "AZ", "USA", "mlb", 33.4881, -111.9210, "America/Phoenix"), + "stadium_mlb_spring_american_family_fields": StadiumInfo("stadium_mlb_spring_american_family_fields", "American Family Fields of Phoenix", "Phoenix", "AZ", "USA", "mlb", 33.4916, -112.1733, "America/Phoenix"), + "stadium_mlb_spring_peoria_sports_complex": StadiumInfo("stadium_mlb_spring_peoria_sports_complex", "Peoria Sports Complex", "Peoria", "AZ", "USA", "mlb", 33.6224, -112.2274, "America/Phoenix"), + "stadium_mlb_spring_surprise_stadium": StadiumInfo("stadium_mlb_spring_surprise_stadium", "Surprise Stadium", "Surprise", "AZ", "USA", "mlb", 33.6306, -112.3332, "America/Phoenix"), + # Spring Training - Grapefruit League (Florida) + "stadium_mlb_spring_jetblue_park": StadiumInfo("stadium_mlb_spring_jetblue_park", "JetBlue Park", "Fort Myers", "FL", "USA", "mlb", 26.5511, -81.7620), + "stadium_mlb_spring_roger_dean_stadium": StadiumInfo("stadium_mlb_spring_roger_dean_stadium", "Roger Dean Chevrolet Stadium", "Jupiter", "FL", "USA", "mlb", 26.8910, -80.1166), + "stadium_mlb_spring_ed_smith_stadium": StadiumInfo("stadium_mlb_spring_ed_smith_stadium", "Ed Smith Stadium", "Sarasota", "FL", "USA", "mlb", 27.3482, -82.5176), + "stadium_mlb_spring_steinbrenner_field": StadiumInfo("stadium_mlb_spring_steinbrenner_field", "George M. Steinbrenner Field", "Tampa", "FL", "USA", "mlb", 27.9748, -82.5040), + "stadium_mlb_spring_td_ballpark": StadiumInfo("stadium_mlb_spring_td_ballpark", "TD Ballpark", "Dunedin", "FL", "USA", "mlb", 28.0039, -82.7867), + "stadium_mlb_spring_cooltoday_park": StadiumInfo("stadium_mlb_spring_cooltoday_park", "CoolToday Park", "North Port", "FL", "USA", "mlb", 27.0219, -82.2358), + "stadium_mlb_spring_hammond_stadium": StadiumInfo("stadium_mlb_spring_hammond_stadium", "Hammond Stadium", "Fort Myers", "FL", "USA", "mlb", 26.5363, -81.8385), + "stadium_mlb_spring_clover_park": StadiumInfo("stadium_mlb_spring_clover_park", "Clover Park", "Port St. Lucie", "FL", "USA", "mlb", 27.2900, -80.4100), + "stadium_mlb_spring_baycare_ballpark": StadiumInfo("stadium_mlb_spring_baycare_ballpark", "BayCare Ballpark", "Clearwater", "FL", "USA", "mlb", 27.9697, -82.7257), + "stadium_mlb_spring_lecom_park": StadiumInfo("stadium_mlb_spring_lecom_park", "LECOM Park", "Bradenton", "FL", "USA", "mlb", 27.4939, -82.5753), + "stadium_mlb_spring_charlotte_sports_park": StadiumInfo("stadium_mlb_spring_charlotte_sports_park", "Charlotte Sports Park", "Port Charlotte", "FL", "USA", "mlb", 26.9992, -82.1817), + "stadium_mlb_spring_cacti_park": StadiumInfo("stadium_mlb_spring_cacti_park", "CACTI Park of the Palm Beaches", "West Palm Beach", "FL", "USA", "mlb", 26.7697, -80.1014), }, "nfl": { "stadium_nfl_state_farm_stadium": StadiumInfo("stadium_nfl_state_farm_stadium", "State Farm Stadium", "Glendale", "AZ", "USA", "nfl", 33.5276, -112.2626), diff --git a/Scripts/sportstime_parser/normalizers/team_resolver.py b/Scripts/sportstime_parser/normalizers/team_resolver.py index 267b2e3..a5b1d6b 100644 --- a/Scripts/sportstime_parser/normalizers/team_resolver.py +++ b/Scripts/sportstime_parser/normalizers/team_resolver.py @@ -34,239 +34,239 @@ class TeamResolveResult: # Hardcoded team mappings for each sport -# Format: {sport: {abbreviation: (canonical_id, full_name, city)}} -TEAM_MAPPINGS: dict[str, dict[str, tuple[str, str, str]]] = { +# Format: {sport: {abbreviation: (canonical_id, full_name, city, stadium_id)}} +TEAM_MAPPINGS: dict[str, dict[str, tuple[str, str, str, str]]] = { "nba": { - "ATL": ("team_nba_atl", "Atlanta Hawks", "Atlanta"), - "BOS": ("team_nba_bos", "Boston Celtics", "Boston"), - "BKN": ("team_nba_brk", "Brooklyn Nets", "Brooklyn"), - "BRK": ("team_nba_brk", "Brooklyn Nets", "Brooklyn"), - "CHA": ("team_nba_cho", "Charlotte Hornets", "Charlotte"), - "CHO": ("team_nba_cho", "Charlotte Hornets", "Charlotte"), - "CHI": ("team_nba_chi", "Chicago Bulls", "Chicago"), - "CLE": ("team_nba_cle", "Cleveland Cavaliers", "Cleveland"), - "DAL": ("team_nba_dal", "Dallas Mavericks", "Dallas"), - "DEN": ("team_nba_den", "Denver Nuggets", "Denver"), - "DET": ("team_nba_det", "Detroit Pistons", "Detroit"), - "GSW": ("team_nba_gsw", "Golden State Warriors", "Golden State"), - "GS": ("team_nba_gsw", "Golden State Warriors", "Golden State"), - "HOU": ("team_nba_hou", "Houston Rockets", "Houston"), - "IND": ("team_nba_ind", "Indiana Pacers", "Indiana"), - "LAC": ("team_nba_lac", "Los Angeles Clippers", "Los Angeles"), - "LAL": ("team_nba_lal", "Los Angeles Lakers", "Los Angeles"), - "MEM": ("team_nba_mem", "Memphis Grizzlies", "Memphis"), - "MIA": ("team_nba_mia", "Miami Heat", "Miami"), - "MIL": ("team_nba_mil", "Milwaukee Bucks", "Milwaukee"), - "MIN": ("team_nba_min", "Minnesota Timberwolves", "Minnesota"), - "NOP": ("team_nba_nop", "New Orleans Pelicans", "New Orleans"), - "NO": ("team_nba_nop", "New Orleans Pelicans", "New Orleans"), - "NYK": ("team_nba_nyk", "New York Knicks", "New York"), - "NY": ("team_nba_nyk", "New York Knicks", "New York"), - "OKC": ("team_nba_okc", "Oklahoma City Thunder", "Oklahoma City"), - "ORL": ("team_nba_orl", "Orlando Magic", "Orlando"), - "PHI": ("team_nba_phi", "Philadelphia 76ers", "Philadelphia"), - "PHX": ("team_nba_phx", "Phoenix Suns", "Phoenix"), - "PHO": ("team_nba_phx", "Phoenix Suns", "Phoenix"), - "POR": ("team_nba_por", "Portland Trail Blazers", "Portland"), - "SAC": ("team_nba_sac", "Sacramento Kings", "Sacramento"), - "SAS": ("team_nba_sas", "San Antonio Spurs", "San Antonio"), - "SA": ("team_nba_sas", "San Antonio Spurs", "San Antonio"), - "TOR": ("team_nba_tor", "Toronto Raptors", "Toronto"), - "UTA": ("team_nba_uta", "Utah Jazz", "Utah"), - "WAS": ("team_nba_was", "Washington Wizards", "Washington"), - "WSH": ("team_nba_was", "Washington Wizards", "Washington"), + "ATL": ("team_nba_atl", "Atlanta Hawks", "Atlanta", "stadium_nba_state_farm_arena"), + "BOS": ("team_nba_bos", "Boston Celtics", "Boston", "stadium_nba_td_garden"), + "BKN": ("team_nba_brk", "Brooklyn Nets", "Brooklyn", "stadium_nba_barclays_center"), + "BRK": ("team_nba_brk", "Brooklyn Nets", "Brooklyn", "stadium_nba_barclays_center"), + "CHA": ("team_nba_cho", "Charlotte Hornets", "Charlotte", "stadium_nba_spectrum_center"), + "CHO": ("team_nba_cho", "Charlotte Hornets", "Charlotte", "stadium_nba_spectrum_center"), + "CHI": ("team_nba_chi", "Chicago Bulls", "Chicago", "stadium_nba_united_center"), + "CLE": ("team_nba_cle", "Cleveland Cavaliers", "Cleveland", "stadium_nba_rocket_mortgage_fieldhouse"), + "DAL": ("team_nba_dal", "Dallas Mavericks", "Dallas", "stadium_nba_american_airlines_center"), + "DEN": ("team_nba_den", "Denver Nuggets", "Denver", "stadium_nba_ball_arena"), + "DET": ("team_nba_det", "Detroit Pistons", "Detroit", "stadium_nba_little_caesars_arena"), + "GSW": ("team_nba_gsw", "Golden State Warriors", "Golden State", "stadium_nba_chase_center"), + "GS": ("team_nba_gsw", "Golden State Warriors", "Golden State", "stadium_nba_chase_center"), + "HOU": ("team_nba_hou", "Houston Rockets", "Houston", "stadium_nba_toyota_center"), + "IND": ("team_nba_ind", "Indiana Pacers", "Indiana", "stadium_nba_gainbridge_fieldhouse"), + "LAC": ("team_nba_lac", "Los Angeles Clippers", "Los Angeles", "stadium_nba_intuit_dome"), + "LAL": ("team_nba_lal", "Los Angeles Lakers", "Los Angeles", "stadium_nba_cryptocom_arena"), + "MEM": ("team_nba_mem", "Memphis Grizzlies", "Memphis", "stadium_nba_fedexforum"), + "MIA": ("team_nba_mia", "Miami Heat", "Miami", "stadium_nba_kaseya_center"), + "MIL": ("team_nba_mil", "Milwaukee Bucks", "Milwaukee", "stadium_nba_fiserv_forum"), + "MIN": ("team_nba_min", "Minnesota Timberwolves", "Minnesota", "stadium_nba_target_center"), + "NOP": ("team_nba_nop", "New Orleans Pelicans", "New Orleans", "stadium_nba_smoothie_king_center"), + "NO": ("team_nba_nop", "New Orleans Pelicans", "New Orleans", "stadium_nba_smoothie_king_center"), + "NYK": ("team_nba_nyk", "New York Knicks", "New York", "stadium_nba_madison_square_garden"), + "NY": ("team_nba_nyk", "New York Knicks", "New York", "stadium_nba_madison_square_garden"), + "OKC": ("team_nba_okc", "Oklahoma City Thunder", "Oklahoma City", "stadium_nba_paycom_center"), + "ORL": ("team_nba_orl", "Orlando Magic", "Orlando", "stadium_nba_kia_center"), + "PHI": ("team_nba_phi", "Philadelphia 76ers", "Philadelphia", "stadium_nba_wells_fargo_center"), + "PHX": ("team_nba_phx", "Phoenix Suns", "Phoenix", "stadium_nba_footprint_center"), + "PHO": ("team_nba_phx", "Phoenix Suns", "Phoenix", "stadium_nba_footprint_center"), + "POR": ("team_nba_por", "Portland Trail Blazers", "Portland", "stadium_nba_moda_center"), + "SAC": ("team_nba_sac", "Sacramento Kings", "Sacramento", "stadium_nba_golden_1_center"), + "SAS": ("team_nba_sas", "San Antonio Spurs", "San Antonio", "stadium_nba_frost_bank_center"), + "SA": ("team_nba_sas", "San Antonio Spurs", "San Antonio", "stadium_nba_frost_bank_center"), + "TOR": ("team_nba_tor", "Toronto Raptors", "Toronto", "stadium_nba_scotiabank_arena"), + "UTA": ("team_nba_uta", "Utah Jazz", "Utah", "stadium_nba_delta_center"), + "WAS": ("team_nba_was", "Washington Wizards", "Washington", "stadium_nba_capital_one_arena"), + "WSH": ("team_nba_was", "Washington Wizards", "Washington", "stadium_nba_capital_one_arena"), }, "mlb": { - "ARI": ("team_mlb_ari", "Arizona Diamondbacks", "Arizona"), - "ATL": ("team_mlb_atl", "Atlanta Braves", "Atlanta"), - "BAL": ("team_mlb_bal", "Baltimore Orioles", "Baltimore"), - "BOS": ("team_mlb_bos", "Boston Red Sox", "Boston"), - "CHC": ("team_mlb_chc", "Chicago Cubs", "Chicago"), - "CHW": ("team_mlb_chw", "Chicago White Sox", "Chicago"), - "CWS": ("team_mlb_chw", "Chicago White Sox", "Chicago"), - "CIN": ("team_mlb_cin", "Cincinnati Reds", "Cincinnati"), - "CLE": ("team_mlb_cle", "Cleveland Guardians", "Cleveland"), - "COL": ("team_mlb_col", "Colorado Rockies", "Colorado"), - "DET": ("team_mlb_det", "Detroit Tigers", "Detroit"), - "HOU": ("team_mlb_hou", "Houston Astros", "Houston"), - "KC": ("team_mlb_kc", "Kansas City Royals", "Kansas City"), - "KCR": ("team_mlb_kc", "Kansas City Royals", "Kansas City"), - "LAA": ("team_mlb_laa", "Los Angeles Angels", "Los Angeles"), - "ANA": ("team_mlb_laa", "Los Angeles Angels", "Anaheim"), - "LAD": ("team_mlb_lad", "Los Angeles Dodgers", "Los Angeles"), - "MIA": ("team_mlb_mia", "Miami Marlins", "Miami"), - "FLA": ("team_mlb_mia", "Miami Marlins", "Florida"), - "MIL": ("team_mlb_mil", "Milwaukee Brewers", "Milwaukee"), - "MIN": ("team_mlb_min", "Minnesota Twins", "Minnesota"), - "NYM": ("team_mlb_nym", "New York Mets", "New York"), - "NYY": ("team_mlb_nyy", "New York Yankees", "New York"), - "OAK": ("team_mlb_oak", "Oakland Athletics", "Oakland"), - "PHI": ("team_mlb_phi", "Philadelphia Phillies", "Philadelphia"), - "PIT": ("team_mlb_pit", "Pittsburgh Pirates", "Pittsburgh"), - "SD": ("team_mlb_sd", "San Diego Padres", "San Diego"), - "SDP": ("team_mlb_sd", "San Diego Padres", "San Diego"), - "SF": ("team_mlb_sf", "San Francisco Giants", "San Francisco"), - "SFG": ("team_mlb_sf", "San Francisco Giants", "San Francisco"), - "SEA": ("team_mlb_sea", "Seattle Mariners", "Seattle"), - "STL": ("team_mlb_stl", "St. Louis Cardinals", "St. Louis"), - "TB": ("team_mlb_tbr", "Tampa Bay Rays", "Tampa Bay"), - "TBR": ("team_mlb_tbr", "Tampa Bay Rays", "Tampa Bay"), - "TEX": ("team_mlb_tex", "Texas Rangers", "Texas"), - "TOR": ("team_mlb_tor", "Toronto Blue Jays", "Toronto"), - "WSN": ("team_mlb_wsn", "Washington Nationals", "Washington"), - "WAS": ("team_mlb_wsn", "Washington Nationals", "Washington"), + "ARI": ("team_mlb_ari", "Arizona Diamondbacks", "Arizona", "stadium_mlb_chase_field"), + "ATL": ("team_mlb_atl", "Atlanta Braves", "Atlanta", "stadium_mlb_truist_park"), + "BAL": ("team_mlb_bal", "Baltimore Orioles", "Baltimore", "stadium_mlb_oriole_park_at_camden_yards"), + "BOS": ("team_mlb_bos", "Boston Red Sox", "Boston", "stadium_mlb_fenway_park"), + "CHC": ("team_mlb_chc", "Chicago Cubs", "Chicago", "stadium_mlb_wrigley_field"), + "CHW": ("team_mlb_chw", "Chicago White Sox", "Chicago", "stadium_mlb_guaranteed_rate_field"), + "CWS": ("team_mlb_chw", "Chicago White Sox", "Chicago", "stadium_mlb_guaranteed_rate_field"), + "CIN": ("team_mlb_cin", "Cincinnati Reds", "Cincinnati", "stadium_mlb_great_american_ball_park"), + "CLE": ("team_mlb_cle", "Cleveland Guardians", "Cleveland", "stadium_mlb_progressive_field"), + "COL": ("team_mlb_col", "Colorado Rockies", "Colorado", "stadium_mlb_coors_field"), + "DET": ("team_mlb_det", "Detroit Tigers", "Detroit", "stadium_mlb_comerica_park"), + "HOU": ("team_mlb_hou", "Houston Astros", "Houston", "stadium_mlb_minute_maid_park"), + "KC": ("team_mlb_kc", "Kansas City Royals", "Kansas City", "stadium_mlb_kauffman_stadium"), + "KCR": ("team_mlb_kc", "Kansas City Royals", "Kansas City", "stadium_mlb_kauffman_stadium"), + "LAA": ("team_mlb_laa", "Los Angeles Angels", "Los Angeles", "stadium_mlb_angel_stadium"), + "ANA": ("team_mlb_laa", "Los Angeles Angels", "Anaheim", "stadium_mlb_angel_stadium"), + "LAD": ("team_mlb_lad", "Los Angeles Dodgers", "Los Angeles", "stadium_mlb_dodger_stadium"), + "MIA": ("team_mlb_mia", "Miami Marlins", "Miami", "stadium_mlb_loandepot_park"), + "FLA": ("team_mlb_mia", "Miami Marlins", "Florida", "stadium_mlb_loandepot_park"), + "MIL": ("team_mlb_mil", "Milwaukee Brewers", "Milwaukee", "stadium_mlb_american_family_field"), + "MIN": ("team_mlb_min", "Minnesota Twins", "Minnesota", "stadium_mlb_target_field"), + "NYM": ("team_mlb_nym", "New York Mets", "New York", "stadium_mlb_citi_field"), + "NYY": ("team_mlb_nyy", "New York Yankees", "New York", "stadium_mlb_yankee_stadium"), + "OAK": ("team_mlb_oak", "Oakland Athletics", "Oakland", "stadium_mlb_sutter_health_park"), + "PHI": ("team_mlb_phi", "Philadelphia Phillies", "Philadelphia", "stadium_mlb_citizens_bank_park"), + "PIT": ("team_mlb_pit", "Pittsburgh Pirates", "Pittsburgh", "stadium_mlb_pnc_park"), + "SD": ("team_mlb_sd", "San Diego Padres", "San Diego", "stadium_mlb_petco_park"), + "SDP": ("team_mlb_sd", "San Diego Padres", "San Diego", "stadium_mlb_petco_park"), + "SF": ("team_mlb_sf", "San Francisco Giants", "San Francisco", "stadium_mlb_oracle_park"), + "SFG": ("team_mlb_sf", "San Francisco Giants", "San Francisco", "stadium_mlb_oracle_park"), + "SEA": ("team_mlb_sea", "Seattle Mariners", "Seattle", "stadium_mlb_tmobile_park"), + "STL": ("team_mlb_stl", "St. Louis Cardinals", "St. Louis", "stadium_mlb_busch_stadium"), + "TB": ("team_mlb_tbr", "Tampa Bay Rays", "Tampa Bay", "stadium_mlb_tropicana_field"), + "TBR": ("team_mlb_tbr", "Tampa Bay Rays", "Tampa Bay", "stadium_mlb_tropicana_field"), + "TEX": ("team_mlb_tex", "Texas Rangers", "Texas", "stadium_mlb_globe_life_field"), + "TOR": ("team_mlb_tor", "Toronto Blue Jays", "Toronto", "stadium_mlb_rogers_centre"), + "WSN": ("team_mlb_wsn", "Washington Nationals", "Washington", "stadium_mlb_nationals_park"), + "WAS": ("team_mlb_wsn", "Washington Nationals", "Washington", "stadium_mlb_nationals_park"), }, "nfl": { - "ARI": ("team_nfl_ari", "Arizona Cardinals", "Arizona"), - "ATL": ("team_nfl_atl", "Atlanta Falcons", "Atlanta"), - "BAL": ("team_nfl_bal", "Baltimore Ravens", "Baltimore"), - "BUF": ("team_nfl_buf", "Buffalo Bills", "Buffalo"), - "CAR": ("team_nfl_car", "Carolina Panthers", "Carolina"), - "CHI": ("team_nfl_chi", "Chicago Bears", "Chicago"), - "CIN": ("team_nfl_cin", "Cincinnati Bengals", "Cincinnati"), - "CLE": ("team_nfl_cle", "Cleveland Browns", "Cleveland"), - "DAL": ("team_nfl_dal", "Dallas Cowboys", "Dallas"), - "DEN": ("team_nfl_den", "Denver Broncos", "Denver"), - "DET": ("team_nfl_det", "Detroit Lions", "Detroit"), - "GB": ("team_nfl_gb", "Green Bay Packers", "Green Bay"), - "GNB": ("team_nfl_gb", "Green Bay Packers", "Green Bay"), - "HOU": ("team_nfl_hou", "Houston Texans", "Houston"), - "IND": ("team_nfl_ind", "Indianapolis Colts", "Indianapolis"), - "JAX": ("team_nfl_jax", "Jacksonville Jaguars", "Jacksonville"), - "JAC": ("team_nfl_jax", "Jacksonville Jaguars", "Jacksonville"), - "KC": ("team_nfl_kc", "Kansas City Chiefs", "Kansas City"), - "KAN": ("team_nfl_kc", "Kansas City Chiefs", "Kansas City"), - "LV": ("team_nfl_lv", "Las Vegas Raiders", "Las Vegas"), - "LAC": ("team_nfl_lac", "Los Angeles Chargers", "Los Angeles"), - "LAR": ("team_nfl_lar", "Los Angeles Rams", "Los Angeles"), - "MIA": ("team_nfl_mia", "Miami Dolphins", "Miami"), - "MIN": ("team_nfl_min", "Minnesota Vikings", "Minnesota"), - "NE": ("team_nfl_ne", "New England Patriots", "New England"), - "NWE": ("team_nfl_ne", "New England Patriots", "New England"), - "NO": ("team_nfl_no", "New Orleans Saints", "New Orleans"), - "NOR": ("team_nfl_no", "New Orleans Saints", "New Orleans"), - "NYG": ("team_nfl_nyg", "New York Giants", "New York"), - "NYJ": ("team_nfl_nyj", "New York Jets", "New York"), - "PHI": ("team_nfl_phi", "Philadelphia Eagles", "Philadelphia"), - "PIT": ("team_nfl_pit", "Pittsburgh Steelers", "Pittsburgh"), - "SF": ("team_nfl_sf", "San Francisco 49ers", "San Francisco"), - "SFO": ("team_nfl_sf", "San Francisco 49ers", "San Francisco"), - "SEA": ("team_nfl_sea", "Seattle Seahawks", "Seattle"), - "TB": ("team_nfl_tb", "Tampa Bay Buccaneers", "Tampa Bay"), - "TAM": ("team_nfl_tb", "Tampa Bay Buccaneers", "Tampa Bay"), - "TEN": ("team_nfl_ten", "Tennessee Titans", "Tennessee"), - "WAS": ("team_nfl_was", "Washington Commanders", "Washington"), - "WSH": ("team_nfl_was", "Washington Commanders", "Washington"), + "ARI": ("team_nfl_ari", "Arizona Cardinals", "Arizona", "stadium_nfl_state_farm_stadium"), + "ATL": ("team_nfl_atl", "Atlanta Falcons", "Atlanta", "stadium_nfl_mercedes_benz_stadium"), + "BAL": ("team_nfl_bal", "Baltimore Ravens", "Baltimore", "stadium_nfl_mandt_bank_stadium"), + "BUF": ("team_nfl_buf", "Buffalo Bills", "Buffalo", "stadium_nfl_highmark_stadium"), + "CAR": ("team_nfl_car", "Carolina Panthers", "Carolina", "stadium_nfl_bank_of_america_stadium"), + "CHI": ("team_nfl_chi", "Chicago Bears", "Chicago", "stadium_nfl_soldier_field"), + "CIN": ("team_nfl_cin", "Cincinnati Bengals", "Cincinnati", "stadium_nfl_paycor_stadium"), + "CLE": ("team_nfl_cle", "Cleveland Browns", "Cleveland", "stadium_nfl_huntington_bank_field"), + "DAL": ("team_nfl_dal", "Dallas Cowboys", "Dallas", "stadium_nfl_att_stadium"), + "DEN": ("team_nfl_den", "Denver Broncos", "Denver", "stadium_nfl_empower_field"), + "DET": ("team_nfl_det", "Detroit Lions", "Detroit", "stadium_nfl_ford_field"), + "GB": ("team_nfl_gb", "Green Bay Packers", "Green Bay", "stadium_nfl_lambeau_field"), + "GNB": ("team_nfl_gb", "Green Bay Packers", "Green Bay", "stadium_nfl_lambeau_field"), + "HOU": ("team_nfl_hou", "Houston Texans", "Houston", "stadium_nfl_nrg_stadium"), + "IND": ("team_nfl_ind", "Indianapolis Colts", "Indianapolis", "stadium_nfl_lucas_oil_stadium"), + "JAX": ("team_nfl_jax", "Jacksonville Jaguars", "Jacksonville", "stadium_nfl_everbank_stadium"), + "JAC": ("team_nfl_jax", "Jacksonville Jaguars", "Jacksonville", "stadium_nfl_everbank_stadium"), + "KC": ("team_nfl_kc", "Kansas City Chiefs", "Kansas City", "stadium_nfl_arrowhead_stadium"), + "KAN": ("team_nfl_kc", "Kansas City Chiefs", "Kansas City", "stadium_nfl_arrowhead_stadium"), + "LV": ("team_nfl_lv", "Las Vegas Raiders", "Las Vegas", "stadium_nfl_allegiant_stadium"), + "LAC": ("team_nfl_lac", "Los Angeles Chargers", "Los Angeles", "stadium_nfl_sofi_stadium"), + "LAR": ("team_nfl_lar", "Los Angeles Rams", "Los Angeles", "stadium_nfl_sofi_stadium"), + "MIA": ("team_nfl_mia", "Miami Dolphins", "Miami", "stadium_nfl_hard_rock_stadium"), + "MIN": ("team_nfl_min", "Minnesota Vikings", "Minnesota", "stadium_nfl_us_bank_stadium"), + "NE": ("team_nfl_ne", "New England Patriots", "New England", "stadium_nfl_gillette_stadium"), + "NWE": ("team_nfl_ne", "New England Patriots", "New England", "stadium_nfl_gillette_stadium"), + "NO": ("team_nfl_no", "New Orleans Saints", "New Orleans", "stadium_nfl_caesars_superdome"), + "NOR": ("team_nfl_no", "New Orleans Saints", "New Orleans", "stadium_nfl_caesars_superdome"), + "NYG": ("team_nfl_nyg", "New York Giants", "New York", "stadium_nfl_metlife_stadium"), + "NYJ": ("team_nfl_nyj", "New York Jets", "New York", "stadium_nfl_metlife_stadium"), + "PHI": ("team_nfl_phi", "Philadelphia Eagles", "Philadelphia", "stadium_nfl_lincoln_financial_field"), + "PIT": ("team_nfl_pit", "Pittsburgh Steelers", "Pittsburgh", "stadium_nfl_acrisure_stadium"), + "SF": ("team_nfl_sf", "San Francisco 49ers", "San Francisco", "stadium_nfl_levis_stadium"), + "SFO": ("team_nfl_sf", "San Francisco 49ers", "San Francisco", "stadium_nfl_levis_stadium"), + "SEA": ("team_nfl_sea", "Seattle Seahawks", "Seattle", "stadium_nfl_lumen_field"), + "TB": ("team_nfl_tb", "Tampa Bay Buccaneers", "Tampa Bay", "stadium_nfl_raymond_james_stadium"), + "TAM": ("team_nfl_tb", "Tampa Bay Buccaneers", "Tampa Bay", "stadium_nfl_raymond_james_stadium"), + "TEN": ("team_nfl_ten", "Tennessee Titans", "Tennessee", "stadium_nfl_nissan_stadium"), + "WAS": ("team_nfl_was", "Washington Commanders", "Washington", "stadium_nfl_northwest_stadium"), + "WSH": ("team_nfl_was", "Washington Commanders", "Washington", "stadium_nfl_northwest_stadium"), }, "nhl": { - "ANA": ("team_nhl_ana", "Anaheim Ducks", "Anaheim"), - "ARI": ("team_nhl_ari", "Utah Hockey Club", "Utah"), # Moved 2024 - "UTA": ("team_nhl_ari", "Utah Hockey Club", "Utah"), - "BOS": ("team_nhl_bos", "Boston Bruins", "Boston"), - "BUF": ("team_nhl_buf", "Buffalo Sabres", "Buffalo"), - "CGY": ("team_nhl_cgy", "Calgary Flames", "Calgary"), - "CAR": ("team_nhl_car", "Carolina Hurricanes", "Carolina"), - "CHI": ("team_nhl_chi", "Chicago Blackhawks", "Chicago"), - "COL": ("team_nhl_col", "Colorado Avalanche", "Colorado"), - "CBJ": ("team_nhl_cbj", "Columbus Blue Jackets", "Columbus"), - "DAL": ("team_nhl_dal", "Dallas Stars", "Dallas"), - "DET": ("team_nhl_det", "Detroit Red Wings", "Detroit"), - "EDM": ("team_nhl_edm", "Edmonton Oilers", "Edmonton"), - "FLA": ("team_nhl_fla", "Florida Panthers", "Florida"), - "LA": ("team_nhl_la", "Los Angeles Kings", "Los Angeles"), - "LAK": ("team_nhl_la", "Los Angeles Kings", "Los Angeles"), - "MIN": ("team_nhl_min", "Minnesota Wild", "Minnesota"), - "MTL": ("team_nhl_mtl", "Montreal Canadiens", "Montreal"), - "MON": ("team_nhl_mtl", "Montreal Canadiens", "Montreal"), - "NSH": ("team_nhl_nsh", "Nashville Predators", "Nashville"), - "NAS": ("team_nhl_nsh", "Nashville Predators", "Nashville"), - "NJ": ("team_nhl_njd", "New Jersey Devils", "New Jersey"), - "NJD": ("team_nhl_njd", "New Jersey Devils", "New Jersey"), - "NYI": ("team_nhl_nyi", "New York Islanders", "New York"), - "NYR": ("team_nhl_nyr", "New York Rangers", "New York"), - "OTT": ("team_nhl_ott", "Ottawa Senators", "Ottawa"), - "PHI": ("team_nhl_phi", "Philadelphia Flyers", "Philadelphia"), - "PIT": ("team_nhl_pit", "Pittsburgh Penguins", "Pittsburgh"), - "SJ": ("team_nhl_sj", "San Jose Sharks", "San Jose"), - "SJS": ("team_nhl_sj", "San Jose Sharks", "San Jose"), - "SEA": ("team_nhl_sea", "Seattle Kraken", "Seattle"), - "STL": ("team_nhl_stl", "St. Louis Blues", "St. Louis"), - "TB": ("team_nhl_tb", "Tampa Bay Lightning", "Tampa Bay"), - "TBL": ("team_nhl_tb", "Tampa Bay Lightning", "Tampa Bay"), - "TOR": ("team_nhl_tor", "Toronto Maple Leafs", "Toronto"), - "VAN": ("team_nhl_van", "Vancouver Canucks", "Vancouver"), - "VGK": ("team_nhl_vgk", "Vegas Golden Knights", "Vegas"), - "VEG": ("team_nhl_vgk", "Vegas Golden Knights", "Vegas"), - "WAS": ("team_nhl_was", "Washington Capitals", "Washington"), - "WSH": ("team_nhl_was", "Washington Capitals", "Washington"), - "WPG": ("team_nhl_wpg", "Winnipeg Jets", "Winnipeg"), + "ANA": ("team_nhl_ana", "Anaheim Ducks", "Anaheim", "stadium_nhl_honda_center"), + "ARI": ("team_nhl_ari", "Utah Hockey Club", "Utah", "stadium_nhl_delta_center"), # Moved 2024 + "UTA": ("team_nhl_ari", "Utah Hockey Club", "Utah", "stadium_nhl_delta_center"), + "BOS": ("team_nhl_bos", "Boston Bruins", "Boston", "stadium_nhl_td_garden"), + "BUF": ("team_nhl_buf", "Buffalo Sabres", "Buffalo", "stadium_nhl_keybank_center"), + "CGY": ("team_nhl_cgy", "Calgary Flames", "Calgary", "stadium_nhl_scotiabank_saddledome"), + "CAR": ("team_nhl_car", "Carolina Hurricanes", "Carolina", "stadium_nhl_pnc_arena"), + "CHI": ("team_nhl_chi", "Chicago Blackhawks", "Chicago", "stadium_nhl_united_center"), + "COL": ("team_nhl_col", "Colorado Avalanche", "Colorado", "stadium_nhl_ball_arena"), + "CBJ": ("team_nhl_cbj", "Columbus Blue Jackets", "Columbus", "stadium_nhl_nationwide_arena"), + "DAL": ("team_nhl_dal", "Dallas Stars", "Dallas", "stadium_nhl_american_airlines_center"), + "DET": ("team_nhl_det", "Detroit Red Wings", "Detroit", "stadium_nhl_little_caesars_arena"), + "EDM": ("team_nhl_edm", "Edmonton Oilers", "Edmonton", "stadium_nhl_rogers_place"), + "FLA": ("team_nhl_fla", "Florida Panthers", "Florida", "stadium_nhl_amerant_bank_arena"), + "LA": ("team_nhl_la", "Los Angeles Kings", "Los Angeles", "stadium_nhl_cryptocom_arena"), + "LAK": ("team_nhl_la", "Los Angeles Kings", "Los Angeles", "stadium_nhl_cryptocom_arena"), + "MIN": ("team_nhl_min", "Minnesota Wild", "Minnesota", "stadium_nhl_xcel_energy_center"), + "MTL": ("team_nhl_mtl", "Montreal Canadiens", "Montreal", "stadium_nhl_bell_centre"), + "MON": ("team_nhl_mtl", "Montreal Canadiens", "Montreal", "stadium_nhl_bell_centre"), + "NSH": ("team_nhl_nsh", "Nashville Predators", "Nashville", "stadium_nhl_bridgestone_arena"), + "NAS": ("team_nhl_nsh", "Nashville Predators", "Nashville", "stadium_nhl_bridgestone_arena"), + "NJ": ("team_nhl_njd", "New Jersey Devils", "New Jersey", "stadium_nhl_prudential_center"), + "NJD": ("team_nhl_njd", "New Jersey Devils", "New Jersey", "stadium_nhl_prudential_center"), + "NYI": ("team_nhl_nyi", "New York Islanders", "New York", "stadium_nhl_ubs_arena"), + "NYR": ("team_nhl_nyr", "New York Rangers", "New York", "stadium_nhl_madison_square_garden"), + "OTT": ("team_nhl_ott", "Ottawa Senators", "Ottawa", "stadium_nhl_canadian_tire_centre"), + "PHI": ("team_nhl_phi", "Philadelphia Flyers", "Philadelphia", "stadium_nhl_wells_fargo_center"), + "PIT": ("team_nhl_pit", "Pittsburgh Penguins", "Pittsburgh", "stadium_nhl_ppg_paints_arena"), + "SJ": ("team_nhl_sj", "San Jose Sharks", "San Jose", "stadium_nhl_sap_center"), + "SJS": ("team_nhl_sj", "San Jose Sharks", "San Jose", "stadium_nhl_sap_center"), + "SEA": ("team_nhl_sea", "Seattle Kraken", "Seattle", "stadium_nhl_climate_pledge_arena"), + "STL": ("team_nhl_stl", "St. Louis Blues", "St. Louis", "stadium_nhl_enterprise_center"), + "TB": ("team_nhl_tb", "Tampa Bay Lightning", "Tampa Bay", "stadium_nhl_amalie_arena"), + "TBL": ("team_nhl_tb", "Tampa Bay Lightning", "Tampa Bay", "stadium_nhl_amalie_arena"), + "TOR": ("team_nhl_tor", "Toronto Maple Leafs", "Toronto", "stadium_nhl_scotiabank_arena"), + "VAN": ("team_nhl_van", "Vancouver Canucks", "Vancouver", "stadium_nhl_rogers_arena"), + "VGK": ("team_nhl_vgk", "Vegas Golden Knights", "Vegas", "stadium_nhl_tmobile_arena"), + "VEG": ("team_nhl_vgk", "Vegas Golden Knights", "Vegas", "stadium_nhl_tmobile_arena"), + "WAS": ("team_nhl_was", "Washington Capitals", "Washington", "stadium_nhl_capital_one_arena"), + "WSH": ("team_nhl_was", "Washington Capitals", "Washington", "stadium_nhl_capital_one_arena"), + "WPG": ("team_nhl_wpg", "Winnipeg Jets", "Winnipeg", "stadium_nhl_canada_life_centre"), }, "mls": { - "ATL": ("team_mls_atl", "Atlanta United", "Atlanta"), - "AUS": ("team_mls_aus", "Austin FC", "Austin"), - "CLT": ("team_mls_clt", "Charlotte FC", "Charlotte"), - "CHI": ("team_mls_chi", "Chicago Fire", "Chicago"), - "CIN": ("team_mls_cin", "FC Cincinnati", "Cincinnati"), - "COL": ("team_mls_col", "Colorado Rapids", "Colorado"), - "CLB": ("team_mls_clb", "Columbus Crew", "Columbus"), - "DAL": ("team_mls_dal", "FC Dallas", "Dallas"), - "DC": ("team_mls_dc", "D.C. United", "Washington"), - "HOU": ("team_mls_hou", "Houston Dynamo", "Houston"), - "LAG": ("team_mls_lag", "LA Galaxy", "Los Angeles"), - "LAFC": ("team_mls_lafc", "Los Angeles FC", "Los Angeles"), - "MIA": ("team_mls_mia", "Inter Miami", "Miami"), - "MIN": ("team_mls_min", "Minnesota United", "Minnesota"), - "MTL": ("team_mls_mtl", "CF Montreal", "Montreal"), - "NSH": ("team_mls_nsh", "Nashville SC", "Nashville"), - "NE": ("team_mls_ne", "New England Revolution", "New England"), - "NYC": ("team_mls_nyc", "New York City FC", "New York"), - "RB": ("team_mls_ny", "New York Red Bulls", "New York"), - "RBNY": ("team_mls_ny", "New York Red Bulls", "New York"), - "ORL": ("team_mls_orl", "Orlando City", "Orlando"), - "PHI": ("team_mls_phi", "Philadelphia Union", "Philadelphia"), - "POR": ("team_mls_por", "Portland Timbers", "Portland"), - "SLC": ("team_mls_slc", "Real Salt Lake", "Salt Lake"), - "RSL": ("team_mls_slc", "Real Salt Lake", "Salt Lake"), - "SJ": ("team_mls_sj", "San Jose Earthquakes", "San Jose"), - "SD": ("team_mls_sd", "San Diego FC", "San Diego"), - "SEA": ("team_mls_sea", "Seattle Sounders", "Seattle"), - "SKC": ("team_mls_skc", "Sporting Kansas City", "Kansas City"), - "STL": ("team_mls_stl", "St. Louis City SC", "St. Louis"), - "TOR": ("team_mls_tor", "Toronto FC", "Toronto"), - "VAN": ("team_mls_van", "Vancouver Whitecaps", "Vancouver"), + "ATL": ("team_mls_atl", "Atlanta United", "Atlanta", "stadium_mls_mercedes_benz_stadium"), + "AUS": ("team_mls_aus", "Austin FC", "Austin", "stadium_mls_q2_stadium"), + "CLT": ("team_mls_clt", "Charlotte FC", "Charlotte", "stadium_mls_bank_of_america_stadium"), + "CHI": ("team_mls_chi", "Chicago Fire", "Chicago", "stadium_mls_soldier_field"), + "CIN": ("team_mls_cin", "FC Cincinnati", "Cincinnati", "stadium_mls_tql_stadium"), + "COL": ("team_mls_col", "Colorado Rapids", "Colorado", "stadium_mls_dicks_sporting_goods_park"), + "CLB": ("team_mls_clb", "Columbus Crew", "Columbus", "stadium_mls_lower_com_field"), + "DAL": ("team_mls_dal", "FC Dallas", "Dallas", "stadium_mls_toyota_stadium"), + "DC": ("team_mls_dc", "D.C. United", "Washington", "stadium_mls_audi_field"), + "HOU": ("team_mls_hou", "Houston Dynamo", "Houston", "stadium_mls_shell_energy_stadium"), + "LAG": ("team_mls_lag", "LA Galaxy", "Los Angeles", "stadium_mls_dignity_health_sports_park"), + "LAFC": ("team_mls_lafc", "Los Angeles FC", "Los Angeles", "stadium_mls_bmo_stadium"), + "MIA": ("team_mls_mia", "Inter Miami", "Miami", "stadium_mls_chase_stadium"), + "MIN": ("team_mls_min", "Minnesota United", "Minnesota", "stadium_mls_allianz_field"), + "MTL": ("team_mls_mtl", "CF Montreal", "Montreal", "stadium_mls_stade_saputo"), + "NSH": ("team_mls_nsh", "Nashville SC", "Nashville", "stadium_mls_geodis_park"), + "NE": ("team_mls_ne", "New England Revolution", "New England", "stadium_mls_gillette_stadium"), + "NYC": ("team_mls_nyc", "New York City FC", "New York", "stadium_mls_yankee_stadium"), + "RB": ("team_mls_ny", "New York Red Bulls", "New York", "stadium_mls_red_bull_arena"), + "RBNY": ("team_mls_ny", "New York Red Bulls", "New York", "stadium_mls_red_bull_arena"), + "ORL": ("team_mls_orl", "Orlando City", "Orlando", "stadium_mls_inter_co_stadium"), + "PHI": ("team_mls_phi", "Philadelphia Union", "Philadelphia", "stadium_mls_subaru_park"), + "POR": ("team_mls_por", "Portland Timbers", "Portland", "stadium_mls_providence_park"), + "SLC": ("team_mls_slc", "Real Salt Lake", "Salt Lake", "stadium_mls_america_first_field"), + "RSL": ("team_mls_slc", "Real Salt Lake", "Salt Lake", "stadium_mls_america_first_field"), + "SJ": ("team_mls_sj", "San Jose Earthquakes", "San Jose", "stadium_mls_paypal_park"), + "SD": ("team_mls_sd", "San Diego FC", "San Diego", "stadium_mls_snapdragon_stadium"), + "SEA": ("team_mls_sea", "Seattle Sounders", "Seattle", "stadium_mls_lumen_field"), + "SKC": ("team_mls_skc", "Sporting Kansas City", "Kansas City", "stadium_mls_childrens_mercy_park"), + "STL": ("team_mls_stl", "St. Louis City SC", "St. Louis", "stadium_mls_citypark"), + "TOR": ("team_mls_tor", "Toronto FC", "Toronto", "stadium_mls_bmo_field"), + "VAN": ("team_mls_van", "Vancouver Whitecaps", "Vancouver", "stadium_mls_bc_place"), }, "wnba": { - "ATL": ("team_wnba_atl", "Atlanta Dream", "Atlanta"), - "CHI": ("team_wnba_chi", "Chicago Sky", "Chicago"), - "CON": ("team_wnba_con", "Connecticut Sun", "Connecticut"), - "DAL": ("team_wnba_dal", "Dallas Wings", "Dallas"), - "GSV": ("team_wnba_gsv", "Golden State Valkyries", "Golden State"), - "IND": ("team_wnba_ind", "Indiana Fever", "Indiana"), - "LV": ("team_wnba_lv", "Las Vegas Aces", "Las Vegas"), - "LA": ("team_wnba_la", "Los Angeles Sparks", "Los Angeles"), - "MIN": ("team_wnba_min", "Minnesota Lynx", "Minnesota"), - "NY": ("team_wnba_ny", "New York Liberty", "New York"), - "PHX": ("team_wnba_phx", "Phoenix Mercury", "Phoenix"), - "SEA": ("team_wnba_sea", "Seattle Storm", "Seattle"), - "WAS": ("team_wnba_was", "Washington Mystics", "Washington"), + "ATL": ("team_wnba_atl", "Atlanta Dream", "Atlanta", "stadium_wnba_gateway_center_arena"), + "CHI": ("team_wnba_chi", "Chicago Sky", "Chicago", "stadium_wnba_wintrust_arena"), + "CON": ("team_wnba_con", "Connecticut Sun", "Connecticut", "stadium_wnba_mohegan_sun_arena"), + "DAL": ("team_wnba_dal", "Dallas Wings", "Dallas", "stadium_wnba_college_park_center"), + "GSV": ("team_wnba_gsv", "Golden State Valkyries", "Golden State", "stadium_wnba_chase_center"), + "IND": ("team_wnba_ind", "Indiana Fever", "Indiana", "stadium_wnba_gainbridge_fieldhouse"), + "LV": ("team_wnba_lv", "Las Vegas Aces", "Las Vegas", "stadium_wnba_michelob_ultra_arena"), + "LA": ("team_wnba_la", "Los Angeles Sparks", "Los Angeles", "stadium_wnba_cryptocom_arena"), + "MIN": ("team_wnba_min", "Minnesota Lynx", "Minnesota", "stadium_wnba_target_center"), + "NY": ("team_wnba_ny", "New York Liberty", "New York", "stadium_wnba_barclays_center"), + "PHX": ("team_wnba_phx", "Phoenix Mercury", "Phoenix", "stadium_wnba_footprint_center"), + "SEA": ("team_wnba_sea", "Seattle Storm", "Seattle", "stadium_wnba_climate_pledge_arena"), + "WAS": ("team_wnba_was", "Washington Mystics", "Washington", "stadium_wnba_entertainment_sports_arena"), }, "nwsl": { - "ANF": ("team_nwsl_anf", "Angel City FC", "Los Angeles"), - "CHI": ("team_nwsl_chi", "Chicago Red Stars", "Chicago"), - "HOU": ("team_nwsl_hou", "Houston Dash", "Houston"), - "KC": ("team_nwsl_kc", "Kansas City Current", "Kansas City"), - "NJ": ("team_nwsl_nj", "NJ/NY Gotham FC", "New Jersey"), - "NC": ("team_nwsl_nc", "North Carolina Courage", "North Carolina"), - "ORL": ("team_nwsl_orl", "Orlando Pride", "Orlando"), - "POR": ("team_nwsl_por", "Portland Thorns", "Portland"), - "RGN": ("team_nwsl_rgn", "Racing Louisville", "Louisville"), - "SD": ("team_nwsl_sd", "San Diego Wave", "San Diego"), - "SEA": ("team_nwsl_sea", "Seattle Reign", "Seattle"), - "SLC": ("team_nwsl_slc", "Utah Royals", "Utah"), - "WAS": ("team_nwsl_was", "Washington Spirit", "Washington"), - "BFC": ("team_nwsl_bfc", "Bay FC", "San Francisco"), - "BOS": ("team_nwsl_bos", "Boston Legacy FC", "Boston"), - "DEN": ("team_nwsl_den", "Denver Summit FC", "Denver"), + "ANF": ("team_nwsl_anf", "Angel City FC", "Los Angeles", "stadium_nwsl_bmo_stadium"), + "CHI": ("team_nwsl_chi", "Chicago Red Stars", "Chicago", "stadium_nwsl_seatgeek_stadium"), + "HOU": ("team_nwsl_hou", "Houston Dash", "Houston", "stadium_nwsl_shell_energy_stadium"), + "KC": ("team_nwsl_kc", "Kansas City Current", "Kansas City", "stadium_nwsl_cpkc_stadium"), + "NJ": ("team_nwsl_nj", "NJ/NY Gotham FC", "New Jersey", "stadium_nwsl_red_bull_arena"), + "NC": ("team_nwsl_nc", "North Carolina Courage", "North Carolina", "stadium_nwsl_wakemed_soccer_park"), + "ORL": ("team_nwsl_orl", "Orlando Pride", "Orlando", "stadium_nwsl_inter_co_stadium"), + "POR": ("team_nwsl_por", "Portland Thorns", "Portland", "stadium_nwsl_providence_park"), + "RGN": ("team_nwsl_rgn", "Racing Louisville", "Louisville", "stadium_nwsl_lynn_family_stadium"), + "SD": ("team_nwsl_sd", "San Diego Wave", "San Diego", "stadium_nwsl_snapdragon_stadium"), + "SEA": ("team_nwsl_sea", "Seattle Reign", "Seattle", "stadium_nwsl_lumen_field"), + "SLC": ("team_nwsl_slc", "Utah Royals", "Utah", "stadium_nwsl_america_first_field"), + "WAS": ("team_nwsl_was", "Washington Spirit", "Washington", "stadium_nwsl_audi_field"), + "BFC": ("team_nwsl_bfc", "Bay FC", "San Francisco", "stadium_nwsl_paypal_park"), + "BOS": ("team_nwsl_bos", "Boston Legacy FC", "Boston", "stadium_nwsl_gillette_stadium"), + "DEN": ("team_nwsl_den", "Denver Summit FC", "Denver", "stadium_nwsl_dicks_sporting_goods_park"), }, } @@ -308,7 +308,7 @@ class TeamResolver: # Group by canonical ID to avoid duplicates by_id: dict[str, tuple[str, list[str]]] = {} - for abbrev, (canonical_id, full_name, city) in self._mappings.items(): + for abbrev, (canonical_id, full_name, city, stadium_id) in self._mappings.items(): if canonical_id not in by_id: by_id[canonical_id] = (full_name, []) @@ -346,7 +346,7 @@ class TeamResolver: # 1. Exact match against abbreviation if value_upper in self._mappings: - canonical_id, full_name, _ = self._mappings[value_upper] + canonical_id, full_name, _, _ = self._mappings[value_upper] return TeamResolveResult( canonical_id=canonical_id, confidence=100, @@ -354,7 +354,7 @@ class TeamResolver: ) # 2. Exact match against full names - for abbrev, (canonical_id, full_name, city) in self._mappings.items(): + for abbrev, (canonical_id, full_name, city, stadium_id) in self._mappings.items(): if value_lower == full_name.lower() or value_lower == city.lower(): return TeamResolveResult( canonical_id=canonical_id, @@ -426,30 +426,30 @@ class TeamResolver: review_item=review_item, ) - def get_team_info(self, abbreviation: str) -> Optional[tuple[str, str, str]]: + def get_team_info(self, abbreviation: str) -> Optional[tuple[str, str, str, str]]: """Get team info by abbreviation. Args: abbreviation: Team abbreviation Returns: - Tuple of (canonical_id, full_name, city) or None + Tuple of (canonical_id, full_name, city, stadium_id) or None """ return self._mappings.get(abbreviation.upper()) - def get_all_teams(self) -> list[tuple[str, str, str]]: + def get_all_teams(self) -> list[tuple[str, str, str, str]]: """Get all teams for this sport. Returns: - List of (canonical_id, full_name, city) tuples + List of (canonical_id, full_name, city, stadium_id) tuples """ seen = set() result = [] - for abbrev, (canonical_id, full_name, city) in self._mappings.items(): + for abbrev, (canonical_id, full_name, city, stadium_id) in self._mappings.items(): if canonical_id not in seen: seen.add(canonical_id) - result.append((canonical_id, full_name, city)) + result.append((canonical_id, full_name, city, stadium_id)) return result diff --git a/Scripts/sportstime_parser/scrapers/mlb.py b/Scripts/sportstime_parser/scrapers/mlb.py index 329050b..1a54162 100644 --- a/Scripts/sportstime_parser/scrapers/mlb.py +++ b/Scripts/sportstime_parser/scrapers/mlb.py @@ -624,7 +624,7 @@ class MLBScraper(BaseScraper): for abbrev in abbrevs: team_divisions[abbrev] = (league, div) - for abbrev, (team_id, full_name, city) in TEAM_MAPPINGS.get("mlb", {}).items(): + for abbrev, (team_id, full_name, city, stadium_id) in TEAM_MAPPINGS.get("mlb", {}).items(): if team_id in seen: continue seen.add(team_id) @@ -642,14 +642,6 @@ class MLBScraper(BaseScraper): # Get league and division league, div = team_divisions.get(abbrev, (None, None)) - # Get stadium ID - stadium_id = None - mlb_stadiums = STADIUM_MAPPINGS.get("mlb", {}) - for sid, sinfo in mlb_stadiums.items(): - if city.lower() in sinfo.city.lower() or sinfo.city.lower() in city.lower(): - stadium_id = sid - break - team = Team( id=team_id, sport="mlb", diff --git a/Scripts/sportstime_parser/scrapers/mls.py b/Scripts/sportstime_parser/scrapers/mls.py index 456246e..5eadc6f 100644 --- a/Scripts/sportstime_parser/scrapers/mls.py +++ b/Scripts/sportstime_parser/scrapers/mls.py @@ -345,7 +345,7 @@ class MLSScraper(BaseScraper): for abbrev in abbrevs: team_conferences[abbrev] = conf - for abbrev, (team_id, full_name, city) in TEAM_MAPPINGS.get("mls", {}).items(): + for abbrev, (team_id, full_name, city, stadium_id) in TEAM_MAPPINGS.get("mls", {}).items(): if team_id in seen: continue seen.add(team_id) @@ -356,14 +356,6 @@ class MLSScraper(BaseScraper): # Get conference conf = team_conferences.get(abbrev) - # Get stadium ID - stadium_id = None - mls_stadiums = STADIUM_MAPPINGS.get("mls", {}) - for sid, sinfo in mls_stadiums.items(): - if city.lower() in sinfo.city.lower() or sinfo.city.lower() in city.lower(): - stadium_id = sid - break - team = Team( id=team_id, sport="mls", diff --git a/Scripts/sportstime_parser/scrapers/nba.py b/Scripts/sportstime_parser/scrapers/nba.py index 1621536..19b05c3 100644 --- a/Scripts/sportstime_parser/scrapers/nba.py +++ b/Scripts/sportstime_parser/scrapers/nba.py @@ -589,7 +589,7 @@ class NBAScraper(BaseScraper): for abbrev in abbrevs: team_divisions[abbrev] = (conf, div) - for abbrev, (team_id, full_name, city) in TEAM_MAPPINGS.get("nba", {}).items(): + for abbrev, (team_id, full_name, city, stadium_id) in TEAM_MAPPINGS.get("nba", {}).items(): if team_id in seen: continue seen.add(team_id) @@ -618,13 +618,6 @@ class NBAScraper(BaseScraper): # Get conference and division conf, div = team_divisions.get(abbrev, (None, None)) - # Get stadium ID - stadium_id = None - for sid, sinfo in STADIUM_MAPPINGS.get("nba", {}).items(): - if city.lower() in sinfo.city.lower() or sinfo.city.lower() in city.lower(): - stadium_id = sid - break - team = Team( id=team_id, sport="nba", diff --git a/Scripts/sportstime_parser/scrapers/nfl.py b/Scripts/sportstime_parser/scrapers/nfl.py index 4f4b610..02a6c71 100644 --- a/Scripts/sportstime_parser/scrapers/nfl.py +++ b/Scripts/sportstime_parser/scrapers/nfl.py @@ -523,7 +523,7 @@ class NFLScraper(BaseScraper): for abbrev in abbrevs: team_divisions[abbrev] = (conf, div) - for abbrev, (team_id, full_name, city) in TEAM_MAPPINGS.get("nfl", {}).items(): + for abbrev, (team_id, full_name, city, stadium_id) in TEAM_MAPPINGS.get("nfl", {}).items(): if team_id in seen: continue seen.add(team_id) @@ -535,14 +535,6 @@ class NFLScraper(BaseScraper): # Get conference and division conf, div = team_divisions.get(abbrev, (None, None)) - # Get stadium ID - stadium_id = None - nfl_stadiums = STADIUM_MAPPINGS.get("nfl", {}) - for sid, sinfo in nfl_stadiums.items(): - if city.lower() in sinfo.city.lower() or sinfo.city.lower() in city.lower(): - stadium_id = sid - break - team = Team( id=team_id, sport="nfl", diff --git a/Scripts/sportstime_parser/scrapers/nhl.py b/Scripts/sportstime_parser/scrapers/nhl.py index a9917fa..60156b7 100644 --- a/Scripts/sportstime_parser/scrapers/nhl.py +++ b/Scripts/sportstime_parser/scrapers/nhl.py @@ -589,7 +589,7 @@ class NHLScraper(BaseScraper): for abbrev in abbrevs: team_divisions[abbrev] = (conf, div) - for abbrev, (team_id, full_name, city) in TEAM_MAPPINGS.get("nhl", {}).items(): + for abbrev, (team_id, full_name, city, stadium_id) in TEAM_MAPPINGS.get("nhl", {}).items(): if team_id in seen: continue seen.add(team_id) @@ -604,14 +604,6 @@ class NHLScraper(BaseScraper): # Get conference and division conf, div = team_divisions.get(abbrev, (None, None)) - # Get stadium ID - stadium_id = None - nhl_stadiums = STADIUM_MAPPINGS.get("nhl", {}) - for sid, sinfo in nhl_stadiums.items(): - if city.lower() in sinfo.city.lower() or sinfo.city.lower() in city.lower(): - stadium_id = sid - break - team = Team( id=team_id, sport="nhl", diff --git a/Scripts/sportstime_parser/scrapers/nwsl.py b/Scripts/sportstime_parser/scrapers/nwsl.py index f3aa4c1..5b55e98 100644 --- a/Scripts/sportstime_parser/scrapers/nwsl.py +++ b/Scripts/sportstime_parser/scrapers/nwsl.py @@ -323,7 +323,7 @@ class NWSLScraper(BaseScraper): teams: list[Team] = [] seen: set[str] = set() - for abbrev, (team_id, full_name, city) in TEAM_MAPPINGS.get("nwsl", {}).items(): + for abbrev, (team_id, full_name, city, stadium_id) in TEAM_MAPPINGS.get("nwsl", {}).items(): if team_id in seen: continue seen.add(team_id) @@ -331,14 +331,6 @@ class NWSLScraper(BaseScraper): # Parse team name team_name = full_name - # Get stadium ID - stadium_id = None - nwsl_stadiums = STADIUM_MAPPINGS.get("nwsl", {}) - for sid, sinfo in nwsl_stadiums.items(): - if city.lower() in sinfo.city.lower() or sinfo.city.lower() in city.lower(): - stadium_id = sid - break - team = Team( id=team_id, sport="nwsl", diff --git a/Scripts/sportstime_parser/scrapers/wnba.py b/Scripts/sportstime_parser/scrapers/wnba.py index b6fe41e..7b4b1f5 100644 --- a/Scripts/sportstime_parser/scrapers/wnba.py +++ b/Scripts/sportstime_parser/scrapers/wnba.py @@ -323,7 +323,7 @@ class WNBAScraper(BaseScraper): teams: list[Team] = [] seen: set[str] = set() - for abbrev, (team_id, full_name, city) in TEAM_MAPPINGS.get("wnba", {}).items(): + for abbrev, (team_id, full_name, city, stadium_id) in TEAM_MAPPINGS.get("wnba", {}).items(): if team_id in seen: continue seen.add(team_id) @@ -332,14 +332,6 @@ class WNBAScraper(BaseScraper): parts = full_name.split() team_name = parts[-1] if parts else full_name - # Get stadium ID - stadium_id = None - wnba_stadiums = STADIUM_MAPPINGS.get("wnba", {}) - for sid, sinfo in wnba_stadiums.items(): - if city.lower() in sinfo.city.lower() or sinfo.city.lower() in city.lower(): - stadium_id = sid - break - team = Team( id=team_id, sport="wnba", diff --git a/Scripts/stadium_aliases.json b/Scripts/stadium_aliases.json index 22da8b8..31d028e 100644 --- a/Scripts/stadium_aliases.json +++ b/Scripts/stadium_aliases.json @@ -1558,5 +1558,269 @@ "stadium_canonical_id": "stadium_nfl_lumen_field", "valid_from": "2002-07-01", "valid_until": "2004-05-31" + }, + { + "alias_name": "salt river fields at talking stick", + "stadium_canonical_id": "stadium_mlb_spring_salt_river_fields", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "salt river fields", + "stadium_canonical_id": "stadium_mlb_spring_salt_river_fields", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "sloan park", + "stadium_canonical_id": "stadium_mlb_spring_sloan_park", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "hohokam stadium", + "stadium_canonical_id": "stadium_mlb_spring_hohokam_stadium", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "hohokam park", + "stadium_canonical_id": "stadium_mlb_spring_hohokam_stadium", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "camelback ranch", + "stadium_canonical_id": "stadium_mlb_spring_camelback_ranch", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "camelback ranch-glendale", + "stadium_canonical_id": "stadium_mlb_spring_camelback_ranch", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "goodyear ballpark", + "stadium_canonical_id": "stadium_mlb_spring_goodyear_ballpark", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "tempe diablo stadium", + "stadium_canonical_id": "stadium_mlb_spring_tempe_diablo_stadium", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "scottsdale stadium", + "stadium_canonical_id": "stadium_mlb_spring_scottsdale_stadium", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "american family fields of phoenix", + "stadium_canonical_id": "stadium_mlb_spring_american_family_fields", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "american family fields", + "stadium_canonical_id": "stadium_mlb_spring_american_family_fields", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "maryvale baseball park", + "stadium_canonical_id": "stadium_mlb_spring_american_family_fields", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "peoria sports complex", + "stadium_canonical_id": "stadium_mlb_spring_peoria_sports_complex", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "peoria stadium", + "stadium_canonical_id": "stadium_mlb_spring_peoria_sports_complex", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "surprise stadium", + "stadium_canonical_id": "stadium_mlb_spring_surprise_stadium", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "jetblue park", + "stadium_canonical_id": "stadium_mlb_spring_jetblue_park", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "jetblue park at fenway south", + "stadium_canonical_id": "stadium_mlb_spring_jetblue_park", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "fenway south", + "stadium_canonical_id": "stadium_mlb_spring_jetblue_park", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "roger dean chevrolet stadium", + "stadium_canonical_id": "stadium_mlb_spring_roger_dean_stadium", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "roger dean stadium", + "stadium_canonical_id": "stadium_mlb_spring_roger_dean_stadium", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "ed smith stadium", + "stadium_canonical_id": "stadium_mlb_spring_ed_smith_stadium", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "george m. steinbrenner field", + "stadium_canonical_id": "stadium_mlb_spring_steinbrenner_field", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "steinbrenner field", + "stadium_canonical_id": "stadium_mlb_spring_steinbrenner_field", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "legends field", + "stadium_canonical_id": "stadium_mlb_spring_steinbrenner_field", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "td ballpark", + "stadium_canonical_id": "stadium_mlb_spring_td_ballpark", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "dunedin stadium", + "stadium_canonical_id": "stadium_mlb_spring_td_ballpark", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "cooltoday park", + "stadium_canonical_id": "stadium_mlb_spring_cooltoday_park", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "cool today park", + "stadium_canonical_id": "stadium_mlb_spring_cooltoday_park", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "hammond stadium", + "stadium_canonical_id": "stadium_mlb_spring_hammond_stadium", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "lee health sports complex", + "stadium_canonical_id": "stadium_mlb_spring_hammond_stadium", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "clover park", + "stadium_canonical_id": "stadium_mlb_spring_clover_park", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "first data field", + "stadium_canonical_id": "stadium_mlb_spring_clover_park", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "baycare ballpark", + "stadium_canonical_id": "stadium_mlb_spring_baycare_ballpark", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "spectrum field", + "stadium_canonical_id": "stadium_mlb_spring_baycare_ballpark", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "bright house field", + "stadium_canonical_id": "stadium_mlb_spring_baycare_ballpark", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "lecom park", + "stadium_canonical_id": "stadium_mlb_spring_lecom_park", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "mckechnie field", + "stadium_canonical_id": "stadium_mlb_spring_lecom_park", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "charlotte sports park", + "stadium_canonical_id": "stadium_mlb_spring_charlotte_sports_park", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "charlotte county stadium", + "stadium_canonical_id": "stadium_mlb_spring_charlotte_sports_park", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "cacti park of the palm beaches", + "stadium_canonical_id": "stadium_mlb_spring_cacti_park", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "cacti park", + "stadium_canonical_id": "stadium_mlb_spring_cacti_park", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "the ballpark of the palm beaches", + "stadium_canonical_id": "stadium_mlb_spring_cacti_park", + "valid_from": null, + "valid_until": null + }, + { + "alias_name": "ballpark of the palm beaches", + "stadium_canonical_id": "stadium_mlb_spring_cacti_park", + "valid_from": null, + "valid_until": null } ] \ No newline at end of file