41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
import json
|
|
import logging
|
|
from datetime import datetime
|
|
from zoneinfo import ZoneInfo
|
|
|
|
import requests
|
|
|
|
from app.config import SCOREBOARD_DATA_FILE
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
EASTERN = ZoneInfo("America/New_York")
|
|
|
|
|
|
def get_scoreboard_data():
|
|
now = datetime.now(EASTERN)
|
|
start_time_evening = now.replace(hour=19, minute=0, second=0, microsecond=0)
|
|
end_time_morning = now.replace(hour=3, minute=0, second=0, microsecond=0)
|
|
|
|
if now >= start_time_evening or now < end_time_morning:
|
|
nhle_api_url = "https://api-web.nhle.com/v1/score/now"
|
|
else:
|
|
nhle_api_url = f"https://api-web.nhle.com/v1/score/{now.strftime('%Y-%m-%d')}"
|
|
|
|
try:
|
|
response = requests.get(nhle_api_url, timeout=10)
|
|
response.raise_for_status()
|
|
return response.json()
|
|
except requests.RequestException as e:
|
|
logger.error("Failed to fetch scoreboard data from %s: %s", nhle_api_url, e)
|
|
return None
|
|
|
|
|
|
def store_scoreboard_data():
|
|
scoreboard_data = get_scoreboard_data()
|
|
if scoreboard_data:
|
|
with open(SCOREBOARD_DATA_FILE, "w") as json_file:
|
|
json.dump(scoreboard_data, json_file)
|
|
return scoreboard_data
|
|
return None
|