mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-04-10 21:03:01 +00:00
add scoreboard to cache
This commit is contained in:
@@ -65,6 +65,7 @@ class OddsTickerManager:
|
|||||||
self.future_fetch_days = self.odds_ticker_config.get('future_fetch_days', 7)
|
self.future_fetch_days = self.odds_ticker_config.get('future_fetch_days', 7)
|
||||||
self.loop = self.odds_ticker_config.get('loop', True)
|
self.loop = self.odds_ticker_config.get('loop', True)
|
||||||
self.show_channel_logos = self.odds_ticker_config.get('show_channel_logos', True)
|
self.show_channel_logos = self.odds_ticker_config.get('show_channel_logos', True)
|
||||||
|
self.request_timeout = self.odds_ticker_config.get('request_timeout', 30)
|
||||||
|
|
||||||
# Initialize managers
|
# Initialize managers
|
||||||
self.cache_manager = CacheManager()
|
self.cache_manager = CacheManager()
|
||||||
@@ -180,7 +181,7 @@ class OddsTickerManager:
|
|||||||
else:
|
else:
|
||||||
url = f"https://site.api.espn.com/apis/site/v2/sports/{sport}/{league}/teams/{team_abbr}"
|
url = f"https://site.api.espn.com/apis/site/v2/sports/{sport}/{league}/teams/{team_abbr}"
|
||||||
|
|
||||||
response = requests.get(url, timeout=10)
|
response = requests.get(url, timeout=self.request_timeout)
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
data = response.json()
|
data = response.json()
|
||||||
|
|
||||||
@@ -320,11 +321,32 @@ class OddsTickerManager:
|
|||||||
if not self.show_favorite_teams_only and max_games_per_league and games_found >= max_games_per_league:
|
if not self.show_favorite_teams_only and max_games_per_league and games_found >= max_games_per_league:
|
||||||
break # We have enough games for this league, stop searching
|
break # We have enough games for this league, stop searching
|
||||||
try:
|
try:
|
||||||
url = f"https://site.api.espn.com/apis/site/v2/sports/{sport}/{league}/scoreboard?dates={date}"
|
cache_key = f"scoreboard_data_{sport}_{league}_{date}"
|
||||||
logger.debug(f"Fetching {league} games from ESPN API for date: {date}")
|
|
||||||
response = requests.get(url, timeout=10)
|
# Dynamically set TTL for scoreboard data
|
||||||
response.raise_for_status()
|
current_date_obj = now.date()
|
||||||
data = response.json()
|
request_date_obj = datetime.strptime(date, "%Y%m%d").date()
|
||||||
|
|
||||||
|
if request_date_obj < current_date_obj:
|
||||||
|
ttl = 86400 * 30 # 30 days for past dates
|
||||||
|
elif request_date_obj == current_date_obj:
|
||||||
|
ttl = 3600 # 1 hour for today
|
||||||
|
else:
|
||||||
|
ttl = 43200 # 12 hours for future dates
|
||||||
|
|
||||||
|
data = self.cache_manager.get(cache_key)
|
||||||
|
|
||||||
|
if data is None:
|
||||||
|
url = f"https://site.api.espn.com/apis/site/v2/sports/{sport}/{league}/scoreboard?dates={date}"
|
||||||
|
logger.debug(f"Fetching {league} games from ESPN API for date: {date}")
|
||||||
|
response = requests.get(url, timeout=self.request_timeout)
|
||||||
|
response.raise_for_status()
|
||||||
|
data = response.json()
|
||||||
|
self.cache_manager.set(cache_key, data, ttl=ttl)
|
||||||
|
logger.debug(f"Cached scoreboard for {league} on {date} with a TTL of {ttl} seconds.")
|
||||||
|
else:
|
||||||
|
logger.debug(f"Using cached scoreboard data for {league} on {date}.")
|
||||||
|
|
||||||
for event in data.get('events', []):
|
for event in data.get('events', []):
|
||||||
# Stop if we have enough games for the league (when not showing favorite teams only)
|
# Stop if we have enough games for the league (when not showing favorite teams only)
|
||||||
if not self.show_favorite_teams_only and max_games_per_league and games_found >= max_games_per_league:
|
if not self.show_favorite_teams_only and max_games_per_league and games_found >= max_games_per_league:
|
||||||
|
|||||||
Reference in New Issue
Block a user