diff options
| author | stefan <stefan@hegedues.at> | 2018-09-12 19:26:21 +0200 |
|---|---|---|
| committer | stefan <stefan@hegedues.at> | 2018-09-12 19:26:21 +0200 |
| commit | 48facb797ed912e4ea6b04b17d1ff190ac2daac4 (patch) | |
| tree | 8dae77a31670a888d733484cb17dd4077d5444e8 /MediaBrowser.Api/UserLibrary/ItemsService.cs | |
| parent | c32d8656382a0eacb301692e0084377fc433ae9b (diff) | |
Update to 3.5.2 and .net core 2.1
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/ItemsService.cs')
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/ItemsService.cs | 93 |
1 files changed, 53 insertions, 40 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index 1e531ba66..aa17e85f3 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -88,25 +88,25 @@ namespace MediaBrowser.Api.UserLibrary { var user = _userManager.GetUserById(request.UserId); - var parentIdGuid = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId); + var parentIdGuid = string.IsNullOrWhiteSpace(request.ParentId) ? Guid.Empty : new Guid(request.ParentId); var options = GetDtoOptions(_authContext, request); - var ancestorIds = new List<string>(); + var ancestorIds = new List<Guid>(); var excludeFolderIds = user.Configuration.LatestItemsExcludes; - if (!parentIdGuid.HasValue && excludeFolderIds.Length > 0) + if (parentIdGuid.Equals(Guid.Empty) && excludeFolderIds.Length > 0) { - ancestorIds = user.RootFolder.GetChildren(user, true) + ancestorIds = _libraryManager.GetUserRootFolder().GetChildren(user, true) .Where(i => i is Folder) .Where(i => !excludeFolderIds.Contains(i.Id.ToString("N"))) - .Select(i => i.Id.ToString("N")) + .Select(i => i.Id) .ToList(); } var itemsResult = _libraryManager.GetItemsResult(new InternalItemsQuery(user) { - OrderBy = new[] { ItemSortBy.DatePlayed }.Select(i => new Tuple<string, SortOrder>(i, SortOrder.Descending)).ToArray(), + OrderBy = new[] { ItemSortBy.DatePlayed }.Select(i => new ValueTuple<string, SortOrder>(i, SortOrder.Descending)).ToArray(), IsResumable = true, StartIndex = request.StartIndex, Limit = request.Limit, @@ -119,7 +119,8 @@ namespace MediaBrowser.Api.UserLibrary EnableTotalRecordCount = request.EnableTotalRecordCount, AncestorIds = ancestorIds.ToArray(), IncludeItemTypes = request.GetIncludeItemTypes(), - ExcludeItemTypes = request.GetExcludeItemTypes() + ExcludeItemTypes = request.GetExcludeItemTypes(), + SearchTerm = request.SearchTerm }); var returnItems = _dtoService.GetBaseItemDtos(itemsResult.Items, options, user); @@ -130,7 +131,7 @@ namespace MediaBrowser.Api.UserLibrary Items = returnItems }; - return ToOptimizedSerializedResultUsingCache(result); + return ToOptimizedResult(result); } /// <summary> @@ -147,7 +148,7 @@ namespace MediaBrowser.Api.UserLibrary var result = GetItems(request); - return ToOptimizedSerializedResultUsingCache(result); + return ToOptimizedResult(result); } /// <summary> @@ -156,7 +157,7 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="request">The request.</param> private QueryResult<BaseItemDto> GetItems(GetItems request) { - var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null; + var user = !request.UserId.Equals(Guid.Empty) ? _userManager.GetUserById(request.UserId) : null; var dtoOptions = GetDtoOptions(_authContext, request); @@ -191,26 +192,23 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> private QueryResult<BaseItem> GetQueryResult(GetItems request, DtoOptions dtoOptions, User user) { - var item = string.IsNullOrEmpty(request.ParentId) ? - null : - _libraryManager.GetItemById(request.ParentId); - if (string.Equals(request.IncludeItemTypes, "Playlist", StringComparison.OrdinalIgnoreCase)) { - if (item == null || user != null) - { - item = _libraryManager.RootFolder.Children.OfType<Folder>().FirstOrDefault(i => string.Equals(i.GetType().Name, "PlaylistsFolder", StringComparison.OrdinalIgnoreCase)); - } + request.ParentId = null; } else if (string.Equals(request.IncludeItemTypes, "BoxSet", StringComparison.OrdinalIgnoreCase)) { - item = user == null ? _libraryManager.RootFolder : user.RootFolder; + request.ParentId = null; } + var item = string.IsNullOrEmpty(request.ParentId) ? + null : + _libraryManager.GetItemById(request.ParentId); + if (item == null) { item = string.IsNullOrEmpty(request.ParentId) ? - user == null ? _libraryManager.RootFolder : user.RootFolder : + user == null ? _libraryManager.RootFolder : _libraryManager.GetUserRootFolder() : _libraryManager.GetItemById(request.ParentId); } @@ -222,6 +220,15 @@ namespace MediaBrowser.Api.UserLibrary folder = user == null ? _libraryManager.RootFolder : _libraryManager.GetUserRootFolder(); } + var hasCollectionType = folder as IHasCollectionType; + var isPlaylistQuery = (hasCollectionType != null && string.Equals(hasCollectionType.CollectionType, CollectionType.Playlists, StringComparison.OrdinalIgnoreCase)); + + if (isPlaylistQuery) + { + request.Recursive = true; + request.IncludeItemTypes = "Playlist"; + } + if (request.Recursive || !string.IsNullOrEmpty(request.Ids) || user == null) { return folder.GetItems(GetItemsQuery(request, dtoOptions, user)); @@ -266,8 +273,10 @@ namespace MediaBrowser.Api.UserLibrary HasImdbId = request.HasImdbId, IsPlaceHolder = request.IsPlaceHolder, IsLocked = request.IsLocked, - IsInBoxSet = request.IsInBoxSet, - IsHD = request.IsHD, + MinWidth = request.MinWidth, + MinHeight = request.MinHeight, + MaxWidth = request.MaxWidth, + MaxHeight = request.MaxHeight, Is3D = request.Is3D, HasTvdbId = request.HasTvdbId, HasTmdbId = request.HasTmdbId, @@ -279,33 +288,37 @@ namespace MediaBrowser.Api.UserLibrary HasThemeSong = request.HasThemeSong, HasThemeVideo = request.HasThemeVideo, HasTrailer = request.HasTrailer, + IsHD = request.IsHD, + Is4K = request.Is4K, Tags = request.GetTags(), OfficialRatings = request.GetOfficialRatings(), Genres = request.GetGenres(), - ArtistIds = request.GetArtistIds(), - GenreIds = request.GetGenreIds(), - StudioIds = request.GetStudioIds(), + ArtistIds = GetGuids(request.ArtistIds), + AlbumArtistIds = GetGuids(request.AlbumArtistIds), + ContributingArtistIds = GetGuids(request.ContributingArtistIds), + GenreIds = GetGuids(request.GenreIds), + StudioIds = GetGuids(request.StudioIds), Person = request.Person, - PersonIds = request.GetPersonIds(), + PersonIds = GetGuids(request.PersonIds), PersonTypes = request.GetPersonTypes(), Years = request.GetYears(), ImageTypes = request.GetImageTypes(), VideoTypes = request.GetVideoTypes(), AdjacentTo = request.AdjacentTo, - ItemIds = request.GetItemIds(), + ItemIds = GetGuids(request.Ids), MinPlayers = request.MinPlayers, MaxPlayers = request.MaxPlayers, MinCommunityRating = request.MinCommunityRating, MinCriticRating = request.MinCriticRating, - ParentId = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId), + ParentId = string.IsNullOrWhiteSpace(request.ParentId) ? Guid.Empty : new Guid(request.ParentId), ParentIndexNumber = request.ParentIndexNumber, - AiredDuringSeason = request.AiredDuringSeason, EnableTotalRecordCount = request.EnableTotalRecordCount, - ExcludeItemIds = request.GetExcludeItemIds(), - DtoOptions = dtoOptions + ExcludeItemIds = GetGuids(request.ExcludeItemIds), + DtoOptions = dtoOptions, + SearchTerm = request.SearchTerm }; - if (!string.IsNullOrWhiteSpace(request.Ids)) + if (!string.IsNullOrWhiteSpace(request.Ids) || !string.IsNullOrWhiteSpace(request.SearchTerm)) { query.CollapseBoxSetItems = false; } @@ -416,18 +429,18 @@ namespace MediaBrowser.Api.UserLibrary { return null; } - }).Where(i => i != null).Select(i => i.Id.ToString("N")).ToArray(); + }).Where(i => i != null).Select(i => i.Id).ToArray(); } // ExcludeArtistIds if (!string.IsNullOrWhiteSpace(request.ExcludeArtistIds)) { - query.ExcludeArtistIds = request.ExcludeArtistIds.Split('|'); + query.ExcludeArtistIds = GetGuids(request.ExcludeArtistIds); } if (!string.IsNullOrWhiteSpace(request.AlbumIds)) { - query.AlbumIds = request.AlbumIds.Split('|'); + query.AlbumIds = GetGuids(request.AlbumIds); } // Albums @@ -441,7 +454,7 @@ namespace MediaBrowser.Api.UserLibrary Name = i, Limit = 1 - }).Select(albumId => albumId.ToString("N")); + }).Select(albumId => albumId); }).ToArray(); } @@ -459,7 +472,7 @@ namespace MediaBrowser.Api.UserLibrary { return null; } - }).Where(i => i != null).Select(i => i.Id.ToString("N")).ToArray(); + }).Where(i => i != null).Select(i => i.Id).ToArray(); } // Apply default sorting if none requested @@ -468,10 +481,10 @@ namespace MediaBrowser.Api.UserLibrary // Albums by artist if (query.ArtistIds.Length > 0 && query.IncludeItemTypes.Length == 1 && string.Equals(query.IncludeItemTypes[0], "MusicAlbum", StringComparison.OrdinalIgnoreCase)) { - query.OrderBy = new Tuple<string, SortOrder>[] + query.OrderBy = new [] { - new Tuple<string, SortOrder>(ItemSortBy.ProductionYear, SortOrder.Descending), - new Tuple<string, SortOrder>(ItemSortBy.SortName, SortOrder.Ascending) + new ValueTuple<string, SortOrder>(ItemSortBy.ProductionYear, SortOrder.Descending), + new ValueTuple<string, SortOrder>(ItemSortBy.SortName, SortOrder.Ascending) }; } } |
