diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index 1e4d56e1a5..11fb198c23 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -40,6 +40,12 @@ namespace MediaBrowser.Controller.Entities.TV /// The air time. public string AirTime { get; set; } + /// + /// Gets or sets the date last episode added. + /// + /// The date last episode added. + public DateTime DateLastEpisodeAdded { get; set; } + /// /// Series aren't included directly in indices - Their Episodes will roll up to them /// diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj index 7e90d41f5f..f0d332e107 100644 --- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj +++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj @@ -110,6 +110,7 @@ + diff --git a/MediaBrowser.Providers/TV/SeriesDynamicInfoProvider.cs b/MediaBrowser.Providers/TV/SeriesDynamicInfoProvider.cs new file mode 100644 index 0000000000..59faaa931e --- /dev/null +++ b/MediaBrowser.Providers/TV/SeriesDynamicInfoProvider.cs @@ -0,0 +1,45 @@ +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Entities.TV; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Logging; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Providers.TV +{ + public class SeriesDynamicInfoProvider : BaseMetadataProvider, IDynamicInfoProvider + { + public SeriesDynamicInfoProvider(ILogManager logManager, IServerConfigurationManager configurationManager) + : base(logManager, configurationManager) + { + } + + public override bool Supports(BaseItem item) + { + return item is Series; + } + + public override Task FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken) + { + var series = (Series)item; + + var episodes = series.RecursiveChildren + .OfType() + .ToList(); + + series.DateLastEpisodeAdded = episodes.Select(i => i.DateCreated) + .OrderByDescending(i => i) + .FirstOrDefault(); + + // Don't save to the db + return FalseTaskResult; + } + + public override MetadataProviderPriority Priority + { + get { return MetadataProviderPriority.Last; } + } + } +}