Files
stream-cinema/StreamCinemaJellyfin/StreamCinemaVideoExtensions.cs
Roman Vaníček 4b92508b10
Some checks failed
continuous-integration/drone/push Build is failing
Movie media sources in progress
2024-11-27 21:03:09 +01:00

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);
}
}