aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/TV/SeriesPostScanTask.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-08-30 21:08:32 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-08-30 21:08:32 -0400
commitb538dc31b1581bc29cf7be64fb91e495a214c244 (patch)
treefc005144038d201a0776fb5aea012926158e8c2b /MediaBrowser.Providers/TV/SeriesPostScanTask.cs
parente031694a9980f1d30bba149400accc5df841c668 (diff)
added new properties and endpoints for series special features
Diffstat (limited to 'MediaBrowser.Providers/TV/SeriesPostScanTask.cs')
-rw-r--r--MediaBrowser.Providers/TV/SeriesPostScanTask.cs64
1 files changed, 64 insertions, 0 deletions
diff --git a/MediaBrowser.Providers/TV/SeriesPostScanTask.cs b/MediaBrowser.Providers/TV/SeriesPostScanTask.cs
new file mode 100644
index 0000000000..a781551dee
--- /dev/null
+++ b/MediaBrowser.Providers/TV/SeriesPostScanTask.cs
@@ -0,0 +1,64 @@
+using MediaBrowser.Controller.Entities.TV;
+using MediaBrowser.Controller.Library;
+using System;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace MediaBrowser.Providers.TV
+{
+ class SeriesPostScanTask : ILibraryPostScanTask
+ {
+ /// <summary>
+ /// The _library manager
+ /// </summary>
+ private readonly ILibraryManager _libraryManager;
+
+ public SeriesPostScanTask(ILibraryManager libraryManager)
+ {
+ _libraryManager = libraryManager;
+ }
+
+ public Task Run(IProgress<double> progress, CancellationToken cancellationToken)
+ {
+ return Task.Run(() => RunInternal(progress, cancellationToken));
+ }
+
+ private void RunInternal(IProgress<double> progress, CancellationToken cancellationToken)
+ {
+ var seriesList = _libraryManager.RootFolder
+ .RecursiveChildren
+ .OfType<Series>()
+ .ToList();
+
+ var numComplete = 0;
+
+ foreach (var series in seriesList)
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+
+ var episodes = series.RecursiveChildren
+ .OfType<Episode>()
+ .ToList();
+
+ series.SpecialFeatureIds = episodes
+ .Where(i => i.ParentIndexNumber.HasValue && i.ParentIndexNumber.Value == 0)
+ .Select(i => i.Id)
+ .ToList();
+
+ series.SeasonCount = episodes
+ .Select(i => i.ParentIndexNumber ?? 0)
+ .Where(i => i != 0)
+ .Distinct()
+ .Count();
+
+ numComplete++;
+ double percent = numComplete;
+ percent /= seriesList.Count;
+ percent *= 100;
+
+ progress.Report(percent);
+ }
+ }
+ }
+}