Ver código fonte

added DateLastEpisodeAdded

Luke Pulverenti 11 anos atrás
pai
commit
f7deec40d0

+ 6 - 0
MediaBrowser.Controller/Entities/TV/Series.cs

@@ -40,6 +40,12 @@ namespace MediaBrowser.Controller.Entities.TV
         /// <value>The air time.</value>
         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>

+ 1 - 0
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" />

+ 45 - 0
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; }
+        }
+    }
+}