From d87a8ce8fab543e0318e1e8cd5f57e2637ee284d Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 18 Oct 2013 15:08:48 -0400 Subject: fixes #579 - Year images not getting scanned --- .../Library/Validators/YearsPostScanTask.cs | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs (limited to 'MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs') 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 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); + } + } + } +} -- cgit v1.2.3