diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-10-18 15:08:48 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-10-18 15:08:48 -0400 |
| commit | d87a8ce8fab543e0318e1e8cd5f57e2637ee284d (patch) | |
| tree | a62b8e9562d70a1a442ec328783fda135825a152 /MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs | |
| parent | 39186cc2da554c0f2bdfc5653bbc71853eb3fa41 (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.cs | 59 |
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); + } + } + } +} |
