Browse Source

Merge pull request #11935 from Shadowghost/fix-movie-nfo

Fix dateadded and movie NFO recognition
Joshua M. Boniface 1 year ago
parent
commit
0c039145e5

+ 1 - 1
MediaBrowser.Providers/Manager/MetadataService.cs

@@ -763,7 +763,7 @@ namespace MediaBrowser.Providers.Manager
                     else
                     {
                         var shouldReplace = options.MetadataRefreshMode > MetadataRefreshMode.ValidationOnly || options.ReplaceAllMetadata;
-                        MergeData(temp, metadata, item.LockedFields, shouldReplace, false);
+                        MergeData(temp, metadata, item.LockedFields, shouldReplace, true);
                     }
                 }
             }

+ 7 - 10
MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs

@@ -45,27 +45,24 @@ namespace MediaBrowser.XbmcMetadata.Savers
 
         internal static IEnumerable<string> GetMovieSavePaths(ItemInfo item)
         {
+            var path = item.ContainingFolderPath;
             if (item.VideoType == VideoType.Dvd && !item.IsPlaceHolder)
             {
-                var path = item.ContainingFolderPath;
-
                 yield return Path.Combine(path, "VIDEO_TS", "VIDEO_TS.nfo");
             }
 
-            if (!item.IsPlaceHolder && (item.VideoType == VideoType.Dvd || item.VideoType == VideoType.BluRay))
+            // only allow movie object to read movie.nfo, not owned videos (which will be itemtype video, not movie)
+            if (!item.IsInMixedFolder && item.ItemType == typeof(Movie))
             {
-                var path = item.ContainingFolderPath;
+                yield return Path.Combine(path, "movie.nfo");
+            }
 
+            if (!item.IsPlaceHolder && (item.VideoType == VideoType.Dvd || item.VideoType == VideoType.BluRay))
+            {
                 yield return Path.Combine(path, Path.GetFileName(path) + ".nfo");
             }
             else
             {
-                // only allow movie object to read movie.nfo, not owned videos (which will be itemtype video, not movie)
-                if (!item.IsInMixedFolder && item.ItemType == typeof(Movie))
-                {
-                    yield return Path.Combine(item.ContainingFolderPath, "movie.nfo");
-                }
-
                 yield return Path.ChangeExtension(item.Path, ".nfo");
             }
         }

+ 4 - 1
tests/Jellyfin.XbmcMetadata.Tests/Location/MovieNfoLocationTests.cs

@@ -47,6 +47,7 @@ namespace Jellyfin.XbmcMetadata.Tests.Location
             var movie = new Movie() { Path = "/media/movies/Avengers Endgame", VideoType = VideoType.Dvd };
             var path1 = "/media/movies/Avengers Endgame/Avengers Endgame.nfo";
             var path2 = "/media/movies/Avengers Endgame/VIDEO_TS/VIDEO_TS.nfo";
+            var path3 = "/media/movies/Avengers Endgame/movie.nfo";
 
             // uses ContainingFolderPath which uses Operating system specific paths
             if (OperatingSystem.IsWindows())
@@ -54,12 +55,14 @@ namespace Jellyfin.XbmcMetadata.Tests.Location
                 movie.Path = movie.Path.Replace('/', '\\');
                 path1 = path1.Replace('/', '\\');
                 path2 = path2.Replace('/', '\\');
+                path3 = path3.Replace('/', '\\');
             }
 
             var paths = MovieNfoSaver.GetMovieSavePaths(new ItemInfo(movie)).ToArray();
-            Assert.Equal(2, paths.Length);
+            Assert.Equal(3, paths.Length);
             Assert.Contains(path1, paths);
             Assert.Contains(path2, paths);
+            Assert.Contains(path3, paths);
         }
     }
 }