2
0
Эх сурвалжийг харах

Fixed disabled providers not beeing returned

JPVenson 7 сар өмнө
parent
commit
312ff4f3d8

+ 16 - 0
Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs

@@ -141,6 +141,19 @@ public class MediaSegmentManager : IMediaSegmentManager
     /// <inheritdoc />
     public async Task<IEnumerable<MediaSegmentDto>> GetSegmentsAsync(Guid itemId, IEnumerable<MediaSegmentType>? 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()