aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Api/Images/ImageByNameService.cs10
-rw-r--r--MediaBrowser.Api/LiveTv/LiveTvService.cs10
-rw-r--r--MediaBrowser.Controller/Channels/ChannelAudioItem.cs5
-rw-r--r--MediaBrowser.Controller/Channels/ChannelFolderItem.cs5
-rw-r--r--MediaBrowser.Controller/Channels/ChannelVideoItem.cs5
-rw-r--r--MediaBrowser.Controller/Channels/IChannel.cs18
-rw-r--r--MediaBrowser.Controller/Channels/InternalChannelItemQuery.cs10
-rw-r--r--MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj3
-rw-r--r--MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj3
-rw-r--r--MediaBrowser.Model/ApiClient/IApiClient.cs24
-rw-r--r--MediaBrowser.Model/Channels/ChannelFeatures.cs43
-rw-r--r--MediaBrowser.Model/Channels/ChannelInfo.cs35
-rw-r--r--MediaBrowser.Model/Channels/ChannelItemQuery.cs1
-rw-r--r--MediaBrowser.Model/Configuration/ServerConfiguration.cs9
-rw-r--r--MediaBrowser.Model/LiveTv/ChannelQuery.cs12
-rw-r--r--MediaBrowser.Model/MediaBrowser.Model.csproj1
-rw-r--r--MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs6
-rw-r--r--MediaBrowser.Server.Implementations/Channels/ChannelManager.cs10
-rw-r--r--MediaBrowser.Server.Implementations/Dto/MediaStreamSelector.cs18
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs26
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/server.json3
-rw-r--r--Nuget/MediaBrowser.Common.Internal.nuspec4
-rw-r--r--Nuget/MediaBrowser.Common.nuspec2
-rw-r--r--Nuget/MediaBrowser.Server.Core.nuspec4
24 files changed, 198 insertions, 69 deletions
diff --git a/MediaBrowser.Api/Images/ImageByNameService.cs b/MediaBrowser.Api/Images/ImageByNameService.cs
index c741dd8a8..8c543c8c2 100644
--- a/MediaBrowser.Api/Images/ImageByNameService.cs
+++ b/MediaBrowser.Api/Images/ImageByNameService.cs
@@ -118,20 +118,20 @@ namespace MediaBrowser.Api.Images
public object Get(GetMediaInfoImages request)
{
- return ToOptimizedResult(GetImageList(_appPaths.MediaInfoImagesPath));
+ return ToOptimizedResult(GetImageList(_appPaths.MediaInfoImagesPath, true));
}
public object Get(GetRatingImages request)
{
- return ToOptimizedResult(GetImageList(_appPaths.RatingsPath));
+ return ToOptimizedResult(GetImageList(_appPaths.RatingsPath, true));
}
public object Get(GetGeneralImages request)
{
- return ToOptimizedResult(GetImageList(_appPaths.GeneralPath));
+ return ToOptimizedResult(GetImageList(_appPaths.GeneralPath, false));
}
- private List<ImageByNameInfo> GetImageList(string path)
+ private List<ImageByNameInfo> GetImageList(string path, bool supportsThemes)
{
try
{
@@ -142,7 +142,7 @@ namespace MediaBrowser.Api.Images
{
Name = Path.GetFileNameWithoutExtension(i.FullName),
FileLength = i.Length,
- Theme = GetThemeName(i.FullName, path),
+ Theme = supportsThemes ? GetThemeName(i.FullName, path) : null,
Format = i.Extension.ToLower().TrimStart('.')
})
.OrderBy(i => i.Name)
diff --git a/MediaBrowser.Api/LiveTv/LiveTvService.cs b/MediaBrowser.Api/LiveTv/LiveTvService.cs
index abeaba910..a6074e529 100644
--- a/MediaBrowser.Api/LiveTv/LiveTvService.cs
+++ b/MediaBrowser.Api/LiveTv/LiveTvService.cs
@@ -42,6 +42,12 @@ namespace MediaBrowser.Api.LiveTv
[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; }
+
+ [ApiMember(Name = "IsLiked", Description = "Filter by channels that are liked, or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
+ public bool? IsLiked { get; set; }
+
+ [ApiMember(Name = "IsDisliked", Description = "Filter by channels that are disliked, or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
+ public bool? IsDisliked { get; set; }
}
[Route("/LiveTv/Channels/{Id}", "GET", Summary = "Gets a live tv channel")]
@@ -294,7 +300,9 @@ namespace MediaBrowser.Api.LiveTv
UserId = request.UserId,
StartIndex = request.StartIndex,
Limit = request.Limit,
- IsFavorite = request.IsFavorite
+ IsFavorite = request.IsFavorite,
+ IsLiked = request.IsLiked,
+ IsDisliked = request.IsDisliked
}, CancellationToken.None).Result;
diff --git a/MediaBrowser.Controller/Channels/ChannelAudioItem.cs b/MediaBrowser.Controller/Channels/ChannelAudioItem.cs
index f62573780..7072d4284 100644
--- a/MediaBrowser.Controller/Channels/ChannelAudioItem.cs
+++ b/MediaBrowser.Controller/Channels/ChannelAudioItem.cs
@@ -53,10 +53,5 @@ namespace MediaBrowser.Controller.Channels
return base.LocationType;
}
}
-
- public override string GetClientTypeName()
- {
- return "audio.channelItem";
- }
}
}
diff --git a/MediaBrowser.Controller/Channels/ChannelFolderItem.cs b/MediaBrowser.Controller/Channels/ChannelFolderItem.cs
index 56262ab20..3b66e52ce 100644
--- a/MediaBrowser.Controller/Channels/ChannelFolderItem.cs
+++ b/MediaBrowser.Controller/Channels/ChannelFolderItem.cs
@@ -33,10 +33,5 @@ namespace MediaBrowser.Controller.Channels
{
Tags = new List<string>();
}
-
- public override string GetClientTypeName()
- {
- return "folder.channelItem";
- }
}
}
diff --git a/MediaBrowser.Controller/Channels/ChannelVideoItem.cs b/MediaBrowser.Controller/Channels/ChannelVideoItem.cs
index 6d0497c4d..572e316a0 100644
--- a/MediaBrowser.Controller/Channels/ChannelVideoItem.cs
+++ b/MediaBrowser.Controller/Channels/ChannelVideoItem.cs
@@ -77,10 +77,5 @@ namespace MediaBrowser.Controller.Channels
return base.LocationType;
}
}
-
- public override string GetClientTypeName()
- {
- return "video.channelItem";
- }
}
}
diff --git a/MediaBrowser.Controller/Channels/IChannel.cs b/MediaBrowser.Controller/Channels/IChannel.cs
index 527454284..7f03579f3 100644
--- a/MediaBrowser.Controller/Channels/IChannel.cs
+++ b/MediaBrowser.Controller/Channels/IChannel.cs
@@ -23,10 +23,16 @@ namespace MediaBrowser.Controller.Channels
string DataVersion { get; }
/// <summary>
+ /// Gets the home page URL.
+ /// </summary>
+ /// <value>The home page URL.</value>
+ string HomePageUrl { get; }
+
+ /// <summary>
/// Gets the channel information.
/// </summary>
- /// <returns>ChannelInfo.</returns>
- ChannelInfo GetChannelInfo();
+ /// <returns>ChannelFeatures.</returns>
+ ChannelFeatures GetChannelFeatures();
/// <summary>
/// Determines whether [is enabled for] [the specified user].
@@ -53,6 +59,14 @@ namespace MediaBrowser.Controller.Channels
Task<ChannelItemResult> GetChannelItems(InternalChannelItemQuery query, CancellationToken cancellationToken);
/// <summary>
+ /// Gets all media.
+ /// </summary>
+ /// <param name="query">The query.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns>Task{ChannelItemResult}.</returns>
+ Task<ChannelItemResult> GetAllMedia(InternalAllChannelItemsQuery query, CancellationToken cancellationToken);
+
+ /// <summary>
/// Gets the channel image.
/// </summary>
/// <param name="type">The type.</param>
diff --git a/MediaBrowser.Controller/Channels/InternalChannelItemQuery.cs b/MediaBrowser.Controller/Channels/InternalChannelItemQuery.cs
index aa8e7b9f1..4f032fe91 100644
--- a/MediaBrowser.Controller/Channels/InternalChannelItemQuery.cs
+++ b/MediaBrowser.Controller/Channels/InternalChannelItemQuery.cs
@@ -12,4 +12,14 @@ namespace MediaBrowser.Controller.Channels
public int? Limit { get; set; }
}
+
+ public class InternalAllChannelItemsQuery
+ {
+ public User User { get; set; }
+
+ public int? StartIndex { get; set; }
+
+ public int? Limit { get; set; }
+ }
+
} \ No newline at end of file
diff --git a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
index c66d58ea6..561d0d9e4 100644
--- a/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
+++ b/MediaBrowser.Model.Portable/MediaBrowser.Model.Portable.csproj
@@ -77,6 +77,9 @@
<Compile Include="..\MediaBrowser.Model\ApiClient\SessionUpdatesEventArgs.cs">
<Link>ApiClient\SessionUpdatesEventArgs.cs</Link>
</Compile>
+ <Compile Include="..\MediaBrowser.Model\Channels\ChannelFeatures.cs">
+ <Link>Channels\ChannelFeatures.cs</Link>
+ </Compile>
<Compile Include="..\MediaBrowser.Model\Channels\ChannelInfo.cs">
<Link>Channels\ChannelInfo.cs</Link>
</Compile>
diff --git a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
index 677c78309..92f0afb53 100644
--- a/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
+++ b/MediaBrowser.Model.net35/MediaBrowser.Model.net35.csproj
@@ -64,6 +64,9 @@
<Compile Include="..\MediaBrowser.Model\ApiClient\SessionUpdatesEventArgs.cs">
<Link>ApiClient\SessionUpdatesEventArgs.cs</Link>
</Compile>
+ <Compile Include="..\MediaBrowser.Model\Channels\ChannelFeatures.cs">
+ <Link>Channels\ChannelFeatures.cs</Link>
+ </Compile>
<Compile Include="..\MediaBrowser.Model\Channels\ChannelInfo.cs">
<Link>Channels\ChannelInfo.cs</Link>
</Compile>
diff --git a/MediaBrowser.Model/ApiClient/IApiClient.cs b/MediaBrowser.Model/ApiClient/IApiClient.cs
index e12a6cf2b..02dce0f6b 100644
--- a/MediaBrowser.Model/ApiClient/IApiClient.cs
+++ b/MediaBrowser.Model/ApiClient/IApiClient.cs
@@ -60,6 +60,30 @@ namespace MediaBrowser.Model.ApiClient
where T : class;
/// <summary>
+ /// Gets the url needed to stream an audio file
+ /// </summary>
+ /// <param name="options">The options.</param>
+ /// <returns>System.String.</returns>
+ /// <exception cref="ArgumentNullException">options</exception>
+ string GetAudioStreamUrl(StreamOptions options);
+
+ /// <summary>
+ /// Gets the url needed to stream a video file
+ /// </summary>
+ /// <param name="options">The options.</param>
+ /// <returns>System.String.</returns>
+ /// <exception cref="ArgumentNullException">options</exception>
+ string GetVideoStreamUrl(VideoStreamOptions options);
+
+ /// <summary>
+ /// Formulates a url for streaming video using the HLS protocol
+ /// </summary>
+ /// <param name="options">The options.</param>
+ /// <returns>System.String.</returns>
+ /// <exception cref="ArgumentNullException">options</exception>
+ string GetHlsVideoStreamUrl(VideoStreamOptions options);
+
+ /// <summary>
/// Reports the capabilities.
/// </summary>
/// <param name="capabilities">The capabilities.</param>
diff --git a/MediaBrowser.Model/Channels/ChannelFeatures.cs b/MediaBrowser.Model/Channels/ChannelFeatures.cs
new file mode 100644
index 000000000..dbfab87db
--- /dev/null
+++ b/MediaBrowser.Model/Channels/ChannelFeatures.cs
@@ -0,0 +1,43 @@
+using System.Collections.Generic;
+
+namespace MediaBrowser.Model.Channels
+{
+ public class ChannelFeatures
+ {
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance can search.
+ /// </summary>
+ /// <value><c>true</c> if this instance can search; otherwise, <c>false</c>.</value>
+ public bool CanSearch { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance can index all media.
+ /// </summary>
+ /// <value><c>true</c> if this instance can index all media; otherwise, <c>false</c>.</value>
+ public bool CanGetAllMedia { get; set; }
+
+ /// <summary>
+ /// Gets or sets the media types.
+ /// </summary>
+ /// <value>The media types.</value>
+ public List<ChannelMediaType> MediaTypes { get; set; }
+
+ /// <summary>
+ /// Gets or sets the content types.
+ /// </summary>
+ /// <value>The content types.</value>
+ public List<ChannelMediaContentType> ContentTypes { get; set; }
+
+ /// <summary>
+ /// Represents the maximum number of records the channel allows retrieving at a time
+ /// </summary>
+ public int? MaxPageSize { get; set; }
+
+ public ChannelFeatures()
+ {
+ MediaTypes = new List<ChannelMediaType>();
+ ContentTypes = new List<ChannelMediaContentType>();
+ }
+ }
+
+}
diff --git a/MediaBrowser.Model/Channels/ChannelInfo.cs b/MediaBrowser.Model/Channels/ChannelInfo.cs
index 2ebfb432a..36e3c17d9 100644
--- a/MediaBrowser.Model/Channels/ChannelInfo.cs
+++ b/MediaBrowser.Model/Channels/ChannelInfo.cs
@@ -1,35 +1,30 @@
-using System.Collections.Generic;
-
+
namespace MediaBrowser.Model.Channels
{
public class ChannelInfo
{
/// <summary>
- /// Gets the home page URL.
+ /// Gets or sets the name.
/// </summary>
- /// <value>The home page URL.</value>
- public string HomePageUrl { get; set; }
+ /// <value>The name.</value>
+ public string Name { get; set; }
/// <summary>
- /// Gets or sets a value indicating whether this instance can search.
+ /// Gets or sets the identifier.
/// </summary>
- /// <value><c>true</c> if this instance can search; otherwise, <c>false</c>.</value>
- public bool CanSearch { get; set; }
-
- public List<ChannelMediaType> MediaTypes { get; set; }
-
- public List<ChannelMediaContentType> ContentTypes { get; set; }
+ /// <value>The identifier.</value>
+ public string Id { get; set; }
/// <summary>
- /// Represents the maximum number of records the channel allows retrieving at a time
+ /// Gets or sets the home page URL.
/// </summary>
- public int? MaxPageSize { get; set; }
+ /// <value>The home page URL.</value>
+ public string HomePageUrl { get; set; }
- public ChannelInfo()
- {
- MediaTypes = new List<ChannelMediaType>();
- ContentTypes = new List<ChannelMediaContentType>();
- }
+ /// <summary>
+ /// Gets or sets the features.
+ /// </summary>
+ /// <value>The features.</value>
+ public ChannelFeatures Features { get; set; }
}
-
}
diff --git a/MediaBrowser.Model/Channels/ChannelItemQuery.cs b/MediaBrowser.Model/Channels/ChannelItemQuery.cs
index 632db5581..0cabe1d04 100644
--- a/MediaBrowser.Model/Channels/ChannelItemQuery.cs
+++ b/MediaBrowser.Model/Channels/ChannelItemQuery.cs
@@ -45,4 +45,5 @@ namespace MediaBrowser.Model.Channels
SortBy = new string[] { };
}
}
+
} \ No newline at end of file
diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
index c19039439..4fe5c8bcf 100644
--- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs
+++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
@@ -170,8 +170,8 @@ namespace MediaBrowser.Model.Configuration
public bool EnableTmdbUpdates { get; set; }
public bool EnableFanArtUpdates { get; set; }
- public bool RequireManualLoginForMobileApps { get; set; }
- public bool RequireManualLoginForOtherApps { get; set; }
+ public bool RequireMobileManualLogin { get; set; }
+ public bool RequireNonMobileManualLogin { get; set; }
/// <summary>
/// Gets or sets the image saving convention.
@@ -223,6 +223,9 @@ namespace MediaBrowser.Model.Configuration
public SubtitleOptions SubtitleOptions { get; set; }
+ [Obsolete]
+ public string[] ManualLoginClients { get; set; }
+
/// <summary>
/// Initializes a new instance of the <see cref="ServerConfiguration" /> class.
/// </summary>
@@ -263,6 +266,8 @@ namespace MediaBrowser.Model.Configuration
SortRemoveCharacters = new[] { ",", "&", "-", "{", "}", "'" };
SortRemoveWords = new[] { "the", "a", "an" };
+ ManualLoginClients = new string[] { };
+
SeasonZeroDisplayName = "Specials";
LiveTvOptions = new LiveTvOptions();
diff --git a/MediaBrowser.Model/LiveTv/ChannelQuery.cs b/MediaBrowser.Model/LiveTv/ChannelQuery.cs
index 9079ebacd..6d986d337 100644
--- a/MediaBrowser.Model/LiveTv/ChannelQuery.cs
+++ b/MediaBrowser.Model/LiveTv/ChannelQuery.cs
@@ -17,6 +17,18 @@ namespace MediaBrowser.Model.LiveTv
/// </summary>
/// <value><c>null</c> if [is favorite] contains no value, <c>true</c> if [is favorite]; otherwise, <c>false</c>.</value>
public bool? IsFavorite { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is liked.
+ /// </summary>
+ /// <value><c>null</c> if [is liked] contains no value, <c>true</c> if [is liked]; otherwise, <c>false</c>.</value>
+ public bool? IsLiked { get; set; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance is disliked.
+ /// </summary>
+ /// <value><c>null</c> if [is disliked] contains no value, <c>true</c> if [is disliked]; otherwise, <c>false</c>.</value>
+ public bool? IsDisliked { get; set; }
/// <summary>
/// Gets or sets the user identifier.
diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj
index f6f7666c7..c98db03c0 100644
--- a/MediaBrowser.Model/MediaBrowser.Model.csproj
+++ b/MediaBrowser.Model/MediaBrowser.Model.csproj
@@ -59,6 +59,7 @@
<Compile Include="ApiClient\IServerEvents.cs" />
<Compile Include="ApiClient\GeneralCommandEventArgs.cs" />
<Compile Include="ApiClient\SessionUpdatesEventArgs.cs" />
+ <Compile Include="Channels\ChannelFeatures.cs" />
<Compile Include="Channels\ChannelInfo.cs" />
<Compile Include="Channels\ChannelItemQuery.cs" />
<Compile Include="Channels\ChannelMediaContentType.cs" />
diff --git a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs
index 922c29fe9..ba7455e23 100644
--- a/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs
+++ b/MediaBrowser.Providers/TV/TvdbEpisodeProvider.cs
@@ -609,10 +609,14 @@ namespace MediaBrowser.Providers.TV
var roles = nameGroup.Count() > 1 ? nameGroup[1].Trim() : null;
if (roles != null)
roles = roles.EndsWith(")") ? roles.Substring(0, roles.Length - 1) : roles;
+
return new PersonInfo { Type = PersonType.GuestStar, Name = name, Role = roles };
}))
{
- item.AddPerson(person);
+ if (!string.IsNullOrWhiteSpace(person.Name))
+ {
+ item.AddPerson(person);
+ }
}
}
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
index db5c6b439..355ac43fc 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
+++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
@@ -215,9 +215,7 @@ namespace MediaBrowser.Server.Implementations.Channels
isNew = true;
}
- var info = channelInfo.GetChannelInfo();
-
- item.HomePageUrl = info.HomePageUrl;
+ item.HomePageUrl = channelInfo.HomePageUrl;
item.OriginalChannelName = channelInfo.Name;
if (string.IsNullOrEmpty(item.Name))
@@ -258,7 +256,7 @@ namespace MediaBrowser.Server.Implementations.Channels
// Find the corresponding channel provider plugin
var channelProvider = GetChannelProvider(channel);
- var channelInfo = channelProvider.GetChannelInfo();
+ var channelInfo = channelProvider.GetChannelFeatures();
int? providerStartIndex = null;
int? providerLimit = null;
@@ -448,7 +446,7 @@ namespace MediaBrowser.Server.Implementations.Channels
{
// Increment this as needed to force new downloads
// Incorporate Name because it's being used to convert channel entity to provider
- return externalId + (channelProvider.DataVersion ?? string.Empty) + (channelProvider.Name ?? string.Empty) + "12";
+ return externalId + (channelProvider.DataVersion ?? string.Empty) + (channelProvider.Name ?? string.Empty) + "13";
}
private async Task<BaseItem> GetChannelItemEntity(ChannelItemInfo info, IChannel channelProvider, Channel internalChannel, CancellationToken cancellationToken)
@@ -473,7 +471,7 @@ namespace MediaBrowser.Server.Implementations.Channels
}
else if (info.MediaType == ChannelMediaType.Audio)
{
- id = idToHash.GetMBId(typeof(ChannelFolderItem));
+ id = idToHash.GetMBId(typeof(ChannelAudioItem));
item = _libraryManager.GetItemById(id) as ChannelAudioItem;
diff --git a/MediaBrowser.Server.Implementations/Dto/MediaStreamSelector.cs b/MediaBrowser.Server.Implementations/Dto/MediaStreamSelector.cs
index e5a859cdc..10c78b300 100644
--- a/MediaBrowser.Server.Implementations/Dto/MediaStreamSelector.cs
+++ b/MediaBrowser.Server.Implementations/Dto/MediaStreamSelector.cs
@@ -64,7 +64,7 @@ namespace MediaBrowser.Server.Implementations.Dto
// always load the most suitable full subtitles
stream = full.FirstOrDefault();
}
-
+
// load forced subs if we have found no suitable full subtitles
stream = stream ?? forced.FirstOrDefault();
@@ -86,17 +86,13 @@ namespace MediaBrowser.Server.Implementations.Dto
var orderStreams = streams
.Where(i => i.Type == type);
- if (languagePreferences.Count == 0)
- {
- return orderStreams.OrderBy(i => i.IsDefault)
- .ThenBy(i => i.Index)
- .ToList();
- }
-
+ // Give some preferance to external text subs for better performance
return orderStreams.OrderBy(i => languagePreferences.FindIndex(l => string.Equals(i.Language, l, StringComparison.OrdinalIgnoreCase)))
- .ThenBy(i => i.IsDefault)
- .ThenBy(i => i.Index)
- .ToList();
+ .ThenBy(i => i.IsDefault)
+ .ThenBy(i => !i.IsGraphicalSubtitleStream)
+ .ThenBy(i => i.IsExternal)
+ .ThenBy(i => i.Index)
+ .ToList();
}
}
}
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index daed33436..f72cfc7df 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -150,6 +150,32 @@ namespace MediaBrowser.Server.Implementations.LiveTv
channels = channels
.Where(i => _userDataManager.GetUserData(user.Id, i.GetUserDataKey()).IsFavorite == val);
}
+
+ if (query.IsLiked.HasValue)
+ {
+ var val = query.IsLiked.Value;
+
+ channels = channels
+ .Where(i =>
+ {
+ var likes = _userDataManager.GetUserData(user.Id, i.GetUserDataKey()).Likes;
+
+ return likes.HasValue && likes.Value == val;
+ });
+ }
+
+ if (query.IsDisliked.HasValue)
+ {
+ var val = query.IsDisliked.Value;
+
+ channels = channels
+ .Where(i =>
+ {
+ var likes = _userDataManager.GetUserData(user.Id, i.GetUserDataKey()).Likes;
+
+ return likes.HasValue && likes.Value != val;
+ });
+ }
}
channels = channels.OrderBy(i =>
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json
index 7658b07f1..019039725 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/server.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json
@@ -785,5 +785,6 @@
"HeaderLiveTv": "Live TV",
"HeaderReports": "Reports",
"HeaderMetadataManager": "Metadata Manager",
- "HeaderPreferences": "Preferences"
+ "HeaderPreferences": "Preferences",
+ "MessageLoadingChannels": "Loading channel content..."
} \ No newline at end of file
diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec
index 5f90fd709..2f54f7952 100644
--- a/Nuget/MediaBrowser.Common.Internal.nuspec
+++ b/Nuget/MediaBrowser.Common.Internal.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common.Internal</id>
- <version>3.0.374</version>
+ <version>3.0.378</version>
<title>MediaBrowser.Common.Internal</title>
<authors>Luke</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.374" />
+ <dependency id="MediaBrowser.Common" version="3.0.378" />
<dependency id="NLog" version="2.1.0" />
<dependency id="SimpleInjector" version="2.5.0" />
<dependency id="sharpcompress" version="0.10.2" />
diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec
index bb936bc0c..4155976b4 100644
--- a/Nuget/MediaBrowser.Common.nuspec
+++ b/Nuget/MediaBrowser.Common.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common</id>
- <version>3.0.374</version>
+ <version>3.0.378</version>
<title>MediaBrowser.Common</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec
index e3bc343ab..38111ed1a 100644
--- a/Nuget/MediaBrowser.Server.Core.nuspec
+++ b/Nuget/MediaBrowser.Server.Core.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>MediaBrowser.Server.Core</id>
- <version>3.0.374</version>
+ <version>3.0.378</version>
<title>Media Browser.Server.Core</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains core components required to build plugins for Media Browser Server.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.374" />
+ <dependency id="MediaBrowser.Common" version="3.0.378" />
</dependencies>
</metadata>
<files>