|
@@ -4,6 +4,7 @@ using System.ComponentModel.DataAnnotations;
|
|
|
using System.Linq;
|
|
|
using Jellyfin.Api.Constants;
|
|
|
using Jellyfin.Api.Extensions;
|
|
|
+using Jellyfin.Api.ModelBinders;
|
|
|
using Jellyfin.Data.Entities;
|
|
|
using MediaBrowser.Controller.Dto;
|
|
|
using MediaBrowser.Controller.Entities;
|
|
@@ -55,7 +56,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
/// <param name="id">The item id.</param>
|
|
|
/// <param name="userId">Optional. Filter by user id, and attach user data.</param>
|
|
|
/// <param name="limit">Optional. The maximum number of records to return.</param>
|
|
|
- /// <param name="fields">Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimeted. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.</param>
|
|
|
+ /// <param name="fields">Optional. Specify additional fields of information to return in the output.</param>
|
|
|
/// <param name="enableImages">Optional. Include image information in output.</param>
|
|
|
/// <param name="enableUserData">Optional. Include user data.</param>
|
|
|
/// <param name="imageTypeLimit">Optional. The max number of images to return, per image type.</param>
|
|
@@ -68,18 +69,17 @@ namespace Jellyfin.Api.Controllers
|
|
|
[FromRoute, Required] Guid id,
|
|
|
[FromQuery] Guid? userId,
|
|
|
[FromQuery] int? limit,
|
|
|
- [FromQuery] string? fields,
|
|
|
+ [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
|
|
[FromQuery] bool? enableImages,
|
|
|
[FromQuery] bool? enableUserData,
|
|
|
[FromQuery] int? imageTypeLimit,
|
|
|
- [FromQuery] ImageType[] enableImageTypes)
|
|
|
+ [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes)
|
|
|
{
|
|
|
var item = _libraryManager.GetItemById(id);
|
|
|
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
|
|
? _userManager.GetUserById(userId.Value)
|
|
|
: null;
|
|
|
- var dtoOptions = new DtoOptions()
|
|
|
- .AddItemFields(fields)
|
|
|
+ var dtoOptions = new DtoOptions { Fields = fields }
|
|
|
.AddClientFields(Request)
|
|
|
.AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes!);
|
|
|
var items = _musicManager.GetInstantMixFromItem(item, user, dtoOptions);
|
|
@@ -92,7 +92,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
/// <param name="id">The item id.</param>
|
|
|
/// <param name="userId">Optional. Filter by user id, and attach user data.</param>
|
|
|
/// <param name="limit">Optional. The maximum number of records to return.</param>
|
|
|
- /// <param name="fields">Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimeted. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.</param>
|
|
|
+ /// <param name="fields">Optional. Specify additional fields of information to return in the output.</param>
|
|
|
/// <param name="enableImages">Optional. Include image information in output.</param>
|
|
|
/// <param name="enableUserData">Optional. Include user data.</param>
|
|
|
/// <param name="imageTypeLimit">Optional. The max number of images to return, per image type.</param>
|
|
@@ -105,18 +105,17 @@ namespace Jellyfin.Api.Controllers
|
|
|
[FromRoute, Required] Guid id,
|
|
|
[FromQuery] Guid? userId,
|
|
|
[FromQuery] int? limit,
|
|
|
- [FromQuery] string? fields,
|
|
|
+ [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
|
|
[FromQuery] bool? enableImages,
|
|
|
[FromQuery] bool? enableUserData,
|
|
|
[FromQuery] int? imageTypeLimit,
|
|
|
- [FromQuery] ImageType[] enableImageTypes)
|
|
|
+ [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes)
|
|
|
{
|
|
|
var album = _libraryManager.GetItemById(id);
|
|
|
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
|
|
? _userManager.GetUserById(userId.Value)
|
|
|
: null;
|
|
|
- var dtoOptions = new DtoOptions()
|
|
|
- .AddItemFields(fields)
|
|
|
+ var dtoOptions = new DtoOptions { Fields = fields }
|
|
|
.AddClientFields(Request)
|
|
|
.AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes!);
|
|
|
var items = _musicManager.GetInstantMixFromItem(album, user, dtoOptions);
|
|
@@ -129,7 +128,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
/// <param name="id">The item id.</param>
|
|
|
/// <param name="userId">Optional. Filter by user id, and attach user data.</param>
|
|
|
/// <param name="limit">Optional. The maximum number of records to return.</param>
|
|
|
- /// <param name="fields">Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimeted. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.</param>
|
|
|
+ /// <param name="fields">Optional. Specify additional fields of information to return in the output.</param>
|
|
|
/// <param name="enableImages">Optional. Include image information in output.</param>
|
|
|
/// <param name="enableUserData">Optional. Include user data.</param>
|
|
|
/// <param name="imageTypeLimit">Optional. The max number of images to return, per image type.</param>
|
|
@@ -142,18 +141,17 @@ namespace Jellyfin.Api.Controllers
|
|
|
[FromRoute, Required] Guid id,
|
|
|
[FromQuery] Guid? userId,
|
|
|
[FromQuery] int? limit,
|
|
|
- [FromQuery] string? fields,
|
|
|
+ [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
|
|
[FromQuery] bool? enableImages,
|
|
|
[FromQuery] bool? enableUserData,
|
|
|
[FromQuery] int? imageTypeLimit,
|
|
|
- [FromQuery] ImageType[] enableImageTypes)
|
|
|
+ [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes)
|
|
|
{
|
|
|
var playlist = (Playlist)_libraryManager.GetItemById(id);
|
|
|
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
|
|
? _userManager.GetUserById(userId.Value)
|
|
|
: null;
|
|
|
- var dtoOptions = new DtoOptions()
|
|
|
- .AddItemFields(fields)
|
|
|
+ var dtoOptions = new DtoOptions { Fields = fields }
|
|
|
.AddClientFields(Request)
|
|
|
.AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes!);
|
|
|
var items = _musicManager.GetInstantMixFromItem(playlist, user, dtoOptions);
|
|
@@ -166,7 +164,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
/// <param name="name">The genre name.</param>
|
|
|
/// <param name="userId">Optional. Filter by user id, and attach user data.</param>
|
|
|
/// <param name="limit">Optional. The maximum number of records to return.</param>
|
|
|
- /// <param name="fields">Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimeted. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.</param>
|
|
|
+ /// <param name="fields">Optional. Specify additional fields of information to return in the output.</param>
|
|
|
/// <param name="enableImages">Optional. Include image information in output.</param>
|
|
|
/// <param name="enableUserData">Optional. Include user data.</param>
|
|
|
/// <param name="imageTypeLimit">Optional. The max number of images to return, per image type.</param>
|
|
@@ -179,17 +177,16 @@ namespace Jellyfin.Api.Controllers
|
|
|
[FromRoute, Required] string name,
|
|
|
[FromQuery] Guid? userId,
|
|
|
[FromQuery] int? limit,
|
|
|
- [FromQuery] string? fields,
|
|
|
+ [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
|
|
[FromQuery] bool? enableImages,
|
|
|
[FromQuery] bool? enableUserData,
|
|
|
[FromQuery] int? imageTypeLimit,
|
|
|
- [FromQuery] ImageType[] enableImageTypes)
|
|
|
+ [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes)
|
|
|
{
|
|
|
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
|
|
? _userManager.GetUserById(userId.Value)
|
|
|
: null;
|
|
|
- var dtoOptions = new DtoOptions()
|
|
|
- .AddItemFields(fields)
|
|
|
+ var dtoOptions = new DtoOptions { Fields = fields }
|
|
|
.AddClientFields(Request)
|
|
|
.AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes!);
|
|
|
var items = _musicManager.GetInstantMixFromGenres(new[] { name }, user, dtoOptions);
|
|
@@ -202,7 +199,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
/// <param name="id">The item id.</param>
|
|
|
/// <param name="userId">Optional. Filter by user id, and attach user data.</param>
|
|
|
/// <param name="limit">Optional. The maximum number of records to return.</param>
|
|
|
- /// <param name="fields">Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimeted. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.</param>
|
|
|
+ /// <param name="fields">Optional. Specify additional fields of information to return in the output.</param>
|
|
|
/// <param name="enableImages">Optional. Include image information in output.</param>
|
|
|
/// <param name="enableUserData">Optional. Include user data.</param>
|
|
|
/// <param name="imageTypeLimit">Optional. The max number of images to return, per image type.</param>
|
|
@@ -215,18 +212,17 @@ namespace Jellyfin.Api.Controllers
|
|
|
[FromRoute, Required] Guid id,
|
|
|
[FromQuery] Guid? userId,
|
|
|
[FromQuery] int? limit,
|
|
|
- [FromQuery] string? fields,
|
|
|
+ [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
|
|
[FromQuery] bool? enableImages,
|
|
|
[FromQuery] bool? enableUserData,
|
|
|
[FromQuery] int? imageTypeLimit,
|
|
|
- [FromQuery] ImageType[] enableImageTypes)
|
|
|
+ [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes)
|
|
|
{
|
|
|
var item = _libraryManager.GetItemById(id);
|
|
|
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
|
|
? _userManager.GetUserById(userId.Value)
|
|
|
: null;
|
|
|
- var dtoOptions = new DtoOptions()
|
|
|
- .AddItemFields(fields)
|
|
|
+ var dtoOptions = new DtoOptions { Fields = fields }
|
|
|
.AddClientFields(Request)
|
|
|
.AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes!);
|
|
|
var items = _musicManager.GetInstantMixFromItem(item, user, dtoOptions);
|
|
@@ -239,7 +235,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
/// <param name="id">The item id.</param>
|
|
|
/// <param name="userId">Optional. Filter by user id, and attach user data.</param>
|
|
|
/// <param name="limit">Optional. The maximum number of records to return.</param>
|
|
|
- /// <param name="fields">Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimeted. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.</param>
|
|
|
+ /// <param name="fields">Optional. Specify additional fields of information to return in the output.</param>
|
|
|
/// <param name="enableImages">Optional. Include image information in output.</param>
|
|
|
/// <param name="enableUserData">Optional. Include user data.</param>
|
|
|
/// <param name="imageTypeLimit">Optional. The max number of images to return, per image type.</param>
|
|
@@ -252,18 +248,17 @@ namespace Jellyfin.Api.Controllers
|
|
|
[FromRoute, Required] Guid id,
|
|
|
[FromQuery] Guid? userId,
|
|
|
[FromQuery] int? limit,
|
|
|
- [FromQuery] string? fields,
|
|
|
+ [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
|
|
[FromQuery] bool? enableImages,
|
|
|
[FromQuery] bool? enableUserData,
|
|
|
[FromQuery] int? imageTypeLimit,
|
|
|
- [FromQuery] ImageType[] enableImageTypes)
|
|
|
+ [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes)
|
|
|
{
|
|
|
var item = _libraryManager.GetItemById(id);
|
|
|
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
|
|
? _userManager.GetUserById(userId.Value)
|
|
|
: null;
|
|
|
- var dtoOptions = new DtoOptions()
|
|
|
- .AddItemFields(fields)
|
|
|
+ var dtoOptions = new DtoOptions { Fields = fields }
|
|
|
.AddClientFields(Request)
|
|
|
.AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes!);
|
|
|
var items = _musicManager.GetInstantMixFromItem(item, user, dtoOptions);
|
|
@@ -276,7 +271,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
/// <param name="id">The item id.</param>
|
|
|
/// <param name="userId">Optional. Filter by user id, and attach user data.</param>
|
|
|
/// <param name="limit">Optional. The maximum number of records to return.</param>
|
|
|
- /// <param name="fields">Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimeted. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines, TrailerUrls.</param>
|
|
|
+ /// <param name="fields">Optional. Specify additional fields of information to return in the output.</param>
|
|
|
/// <param name="enableImages">Optional. Include image information in output.</param>
|
|
|
/// <param name="enableUserData">Optional. Include user data.</param>
|
|
|
/// <param name="imageTypeLimit">Optional. The max number of images to return, per image type.</param>
|
|
@@ -289,18 +284,17 @@ namespace Jellyfin.Api.Controllers
|
|
|
[FromRoute, Required] Guid id,
|
|
|
[FromQuery] Guid? userId,
|
|
|
[FromQuery] int? limit,
|
|
|
- [FromQuery] string? fields,
|
|
|
+ [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ItemFields[] fields,
|
|
|
[FromQuery] bool? enableImages,
|
|
|
[FromQuery] bool? enableUserData,
|
|
|
[FromQuery] int? imageTypeLimit,
|
|
|
- [FromQuery] ImageType[] enableImageTypes)
|
|
|
+ [FromQuery, ModelBinder(typeof(CommaDelimitedArrayModelBinder))] ImageType[] enableImageTypes)
|
|
|
{
|
|
|
var item = _libraryManager.GetItemById(id);
|
|
|
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
|
|
? _userManager.GetUserById(userId.Value)
|
|
|
: null;
|
|
|
- var dtoOptions = new DtoOptions()
|
|
|
- .AddItemFields(fields)
|
|
|
+ var dtoOptions = new DtoOptions { Fields = fields }
|
|
|
.AddClientFields(Request)
|
|
|
.AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes!);
|
|
|
var items = _musicManager.GetInstantMixFromItem(item, user, dtoOptions);
|
|
@@ -316,9 +310,9 @@ namespace Jellyfin.Api.Controllers
|
|
|
TotalRecordCount = list.Count
|
|
|
};
|
|
|
|
|
|
- if (limit.HasValue)
|
|
|
+ if (limit.HasValue && limit < list.Count)
|
|
|
{
|
|
|
- list = list.Take(limit.Value).ToList();
|
|
|
+ list = list.GetRange(0, limit.Value);
|
|
|
}
|
|
|
|
|
|
var returnList = _dtoService.GetBaseItemDtos(list, dtoOptions, user);
|