2014-03-21 04:15:01 +00:00
|
|
|
|
using System;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using NLog;
|
|
|
|
|
|
|
|
|
|
namespace NzbDrone.Core.Tv
|
|
|
|
|
{
|
|
|
|
|
public interface ICheckIfSeriesShouldBeRefreshed
|
|
|
|
|
{
|
|
|
|
|
bool ShouldRefresh(Series series);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class ShouldRefreshSeries : ICheckIfSeriesShouldBeRefreshed
|
|
|
|
|
{
|
|
|
|
|
private readonly IEpisodeService _episodeService;
|
|
|
|
|
private readonly Logger _logger;
|
|
|
|
|
|
|
|
|
|
public ShouldRefreshSeries(IEpisodeService episodeService, Logger logger)
|
|
|
|
|
{
|
|
|
|
|
_episodeService = episodeService;
|
|
|
|
|
_logger = logger;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool ShouldRefresh(Series series)
|
|
|
|
|
{
|
2015-08-11 20:03:28 +00:00
|
|
|
|
if (series.LastInfoSync < DateTime.UtcNow.AddDays(-30))
|
2014-03-21 04:15:01 +00:00
|
|
|
|
{
|
2015-08-11 20:03:28 +00:00
|
|
|
|
_logger.Trace("Series {0} last updated more than 30 days ago, should refresh.", series.Title);
|
2014-03-21 04:15:01 +00:00
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2015-08-11 20:03:28 +00:00
|
|
|
|
if (series.LastInfoSync >= DateTime.UtcNow.AddHours(-6))
|
2014-03-21 04:15:01 +00:00
|
|
|
|
{
|
2015-08-11 20:03:28 +00:00
|
|
|
|
_logger.Trace("Series {0} last updated less than 6 hours ago, should not be refreshed.", series.Title);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2019-11-24 22:47:22 +00:00
|
|
|
|
if (series.Status != SeriesStatusType.Ended)
|
2015-08-11 20:03:28 +00:00
|
|
|
|
{
|
2019-11-24 22:47:22 +00:00
|
|
|
|
_logger.Trace("Series {0} is not ended, should refresh.", series.Title);
|
2014-03-21 04:15:01 +00:00
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var lastEpisode = _episodeService.GetEpisodeBySeries(series.Id).OrderByDescending(e => e.AirDateUtc).FirstOrDefault();
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
2015-08-11 20:03:28 +00:00
|
|
|
|
_logger.Trace("Series {0} ended long ago, should not be refreshed.", series.Title);
|
2014-03-21 04:15:01 +00:00
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|