Prevent should refresh series from failing

Fixed: Prevent error checking if series should be refreshed from failing refresh series task
This commit is contained in:
Mark McDowall 2025-05-21 17:17:19 -07:00
parent 51c17fd312
commit 3eed84c679

View file

@ -23,47 +23,57 @@ public ShouldRefreshSeries(IEpisodeService episodeService, Logger logger)
public bool ShouldRefresh(Series series) public bool ShouldRefresh(Series series)
{ {
if (series.LastInfoSync < DateTime.UtcNow.AddDays(-30)) try
{ {
_logger.Trace("Series {0} last updated more than 30 days ago, should refresh.", series.Title); if (series.LastInfoSync < DateTime.UtcNow.AddDays(-30))
return true; {
} _logger.Trace("Series {0} last updated more than 30 days ago, should refresh.", series.Title);
return true;
}
var episodes = _episodeService.GetEpisodeBySeries(series.Id); var episodes = _episodeService.GetEpisodeBySeries(series.Id);
var atLeastOneAiredEpisodeWithoutTitle = episodes.Any(e => var atLeastOneAiredEpisodeWithoutTitle = episodes.Any(e =>
e.SeasonNumber > 0 && e.SeasonNumber > 0 &&
e.AirDateUtc.HasValue && e.AirDateUtc.Value.Before(DateTime.UtcNow) && e.AirDateUtc.HasValue && e.AirDateUtc.Value.Before(DateTime.UtcNow) &&
e.Title.Equals("TBA", StringComparison.Ordinal)); e.Title.Equals("TBA", StringComparison.Ordinal));
if (atLeastOneAiredEpisodeWithoutTitle) if (atLeastOneAiredEpisodeWithoutTitle)
{ {
_logger.Trace("Series {0} with at least one aired episode with TBA title, should refresh.", series.Title); _logger.Trace("Series {0} with at least one aired episode with TBA title, should refresh.",
return true; series.Title);
} return true;
}
if (series.LastInfoSync >= DateTime.UtcNow.AddHours(-6)) if (series.LastInfoSync >= DateTime.UtcNow.AddHours(-6))
{ {
_logger.Trace("Series {0} last updated less than 6 hours ago, should not be refreshed.", series.Title); _logger.Trace("Series {0} last updated less than 6 hours ago, should not be refreshed.",
series.Title);
return false;
}
if (series.Status != SeriesStatusType.Ended)
{
_logger.Trace("Series {0} is not ended, should refresh.", series.Title);
return true;
}
var lastEpisode = episodes.MaxBy(e => e.AirDateUtc);
if (lastEpisode != null && lastEpisode.AirDateUtc > DateTime.UtcNow.AddDays(-30))
{
_logger.Trace("Last episode in {0} aired less than 30 days ago, should refresh.", series.Title);
return true;
}
_logger.Trace("Series {0} ended long ago, should not be refreshed.", series.Title);
return false; return false;
} }
catch (Exception e)
if (series.Status != SeriesStatusType.Ended)
{ {
_logger.Trace("Series {0} is not ended, should refresh.", series.Title); _logger.Error(e, "Unable to determine if series should refresh, will try to refresh.");
return true; return true;
} }
var lastEpisode = episodes.MaxBy(e => e.AirDateUtc);
if (lastEpisode != null && lastEpisode.AirDateUtc > DateTime.UtcNow.AddDays(-30))
{
_logger.Trace("Last episode in {0} aired less than 30 days ago, should refresh.", series.Title);
return true;
}
_logger.Trace("Series {0} ended long ago, should not be refreshed.", series.Title);
return false;
} }
} }
} }