aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Controller/Entities/TV/Series.cs6
-rw-r--r--MediaBrowser.Providers/MediaBrowser.Providers.csproj1
-rw-r--r--MediaBrowser.Providers/TV/SeriesDynamicInfoProvider.cs45
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; }
+ }
+ }
+}