aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Playlists/PlaylistManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Server.Implementations/Playlists/PlaylistManager.cs')
-rw-r--r--Emby.Server.Implementations/Playlists/PlaylistManager.cs28
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));
}
}