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 @@ +