diff --git a/CinemaJellyfin/CinemaFilterFolder.cs b/CinemaJellyfin/CinemaFilterFolder.cs index 68a2cae..e0d9b3d 100644 --- a/CinemaJellyfin/CinemaFilterFolder.cs +++ b/CinemaJellyfin/CinemaFilterFolder.cs @@ -296,9 +296,10 @@ public abstract class CinemaFilterFolder : Folder //item.ParentIndexNumber = info.ParentIndexNumber; item.PremiereDate = media.info_labels?.premiered; item.ProductionYear = media.info_labels?.year; - item.ProviderIds = new Dictionary(); - if (media.services != null) + if (media.services != null) { + item.ProviderIds = new Dictionary(); ConvertProviderIds(media.services, item.ProviderIds); + } //item.OfficialRating = info.OfficialRating; item.DateCreated = media.info_labels?.dateadded ?? DateTime.UtcNow; //item.Tags = info.Tags.ToArray(); @@ -324,12 +325,6 @@ public abstract class CinemaFilterFolder : Folder } } - // Identify the item as it originates from Cinema - // Note: This is getting lost in persisted items - if (item.ProviderIds == null) - item.ProviderIds = new Dictionary(); - item.ProviderIds[CinemaPlugin.CinemaProviderName] = ""; - // Indicate just HTTP CinemaMediaSourceManager and CinemaMediaSourceController will handle the rest item.Path = "https://a/b"; @@ -357,7 +352,7 @@ public abstract class CinemaFilterFolder : Folder hasSeries.SeriesName = info.SeriesName; }*/ - item.ExternalId = csId; + item.ExternalId = CinemaIdToExternalId(csId); /* if (item is Audio channelAudioItem) @@ -485,4 +480,22 @@ public abstract class CinemaFilterFolder : Folder item.Id = id; return item; } + + internal static string CinemaIdToExternalId(string csId) { + return CinemaPlugin.CinemaExtIdPrefix + csId; + } + + internal static bool IsCinemaExternalId(string? externalId) { + return externalId != null && externalId.StartsWith(CinemaPlugin.CinemaExtIdPrefix); + } + + internal static bool TryGetCinemaIdFromExternalId(string? externalId, [NotNullWhen(true)] out string? csId) { + if (IsCinemaExternalId(externalId)) { + csId = externalId!.Substring(CinemaPlugin.CinemaExtIdPrefix.Length); + return true; + } else { + csId = null; + return false; + } + } } \ No newline at end of file diff --git a/CinemaJellyfin/CinemaMediaSourceController.cs b/CinemaJellyfin/CinemaMediaSourceController.cs index 1366ace..4cb5202 100644 --- a/CinemaJellyfin/CinemaMediaSourceController.cs +++ b/CinemaJellyfin/CinemaMediaSourceController.cs @@ -28,7 +28,7 @@ public class CinemaMediaSourceController : ControllerBase [HttpGet("{provider}/{ident}/link/{name?}")] [ProducesResponseType(StatusCodes.Status302Found)] [ProducesResponseType(StatusCodes.Status404NotFound)] - public async Task GetExternalIdInfos( + public async Task GenerateCinemaLink( [FromRoute, Required] string provider, [FromRoute, Required] string ident, [FromRoute, Optional] string? name, diff --git a/CinemaJellyfin/CinemaMediaSourceManager.cs b/CinemaJellyfin/CinemaMediaSourceManager.cs index 39bbaa4..211e156 100644 --- a/CinemaJellyfin/CinemaMediaSourceManager.cs +++ b/CinemaJellyfin/CinemaMediaSourceManager.cs @@ -125,19 +125,6 @@ public class CinemaMediaSourceManager : IMediaSourceManager public List GetMediaStreams(Guid itemId) { return _inner.GetMediaStreams(itemId); - /* - // Intercept for CinemaItems - Video? item = _libraryManager.GetItemById