Added parameter to enable or disable library filter

This commit is contained in:
JPVenson 2024-10-30 10:09:39 +00:00
parent 312ff4f3d8
commit c08d1d5b7f
2 changed files with 12 additions and 9 deletions

View File

@ -139,7 +139,7 @@ public class MediaSegmentManager : IMediaSegmentManager
} }
/// <inheritdoc /> /// <inheritdoc />
public async Task<IEnumerable<MediaSegmentDto>> GetSegmentsAsync(Guid itemId, IEnumerable<MediaSegmentType>? typeFilter) public async Task<IEnumerable<MediaSegmentDto>> GetSegmentsAsync(Guid itemId, IEnumerable<MediaSegmentType>? typeFilter, bool filterByProvider = true)
{ {
var baseItem = _libraryManager.GetItemById(itemId); var baseItem = _libraryManager.GetItemById(itemId);
@ -149,11 +149,6 @@ public class MediaSegmentManager : IMediaSegmentManager
return []; 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); using var db = await _dbProvider.CreateDbContextAsync().ConfigureAwait(false);
var query = db.MediaSegments var query = db.MediaSegments
@ -164,8 +159,15 @@ public class MediaSegmentManager : IMediaSegmentManager
query = query.Where(e => typeFilter.Contains(e.Type)); query = query.Where(e => typeFilter.Contains(e.Type));
} }
var providerIds = providers.Select(f => GetProviderId(f.Name)).ToArray(); if (filterByProvider)
query = query.Where(e => providerIds.Contains(e.SegmentProviderId)); {
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 return query
.OrderBy(e => e.StartTicks) .OrderBy(e => e.StartTicks)

View File

@ -50,8 +50,9 @@ public interface IMediaSegmentManager
/// </summary> /// </summary>
/// <param name="itemId">The id of the <see cref="BaseItem"/>.</param> /// <param name="itemId">The id of the <see cref="BaseItem"/>.</param>
/// <param name="typeFilter">filteres all media segments of the given type to be included. If null all types are included.</param> /// <param name="typeFilter">filteres all media segments of the given type to be included. If null all types are included.</param>
/// <param name="filterByProvider">When set filteres the segments to only return those that which providers are currently enabled on their library.</param>
/// <returns>An enumerator of <see cref="MediaSegmentDto"/>'s.</returns> /// <returns>An enumerator of <see cref="MediaSegmentDto"/>'s.</returns>
Task<IEnumerable<MediaSegmentDto>> GetSegmentsAsync(Guid itemId, IEnumerable<MediaSegmentType>? typeFilter); Task<IEnumerable<MediaSegmentDto>> GetSegmentsAsync(Guid itemId, IEnumerable<MediaSegmentType>? typeFilter, bool filterByProvider = true);
/// <summary> /// <summary>
/// Gets information about any media segments stored for the given itemId. /// Gets information about any media segments stored for the given itemId.