Browse Source

dlna fix for media monkey

Luke Pulverenti 10 years ago
parent
commit
4d57e9b63e

+ 4 - 0
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -1522,6 +1522,10 @@ namespace MediaBrowser.Api.Playback
                 {
                     request.LiveStreamId = val;
                 }
+                else if (i == 24)
+                {
+                    // Duplicating ItemId because of MediaMonkey
+                }
             }
         }
 

+ 11 - 0
MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs

@@ -638,6 +638,17 @@ namespace MediaBrowser.Dlna.ContentDirectory
             Guid itemId;
             StubType? stubType = null;
 
+            // After using PlayTo, MediaMonkey sends a request to the server trying to get item info
+            const string paramsSrch = "Params=";
+            var paramsIndex = id.IndexOf(paramsSrch, StringComparison.OrdinalIgnoreCase);
+            if (paramsIndex != -1)
+            {
+                id = id.Substring(paramsIndex + paramsSrch.Length);
+
+                var parts = id.Split(';');
+                id = parts[24];
+            }
+
             if (id.StartsWith("folder_", StringComparison.OrdinalIgnoreCase))
             {
                 stubType = StubType.Folder;

+ 5 - 0
MediaBrowser.Model/Dlna/StreamInfo.cs

@@ -233,6 +233,11 @@ namespace MediaBrowser.Model.Dlna
             string liveStreamId = item.MediaSource == null ? null : item.MediaSource.LiveStreamId;
             list.Add(new NameValuePair("LiveStreamId", liveStreamId ?? string.Empty));
 
+            if (isDlna)
+            {
+                list.Add(new NameValuePair("ItemId", item.ItemId));
+            }
+            
             return list;
         }
 

+ 11 - 14
MediaBrowser.Providers/Manager/MetadataService.cs

@@ -360,7 +360,7 @@ namespace MediaBrowser.Providers.Manager
             // If replacing all metadata, run internet providers first
             if (options.ReplaceAllMetadata)
             {
-                var remoteResult = await ExecuteRemoteProviders(item, temp, logName, id, providers.OfType<IRemoteMetadataProvider<TItemType, TIdType>>(), cancellationToken)
+                var remoteResult = await ExecuteRemoteProviders(temp, logName, id, providers.OfType<IRemoteMetadataProvider<TItemType, TIdType>>(), cancellationToken)
                     .ConfigureAwait(false);
 
                 refreshResult.UpdateType = refreshResult.UpdateType | remoteResult.UpdateType;
@@ -372,9 +372,8 @@ namespace MediaBrowser.Providers.Manager
 
             var hasLocalMetadata = false;
             var userDataList = new List<UserItemData>();
-            var localProviders = providers.OfType<ILocalMetadataProvider<TItemType>>().ToList();
 
-            foreach (var provider in localProviders)
+            foreach (var provider in providers.OfType<ILocalMetadataProvider<TItemType>>().ToList())
             {
                 var providerName = provider.GetType().Name;
                 Logger.Debug("Running {0} for {1}", providerName, logName);
@@ -433,7 +432,7 @@ namespace MediaBrowser.Providers.Manager
             // Local metadata is king - if any is found don't run remote providers
             if (!options.ReplaceAllMetadata && (!hasLocalMetadata || options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh))
             {
-                var remoteResult = await ExecuteRemoteProviders(item, temp, logName, id, providers.OfType<IRemoteMetadataProvider<TItemType, TIdType>>(), cancellationToken)
+                var remoteResult = await ExecuteRemoteProviders(temp, logName, id, providers.OfType<IRemoteMetadataProvider<TItemType, TIdType>>(), cancellationToken)
                     .ConfigureAwait(false);
 
                 refreshResult.UpdateType = refreshResult.UpdateType | remoteResult.UpdateType;
@@ -447,17 +446,15 @@ namespace MediaBrowser.Providers.Manager
 
             if (providers.Any(i => !(i is ICustomMetadataProvider)))
             {
-                // If no local providers and doing a full refresh, take data from item itself
-                if (options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh &&
-                    localProviders.Count == 0 &&
-                    refreshResult.UpdateType > ItemUpdateType.None)
-                {
-                    // TODO: If the new metadata from above has some blank data, this can cause old data to get filled into those empty fields
-                    MergeData(item, temp, new List<MetadataFields>(), false, true);
-                }
-
                 if (refreshResult.UpdateType > ItemUpdateType.None)
                 {
+                    // If no local metadata, take data from item itself
+                    if (!hasLocalMetadata)
+                    {
+                        // TODO: If the new metadata from above has some blank data, this can cause old data to get filled into those empty fields
+                        MergeData(item, temp, new List<MetadataFields>(), false, true);
+                    }
+
                     MergeData(temp, item, item.LockedFields, true, true);
                 }
             }
@@ -529,7 +526,7 @@ namespace MediaBrowser.Providers.Manager
             return new TItemType();
         }
 
-        private async Task<RefreshResult> ExecuteRemoteProviders(TItemType item, TItemType temp, string logName, TIdType id, IEnumerable<IRemoteMetadataProvider<TItemType, TIdType>> providers, CancellationToken cancellationToken)
+        private async Task<RefreshResult> ExecuteRemoteProviders(TItemType temp, string logName, TIdType id, IEnumerable<IRemoteMetadataProvider<TItemType, TIdType>> providers, CancellationToken cancellationToken)
         {
             var refreshResult = new RefreshResult();
 

+ 1 - 1
MediaBrowser.Server.Implementations/Localization/Server/server.json

@@ -1432,7 +1432,7 @@
     "MyPreferencesWelcomeMessage2": "Would you like to set your preferences now?",
     "ToAccessPreferencesHelp": "To access your preferences later, click your user icon in the top right header and select My Preferences.",
     "HeaderViewStyles": "View Styles",
-    "LabelSelectViewStyles": "Enable rich presentations for:",
+    "LabelSelectViewStyles": "Enable enhanced presentations for:",
     "LabelSelectViewStylesHelp": "If enabled, views will be built with metadata to offer categories such as Suggestions, Latest, Genres, and more. If disabled, they'll be displayed with simple folders.",
     "TabPhotos": "Photos",
     "TabVideos": "Videos"