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.Model/LiveTv/ChannelQuery.cs b/MediaBrowser.Model/LiveTv/ChannelQuery.cs
index eb3b20ce3b..9079ebacd9 100644
--- a/MediaBrowser.Model/LiveTv/ChannelQuery.cs
+++ b/MediaBrowser.Model/LiveTv/ChannelQuery.cs
@@ -12,6 +12,12 @@ namespace MediaBrowser.Model.LiveTv
/// The type of the channel.
public ChannelType? ChannelType { get; set; }
+ ///
+ /// Gets or sets a value indicating whether this instance is favorite.
+ ///
+ /// null if [is favorite] contains no value, true if [is favorite]; otherwise, false.
+ public bool? IsFavorite { get; set; }
+
///
/// Gets or sets the user identifier.
///
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index 1833b708fc..2e0b3cb172 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -1297,7 +1297,7 @@ namespace MediaBrowser.Server.Implementations.Dto
{
var result = new List
{
- GetVersionInfo(item, true)
+ GetVersionInfo(item)
};
return result;
@@ -1321,7 +1321,7 @@ namespace MediaBrowser.Server.Implementations.Dto
};
}
- private MediaSourceInfo GetVersionInfo(Audio i, bool isPrimary)
+ private MediaSourceInfo GetVersionInfo(Audio i)
{
return new MediaSourceInfo
{
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index db8786d62b..b828dc0de5 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -134,6 +134,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv
return number;
});
+
+ if (query.IsFavorite.HasValue)
+ {
+ var val = query.IsFavorite.Value;
+
+ channels = channels
+ .Where(i => _userDataManager.GetUserData(user.Id, i.GetUserDataKey()).IsFavorite == val);
+ }
}
channels = channels.OrderBy(i =>