@ -125,13 +125,13 @@ namespace MediaBrowser.Controller.Entities
case CollectionType . HomeVideos :
case CollectionType . Games :
case CollectionType . MusicVideos :
{
if ( query . Recursive )
{
return GetResult ( queryParent . GetRecursiveChildren ( user , true ) , queryParent , query ) ;
if ( query . Recursive )
{
return GetResult ( queryParent . GetRecursiveChildren ( user , true ) , queryParent , query ) ;
}
return GetResult ( queryParent . GetChildren ( user , true ) , queryParent , query ) ;
}
return GetResult ( queryParent . GetChildren ( user , true ) , queryParent , query ) ;
}
case CollectionType . Folders :
return GetResult ( user . RootFolder . GetChildren ( user , true ) , queryParent , query ) ;
@ -140,7 +140,7 @@ namespace MediaBrowser.Controller.Entities
return await GetPlaylistsView ( queryParent , user , query ) . ConfigureAwait ( false ) ;
case CollectionType . BoxSets :
return await GetBoxsetView ( queryParent , user , query ) . ConfigureAwait ( false ) ;
return GetBoxsetView ( queryParent , user , query ) ;
case CollectionType . TvShows :
return await GetTvView ( queryParent , user , query ) . ConfigureAwait ( false ) ;
@ -206,7 +206,7 @@ namespace MediaBrowser.Controller.Entities
return GetMusicLatest ( queryParent , user , query ) ;
case SpecialFolder . MusicPlaylists :
return await GetMusicPlaylists ( queryParent , user , query ) . ConfigureAwait ( false ) ;
return GetMusicPlaylists ( queryParent , user , query ) ;
case SpecialFolder . MusicAlbums :
return GetMusicAlbums ( queryParent , user , query ) ;
@ -310,14 +310,14 @@ namespace MediaBrowser.Controller.Entities
private async Task < QueryResult < BaseItem > > GetMusicGenreItems ( Folder queryParent , Folder displayParent , User user , InternalItemsQuery query )
{
var items = GetRecursiveChildren ( queryParent , user , new [ ] { CollectionType . Music , CollectionType . MusicVideos } )
. Where ( i = > ! i . IsFolder )
. Where ( i = > i . Genres . Contains ( displayParent . Name , StringComparer . OrdinalIgnoreCase ) )
. OfType < IHasAlbumArtist > ( ) ;
query . Recursive = true ;
query . ParentId = queryParent . Id ;
query . Genres = new [ ] { displayParent . Name } ;
query . SetUser ( user ) ;
var artists = _libraryManager . GetAlbumArtists ( items ) ;
query . IncludeItemTypes = new [ ] { typeof ( MusicAlbum ) . Name } ;
return GetResult( artists , queryParent , query ) ;
return _libraryManager. GetItems Result( query ) ;
}
private QueryResult < BaseItem > GetMusicAlbumArtists ( Folder parent , User user , InternalItemsQuery query )
@ -353,26 +353,36 @@ namespace MediaBrowser.Controller.Entities
return GetResult ( artists , parent , query ) ;
}
private Task< QueryResult< BaseItem > > GetMusicPlaylists ( Folder parent , User user , InternalItemsQuery query )
private QueryResult< BaseItem > GetMusicPlaylists ( Folder parent , User user , InternalItemsQuery query )
{
query . IncludeItemTypes = new [ ] { "Playlist" } ;
query . ParentId = null ;
query . IncludeItemTypes = new [ ] { typeof ( Playlist ) . Name } ;
query . SetUser ( user ) ;
query . Recursive = true ;
return parent. GetItems ( query ) ;
return _libraryManager. GetItemsResult ( query ) ;
}
private QueryResult < BaseItem > GetMusicAlbums ( Folder parent , User user , InternalItemsQuery query )
{
var items = GetRecursiveChildren ( parent , user , new [ ] { CollectionType . Music , CollectionType . MusicVideos } , i = > i is MusicAlbum & & FilterItem ( i , query ) ) ;
query . Recursive = true ;
query . ParentId = parent . Id ;
query . SetUser ( user ) ;
return PostFilterAndSort ( items , parent , null , query ) ;
query . IncludeItemTypes = new [ ] { typeof ( MusicAlbum ) . Name } ;
return _libraryManager . GetItemsResult ( query ) ;
}
private QueryResult < BaseItem > GetMusicSongs ( Folder parent , User user , InternalItemsQuery query )
{
var items = GetRecursiveChildren ( parent , user , new [ ] { CollectionType . Music , CollectionType . MusicVideos } , i = > i is Audio . Audio & & FilterItem ( i , query ) ) ;
query . Recursive = true ;
query . ParentId = parent . Id ;
query . SetUser ( user ) ;
return PostFilterAndSort ( items , parent , null , query ) ;
query . IncludeItemTypes = new [ ] { typeof ( Audio . Audio ) . Name } ;
return _libraryManager . GetItemsResult ( query ) ;
}
private QueryResult < BaseItem > GetMusicLatest ( Folder parent , User user , InternalItemsQuery query )
@ -396,20 +406,24 @@ namespace MediaBrowser.Controller.Entities
private QueryResult < BaseItem > GetFavoriteSongs ( Folder parent , User user , InternalItemsQuery query )
{
query . Recursive = true ;
query . ParentId = parent . Id ;
query . SetUser ( user ) ;
query . IsFavorite = true ;
query . IncludeItemTypes = new [ ] { typeof ( Audio . Audio ) . Name } ;
var items = GetRecursiveChildren ( parent , user , new [ ] { CollectionType . Music } , i = > i is Audio . Audio & & FilterItem ( i , query ) ) ;
return PostFilterAndSort ( items , parent , null , query ) ;
return _libraryManager . GetItemsResult ( query ) ;
}
private QueryResult < BaseItem > GetFavoriteAlbums ( Folder parent , User user , InternalItemsQuery query )
{
query . Recursive = true ;
query . ParentId = parent . Id ;
query . SetUser ( user ) ;
query . IsFavorite = true ;
query . IncludeItemTypes = new [ ] { typeof ( MusicAlbum ) . Name } ;
var items = GetRecursiveChildren ( parent , user , new [ ] { CollectionType . Music } , i = > i is MusicAlbum & & FilterItem ( i , query ) ) ;
return PostFilterAndSort ( items , parent , null , query ) ;
return _libraryManager . GetItemsResult ( query ) ;
}
private async Task < QueryResult < BaseItem > > FindPlaylists ( Folder parent , User user , InternalItemsQuery query )
@ -428,19 +442,13 @@ namespace MediaBrowser.Controller.Entities
{
if ( query . Recursive )
{
var recursiveItems = GetRecursiveChildren ( parent , user ,
new [ ] { CollectionType . Movies , CollectionType . BoxSets , string . Empty } )
. Where ( i = > i is Movie | | i is BoxSet ) ;
//var collections = _collectionManager.CollapseItemsWithinBoxSets(recursiveItems, user).ToList();
query . Recursive = true ;
query . ParentId = parent . Id ;
query . SetUser ( user ) ;
//if (collections.Count > 0)
//{
// recursiveItems.AddRange(_collectionManager.CollapseItemsWithinBoxSets(recursiveItems, user));
// recursiveItems = recursiveItems.DistinctBy(i => i.Id).ToList();
//}
query . IncludeItemTypes = new [ ] { typeof ( Movie ) . Name , typeof ( BoxSet ) . Name } ;
return GetResult( recursiveItems , parent , query ) ;
return _libraryManager . GetItemsResult ( query ) ;
}
var list = new List < BaseItem > ( ) ;
@ -457,43 +465,51 @@ namespace MediaBrowser.Controller.Entities
private QueryResult < BaseItem > GetFavoriteMovies ( Folder parent , User user , InternalItemsQuery query )
{
query . Recursive = true ;
query . ParentId = parent . Id ;
query . SetUser ( user ) ;
query . IsFavorite = true ;
query . IncludeItemTypes = new [ ] { typeof ( Movie ) . Name } ;
var items = GetRecursiveChildren ( parent , user , new [ ] { CollectionType . Movies , CollectionType . BoxSets , string . Empty } , i = > i is Movie & & FilterItem ( i , query ) ) ;
return PostFilterAndSort ( items , parent , null , query ) ;
return _libraryManager . GetItemsResult ( query ) ;
}
private QueryResult < BaseItem > GetFavoriteSeries ( Folder parent , User user , InternalItemsQuery query )
{
query . Recursive = true ;
query . ParentId = parent . Id ;
query . SetUser ( user ) ;
query . IsFavorite = true ;
query . IncludeItemTypes = new [ ] { typeof ( Series ) . Name } ;
var items = GetRecursiveChildren ( parent , user , new [ ] { CollectionType . TvShows , string . Empty } , i = > i is Series & & FilterItem ( i , query ) ) ;
return PostFilterAndSort ( items , parent , null , query ) ;
return _libraryManager . GetItemsResult ( query ) ;
}
private QueryResult < BaseItem > GetFavoriteEpisodes ( Folder parent , User user , InternalItemsQuery query )
{
query . Recursive = true ;
query . ParentId = parent . Id ;
query . SetUser ( user ) ;
query . IsFavorite = true ;
query . IncludeItemTypes = new [ ] { typeof ( Episode ) . Name } ;
var items = GetRecursiveChildren ( parent , user , new [ ] { CollectionType . TvShows , string . Empty } , i = > i is Episode & & FilterItem ( i , query ) ) ;
return PostFilterAndSort ( items , parent , null , query ) ;
return _libraryManager . GetItemsResult ( query ) ;
}
private QueryResult < BaseItem > GetMovieMovies ( Folder parent , User user , InternalItemsQuery query )
{
var items = GetRecursiveChildren ( parent , user , new [ ] { CollectionType . Movies , CollectionType . BoxSets , string . Empty } , i = > i is Movie & & FilterItem ( i , query ) ) ;
query . Recursive = true ;
query . ParentId = parent . Id ;
query . SetUser ( user ) ;
return PostFilterAndSort ( items , parent , null , query ) ;
query . IncludeItemTypes = new [ ] { typeof ( Movie ) . Name } ;
return _libraryManager . GetItemsResult ( query ) ;
}
private QueryResult < BaseItem > GetMovieCollections ( Folder parent , User user , InternalItemsQuery query )
{
var items = GetRecursiveChildren ( parent , user , new [ ] { CollectionType . Movies , CollectionType . BoxSets , string . Empty } , i = > i is BoxSet & & FilterItem ( i , query ) ) ;
return PostFilterAndSort ( items , parent , null , query ) ;
return GetBoxsetView ( parent , user , query ) ;
}
private QueryResult < BaseItem > GetMovieLatest ( Folder parent , User user , InternalItemsQuery query )
@ -501,9 +517,13 @@ namespace MediaBrowser.Controller.Entities
query . SortBy = new [ ] { ItemSortBy . DateCreated , ItemSortBy . SortName } ;
query . SortOrder = SortOrder . Descending ;
var items = GetRecursiveChildren ( parent , user , new [ ] { CollectionType . Movies , CollectionType . BoxSets , string . Empty } , i = > i is Movie & & FilterItem ( i , query ) ) ;
query . Recursive = true ;
query . ParentId = parent . Id ;
query . SetUser ( user ) ;
query . Limit = GetSpecialItemsLimit ( ) ;
query . IncludeItemTypes = new [ ] { typeof ( Movie ) . Name } ;
return PostFilterAndSort ( items , parent , GetSpecialItemsLimit ( ) , query ) ;
return _libraryManager. GetItemsResult ( query ) ;
}
private QueryResult < BaseItem > GetMovieResume ( Folder parent , User user , InternalItemsQuery query )
@ -511,10 +531,13 @@ namespace MediaBrowser.Controller.Entities
query . SortBy = new [ ] { ItemSortBy . DatePlayed , ItemSortBy . SortName } ;
query . SortOrder = SortOrder . Descending ;
query . IsResumable = true ;
query . Recursive = true ;
query . ParentId = parent . Id ;
query . SetUser ( user ) ;
query . Limit = GetSpecialItemsLimit ( ) ;
query . IncludeItemTypes = new [ ] { typeof ( Movie ) . Name } ;
var items = GetRecursiveChildren ( parent , user , new [ ] { CollectionType . Movies , CollectionType . BoxSets , string . Empty } , i = > i is Movie & & FilterItem ( i , query ) ) ;
return PostFilterAndSort ( items , parent , GetSpecialItemsLimit ( ) , query ) ;
return _libraryManager . GetItemsResult ( query ) ;
}
private async Task < QueryResult < BaseItem > > GetMovieGenres ( Folder parent , User user , InternalItemsQuery query )
@ -547,11 +570,14 @@ namespace MediaBrowser.Controller.Entities
private async Task < QueryResult < BaseItem > > GetMovieGenreItems ( Folder queryParent , Folder displayParent , User user , InternalItemsQuery query )
{
var items = GetRecursiveChildren ( queryParent , user , new [ ] { CollectionType . Movies , CollectionType . BoxSets , string . Empty } )
. Where ( i = > i is Movie )
. Where ( i = > i . Genres . Contains ( displayParent . Name , StringComparer . OrdinalIgnoreCase ) ) ;
query . Recursive = true ;
query . ParentId = queryParent . Id ;
query . Genres = new [ ] { displayParent . Name } ;
query . SetUser ( user ) ;
query . IncludeItemTypes = new [ ] { typeof ( Movie ) . Name } ;
return GetResult ( items , queryParent , query ) ;
return _libraryManager. GetItemsResult ( query ) ;
}
private async Task < QueryResult < BaseItem > > GetPlaylistsView ( Folder parent , User user , InternalItemsQuery query )
@ -559,11 +585,14 @@ namespace MediaBrowser.Controller.Entities
return GetResult ( _playlistManager . GetPlaylists ( user . Id . ToString ( "N" ) ) , parent , query ) ;
}
private async Task < QueryResult < BaseItem > > GetBoxsetView ( Folder parent , User user , InternalItemsQuery query )
private QueryResult < BaseItem > GetBoxsetView ( Folder parent , User user , InternalItemsQuery query )
{
var collections = _collectionManager . GetCollections ( user ) ;
query . ParentId = null ;
query . IncludeItemTypes = new [ ] { typeof ( BoxSet ) . Name } ;
query . SetUser ( user ) ;
query . Recursive = true ;
return GetResult ( collections , parent , query ) ;
return _libraryManager. GetItemsResult ( query ) ;
}
private async Task < QueryResult < BaseItem > > GetTvView ( Folder parent , User user , InternalItemsQuery query )
@ -593,9 +622,13 @@ namespace MediaBrowser.Controller.Entities
query . SortBy = new [ ] { ItemSortBy . DateCreated , ItemSortBy . SortName } ;
query . SortOrder = SortOrder . Descending ;
var items = GetRecursiveChildren ( parent , user , new [ ] { CollectionType . TvShows , string . Empty } , i = > i is Episode & & FilterItem ( i , query ) ) ;
query . Recursive = true ;
query . ParentId = parent . Id ;
query . SetUser ( user ) ;
query . Limit = GetSpecialItemsLimit ( ) ;
query . IncludeItemTypes = new [ ] { typeof ( Episode ) . Name } ;
return PostFilterAndSort ( items , parent , GetSpecialItemsLimit ( ) , query ) ;
return _libraryManager. GetItemsResult ( query ) ;
}
private QueryResult < BaseItem > GetTvNextUp ( Folder parent , InternalItemsQuery query )
@ -618,17 +651,24 @@ namespace MediaBrowser.Controller.Entities
query . SortBy = new [ ] { ItemSortBy . DatePlayed , ItemSortBy . SortName } ;
query . SortOrder = SortOrder . Descending ;
query . IsResumable = true ;
query . Recursive = true ;
query . ParentId = parent . Id ;
query . SetUser ( user ) ;
query . Limit = GetSpecialItemsLimit ( ) ;
query . IncludeItemTypes = new [ ] { typeof ( Episode ) . Name } ;
var items = GetRecursiveChildren ( parent , user , new [ ] { CollectionType . TvShows , string . Empty } , i = > i is Episode & & FilterItem ( i , query ) ) ;
return PostFilterAndSort ( items , parent , GetSpecialItemsLimit ( ) , query ) ;
return _libraryManager . GetItemsResult ( query ) ;
}
private QueryResult < BaseItem > GetTvSeries ( Folder parent , User user , InternalItemsQuery query )
{
var items = GetRecursiveChildren ( parent , user , new [ ] { CollectionType . TvShows , string . Empty } , i = > i is Series & & FilterItem ( i , query ) ) ;
query . Recursive = true ;
query . ParentId = parent . Id ;
query . SetUser ( user ) ;
return PostFilterAndSort ( items , parent , null , query ) ;
query . IncludeItemTypes = new [ ] { typeof ( Series ) . Name } ;
return _libraryManager . GetItemsResult ( query ) ;
}
private async Task < QueryResult < BaseItem > > GetTvGenres ( Folder parent , User user , InternalItemsQuery query )
@ -661,11 +701,14 @@ namespace MediaBrowser.Controller.Entities
private async Task < QueryResult < BaseItem > > GetTvGenreItems ( Folder queryParent , Folder displayParent , User user , InternalItemsQuery query )
{
var items = GetRecursiveChildren ( queryParent , user , new [ ] { CollectionType . TvShows , string . Empty } )
. Where ( i = > i is Series )
. Where ( i = > i . Genres . Contains ( displayParent . Name , StringComparer . OrdinalIgnoreCase ) ) ;
query . Recursive = true ;
query . ParentId = queryParent . Id ;
query . Genres = new [ ] { displayParent . Name } ;
query . SetUser ( user ) ;
query . IncludeItemTypes = new [ ] { typeof ( Series ) . Name } ;
return GetResult ( items , queryParent , query ) ;
return _libraryManager. GetItemsResult ( query ) ;
}
private QueryResult < BaseItem > GetResult < T > ( QueryResult < T > result )
@ -1735,7 +1778,7 @@ namespace MediaBrowser.Controller.Entities
if ( query . SeriesStatuses . Length > 0 )
{
var ok = new [ ] { item } . OfType < Series > ( ) . Any ( p = > p . Status . HasValue & & query . SeriesStatuses . Contains ( p . Status . Value ) ) ;
var ok = new [ ] { item } . OfType < Series > ( ) . Any ( p = > p . Status . HasValue & & query . SeriesStatuses . Contains ( p . Status . Value ) ) ;
if ( ! ok )
{
return false ;