36 lines
1.4 KiB
C#
36 lines
1.4 KiB
C#
|
|
using MediaBrowser.Controller.Entities;
|
|
using MediaBrowser.Model.Dto;
|
|
|
|
namespace Jellyfin.Plugin.StreamCinema;
|
|
|
|
static class StreamCinemaVideoExtensions
|
|
{
|
|
public static IEnumerable<(BaseItem Item, MediaSourceType MediaSourceType)>? VideoGetAllItemsForMediaSources<T>(this T @this)
|
|
where T : Video, new()
|
|
{
|
|
// Non-primary version items use default implementation
|
|
if (!string.IsNullOrEmpty(@this.PrimaryVersionId))
|
|
{
|
|
return null; // means call base.GetAllItemsForMediaSources
|
|
}
|
|
|
|
// Our media source manager must be present
|
|
StreamCinemaMediaSourceManager? msm;
|
|
if (!StreamCinemaMediaSourceManager.TryGetInstance(out msm))
|
|
return Enumerable.Empty<(BaseItem Item, MediaSourceType MediaSourceType)>();
|
|
|
|
// Generate item for each StreamCinemaLib.API.Stream. Obtaining the file sub-streams themselves
|
|
// is intercepted in StreamCinemaMediaSourceManager.GetMediaStreams
|
|
return GetAllItemsForMediaSourcesEnumerate(@this, msm);
|
|
}
|
|
|
|
private static IEnumerable<(BaseItem Item, MediaSourceType MediaSourceType)> GetAllItemsForMediaSourcesEnumerate<T>(T @this, StreamCinemaMediaSourceManager msm)
|
|
where T : Video, new()
|
|
{
|
|
IEnumerable<T>? versions = msm.GetVideoVersions(@this, default).GetAwaiter().GetResult();
|
|
if (versions != null)
|
|
foreach (T i in versions)
|
|
yield return (i, MediaSourceType.Grouping);
|
|
}
|
|
} |