diff options
Diffstat (limited to 'MediaBrowser.Api/UserLibrary')
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/ArtistsService.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs | 7 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs | 9 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/GameGenresService.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/GenresService.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/ItemsService.cs | 29 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/MusicGenresService.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/PersonsService.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/PlaystateService.cs | 20 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/StudiosService.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/UserLibraryService.cs | 29 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/UserViewsService.cs | 2 |
12 files changed, 71 insertions, 55 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ArtistsService.cs b/MediaBrowser.Api/UserLibrary/ArtistsService.cs index 5bbd96c7c..7c1519e9f 100644 --- a/MediaBrowser.Api/UserLibrary/ArtistsService.cs +++ b/MediaBrowser.Api/UserLibrary/ArtistsService.cs @@ -68,10 +68,10 @@ namespace MediaBrowser.Api.UserLibrary /// <returns>Task{BaseItemDto}.</returns> private BaseItemDto GetItem(GetArtist request) { - var item = GetArtist(request.Name, LibraryManager); - var dtoOptions = GetDtoOptions(AuthorizationContext, request); + var item = GetArtist(request.Name, LibraryManager, dtoOptions); + if (!string.IsNullOrWhiteSpace(request.UserId)) { var user = UserManager.GetUserById(request.UserId); diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs index c1cc1555d..24d0a7d52 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs @@ -119,7 +119,6 @@ namespace MediaBrowser.Api.UserLibrary NameLessThan = request.NameLessThan, NameStartsWith = request.NameStartsWith, NameStartsWithOrGreater = request.NameStartsWithOrGreater, - AlbumArtistStartsWithOrGreater = request.AlbumArtistStartsWithOrGreater, Tags = request.GetTags(), OfficialRatings = request.GetOfficialRatings(), Genres = request.GetGenres(), @@ -129,7 +128,8 @@ namespace MediaBrowser.Api.UserLibrary PersonIds = request.GetPersonIds(), PersonTypes = request.GetPersonTypes(), Years = request.GetYears(), - MinCommunityRating = request.MinCommunityRating + MinCommunityRating = request.MinCommunityRating, + DtoOptions = dtoOptions }; if (!string.IsNullOrWhiteSpace(request.ParentId)) @@ -266,7 +266,8 @@ namespace MediaBrowser.Api.UserLibrary { ExcludeItemTypes = excludeItemTypes, IncludeItemTypes = includeItemTypes, - MediaTypes = mediaTypes + MediaTypes = mediaTypes, + DtoOptions = dtoOptions }; Func<BaseItem, bool> filter = i => FilterItem(request, i, excludeItemTypes, includeItemTypes, mediaTypes); diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs b/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs index 55c23841c..2de86f4da 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs @@ -85,6 +85,12 @@ namespace MediaBrowser.Api.UserLibrary [ApiMember(Name = "MinPremiereDate", Description = "Optional. The minimum premiere date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")] public string MinPremiereDate { get; set; } + [ApiMember(Name = "MinDateLastSaved", Description = "Optional. The minimum premiere date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")] + public string MinDateLastSaved { get; set; } + + [ApiMember(Name = "MinDateLastSavedForUser", Description = "Optional. The minimum premiere date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")] + public string MinDateLastSavedForUser { get; set; } + [ApiMember(Name = "MaxPremiereDate", Description = "Optional. The maximum premiere date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")] public string MaxPremiereDate { get; set; } @@ -348,9 +354,6 @@ namespace MediaBrowser.Api.UserLibrary [ApiMember(Name = "NameLessThan", Description = "Optional filter by items whose name is equally or lesser than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] public string NameLessThan { get; set; } - [ApiMember(Name = "AlbumArtistStartsWithOrGreater", Description = "Optional filter by items whose album artist is sorted equally or greater than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public string AlbumArtistStartsWithOrGreater { get; set; } - public string[] GetGenres() { return (Genres ?? string.Empty).Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries); diff --git a/MediaBrowser.Api/UserLibrary/GameGenresService.cs b/MediaBrowser.Api/UserLibrary/GameGenresService.cs index 2eef1ab2f..56730c1b2 100644 --- a/MediaBrowser.Api/UserLibrary/GameGenresService.cs +++ b/MediaBrowser.Api/UserLibrary/GameGenresService.cs @@ -56,10 +56,10 @@ namespace MediaBrowser.Api.UserLibrary /// <returns>Task{BaseItemDto}.</returns> private BaseItemDto GetItem(GetGameGenre request) { - var item = GetGameGenre(request.Name, LibraryManager); - var dtoOptions = GetDtoOptions(AuthorizationContext, request); - + + var item = GetGameGenre(request.Name, LibraryManager, dtoOptions); + if (!string.IsNullOrWhiteSpace(request.UserId)) { var user = UserManager.GetUserById(request.UserId); diff --git a/MediaBrowser.Api/UserLibrary/GenresService.cs b/MediaBrowser.Api/UserLibrary/GenresService.cs index 664efac14..fc387e5e3 100644 --- a/MediaBrowser.Api/UserLibrary/GenresService.cs +++ b/MediaBrowser.Api/UserLibrary/GenresService.cs @@ -66,10 +66,10 @@ namespace MediaBrowser.Api.UserLibrary /// <returns>Task{BaseItemDto}.</returns> private BaseItemDto GetItem(GetGenre request) { - var item = GetGenre(request.Name, LibraryManager); - - var dtoOptions = GetDtoOptions(AuthorizationContext ,request); + var dtoOptions = GetDtoOptions(AuthorizationContext, request); + var item = GetGenre(request.Name, LibraryManager, dtoOptions); + if (!string.IsNullOrWhiteSpace(request.UserId)) { var user = UserManager.GetUserById(request.UserId); diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index f8580d328..01e1ce769 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -105,7 +105,7 @@ namespace MediaBrowser.Api.UserLibrary var dtoOptions = GetDtoOptions(_authContext, request); - var result = await GetQueryResult(request, dtoOptions, user).ConfigureAwait(false); + var result = GetQueryResult(request, dtoOptions, user); if (result == null) { @@ -134,7 +134,7 @@ namespace MediaBrowser.Api.UserLibrary /// <summary> /// Gets the items to serialize. /// </summary> - private async Task<QueryResult<BaseItem>> GetQueryResult(GetItems request, DtoOptions dtoOptions, User user) + private QueryResult<BaseItem> GetQueryResult(GetItems request, DtoOptions dtoOptions, User user) { var item = string.IsNullOrEmpty(request.ParentId) ? null : @@ -169,14 +169,14 @@ namespace MediaBrowser.Api.UserLibrary if (request.Recursive || !string.IsNullOrEmpty(request.Ids) || user == null) { - return await folder.GetItems(GetItemsQuery(request, dtoOptions, user)).ConfigureAwait(false); + return folder.GetItems(GetItemsQuery(request, dtoOptions, user)); } var userRoot = item as UserRootFolder; if (userRoot == null) { - return await folder.GetItems(GetItemsQuery(request, dtoOptions, user)).ConfigureAwait(false); + return folder.GetItems(GetItemsQuery(request, dtoOptions, user)); } IEnumerable<BaseItem> items = folder.GetChildren(user, true); @@ -249,7 +249,6 @@ namespace MediaBrowser.Api.UserLibrary ParentId = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId), ParentIndexNumber = request.ParentIndexNumber, AiredDuringSeason = request.AiredDuringSeason, - AlbumArtistStartsWithOrGreater = request.AlbumArtistStartsWithOrGreater, EnableTotalRecordCount = request.EnableTotalRecordCount, ExcludeItemIds = request.GetExcludeItemIds(), DtoOptions = dtoOptions @@ -294,6 +293,16 @@ namespace MediaBrowser.Api.UserLibrary } } + if (!string.IsNullOrEmpty(request.MinDateLastSaved)) + { + query.MinDateLastSaved = DateTime.Parse(request.MinDateLastSaved, null, DateTimeStyles.RoundtripKind).ToUniversalTime(); + } + + if (!string.IsNullOrEmpty(request.MinDateLastSavedForUser)) + { + query.MinDateLastSavedForUser = DateTime.Parse(request.MinDateLastSavedForUser, null, DateTimeStyles.RoundtripKind).ToUniversalTime(); + } + if (!string.IsNullOrEmpty(request.MinPremiereDate)) { query.MinPremiereDate = DateTime.Parse(request.MinPremiereDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime(); @@ -330,7 +339,7 @@ namespace MediaBrowser.Api.UserLibrary { var requestedLocationTypes = request.LocationTypes.Split(',') - .Select(d => (LocationType) Enum.Parse(typeof (LocationType), d, true)) + .Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)) .ToList(); if (requestedLocationTypes.Count > 0 && requestedLocationTypes.Count < 4) @@ -358,7 +367,7 @@ namespace MediaBrowser.Api.UserLibrary { try { - return _libraryManager.GetArtist(i); + return _libraryManager.GetArtist(i, new DtoOptions(false)); } catch { @@ -381,15 +390,15 @@ namespace MediaBrowser.Api.UserLibrary // Albums if (!string.IsNullOrEmpty(request.Albums)) { - query.AlbumIds = request.Albums.Split('|').Select(i => + query.AlbumIds = request.Albums.Split('|').SelectMany(i => { - return _libraryManager.GetItemList(new InternalItemsQuery + return _libraryManager.GetItemIds(new InternalItemsQuery { IncludeItemTypes = new[] { typeof(MusicAlbum).Name }, Name = i, Limit = 1 - }).Select(album => album.Id.ToString("N")).FirstOrDefault(); + }).Select(albumId => albumId.ToString("N")); }).ToArray(); } diff --git a/MediaBrowser.Api/UserLibrary/MusicGenresService.cs b/MediaBrowser.Api/UserLibrary/MusicGenresService.cs index 305c136df..d1d4aa634 100644 --- a/MediaBrowser.Api/UserLibrary/MusicGenresService.cs +++ b/MediaBrowser.Api/UserLibrary/MusicGenresService.cs @@ -57,10 +57,10 @@ namespace MediaBrowser.Api.UserLibrary /// <returns>Task{BaseItemDto}.</returns> private BaseItemDto GetItem(GetMusicGenre request) { - var item = GetMusicGenre(request.Name, LibraryManager); - var dtoOptions = GetDtoOptions(AuthorizationContext, request); + var item = GetMusicGenre(request.Name, LibraryManager, dtoOptions); + if (!string.IsNullOrWhiteSpace(request.UserId)) { var user = UserManager.GetUserById(request.UserId); diff --git a/MediaBrowser.Api/UserLibrary/PersonsService.cs b/MediaBrowser.Api/UserLibrary/PersonsService.cs index dbce22578..21f416025 100644 --- a/MediaBrowser.Api/UserLibrary/PersonsService.cs +++ b/MediaBrowser.Api/UserLibrary/PersonsService.cs @@ -64,10 +64,10 @@ namespace MediaBrowser.Api.UserLibrary /// <returns>Task{BaseItemDto}.</returns> private BaseItemDto GetItem(GetPerson request) { - var item = GetPerson(request.Name, LibraryManager); - var dtoOptions = GetDtoOptions(AuthorizationContext, request); + var item = GetPerson(request.Name, LibraryManager, dtoOptions); + if (!string.IsNullOrWhiteSpace(request.UserId)) { var user = UserManager.GetUserById(request.UserId); diff --git a/MediaBrowser.Api/UserLibrary/PlaystateService.cs b/MediaBrowser.Api/UserLibrary/PlaystateService.cs index c4cc90955..98b4a5d5d 100644 --- a/MediaBrowser.Api/UserLibrary/PlaystateService.cs +++ b/MediaBrowser.Api/UserLibrary/PlaystateService.cs @@ -279,6 +279,20 @@ namespace MediaBrowser.Api.UserLibrary return dto; } + private PlayMethod ValidatePlayMethod(PlayMethod method, string playSessionId) + { + if (method == PlayMethod.Transcode) + { + var job = string.IsNullOrWhiteSpace(playSessionId) ? null : ApiEntryPoint.Instance.GetTranscodingJob(playSessionId); + if (job == null) + { + return PlayMethod.DirectPlay; + } + } + + return method; + } + /// <summary> /// Posts the specified request. /// </summary> @@ -300,6 +314,8 @@ namespace MediaBrowser.Api.UserLibrary public void Post(ReportPlaybackStart request) { + request.PlayMethod = ValidatePlayMethod(request.PlayMethod, request.PlaySessionId); + request.SessionId = GetSession(_sessionContext).Result.Id; var task = _sessionManager.OnPlaybackStart(request); @@ -332,6 +348,8 @@ namespace MediaBrowser.Api.UserLibrary public void Post(ReportPlaybackProgress request) { + request.PlayMethod = ValidatePlayMethod(request.PlayMethod, request.PlaySessionId); + request.SessionId = GetSession(_sessionContext).Result.Id; var task = _sessionManager.OnPlaybackProgress(request); @@ -427,7 +445,7 @@ namespace MediaBrowser.Api.UserLibrary await item.MarkUnplayed(user).ConfigureAwait(false); } - return await _userDataRepository.GetUserDataDto(item, user).ConfigureAwait(false); + return _userDataRepository.GetUserDataDto(item, user); } } }
\ No newline at end of file diff --git a/MediaBrowser.Api/UserLibrary/StudiosService.cs b/MediaBrowser.Api/UserLibrary/StudiosService.cs index f4debcf48..7ac1264e8 100644 --- a/MediaBrowser.Api/UserLibrary/StudiosService.cs +++ b/MediaBrowser.Api/UserLibrary/StudiosService.cs @@ -66,10 +66,10 @@ namespace MediaBrowser.Api.UserLibrary /// <returns>Task{BaseItemDto}.</returns> private BaseItemDto GetItem(GetStudio request) { - var item = GetStudio(request.Name, LibraryManager); - var dtoOptions = GetDtoOptions(AuthorizationContext, request); - + + var item = GetStudio(request.Name, LibraryManager, dtoOptions); + if (!string.IsNullOrWhiteSpace(request.UserId)) { var user = UserManager.GetUserById(request.UserId); diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs index b1f196f15..3b638208b 100644 --- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs +++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs @@ -11,7 +11,6 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Common.IO; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.IO; using MediaBrowser.Model.IO; @@ -308,6 +307,8 @@ namespace MediaBrowser.Api.UserLibrary } } + var dtoOptions = GetDtoOptions(_authContext, request); + var list = _userViewManager.GetLatestItems(new LatestItemsQuery { GroupItems = request.GroupItems, @@ -315,10 +316,8 @@ namespace MediaBrowser.Api.UserLibrary IsPlayed = request.IsPlayed, Limit = request.Limit, ParentId = request.ParentId, - UserId = request.UserId - }); - - var dtoOptions = GetDtoOptions(_authContext, request); + UserId = request.UserId, + }, dtoOptions); var dtos = list.Select(i => { @@ -360,22 +359,8 @@ namespace MediaBrowser.Api.UserLibrary var currentUser = user; var dtos = series - .GetEpisodes(user) + .GetEpisodes(user, dtoOptions) .Where(i => i.ParentIndexNumber.HasValue && i.ParentIndexNumber.Value == 0) - .OrderBy(i => - { - if (i.PremiereDate.HasValue) - { - return i.PremiereDate.Value; - } - - if (i.ProductionYear.HasValue) - { - return new DateTime(i.ProductionYear.Value, 1, 1, 0, 0, 0, DateTimeKind.Utc); - } - return DateTime.MinValue; - }) - .ThenBy(i => i.SortName) .Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, currentUser)); return dtos.ToList(); @@ -556,7 +541,7 @@ namespace MediaBrowser.Api.UserLibrary await _userDataRepository.SaveUserData(user.Id, item, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None).ConfigureAwait(false); - return await _userDataRepository.GetUserDataDto(item, user).ConfigureAwait(false); + return _userDataRepository.GetUserDataDto(item, user); } /// <summary> @@ -601,7 +586,7 @@ namespace MediaBrowser.Api.UserLibrary await _userDataRepository.SaveUserData(user.Id, item, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None).ConfigureAwait(false); - return await _userDataRepository.GetUserDataDto(item, user).ConfigureAwait(false); + return _userDataRepository.GetUserDataDto(item, user); } } } diff --git a/MediaBrowser.Api/UserLibrary/UserViewsService.cs b/MediaBrowser.Api/UserLibrary/UserViewsService.cs index 89953c2bd..3ed5166a4 100644 --- a/MediaBrowser.Api/UserLibrary/UserViewsService.cs +++ b/MediaBrowser.Api/UserLibrary/UserViewsService.cs @@ -103,7 +103,7 @@ namespace MediaBrowser.Api.UserLibrary return ToOptimizedResult(result); } - public async Task<object> Get(GetGroupingOptions request) + public object Get(GetGroupingOptions request) { var user = _userManager.GetUserById(request.UserId); |
