diff --git a/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs b/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs index d641f521b9..9d38167ac6 100644 --- a/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs +++ b/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs @@ -141,6 +141,19 @@ public class MediaSegmentManager : IMediaSegmentManager /// public async Task> GetSegmentsAsync(Guid itemId, IEnumerable? typeFilter) { + var baseItem = _libraryManager.GetItemById(itemId); + + if (baseItem is null) + { + _logger.LogError("Tried to request segments for an invalid item"); + 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 @@ -151,6 +164,9 @@ 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)); + return query .OrderBy(e => e.StartTicks) .AsNoTracking()