Procházet zdrojové kódy

add short overview

Luke Pulverenti před 11 roky
rodič
revize
22fc0b442a

+ 8 - 3
MediaBrowser.Api/BaseApiService.cs

@@ -88,9 +88,14 @@ namespace MediaBrowser.Api
         {
             var auth = AuthorizationRequestFilterAttribute.GetAuthorization(Request);
 
-            return sessionManager.Sessions.First(i => string.Equals(i.DeviceId, auth.DeviceId) &&
-                string.Equals(i.Client, auth.Client) &&
-                string.Equals(i.ApplicationVersion, auth.Version));
+            var session = sessionManager.GetSession(auth.DeviceId, auth.Client, auth.Version);
+
+            if (session == null)
+            {
+                throw new ArgumentException("Session not found.");
+            }
+
+            return session;
         }
 
         /// <summary>

+ 8 - 17
MediaBrowser.Api/SessionsService.cs

@@ -285,7 +285,7 @@ namespace MediaBrowser.Api
                 SeekPositionTicks = request.SeekPositionTicks
             };
 
-            var task = _sessionManager.SendPlaystateCommand(GetSession().Id, request.Id, command, CancellationToken.None);
+            var task = _sessionManager.SendPlaystateCommand(GetSession(_sessionManager).Id, request.Id, command, CancellationToken.None);
 
             Task.WaitAll(task);
         }
@@ -303,7 +303,7 @@ namespace MediaBrowser.Api
                 ItemType = request.ItemType
             };
 
-            var task = _sessionManager.SendBrowseCommand(GetSession().Id, request.Id, command, CancellationToken.None);
+            var task = _sessionManager.SendBrowseCommand(GetSession(_sessionManager).Id, request.Id, command, CancellationToken.None);
 
             Task.WaitAll(task);
         }
@@ -318,7 +318,7 @@ namespace MediaBrowser.Api
 
             if (Enum.TryParse(request.Command, true, out commandType))
             {
-                var currentSession = GetSession();
+                var currentSession = GetSession(_sessionManager);
 
                 var command = new GeneralCommand
                 {
@@ -345,7 +345,7 @@ namespace MediaBrowser.Api
                 Text = request.Text
             };
 
-            var task = _sessionManager.SendMessageCommand(GetSession().Id, request.Id, command, CancellationToken.None);
+            var task = _sessionManager.SendMessageCommand(GetSession(_sessionManager).Id, request.Id, command, CancellationToken.None);
 
             Task.WaitAll(task);
         }
@@ -364,14 +364,14 @@ namespace MediaBrowser.Api
                 StartPositionTicks = request.StartPositionTicks
             };
 
-            var task = _sessionManager.SendPlayCommand(GetSession().Id, request.Id, command, CancellationToken.None);
+            var task = _sessionManager.SendPlayCommand(GetSession(_sessionManager).Id, request.Id, command, CancellationToken.None);
 
             Task.WaitAll(task);
         }
 
         public void Post(SendGeneralCommand request)
         {
-            var currentSession = GetSession();
+            var currentSession = GetSession(_sessionManager);
 
             var command = new GeneralCommand
             {
@@ -386,7 +386,7 @@ namespace MediaBrowser.Api
 
         public void Post(SendFullGeneralCommand request)
         {
-            var currentSession = GetSession();
+            var currentSession = GetSession(_sessionManager);
 
             request.ControllingUserId = currentSession.UserId.HasValue ? currentSession.UserId.Value.ToString("N") : null;
 
@@ -409,7 +409,7 @@ namespace MediaBrowser.Api
         {
             if (string.IsNullOrWhiteSpace(request.Id))
             {
-                request.Id = GetSession().Id;
+                request.Id = GetSession(_sessionManager).Id;
             }
             _sessionManager.ReportCapabilities(request.Id, new SessionCapabilities
             {
@@ -422,14 +422,5 @@ namespace MediaBrowser.Api
                 MessageCallbackUrl = request.MessageCallbackUrl
             });
         }
-
-        private SessionInfo GetSession()
-        {
-            var auth = AuthorizationRequestFilterAttribute.GetAuthorization(Request);
-
-            return _sessionManager.Sessions.First(i => string.Equals(i.DeviceId, auth.DeviceId) &&
-                string.Equals(i.Client, auth.Client) &&
-                string.Equals(i.ApplicationVersion, auth.Version));
-        }
     }
 }

+ 9 - 0
MediaBrowser.Controller/Session/ISessionManager.cs

@@ -239,5 +239,14 @@ namespace MediaBrowser.Controller.Session
         /// </summary>
         /// <param name="deviceId">The device identifier.</param>
         void ClearTranscodingInfo(string deviceId);
+
+        /// <summary>
+        /// Gets the session.
+        /// </summary>
+        /// <param name="deviceId">The device identifier.</param>
+        /// <param name="client">The client.</param>
+        /// <param name="version">The version.</param>
+        /// <returns>SessionInfo.</returns>
+        SessionInfo GetSession(string deviceId, string client, string version);
     }
 }

+ 0 - 28
MediaBrowser.Dlna/PlayTo/TransportCommands.cs

@@ -146,34 +146,6 @@ namespace MediaBrowser.Dlna.PlayTo
             return string.Format(CommandBase, action.Name, xmlNamesapce, stateString);
         }
 
-        public string BuildSearchPost(ServiceAction action, string xmlNamesapce, object value, string commandParameter = "")
-        {
-            var stateString = string.Empty;
-
-            foreach (var arg in action.ArgumentList)
-            {
-                if (arg.Direction == "out")
-                    continue;
-
-                if (arg.Name == "ObjectID")
-                    stateString += BuildArgumentXml(arg, value.ToString());
-                else if (arg.Name == "Filter")
-                    stateString += BuildArgumentXml(arg, "*");
-                else if (arg.Name == "StartingIndex")
-                    stateString += BuildArgumentXml(arg, "0");
-                else if (arg.Name == "RequestedCount")
-                    stateString += BuildArgumentXml(arg, "200");
-                else if (arg.Name == "BrowseFlag")
-                    stateString += BuildArgumentXml(arg, null, "BrowseDirectChildren");
-                else if (arg.Name == "SortCriteria")
-                    stateString += BuildArgumentXml(arg, "");
-                else
-                    stateString += BuildArgumentXml(arg, value.ToString(), commandParameter);
-            }
-
-            return string.Format(CommandBase, action.Name, xmlNamesapce, stateString);
-        }
-
         public string BuildPost(ServiceAction action, string xmlNamesapce, object value, Dictionary<string, string> dictionary)
         {
             var stateString = string.Empty;

+ 6 - 0
MediaBrowser.Providers/Savers/XmlSaverHelpers.cs

@@ -72,6 +72,7 @@ namespace MediaBrowser.Providers.Savers
                     "MusicbrainzId",
 
                     "Overview",
+                    "ShortOverview",
                     "Persons",
                     "PlotKeywords",
                     "PremiereDate",
@@ -257,6 +258,11 @@ namespace MediaBrowser.Providers.Savers
                 }
             }
 
+            if (!string.IsNullOrEmpty(item.Overview))
+            {
+                builder.Append("<Overview><![CDATA[" + item.Overview + "]]></Overview>");
+            }
+            
             var hasShortOverview = item as IHasShortOverview;
             if (hasShortOverview != null)
             {

+ 20 - 29
MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs

@@ -67,32 +67,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio
         /// <returns><c>true</c> if [is music album] [the specified data]; otherwise, <c>false</c>.</returns>
         public static bool IsMusicAlbum(string path, IDirectoryService directoryService)
         {
-            // If list contains at least 2 audio files or at least one and no video files consider it to contain music
-            var foundAudio = 0;
-
-            foreach (var file in directoryService.GetFiles(path))
-            {
-                var fullName = file.FullName;
-
-                if (EntityResolutionHelper.IsAudioFile(fullName))
-                {
-                    // Don't resolve these into audio files
-                    if (string.Equals(Path.GetFileNameWithoutExtension(fullName), BaseItem.ThemeSongFilename) && EntityResolutionHelper.IsAudioFile(fullName))
-                    {
-                        continue;
-                    }
-
-                    foundAudio++;
-                }
-                if (foundAudio >= 2)
-                {
-                    return true;
-                }
-                if (EntityResolutionHelper.IsVideoFile(fullName)) return false;
-            }
-
-            //  or a single audio file and no video files
-            return foundAudio > 0;
+            return ContainsMusic(directoryService.GetFileSystemEntries(path));
         }
 
         /// <summary>
@@ -122,15 +97,31 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio
             // If list contains at least 2 audio files or at least one and no video files consider it to contain music
             var foundAudio = 0;
 
-            foreach (var file in list)
+            foreach (var fileSystemInfo in list)
             {
-                var fullName = file.FullName;
+                // TODO: Support disc 1, disc 2, etc
+                if ((fileSystemInfo.Attributes & FileAttributes.Directory) == FileAttributes.Directory)
+                {
+                    continue;
+                }
+
+                var fullName = fileSystemInfo.FullName;
 
-                if (EntityResolutionHelper.IsAudioFile(fullName)) foundAudio++;
+                if (EntityResolutionHelper.IsAudioFile(fullName))
+                {
+                    // Don't resolve these into audio files
+                    if (string.Equals(Path.GetFileNameWithoutExtension(fullName), BaseItem.ThemeSongFilename) && EntityResolutionHelper.IsAudioFile(fullName))
+                    {
+                        continue;
+                    }
+
+                    foundAudio++;
+                }
                 if (foundAudio >= 2)
                 {
                     return true;
                 }
+
                 if (EntityResolutionHelper.IsVideoFile(fullName)) return false;
                 if (EntityResolutionHelper.IsVideoPlaceHolder(fullName)) return false;
             }

+ 6 - 0
MediaBrowser.Server.Implementations/Session/SessionManager.cs

@@ -1516,5 +1516,11 @@ namespace MediaBrowser.Server.Implementations.Session
         {
             ReportTranscodingInfo(deviceId, null);
         }
+
+        public SessionInfo GetSession(string deviceId, string client, string version)
+        {
+            return Sessions.FirstOrDefault(i => string.Equals(i.DeviceId, deviceId) &&
+                string.Equals(i.Client, client));
+        }
     }
 }

+ 5 - 13
MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs

@@ -113,21 +113,13 @@ namespace MediaBrowser.Server.Implementations.Session
             var version = vals[2];
             var deviceName = vals.Length > 3 ? vals[3] : string.Empty;
 
-            var session = _sessionManager.Sessions
-                .FirstOrDefault(i => string.Equals(i.DeviceId, deviceId) &&
-                    string.Equals(i.Client, client) &&
-                    string.Equals(i.ApplicationVersion, version));
+            var session = _sessionManager.GetSession(deviceId, client, version);
 
             if (session == null && !string.IsNullOrEmpty(deviceName))
             {
                 _logger.Debug("Logging session activity");
 
-                await _sessionManager.LogSessionActivity(client, version, deviceId, deviceName, message.Connection.RemoteEndPoint, null).ConfigureAwait(false);
-
-                session = _sessionManager.Sessions
-                    .FirstOrDefault(i => string.Equals(i.DeviceId, deviceId) &&
-                        string.Equals(i.Client, client) &&
-                        string.Equals(i.ApplicationVersion, version));
+                session = await _sessionManager.LogSessionActivity(client, version, deviceId, deviceName, message.Connection.RemoteEndPoint, null).ConfigureAwait(false);
             }
 
             if (session != null)
@@ -197,7 +189,7 @@ namespace MediaBrowser.Server.Implementations.Session
         }
 
         private readonly CultureInfo _usCulture = new CultureInfo("en-US");
-        
+
         /// <summary>
         /// Reports the playback start.
         /// </summary>
@@ -284,7 +276,7 @@ namespace MediaBrowser.Server.Implementations.Session
                 _sessionManager.OnPlaybackProgress(info);
             }
         }
-        
+
         /// <summary>
         /// Reports the playback progress.
         /// </summary>
@@ -362,7 +354,7 @@ namespace MediaBrowser.Server.Implementations.Session
                 _sessionManager.OnPlaybackStopped(info);
             }
         }
-        
+
         /// <summary>
         /// Reports the playback stopped.
         /// </summary>