From 982a30394018a9262aae0fafc56c736635ba27ed Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 29 Aug 2013 17:00:27 -0400 Subject: [PATCH] added IsMuted to playback progress --- MediaBrowser.Api/UserLibrary/UserLibraryService.cs | 5 ++++- .../Dto/SessionInfoDtoBuilder.cs | 1 + MediaBrowser.Controller/Entities/BaseItem.cs | 2 +- MediaBrowser.Controller/Entities/Trailer.cs | 13 +++++++++++++ MediaBrowser.Controller/Session/ISessionManager.cs | 2 +- MediaBrowser.Controller/Session/SessionInfo.cs | 8 +++++++- MediaBrowser.Model/ApiClient/IApiClient.cs | 4 ++-- MediaBrowser.Model/Session/SessionInfoDto.cs | 8 +++++++- .../MediaInfo/FFProbeAudioInfoProvider.cs | 2 ++ .../Library/Resolvers/Movies/MovieResolver.cs | 10 +++++----- .../Session/SessionManager.cs | 11 ++++++----- .../Session/SessionWebSocketListener.cs | 3 ++- MediaBrowser.WebDashboard/ApiClient.js | 8 ++++++-- MediaBrowser.WebDashboard/packages.config | 2 +- Nuget/MediaBrowser.Common.Internal.nuspec | 4 ++-- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 ++-- 17 files changed, 63 insertions(+), 26 deletions(-) diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs index 304ff27d03..a6c53b4a42 100644 --- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs +++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs @@ -265,6 +265,9 @@ namespace MediaBrowser.Api.UserLibrary [ApiMember(Name = "IsPaused", Description = "Indicates if the player is paused.", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "POST")] public bool IsPaused { get; set; } + + [ApiMember(Name = "IsMuted", Description = "Indicates if the player is muted.", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "POST")] + public bool IsMuted { get; set; } } /// @@ -640,7 +643,7 @@ namespace MediaBrowser.Api.UserLibrary var item = DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id); - var task = _sessionManager.OnPlaybackProgress(item, request.PositionTicks, request.IsPaused, GetSession().Id); + var task = _sessionManager.OnPlaybackProgress(item, request.PositionTicks, request.IsPaused, request.IsMuted, GetSession().Id); Task.WaitAll(task); } diff --git a/MediaBrowser.Controller/Dto/SessionInfoDtoBuilder.cs b/MediaBrowser.Controller/Dto/SessionInfoDtoBuilder.cs index bd8eb41e3c..01baa73564 100644 --- a/MediaBrowser.Controller/Dto/SessionInfoDtoBuilder.cs +++ b/MediaBrowser.Controller/Dto/SessionInfoDtoBuilder.cs @@ -25,6 +25,7 @@ namespace MediaBrowser.Controller.Dto NowPlayingPositionTicks = session.NowPlayingPositionTicks, SupportsRemoteControl = session.SupportsRemoteControl, IsPaused = session.IsPaused, + IsMuted = session.IsMuted, NowViewingContext = session.NowViewingContext, NowViewingItemId = session.NowViewingItemId, NowViewingItemName = session.NowViewingItemName, diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index a75dc47e1d..3c8c2411ec 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -1211,7 +1211,7 @@ namespace MediaBrowser.Controller.Entities else { // Check for dupes based on the combination of Name and Type - if (!People.Any(p => p.Name.Equals(person.Name, StringComparison.OrdinalIgnoreCase) && p.Type.Equals(person.Type, StringComparison.OrdinalIgnoreCase))) + if (!People.Any(p => string.Equals(p.Name, person.Name, StringComparison.OrdinalIgnoreCase) && string.Equals(p.Type, person.Type, StringComparison.OrdinalIgnoreCase))) { People.Add(person); } diff --git a/MediaBrowser.Controller/Entities/Trailer.cs b/MediaBrowser.Controller/Entities/Trailer.cs index ed20d05b04..044de3d6b5 100644 --- a/MediaBrowser.Controller/Entities/Trailer.cs +++ b/MediaBrowser.Controller/Entities/Trailer.cs @@ -1,4 +1,5 @@ using System.Runtime.Serialization; +using MediaBrowser.Model.Entities; namespace MediaBrowser.Controller.Entities { @@ -47,5 +48,17 @@ namespace MediaBrowser.Controller.Entities { get { return !IsLocalTrailer; } } + + public override string GetUserDataKey() + { + var key = this.GetProviderId(MetadataProviders.Tmdb) ?? this.GetProviderId(MetadataProviders.Tvdb) ?? this.GetProviderId(MetadataProviders.Imdb) ?? this.GetProviderId(MetadataProviders.Tvcom); + + if (!string.IsNullOrWhiteSpace(key)) + { + return key + "-trailer"; + } + + return base.GetUserDataKey(); + } } } diff --git a/MediaBrowser.Controller/Session/ISessionManager.cs b/MediaBrowser.Controller/Session/ISessionManager.cs index 2af2bbec90..1976c653a6 100644 --- a/MediaBrowser.Controller/Session/ISessionManager.cs +++ b/MediaBrowser.Controller/Session/ISessionManager.cs @@ -62,7 +62,7 @@ namespace MediaBrowser.Controller.Session /// The session id. /// Task. /// - Task OnPlaybackProgress(BaseItem item, long? positionTicks, bool isPaused, Guid sessionId); + Task OnPlaybackProgress(BaseItem item, long? positionTicks, bool isPaused, bool isMuted, Guid sessionId); /// /// Used to report that playback has ended for an item diff --git a/MediaBrowser.Controller/Session/SessionInfo.cs b/MediaBrowser.Controller/Session/SessionInfo.cs index 177573de6a..6c0f1a0854 100644 --- a/MediaBrowser.Controller/Session/SessionInfo.cs +++ b/MediaBrowser.Controller/Session/SessionInfo.cs @@ -87,8 +87,14 @@ namespace MediaBrowser.Controller.Session /// Gets or sets a value indicating whether this instance is paused. /// /// true if this instance is paused; otherwise, false. - public bool? IsPaused { get; set; } + public bool IsPaused { get; set; } + /// + /// Gets or sets a value indicating whether this instance is muted. + /// + /// true if this instance is muted; otherwise, false. + public bool IsMuted { get; set; } + /// /// Gets or sets the device id. /// diff --git a/MediaBrowser.Model/ApiClient/IApiClient.cs b/MediaBrowser.Model/ApiClient/IApiClient.cs index eaa3dc15aa..f4483e2e2d 100644 --- a/MediaBrowser.Model/ApiClient/IApiClient.cs +++ b/MediaBrowser.Model/ApiClient/IApiClient.cs @@ -467,7 +467,7 @@ namespace MediaBrowser.Model.ApiClient /// if set to true [is paused]. /// Task{UserItemDataDto}. /// itemId - Task ReportPlaybackProgressAsync(string itemId, string userId, long? positionTicks, bool isPaused); + Task ReportPlaybackProgressAsync(string itemId, string userId, long? positionTicks, bool isPaused, bool isMuted); /// /// Reports to the server that the user has stopped playing an item @@ -588,7 +588,7 @@ namespace MediaBrowser.Model.ApiClient /// The display preferences. /// Task{DisplayPreferences}. /// userId - Task UpdateDisplayPreferencesAsync(DisplayPreferences displayPreferences, string userId, string client); + Task UpdateDisplayPreferencesAsync(DisplayPreferences displayPreferences, string userId, string client, CancellationToken cancellationToken); /// /// Posts a set of data to a url, and deserializes the return stream into T diff --git a/MediaBrowser.Model/Session/SessionInfoDto.cs b/MediaBrowser.Model/Session/SessionInfoDto.cs index cddfecdd1c..11fc3479b9 100644 --- a/MediaBrowser.Model/Session/SessionInfoDto.cs +++ b/MediaBrowser.Model/Session/SessionInfoDto.cs @@ -75,8 +75,14 @@ namespace MediaBrowser.Model.Session /// Gets or sets a value indicating whether this instance is paused. /// /// true if this instance is paused; otherwise, false. - public bool? IsPaused { get; set; } + public bool IsPaused { get; set; } + /// + /// Gets or sets a value indicating whether this instance is muted. + /// + /// true if this instance is muted; otherwise, false. + public bool IsMuted { get; set; } + /// /// Gets or sets the now playing item. /// diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfoProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfoProvider.cs index 9f89300aed..edaef5b043 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfoProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeAudioInfoProvider.cs @@ -108,6 +108,8 @@ namespace MediaBrowser.Providers.MediaInfo if (!audio.LockedFields.Contains(MetadataFields.Cast)) { + audio.People.Clear(); + var composer = GetDictionaryValue(tags, "composer"); if (!string.IsNullOrWhiteSpace(composer)) diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index d62baddecb..18f4641412 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs @@ -106,14 +106,14 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies return FindMovie(args.Path, args.FileSystemChildren); } - if (!string.IsNullOrEmpty(collectionType) && - !string.Equals(collectionType, CollectionType.Movies, StringComparison.OrdinalIgnoreCase) && - !string.Equals(collectionType, CollectionType.BoxSets, StringComparison.OrdinalIgnoreCase)) + if (string.IsNullOrEmpty(collectionType) || + string.Equals(collectionType, CollectionType.Movies, StringComparison.OrdinalIgnoreCase) || + string.Equals(collectionType, CollectionType.BoxSets, StringComparison.OrdinalIgnoreCase)) { - return null; + return FindMovie(args.Path, args.FileSystemChildren); } - return FindMovie(args.Path, args.FileSystemChildren); + return null; } // Find movies that are mixed in the same folder diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs index 697e13517a..4ba0a22ee8 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs @@ -159,8 +159,9 @@ namespace MediaBrowser.Server.Implementations.Session /// The item. /// if set to true [is paused]. /// The current position ticks. - private void UpdateNowPlayingItem(SessionInfo session, BaseItem item, bool isPaused, long? currentPositionTicks = null) + private void UpdateNowPlayingItem(SessionInfo session, BaseItem item, bool isPaused, bool isMuted, long? currentPositionTicks = null) { + session.IsMuted = isMuted; session.IsPaused = isPaused; session.NowPlayingPositionTicks = currentPositionTicks; session.NowPlayingItem = item; @@ -178,7 +179,7 @@ namespace MediaBrowser.Server.Implementations.Session { session.NowPlayingItem = null; session.NowPlayingPositionTicks = null; - session.IsPaused = null; + session.IsPaused = false; } } @@ -225,7 +226,7 @@ namespace MediaBrowser.Server.Implementations.Session var session = Sessions.First(i => i.Id.Equals(sessionId)); - UpdateNowPlayingItem(session, item, false); + UpdateNowPlayingItem(session, item, false, false); var key = item.GetUserDataKey(); @@ -262,7 +263,7 @@ namespace MediaBrowser.Server.Implementations.Session /// Task. /// /// positionTicks - public async Task OnPlaybackProgress(BaseItem item, long? positionTicks, bool isPaused, Guid sessionId) + public async Task OnPlaybackProgress(BaseItem item, long? positionTicks, bool isPaused, bool isMuted, Guid sessionId) { if (item == null) { @@ -276,7 +277,7 @@ namespace MediaBrowser.Server.Implementations.Session var session = Sessions.First(i => i.Id.Equals(sessionId)); - UpdateNowPlayingItem(session, item, isPaused, positionTicks); + UpdateNowPlayingItem(session, item, isPaused, isMuted, positionTicks); var key = item.GetUserDataKey(); diff --git a/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs b/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs index 40c06fdf2d..893a6e49e8 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs @@ -137,8 +137,9 @@ namespace MediaBrowser.Server.Implementations.Session } var isPaused = vals.Length > 2 && string.Equals(vals[2], "true", StringComparison.OrdinalIgnoreCase); + var isMuted = vals.Length > 3 && string.Equals(vals[3], "true", StringComparison.OrdinalIgnoreCase); - _sessionManager.OnPlaybackProgress(item, positionTicks, isPaused, session.Id); + _sessionManager.OnPlaybackProgress(item, positionTicks, isPaused, isMuted, session.Id); } } else if (string.Equals(message.MessageType, "PlaybackStopped", StringComparison.OrdinalIgnoreCase)) diff --git a/MediaBrowser.WebDashboard/ApiClient.js b/MediaBrowser.WebDashboard/ApiClient.js index 6262d760ec..8666006f54 100644 --- a/MediaBrowser.WebDashboard/ApiClient.js +++ b/MediaBrowser.WebDashboard/ApiClient.js @@ -3354,7 +3354,7 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) { * @param {String} userId * @param {String} itemId */ - self.reportPlaybackProgress = function (userId, itemId, positionTicks, isPaused) { + self.reportPlaybackProgress = function (userId, itemId, positionTicks, isPaused, isMuted) { if (!userId) { throw new Error("null userId"); @@ -3368,13 +3368,17 @@ MediaBrowser.ApiClient = function ($, navigator, JSON, WebSocket, setTimeout) { var deferred = $.Deferred(); - self.sendWebSocketMessage("PlaybackProgress", itemId + "|" + (positionTicks == null ? "" : positionTicks) + "|" + (isPaused == null ? "" : isPaused)); + var msgData = itemId + "|" + (positionTicks == null ? "" : positionTicks) + "|" + (isPaused == null ? "" : isPaused) + "|" + (isMuted == null ? "" : isMuted); + + self.sendWebSocketMessage("PlaybackProgress", msgData;); deferred.resolveWith(null, []); return deferred.promise(); } var params = { + isPaused: isPaused, + isMuted: isMuted }; if (positionTicks) { diff --git a/MediaBrowser.WebDashboard/packages.config b/MediaBrowser.WebDashboard/packages.config index 9f7b690af2..94873bf7d9 100644 --- a/MediaBrowser.WebDashboard/packages.config +++ b/MediaBrowser.WebDashboard/packages.config @@ -1,6 +1,6 @@  - + \ No newline at end of file diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index 11868b7006..156b69094e 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.187 + 3.0.188 MediaBrowser.Common.Internal Luke ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption. Copyright © Media Browser 2013 - + diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index b4f36a6822..e1e4adcb11 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.187 + 3.0.188 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index fc070f5728..3038388665 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.187 + 3.0.188 Media Browser.Server.Core Media Browser Team ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains core components required to build plugins for Media Browser Server. Copyright © Media Browser 2013 - +