diff options
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Playlists/IPlaylistManager.cs | 3 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Playlists/Playlist.cs | 22 |
2 files changed, 16 insertions, 9 deletions
diff --git a/MediaBrowser.Controller/Playlists/IPlaylistManager.cs b/MediaBrowser.Controller/Playlists/IPlaylistManager.cs index c67a8a3d5..cbe0b97a4 100644 --- a/MediaBrowser.Controller/Playlists/IPlaylistManager.cs +++ b/MediaBrowser.Controller/Playlists/IPlaylistManager.cs @@ -26,8 +26,9 @@ namespace MediaBrowser.Controller.Playlists /// </summary> /// <param name="playlistId">The playlist identifier.</param> /// <param name="itemIds">The item ids.</param> + /// <param name="userId">The user identifier.</param> /// <returns>Task.</returns> - Task AddToPlaylist(string playlistId, IEnumerable<string> itemIds); + Task AddToPlaylist(string playlistId, IEnumerable<string> itemIds, string userId); /// <summary> /// Removes from playlist. diff --git a/MediaBrowser.Controller/Playlists/Playlist.cs b/MediaBrowser.Controller/Playlists/Playlist.cs index 84fcbb91a..2659a7c13 100644 --- a/MediaBrowser.Controller/Playlists/Playlist.cs +++ b/MediaBrowser.Controller/Playlists/Playlist.cs @@ -49,7 +49,7 @@ namespace MediaBrowser.Controller.Playlists } return inputItems.SelectMany(i => GetPlaylistItems(i, user)) - .Where(m => string.Equals(m.MediaType, playlistMediaType, StringComparison.OrdinalIgnoreCase)); + .Where(m => string.Equals(m.MediaType, playlistMediaType, StringComparison.OrdinalIgnoreCase)); } private static IEnumerable<BaseItem> GetPlaylistItems(BaseItem i, User user) @@ -57,25 +57,31 @@ namespace MediaBrowser.Controller.Playlists var musicGenre = i as MusicGenre; if (musicGenre != null) { - var songs = user.RootFolder - .GetRecursiveChildren(user) + var items = user == null + ? LibraryManager.RootFolder.GetRecursiveChildren() + : user.RootFolder.GetRecursiveChildren(user, true); + + var songs = items .OfType<Audio>() .Where(a => a.Genres.Contains(musicGenre.Name, StringComparer.OrdinalIgnoreCase)); - return LibraryManager.Sort(songs, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending); + return LibraryManager.Sort(songs, user, new[] { ItemSortBy.AlbumArtist, ItemSortBy.Album, ItemSortBy.SortName }, SortOrder.Ascending); } var musicArtist = i as MusicArtist; if (musicArtist != null) { - var songs = user.RootFolder - .GetRecursiveChildren(user) + var items = user == null + ? LibraryManager.RootFolder.GetRecursiveChildren() + : user.RootFolder.GetRecursiveChildren(user, true); + + var songs = items .OfType<Audio>() .Where(a => a.HasArtist(musicArtist.Name)); - return LibraryManager.Sort(songs, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending); + return LibraryManager.Sort(songs, user, new[] { ItemSortBy.AlbumArtist, ItemSortBy.Album, ItemSortBy.SortName }, SortOrder.Ascending); } - + var folder = i as Folder; if (folder != null) |
