< Summary - Jellyfin

Information
Class: Jellyfin.Api.Controllers.InstantMixController
Assembly: Jellyfin.Api
File(s): /srv/git/jellyfin/Jellyfin.Api/Controllers/InstantMixController.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 99
Coverable lines: 99
Total lines: 410
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 30
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

0255075100

Metrics

File(s)

/srv/git/jellyfin/Jellyfin.Api/Controllers/InstantMixController.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Collections.Immutable;
 4using System.ComponentModel.DataAnnotations;
 5using System.Linq;
 6using Jellyfin.Api.Extensions;
 7using Jellyfin.Api.Helpers;
 8using Jellyfin.Api.ModelBinders;
 9using Jellyfin.Database.Implementations.Entities;
 10using Jellyfin.Extensions;
 11using MediaBrowser.Controller.Dto;
 12using MediaBrowser.Controller.Entities;
 13using MediaBrowser.Controller.Library;
 14using MediaBrowser.Controller.Playlists;
 15using MediaBrowser.Model.Dto;
 16using MediaBrowser.Model.Entities;
 17using MediaBrowser.Model.Querying;
 18using Microsoft.AspNetCore.Authorization;
 19using Microsoft.AspNetCore.Http;
 20using Microsoft.AspNetCore.Mvc;
 21
 22namespace Jellyfin.Api.Controllers;
 23
 24/// <summary>
 25/// The instant mix controller.
 26/// </summary>
 27[Route("")]
 28[Authorize]
 29public class InstantMixController : BaseJellyfinApiController
 30{
 31    private readonly IUserManager _userManager;
 32    private readonly IDtoService _dtoService;
 33    private readonly ILibraryManager _libraryManager;
 34    private readonly IMusicManager _musicManager;
 35
 36    /// <summary>
 37    /// Initializes a new instance of the <see cref="InstantMixController"/> class.
 38    /// </summary>
 39    /// <param name="userManager">Instance of the <see cref="IUserManager"/> interface.</param>
 40    /// <param name="dtoService">Instance of the <see cref="IDtoService"/> interface.</param>
 41    /// <param name="musicManager">Instance of the <see cref="IMusicManager"/> interface.</param>
 42    /// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
 043    public InstantMixController(
 044        IUserManager userManager,
 045        IDtoService dtoService,
 046        IMusicManager musicManager,
 047        ILibraryManager libraryManager)
 48    {
 049        _userManager = userManager;
 050        _dtoService = dtoService;
 051        _musicManager = musicManager;
 052        _libraryManager = libraryManager;
 053    }
 54
 55    /// <summary>
 56    /// Creates an instant playlist based on a given song.
 57    /// </summary>
 58    /// <param name="itemId">The item id.</param>
 59    /// <param name="userId">Optional. Filter by user id, and attach user data.</param>
 60    /// <param name="limit">Optional. The maximum number of records to return.</param>
 61    /// <param name="fields">Optional. Specify additional fields of information to return in the output.</param>
 62    /// <param name="enableImages">Optional. Include image information in output.</param>
 63    /// <param name="enableUserData">Optional. Include user data.</param>
 64    /// <param name="imageTypeLimit">Optional. The max number of images to return, per image type.</param>
 65    /// <param name="enableImageTypes">Optional. The image types to include in the output.</param>
 66    /// <response code="200">Instant playlist returned.</response>
 67    /// <response code="404">Item not found.</response>
 68    /// <returns>A <see cref="QueryResult{BaseItemDto}"/> with the playlist items.</returns>
 69    [HttpGet("Songs/{itemId}/InstantMix")]
 70    [ProducesResponseType(StatusCodes.Status200OK)]
 71    [ProducesResponseType(StatusCodes.Status404NotFound)]
 72    public ActionResult<QueryResult<BaseItemDto>> GetInstantMixFromSong(
 73        [FromRoute, Required] Guid itemId,
 74        [FromQuery] Guid? userId,
 75        [FromQuery] int? limit,
 76        [FromQuery, ModelBinder(typeof(CommaDelimitedCollectionModelBinder))] ItemFields[] fields,
 77        [FromQuery] bool? enableImages,
 78        [FromQuery] bool? enableUserData,
 79        [FromQuery] int? imageTypeLimit,
 80        [FromQuery, ModelBinder(typeof(CommaDelimitedCollectionModelBinder))] ImageType[] enableImageTypes)
 81    {
 082        userId = RequestHelpers.GetUserId(User, userId);
 083        var user = userId.IsNullOrEmpty()
 084            ? null
 085            : _userManager.GetUserById(userId.Value);
 086        var item = _libraryManager.GetItemById<BaseItem>(itemId, user);
 087        if (item is null)
 88        {
 089            return NotFound();
 90        }
 91
 092        var dtoOptions = new DtoOptions { Fields = fields }
 093            .AddClientFields(User)
 094            .AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes);
 095        var items = _musicManager.GetInstantMixFromItem(item, user, dtoOptions);
 096        return GetResult(items, user, limit, dtoOptions);
 97    }
 98
 99    /// <summary>
 100    /// Creates an instant playlist based on a given album.
 101    /// </summary>
 102    /// <param name="itemId">The item id.</param>
 103    /// <param name="userId">Optional. Filter by user id, and attach user data.</param>
 104    /// <param name="limit">Optional. The maximum number of records to return.</param>
 105    /// <param name="fields">Optional. Specify additional fields of information to return in the output.</param>
 106    /// <param name="enableImages">Optional. Include image information in output.</param>
 107    /// <param name="enableUserData">Optional. Include user data.</param>
 108    /// <param name="imageTypeLimit">Optional. The max number of images to return, per image type.</param>
 109    /// <param name="enableImageTypes">Optional. The image types to include in the output.</param>
 110    /// <response code="200">Instant playlist returned.</response>
 111    /// <response code="404">Item not found.</response>
 112    /// <returns>A <see cref="QueryResult{BaseItemDto}"/> with the playlist items.</returns>
 113    [HttpGet("Albums/{itemId}/InstantMix")]
 114    [ProducesResponseType(StatusCodes.Status200OK)]
 115    [ProducesResponseType(StatusCodes.Status404NotFound)]
 116    public ActionResult<QueryResult<BaseItemDto>> GetInstantMixFromAlbum(
 117        [FromRoute, Required] Guid itemId,
 118        [FromQuery] Guid? userId,
 119        [FromQuery] int? limit,
 120        [FromQuery, ModelBinder(typeof(CommaDelimitedCollectionModelBinder))] ItemFields[] fields,
 121        [FromQuery] bool? enableImages,
 122        [FromQuery] bool? enableUserData,
 123        [FromQuery] int? imageTypeLimit,
 124        [FromQuery, ModelBinder(typeof(CommaDelimitedCollectionModelBinder))] ImageType[] enableImageTypes)
 125    {
 0126        userId = RequestHelpers.GetUserId(User, userId);
 0127        var user = userId.IsNullOrEmpty()
 0128            ? null
 0129            : _userManager.GetUserById(userId.Value);
 0130        var item = _libraryManager.GetItemById<BaseItem>(itemId, user);
 0131        if (item is null)
 132        {
 0133            return NotFound();
 134        }
 135
 0136        var dtoOptions = new DtoOptions { Fields = fields }
 0137            .AddClientFields(User)
 0138            .AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes);
 0139        var items = _musicManager.GetInstantMixFromItem(item, user, dtoOptions);
 0140        return GetResult(items, user, limit, dtoOptions);
 141    }
 142
 143    /// <summary>
 144    /// Creates an instant playlist based on a given playlist.
 145    /// </summary>
 146    /// <param name="itemId">The item id.</param>
 147    /// <param name="userId">Optional. Filter by user id, and attach user data.</param>
 148    /// <param name="limit">Optional. The maximum number of records to return.</param>
 149    /// <param name="fields">Optional. Specify additional fields of information to return in the output.</param>
 150    /// <param name="enableImages">Optional. Include image information in output.</param>
 151    /// <param name="enableUserData">Optional. Include user data.</param>
 152    /// <param name="imageTypeLimit">Optional. The max number of images to return, per image type.</param>
 153    /// <param name="enableImageTypes">Optional. The image types to include in the output.</param>
 154    /// <response code="200">Instant playlist returned.</response>
 155    /// <response code="404">Item not found.</response>
 156    /// <returns>A <see cref="QueryResult{BaseItemDto}"/> with the playlist items.</returns>
 157    [HttpGet("Playlists/{itemId}/InstantMix")]
 158    [ProducesResponseType(StatusCodes.Status200OK)]
 159    [ProducesResponseType(StatusCodes.Status404NotFound)]
 160    public ActionResult<QueryResult<BaseItemDto>> GetInstantMixFromPlaylist(
 161        [FromRoute, Required] Guid itemId,
 162        [FromQuery] Guid? userId,
 163        [FromQuery] int? limit,
 164        [FromQuery, ModelBinder(typeof(CommaDelimitedCollectionModelBinder))] ItemFields[] fields,
 165        [FromQuery] bool? enableImages,
 166        [FromQuery] bool? enableUserData,
 167        [FromQuery] int? imageTypeLimit,
 168        [FromQuery, ModelBinder(typeof(CommaDelimitedCollectionModelBinder))] ImageType[] enableImageTypes)
 169    {
 0170        userId = RequestHelpers.GetUserId(User, userId);
 0171        var user = userId.IsNullOrEmpty()
 0172            ? null
 0173            : _userManager.GetUserById(userId.Value);
 0174        var item = _libraryManager.GetItemById<Playlist>(itemId, user);
 0175        if (item is null)
 176        {
 0177            return NotFound();
 178        }
 179
 0180        var dtoOptions = new DtoOptions { Fields = fields }
 0181            .AddClientFields(User)
 0182            .AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes);
 0183        var items = _musicManager.GetInstantMixFromItem(item, user, dtoOptions);
 0184        return GetResult(items, user, limit, dtoOptions);
 185    }
 186
 187    /// <summary>
 188    /// Creates an instant playlist based on a given genre.
 189    /// </summary>
 190    /// <param name="name">The genre name.</param>
 191    /// <param name="userId">Optional. Filter by user id, and attach user data.</param>
 192    /// <param name="limit">Optional. The maximum number of records to return.</param>
 193    /// <param name="fields">Optional. Specify additional fields of information to return in the output.</param>
 194    /// <param name="enableImages">Optional. Include image information in output.</param>
 195    /// <param name="enableUserData">Optional. Include user data.</param>
 196    /// <param name="imageTypeLimit">Optional. The max number of images to return, per image type.</param>
 197    /// <param name="enableImageTypes">Optional. The image types to include in the output.</param>
 198    /// <response code="200">Instant playlist returned.</response>
 199    /// <returns>A <see cref="QueryResult{BaseItemDto}"/> with the playlist items.</returns>
 200    [HttpGet("MusicGenres/{name}/InstantMix")]
 201    [ProducesResponseType(StatusCodes.Status200OK)]
 202    public ActionResult<QueryResult<BaseItemDto>> GetInstantMixFromMusicGenreByName(
 203        [FromRoute, Required] string name,
 204        [FromQuery] Guid? userId,
 205        [FromQuery] int? limit,
 206        [FromQuery, ModelBinder(typeof(CommaDelimitedCollectionModelBinder))] ItemFields[] fields,
 207        [FromQuery] bool? enableImages,
 208        [FromQuery] bool? enableUserData,
 209        [FromQuery] int? imageTypeLimit,
 210        [FromQuery, ModelBinder(typeof(CommaDelimitedCollectionModelBinder))] ImageType[] enableImageTypes)
 211    {
 0212        userId = RequestHelpers.GetUserId(User, userId);
 0213        var user = userId.IsNullOrEmpty()
 0214            ? null
 0215            : _userManager.GetUserById(userId.Value);
 0216        var dtoOptions = new DtoOptions { Fields = fields }
 0217            .AddClientFields(User)
 0218            .AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes);
 0219        var items = _musicManager.GetInstantMixFromGenres(new[] { name }, user, dtoOptions);
 0220        return GetResult(items, user, limit, dtoOptions);
 221    }
 222
 223    /// <summary>
 224    /// Creates an instant playlist based on a given artist.
 225    /// </summary>
 226    /// <param name="itemId">The item id.</param>
 227    /// <param name="userId">Optional. Filter by user id, and attach user data.</param>
 228    /// <param name="limit">Optional. The maximum number of records to return.</param>
 229    /// <param name="fields">Optional. Specify additional fields of information to return in the output.</param>
 230    /// <param name="enableImages">Optional. Include image information in output.</param>
 231    /// <param name="enableUserData">Optional. Include user data.</param>
 232    /// <param name="imageTypeLimit">Optional. The max number of images to return, per image type.</param>
 233    /// <param name="enableImageTypes">Optional. The image types to include in the output.</param>
 234    /// <response code="200">Instant playlist returned.</response>
 235    /// <response code="404">Item not found.</response>
 236    /// <returns>A <see cref="QueryResult{BaseItemDto}"/> with the playlist items.</returns>
 237    [HttpGet("Artists/{itemId}/InstantMix")]
 238    [ProducesResponseType(StatusCodes.Status200OK)]
 239    [ProducesResponseType(StatusCodes.Status404NotFound)]
 240    public ActionResult<QueryResult<BaseItemDto>> GetInstantMixFromArtists(
 241        [FromRoute, Required] Guid itemId,
 242        [FromQuery] Guid? userId,
 243        [FromQuery] int? limit,
 244        [FromQuery, ModelBinder(typeof(CommaDelimitedCollectionModelBinder))] ItemFields[] fields,
 245        [FromQuery] bool? enableImages,
 246        [FromQuery] bool? enableUserData,
 247        [FromQuery] int? imageTypeLimit,
 248        [FromQuery, ModelBinder(typeof(CommaDelimitedCollectionModelBinder))] ImageType[] enableImageTypes)
 249    {
 0250        userId = RequestHelpers.GetUserId(User, userId);
 0251        var user = userId.IsNullOrEmpty()
 0252            ? null
 0253            : _userManager.GetUserById(userId.Value);
 0254        var item = _libraryManager.GetItemById<BaseItem>(itemId, user);
 0255        if (item is null)
 256        {
 0257            return NotFound();
 258        }
 259
 0260        var dtoOptions = new DtoOptions { Fields = fields }
 0261            .AddClientFields(User)
 0262            .AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes);
 0263        var items = _musicManager.GetInstantMixFromItem(item, user, dtoOptions);
 0264        return GetResult(items, user, limit, dtoOptions);
 265    }
 266
 267    /// <summary>
 268    /// Creates an instant playlist based on a given item.
 269    /// </summary>
 270    /// <param name="itemId">The item id.</param>
 271    /// <param name="userId">Optional. Filter by user id, and attach user data.</param>
 272    /// <param name="limit">Optional. The maximum number of records to return.</param>
 273    /// <param name="fields">Optional. Specify additional fields of information to return in the output.</param>
 274    /// <param name="enableImages">Optional. Include image information in output.</param>
 275    /// <param name="enableUserData">Optional. Include user data.</param>
 276    /// <param name="imageTypeLimit">Optional. The max number of images to return, per image type.</param>
 277    /// <param name="enableImageTypes">Optional. The image types to include in the output.</param>
 278    /// <response code="200">Instant playlist returned.</response>
 279    /// <response code="404">Item not found.</response>
 280    /// <returns>A <see cref="QueryResult{BaseItemDto}"/> with the playlist items.</returns>
 281    [HttpGet("Items/{itemId}/InstantMix")]
 282    [ProducesResponseType(StatusCodes.Status200OK)]
 283    [ProducesResponseType(StatusCodes.Status404NotFound)]
 284    public ActionResult<QueryResult<BaseItemDto>> GetInstantMixFromItem(
 285        [FromRoute, Required] Guid itemId,
 286        [FromQuery] Guid? userId,
 287        [FromQuery] int? limit,
 288        [FromQuery, ModelBinder(typeof(CommaDelimitedCollectionModelBinder))] ItemFields[] fields,
 289        [FromQuery] bool? enableImages,
 290        [FromQuery] bool? enableUserData,
 291        [FromQuery] int? imageTypeLimit,
 292        [FromQuery, ModelBinder(typeof(CommaDelimitedCollectionModelBinder))] ImageType[] enableImageTypes)
 293    {
 0294        userId = RequestHelpers.GetUserId(User, userId);
 0295        var user = userId.IsNullOrEmpty()
 0296            ? null
 0297            : _userManager.GetUserById(userId.Value);
 0298        var item = _libraryManager.GetItemById<BaseItem>(itemId, user);
 0299        if (item is null)
 300        {
 0301            return NotFound();
 302        }
 303
 0304        var dtoOptions = new DtoOptions { Fields = fields }
 0305            .AddClientFields(User)
 0306            .AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes);
 0307        var items = _musicManager.GetInstantMixFromItem(item, user, dtoOptions);
 0308        return GetResult(items, user, limit, dtoOptions);
 309    }
 310
 311    /// <summary>
 312    /// Creates an instant playlist based on a given artist.
 313    /// </summary>
 314    /// <param name="id">The item id.</param>
 315    /// <param name="userId">Optional. Filter by user id, and attach user data.</param>
 316    /// <param name="limit">Optional. The maximum number of records to return.</param>
 317    /// <param name="fields">Optional. Specify additional fields of information to return in the output.</param>
 318    /// <param name="enableImages">Optional. Include image information in output.</param>
 319    /// <param name="enableUserData">Optional. Include user data.</param>
 320    /// <param name="imageTypeLimit">Optional. The max number of images to return, per image type.</param>
 321    /// <param name="enableImageTypes">Optional. The image types to include in the output.</param>
 322    /// <response code="200">Instant playlist returned.</response>
 323    /// <response code="404">Item not found.</response>
 324    /// <returns>A <see cref="QueryResult{BaseItemDto}"/> with the playlist items.</returns>
 325    [HttpGet("Artists/InstantMix")]
 326    [ProducesResponseType(StatusCodes.Status200OK)]
 327    [ProducesResponseType(StatusCodes.Status404NotFound)]
 328    [Obsolete("Use GetInstantMixFromArtists")]
 329    public ActionResult<QueryResult<BaseItemDto>> GetInstantMixFromArtists2(
 330        [FromQuery, Required] Guid id,
 331        [FromQuery] Guid? userId,
 332        [FromQuery] int? limit,
 333        [FromQuery, ModelBinder(typeof(CommaDelimitedCollectionModelBinder))] ItemFields[] fields,
 334        [FromQuery] bool? enableImages,
 335        [FromQuery] bool? enableUserData,
 336        [FromQuery] int? imageTypeLimit,
 337        [FromQuery, ModelBinder(typeof(CommaDelimitedCollectionModelBinder))] ImageType[] enableImageTypes)
 338    {
 339        return GetInstantMixFromArtists(
 340            id,
 341            userId,
 342            limit,
 343            fields,
 344            enableImages,
 345            enableUserData,
 346            imageTypeLimit,
 347            enableImageTypes);
 348    }
 349
 350    /// <summary>
 351    /// Creates an instant playlist based on a given genre.
 352    /// </summary>
 353    /// <param name="id">The item id.</param>
 354    /// <param name="userId">Optional. Filter by user id, and attach user data.</param>
 355    /// <param name="limit">Optional. The maximum number of records to return.</param>
 356    /// <param name="fields">Optional. Specify additional fields of information to return in the output.</param>
 357    /// <param name="enableImages">Optional. Include image information in output.</param>
 358    /// <param name="enableUserData">Optional. Include user data.</param>
 359    /// <param name="imageTypeLimit">Optional. The max number of images to return, per image type.</param>
 360    /// <param name="enableImageTypes">Optional. The image types to include in the output.</param>
 361    /// <response code="200">Instant playlist returned.</response>
 362    /// <response code="404">Item not found.</response>
 363    /// <returns>A <see cref="QueryResult{BaseItemDto}"/> with the playlist items.</returns>
 364    [HttpGet("MusicGenres/InstantMix")]
 365    [ProducesResponseType(StatusCodes.Status200OK)]
 366    [ProducesResponseType(StatusCodes.Status404NotFound)]
 367    public ActionResult<QueryResult<BaseItemDto>> GetInstantMixFromMusicGenreById(
 368        [FromQuery, Required] Guid id,
 369        [FromQuery] Guid? userId,
 370        [FromQuery] int? limit,
 371        [FromQuery, ModelBinder(typeof(CommaDelimitedCollectionModelBinder))] ItemFields[] fields,
 372        [FromQuery] bool? enableImages,
 373        [FromQuery] bool? enableUserData,
 374        [FromQuery] int? imageTypeLimit,
 375        [FromQuery, ModelBinder(typeof(CommaDelimitedCollectionModelBinder))] ImageType[] enableImageTypes)
 376    {
 0377        userId = RequestHelpers.GetUserId(User, userId);
 0378        var user = userId.IsNullOrEmpty()
 0379            ? null
 0380            : _userManager.GetUserById(userId.Value);
 0381        var item = _libraryManager.GetItemById<BaseItem>(id, user);
 0382        if (item is null)
 383        {
 0384            return NotFound();
 385        }
 386
 0387        var dtoOptions = new DtoOptions { Fields = fields }
 0388            .AddClientFields(User)
 0389            .AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes);
 0390        var items = _musicManager.GetInstantMixFromItem(item, user, dtoOptions);
 0391        return GetResult(items, user, limit, dtoOptions);
 392    }
 393
 394    private QueryResult<BaseItemDto> GetResult(IReadOnlyList<BaseItem> items, User? user, int? limit, DtoOptions dtoOpti
 395    {
 0396        var totalCount = items.Count;
 397
 0398        if (limit.HasValue && limit < items.Count)
 399        {
 0400            items = items.Take(limit.Value).ToArray();
 401        }
 402
 0403        var result = new QueryResult<BaseItemDto>(
 0404            0,
 0405            totalCount,
 0406            _dtoService.GetBaseItemDtos(items, dtoOptions, user));
 407
 0408        return result;
 409    }
 410}

Methods/Properties

.ctor(MediaBrowser.Controller.Library.IUserManager,MediaBrowser.Controller.Dto.IDtoService,MediaBrowser.Controller.Library.IMusicManager,MediaBrowser.Controller.Library.ILibraryManager)
GetInstantMixFromSong(System.Guid,System.Nullable`1<System.Guid>,System.Nullable`1<System.Int32>,MediaBrowser.Model.Querying.ItemFields[],System.Nullable`1<System.Boolean>,System.Nullable`1<System.Boolean>,System.Nullable`1<System.Int32>,MediaBrowser.Model.Entities.ImageType[])
GetInstantMixFromAlbum(System.Guid,System.Nullable`1<System.Guid>,System.Nullable`1<System.Int32>,MediaBrowser.Model.Querying.ItemFields[],System.Nullable`1<System.Boolean>,System.Nullable`1<System.Boolean>,System.Nullable`1<System.Int32>,MediaBrowser.Model.Entities.ImageType[])
GetInstantMixFromPlaylist(System.Guid,System.Nullable`1<System.Guid>,System.Nullable`1<System.Int32>,MediaBrowser.Model.Querying.ItemFields[],System.Nullable`1<System.Boolean>,System.Nullable`1<System.Boolean>,System.Nullable`1<System.Int32>,MediaBrowser.Model.Entities.ImageType[])
GetInstantMixFromMusicGenreByName(System.String,System.Nullable`1<System.Guid>,System.Nullable`1<System.Int32>,MediaBrowser.Model.Querying.ItemFields[],System.Nullable`1<System.Boolean>,System.Nullable`1<System.Boolean>,System.Nullable`1<System.Int32>,MediaBrowser.Model.Entities.ImageType[])
GetInstantMixFromArtists(System.Guid,System.Nullable`1<System.Guid>,System.Nullable`1<System.Int32>,MediaBrowser.Model.Querying.ItemFields[],System.Nullable`1<System.Boolean>,System.Nullable`1<System.Boolean>,System.Nullable`1<System.Int32>,MediaBrowser.Model.Entities.ImageType[])
GetInstantMixFromItem(System.Guid,System.Nullable`1<System.Guid>,System.Nullable`1<System.Int32>,MediaBrowser.Model.Querying.ItemFields[],System.Nullable`1<System.Boolean>,System.Nullable`1<System.Boolean>,System.Nullable`1<System.Int32>,MediaBrowser.Model.Entities.ImageType[])
GetInstantMixFromMusicGenreById(System.Guid,System.Nullable`1<System.Guid>,System.Nullable`1<System.Int32>,MediaBrowser.Model.Querying.ItemFields[],System.Nullable`1<System.Boolean>,System.Nullable`1<System.Boolean>,System.Nullable`1<System.Int32>,MediaBrowser.Model.Entities.ImageType[])
GetResult(System.Collections.Generic.IReadOnlyList`1<MediaBrowser.Controller.Entities.BaseItem>,Jellyfin.Database.Implementations.Entities.User,System.Nullable`1<System.Int32>,MediaBrowser.Controller.Dto.DtoOptions)