diff options
Diffstat (limited to 'MediaBrowser.Api/UserLibrary')
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/ItemsService.cs | 141 |
1 files changed, 26 insertions, 115 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index c54f25973..566b1dfd5 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -233,7 +233,8 @@ namespace MediaBrowser.Api.UserLibrary MinCriticRating = request.MinCriticRating, ParentId = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId), ParentIndexNumber = request.ParentIndexNumber, - AiredDuringSeason = request.AiredDuringSeason + AiredDuringSeason = request.AiredDuringSeason, + AlbumArtistStartsWithOrGreater = request.AlbumArtistStartsWithOrGreater }; if (!string.IsNullOrWhiteSpace(request.Ids)) @@ -309,138 +310,48 @@ namespace MediaBrowser.Api.UserLibrary { query.LocationTypes = request.LocationTypes.Split(',').Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true)).ToArray(); } - - return query; - } - - private bool ApplyAdditionalFilters(GetItems request, BaseItem i, User user, ILibraryManager libraryManager) - { - // Artists - if (!string.IsNullOrEmpty(request.ArtistIds)) + + // Min official rating + if (!string.IsNullOrEmpty(request.MinOfficialRating)) { - var artistIds = request.ArtistIds.Split(new[] { '|', ',' }); - - var audio = i as IHasArtist; + query.MinParentalRating = _localization.GetRatingLevel(request.MinOfficialRating); + } - if (!(audio != null && artistIds.Any(id => - { - var artistItem = libraryManager.GetItemById(id); - return artistItem != null && audio.HasAnyArtist(artistItem.Name); - }))) - { - return false; - } + // Max official rating + if (!string.IsNullOrEmpty(request.MaxOfficialRating)) + { + query.MaxParentalRating = _localization.GetRatingLevel(request.MinOfficialRating); } // Artists if (!string.IsNullOrEmpty(request.Artists)) { - var artists = request.Artists.Split('|'); - - var audio = i as IHasArtist; - - if (!(audio != null && artists.Any(audio.HasAnyArtist))) - { - return false; - } + query.ArtistNames = request.Artists.Split('|'); } // Albums if (!string.IsNullOrEmpty(request.Albums)) { - var albums = request.Albums.Split('|'); - - var audio = i as Audio; - - if (audio != null) - { - if (!albums.Any(a => string.Equals(a, audio.Album, StringComparison.OrdinalIgnoreCase))) - { - return false; - } - } - - var album = i as MusicAlbum; - - if (album != null) - { - if (!albums.Any(a => string.Equals(a, album.Name, StringComparison.OrdinalIgnoreCase))) - { - return false; - } - } - - var musicVideo = i as MusicVideo; - - if (musicVideo != null) - { - if (!albums.Any(a => string.Equals(a, musicVideo.Album, StringComparison.OrdinalIgnoreCase))) - { - return false; - } - } - - return false; + query.AlbumNames = request.Albums.Split('|'); } - // Min official rating - if (!string.IsNullOrEmpty(request.MinOfficialRating)) - { - var level = _localization.GetRatingLevel(request.MinOfficialRating); - - if (level.HasValue) - { - var rating = i.CustomRating; - - if (string.IsNullOrEmpty(rating)) - { - rating = i.OfficialRating; - } - - if (!string.IsNullOrEmpty(rating)) - { - var itemLevel = _localization.GetRatingLevel(rating); - - if (!(!itemLevel.HasValue || itemLevel.Value >= level.Value)) - { - return false; - } - } - } - } + return query; + } - // Max official rating - if (!string.IsNullOrEmpty(request.MaxOfficialRating)) + private bool ApplyAdditionalFilters(GetItems request, BaseItem i, User user, ILibraryManager libraryManager) + { + // Artists + if (!string.IsNullOrEmpty(request.ArtistIds)) { - var level = _localization.GetRatingLevel(request.MaxOfficialRating); - - if (level.HasValue) - { - var rating = i.CustomRating; - - if (string.IsNullOrEmpty(rating)) - { - rating = i.OfficialRating; - } - - if (!string.IsNullOrEmpty(rating)) - { - var itemLevel = _localization.GetRatingLevel(rating); - - if (!(!itemLevel.HasValue || itemLevel.Value <= level.Value)) - { - return false; - } - } - } - } + var artistIds = request.ArtistIds.Split(new[] { '|', ',' }); - if (!string.IsNullOrEmpty(request.AlbumArtistStartsWithOrGreater)) - { - var ok = new[] { i }.OfType<IHasAlbumArtist>() - .Any(p => string.Compare(request.AlbumArtistStartsWithOrGreater, p.AlbumArtists.FirstOrDefault(), StringComparison.CurrentCultureIgnoreCase) < 1); + var audio = i as IHasArtist; - if (!ok) + if (!(audio != null && artistIds.Any(id => + { + var artistItem = libraryManager.GetItemById(id); + return artistItem != null && audio.HasAnyArtist(artistItem.Name); + }))) { return false; } |
