From d87a8ce8fab543e0318e1e8cd5f57e2637ee284d Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 18 Oct 2013 15:08:48 -0400 Subject: [PATCH] fixes #579 - Year images not getting scanned --- .../Library/Validators/GameGenresValidator.cs | 1 + .../Library/Validators/GenresValidator.cs | 1 + .../Validators/MusicGenresValidator.cs | 1 + .../Library/Validators/PeopleValidator.cs | 1 + .../Library/Validators/StudiosValidator.cs | 1 + .../Library/Validators/YearsPostScanTask.cs | 59 +++++++++++++++++++ ...MediaBrowser.Server.Implementations.csproj | 1 + 7 files changed, 65 insertions(+) create mode 100644 MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs diff --git a/MediaBrowser.Server.Implementations/Library/Validators/GameGenresValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/GameGenresValidator.cs index b9e033d230..d21a123c07 100644 --- a/MediaBrowser.Server.Implementations/Library/Validators/GameGenresValidator.cs +++ b/MediaBrowser.Server.Implementations/Library/Validators/GameGenresValidator.cs @@ -80,6 +80,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators catch (OperationCanceledException) { // Don't clutter the log + break; } catch (Exception ex) { diff --git a/MediaBrowser.Server.Implementations/Library/Validators/GenresValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/GenresValidator.cs index ea5d2477ab..0670e1a851 100644 --- a/MediaBrowser.Server.Implementations/Library/Validators/GenresValidator.cs +++ b/MediaBrowser.Server.Implementations/Library/Validators/GenresValidator.cs @@ -81,6 +81,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators catch (OperationCanceledException) { // Don't clutter the log + break; } catch (Exception ex) { diff --git a/MediaBrowser.Server.Implementations/Library/Validators/MusicGenresValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/MusicGenresValidator.cs index e959baae5a..166f557cf0 100644 --- a/MediaBrowser.Server.Implementations/Library/Validators/MusicGenresValidator.cs +++ b/MediaBrowser.Server.Implementations/Library/Validators/MusicGenresValidator.cs @@ -81,6 +81,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators catch (OperationCanceledException) { // Don't clutter the log + break; } catch (Exception ex) { diff --git a/MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs index 9554290ed8..26e9a23e99 100644 --- a/MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs +++ b/MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs @@ -129,6 +129,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators catch (OperationCanceledException) { _logger.Info("Pre-scan task cancelled: {0}", task.GetType().Name); + break; } catch (Exception ex) { diff --git a/MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs index 1082dd18b3..02c7a94b4b 100644 --- a/MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs +++ b/MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs @@ -80,6 +80,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators catch (OperationCanceledException) { // Don't clutter the log + break; } catch (Exception ex) { diff --git a/MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs b/MediaBrowser.Server.Implementations/Library/Validators/YearsPostScanTask.cs new file mode 100644 index 0000000000..8600879c2d --- /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); + } + } + } +} diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index 0f05ccf2a2..3f74bb52a3 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -164,6 +164,7 @@ +