Browse Source

Change owner and parent id of extras to the main media item

Claus Vium 6 years ago
parent
commit
c1daea0ec7
1 changed files with 15 additions and 2 deletions
  1. 15 2
      MediaBrowser.Controller/Entities/BaseItem.cs

+ 15 - 2
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -1481,7 +1481,10 @@ namespace MediaBrowser.Controller.Entities
 
         private async Task<bool> RefreshExtras(BaseItem item, MetadataRefreshOptions options, List<FileSystemMetadata> fileSystemChildren, CancellationToken cancellationToken)
         {
-            var newExtras = LoadExtras(fileSystemChildren, options.DirectoryService).Concat(LoadThemeVideos(fileSystemChildren, options.DirectoryService)).Concat(LoadThemeSongs(fileSystemChildren, options.DirectoryService));
+            var newExtras = LoadExtras(fileSystemChildren, options.DirectoryService)
+                .Concat(LoadThemeVideos(fileSystemChildren, options.DirectoryService))
+                .Concat(LoadThemeSongs(fileSystemChildren, options.DirectoryService))
+                .ToArray();
 
             var newExtraIds = newExtras.Select(i => i.Id).ToArray();
 
@@ -1493,7 +1496,17 @@ namespace MediaBrowser.Controller.Entities
 
                 var tasks = newExtras.Select(i =>
                 {
-                    return RefreshMetadataForOwnedItem(i, true, new MetadataRefreshOptions(options), cancellationToken);
+                    var subOptions = new MetadataRefreshOptions(options);
+                    if (!i.ExtraType.HasValue ||
+                        i.OwnerId != ownerId ||
+                        !i.ParentId.Equals(Guid.Empty))
+                    {
+                        i.OwnerId = ownerId;
+                        i.ParentId = Guid.Empty;
+                        subOptions.ForceSave = true;
+                    }
+
+                    return RefreshMetadataForOwnedItem(i, true, subOptions, cancellationToken);
                 });
 
                 await Task.WhenAll(tasks).ConfigureAwait(false);