diff --git a/MediaBrowser.Api/LiveTv/LiveTvService.cs b/MediaBrowser.Api/LiveTv/LiveTvService.cs
index 96fe01ab32..abeaba9105 100644
--- a/MediaBrowser.Api/LiveTv/LiveTvService.cs
+++ b/MediaBrowser.Api/LiveTv/LiveTvService.cs
@@ -39,6 +39,9 @@ namespace MediaBrowser.Api.LiveTv
/// The limit.
[ApiMember(Name = "Limit", Description = "Optional. The maximum number of records to return", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
public int? Limit { get; set; }
+
+ [ApiMember(Name = "IsFavorite", Description = "Filter by channels that are favorites, or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
+ public bool? IsFavorite { get; set; }
}
[Route("/LiveTv/Channels/{Id}", "GET", Summary = "Gets a live tv channel")]
@@ -290,7 +293,8 @@ namespace MediaBrowser.Api.LiveTv
ChannelType = request.Type,
UserId = request.UserId,
StartIndex = request.StartIndex,
- Limit = request.Limit
+ Limit = request.Limit,
+ IsFavorite = request.IsFavorite
}, CancellationToken.None).Result;
diff --git a/MediaBrowser.Api/LocalizationService.cs b/MediaBrowser.Api/LocalizationService.cs
index 60270a3895..be86090ac4 100644
--- a/MediaBrowser.Api/LocalizationService.cs
+++ b/MediaBrowser.Api/LocalizationService.cs
@@ -31,6 +31,14 @@ namespace MediaBrowser.Api
{
}
+ ///
+ /// Class ParentalRatings
+ ///
+ [Route("/Localization/Options", "GET", Summary = "Gets localization options")]
+ public class GetLocalizationOptions : IReturn>
+ {
+ }
+
///
/// Class CulturesService
///
@@ -62,6 +70,13 @@ namespace MediaBrowser.Api
return ToOptimizedSerializedResultUsingCache(result);
}
+ public object Get(GetLocalizationOptions request)
+ {
+ var result = _localization.GetLocalizationOptions().ToList();
+
+ return ToOptimizedSerializedResultUsingCache(result);
+ }
+
///
/// Gets the specified request.
///
diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj
index 18559a68df..c03eddf99e 100644
--- a/MediaBrowser.Api/MediaBrowser.Api.csproj
+++ b/MediaBrowser.Api/MediaBrowser.Api.csproj
@@ -103,6 +103,7 @@
+
diff --git a/MediaBrowser.Api/Music/InstantMixService.cs b/MediaBrowser.Api/Music/InstantMixService.cs
index 9b9df3a92c..c39811bb66 100644
--- a/MediaBrowser.Api/Music/InstantMixService.cs
+++ b/MediaBrowser.Api/Music/InstantMixService.cs
@@ -1,9 +1,9 @@
using MediaBrowser.Controller.Dto;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Querying;
using ServiceStack;
-using System;
using System.Collections.Generic;
using System.Linq;
@@ -36,103 +36,74 @@ namespace MediaBrowser.Api.Music
public class InstantMixService : BaseApiService
{
private readonly IUserManager _userManager;
- private readonly ILibraryManager _libraryManager;
private readonly IDtoService _dtoService;
+ private readonly IMusicManager _musicManager;
- public InstantMixService(IUserManager userManager, ILibraryManager libraryManager, IDtoService dtoService)
+ public InstantMixService(IUserManager userManager, IDtoService dtoService, IMusicManager musicManager)
{
_userManager = userManager;
- _libraryManager = libraryManager;
_dtoService = dtoService;
+ _musicManager = musicManager;
}
public object Get(GetInstantMixFromSong request)
{
- var item = _dtoService.GetItemByDtoId(request.Id);
+ var item = (Audio)_dtoService.GetItemByDtoId(request.Id);
- var result = GetInstantMixResult(request, item.Genres);
+ var user = _userManager.GetUserById(request.UserId.Value);
- return ToOptimizedSerializedResultUsingCache(result);
+ var items = _musicManager.GetInstantMixFromSong(item, user);
+
+ return GetResult(items, user, request);
}
public object Get(GetInstantMixFromAlbum request)
{
var album = (MusicAlbum)_dtoService.GetItemByDtoId(request.Id);
- var genres = album
- .RecursiveChildren
- .OfType