From c08d1d5b7f45b41ef200e9604fa38096c1560a85 Mon Sep 17 00:00:00 2001 From: JPVenson Date: Wed, 30 Oct 2024 10:09:39 +0000 Subject: [PATCH] Added parameter to enable or disable library filter --- .../MediaSegments/MediaSegmentManager.cs | 18 ++++++++++-------- .../MediaSegements/IMediaSegmentManager.cs | 3 ++- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs b/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs index 9d38167ac6..4abf5f9f8a 100644 --- a/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs +++ b/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs @@ -139,7 +139,7 @@ public class MediaSegmentManager : IMediaSegmentManager } /// - public async Task> GetSegmentsAsync(Guid itemId, IEnumerable? typeFilter) + public async Task> GetSegmentsAsync(Guid itemId, IEnumerable? typeFilter, bool filterByProvider = true) { var baseItem = _libraryManager.GetItemById(itemId); @@ -149,11 +149,6 @@ public class MediaSegmentManager : IMediaSegmentManager return []; } - var libraryOptions = _libraryManager.GetLibraryOptions(baseItem); - var providers = _segmentProviders - .Where(e => !libraryOptions.DisabledMediaSegmentProviders.Contains(GetProviderId(e.Name))) - .ToArray(); - using var db = await _dbProvider.CreateDbContextAsync().ConfigureAwait(false); var query = db.MediaSegments @@ -164,8 +159,15 @@ public class MediaSegmentManager : IMediaSegmentManager query = query.Where(e => typeFilter.Contains(e.Type)); } - var providerIds = providers.Select(f => GetProviderId(f.Name)).ToArray(); - query = query.Where(e => providerIds.Contains(e.SegmentProviderId)); + if (filterByProvider) + { + var libraryOptions = _libraryManager.GetLibraryOptions(baseItem); + var providers = _segmentProviders + .Where(e => !libraryOptions.DisabledMediaSegmentProviders.Contains(GetProviderId(e.Name))) + .ToArray(); + var providerIds = providers.Select(f => GetProviderId(f.Name)).ToArray(); + query = query.Where(e => providerIds.Contains(e.SegmentProviderId)); + } return query .OrderBy(e => e.StartTicks) diff --git a/MediaBrowser.Controller/MediaSegements/IMediaSegmentManager.cs b/MediaBrowser.Controller/MediaSegements/IMediaSegmentManager.cs index 010d7edb4f..7980a38261 100644 --- a/MediaBrowser.Controller/MediaSegements/IMediaSegmentManager.cs +++ b/MediaBrowser.Controller/MediaSegements/IMediaSegmentManager.cs @@ -50,8 +50,9 @@ public interface IMediaSegmentManager /// /// The id of 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(Guid itemId, IEnumerable? typeFilter); + Task> GetSegmentsAsync(Guid itemId, IEnumerable? typeFilter, bool filterByProvider = true); /// /// Gets information about any media segments stored for the given itemId.