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.