mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-06-09 17:28:48 +01:00
added new properties and endpoints for series special features
This commit is contained in:
@@ -172,6 +172,9 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
[ApiMember(Name = "AdjacentTo", Description = "Optional. Return items that are siblings of a supplied item.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
|
||||
public string AdjacentTo { get; set; }
|
||||
|
||||
[ApiMember(Name = "MinIndexNumber", Description = "Optional filter index number.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
|
||||
public int? MinIndexNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the order by.
|
||||
/// </summary>
|
||||
@@ -511,6 +514,12 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
items = items.Where(i => i.Id == previousId || i.Id == nextId);
|
||||
}
|
||||
|
||||
// Min index number
|
||||
if (request.MinIndexNumber.HasValue)
|
||||
{
|
||||
items = items.Where(i => i.IndexNumber.HasValue && i.IndexNumber.Value >= request.MinIndexNumber.Value);
|
||||
}
|
||||
|
||||
// Min official rating
|
||||
if (!string.IsNullOrEmpty(request.MinOfficialRating))
|
||||
{
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using MediaBrowser.Controller.Dto;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Movies;
|
||||
using MediaBrowser.Controller.Entities.TV;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Persistence;
|
||||
using MediaBrowser.Controller.Session;
|
||||
@@ -325,7 +326,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
/// Class GetSpecialFeatures
|
||||
/// </summary>
|
||||
[Route("/Users/{UserId}/Items/{Id}/SpecialFeatures", "GET")]
|
||||
[Api(Description = "Gets special features for a movie")]
|
||||
[Api(Description = "Gets special features for an item")]
|
||||
public class GetSpecialFeatures : IReturn<List<BaseItemDto>>
|
||||
{
|
||||
/// <summary>
|
||||
@@ -404,16 +405,40 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
// Get everything
|
||||
var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)).ToList();
|
||||
|
||||
var movie = (Movie)item;
|
||||
|
||||
var dtoBuilder = new DtoBuilder(Logger, _libraryManager, _userDataRepository, _itemRepo);
|
||||
|
||||
var tasks = movie.SpecialFeatureIds
|
||||
.Select(_itemRepo.RetrieveItem)
|
||||
.OrderBy(i => i.SortName)
|
||||
.Select(i => dtoBuilder.GetBaseItemDto(i, fields, user, movie));
|
||||
var movie = item as Movie;
|
||||
|
||||
return Task.WhenAll(tasks);
|
||||
// Get them from the db
|
||||
if (movie != null)
|
||||
{
|
||||
// Avoid implicitly captured closure
|
||||
var movie1 = movie;
|
||||
|
||||
var tasks = movie.SpecialFeatureIds
|
||||
.Select(_itemRepo.RetrieveItem)
|
||||
.OrderBy(i => i.SortName)
|
||||
.Select(i => dtoBuilder.GetBaseItemDto(i, fields, user, movie1));
|
||||
|
||||
return Task.WhenAll(tasks);
|
||||
}
|
||||
|
||||
var series = item as Series;
|
||||
|
||||
// Get them from the child tree
|
||||
if (series != null)
|
||||
{
|
||||
var tasks = series
|
||||
.RecursiveChildren
|
||||
.OfType<Episode>()
|
||||
.Where(i => i.ParentIndexNumber.HasValue && i.ParentIndexNumber.Value == 0)
|
||||
.OrderBy(i => i.SortName)
|
||||
.Select(i => dtoBuilder.GetBaseItemDto(i, fields, user));
|
||||
|
||||
return Task.WhenAll(tasks);
|
||||
}
|
||||
|
||||
throw new ArgumentException("The item does not support special features");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -589,7 +614,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
|
||||
return DtoBuilder.GetUserItemDataDto(data);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Posts the specified request.
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user