diff --git a/src/NzbDrone.Core/Tv/ShouldRefreshSeries.cs b/src/NzbDrone.Core/Tv/ShouldRefreshSeries.cs index f89687394..9f0d4c029 100644 --- a/src/NzbDrone.Core/Tv/ShouldRefreshSeries.cs +++ b/src/NzbDrone.Core/Tv/ShouldRefreshSeries.cs @@ -23,47 +23,57 @@ public ShouldRefreshSeries(IEpisodeService episodeService, Logger logger) 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); - return true; - } + if (series.LastInfoSync < DateTime.UtcNow.AddDays(-30)) + { + _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 => - e.SeasonNumber > 0 && - e.AirDateUtc.HasValue && e.AirDateUtc.Value.Before(DateTime.UtcNow) && - e.Title.Equals("TBA", StringComparison.Ordinal)); + var atLeastOneAiredEpisodeWithoutTitle = episodes.Any(e => + e.SeasonNumber > 0 && + e.AirDateUtc.HasValue && e.AirDateUtc.Value.Before(DateTime.UtcNow) && + e.Title.Equals("TBA", StringComparison.Ordinal)); - if (atLeastOneAiredEpisodeWithoutTitle) - { - _logger.Trace("Series {0} with at least one aired episode with TBA title, should refresh.", series.Title); - return true; - } + if (atLeastOneAiredEpisodeWithoutTitle) + { + _logger.Trace("Series {0} with at least one aired episode with TBA title, should refresh.", + series.Title); + return true; + } - if (series.LastInfoSync >= DateTime.UtcNow.AddHours(-6)) - { - _logger.Trace("Series {0} last updated less than 6 hours ago, should not be refreshed.", series.Title); + if (series.LastInfoSync >= DateTime.UtcNow.AddHours(-6)) + { + _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; } - - if (series.Status != SeriesStatusType.Ended) + catch (Exception e) { - _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; } - - 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; } } }