mirror of
https://github.com/Sonarr/Sonarr
synced 2025-12-15 12:53:01 +01:00
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:
parent
51c17fd312
commit
3eed84c679
1 changed files with 41 additions and 31 deletions
|
|
@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue