diff options
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library')
4 files changed, 58 insertions, 21 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index c5171e323..bdc94b88b 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -345,7 +345,7 @@ namespace MediaBrowser.Server.Implementations.Library try { - await UpdateItem(season, ItemUpdateType.MetadataEdit, cancellationToken).ConfigureAwait(false); + await UpdateItem(season, ItemUpdateType.MetadataDownload, cancellationToken).ConfigureAwait(false); } catch (Exception ex) { @@ -1108,6 +1108,8 @@ namespace MediaBrowser.Server.Implementations.Library progress.Report(innerPercent); }); + _logger.Debug("Running post-scan task {0}", task.GetType().Name); + try { await task.Run(innerProgress, cancellationToken).ConfigureAwait(false); @@ -1223,6 +1225,11 @@ namespace MediaBrowser.Server.Implementations.Library }; } + public List<Guid> GetItemIds(InternalItemsQuery query) + { + return ItemRepository.GetItemIdsList(query); + } + /// <summary> /// Gets the intros. /// </summary> @@ -2057,30 +2064,58 @@ namespace MediaBrowser.Server.Implementations.Library } } + public List<PersonInfo> GetPeople(InternalPeopleQuery query) + { + return ItemRepository.GetPeople(query); + } public List<PersonInfo> GetPeople(BaseItem item) { - return item.People ?? ItemRepository.GetPeople(item.Id); + var people = GetPeople(new InternalPeopleQuery + { + ItemId = item.Id + }); + + if (people.Count > 0) + { + return people; + } + + return item.People ?? new List<PersonInfo>(); + } + + public List<Person> GetPeopleItems(InternalPeopleQuery query) + { + return ItemRepository.GetPeopleNames(query).Select(i => + { + try + { + return GetPerson(i); + } + catch (Exception ex) + { + _logger.ErrorException("Error getting person", ex); + return null; + } + + }).Where(i => i != null).ToList(); + } + + public List<string> GetPeopleNames(InternalPeopleQuery query) + { + return ItemRepository.GetPeopleNames(query); } public List<PersonInfo> GetAllPeople() { - return RootFolder.GetRecursiveChildren() - .SelectMany(GetPeople) - .Where(i => !string.IsNullOrWhiteSpace(i.Name)) + return GetPeople(new InternalPeopleQuery()) .DistinctBy(i => i.Name, StringComparer.OrdinalIgnoreCase) .ToList(); } - public async Task UpdatePeople(BaseItem item, List<PersonInfo> people) + public Task UpdatePeople(BaseItem item, List<PersonInfo> people) { - await ItemRepository.UpdatePeople(item.Id, people).ConfigureAwait(false); - - if (item.People != null) - { - item.People = null; - await item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false); - } + return ItemRepository.UpdatePeople(item.Id, people); } } } diff --git a/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs b/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs index b6a93408a..dac658095 100644 --- a/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs +++ b/MediaBrowser.Server.Implementations/Library/ResolverHelper.cs @@ -34,7 +34,7 @@ namespace MediaBrowser.Server.Implementations.Library // If the resolver didn't specify this if (parent != null) { - item.Parent = parent; + item.SetParent(parent); } item.Id = libraryManager.GetNewItemId(item.Path, item.GetType()); @@ -68,7 +68,7 @@ namespace MediaBrowser.Server.Implementations.Library // If the resolver didn't specify this if (args.Parent != null) { - item.Parent = args.Parent; + item.SetParent(args.Parent); } item.Id = libraryManager.GetNewItemId(item.Path, item.GetType()); diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs index 3333719b7..343b6d3a4 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs @@ -1,13 +1,10 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; -using MediaBrowser.Naming.Common; using MediaBrowser.Naming.Video; +using MediaBrowser.Server.Implementations.Logging; using System; using System.IO; -using System.Linq; -using MediaBrowser.Server.Implementations.Logging; namespace MediaBrowser.Server.Implementations.Library.Resolvers { diff --git a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs index 0cfa524eb..05dde5b3e 100644 --- a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs +++ b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs @@ -256,10 +256,15 @@ namespace MediaBrowser.Server.Implementations.Library if (query.IncludePeople) { + var itemIds = items.Select(i => i.Id).ToList(); + // Find persons - var persons = items.SelectMany(i => _libraryManager.GetPeople(i)) + var persons = _libraryManager.GetPeople(new InternalPeopleQuery + { + NameContains = searchTerm + }) + .Where(i => itemIds.Contains(i.ItemId)) .Select(i => i.Name) - .Where(i => !string.IsNullOrWhiteSpace(i)) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(); |
