diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-29 20:51:21 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-29 20:51:21 -0400 |
| commit | f7deec40d05de8efc3959a2be5c7b278ec4d826b (patch) | |
| tree | 9357f1f0d3aaf86610e19ba993bd7bd85dad04e1 | |
| parent | 02ebeb0e5bc85a62a395e5605b66b9b558c4e2c8 (diff) | |
added DateLastEpisodeAdded
| -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; } + } + } +} |
