Syntrex commited on
Commit
d325450
·
verified ·
1 Parent(s): 60f5126

Rename data/weather.txt to data/weather.py

Browse files
Files changed (2) hide show
  1. data/weather.py +51 -0
  2. data/weather.txt +0 -0
data/weather.py ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+ from datetime import datetime
4
+ from typing import Any
5
+
6
+ import pandas as pd
7
+ import requests
8
+
9
+ from config.settings import OPENWEATHER_API_KEY, OPENWEATHER_URL
10
+
11
+ BALLPARK_COORDS: dict[str, tuple[float, float]] = {
12
+ "loanDepot park": (25.7781, -80.2197),
13
+ "Daikin Park": (29.7573, -95.3555),
14
+ "Dodger Stadium": (34.0739, -118.2400),
15
+ "Petco Park": (32.7073, -117.1566),
16
+ "Chase Field": (33.4455, -112.0667),
17
+ }
18
+
19
+
20
+ def fetch_weather_for_venue(venue_name: str) -> pd.DataFrame:
21
+ if not OPENWEATHER_API_KEY or venue_name not in BALLPARK_COORDS:
22
+ return pd.DataFrame()
23
+
24
+ lat, lon = BALLPARK_COORDS[venue_name]
25
+
26
+ params = {
27
+ "lat": lat,
28
+ "lon": lon,
29
+ "appid": OPENWEATHER_API_KEY,
30
+ "units": "imperial",
31
+ }
32
+
33
+ response = requests.get(OPENWEATHER_URL, params=params, timeout=30)
34
+ response.raise_for_status()
35
+ payload = response.json()
36
+
37
+ weather_list = payload.get("weather", [])
38
+ description = weather_list[0].get("description", "") if weather_list else ""
39
+
40
+ row = {
41
+ "fetched_at": datetime.utcnow(),
42
+ "venue_key": venue_name,
43
+ "location_name": payload.get("name", venue_name),
44
+ "temperature_f": (payload.get("main") or {}).get("temp"),
45
+ "humidity": (payload.get("main") or {}).get("humidity"),
46
+ "wind_speed_mph": (payload.get("wind") or {}).get("speed"),
47
+ "wind_deg": (payload.get("wind") or {}).get("deg"),
48
+ "description": description,
49
+ }
50
+
51
+ return pd.DataFrame([row])
data/weather.txt DELETED
File without changes