From 013058015172d596ae67327e203ca03e20658813 Mon Sep 17 00:00:00 2001 From: JPVenson Date: Wed, 30 Oct 2024 10:25:57 +0000 Subject: [PATCH] Fixed interface definition --- .../Controllers/MediaSegmentsController.cs | 2 +- .../MediaSegments/MediaSegmentManager.cs | 14 ++++++++++---- .../MediaSegements/IMediaSegmentManager.cs | 9 +++++++++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/Jellyfin.Api/Controllers/MediaSegmentsController.cs b/Jellyfin.Api/Controllers/MediaSegmentsController.cs index 3dc5167a2e..2d1d4e2c8a 100644 --- a/Jellyfin.Api/Controllers/MediaSegmentsController.cs +++ b/Jellyfin.Api/Controllers/MediaSegmentsController.cs @@ -55,7 +55,7 @@ public class MediaSegmentsController : BaseJellyfinApiController 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(items.ToArray())); } } diff --git a/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs b/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs index 453b8e03dd..1b9e7a17f0 100644 --- a/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs +++ b/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs @@ -139,20 +139,26 @@ public class MediaSegmentManager : IMediaSegmentManager } /// - public async Task> GetSegmentsAsync(Guid itemId, IEnumerable? typeFilter, bool filterByProvider = true) + public Task> GetSegmentsAsync(Guid itemId, IEnumerable? typeFilter, bool filterByProvider = true) { var baseItem = _libraryManager.GetItemById(itemId); if (baseItem is null) { _logger.LogError("Tried to request segments for an invalid item"); - return []; + return Task.FromResult>([]); } + return GetSegmentsAsync(baseItem, typeFilter, filterByProvider); + } + + /// + public async Task> GetSegmentsAsync(BaseItem item, IEnumerable? typeFilter, bool filterByProvider = true) + { using var db = await _dbProvider.CreateDbContextAsync().ConfigureAwait(false); var query = db.MediaSegments - .Where(e => e.ItemId.Equals(itemId)); + .Where(e => e.ItemId.Equals(item.Id)); if (typeFilter is not null) { @@ -161,7 +167,7 @@ public class MediaSegmentManager : IMediaSegmentManager if (filterByProvider) { - var libraryOptions = _libraryManager.GetLibraryOptions(baseItem); + var libraryOptions = _libraryManager.GetLibraryOptions(item); var providers = _segmentProviders .Where(e => !libraryOptions.DisabledMediaSegmentProviders.Contains(GetProviderId(e.Name))) .ToArray(); diff --git a/MediaBrowser.Controller/MediaSegements/IMediaSegmentManager.cs b/MediaBrowser.Controller/MediaSegements/IMediaSegmentManager.cs index 7980a38261..72bd1da8aa 100644 --- a/MediaBrowser.Controller/MediaSegements/IMediaSegmentManager.cs +++ b/MediaBrowser.Controller/MediaSegements/IMediaSegmentManager.cs @@ -54,6 +54,15 @@ public interface IMediaSegmentManager /// An enumerator of 's. Task> GetSegmentsAsync(Guid itemId, IEnumerable? typeFilter, bool filterByProvider = true); + /// + /// Obtains all segments accociated with the itemId. + /// + /// The . + /// filteres all media segments of the given type to be included. If null all types are included. + /// When set filteres the segments to only return those that which providers are currently enabled on their library. + /// An enumerator of 's. + Task> GetSegmentsAsync(BaseItem itemId, IEnumerable? typeFilter, bool filterByProvider = true); + /// /// Gets information about any media segments stored for the given itemId. ///