Files
stream-cinema/CinemaJellyfin/CinemaMusicAlbum.cs
Roman Vaníček 591a92f6aa
All checks were successful
continuous-integration/drone/push Build is passing
TV Series playback works
2024-12-02 00:13:40 +01:00

68 lines
2.1 KiB
C#

using CinemaLib.API;
using Jellyfin.Data.Entities;
using Jellyfin.Data.Enums;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Model.Querying;
namespace Jellyfin.Plugin.Cinema;
/// <summary>
/// Music album folder item from Cinema.
/// </summary>
public sealed class CinemaMusicAlbum : MusicAlbum
{
public sealed override string GetClientTypeName() => BaseItemKind.Series.ToString();
public override int GetChildCount(User user)
{
return base.GetChildCount(user);
}
public override int GetRecursiveChildCount(User user)
{
return base.GetRecursiveChildCount(user);
}
public override List<BaseItem> GetChildren(User user, bool includeLinkedChildren, InternalItemsQuery query)
{
return (List<BaseItem>)GetItemsInternal(query).Items;
}
protected override QueryResult<BaseItem> GetItemsInternal(InternalItemsQuery query)
{
int offset = query.StartIndex ?? 0;
int limit = query.Limit ?? 0;
List<BaseItem> items = new List<BaseItem>();
QueryResult<BaseItem> result = new QueryResult<BaseItem>() { Items = items, StartIndex = offset };
FilterSortBy sortBy;
ItemOrder sortDir;
if (query.OrderBy.Count == 0)
{
sortBy = FilterSortBy.Episode;
sortDir = ItemOrder.Ascending;
}
else
{
(ItemSortBy sortByJ, SortOrder sortDirJ) = query.OrderBy.First();
sortBy = sortByJ.ToCinema();
sortDir = sortDirJ == SortOrder.Ascending ? ItemOrder.Ascending : ItemOrder.Descending;
}
FilterResponse? filterRes = Metadata.ChildrenAsync(query.SearchTerm ?? "", order: sortDir, sort: sortBy, offset: offset, limit: limit).GetAwaiter().GetResult();
if (filterRes != null && filterRes.hits != null && filterRes.hits.hits != null)
{
if (filterRes.hits.total != null)
result.TotalRecordCount = (int)filterRes.hits.total.value;
foreach (var i in filterRes.hits.hits)
{
if (i._source.TryCreateMediaItem<Folder>(i._id, this, false, out BaseItem? a))
items.Add(a);
}
}
return result;
}
}