Anime folder works. Concert folder and search works. Fix infinite loop in item listing (SupportsInheritedParentImages).

This commit is contained in:
2024-12-18 01:41:10 +01:00
parent fe3f945450
commit 0756afae86
4 changed files with 13 additions and 6 deletions

View File

@@ -11,9 +11,9 @@ public sealed class CinemaAnimeFolder : CinemaRootFolder
{
}
public override CollectionType? CollectionType => Data.Enums.CollectionType.movies;
public override CollectionType? CollectionType => Data.Enums.CollectionType.tvshows;
public override BaseItemKind ClientType => BaseItemKind.Movie;
public override BaseItemKind ClientType => BaseItemKind.Series;
public override ItemType ItemType => ItemType.Anime;
@@ -28,6 +28,6 @@ public sealed class CinemaAnimeFolder : CinemaRootFolder
public override bool TryCreateMediaItem(MediaSource? media, string csId, BaseItem parentFolder, [NotNullWhen(true)] out BaseItem? item)
{
return media.TryCreateMediaItem<CinemaTvSeries>(csId, parentFolder, false, out item);
return media.TryCreateMediaItem<CinemaTvSeries>(csId, parentFolder, true, out item);
}
}

View File

@@ -13,7 +13,7 @@ public sealed class CinemaConcertFolder : CinemaRootFolder
public override CollectionType? CollectionType => Data.Enums.CollectionType.musicvideos;
public override BaseItemKind ClientType => BaseItemKind.MusicVideo;
public override BaseItemKind ClientType => BaseItemKind.Video;
public override ItemType ItemType => ItemType.Concert;

View File

@@ -61,13 +61,19 @@ public abstract class CinemaFilterFolder : Folder
/// <remarks>Implementation shall just choose proper container type and call <see cref="CinemaQueryExtensions.TryCreateMediaItem"/></remarks>
public abstract bool TryCreateMediaItem(MediaSource? media, string csId, BaseItem parentFolder, [NotNullWhen(true)] out BaseItem? item);
/// <summary>
/// Prevent infinite loop in DtoService.AddInheritedImages
/// </summary>
public override bool SupportsInheritedParentImages => false;
/// <summary>
/// Gets static as well as dynamic items from Stream Cinema database.
/// </summary>
protected sealed override QueryResult<BaseItem> GetItemsInternal(InternalItemsQuery query)
{
if ((query.IncludeItemTypes != null && !query.IncludeItemTypes.Contains(ClientType))
|| (query.ExcludeItemTypes != null && query.ExcludeItemTypes.Contains(ClientType)))
if (query.Recursive &&
((query.IncludeItemTypes != null && !query.IncludeItemTypes.Contains(ClientType) && (ClientType != BaseItemKind.Video || !query.MediaTypes.Contains(MediaType.Video)))
|| (query.ExcludeItemTypes != null && query.ExcludeItemTypes.Contains(ClientType))))
// None of our items can match
return new QueryResult<BaseItem>() { Items = new List<BaseItem>() };

View File

@@ -211,6 +211,7 @@ sealed class CinemaMediaSourceManager : IMediaSourceManager
{
case CinemaMovie movie: items = GetVideoVersionsEnumerate(csId!, movie, videoPrimary!, ver.Versions); sortByPrefs = false; break;
case CinemaEpisode episode: items = GetVideoVersionsEnumerate(csId!, episode, videoPrimary!, ver.Versions); sortByPrefs = true; break;
case MusicVideo musicVideo: items = GetVideoVersionsEnumerate(csId!, musicVideo, videoPrimary!, ver.Versions); sortByPrefs = false; break;
default: throw new NotSupportedException(string.Format("BaseItem type '{0}' not supported in CinemaMediaSources.", video.GetType().Name));
}