diff options
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/MediaSegements/IMediaSegmentManager.cs | 17 | ||||
| -rw-r--r-- | MediaBrowser.Controller/MediaSegements/IMediaSegmentProvider.cs | 36 |
2 files changed, 53 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/MediaSegements/IMediaSegmentManager.cs b/MediaBrowser.Controller/MediaSegements/IMediaSegmentManager.cs index 67384f6f6..010d7edb4 100644 --- a/MediaBrowser.Controller/MediaSegements/IMediaSegmentManager.cs +++ b/MediaBrowser.Controller/MediaSegements/IMediaSegmentManager.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Threading; using System.Threading.Tasks; using Jellyfin.Data.Entities; using Jellyfin.Data.Enums; @@ -14,6 +15,15 @@ namespace MediaBrowser.Controller; public interface IMediaSegmentManager { /// <summary> + /// Uses all segment providers enabled for the <see cref="BaseItem"/>'s library to get the Media Segments. + /// </summary> + /// <param name="baseItem">The Item to evaluate.</param> + /// <param name="overwrite">If set, will remove existing segments and replace it with new ones otherwise will check for existing segments and if found any, stops.</param> + /// <param name="cancellationToken">stop request token.</param> + /// <returns>A task that indicates the Operation is finished.</returns> + Task RunSegmentPluginProviders(BaseItem baseItem, bool overwrite, CancellationToken cancellationToken); + + /// <summary> /// Returns if this item supports media segments. /// </summary> /// <param name="baseItem">The base Item to check.</param> @@ -50,4 +60,11 @@ public interface IMediaSegmentManager /// <returns>True if there are any segments stored for the item, otherwise false.</returns> /// TODO: this should be async but as the only caller BaseItem.GetVersionInfo isn't async, this is also not. Venson. bool HasSegments(Guid itemId); + + /// <summary> + /// Gets a list of all registered Segment Providers and their IDs. + /// </summary> + /// <param name="item">The media item that should be tested for providers.</param> + /// <returns>A list of all providers for the tested item.</returns> + IEnumerable<(string Name, string Id)> GetSupportedProviders(BaseItem item); } diff --git a/MediaBrowser.Controller/MediaSegements/IMediaSegmentProvider.cs b/MediaBrowser.Controller/MediaSegements/IMediaSegmentProvider.cs new file mode 100644 index 000000000..39bb58bef --- /dev/null +++ b/MediaBrowser.Controller/MediaSegements/IMediaSegmentProvider.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Model; +using MediaBrowser.Model.MediaSegments; + +namespace MediaBrowser.Controller; + +/// <summary> +/// Provides methods for Obtaining the Media Segments from an Item. +/// </summary> +public interface IMediaSegmentProvider +{ + /// <summary> + /// Gets the provider name. + /// </summary> + string Name { get; } + + /// <summary> + /// Enumerates all Media Segments from an Media Item. + /// </summary> + /// <param name="request">Arguments to enumerate MediaSegments.</param> + /// <param name="cancellationToken">Abort token.</param> + /// <returns>A list of all MediaSegments found from this provider.</returns> + Task<IReadOnlyList<MediaSegmentDto>> GetMediaSegments(MediaSegmentGenerationRequest request, CancellationToken cancellationToken); + + /// <summary> + /// Should return support state for the given item. + /// </summary> + /// <param name="item">The base item to extract segments from.</param> + /// <returns>True if item is supported, otherwise false.</returns> + ValueTask<bool> Supports(BaseItem item); +} |
