aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs')
-rw-r--r--MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs47
1 files changed, 18 insertions, 29 deletions
diff --git a/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs b/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs
index 46c0f48e2..72040c8ae 100644
--- a/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs
+++ b/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs
@@ -410,7 +410,11 @@ namespace MediaBrowser.Dlna.ContentDirectory
{
if (stubType.Value == StubType.People)
{
- var items = _libraryManager.GetPeopleItems(item).ToArray();
+ var items = _libraryManager.GetPeopleItems(new InternalPeopleQuery
+ {
+ ItemId = item.Id
+
+ }).ToArray();
var result = new QueryResult<ServerItem>
{
@@ -432,7 +436,7 @@ namespace MediaBrowser.Dlna.ContentDirectory
var person = item as Person;
if (person != null)
{
- return await GetItemsFromPerson(person, user, startIndex, limit).ConfigureAwait(false);
+ return GetItemsFromPerson(person, user, startIndex, limit);
}
return ApplyPaging(new QueryResult<ServerItem>(), startIndex, limit);
@@ -475,38 +479,19 @@ namespace MediaBrowser.Dlna.ContentDirectory
};
}
- private async Task<QueryResult<ServerItem>> GetItemsFromPerson(Person person, User user, int? startIndex, int? limit)
+ private QueryResult<ServerItem> GetItemsFromPerson(Person person, User user, int? startIndex, int? limit)
{
- var items = user.RootFolder.GetRecursiveChildren(user, i => i is Movie || i is Series && PeopleHelper.ContainsPerson(_libraryManager.GetPeople(i), person.Name))
- .ToList();
-
- var trailerResult = await _channelManager.GetAllMediaInternal(new AllChannelMediaQuery
+ var itemsWithPerson = _libraryManager.GetItems(new InternalItemsQuery
{
- ContentTypes = new[] { ChannelMediaContentType.MovieExtra },
- ExtraTypes = new[] { ExtraType.Trailer },
- UserId = user.Id.ToString("N")
+ Person = person.Name
- }, CancellationToken.None).ConfigureAwait(false);
+ }).Items;
- var currentIds = items.Select(i => i.GetProviderId(MetadataProviders.Imdb))
+ var items = itemsWithPerson
+ .Where(i => i is Movie || i is Series || i is IChannelItem)
+ .Where(i => i.IsVisibleStandalone(user))
.ToList();
- var trailersToAdd = trailerResult.Items
- .Where(i => PeopleHelper.ContainsPerson(_libraryManager.GetPeople(i), person.Name))
- .Where(i =>
- {
- // Try to filter out dupes using imdb id
- var imdb = i.GetProviderId(MetadataProviders.Imdb);
- if (!string.IsNullOrWhiteSpace(imdb) &&
- currentIds.Contains(imdb, StringComparer.OrdinalIgnoreCase))
- {
- return false;
- }
- return true;
- });
-
- items.AddRange(trailersToAdd);
-
items = _libraryManager.Sort(items, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending)
.Skip(startIndex ?? 0)
.Take(limit ?? int.MaxValue)
@@ -558,7 +543,11 @@ namespace MediaBrowser.Dlna.ContentDirectory
private bool EnablePeopleDisplay(BaseItem item)
{
- if (_libraryManager.GetPeople(item).Count > 0)
+ if (_libraryManager.GetPeopleNames(new InternalPeopleQuery
+ {
+ ItemId = item.Id
+
+ }).Count > 0)
{
return item is Movie;
}