Files
stream-cinema/CinemaJellyfin/CinemaSeason.cs
2025-04-03 20:51:17 +00:00

76 lines
2.0 KiB
C#

using System.Globalization;
using CinemaLib.API;
using Jellyfin.Database.Implementations.Entities;
using Jellyfin.Data.Enums;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Model.Querying;
namespace Jellyfin.Plugin.Cinema;
/// <summary>
/// Season folder item from Cinema.
/// </summary>
public sealed class CinemaSeason : Season, ICinemaChildrenCount
{
private CinemaSubfolderHelper _helper;
public CinemaSeason()
{
this._helper = new CinemaSubfolderHelper(this, FilterSortBy.Episode);
}
public override List<string> GetUserDataKeys()
{
return new List<string>() { ExternalId };
}
#region ICinemaChildrenCountMembers
public int ChildrenCount
{
get => _helper.ChildrenCount;
set => _helper.ChildrenCount = value;
}
public int TotalChildrenCount
{
get => _helper.TotalChildrenCount;
set => _helper.TotalChildrenCount = value;
}
#endregion
public sealed override string GetClientTypeName() => BaseItemKind.Season.ToString();
public override int GetChildCount(User user)
{
return _helper.ChildrenCount;
}
public override int GetRecursiveChildCount(User user)
{
return _helper.TotalChildrenCount;
}
/// <summary>
/// Always false as it causes iteration of all our items that degrades performance
/// in the CinemaTvShowsFolder.
/// </summary>
public override bool SupportsPlayedStatus => false;
/// <summary>
/// Let the hack in <see cref="CinemaLibraryManager"/> find us.
/// </summary>
public override string CreatePresentationUniqueKey() => Id.ToString("N", CultureInfo.InvariantCulture);
public override List<BaseItem> GetChildren(User user, bool includeLinkedChildren, InternalItemsQuery query)
{
return (List<BaseItem>)_helper.GetItemsInternal<Folder>(query, false).Items;
}
protected override QueryResult<BaseItem> GetItemsInternal(InternalItemsQuery query)
{
return _helper.GetItemsInternal<Folder>(query, false);
}
}