From 70fb64cc05c4fe51e661608c654a4cd1949cba35 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 26 Mar 2015 00:44:24 -0400 Subject: subtitle parsing fixes --- .../UserLibrary/BaseItemsByNameService.cs | 66 ++++++++++++++-------- 1 file changed, 44 insertions(+), 22 deletions(-) (limited to 'MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs') diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs index 880d57b9a..609c1048f 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs @@ -55,21 +55,29 @@ namespace MediaBrowser.Api.UserLibrary /// Task{ItemsResult}. protected ItemsResult GetResult(GetItemsByName request) { + var dtoOptions = GetDtoOptions(request); + User user = null; BaseItem parentItem; - List libraryItems; + List libraryItems = null; if (request.UserId.HasValue) { user = UserManager.GetUserById(request.UserId.Value); parentItem = string.IsNullOrEmpty(request.ParentId) ? user.RootFolder : LibraryManager.GetItemById(request.ParentId); - libraryItems = user.RootFolder.GetRecursiveChildren(user).ToList(); + if (RequiresLibraryItems(request, dtoOptions)) + { + libraryItems = user.RootFolder.GetRecursiveChildren(user).ToList(); + } } else { parentItem = string.IsNullOrEmpty(request.ParentId) ? LibraryManager.RootFolder : LibraryManager.GetItemById(request.ParentId); - libraryItems = LibraryManager.RootFolder.GetRecursiveChildren().ToList(); + if (RequiresLibraryItems(request, dtoOptions)) + { + libraryItems = LibraryManager.RootFolder.GetRecursiveChildren().ToList(); + } } IEnumerable items; @@ -133,17 +141,46 @@ namespace MediaBrowser.Api.UserLibrary } - var tuples = ibnItems.Select(i => new Tuple>(i, i.GetTaggedItems(libraryItems).ToList())); - - var dtoOptions = GetDtoOptions(request); + IEnumerable>> tuples; + if (dtoOptions.Fields.Contains(ItemFields.ItemCounts) || true) + { + tuples = ibnItems.Select(i => new Tuple>(i, i.GetTaggedItems(libraryItems).ToList())); + } + else + { + tuples = ibnItems.Select(i => new Tuple>(i, new List())); + } - var dtos = tuples.Select(i => GetDto(i.Item1, user, dtoOptions, i.Item2)); + var dtos = tuples.Select(i => DtoService.GetItemByNameDto(i.Item1, dtoOptions, i.Item2, user)); result.Items = dtos.Where(i => i != null).ToArray(); return result; } + private bool RequiresLibraryItems(GetItemsByName request, DtoOptions options) + { + var filters = request.GetFilters().ToList(); + + if (filters.Contains(ItemFilter.IsPlayed)) + { + return true; + } + + if (filters.Contains(ItemFilter.IsUnplayed)) + { + return true; + } + + if (request.IsPlayed.HasValue) + { + return true; + } + + return true; + return options.Fields.Contains(ItemFields.ItemCounts); + } + private IEnumerable FilterByLibraryItems(GetItemsByName request, IEnumerable items, User user, IEnumerable libraryItems) { var filters = request.GetFilters().ToList(); @@ -340,21 +377,6 @@ namespace MediaBrowser.Api.UserLibrary /// The items. /// IEnumerable{Task{`0}}. protected abstract IEnumerable GetAllItems(GetItemsByName request, IEnumerable items); - - /// - /// Gets the dto. - /// - /// The item. - /// The user. - /// The options. - /// The library items. - /// Task{DtoBaseItem}. - private BaseItemDto GetDto(TItemType item, User user, DtoOptions options, List libraryItems) - { - var dto = DtoService.GetItemByNameDto(item, options, libraryItems, user); - - return dto; - } } /// -- cgit v1.2.3