|
|
|
@ -250,9 +250,16 @@ namespace MediaBrowser.Controller.Entities
|
|
|
|
|
{
|
|
|
|
|
if (query.Recursive)
|
|
|
|
|
{
|
|
|
|
|
var items = GetRecursiveChildren(parent, user, new[] { CollectionType.Music, CollectionType.MusicVideos }, i => FilterItem(i, query));
|
|
|
|
|
query.Recursive = true;
|
|
|
|
|
query.ParentId = parent.Id;
|
|
|
|
|
query.SetUser(user);
|
|
|
|
|
|
|
|
|
|
if (query.IncludeItemTypes.Length == 0)
|
|
|
|
|
{
|
|
|
|
|
query.IncludeItemTypes = new[] { typeof(MusicArtist).Name, typeof(MusicAlbum).Name, typeof(Audio.Audio).Name, typeof(MusicVideo).Name };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return PostFilterAndSort(items, parent, null, query);
|
|
|
|
|
return _libraryManager.GetItemsResult(query);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var list = new List<BaseItem>();
|
|
|
|
@ -543,8 +550,13 @@ namespace MediaBrowser.Controller.Entities
|
|
|
|
|
|
|
|
|
|
private async Task<QueryResult<BaseItem>> GetMovieGenres(Folder parent, User user, InternalItemsQuery query)
|
|
|
|
|
{
|
|
|
|
|
var tasks = GetRecursiveChildren(parent, user, new[] { CollectionType.Movies, CollectionType.BoxSets, string.Empty })
|
|
|
|
|
.Where(i => i is Movie)
|
|
|
|
|
var tasks = parent.QueryRecursive(new InternalItemsQuery(user)
|
|
|
|
|
{
|
|
|
|
|
IncludeItemTypes = new[] { typeof(Movie).Name },
|
|
|
|
|
Recursive = true,
|
|
|
|
|
EnableTotalRecordCount = false
|
|
|
|
|
|
|
|
|
|
}).Items
|
|
|
|
|
.SelectMany(i => i.Genres)
|
|
|
|
|
.DistinctNames()
|
|
|
|
|
.Select(i =>
|
|
|
|
@ -681,8 +693,13 @@ namespace MediaBrowser.Controller.Entities
|
|
|
|
|
|
|
|
|
|
private async Task<QueryResult<BaseItem>> GetTvGenres(Folder parent, User user, InternalItemsQuery query)
|
|
|
|
|
{
|
|
|
|
|
var tasks = GetRecursiveChildren(parent, user, new[] { CollectionType.TvShows, string.Empty })
|
|
|
|
|
.OfType<Series>()
|
|
|
|
|
var tasks = parent.QueryRecursive(new InternalItemsQuery(user)
|
|
|
|
|
{
|
|
|
|
|
IncludeItemTypes = new[] { typeof(Series).Name },
|
|
|
|
|
Recursive = true,
|
|
|
|
|
EnableTotalRecordCount = false
|
|
|
|
|
|
|
|
|
|
}).Items
|
|
|
|
|
.SelectMany(i => i.Genres)
|
|
|
|
|
.DistinctNames()
|
|
|
|
|
.Select(i =>
|
|
|
|
@ -1935,26 +1952,6 @@ namespace MediaBrowser.Controller.Entities
|
|
|
|
|
return parent.GetRecursiveChildren(user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private IEnumerable<BaseItem> GetRecursiveChildren(Folder parent, User user, IEnumerable<string> viewTypes, Func<BaseItem, bool> filter)
|
|
|
|
|
{
|
|
|
|
|
if (parent == null || parent is UserView)
|
|
|
|
|
{
|
|
|
|
|
if (user == null)
|
|
|
|
|
{
|
|
|
|
|
return GetMediaFolders(null, viewTypes).SelectMany(i => i.GetRecursiveChildren(filter));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return GetMediaFolders(user, viewTypes).SelectMany(i => i.GetRecursiveChildren(user, filter));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (user == null)
|
|
|
|
|
{
|
|
|
|
|
return parent.GetRecursiveChildren(filter);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return parent.GetRecursiveChildren(user, filter);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async Task<QueryResult<BaseItem>> GetLiveTvView(Folder queryParent, User user, InternalItemsQuery query)
|
|
|
|
|
{
|
|
|
|
|
if (query.Recursive)
|
|
|
|
|