diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-08-30 21:08:32 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-08-30 21:08:32 -0400 |
| commit | b538dc31b1581bc29cf7be64fb91e495a214c244 (patch) | |
| tree | fc005144038d201a0776fb5aea012926158e8c2b /MediaBrowser.Providers/TV/SeriesPostScanTask.cs | |
| parent | e031694a9980f1d30bba149400accc5df841c668 (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.cs | 64 |
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); + } + } + } +} |
