From 9c5cceb4ecc277ffb5a3a988f655ad674bf41c58 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 14 Aug 2014 09:24:30 -0400 Subject: update translations --- .../Library/Validators/PeopleValidator.cs | 103 +++++++++++++++++++-- 1 file changed, 95 insertions(+), 8 deletions(-) (limited to 'MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs') diff --git a/MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs index 05c972a4e..059ad2481 100644 --- a/MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs +++ b/MediaBrowser.Server.Implementations/Library/Validators/PeopleValidator.cs @@ -1,8 +1,13 @@ using MediaBrowser.Common.Progress; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System; +using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -23,46 +28,128 @@ namespace MediaBrowser.Server.Implementations.Library.Validators /// private readonly ILogger _logger; + private readonly IServerConfigurationManager _config; + /// /// Initializes a new instance of the class. /// /// The library manager. /// The logger. - public PeopleValidator(ILibraryManager libraryManager, ILogger logger) + public PeopleValidator(ILibraryManager libraryManager, ILogger logger, IServerConfigurationManager config) { _libraryManager = libraryManager; _logger = logger; + _config = config; + } + + private bool DownloadMetadata(PersonInfo i, PeopleMetadataOptions options) + { + if (i.IsType(PersonType.Actor)) + { + return options.DownloadActorMetadata; + } + if (i.IsType(PersonType.Director)) + { + return options.DownloadDirectorMetadata; + } + if (i.IsType(PersonType.Composer)) + { + return options.DownloadComposerMetadata; + } + if (i.IsType(PersonType.Writer)) + { + return options.DownloadWriterMetadata; + } + if (i.IsType(PersonType.Producer)) + { + return options.DownloadProducerMetadata; + } + if (i.IsType(PersonType.GuestStar)) + { + return options.DownloadGuestStarMetadata; + } + + return options.DownloadOtherPeopleMetadata; + } + + private IEnumerable GetPeopleToValidate(BaseItem item, PeopleMetadataOptions options) + { + return item.People.Where(i => + { + if (i.IsType(PersonType.Actor)) + { + return options.DownloadActorMetadata; + } + if (i.IsType(PersonType.Director)) + { + return options.DownloadDirectorMetadata; + } + if (i.IsType(PersonType.Composer)) + { + return options.DownloadComposerMetadata; + } + if (i.IsType(PersonType.Writer)) + { + return options.DownloadWriterMetadata; + } + if (i.IsType(PersonType.Producer)) + { + return options.DownloadProducerMetadata; + } + if (i.IsType(PersonType.GuestStar)) + { + return options.DownloadGuestStarMetadata; + } + + return options.DownloadOtherPeopleMetadata; + }); } /// /// Validates the people. /// /// The cancellation token. - /// The options. /// The progress. /// Task. - public async Task ValidatePeople(CancellationToken cancellationToken, MetadataRefreshOptions options, IProgress progress) + public async Task ValidatePeople(CancellationToken cancellationToken, IProgress progress) { var innerProgress = new ActionableProgress(); innerProgress.RegisterAction(pct => progress.Report(pct * .15)); + var peopleOptions = _config.Configuration.PeopleMetadataOptions; + var people = _libraryManager.RootFolder.GetRecursiveChildren() - .SelectMany(c => c.People) + .SelectMany(i => i.People) .Where(i => !string.IsNullOrWhiteSpace(i.Name)) - .Select(i => i.Name) - .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(); - var numComplete = 0; + var dict = new Dictionary(StringComparer.OrdinalIgnoreCase); foreach (var person in people) + { + bool current; + if (!dict.TryGetValue(person.Name, out current) || !current) + { + dict[person.Name] = DownloadMetadata(person, peopleOptions); + } + } + + var numComplete = 0; + + foreach (var person in dict) { cancellationToken.ThrowIfCancellationRequested(); try { - var item = _libraryManager.GetPerson(person); + var item = _libraryManager.GetPerson(person.Key); + + var options = new MetadataRefreshOptions + { + MetadataRefreshMode = person.Value ? MetadataRefreshMode.Default : MetadataRefreshMode.ValidationOnly, + ImageRefreshMode = person.Value ? ImageRefreshMode.Default : ImageRefreshMode.ValidationOnly + }; await item.RefreshMetadata(options, cancellationToken).ConfigureAwait(false); } -- cgit v1.2.3