This commit is contained in:
Trey t
2026-01-20 11:16:20 -06:00
parent 11adfc10dd
commit fbfdf136ae
15 changed files with 539 additions and 97064 deletions

View File

@@ -17,7 +17,8 @@
"Bash(xargs basename:*)",
"Bash(python -m sportstime_parser:*)",
"Bash(python -m py_compile:*)",
"WebFetch(domain:en.wikipedia.org)"
"WebFetch(domain:en.wikipedia.org)",
"Bash(tree:*)"
]
}
}

View File

@@ -11,6 +11,15 @@ from .aliases import (
FuzzyMatch,
ManualReviewItem,
)
from .sport import (
Sport,
LeagueStructure,
LeagueStructureType,
save_sports,
load_sports,
save_league_structures,
load_league_structures,
)
__all__ = [
# Game
@@ -32,4 +41,12 @@ __all__ = [
"StadiumAlias",
"FuzzyMatch",
"ManualReviewItem",
# Sport and League Structure
"Sport",
"LeagueStructure",
"LeagueStructureType",
"save_sports",
"load_sports",
"save_league_structures",
"load_league_structures",
]

View File

@@ -0,0 +1,157 @@
"""Sport and LeagueStructure data models for sportstime-parser."""
from dataclasses import dataclass
from enum import Enum
from typing import Optional
import json
class LeagueStructureType(str, Enum):
"""Type of league structure element."""
CONFERENCE = "conference"
DIVISION = "division"
LEAGUE = "league"
@dataclass
class Sport:
"""Represents a sport with all CloudKit fields.
Attributes:
id: Canonical sport ID (e.g., 'MLB', 'NBA')
abbreviation: Sport abbreviation (e.g., 'MLB', 'NBA')
display_name: Full display name (e.g., 'Major League Baseball')
icon_name: SF Symbol name for the sport icon
color_hex: Primary color as hex string (e.g., '#FF0000')
season_start_month: Month number when season typically starts (1-12)
season_end_month: Month number when season typically ends (1-12)
is_active: Whether the sport is currently active/supported
"""
id: str
abbreviation: str
display_name: str
icon_name: str
color_hex: str
season_start_month: int
season_end_month: int
is_active: bool = True
def to_dict(self) -> dict:
"""Convert to dictionary for JSON serialization."""
return {
"id": self.id,
"abbreviation": self.abbreviation,
"display_name": self.display_name,
"icon_name": self.icon_name,
"color_hex": self.color_hex,
"season_start_month": self.season_start_month,
"season_end_month": self.season_end_month,
"is_active": self.is_active,
}
@classmethod
def from_dict(cls, data: dict) -> "Sport":
"""Create a Sport from a dictionary."""
return cls(
id=data["id"],
abbreviation=data["abbreviation"],
display_name=data["display_name"],
icon_name=data["icon_name"],
color_hex=data["color_hex"],
season_start_month=data["season_start_month"],
season_end_month=data["season_end_month"],
is_active=data.get("is_active", True),
)
def to_json(self) -> str:
"""Serialize to JSON string."""
return json.dumps(self.to_dict(), indent=2)
@classmethod
def from_json(cls, json_str: str) -> "Sport":
"""Deserialize from JSON string."""
return cls.from_dict(json.loads(json_str))
@dataclass
class LeagueStructure:
"""Represents a league structure element (conference, division, etc.).
Attributes:
id: Unique ID (e.g., 'nba_eastern', 'mlb_al_east')
sport: Sport code (e.g., 'NBA', 'MLB')
structure_type: Type of structure (conference, division, league)
name: Full name (e.g., 'Eastern Conference', 'AL East')
abbreviation: Optional abbreviation (e.g., 'East', 'ALE')
parent_id: Parent structure ID (e.g., division's parent is conference)
display_order: Order for display (0-indexed)
"""
id: str
sport: str
structure_type: LeagueStructureType
name: str
abbreviation: Optional[str] = None
parent_id: Optional[str] = None
display_order: int = 0
def to_dict(self) -> dict:
"""Convert to dictionary for JSON serialization."""
return {
"id": self.id,
"sport": self.sport,
"structure_type": self.structure_type.value,
"name": self.name,
"abbreviation": self.abbreviation,
"parent_id": self.parent_id,
"display_order": self.display_order,
}
@classmethod
def from_dict(cls, data: dict) -> "LeagueStructure":
"""Create a LeagueStructure from a dictionary."""
return cls(
id=data["id"],
sport=data["sport"],
structure_type=LeagueStructureType(data["structure_type"]),
name=data["name"],
abbreviation=data.get("abbreviation"),
parent_id=data.get("parent_id"),
display_order=data.get("display_order", 0),
)
def to_json(self) -> str:
"""Serialize to JSON string."""
return json.dumps(self.to_dict(), indent=2)
@classmethod
def from_json(cls, json_str: str) -> "LeagueStructure":
"""Deserialize from JSON string."""
return cls.from_dict(json.loads(json_str))
def save_sports(sports: list[Sport], filepath: str) -> None:
"""Save a list of sports to a JSON file."""
with open(filepath, "w", encoding="utf-8") as f:
json.dump([s.to_dict() for s in sports], f, indent=2)
def load_sports(filepath: str) -> list[Sport]:
"""Load a list of sports from a JSON file."""
with open(filepath, "r", encoding="utf-8") as f:
data = json.load(f)
return [Sport.from_dict(d) for d in data]
def save_league_structures(structures: list[LeagueStructure], filepath: str) -> None:
"""Save a list of league structures to a JSON file."""
with open(filepath, "w", encoding="utf-8") as f:
json.dump([s.to_dict() for s in structures], f, indent=2)
def load_league_structures(filepath: str) -> list[LeagueStructure]:
"""Load a list of league structures from a JSON file."""
with open(filepath, "r", encoding="utf-8") as f:
data = json.load(f)
return [LeagueStructure.from_dict(d) for d in data]

View File

@@ -33,12 +33,20 @@ from ..utils.logging import get_logger
class RecordType(str, Enum):
"""CloudKit record types for SportsTime."""
"""CloudKit record types for SportsTime.
Must match CKRecordType constants in CKModels.swift.
"""
GAME = "Game"
TEAM = "Team"
STADIUM = "Stadium"
TEAM_ALIAS = "TeamAlias"
STADIUM_ALIAS = "StadiumAlias"
SPORT = "Sport"
LEAGUE_STRUCTURE = "LeagueStructure"
TRIP_POLL = "TripPoll"
POLL_VOTE = "PollVote"
ITINERARY_ITEM = "ItineraryItem"
@dataclass

View File

@@ -2,19 +2,44 @@
This module compares local records with CloudKit records to determine
what needs to be created, updated, or deleted.
Field names must match CKModels.swift exactly:
- Stadium: stadiumId, canonicalId, name, city, state, location (CLLocation),
capacity, yearOpened, imageURL, sport
- Team: teamId, canonicalId, name, abbreviation, sport, city, stadiumCanonicalId,
logoURL, primaryColor, secondaryColor
- Game: gameId, canonicalId, homeTeamCanonicalId, awayTeamCanonicalId,
stadiumCanonicalId, dateTime, sport, season, isPlayoff, broadcastInfo
- TeamAlias: aliasId, teamCanonicalId, aliasType, aliasValue, validFrom, validUntil
- StadiumAlias: aliasName, stadiumCanonicalId, validFrom, validUntil
- Sport: sportId, abbreviation, displayName, iconName, colorHex,
seasonStartMonth, seasonEndMonth, isActive
- LeagueStructure: structureId, sport, type, name, abbreviation, parentId, displayOrder
"""
from dataclasses import dataclass, field
from datetime import datetime
from datetime import datetime, date
from enum import Enum
from typing import Any, Optional
from ..models.game import Game
from ..models.team import Team
from ..models.stadium import Stadium
from ..models.aliases import TeamAlias, StadiumAlias, AliasType
from ..models.sport import Sport, LeagueStructure
from .cloudkit import CloudKitRecord, RecordType
def _date_to_datetime(d: Optional[date]) -> Optional[datetime]:
"""Convert a date to a datetime at midnight UTC.
CloudKit TIMESTAMP fields require datetime, not date.
"""
if d is None:
return None
return datetime(d.year, d.month, d.day, 0, 0, 0)
class DiffAction(str, Enum):
"""Action to take for a record."""
CREATE = "create"
@@ -98,24 +123,45 @@ class DiffResult:
class RecordDiffer:
"""Compares local records with CloudKit records."""
"""Compares local records with CloudKit records.
# Fields to compare for each record type
Field names must match CKModels.swift field keys exactly (camelCase).
"""
# Fields to compare for each record type (matching CKModels.swift keys)
GAME_FIELDS = [
"sport", "season", "home_team_id", "away_team_id", "stadium_id",
"game_date", "game_number", "home_score", "away_score", "status",
"gameId", "canonicalId", "sport", "season", "dateTime",
"homeTeamCanonicalId", "awayTeamCanonicalId", "stadiumCanonicalId",
"isPlayoff", "broadcastInfo",
]
TEAM_FIELDS = [
"sport", "city", "name", "full_name", "abbreviation",
"conference", "division", "primary_color", "secondary_color",
"logo_url", "stadium_id",
"teamId", "canonicalId", "sport", "city", "name", "abbreviation",
"stadiumCanonicalId", "logoURL", "primaryColor", "secondaryColor",
]
STADIUM_FIELDS = [
"sport", "name", "city", "state", "country",
"latitude", "longitude", "capacity", "surface",
"roof_type", "opened_year", "image_url", "timezone",
"stadiumId", "canonicalId", "sport", "name", "city", "state",
"location", "capacity", "yearOpened", "imageURL",
]
TEAM_ALIAS_FIELDS = [
"aliasId", "teamCanonicalId", "aliasType", "aliasValue",
"validFrom", "validUntil",
]
STADIUM_ALIAS_FIELDS = [
"aliasName", "stadiumCanonicalId", "validFrom", "validUntil",
]
SPORT_FIELDS = [
"sportId", "abbreviation", "displayName", "iconName",
"colorHex", "seasonStartMonth", "seasonEndMonth", "isActive",
]
LEAGUE_STRUCTURE_FIELDS = [
"structureId", "sport", "type", "name", "abbreviation",
"parentId", "displayOrder",
]
def diff_games(
@@ -184,6 +230,94 @@ class RecordDiffer:
self.STADIUM_FIELDS,
)
def diff_team_aliases(
self,
local_aliases: list[TeamAlias],
remote_records: list[dict],
) -> DiffResult:
"""Diff local team aliases against remote CloudKit records.
Args:
local_aliases: List of local TeamAlias objects
remote_records: List of remote record dictionaries
Returns:
DiffResult with creates, updates, deletes
"""
local_records = [self._team_alias_to_record(a) for a in local_aliases]
return self._diff_records(
local_records,
remote_records,
RecordType.TEAM_ALIAS,
self.TEAM_ALIAS_FIELDS,
)
def diff_stadium_aliases(
self,
local_aliases: list[StadiumAlias],
remote_records: list[dict],
) -> DiffResult:
"""Diff local stadium aliases against remote CloudKit records.
Args:
local_aliases: List of local StadiumAlias objects
remote_records: List of remote record dictionaries
Returns:
DiffResult with creates, updates, deletes
"""
local_records = [self._stadium_alias_to_record(a) for a in local_aliases]
return self._diff_records(
local_records,
remote_records,
RecordType.STADIUM_ALIAS,
self.STADIUM_ALIAS_FIELDS,
)
def diff_sports(
self,
local_sports: list[Sport],
remote_records: list[dict],
) -> DiffResult:
"""Diff local sports against remote CloudKit records.
Args:
local_sports: List of local Sport objects
remote_records: List of remote record dictionaries
Returns:
DiffResult with creates, updates, deletes
"""
local_records = [self._sport_to_record(s) for s in local_sports]
return self._diff_records(
local_records,
remote_records,
RecordType.SPORT,
self.SPORT_FIELDS,
)
def diff_league_structures(
self,
local_structures: list[LeagueStructure],
remote_records: list[dict],
) -> DiffResult:
"""Diff local league structures against remote CloudKit records.
Args:
local_structures: List of local LeagueStructure objects
remote_records: List of remote record dictionaries
Returns:
DiffResult with creates, updates, deletes
"""
local_records = [self._league_structure_to_record(s) for s in local_structures]
return self._diff_records(
local_records,
remote_records,
RecordType.LEAGUE_STRUCTURE,
self.LEAGUE_STRUCTURE_FIELDS,
)
def _diff_records(
self,
local_records: list[CloudKitRecord],
@@ -337,63 +471,206 @@ class RecordDiffer:
return value
def _game_to_record(self, game: Game) -> CloudKitRecord:
"""Convert a Game to a CloudKitRecord."""
"""Convert a Game to a CloudKitRecord.
Field names match CKGame keys in CKModels.swift:
- gameId, canonicalId: Unique identifiers
- homeTeamCanonicalId, awayTeamCanonicalId, stadiumCanonicalId: References as strings
- dateTime: Game time as datetime (will be converted to TIMESTAMP)
- sport: Sport code uppercase (e.g., "MLB")
- season: Season string (e.g., "2025-26" or "2026")
- isPlayoff: Boolean as int (1 or 0)
- broadcastInfo: Optional broadcast network string
"""
# Format season as string
sport_lower = game.sport.lower()
if sport_lower in ("nba", "nhl"):
season_str = f"{game.season}-{str(game.season + 1)[-2:]}"
else:
season_str = str(game.season)
return CloudKitRecord(
record_name=game.id,
record_type=RecordType.GAME,
fields={
"sport": game.sport,
"season": game.season,
"home_team_id": game.home_team_id,
"away_team_id": game.away_team_id,
"stadium_id": game.stadium_id,
"game_date": game.game_date,
"game_number": game.game_number,
"home_score": game.home_score,
"away_score": game.away_score,
"status": game.status,
"gameId": game.id,
"canonicalId": game.id,
"sport": game.sport.upper(),
"season": season_str,
"dateTime": game.game_date,
"homeTeamCanonicalId": game.home_team_id,
"awayTeamCanonicalId": game.away_team_id,
"stadiumCanonicalId": game.stadium_id,
"isPlayoff": False, # Default, can be overridden
"broadcastInfo": None, # Default, can be overridden
},
)
def _team_to_record(self, team: Team) -> CloudKitRecord:
"""Convert a Team to a CloudKitRecord."""
"""Convert a Team to a CloudKitRecord.
Field names match CKTeam keys in CKModels.swift:
- teamId, canonicalId: Unique identifiers
- name, abbreviation, city: Team info
- sport: Sport code uppercase (e.g., "NBA")
- stadiumCanonicalId: Home stadium canonical ID string
- logoURL: URL string for team logo
- primaryColor, secondaryColor: Hex color strings
"""
return CloudKitRecord(
record_name=team.id,
record_type=RecordType.TEAM,
fields={
"sport": team.sport,
"teamId": team.id,
"canonicalId": team.id,
"sport": team.sport.upper(),
"city": team.city,
"name": team.name,
"full_name": team.full_name,
"abbreviation": team.abbreviation,
"conference": team.conference,
"division": team.division,
"primary_color": team.primary_color,
"secondary_color": team.secondary_color,
"logo_url": team.logo_url,
"stadium_id": team.stadium_id,
"stadiumCanonicalId": team.stadium_id,
"logoURL": team.logo_url,
"primaryColor": team.primary_color,
"secondaryColor": team.secondary_color,
},
)
def _stadium_to_record(self, stadium: Stadium) -> CloudKitRecord:
"""Convert a Stadium to a CloudKitRecord."""
"""Convert a Stadium to a CloudKitRecord.
Field names match CKStadium keys in CKModels.swift:
- stadiumId, canonicalId: Unique identifiers
- name, city, state: Location info
- location: CloudKit LOCATION type with latitude/longitude
- capacity: Seating capacity as int
- yearOpened: Year opened as int
- imageURL: URL string for stadium image
- sport: Sport code uppercase (e.g., "MLB")
"""
return CloudKitRecord(
record_name=stadium.id,
record_type=RecordType.STADIUM,
fields={
"sport": stadium.sport,
"stadiumId": stadium.id,
"canonicalId": stadium.id,
"sport": stadium.sport.upper(),
"name": stadium.name,
"city": stadium.city,
"state": stadium.state,
"country": stadium.country,
"latitude": stadium.latitude,
"longitude": stadium.longitude,
# CloudKit LOCATION type expects dict with latitude/longitude
"location": {
"latitude": stadium.latitude,
"longitude": stadium.longitude,
},
"capacity": stadium.capacity,
"surface": stadium.surface,
"roof_type": stadium.roof_type,
"opened_year": stadium.opened_year,
"image_url": stadium.image_url,
"timezone": stadium.timezone,
"yearOpened": stadium.opened_year,
"imageURL": stadium.image_url,
},
)
def _team_alias_to_record(self, alias: TeamAlias) -> CloudKitRecord:
"""Convert a TeamAlias to a CloudKitRecord.
Field names match CKTeamAlias keys in CKModels.swift:
- aliasId: Unique identifier
- teamCanonicalId: The canonical team this alias resolves to
- aliasType: Type of alias ("abbreviation", "name", "city")
- aliasValue: The alias value to match
- validFrom, validUntil: Optional date bounds
- schemaVersion, lastModified: Versioning fields
"""
return CloudKitRecord(
record_name=alias.id,
record_type=RecordType.TEAM_ALIAS,
fields={
"aliasId": alias.id,
"teamCanonicalId": alias.team_canonical_id,
"aliasType": alias.alias_type.value,
"aliasValue": alias.alias_value,
"validFrom": _date_to_datetime(alias.valid_from),
"validUntil": _date_to_datetime(alias.valid_until),
"schemaVersion": 1,
"lastModified": datetime.utcnow(),
},
)
def _stadium_alias_to_record(self, alias: StadiumAlias) -> CloudKitRecord:
"""Convert a StadiumAlias to a CloudKitRecord.
Field names match CKStadiumAlias keys in CKModels.swift:
- aliasName: The alias name (used as record name/primary key)
- stadiumCanonicalId: The canonical stadium this alias resolves to
- validFrom, validUntil: Optional date bounds
- schemaVersion, lastModified: Versioning fields
"""
return CloudKitRecord(
record_name=alias.alias_name.lower(),
record_type=RecordType.STADIUM_ALIAS,
fields={
"aliasName": alias.alias_name.lower(),
"stadiumCanonicalId": alias.stadium_canonical_id,
"validFrom": _date_to_datetime(alias.valid_from),
"validUntil": _date_to_datetime(alias.valid_until),
"schemaVersion": 1,
"lastModified": datetime.utcnow(),
},
)
def _sport_to_record(self, sport: Sport) -> CloudKitRecord:
"""Convert a Sport to a CloudKitRecord.
Field names match CKSport keys in CKModels.swift:
- sportId: Unique identifier (e.g., 'MLB', 'NBA')
- abbreviation: Sport abbreviation
- displayName: Full display name
- iconName: SF Symbol name
- colorHex: Primary color as hex string
- seasonStartMonth, seasonEndMonth: Season boundary months (1-12)
- isActive: Whether sport is currently supported
- schemaVersion, lastModified: Versioning fields
"""
return CloudKitRecord(
record_name=sport.id,
record_type=RecordType.SPORT,
fields={
"sportId": sport.id,
"abbreviation": sport.abbreviation,
"displayName": sport.display_name,
"iconName": sport.icon_name,
"colorHex": sport.color_hex,
"seasonStartMonth": sport.season_start_month,
"seasonEndMonth": sport.season_end_month,
"isActive": sport.is_active,
"schemaVersion": 1,
"lastModified": datetime.utcnow(),
},
)
def _league_structure_to_record(self, structure: LeagueStructure) -> CloudKitRecord:
"""Convert a LeagueStructure to a CloudKitRecord.
Field names match CKLeagueStructure keys in CKModels.swift:
- structureId: Unique identifier (e.g., 'nba_eastern', 'mlb_al_east')
- sport: Sport code (e.g., 'NBA', 'MLB')
- type: Structure type ('conference', 'division', 'league')
- name: Full name
- abbreviation: Optional abbreviation
- parentId: Parent structure ID (e.g., division's parent is conference)
- displayOrder: Order for display (0-indexed)
- schemaVersion, lastModified: Versioning fields
"""
return CloudKitRecord(
record_name=structure.id,
record_type=RecordType.LEAGUE_STRUCTURE,
fields={
"structureId": structure.id,
"sport": structure.sport.upper(),
"type": structure.structure_type.value,
"name": structure.name,
"abbreviation": structure.abbreviation,
"parentId": structure.parent_id,
"displayOrder": structure.display_order,
"schemaVersion": 1,
"lastModified": datetime.utcnow(),
},
)
@@ -423,3 +700,39 @@ def stadium_to_cloudkit_record(stadium: Stadium) -> CloudKitRecord:
"""
differ = RecordDiffer()
return differ._stadium_to_record(stadium)
def team_alias_to_cloudkit_record(alias: TeamAlias) -> CloudKitRecord:
"""Convert a TeamAlias to a CloudKitRecord.
Convenience function for external use.
"""
differ = RecordDiffer()
return differ._team_alias_to_record(alias)
def stadium_alias_to_cloudkit_record(alias: StadiumAlias) -> CloudKitRecord:
"""Convert a StadiumAlias to a CloudKitRecord.
Convenience function for external use.
"""
differ = RecordDiffer()
return differ._stadium_alias_to_record(alias)
def sport_to_cloudkit_record(sport: Sport) -> CloudKitRecord:
"""Convert a Sport to a CloudKitRecord.
Convenience function for external use.
"""
differ = RecordDiffer()
return differ._sport_to_record(sport)
def league_structure_to_cloudkit_record(structure: LeagueStructure) -> CloudKitRecord:
"""Convert a LeagueStructure to a CloudKitRecord.
Convenience function for external use.
"""
differ = RecordDiffer()
return differ._league_structure_to_record(structure)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1 +0,0 @@
[]

View File

@@ -1,153 +0,0 @@
id,name,city,state,latitude,longitude,capacity,sport,team_abbrevs,source,year_opened
mlb_chase_field,Chase Field,Phoenix,AZ,33.4453,-112.0667,48519,MLB,['ARI'],mlb_hardcoded,1998
mlb_truist_park,Truist Park,Atlanta,GA,33.8907,-84.4677,41084,MLB,['ATL'],mlb_hardcoded,2017
mlb_oriole_park_at_camden_yards,Oriole Park at Camden Yards,Baltimore,MD,39.2839,-76.6216,44970,MLB,['BAL'],mlb_hardcoded,1992
mlb_fenway_park,Fenway Park,Boston,MA,42.3467,-71.0972,37755,MLB,['BOS'],mlb_hardcoded,1912
mlb_wrigley_field,Wrigley Field,Chicago,IL,41.9484,-87.6553,41649,MLB,['CHC'],mlb_hardcoded,1914
mlb_guaranteed_rate_field,Guaranteed Rate Field,Chicago,IL,41.8299,-87.6338,40615,MLB,['CHW'],mlb_hardcoded,1991
mlb_great_american_ball_park,Great American Ball Park,Cincinnati,OH,39.0979,-84.5082,42319,MLB,['CIN'],mlb_hardcoded,2003
mlb_progressive_field,Progressive Field,Cleveland,OH,41.4958,-81.6853,34830,MLB,['CLE'],mlb_hardcoded,1994
mlb_coors_field,Coors Field,Denver,CO,39.7559,-104.9942,50144,MLB,['COL'],mlb_hardcoded,1995
mlb_comerica_park,Comerica Park,Detroit,MI,42.339,-83.0485,41083,MLB,['DET'],mlb_hardcoded,2000
mlb_minute_maid_park,Minute Maid Park,Houston,TX,29.7573,-95.3555,41168,MLB,['HOU'],mlb_hardcoded,2000
mlb_kauffman_stadium,Kauffman Stadium,Kansas City,MO,39.0517,-94.4803,37903,MLB,['KCR'],mlb_hardcoded,1973
mlb_angel_stadium,Angel Stadium,Anaheim,CA,33.8003,-117.8827,45517,MLB,['LAA'],mlb_hardcoded,1966
mlb_dodger_stadium,Dodger Stadium,Los Angeles,CA,34.0739,-118.24,56000,MLB,['LAD'],mlb_hardcoded,1962
mlb_loandepot_park,LoanDepot Park,Miami,FL,25.7781,-80.2196,36742,MLB,['MIA'],mlb_hardcoded,2012
mlb_american_family_field,American Family Field,Milwaukee,WI,43.028,-87.9712,41900,MLB,['MIL'],mlb_hardcoded,2001
mlb_target_field,Target Field,Minneapolis,MN,44.9818,-93.2775,38544,MLB,['MIN'],mlb_hardcoded,2010
mlb_citi_field,Citi Field,Queens,NY,40.7571,-73.8458,41922,MLB,['NYM'],mlb_hardcoded,2009
mlb_yankee_stadium,Yankee Stadium,Bronx,NY,40.8296,-73.9262,46537,MLB,['NYY'],mlb_hardcoded,2009
mlb_sutter_health_park,Sutter Health Park,Sacramento,CA,38.5803,-121.5108,14014,MLB,['OAK'],mlb_hardcoded,2000
mlb_citizens_bank_park,Citizens Bank Park,Philadelphia,PA,39.9061,-75.1665,42901,MLB,['PHI'],mlb_hardcoded,2004
mlb_pnc_park,PNC Park,Pittsburgh,PA,40.4469,-80.0057,38362,MLB,['PIT'],mlb_hardcoded,2001
mlb_petco_park,Petco Park,San Diego,CA,32.7073,-117.1566,40209,MLB,['SDP'],mlb_hardcoded,2004
mlb_oracle_park,Oracle Park,San Francisco,CA,37.7786,-122.3893,41915,MLB,['SFG'],mlb_hardcoded,2000
mlb_t-mobile_park,T-Mobile Park,Seattle,WA,47.5914,-122.3325,47929,MLB,['SEA'],mlb_hardcoded,1999
mlb_busch_stadium,Busch Stadium,St. Louis,MO,38.6226,-90.1928,45538,MLB,['STL'],mlb_hardcoded,2006
mlb_tropicana_field,Tropicana Field,St. Petersburg,FL,27.7682,-82.6534,25000,MLB,['TBR'],mlb_hardcoded,1990
mlb_globe_life_field,Globe Life Field,Arlington,TX,32.7473,-97.0844,40300,MLB,['TEX'],mlb_hardcoded,2020
mlb_rogers_centre,Rogers Centre,Toronto,ON,43.6414,-79.3894,49282,MLB,['TOR'],mlb_hardcoded,1989
mlb_nationals_park,Nationals Park,Washington,DC,38.8729,-77.0074,41339,MLB,['WSN'],mlb_hardcoded,2008
nba_state_farm_arena,State Farm Arena,Atlanta,GA,33.7573,-84.3963,18118,NBA,['ATL'],nba_hardcoded,1999
nba_td_garden,TD Garden,Boston,MA,42.3662,-71.0621,19156,NBA,['BOS'],nba_hardcoded,1995
nba_barclays_center,Barclays Center,Brooklyn,NY,40.6826,-73.9754,17732,NBA,['BRK'],nba_hardcoded,2012
nba_spectrum_center,Spectrum Center,Charlotte,NC,35.2251,-80.8392,19077,NBA,['CHO'],nba_hardcoded,2005
nba_united_center,United Center,Chicago,IL,41.8807,-87.6742,20917,NBA,['CHI'],nba_hardcoded,1994
nba_rocket_mortgage_fieldhouse,Rocket Mortgage FieldHouse,Cleveland,OH,41.4965,-81.6882,19432,NBA,['CLE'],nba_hardcoded,1994
nba_american_airlines_center,American Airlines Center,Dallas,TX,32.7905,-96.8103,19200,NBA,['DAL'],nba_hardcoded,2001
nba_ball_arena,Ball Arena,Denver,CO,39.7487,-105.0077,19520,NBA,['DEN'],nba_hardcoded,1999
nba_little_caesars_arena,Little Caesars Arena,Detroit,MI,42.3411,-83.0553,20332,NBA,['DET'],nba_hardcoded,2017
nba_chase_center,Chase Center,San Francisco,CA,37.768,-122.3879,18064,NBA,['GSW'],nba_hardcoded,2019
nba_toyota_center,Toyota Center,Houston,TX,29.7508,-95.3621,18055,NBA,['HOU'],nba_hardcoded,2003
nba_gainbridge_fieldhouse,Gainbridge Fieldhouse,Indianapolis,IN,39.764,-86.1555,17923,NBA,['IND'],nba_hardcoded,1999
nba_intuit_dome,Intuit Dome,Inglewood,CA,33.9425,-118.3419,18000,NBA,['LAC'],nba_hardcoded,2024
nba_crypto.com_arena,Crypto.com Arena,Los Angeles,CA,34.043,-118.2673,18997,NBA,['LAL'],nba_hardcoded,1999
nba_fedexforum,FedExForum,Memphis,TN,35.1382,-90.0506,17794,NBA,['MEM'],nba_hardcoded,2004
nba_kaseya_center,Kaseya Center,Miami,FL,25.7814,-80.187,19600,NBA,['MIA'],nba_hardcoded,1999
nba_fiserv_forum,Fiserv Forum,Milwaukee,WI,43.0451,-87.9174,17341,NBA,['MIL'],nba_hardcoded,2018
nba_target_center,Target Center,Minneapolis,MN,44.9795,-93.2761,18978,NBA,['MIN'],nba_hardcoded,1990
nba_smoothie_king_center,Smoothie King Center,New Orleans,LA,29.949,-90.0821,16867,NBA,['NOP'],nba_hardcoded,1999
nba_madison_square_garden,Madison Square Garden,New York,NY,40.7505,-73.9934,19812,NBA,['NYK'],nba_hardcoded,1968
nba_paycom_center,Paycom Center,Oklahoma City,OK,35.4634,-97.5151,18203,NBA,['OKC'],nba_hardcoded,2002
nba_kia_center,Kia Center,Orlando,FL,28.5392,-81.3839,18846,NBA,['ORL'],nba_hardcoded,1989
nba_wells_fargo_center,Wells Fargo Center,Philadelphia,PA,39.9012,-75.172,20478,NBA,['PHI'],nba_hardcoded,1996
nba_footprint_center,Footprint Center,Phoenix,AZ,33.4457,-112.0712,17071,NBA,['PHO'],nba_hardcoded,1992
nba_moda_center,Moda Center,Portland,OR,45.5316,-122.6668,19393,NBA,['POR'],nba_hardcoded,1995
nba_golden_1_center,Golden 1 Center,Sacramento,CA,38.5802,-121.4997,17608,NBA,['SAC'],nba_hardcoded,2016
nba_frost_bank_center,Frost Bank Center,San Antonio,TX,29.427,-98.4375,18418,NBA,['SAS'],nba_hardcoded,2002
nba_scotiabank_arena,Scotiabank Arena,Toronto,ON,43.6435,-79.3791,19800,NBA,['TOR'],nba_hardcoded,1999
nba_delta_center,Delta Center,Salt Lake City,UT,40.7683,-111.9011,18306,NBA,['UTA'],nba_hardcoded,1991
nba_capital_one_arena,Capital One Arena,Washington,DC,38.8982,-77.0209,20356,NBA,['WAS'],nba_hardcoded,1997
nhl_td_garden,TD Garden,Boston,MA,42.3662,-71.0621,17850,NHL,['BOS'],nhl_hardcoded,1995
nhl_keybank_center,KeyBank Center,Buffalo,NY,42.875,-78.8764,19070,NHL,['BUF'],nhl_hardcoded,1996
nhl_little_caesars_arena,Little Caesars Arena,Detroit,MI,42.3411,-83.0553,19515,NHL,['DET'],nhl_hardcoded,2017
nhl_amerant_bank_arena,Amerant Bank Arena,Sunrise,FL,26.1584,-80.3256,19250,NHL,['FLA'],nhl_hardcoded,1998
nhl_bell_centre,Bell Centre,Montreal,QC,45.4961,-73.5693,21302,NHL,['MTL'],nhl_hardcoded,1996
nhl_canadian_tire_centre,Canadian Tire Centre,Ottawa,ON,45.2969,-75.9272,18652,NHL,['OTT'],nhl_hardcoded,1996
nhl_amalie_arena,Amalie Arena,Tampa,FL,27.9426,-82.4519,19092,NHL,['TBL'],nhl_hardcoded,1996
nhl_scotiabank_arena,Scotiabank Arena,Toronto,ON,43.6435,-79.3791,18800,NHL,['TOR'],nhl_hardcoded,1999
nhl_pnc_arena,PNC Arena,Raleigh,NC,35.8033,-78.722,18680,NHL,['CAR'],nhl_hardcoded,1999
nhl_nationwide_arena,Nationwide Arena,Columbus,OH,39.9692,-83.0061,18500,NHL,['CBJ'],nhl_hardcoded,2000
nhl_prudential_center,Prudential Center,Newark,NJ,40.7334,-74.1713,16514,NHL,['NJD'],nhl_hardcoded,2007
nhl_ubs_arena,UBS Arena,Elmont,NY,40.717,-73.726,17255,NHL,['NYI'],nhl_hardcoded,2021
nhl_madison_square_garden,Madison Square Garden,New York,NY,40.7505,-73.9934,18006,NHL,['NYR'],nhl_hardcoded,1968
nhl_wells_fargo_center,Wells Fargo Center,Philadelphia,PA,39.9012,-75.172,19500,NHL,['PHI'],nhl_hardcoded,1996
nhl_ppg_paints_arena,PPG Paints Arena,Pittsburgh,PA,40.4395,-79.9892,18387,NHL,['PIT'],nhl_hardcoded,2010
nhl_capital_one_arena,Capital One Arena,Washington,DC,38.8982,-77.0209,18573,NHL,['WSH'],nhl_hardcoded,1997
nhl_united_center,United Center,Chicago,IL,41.8807,-87.6742,19717,NHL,['CHI'],nhl_hardcoded,1994
nhl_ball_arena,Ball Arena,Denver,CO,39.7487,-105.0077,18007,NHL,['COL'],nhl_hardcoded,1999
nhl_american_airlines_center,American Airlines Center,Dallas,TX,32.7905,-96.8103,18532,NHL,['DAL'],nhl_hardcoded,2001
nhl_xcel_energy_center,Xcel Energy Center,Saint Paul,MN,44.9448,-93.101,17954,NHL,['MIN'],nhl_hardcoded,2000
nhl_bridgestone_arena,Bridgestone Arena,Nashville,TN,36.1592,-86.7785,17159,NHL,['NSH'],nhl_hardcoded,1996
nhl_enterprise_center,Enterprise Center,St. Louis,MO,38.6268,-90.2025,18096,NHL,['STL'],nhl_hardcoded,1994
nhl_canada_life_centre,Canada Life Centre,Winnipeg,MB,49.8928,-97.1437,15321,NHL,['WPG'],nhl_hardcoded,2004
nhl_honda_center,Honda Center,Anaheim,CA,33.8078,-117.8765,17174,NHL,['ANA'],nhl_hardcoded,1993
nhl_delta_center,Delta Center,Salt Lake City,UT,40.7683,-111.9011,16210,NHL,['ARI'],nhl_hardcoded,1991
nhl_sap_center,SAP Center,San Jose,CA,37.3327,-121.9012,17562,NHL,['SJS'],nhl_hardcoded,1993
nhl_rogers_arena,Rogers Arena,Vancouver,BC,49.2778,-123.1089,18910,NHL,['VAN'],nhl_hardcoded,1995
nhl_t-mobile_arena,T-Mobile Arena,Las Vegas,NV,36.1028,-115.1784,17500,NHL,['VGK'],nhl_hardcoded,2016
nhl_climate_pledge_arena,Climate Pledge Arena,Seattle,WA,47.622,-122.354,17100,NHL,['SEA'],nhl_hardcoded,2021
nhl_crypto.com_arena,Crypto.com Arena,Los Angeles,CA,34.043,-118.2673,18230,NHL,['LAK'],nhl_hardcoded,1999
nhl_rogers_place,Rogers Place,Edmonton,AB,53.5469,-113.4979,18347,NHL,['EDM'],nhl_hardcoded,2016
nhl_scotiabank_saddledome,Scotiabank Saddledome,Calgary,AB,51.0374,-114.0519,19289,NHL,['CGY'],nhl_hardcoded,1983
nfl_state_farm_stadium,State Farm Stadium,Glendale,AZ,33.5276,-112.2626,63400,NFL,['ARI'],nfl_hardcoded,2006
nfl_mercedes-benz_stadium,Mercedes-Benz Stadium,Atlanta,GA,33.7553,-84.4006,71000,NFL,['ATL'],nfl_hardcoded,2017
nfl_m&t_bank_stadium,M&T Bank Stadium,Baltimore,MD,39.278,-76.6227,71008,NFL,['BAL'],nfl_hardcoded,1998
nfl_highmark_stadium,Highmark Stadium,Orchard Park,NY,42.7738,-78.787,71608,NFL,['BUF'],nfl_hardcoded,1973
nfl_bank_of_america_stadium,Bank of America Stadium,Charlotte,NC,35.2258,-80.8528,75523,NFL,['CAR'],nfl_hardcoded,1996
nfl_soldier_field,Soldier Field,Chicago,IL,41.8623,-87.6167,61500,NFL,['CHI'],nfl_hardcoded,1924
nfl_paycor_stadium,Paycor Stadium,Cincinnati,OH,39.0954,-84.516,65515,NFL,['CIN'],nfl_hardcoded,2000
nfl_cleveland_browns_stadium,Cleveland Browns Stadium,Cleveland,OH,41.5061,-81.6995,67895,NFL,['CLE'],nfl_hardcoded,1999
nfl_at&t_stadium,AT&T Stadium,Arlington,TX,32.748,-97.0928,80000,NFL,['DAL'],nfl_hardcoded,2009
nfl_empower_field_at_mile_high,Empower Field at Mile High,Denver,CO,39.7439,-105.0201,76125,NFL,['DEN'],nfl_hardcoded,2001
nfl_ford_field,Ford Field,Detroit,MI,42.34,-83.0456,65000,NFL,['DET'],nfl_hardcoded,2002
nfl_lambeau_field,Lambeau Field,Green Bay,WI,44.5013,-88.0622,81435,NFL,['GB'],nfl_hardcoded,1957
nfl_nrg_stadium,NRG Stadium,Houston,TX,29.6847,-95.4107,72220,NFL,['HOU'],nfl_hardcoded,2002
nfl_lucas_oil_stadium,Lucas Oil Stadium,Indianapolis,IN,39.7601,-86.1639,67000,NFL,['IND'],nfl_hardcoded,2008
nfl_everbank_stadium,EverBank Stadium,Jacksonville,FL,30.3239,-81.6373,67814,NFL,['JAX'],nfl_hardcoded,1995
nfl_geha_field_at_arrowhead_stadiu,GEHA Field at Arrowhead Stadium,Kansas City,MO,39.0489,-94.4839,76416,NFL,['KC'],nfl_hardcoded,1972
nfl_allegiant_stadium,Allegiant Stadium,Las Vegas,NV,36.0909,-115.1833,65000,NFL,['LV'],nfl_hardcoded,2020
nfl_sofi_stadium,SoFi Stadium,Inglewood,CA,33.9535,-118.3392,70240,NFL,"['LAC', 'LAR']",nfl_hardcoded,2020
nfl_hard_rock_stadium,Hard Rock Stadium,Miami Gardens,FL,25.958,-80.2389,64767,NFL,['MIA'],nfl_hardcoded,1987
nfl_u.s._bank_stadium,U.S. Bank Stadium,Minneapolis,MN,44.9736,-93.2575,66655,NFL,['MIN'],nfl_hardcoded,2016
nfl_gillette_stadium,Gillette Stadium,Foxborough,MA,42.0909,-71.2643,65878,NFL,['NE'],nfl_hardcoded,2002
nfl_caesars_superdome,Caesars Superdome,New Orleans,LA,29.9511,-90.0812,73208,NFL,['NO'],nfl_hardcoded,1975
nfl_metlife_stadium,MetLife Stadium,East Rutherford,NJ,40.8135,-74.0745,82500,NFL,"['NYG', 'NYJ']",nfl_hardcoded,2010
nfl_lincoln_financial_field,Lincoln Financial Field,Philadelphia,PA,39.9008,-75.1675,69596,NFL,['PHI'],nfl_hardcoded,2003
nfl_acrisure_stadium,Acrisure Stadium,Pittsburgh,PA,40.4468,-80.0158,68400,NFL,['PIT'],nfl_hardcoded,2001
nfl_levi's_stadium,Levi's Stadium,Santa Clara,CA,37.4032,-121.9698,68500,NFL,['SF'],nfl_hardcoded,2014
nfl_lumen_field,Lumen Field,Seattle,WA,47.5952,-122.3316,68740,NFL,['SEA'],nfl_hardcoded,2002
nfl_raymond_james_stadium,Raymond James Stadium,Tampa,FL,27.9759,-82.5033,65618,NFL,['TB'],nfl_hardcoded,1998
nfl_nissan_stadium,Nissan Stadium,Nashville,TN,36.1665,-86.7713,69143,NFL,['TEN'],nfl_hardcoded,1999
nfl_northwest_stadium,Northwest Stadium,Landover,MD,38.9076,-76.8645,67617,NFL,['WAS'],nfl_hardcoded,1997
mls_mercedes-benz_stadium,Mercedes-Benz Stadium,Atlanta,GA,33.7555,-84.4,42500,MLS,['ATL'],mls_hardcoded,2017
mls_q2_stadium,Q2 Stadium,Austin,TX,30.3877,-97.7195,20738,MLS,['AUS'],mls_hardcoded,2021
mls_bank_of_america_stadium,Bank of America Stadium,Charlotte,NC,35.2258,-80.8528,38000,MLS,['CLT'],mls_hardcoded,1996
mls_soldier_field,Soldier Field,Chicago,IL,41.8623,-87.6167,24995,MLS,['CHI'],mls_hardcoded,1924
mls_tql_stadium,TQL Stadium,Cincinnati,OH,39.1114,-84.5222,26000,MLS,['CIN'],mls_hardcoded,2021
mls_dicks_sporting_goods_park,Dick's Sporting Goods Park,Commerce City,CO,39.8056,-104.8919,18061,MLS,['COL'],mls_hardcoded,2007
mls_lowercom_field,Lower.com Field,Columbus,OH,39.9685,-83.0171,20371,MLS,['CLB'],mls_hardcoded,2021
mls_toyota_stadium,Toyota Stadium,Frisco,TX,33.1544,-96.8353,20500,MLS,['DAL'],mls_hardcoded,2005
mls_audi_field,Audi Field,Washington,DC,38.8684,-77.0129,20000,MLS,['DC'],mls_hardcoded,2018
mls_shell_energy_stadium,Shell Energy Stadium,Houston,TX,29.7522,-95.3524,22039,MLS,['HOU'],mls_hardcoded,2012
mls_dignity_health_sports_park,Dignity Health Sports Park,Carson,CA,33.864,-118.261,27000,MLS,['LAG'],mls_hardcoded,2003
mls_bmo_stadium,BMO Stadium,Los Angeles,CA,34.0128,-118.2841,22000,MLS,['LAFC'],mls_hardcoded,2018
mls_chase_stadium,Chase Stadium,Fort Lauderdale,FL,26.1933,-80.1607,21550,MLS,['MIA'],mls_hardcoded,2020
mls_allianz_field,Allianz Field,Saint Paul,MN,44.9531,-93.1647,19400,MLS,['MIN'],mls_hardcoded,2019
mls_stade_saputo,Stade Saputo,Montreal,QC,45.5631,-73.5525,19619,MLS,['MTL'],mls_hardcoded,2008
mls_geodis_park,Geodis Park,Nashville,TN,36.1301,-86.766,30000,MLS,['NSH'],mls_hardcoded,2022
mls_gillette_stadium,Gillette Stadium,Foxborough,MA,42.0909,-71.2643,22385,MLS,['NE'],mls_hardcoded,2002
mls_yankee_stadium,Yankee Stadium,Bronx,NY,40.8292,-73.9264,28000,MLS,['NYCFC'],mls_hardcoded,2009
mls_red_bull_arena,Red Bull Arena,Harrison,NJ,40.7367,-74.1503,25000,MLS,['NYRB'],mls_hardcoded,2010
mls_interandco_stadium,Inter&Co Stadium,Orlando,FL,28.5411,-81.3893,25500,MLS,['ORL'],mls_hardcoded,2017
mls_subaru_park,Subaru Park,Chester,PA,39.8322,-75.3789,18500,MLS,['PHI'],mls_hardcoded,2010
mls_providence_park,Providence Park,Portland,OR,45.5214,-122.6917,25218,MLS,['POR'],mls_hardcoded,1926
mls_america_first_field,America First Field,Sandy,UT,40.5829,-111.8934,20213,MLS,['RSL'],mls_hardcoded,2008
mls_paypal_park,PayPal Park,San Jose,CA,37.3514,-121.925,18000,MLS,['SJ'],mls_hardcoded,2015
mls_lumen_field,Lumen Field,Seattle,WA,47.5952,-122.3316,37722,MLS,['SEA'],mls_hardcoded,2002
mls_childrens_mercy_park,Children's Mercy Park,Kansas City,KS,39.1217,-94.8232,18467,MLS,['SKC'],mls_hardcoded,2011
mls_citypark,CityPark,St. Louis,MO,38.6314,-90.2103,22500,MLS,['STL'],mls_hardcoded,2023
mls_bmo_field,BMO Field,Toronto,ON,43.6332,-79.4186,30000,MLS,['TOR'],mls_hardcoded,2007
mls_bc_place,BC Place,Vancouver,BC,49.2767,-123.1119,22120,MLS,['VAN'],mls_hardcoded,1983
mls_snapdragon_stadium,Snapdragon Stadium,San Diego,CA,32.7844,-117.1228,35000,MLS,['SD'],mls_hardcoded,2022
1 id name city state latitude longitude capacity sport team_abbrevs source year_opened
2 mlb_chase_field Chase Field Phoenix AZ 33.4453 -112.0667 48519 MLB ['ARI'] mlb_hardcoded 1998
3 mlb_truist_park Truist Park Atlanta GA 33.8907 -84.4677 41084 MLB ['ATL'] mlb_hardcoded 2017
4 mlb_oriole_park_at_camden_yards Oriole Park at Camden Yards Baltimore MD 39.2839 -76.6216 44970 MLB ['BAL'] mlb_hardcoded 1992
5 mlb_fenway_park Fenway Park Boston MA 42.3467 -71.0972 37755 MLB ['BOS'] mlb_hardcoded 1912
6 mlb_wrigley_field Wrigley Field Chicago IL 41.9484 -87.6553 41649 MLB ['CHC'] mlb_hardcoded 1914
7 mlb_guaranteed_rate_field Guaranteed Rate Field Chicago IL 41.8299 -87.6338 40615 MLB ['CHW'] mlb_hardcoded 1991
8 mlb_great_american_ball_park Great American Ball Park Cincinnati OH 39.0979 -84.5082 42319 MLB ['CIN'] mlb_hardcoded 2003
9 mlb_progressive_field Progressive Field Cleveland OH 41.4958 -81.6853 34830 MLB ['CLE'] mlb_hardcoded 1994
10 mlb_coors_field Coors Field Denver CO 39.7559 -104.9942 50144 MLB ['COL'] mlb_hardcoded 1995
11 mlb_comerica_park Comerica Park Detroit MI 42.339 -83.0485 41083 MLB ['DET'] mlb_hardcoded 2000
12 mlb_minute_maid_park Minute Maid Park Houston TX 29.7573 -95.3555 41168 MLB ['HOU'] mlb_hardcoded 2000
13 mlb_kauffman_stadium Kauffman Stadium Kansas City MO 39.0517 -94.4803 37903 MLB ['KCR'] mlb_hardcoded 1973
14 mlb_angel_stadium Angel Stadium Anaheim CA 33.8003 -117.8827 45517 MLB ['LAA'] mlb_hardcoded 1966
15 mlb_dodger_stadium Dodger Stadium Los Angeles CA 34.0739 -118.24 56000 MLB ['LAD'] mlb_hardcoded 1962
16 mlb_loandepot_park LoanDepot Park Miami FL 25.7781 -80.2196 36742 MLB ['MIA'] mlb_hardcoded 2012
17 mlb_american_family_field American Family Field Milwaukee WI 43.028 -87.9712 41900 MLB ['MIL'] mlb_hardcoded 2001
18 mlb_target_field Target Field Minneapolis MN 44.9818 -93.2775 38544 MLB ['MIN'] mlb_hardcoded 2010
19 mlb_citi_field Citi Field Queens NY 40.7571 -73.8458 41922 MLB ['NYM'] mlb_hardcoded 2009
20 mlb_yankee_stadium Yankee Stadium Bronx NY 40.8296 -73.9262 46537 MLB ['NYY'] mlb_hardcoded 2009
21 mlb_sutter_health_park Sutter Health Park Sacramento CA 38.5803 -121.5108 14014 MLB ['OAK'] mlb_hardcoded 2000
22 mlb_citizens_bank_park Citizens Bank Park Philadelphia PA 39.9061 -75.1665 42901 MLB ['PHI'] mlb_hardcoded 2004
23 mlb_pnc_park PNC Park Pittsburgh PA 40.4469 -80.0057 38362 MLB ['PIT'] mlb_hardcoded 2001
24 mlb_petco_park Petco Park San Diego CA 32.7073 -117.1566 40209 MLB ['SDP'] mlb_hardcoded 2004
25 mlb_oracle_park Oracle Park San Francisco CA 37.7786 -122.3893 41915 MLB ['SFG'] mlb_hardcoded 2000
26 mlb_t-mobile_park T-Mobile Park Seattle WA 47.5914 -122.3325 47929 MLB ['SEA'] mlb_hardcoded 1999
27 mlb_busch_stadium Busch Stadium St. Louis MO 38.6226 -90.1928 45538 MLB ['STL'] mlb_hardcoded 2006
28 mlb_tropicana_field Tropicana Field St. Petersburg FL 27.7682 -82.6534 25000 MLB ['TBR'] mlb_hardcoded 1990
29 mlb_globe_life_field Globe Life Field Arlington TX 32.7473 -97.0844 40300 MLB ['TEX'] mlb_hardcoded 2020
30 mlb_rogers_centre Rogers Centre Toronto ON 43.6414 -79.3894 49282 MLB ['TOR'] mlb_hardcoded 1989
31 mlb_nationals_park Nationals Park Washington DC 38.8729 -77.0074 41339 MLB ['WSN'] mlb_hardcoded 2008
32 nba_state_farm_arena State Farm Arena Atlanta GA 33.7573 -84.3963 18118 NBA ['ATL'] nba_hardcoded 1999
33 nba_td_garden TD Garden Boston MA 42.3662 -71.0621 19156 NBA ['BOS'] nba_hardcoded 1995
34 nba_barclays_center Barclays Center Brooklyn NY 40.6826 -73.9754 17732 NBA ['BRK'] nba_hardcoded 2012
35 nba_spectrum_center Spectrum Center Charlotte NC 35.2251 -80.8392 19077 NBA ['CHO'] nba_hardcoded 2005
36 nba_united_center United Center Chicago IL 41.8807 -87.6742 20917 NBA ['CHI'] nba_hardcoded 1994
37 nba_rocket_mortgage_fieldhouse Rocket Mortgage FieldHouse Cleveland OH 41.4965 -81.6882 19432 NBA ['CLE'] nba_hardcoded 1994
38 nba_american_airlines_center American Airlines Center Dallas TX 32.7905 -96.8103 19200 NBA ['DAL'] nba_hardcoded 2001
39 nba_ball_arena Ball Arena Denver CO 39.7487 -105.0077 19520 NBA ['DEN'] nba_hardcoded 1999
40 nba_little_caesars_arena Little Caesars Arena Detroit MI 42.3411 -83.0553 20332 NBA ['DET'] nba_hardcoded 2017
41 nba_chase_center Chase Center San Francisco CA 37.768 -122.3879 18064 NBA ['GSW'] nba_hardcoded 2019
42 nba_toyota_center Toyota Center Houston TX 29.7508 -95.3621 18055 NBA ['HOU'] nba_hardcoded 2003
43 nba_gainbridge_fieldhouse Gainbridge Fieldhouse Indianapolis IN 39.764 -86.1555 17923 NBA ['IND'] nba_hardcoded 1999
44 nba_intuit_dome Intuit Dome Inglewood CA 33.9425 -118.3419 18000 NBA ['LAC'] nba_hardcoded 2024
45 nba_crypto.com_arena Crypto.com Arena Los Angeles CA 34.043 -118.2673 18997 NBA ['LAL'] nba_hardcoded 1999
46 nba_fedexforum FedExForum Memphis TN 35.1382 -90.0506 17794 NBA ['MEM'] nba_hardcoded 2004
47 nba_kaseya_center Kaseya Center Miami FL 25.7814 -80.187 19600 NBA ['MIA'] nba_hardcoded 1999
48 nba_fiserv_forum Fiserv Forum Milwaukee WI 43.0451 -87.9174 17341 NBA ['MIL'] nba_hardcoded 2018
49 nba_target_center Target Center Minneapolis MN 44.9795 -93.2761 18978 NBA ['MIN'] nba_hardcoded 1990
50 nba_smoothie_king_center Smoothie King Center New Orleans LA 29.949 -90.0821 16867 NBA ['NOP'] nba_hardcoded 1999
51 nba_madison_square_garden Madison Square Garden New York NY 40.7505 -73.9934 19812 NBA ['NYK'] nba_hardcoded 1968
52 nba_paycom_center Paycom Center Oklahoma City OK 35.4634 -97.5151 18203 NBA ['OKC'] nba_hardcoded 2002
53 nba_kia_center Kia Center Orlando FL 28.5392 -81.3839 18846 NBA ['ORL'] nba_hardcoded 1989
54 nba_wells_fargo_center Wells Fargo Center Philadelphia PA 39.9012 -75.172 20478 NBA ['PHI'] nba_hardcoded 1996
55 nba_footprint_center Footprint Center Phoenix AZ 33.4457 -112.0712 17071 NBA ['PHO'] nba_hardcoded 1992
56 nba_moda_center Moda Center Portland OR 45.5316 -122.6668 19393 NBA ['POR'] nba_hardcoded 1995
57 nba_golden_1_center Golden 1 Center Sacramento CA 38.5802 -121.4997 17608 NBA ['SAC'] nba_hardcoded 2016
58 nba_frost_bank_center Frost Bank Center San Antonio TX 29.427 -98.4375 18418 NBA ['SAS'] nba_hardcoded 2002
59 nba_scotiabank_arena Scotiabank Arena Toronto ON 43.6435 -79.3791 19800 NBA ['TOR'] nba_hardcoded 1999
60 nba_delta_center Delta Center Salt Lake City UT 40.7683 -111.9011 18306 NBA ['UTA'] nba_hardcoded 1991
61 nba_capital_one_arena Capital One Arena Washington DC 38.8982 -77.0209 20356 NBA ['WAS'] nba_hardcoded 1997
62 nhl_td_garden TD Garden Boston MA 42.3662 -71.0621 17850 NHL ['BOS'] nhl_hardcoded 1995
63 nhl_keybank_center KeyBank Center Buffalo NY 42.875 -78.8764 19070 NHL ['BUF'] nhl_hardcoded 1996
64 nhl_little_caesars_arena Little Caesars Arena Detroit MI 42.3411 -83.0553 19515 NHL ['DET'] nhl_hardcoded 2017
65 nhl_amerant_bank_arena Amerant Bank Arena Sunrise FL 26.1584 -80.3256 19250 NHL ['FLA'] nhl_hardcoded 1998
66 nhl_bell_centre Bell Centre Montreal QC 45.4961 -73.5693 21302 NHL ['MTL'] nhl_hardcoded 1996
67 nhl_canadian_tire_centre Canadian Tire Centre Ottawa ON 45.2969 -75.9272 18652 NHL ['OTT'] nhl_hardcoded 1996
68 nhl_amalie_arena Amalie Arena Tampa FL 27.9426 -82.4519 19092 NHL ['TBL'] nhl_hardcoded 1996
69 nhl_scotiabank_arena Scotiabank Arena Toronto ON 43.6435 -79.3791 18800 NHL ['TOR'] nhl_hardcoded 1999
70 nhl_pnc_arena PNC Arena Raleigh NC 35.8033 -78.722 18680 NHL ['CAR'] nhl_hardcoded 1999
71 nhl_nationwide_arena Nationwide Arena Columbus OH 39.9692 -83.0061 18500 NHL ['CBJ'] nhl_hardcoded 2000
72 nhl_prudential_center Prudential Center Newark NJ 40.7334 -74.1713 16514 NHL ['NJD'] nhl_hardcoded 2007
73 nhl_ubs_arena UBS Arena Elmont NY 40.717 -73.726 17255 NHL ['NYI'] nhl_hardcoded 2021
74 nhl_madison_square_garden Madison Square Garden New York NY 40.7505 -73.9934 18006 NHL ['NYR'] nhl_hardcoded 1968
75 nhl_wells_fargo_center Wells Fargo Center Philadelphia PA 39.9012 -75.172 19500 NHL ['PHI'] nhl_hardcoded 1996
76 nhl_ppg_paints_arena PPG Paints Arena Pittsburgh PA 40.4395 -79.9892 18387 NHL ['PIT'] nhl_hardcoded 2010
77 nhl_capital_one_arena Capital One Arena Washington DC 38.8982 -77.0209 18573 NHL ['WSH'] nhl_hardcoded 1997
78 nhl_united_center United Center Chicago IL 41.8807 -87.6742 19717 NHL ['CHI'] nhl_hardcoded 1994
79 nhl_ball_arena Ball Arena Denver CO 39.7487 -105.0077 18007 NHL ['COL'] nhl_hardcoded 1999
80 nhl_american_airlines_center American Airlines Center Dallas TX 32.7905 -96.8103 18532 NHL ['DAL'] nhl_hardcoded 2001
81 nhl_xcel_energy_center Xcel Energy Center Saint Paul MN 44.9448 -93.101 17954 NHL ['MIN'] nhl_hardcoded 2000
82 nhl_bridgestone_arena Bridgestone Arena Nashville TN 36.1592 -86.7785 17159 NHL ['NSH'] nhl_hardcoded 1996
83 nhl_enterprise_center Enterprise Center St. Louis MO 38.6268 -90.2025 18096 NHL ['STL'] nhl_hardcoded 1994
84 nhl_canada_life_centre Canada Life Centre Winnipeg MB 49.8928 -97.1437 15321 NHL ['WPG'] nhl_hardcoded 2004
85 nhl_honda_center Honda Center Anaheim CA 33.8078 -117.8765 17174 NHL ['ANA'] nhl_hardcoded 1993
86 nhl_delta_center Delta Center Salt Lake City UT 40.7683 -111.9011 16210 NHL ['ARI'] nhl_hardcoded 1991
87 nhl_sap_center SAP Center San Jose CA 37.3327 -121.9012 17562 NHL ['SJS'] nhl_hardcoded 1993
88 nhl_rogers_arena Rogers Arena Vancouver BC 49.2778 -123.1089 18910 NHL ['VAN'] nhl_hardcoded 1995
89 nhl_t-mobile_arena T-Mobile Arena Las Vegas NV 36.1028 -115.1784 17500 NHL ['VGK'] nhl_hardcoded 2016
90 nhl_climate_pledge_arena Climate Pledge Arena Seattle WA 47.622 -122.354 17100 NHL ['SEA'] nhl_hardcoded 2021
91 nhl_crypto.com_arena Crypto.com Arena Los Angeles CA 34.043 -118.2673 18230 NHL ['LAK'] nhl_hardcoded 1999
92 nhl_rogers_place Rogers Place Edmonton AB 53.5469 -113.4979 18347 NHL ['EDM'] nhl_hardcoded 2016
93 nhl_scotiabank_saddledome Scotiabank Saddledome Calgary AB 51.0374 -114.0519 19289 NHL ['CGY'] nhl_hardcoded 1983
94 nfl_state_farm_stadium State Farm Stadium Glendale AZ 33.5276 -112.2626 63400 NFL ['ARI'] nfl_hardcoded 2006
95 nfl_mercedes-benz_stadium Mercedes-Benz Stadium Atlanta GA 33.7553 -84.4006 71000 NFL ['ATL'] nfl_hardcoded 2017
96 nfl_m&t_bank_stadium M&T Bank Stadium Baltimore MD 39.278 -76.6227 71008 NFL ['BAL'] nfl_hardcoded 1998
97 nfl_highmark_stadium Highmark Stadium Orchard Park NY 42.7738 -78.787 71608 NFL ['BUF'] nfl_hardcoded 1973
98 nfl_bank_of_america_stadium Bank of America Stadium Charlotte NC 35.2258 -80.8528 75523 NFL ['CAR'] nfl_hardcoded 1996
99 nfl_soldier_field Soldier Field Chicago IL 41.8623 -87.6167 61500 NFL ['CHI'] nfl_hardcoded 1924
100 nfl_paycor_stadium Paycor Stadium Cincinnati OH 39.0954 -84.516 65515 NFL ['CIN'] nfl_hardcoded 2000
101 nfl_cleveland_browns_stadium Cleveland Browns Stadium Cleveland OH 41.5061 -81.6995 67895 NFL ['CLE'] nfl_hardcoded 1999
102 nfl_at&t_stadium AT&T Stadium Arlington TX 32.748 -97.0928 80000 NFL ['DAL'] nfl_hardcoded 2009
103 nfl_empower_field_at_mile_high Empower Field at Mile High Denver CO 39.7439 -105.0201 76125 NFL ['DEN'] nfl_hardcoded 2001
104 nfl_ford_field Ford Field Detroit MI 42.34 -83.0456 65000 NFL ['DET'] nfl_hardcoded 2002
105 nfl_lambeau_field Lambeau Field Green Bay WI 44.5013 -88.0622 81435 NFL ['GB'] nfl_hardcoded 1957
106 nfl_nrg_stadium NRG Stadium Houston TX 29.6847 -95.4107 72220 NFL ['HOU'] nfl_hardcoded 2002
107 nfl_lucas_oil_stadium Lucas Oil Stadium Indianapolis IN 39.7601 -86.1639 67000 NFL ['IND'] nfl_hardcoded 2008
108 nfl_everbank_stadium EverBank Stadium Jacksonville FL 30.3239 -81.6373 67814 NFL ['JAX'] nfl_hardcoded 1995
109 nfl_geha_field_at_arrowhead_stadiu GEHA Field at Arrowhead Stadium Kansas City MO 39.0489 -94.4839 76416 NFL ['KC'] nfl_hardcoded 1972
110 nfl_allegiant_stadium Allegiant Stadium Las Vegas NV 36.0909 -115.1833 65000 NFL ['LV'] nfl_hardcoded 2020
111 nfl_sofi_stadium SoFi Stadium Inglewood CA 33.9535 -118.3392 70240 NFL ['LAC', 'LAR'] nfl_hardcoded 2020
112 nfl_hard_rock_stadium Hard Rock Stadium Miami Gardens FL 25.958 -80.2389 64767 NFL ['MIA'] nfl_hardcoded 1987
113 nfl_u.s._bank_stadium U.S. Bank Stadium Minneapolis MN 44.9736 -93.2575 66655 NFL ['MIN'] nfl_hardcoded 2016
114 nfl_gillette_stadium Gillette Stadium Foxborough MA 42.0909 -71.2643 65878 NFL ['NE'] nfl_hardcoded 2002
115 nfl_caesars_superdome Caesars Superdome New Orleans LA 29.9511 -90.0812 73208 NFL ['NO'] nfl_hardcoded 1975
116 nfl_metlife_stadium MetLife Stadium East Rutherford NJ 40.8135 -74.0745 82500 NFL ['NYG', 'NYJ'] nfl_hardcoded 2010
117 nfl_lincoln_financial_field Lincoln Financial Field Philadelphia PA 39.9008 -75.1675 69596 NFL ['PHI'] nfl_hardcoded 2003
118 nfl_acrisure_stadium Acrisure Stadium Pittsburgh PA 40.4468 -80.0158 68400 NFL ['PIT'] nfl_hardcoded 2001
119 nfl_levi's_stadium Levi's Stadium Santa Clara CA 37.4032 -121.9698 68500 NFL ['SF'] nfl_hardcoded 2014
120 nfl_lumen_field Lumen Field Seattle WA 47.5952 -122.3316 68740 NFL ['SEA'] nfl_hardcoded 2002
121 nfl_raymond_james_stadium Raymond James Stadium Tampa FL 27.9759 -82.5033 65618 NFL ['TB'] nfl_hardcoded 1998
122 nfl_nissan_stadium Nissan Stadium Nashville TN 36.1665 -86.7713 69143 NFL ['TEN'] nfl_hardcoded 1999
123 nfl_northwest_stadium Northwest Stadium Landover MD 38.9076 -76.8645 67617 NFL ['WAS'] nfl_hardcoded 1997
124 mls_mercedes-benz_stadium Mercedes-Benz Stadium Atlanta GA 33.7555 -84.4 42500 MLS ['ATL'] mls_hardcoded 2017
125 mls_q2_stadium Q2 Stadium Austin TX 30.3877 -97.7195 20738 MLS ['AUS'] mls_hardcoded 2021
126 mls_bank_of_america_stadium Bank of America Stadium Charlotte NC 35.2258 -80.8528 38000 MLS ['CLT'] mls_hardcoded 1996
127 mls_soldier_field Soldier Field Chicago IL 41.8623 -87.6167 24995 MLS ['CHI'] mls_hardcoded 1924
128 mls_tql_stadium TQL Stadium Cincinnati OH 39.1114 -84.5222 26000 MLS ['CIN'] mls_hardcoded 2021
129 mls_dicks_sporting_goods_park Dick's Sporting Goods Park Commerce City CO 39.8056 -104.8919 18061 MLS ['COL'] mls_hardcoded 2007
130 mls_lowercom_field Lower.com Field Columbus OH 39.9685 -83.0171 20371 MLS ['CLB'] mls_hardcoded 2021
131 mls_toyota_stadium Toyota Stadium Frisco TX 33.1544 -96.8353 20500 MLS ['DAL'] mls_hardcoded 2005
132 mls_audi_field Audi Field Washington DC 38.8684 -77.0129 20000 MLS ['DC'] mls_hardcoded 2018
133 mls_shell_energy_stadium Shell Energy Stadium Houston TX 29.7522 -95.3524 22039 MLS ['HOU'] mls_hardcoded 2012
134 mls_dignity_health_sports_park Dignity Health Sports Park Carson CA 33.864 -118.261 27000 MLS ['LAG'] mls_hardcoded 2003
135 mls_bmo_stadium BMO Stadium Los Angeles CA 34.0128 -118.2841 22000 MLS ['LAFC'] mls_hardcoded 2018
136 mls_chase_stadium Chase Stadium Fort Lauderdale FL 26.1933 -80.1607 21550 MLS ['MIA'] mls_hardcoded 2020
137 mls_allianz_field Allianz Field Saint Paul MN 44.9531 -93.1647 19400 MLS ['MIN'] mls_hardcoded 2019
138 mls_stade_saputo Stade Saputo Montreal QC 45.5631 -73.5525 19619 MLS ['MTL'] mls_hardcoded 2008
139 mls_geodis_park Geodis Park Nashville TN 36.1301 -86.766 30000 MLS ['NSH'] mls_hardcoded 2022
140 mls_gillette_stadium Gillette Stadium Foxborough MA 42.0909 -71.2643 22385 MLS ['NE'] mls_hardcoded 2002
141 mls_yankee_stadium Yankee Stadium Bronx NY 40.8292 -73.9264 28000 MLS ['NYCFC'] mls_hardcoded 2009
142 mls_red_bull_arena Red Bull Arena Harrison NJ 40.7367 -74.1503 25000 MLS ['NYRB'] mls_hardcoded 2010
143 mls_interandco_stadium Inter&Co Stadium Orlando FL 28.5411 -81.3893 25500 MLS ['ORL'] mls_hardcoded 2017
144 mls_subaru_park Subaru Park Chester PA 39.8322 -75.3789 18500 MLS ['PHI'] mls_hardcoded 2010
145 mls_providence_park Providence Park Portland OR 45.5214 -122.6917 25218 MLS ['POR'] mls_hardcoded 1926
146 mls_america_first_field America First Field Sandy UT 40.5829 -111.8934 20213 MLS ['RSL'] mls_hardcoded 2008
147 mls_paypal_park PayPal Park San Jose CA 37.3514 -121.925 18000 MLS ['SJ'] mls_hardcoded 2015
148 mls_lumen_field Lumen Field Seattle WA 47.5952 -122.3316 37722 MLS ['SEA'] mls_hardcoded 2002
149 mls_childrens_mercy_park Children's Mercy Park Kansas City KS 39.1217 -94.8232 18467 MLS ['SKC'] mls_hardcoded 2011
150 mls_citypark CityPark St. Louis MO 38.6314 -90.2103 22500 MLS ['STL'] mls_hardcoded 2023
151 mls_bmo_field BMO Field Toronto ON 43.6332 -79.4186 30000 MLS ['TOR'] mls_hardcoded 2007
152 mls_bc_place BC Place Vancouver BC 49.2767 -123.1119 22120 MLS ['VAN'] mls_hardcoded 1983
153 mls_snapdragon_stadium Snapdragon Stadium San Diego CA 32.7844 -117.1228 35000 MLS ['SD'] mls_hardcoded 2022

File diff suppressed because it is too large Load Diff