Fixing issues with stadiums

This commit is contained in:
2025-07-11 21:09:17 +00:00
parent 6747c731c6
commit bdaa432ab7
5 changed files with 168 additions and 41 deletions

View File

@@ -1,8 +1,7 @@
import pytz
import ephem
import requests
import datetime
from geopy.geocoders import Nominatim
from timezonefinder import TimezoneFinder
def get_sun_and_moon_phase(lat, long, date_str):
date_str = f"{date_str[:4]}/{date_str[4:6]}/{date_str[6:8]}"
@@ -25,14 +24,9 @@ def get_sun_and_moon_phase(lat, long, date_str):
return (sunrise_time, sunset_time, moon.phase)
def get_timezone(latitude: float, longitude: float):
geolocator = Nominatim()
location = geolocator.reverse(f"{latitude}, {longitude}")
if location:
for tag in location.raw['address']:
if 'timezone' in tag:
tz_name = tag.split('=')[1]
return pytz.timezone(tz_name)
obj = TimezoneFinder()
timezone_str = obj.timezone_at(lng=longitude, lat=latitude)
return timezone_str
def get_weather(latitude: float, longitude: float, date_str: str, hour: int) -> dict:
"""

View File

@@ -4,7 +4,9 @@ INSERT OR IGNORE INTO parks
("ARL03", "Globe Life Field in Arlington", 332, 14, 400, 8, 325, 8, 1, 32.747361, -97.084167, 568),
("ATL03", "Truist Park", 335, 11, 400, 12, 330, 15, 0, 33.89, -84.468, 951),
("BAL12", "Oriole Park at Camden Yards", 333, 7, 400, 7, 318, 21, 0, 39.283889, -76.621667, 36),
("BIR01", "Rickwood Field", 325, 8, 400, 8, 332, 8, 0, 33.502222, -86.855833, 551),
("BOS07", "Fenway Park", 310, 37, 390, 15, 302, 3, 0, 42.34625, -71.09775, 16),
("CHI11", "Weeghman Park; Cubs Park", 355, 11, 400, 11, 353, 11, 0, 41.948056, -87.655556, 594),
("CHI12", "Guaranteed Rate Field", 330, 8, 400, 8, 335, 8, 0, 41.83, -87.633889, 594),
("CIN09", "Great American Ballpark", 328, 12, 404, 8, 325, 12, 0, 39.0975, -84.506667, 489),
("CLE08", "Progressive Field", 325, 19, 410, 9, 325, 9, 0, 41.495833, -81.685278, 653),
@@ -12,8 +14,10 @@ INSERT OR IGNORE INTO parks
("DET05", "Comerica Park", 345, 7, 420, 9, 330, 8, 0, 42.339169, -83.048607, 577),
("HOU03", "Minute Maid Park", 315, 21, 436, 10, 326, 7, 1, 29.756944, -95.355556, 20),
("KAN06", "Kauffman Stadium", 330, 9, 410, 9, 330, 9, 0, 39.051389, -94.480556, 856),
("LON01", "London Stadium", 330, 16, 392, 16, 330, 16, 1, 51.538611, -0.016389, 24),
("LOS02", "Wrigley Field", 355, 15, 400, 11.5, 353, 15, 0, 41.948056, -87.655556, 600),
("LOS03", "Dodger Stadium", 330, 8, 395, 8, 330, 8, 0, 34.073611, -118.24, 515),
("MEX02", "Estadio Alfredo Harp Helu", 332, 10, 410, 10, 332, 10, 0, 19.404, -99.0855, 7316),
("MIA02", "Marlins Park", 344, 9, 407, 12, 335, 9, 1, 25.778056, -80.219722, 7),
("MIL06", "Miller Park", 344, 8, 400, 8, 345, 8, 1, 43.028333, -87.971111, 617),
("MIN04", "Target Field", 339, 8, 404, 8, 328, 23, 0, 44.981667, -93.278333, 827),
@@ -30,4 +34,5 @@ INSERT OR IGNORE INTO parks
("STL10", "Busch Stadium III", 336, 8, 400, 8, 335, 8, 0, 38.6225, -90.193056, 440),
("STP01", "Tropicana Field", 315, 11, 404, 9, 322, 11, 1, 27.768333, -82.653333, 39),
("TOR02", "Rogers Centre", 328, 8, 400, 8, 328, 8, 1, 43.641389, -79.389167, 282),
("WAS11", "Nationals Park", 336, 8, 402, 12, 335, 10, 0, 38.872778, -77.0075, 7)
("WAS11", "Nationals Park", 336, 8, 402, 12, 335, 10, 0, 38.872778, -77.0075, 7),
("WIL02", "BB&T Ballpark at Bowman Field", 323, 8, 411, 8, 331, 8, 0, 41.242347, -77.047067, 521)

View File

@@ -47,6 +47,13 @@ class Importer:
self.populate_database_with_stats(game)
def populate_database_with_stats(self, game_stats):
parkid = game_stats["park-id"]
park_data = self.database.select("SELECT latitude, longitude FROM parks WHERE park_id = ?", (game_stats["park-id"],))
if park_data is None:
print(f"{parkid} is None")
return
insert_game = """
INSERT INTO games
(
@@ -191,11 +198,6 @@ class Importer:
self.database.insert(insert_team_game, visiting_team_data)
self.database.insert(insert_team_game, home_team_data)
parkid = game_stats["park-id"]
print(f"SELECT latitude, longitude FROM parks WHERE park_id = {parkid}")
park_data = self.database.select("SELECT latitude, longitude FROM parks WHERE park_id = ?", (game_stats["park-id"],))
print(f"latlon {park_data}")
hour = 15 if game_stats["day-night"] == "D" else 19
historic_weather = get_weather(park_data[0], park_data[1], game_stats["date"], hour)
historic_weather = historic_weather["hourly"]
@@ -217,7 +219,7 @@ class Importer:
?, ?, ?,
?, ?, ?,
?, ?, ?,
?,
?
)
"""
@@ -231,3 +233,5 @@ class Importer:
historic_weather["wind_gusts_10m"][hour], sunrise_time, sunset_time,
moonphase,
]
self.database.insert(insert_into_weather, weather_data)