aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Playlists
diff options
context:
space:
mode:
authorMichalis Adamidis <gsnerf@gsnerf.de>2014-08-24 19:53:53 +0200
committerMichalis Adamidis <gsnerf@gsnerf.de>2014-08-24 19:53:53 +0200
commit5740a4c22d676d0050e875b0bd5455f5a303f5bd (patch)
tree8cbdc9a742be677fd96b1be32bb74a294d8722c4 /MediaBrowser.Server.Implementations/Playlists
parent7b8050ed382e1e39399c6d1b06637cd07ac6b8d5 (diff)
parent58a38d0d1ddb89439b763e7bc50e8b84105f68fe (diff)
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Conflicts: MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
Diffstat (limited to 'MediaBrowser.Server.Implementations/Playlists')
-rw-r--r--MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs35
1 files changed, 25 insertions, 10 deletions
diff --git a/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs b/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs
index 3cdea07935..ee2114aa4d 100644
--- a/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs
+++ b/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs
@@ -6,6 +6,7 @@ using MediaBrowser.Controller.Playlists;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
+using MediaBrowser.Model.Playlists;
using System;
using System.Collections.Generic;
using System.IO;
@@ -39,7 +40,7 @@ namespace MediaBrowser.Server.Implementations.Playlists
return GetPlaylistsFolder(userId).GetChildren(user, true).OfType<Playlist>();
}
- public async Task<Playlist> CreatePlaylist(PlaylistCreationOptions options)
+ public async Task<PlaylistCreationResult> CreatePlaylist(PlaylistCreationRequest options)
{
var name = options.Name;
@@ -81,7 +82,7 @@ namespace MediaBrowser.Server.Implementations.Playlists
if (folder != null)
{
options.MediaType = folder.GetRecursiveChildren()
- .Where(i => !i.IsFolder)
+ .Where(i => !i.IsFolder && i.SupportsAddingToPlaylist)
.Select(i => i.MediaType)
.FirstOrDefault(i => !string.IsNullOrWhiteSpace(i));
}
@@ -99,6 +100,8 @@ namespace MediaBrowser.Server.Implementations.Playlists
throw new ArgumentException("A playlist media type is required.");
}
+ var user = _userManager.GetUserById(new Guid(options.UserId));
+
var path = Path.Combine(parentFolder.Path, folderName);
path = GetTargetPath(path);
@@ -125,10 +128,13 @@ namespace MediaBrowser.Server.Implementations.Playlists
if (options.ItemIdList.Count > 0)
{
- await AddToPlaylist(playlist.Id.ToString("N"), options.ItemIdList);
+ await AddToPlaylistInternal(playlist.Id.ToString("N"), options.ItemIdList, user);
}
- return playlist;
+ return new PlaylistCreationResult
+ {
+ Id = playlist.Id.ToString("N")
+ };
}
finally
{
@@ -147,14 +153,21 @@ namespace MediaBrowser.Server.Implementations.Playlists
return path;
}
- private IEnumerable<BaseItem> GetPlaylistItems(IEnumerable<string> itemIds, string playlistMediaType)
+ private IEnumerable<BaseItem> GetPlaylistItems(IEnumerable<string> itemIds, string playlistMediaType, User user)
{
var items = itemIds.Select(i => _libraryManager.GetItemById(i)).Where(i => i != null);
- return Playlist.GetPlaylistItems(playlistMediaType, items, null);
+ return Playlist.GetPlaylistItems(playlistMediaType, items, user);
+ }
+
+ public Task AddToPlaylist(string playlistId, IEnumerable<string> itemIds, string userId)
+ {
+ var user = string.IsNullOrWhiteSpace(userId) ? null : _userManager.GetUserById(new Guid(userId));
+
+ return AddToPlaylistInternal(playlistId, itemIds, user);
}
- public async Task AddToPlaylist(string playlistId, IEnumerable<string> itemIds)
+ private async Task AddToPlaylistInternal(string playlistId, IEnumerable<string> itemIds, User user)
{
var playlist = _libraryManager.GetItemById(playlistId) as Playlist;
@@ -166,7 +179,9 @@ namespace MediaBrowser.Server.Implementations.Playlists
var list = new List<LinkedChild>();
var itemList = new List<BaseItem>();
- var items = GetPlaylistItems(itemIds, playlist.MediaType).ToList();
+ var items = GetPlaylistItems(itemIds, playlist.MediaType, user)
+ .Where(i => i.SupportsAddingToPlaylist)
+ .ToList();
foreach (var item in items)
{
@@ -177,8 +192,8 @@ namespace MediaBrowser.Server.Implementations.Playlists
playlist.LinkedChildren.AddRange(list);
await playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
- await playlist.RefreshMetadata(new MetadataRefreshOptions{
-
+ await playlist.RefreshMetadata(new MetadataRefreshOptions
+ {
ForceSave = true
}, CancellationToken.None).ConfigureAwait(false);