From c7ce1aa4c760797b3e8059a549ac5f59298ee065 Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Sun, 2 Jun 2024 22:33:02 +0200 Subject: [PATCH 1/4] Fix dateadded and movie NFO recognition --- .../Manager/MetadataService.cs | 4 ++-- .../Savers/MovieNfoSaver.cs | 17 +++++++---------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index 0a98967da4..e990f50b7a 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/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); } } } @@ -1103,7 +1103,7 @@ namespace MediaBrowser.Providers.Manager target.IsLocked = target.IsLocked || source.IsLocked; } - if (target.LockedFields.Length == 0) + if (replaceData || target.LockedFields.Length == 0) { target.LockedFields = source.LockedFields; } diff --git a/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs index 8fa22fad94..bc344d87e0 100644 --- a/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs +++ b/MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs @@ -45,27 +45,24 @@ namespace MediaBrowser.XbmcMetadata.Savers internal static IEnumerable 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"); } + // 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(path, "movie.nfo"); + } + if (!item.IsPlaceHolder && (item.VideoType == VideoType.Dvd || item.VideoType == VideoType.BluRay)) { - var path = item.ContainingFolderPath; - 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"); } } From 8f7df590cde07ab81ebb2988f5bf11fb26eafc9a Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Wed, 5 Jun 2024 19:16:14 +0200 Subject: [PATCH 2/4] Do not replace locked fields --- MediaBrowser.Providers/Manager/MetadataService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index e990f50b7a..508897e9d8 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -1103,7 +1103,7 @@ namespace MediaBrowser.Providers.Manager target.IsLocked = target.IsLocked || source.IsLocked; } - if (replaceData || target.LockedFields.Length == 0) + if (target.LockedFields.Length == 0) { target.LockedFields = source.LockedFields; } From 7058db2b044c7dcf899e84b9280ed401f5ef299a Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Wed, 5 Jun 2024 20:57:19 +0200 Subject: [PATCH 3/4] Fix test --- .../Location/MovieNfoLocationTests.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/Jellyfin.XbmcMetadata.Tests/Location/MovieNfoLocationTests.cs b/tests/Jellyfin.XbmcMetadata.Tests/Location/MovieNfoLocationTests.cs index 8019e0ab39..0136f7f692 100644 --- a/tests/Jellyfin.XbmcMetadata.Tests/Location/MovieNfoLocationTests.cs +++ b/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()) @@ -57,9 +58,10 @@ namespace Jellyfin.XbmcMetadata.Tests.Location } 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); } } } From 7cbdb6708b4a6165b2dc5e19129ecc6b985e63a6 Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Wed, 5 Jun 2024 22:15:51 +0200 Subject: [PATCH 4/4] Fix windows test --- .../Location/MovieNfoLocationTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/Jellyfin.XbmcMetadata.Tests/Location/MovieNfoLocationTests.cs b/tests/Jellyfin.XbmcMetadata.Tests/Location/MovieNfoLocationTests.cs index 0136f7f692..2f05c4ea20 100644 --- a/tests/Jellyfin.XbmcMetadata.Tests/Location/MovieNfoLocationTests.cs +++ b/tests/Jellyfin.XbmcMetadata.Tests/Location/MovieNfoLocationTests.cs @@ -55,6 +55,7 @@ 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();