diff options
7 files changed, 80 insertions, 51 deletions
diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs index 8d07b10ce..ef6c29550 100644 --- a/MediaBrowser.Api/Playback/BaseStreamingService.cs +++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs @@ -1535,16 +1535,6 @@ namespace MediaBrowser.Api.Playback } } - var headers = new Dictionary<string, string>(); - foreach (var key in Request.Headers.AllKeys) - { - headers[key] = Request.Headers[key]; - } - - state.DeviceProfile = string.IsNullOrWhiteSpace(state.Request.DeviceProfileId) ? - DlnaManager.GetProfile(headers) : - DlnaManager.GetProfile(state.Request.DeviceProfileId); - return state; } @@ -1669,6 +1659,16 @@ namespace MediaBrowser.Api.Playback private void ApplyDeviceProfileSettings(StreamState state) { + var headers = new Dictionary<string, string>(); + foreach (var key in Request.Headers.AllKeys) + { + headers[key] = Request.Headers[key]; + } + + state.DeviceProfile = string.IsNullOrWhiteSpace(state.Request.DeviceProfileId) ? + DlnaManager.GetProfile(headers) : + DlnaManager.GetProfile(state.Request.DeviceProfileId); + var profile = state.DeviceProfile; if (profile == null) diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 3a0b251ee..52c6e951e 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -1501,6 +1501,13 @@ namespace MediaBrowser.Controller.Entities return userdata != null && userdata.Played; } + public bool IsFavoriteOrLiked(User user) + { + var userdata = UserDataManager.GetUserData(user.Id, GetUserDataKey()); + + return userdata != null && (userdata.IsFavorite || (userdata.Likes ?? false)); + } + public virtual bool IsUnplayed(User user) { var userdata = UserDataManager.GetUserData(user.Id, GetUserDataKey()); diff --git a/MediaBrowser.Model/Dlna/DeviceProfile.cs b/MediaBrowser.Model/Dlna/DeviceProfile.cs index 42ba5840c..a3e217ef3 100644 --- a/MediaBrowser.Model/Dlna/DeviceProfile.cs +++ b/MediaBrowser.Model/Dlna/DeviceProfile.cs @@ -318,44 +318,5 @@ namespace MediaBrowser.Model.Dlna } return null; } - - public ResponseProfile GetPhotoMediaProfile(string container, int? width, int? height) - { - container = (container ?? string.Empty).TrimStart('.'); - - foreach (var i in ResponseProfiles) - { - if (i.Type != DlnaProfileType.Photo) - { - continue; - } - - List<string> containers = i.GetContainers().ToList(); - if (containers.Count > 0 && !containers.Contains(container, StringComparer.OrdinalIgnoreCase)) - { - continue; - } - - ConditionProcessor conditionProcessor = new ConditionProcessor(); - - var anyOff = false; - foreach (ProfileCondition c in i.Conditions) - { - if (!conditionProcessor.IsImageConditionSatisfied(c, width, height)) - { - anyOff = true; - break; - } - } - - if (anyOff) - { - continue; - } - - return i; - } - return null; - } } } diff --git a/MediaBrowser.Model/Querying/ItemSortBy.cs b/MediaBrowser.Model/Querying/ItemSortBy.cs index c91e0bafa..14b80853a 100644 --- a/MediaBrowser.Model/Querying/ItemSortBy.cs +++ b/MediaBrowser.Model/Querying/ItemSortBy.cs @@ -82,5 +82,6 @@ namespace MediaBrowser.Model.Querying public const string Studio = "Studio"; public const string Players = "Players"; public const string GameSystem = "GameSystem"; + public const string IsFavoriteOrLiked = "IsFavoriteOrLiked"; } } diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs index 538e6a0fd..f1558e9de 100644 --- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs +++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs @@ -162,8 +162,9 @@ namespace MediaBrowser.Server.Implementations.Channels var channelGuid = new Guid(item.ChannelId); var channel = _channelEntities.First(i => i.Id == channelGuid); + var internalChannel = _channels.First(i => string.Equals(i.Name, channel.OriginalChannelName, StringComparison.OrdinalIgnoreCase)); - var requiresCallback = channel as IRequiresMediaInfoCallback; + var requiresCallback = internalChannel as IRequiresMediaInfoCallback; if (requiresCallback != null) { @@ -403,7 +404,7 @@ namespace MediaBrowser.Server.Implementations.Channels private string GetIdToHash(string externalId) { // Increment this as needed to force new downloads - return externalId + "7"; + return externalId + "8"; } private async Task<BaseItem> GetChannelItemEntity(ChannelItemInfo info, string internalChannnelId, CancellationToken cancellationToken) diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index 2a1492c1f..0bfaca1e4 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -227,6 +227,7 @@ <Compile Include="Sorting\DateCreatedComparer.cs" /> <Compile Include="Sorting\DatePlayedComparer.cs" /> <Compile Include="Sorting\GameSystemComparer.cs" /> + <Compile Include="Sorting\IsFavoriteOrLikeComparer.cs" /> <Compile Include="Sorting\IsFolderComparer.cs" /> <Compile Include="Sorting\IsPlayedComparer.cs" /> <Compile Include="Sorting\IsUnplayedComparer.cs" /> diff --git a/MediaBrowser.Server.Implementations/Sorting/IsFavoriteOrLikeComparer.cs b/MediaBrowser.Server.Implementations/Sorting/IsFavoriteOrLikeComparer.cs new file mode 100644 index 000000000..658708dba --- /dev/null +++ b/MediaBrowser.Server.Implementations/Sorting/IsFavoriteOrLikeComparer.cs @@ -0,0 +1,58 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Sorting; +using MediaBrowser.Model.Querying; + +namespace MediaBrowser.Server.Implementations.Sorting +{ + public class IsFavoriteOrLikeComparer : IUserBaseItemComparer + { + /// <summary> + /// Gets or sets the user. + /// </summary> + /// <value>The user.</value> + public User User { get; set; } + + /// <summary> + /// Compares the specified x. + /// </summary> + /// <param name="x">The x.</param> + /// <param name="y">The y.</param> + /// <returns>System.Int32.</returns> + public int Compare(BaseItem x, BaseItem y) + { + return GetValue(x).CompareTo(GetValue(y)); + } + + /// <summary> + /// Gets the date. + /// </summary> + /// <param name="x">The x.</param> + /// <returns>DateTime.</returns> + private int GetValue(BaseItem x) + { + return x.IsFavoriteOrLiked(User) ? 0 : 1; + } + + /// <summary> + /// Gets the name. + /// </summary> + /// <value>The name.</value> + public string Name + { + get { return ItemSortBy.IsFavoriteOrLiked; } + } + + /// <summary> + /// Gets or sets the user data repository. + /// </summary> + /// <value>The user data repository.</value> + public IUserDataManager UserDataRepository { get; set; } + + /// <summary> + /// Gets or sets the user manager. + /// </summary> + /// <value>The user manager.</value> + public IUserManager UserManager { get; set; } + } +}
\ No newline at end of file |
