aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-10-22 10:51:02 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-10-22 10:51:02 -0400
commit3768de3a32b8fd64774b5723fd593d221dd41e76 (patch)
tree5bee7cb94a2218d5081f27cafefaf261ec372ea0
parent17e5c92549e716e3bf9505ebfd98de8bdc42aa45 (diff)
update music dlna
-rw-r--r--MediaBrowser.Controller/Entities/UserViewBuilder.cs173
1 files changed, 64 insertions, 109 deletions
diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
index f813fac71..9debdf9ba 100644
--- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs
+++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
@@ -201,7 +201,7 @@ namespace MediaBrowser.Controller.Entities
return await GetMusicFolders(queryParent, user, query).ConfigureAwait(false);
case SpecialFolder.MusicGenres:
- return await GetMusicGenres(queryParent, user, query).ConfigureAwait(false);
+ return GetMusicGenres(queryParent, user, query);
case SpecialFolder.MusicGenre:
return await GetMusicGenreItems(queryParent, displayParent, user, query).ConfigureAwait(false);
@@ -290,32 +290,20 @@ namespace MediaBrowser.Controller.Entities
return GetResult(list, parent, query);
}
- private async Task<QueryResult<BaseItem>> GetMusicGenres(Folder parent, User user, InternalItemsQuery query)
+ private QueryResult<BaseItem> GetMusicGenres(Folder parent, User user, InternalItemsQuery query)
{
- var tasks = GetRecursiveChildren(parent, user, new[] { CollectionType.Music, CollectionType.MusicVideos })
- .Where(i => !i.IsFolder)
- .SelectMany(i => i.Genres)
- .DistinctNames()
- .Select(i =>
- {
- try
- {
- return _libraryManager.GetMusicGenre(i);
- }
- catch
- {
- // Full exception logged at lower levels
- _logger.Error("Error getting genre");
- return null;
- }
-
- })
- .Where(i => i != null)
- .Select(i => GetUserView(i.Name, SpecialFolder.MusicGenre, i.SortName, parent));
-
- var genres = await Task.WhenAll(tasks).ConfigureAwait(false);
+ var result = _libraryManager.GetMusicGenres(new InternalItemsQuery(user)
+ {
+ AncestorIds = new[] { parent.Id.ToString("N") },
+ StartIndex = query.StartIndex,
+ Limit = query.Limit
+ });
- return GetResult(genres, parent, query);
+ return new QueryResult<BaseItem>
+ {
+ TotalRecordCount = result.TotalRecordCount,
+ Items = result.Items.Select(i => i.Item1).ToArray()
+ };
}
private async Task<QueryResult<BaseItem>> GetMusicGenreItems(Folder queryParent, Folder displayParent, User user, InternalItemsQuery query)
@@ -332,50 +320,51 @@ namespace MediaBrowser.Controller.Entities
private QueryResult<BaseItem> GetMusicAlbumArtists(Folder parent, User user, InternalItemsQuery query)
{
- var items = parent.QueryRecursive(new InternalItemsQuery(user)
+ var artists = _libraryManager.GetAlbumArtists(new InternalItemsQuery(user)
{
- Recursive = true,
- ParentId = parent.Id,
- IncludeItemTypes = new[] { typeof(Audio.Audio).Name },
- EnableTotalRecordCount = false
-
- }).Items.Cast<IHasAlbumArtist>();
-
- var artists = _libraryManager.GetAlbumArtists(items);
+ AncestorIds = new[] { parent.Id.ToString("N") },
+ StartIndex = query.StartIndex,
+ Limit = query.Limit
+ });
- return GetResult(artists, parent, query);
+ return new QueryResult<BaseItem>
+ {
+ TotalRecordCount = artists.TotalRecordCount,
+ Items = artists.Items.Select(i => i.Item1).ToArray()
+ };
}
private QueryResult<BaseItem> GetMusicArtists(Folder parent, User user, InternalItemsQuery query)
{
- var items = parent.QueryRecursive(new InternalItemsQuery(user)
+ var artists = _libraryManager.GetArtists(new InternalItemsQuery(user)
{
- Recursive = true,
- ParentId = parent.Id,
- IncludeItemTypes = new[] { typeof(Audio.Audio).Name, typeof(MusicVideo).Name },
- EnableTotalRecordCount = false
-
- }).Items.Cast<IHasArtist>();
-
- var artists = _libraryManager.GetArtists(items);
+ AncestorIds = new[] { parent.Id.ToString("N") },
+ StartIndex = query.StartIndex,
+ Limit = query.Limit
+ });
- return GetResult(artists, parent, query);
+ return new QueryResult<BaseItem>
+ {
+ TotalRecordCount = artists.TotalRecordCount,
+ Items = artists.Items.Select(i => i.Item1).ToArray()
+ };
}
private QueryResult<BaseItem> GetFavoriteArtists(Folder parent, User user, InternalItemsQuery query)
{
- var items = parent.QueryRecursive(new InternalItemsQuery(user)
+ var artists = _libraryManager.GetArtists(new InternalItemsQuery(user)
{
- Recursive = true,
- ParentId = parent.Id,
- IncludeItemTypes = new[] { typeof(Audio.Audio).Name },
- EnableTotalRecordCount = false
-
- }).Items.Cast<IHasAlbumArtist>();
-
- var artists = _libraryManager.GetAlbumArtists(items).Where(i => _userDataManager.GetUserData(user, i).IsFavorite);
+ AncestorIds = new[] { parent.Id.ToString("N") },
+ StartIndex = query.StartIndex,
+ Limit = query.Limit,
+ IsFavorite = true
+ });
- return GetResult(artists, parent, query);
+ return new QueryResult<BaseItem>
+ {
+ TotalRecordCount = artists.TotalRecordCount,
+ Items = artists.Items.Select(i => i.Item1).ToArray()
+ };
}
private QueryResult<BaseItem> GetMusicPlaylists(Folder parent, User user, InternalItemsQuery query)
@@ -577,35 +566,18 @@ namespace MediaBrowser.Controller.Entities
private async Task<QueryResult<BaseItem>> GetMovieGenres(Folder parent, User user, InternalItemsQuery query)
{
- var tasks = parent.QueryRecursive(new InternalItemsQuery(user)
+ var result = _libraryManager.GetGenres(new InternalItemsQuery(user)
{
- IncludeItemTypes = new[] { typeof(Movie).Name },
- Recursive = true,
- EnableTotalRecordCount = false
-
- }).Items
- .SelectMany(i => i.Genres)
- .DistinctNames()
- .Select(i =>
- {
- try
- {
- return _libraryManager.GetGenre(i);
- }
- catch
- {
- // Full exception logged at lower levels
- _logger.Error("Error getting genre");
- return null;
- }
-
- })
- .Where(i => i != null)
- .Select(i => GetUserView(i.Name, SpecialFolder.MovieGenre, i.SortName, parent));
-
- var genres = await Task.WhenAll(tasks).ConfigureAwait(false);
+ AncestorIds = new[] { parent.Id.ToString("N") },
+ StartIndex = query.StartIndex,
+ Limit = query.Limit
+ });
- return GetResult(genres, parent, query);
+ return new QueryResult<BaseItem>
+ {
+ TotalRecordCount = result.TotalRecordCount,
+ Items = result.Items.Select(i => i.Item1).ToArray()
+ };
}
private async Task<QueryResult<BaseItem>> GetMovieGenreItems(Folder queryParent, Folder displayParent, User user, InternalItemsQuery query)
@@ -720,35 +692,18 @@ namespace MediaBrowser.Controller.Entities
private async Task<QueryResult<BaseItem>> GetTvGenres(Folder parent, User user, InternalItemsQuery query)
{
- var tasks = parent.QueryRecursive(new InternalItemsQuery(user)
+ var result = _libraryManager.GetGenres(new InternalItemsQuery(user)
{
- IncludeItemTypes = new[] { typeof(Series).Name },
- Recursive = true,
- EnableTotalRecordCount = false
-
- }).Items
- .SelectMany(i => i.Genres)
- .DistinctNames()
- .Select(i =>
- {
- try
- {
- return _libraryManager.GetGenre(i);
- }
- catch
- {
- // Full exception logged at lower levels
- _logger.Error("Error getting genre");
- return null;
- }
-
- })
- .Where(i => i != null)
- .Select(i => GetUserView(i.Name, SpecialFolder.TvGenre, i.SortName, parent));
-
- var genres = await Task.WhenAll(tasks).ConfigureAwait(false);
+ AncestorIds = new[] { parent.Id.ToString("N") },
+ StartIndex = query.StartIndex,
+ Limit = query.Limit
+ });
- return GetResult(genres, parent, query);
+ return new QueryResult<BaseItem>
+ {
+ TotalRecordCount = result.TotalRecordCount,
+ Items = result.Items.Select(i => i.Item1).ToArray()
+ };
}
private QueryResult<BaseItem> GetTvGenreItems(Folder queryParent, Folder displayParent, User user, InternalItemsQuery query)