diff options
Diffstat (limited to 'Emby.Server.Implementations/Playlists/PlaylistManager.cs')
| -rw-r--r-- | Emby.Server.Implementations/Playlists/PlaylistManager.cs | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/Emby.Server.Implementations/Playlists/PlaylistManager.cs b/Emby.Server.Implementations/Playlists/PlaylistManager.cs index 18042b587..e0e133e38 100644 --- a/Emby.Server.Implementations/Playlists/PlaylistManager.cs +++ b/Emby.Server.Implementations/Playlists/PlaylistManager.cs @@ -12,7 +12,8 @@ using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Common.IO; + +using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.IO; using MediaBrowser.Model.IO; @@ -135,7 +136,10 @@ namespace Emby.Server.Implementations.Playlists if (options.ItemIdList.Count > 0) { - await AddToPlaylistInternal(playlist.Id.ToString("N"), options.ItemIdList, user); + await AddToPlaylistInternal(playlist.Id.ToString("N"), options.ItemIdList, user, new DtoOptions(false) + { + EnableImages = true + }); } return new PlaylistCreationResult @@ -160,21 +164,24 @@ namespace Emby.Server.Implementations.Playlists return path; } - private Task<IEnumerable<BaseItem>> GetPlaylistItems(IEnumerable<string> itemIds, string playlistMediaType, User user) + private IEnumerable<BaseItem> GetPlaylistItems(IEnumerable<string> itemIds, string playlistMediaType, User user, DtoOptions options) { var items = itemIds.Select(i => _libraryManager.GetItemById(i)).Where(i => i != null); - return Playlist.GetPlaylistItems(playlistMediaType, items, user); + return Playlist.GetPlaylistItems(playlistMediaType, items, user, options); } public Task AddToPlaylist(string playlistId, IEnumerable<string> itemIds, string userId) { var user = string.IsNullOrWhiteSpace(userId) ? null : _userManager.GetUserById(userId); - return AddToPlaylistInternal(playlistId, itemIds, user); + return AddToPlaylistInternal(playlistId, itemIds, user, new DtoOptions(false) + { + EnableImages = true + }); } - private async Task AddToPlaylistInternal(string playlistId, IEnumerable<string> itemIds, User user) + private async Task AddToPlaylistInternal(string playlistId, IEnumerable<string> itemIds, User user, DtoOptions options) { var playlist = _libraryManager.GetItemById(playlistId) as Playlist; @@ -185,12 +192,17 @@ namespace Emby.Server.Implementations.Playlists var list = new List<LinkedChild>(); - var items = (await GetPlaylistItems(itemIds, playlist.MediaType, user).ConfigureAwait(false)) + var items = (GetPlaylistItems(itemIds, playlist.MediaType, user, options)) .Where(i => i.SupportsAddingToPlaylist) .ToList(); foreach (var item in items) { + if (string.IsNullOrWhiteSpace(item.Path)) + { + continue; + } + list.Add(LinkedChild.Create(item)); } @@ -271,7 +283,7 @@ namespace Emby.Server.Implementations.Playlists { var typeName = "PlaylistsFolder"; - return _libraryManager.RootFolder.Children.OfType<Folder>().FirstOrDefault(i => string.Equals(i.GetType().Name, typeName, StringComparison.Ordinal)) ?? + return _libraryManager.RootFolder.Children.OfType<Folder>().FirstOrDefault(i => string.Equals(i.GetType().Name, typeName, StringComparison.Ordinal)) ?? _libraryManager.GetUserRootFolder().Children.OfType<Folder>().FirstOrDefault(i => string.Equals(i.GetType().Name, typeName, StringComparison.Ordinal)); } } |
