diff options
| -rw-r--r-- | MediaBrowser.Controller/Entities/TV/Series.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Providers/MediaBrowser.Providers.csproj | 1 | ||||
| -rw-r--r-- | MediaBrowser.Providers/TV/SeriesDynamicInfoProvider.cs | 45 |
3 files changed, 52 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index 1e4d56e1a..11fb198c2 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -41,6 +41,12 @@ namespace MediaBrowser.Controller.Entities.TV public string AirTime { get; set; } /// <summary> + /// Gets or sets the date last episode added. + /// </summary> + /// <value>The date last episode added.</value> + public DateTime DateLastEpisodeAdded { get; set; } + + /// <summary> /// Series aren't included directly in indices - Their Episodes will roll up to them /// </summary> /// <value><c>true</c> if [include in index]; otherwise, <c>false</c>.</value> diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj index 7e90d41f5..f0d332e10 100644 --- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj +++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj @@ -110,6 +110,7 @@ <Compile Include="TV\RemoteSeasonProvider.cs" /> <Compile Include="TV\RemoteSeriesProvider.cs" /> <Compile Include="TV\SeasonProviderFromXml.cs" /> + <Compile Include="TV\SeriesDynamicInfoProvider.cs" /> <Compile Include="TV\SeriesPostScanTask.cs" /> <Compile Include="TV\SeriesProviderFromXml.cs" /> <Compile Include="TV\SeriesXmlParser.cs" /> diff --git a/MediaBrowser.Providers/TV/SeriesDynamicInfoProvider.cs b/MediaBrowser.Providers/TV/SeriesDynamicInfoProvider.cs new file mode 100644 index 000000000..59faaa931 --- /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<bool> FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken) + { + var series = (Series)item; + + var episodes = series.RecursiveChildren + .OfType<Episode>() + .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; } + } + } +} |
