ソースを参照

Fixed interface definition

JPVenson 7 ヶ月 前
コミット
0130580151

+ 1 - 1
Jellyfin.Api/Controllers/MediaSegmentsController.cs

@@ -55,7 +55,7 @@ public class MediaSegmentsController : BaseJellyfinApiController
             return NotFound();
             return NotFound();
         }
         }
 
 
-        var items = await _mediaSegmentManager.GetSegmentsAsync(item.Id, includeSegmentTypes).ConfigureAwait(false);
+        var items = await _mediaSegmentManager.GetSegmentsAsync(item, includeSegmentTypes).ConfigureAwait(false);
         return Ok(new QueryResult<MediaSegmentDto>(items.ToArray()));
         return Ok(new QueryResult<MediaSegmentDto>(items.ToArray()));
     }
     }
 }
 }

+ 10 - 4
Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs

@@ -139,20 +139,26 @@ public class MediaSegmentManager : IMediaSegmentManager
     }
     }
 
 
     /// <inheritdoc />
     /// <inheritdoc />
-    public async Task<IEnumerable<MediaSegmentDto>> GetSegmentsAsync(Guid itemId, IEnumerable<MediaSegmentType>? typeFilter, bool filterByProvider = true)
+    public Task<IEnumerable<MediaSegmentDto>> GetSegmentsAsync(Guid itemId, IEnumerable<MediaSegmentType>? typeFilter, bool filterByProvider = true)
     {
     {
         var baseItem = _libraryManager.GetItemById(itemId);
         var baseItem = _libraryManager.GetItemById(itemId);
 
 
         if (baseItem is null)
         if (baseItem is null)
         {
         {
             _logger.LogError("Tried to request segments for an invalid item");
             _logger.LogError("Tried to request segments for an invalid item");
-            return [];
+            return Task.FromResult<IEnumerable<MediaSegmentDto>>([]);
         }
         }
 
 
+        return GetSegmentsAsync(baseItem, typeFilter, filterByProvider);
+    }
+
+    /// <inheritdoc />
+    public async Task<IEnumerable<MediaSegmentDto>> GetSegmentsAsync(BaseItem item, IEnumerable<MediaSegmentType>? typeFilter, bool filterByProvider = true)
+    {
         using var db = await _dbProvider.CreateDbContextAsync().ConfigureAwait(false);
         using var db = await _dbProvider.CreateDbContextAsync().ConfigureAwait(false);
 
 
         var query = db.MediaSegments
         var query = db.MediaSegments
-            .Where(e => e.ItemId.Equals(itemId));
+            .Where(e => e.ItemId.Equals(item.Id));
 
 
         if (typeFilter is not null)
         if (typeFilter is not null)
         {
         {
@@ -161,7 +167,7 @@ public class MediaSegmentManager : IMediaSegmentManager
 
 
         if (filterByProvider)
         if (filterByProvider)
         {
         {
-            var libraryOptions = _libraryManager.GetLibraryOptions(baseItem);
+            var libraryOptions = _libraryManager.GetLibraryOptions(item);
             var providers = _segmentProviders
             var providers = _segmentProviders
                 .Where(e => !libraryOptions.DisabledMediaSegmentProviders.Contains(GetProviderId(e.Name)))
                 .Where(e => !libraryOptions.DisabledMediaSegmentProviders.Contains(GetProviderId(e.Name)))
                 .ToArray();
                 .ToArray();

+ 9 - 0
MediaBrowser.Controller/MediaSegements/IMediaSegmentManager.cs

@@ -54,6 +54,15 @@ public interface IMediaSegmentManager
     /// <returns>An enumerator of <see cref="MediaSegmentDto"/>'s.</returns>
     /// <returns>An enumerator of <see cref="MediaSegmentDto"/>'s.</returns>
     Task<IEnumerable<MediaSegmentDto>> GetSegmentsAsync(Guid itemId, IEnumerable<MediaSegmentType>? typeFilter, bool filterByProvider = true);
     Task<IEnumerable<MediaSegmentDto>> GetSegmentsAsync(Guid itemId, IEnumerable<MediaSegmentType>? typeFilter, bool filterByProvider = true);
 
 
+    /// <summary>
+    /// Obtains all segments accociated with the itemId.
+    /// </summary>
+    /// <param name="itemId">The <see cref="BaseItem"/>.</param>
+    /// <param name="typeFilter">filteres all media segments of the given type to be included. If null all types are included.</param>
+    /// <param name="filterByProvider">When set filteres the segments to only return those that which providers are currently enabled on their library.</param>
+    /// <returns>An enumerator of <see cref="MediaSegmentDto"/>'s.</returns>
+    Task<IEnumerable<MediaSegmentDto>> GetSegmentsAsync(BaseItem itemId, IEnumerable<MediaSegmentType>? typeFilter, bool filterByProvider = true);
+
     /// <summary>
     /// <summary>
     /// Gets information about any media segments stored for the given itemId.
     /// Gets information about any media segments stored for the given itemId.
     /// </summary>
     /// </summary>