浏览代码

Extend playlist creation capabilities

Shadowghost 1 年之前
父节点
当前提交
f1dc1610a2

+ 3 - 7
Emby.Server.Implementations/Playlists/PlaylistManager.cs

@@ -85,12 +85,7 @@ namespace Emby.Server.Implementations.Playlists
             {
                 foreach (var itemId in options.ItemIdList)
                 {
-                    var item = _libraryManager.GetItemById(itemId);
-                    if (item is null)
-                    {
-                        throw new ArgumentException("No item exists with the supplied Id");
-                    }
-
+                    var item = _libraryManager.GetItemById(itemId) ?? throw new ArgumentException("No item exists with the supplied Id");
                     if (item.MediaType != MediaType.Unknown)
                     {
                         options.MediaType = item.MediaType;
@@ -139,7 +134,8 @@ namespace Emby.Server.Implementations.Playlists
                     Name = name,
                     Path = path,
                     OwnerUserId = options.UserId,
-                    Shares = options.Shares ?? Array.Empty<Share>()
+                    Shares = options.Shares ?? [],
+                    OpenAccess = options.OpenAccess ?? false
                 };
 
                 playlist.SetMediaType(options.MediaType);

+ 3 - 1
Jellyfin.Api/Controllers/PlaylistsController.cs

@@ -92,7 +92,9 @@ public class PlaylistsController : BaseJellyfinApiController
             Name = name ?? createPlaylistRequest?.Name,
             ItemIdList = ids,
             UserId = userId.Value,
-            MediaType = mediaType ?? createPlaylistRequest?.MediaType
+            MediaType = mediaType ?? createPlaylistRequest?.MediaType,
+            Shares = createPlaylistRequest?.Shares.ToArray(),
+            OpenAccess = createPlaylistRequest?.OpenAccess
         }).ConfigureAwait(false);
 
         return result;

+ 12 - 1
Jellyfin.Api/Models/PlaylistDtos/CreatePlaylistDto.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Text.Json.Serialization;
 using Jellyfin.Data.Enums;
 using Jellyfin.Extensions.Json.Converters;
+using MediaBrowser.Model.Entities;
 
 namespace Jellyfin.Api.Models.PlaylistDtos;
 
@@ -20,7 +21,7 @@ public class CreatePlaylistDto
     /// Gets or sets item ids to add to the playlist.
     /// </summary>
     [JsonConverter(typeof(JsonCommaDelimitedArrayConverterFactory))]
-    public IReadOnlyList<Guid> Ids { get; set; } = Array.Empty<Guid>();
+    public IReadOnlyList<Guid> Ids { get; set; } = [];
 
     /// <summary>
     /// Gets or sets the user id.
@@ -31,4 +32,14 @@ public class CreatePlaylistDto
     /// Gets or sets the media type.
     /// </summary>
     public MediaType? MediaType { get; set; }
+
+    /// <summary>
+    /// Gets or sets the shares.
+    /// </summary>
+    public IReadOnlyList<Share> Shares { get; set; } = [];
+
+    /// <summary>
+    /// Gets or sets a value indicating whether open access is enabled.
+    /// </summary>
+    public bool OpenAccess { get; set; }
 }

+ 6 - 1
MediaBrowser.Model/Playlists/PlaylistCreationRequest.cs

@@ -33,5 +33,10 @@ public class PlaylistCreationRequest
     /// <summary>
     /// Gets or sets the shares.
     /// </summary>
-    public Share[]? Shares { get; set; }
+    public IReadOnlyList<Share>? Shares { get; set; }
+
+    /// <summary>
+    /// Gets or sets a value indicating whether open access is enabled.
+    /// </summary>
+    public bool? OpenAccess { get; set; }
 }