| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 | 
							- using MediaBrowser.Controller.Dto;
 
- using MediaBrowser.Controller.Entities;
 
- using MediaBrowser.Controller.Entities.Audio;
 
- using MediaBrowser.Controller.Library;
 
- using MediaBrowser.Controller.Net;
 
- using MediaBrowser.Controller.Playlists;
 
- using MediaBrowser.Model.Querying;
 
- using ServiceStack;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- namespace MediaBrowser.Api.Music
 
- {
 
-     [Route("/Songs/{Id}/InstantMix", "GET", Summary = "Creates an instant playlist based on a given song")]
 
-     public class GetInstantMixFromSong : BaseGetSimilarItemsFromItem
 
-     {
 
-     }
 
-     [Route("/Albums/{Id}/InstantMix", "GET", Summary = "Creates an instant playlist based on a given album")]
 
-     public class GetInstantMixFromAlbum : BaseGetSimilarItemsFromItem
 
-     {
 
-     }
 
-     [Route("/Playlists/{Id}/InstantMix", "GET", Summary = "Creates an instant playlist based on a given playlist")]
 
-     public class GetInstantMixFromPlaylist : BaseGetSimilarItemsFromItem
 
-     {
 
-     }
 
-     [Route("/Artists/{Name}/InstantMix", "GET", Summary = "Creates an instant playlist based on a given artist")]
 
-     public class GetInstantMixFromArtist : BaseGetSimilarItems
 
-     {
 
-         [ApiMember(Name = "Name", Description = "The artist name", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
 
-         public string Name { get; set; }
 
-     }
 
-     [Route("/MusicGenres/{Name}/InstantMix", "GET", Summary = "Creates an instant playlist based on a music genre")]
 
-     public class GetInstantMixFromMusicGenre : BaseGetSimilarItems
 
-     {
 
-         [ApiMember(Name = "Name", Description = "The genre name", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
 
-         public string Name { get; set; }
 
-     }
 
-     [Route("/Artists/InstantMix", "GET", Summary = "Creates an instant playlist based on a given artist")]
 
-     public class GetInstantMixFromArtistId : BaseGetSimilarItems
 
-     {
 
-         [ApiMember(Name = "Id", Description = "The artist Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
 
-         public string Id { get; set; }
 
-     }
 
-     [Route("/MusicGenres/InstantMix", "GET", Summary = "Creates an instant playlist based on a music genre")]
 
-     public class GetInstantMixFromMusicGenreId : BaseGetSimilarItems
 
-     {
 
-         [ApiMember(Name = "Id", Description = "The genre Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
 
-         public string Id { get; set; }
 
-     }
 
-     [Route("/Items/{Id}/InstantMix", "GET", Summary = "Creates an instant playlist based on a given item")]
 
-     public class GetInstantMixFromItem : BaseGetSimilarItemsFromItem
 
-     {
 
-     }
 
-     [Authenticated]
 
-     public class InstantMixService : BaseApiService
 
-     {
 
-         private readonly IUserManager _userManager;
 
-         private readonly IDtoService _dtoService;
 
-         private readonly ILibraryManager _libraryManager;
 
-         private readonly IMusicManager _musicManager;
 
-         public InstantMixService(IUserManager userManager, IDtoService dtoService, IMusicManager musicManager, ILibraryManager libraryManager)
 
-         {
 
-             _userManager = userManager;
 
-             _dtoService = dtoService;
 
-             _musicManager = musicManager;
 
-             _libraryManager = libraryManager;
 
-         }
 
-         public object Get(GetInstantMixFromItem request)
 
-         {
 
-             var item = _libraryManager.GetItemById(request.Id);
 
-             var user = _userManager.GetUserById(request.UserId);
 
-             var items = _musicManager.GetInstantMixFromItem(item, user);
 
-             return GetResult(items, user, request);
 
-         }
 
-         public object Get(GetInstantMixFromArtistId request)
 
-         {
 
-             var item = _libraryManager.GetItemById(request.Id);
 
-             var user = _userManager.GetUserById(request.UserId);
 
-             var items = _musicManager.GetInstantMixFromItem(item, user);
 
-             return GetResult(items, user, request);
 
-         }
 
-         public object Get(GetInstantMixFromMusicGenreId request)
 
-         {
 
-             var item = _libraryManager.GetItemById(request.Id);
 
-             var user = _userManager.GetUserById(request.UserId);
 
-             var items = _musicManager.GetInstantMixFromItem(item, user);
 
-             return GetResult(items, user, request);
 
-         }
 
-         public object Get(GetInstantMixFromSong request)
 
-         {
 
-             var item = _libraryManager.GetItemById(request.Id);
 
-             var user = _userManager.GetUserById(request.UserId);
 
-             var items = _musicManager.GetInstantMixFromItem(item, user);
 
-             return GetResult(items, user, request);
 
-         }
 
-         public object Get(GetInstantMixFromAlbum request)
 
-         {
 
-             var album = _libraryManager.GetItemById(request.Id);
 
-             var user = _userManager.GetUserById(request.UserId);
 
-             var items = _musicManager.GetInstantMixFromItem(album, user);
 
-             return GetResult(items, user, request);
 
-         }
 
-         public object Get(GetInstantMixFromPlaylist request)
 
-         {
 
-             var playlist = (Playlist)_libraryManager.GetItemById(request.Id);
 
-             var user = _userManager.GetUserById(request.UserId);
 
-             var items = _musicManager.GetInstantMixFromItem(playlist, user);
 
-             return GetResult(items, user, request);
 
-         }
 
-         public object Get(GetInstantMixFromMusicGenre request)
 
-         {
 
-             var user = _userManager.GetUserById(request.UserId);
 
-             var items = _musicManager.GetInstantMixFromGenres(new[] { request.Name }, user);
 
-             return GetResult(items, user, request);
 
-         }
 
-         public object Get(GetInstantMixFromArtist request)
 
-         {
 
-             var user = _userManager.GetUserById(request.UserId);
 
-             var artist = _libraryManager.GetArtist(request.Name);
 
-             var items = _musicManager.GetInstantMixFromArtist(artist, user);
 
-             return GetResult(items, user, request);
 
-         }
 
-         private object GetResult(IEnumerable<Audio> items, User user, BaseGetSimilarItems request)
 
-         {
 
-             var list = items.ToList();
 
-             var result = new ItemsResult
 
-             {
 
-                 TotalRecordCount = list.Count
 
-             };
 
-             var dtoOptions = GetDtoOptions(request);
 
-             result.Items = _dtoService.GetBaseItemDtos(list.Take(request.Limit ?? list.Count), dtoOptions, user).ToArray();
 
-             return ToOptimizedResult(result);
 
-         }
 
-     }
 
- }
 
 
  |