All checks were successful
continuous-integration/drone/push Build is passing
68 lines
2.1 KiB
C#
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;
|
|
}
|
|
} |