aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-10-18 15:08:48 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-10-18 15:08:48 -0400
commitd87a8ce8fab543e0318e1e8cd5f57e2637ee284d (patch)
treea62b8e9562d70a1a442ec328783fda135825a152 /MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs
parent39186cc2da554c0f2bdfc5653bbc71853eb3fa41 (diff)
fixes #579 - Year images not getting scanned
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs59
1 files changed, 59 insertions, 0 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs b/MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs
new file mode 100644
index 000000000..8600879c2
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs
@@ -0,0 +1,59 @@
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Model.Logging;
+using System;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace MediaBrowser.Server.Implementations.Library.Validators
+{
+ public class YearsPostScanTask : ILibraryPostScanTask
+ {
+ private readonly ILibraryManager _libraryManager;
+ private readonly ILogger _logger;
+
+ public YearsPostScanTask(ILibraryManager libraryManager, ILogger logger)
+ {
+ _libraryManager = libraryManager;
+ _logger = logger;
+ }
+
+ public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
+ {
+ var allYears = _libraryManager.RootFolder.RecursiveChildren
+ .Select(i => i.ProductionYear ?? -1)
+ .Where(i => i != -1)
+ .Distinct()
+ .ToList();
+
+ var count = allYears.Count;
+ var numComplete = 0;
+
+ foreach (var yearNumber in allYears)
+ {
+ var year = _libraryManager.GetYear(yearNumber);
+
+ try
+ {
+ await year.RefreshMetadata(cancellationToken).ConfigureAwait(false);
+ }
+ catch (OperationCanceledException)
+ {
+ // Don't clutter the log
+ break;
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error refreshing year {0}", ex, year);
+ }
+
+ numComplete++;
+ double percent = numComplete;
+ percent /= count;
+ percent *= 90;
+
+ progress.Report(percent + 10);
+ }
+ }
+ }
+}