From f11fa59b153571d98ab7e61bc150e14f3ae3a870 Mon Sep 17 00:00:00 2001 From: Joe Rogers <1337joe@gmail.com> Date: Sat, 15 Jan 2022 15:16:11 +0100 Subject: [PATCH 1/2] Order rules so directory takes precedence over naming --- Emby.Naming/Common/NamingOptions.cs | 120 +++++++++--------- .../Library/LibraryManager/FindExtrasTests.cs | 34 +++-- 2 files changed, 86 insertions(+), 68 deletions(-) diff --git a/Emby.Naming/Common/NamingOptions.cs b/Emby.Naming/Common/NamingOptions.cs index c0be0b7c62..6197faf50f 100644 --- a/Emby.Naming/Common/NamingOptions.cs +++ b/Emby.Naming/Common/NamingOptions.cs @@ -410,6 +410,66 @@ namespace Emby.Naming.Common "trailers", MediaType.Video), + new ExtraRule( + ExtraType.ThemeVideo, + ExtraRuleType.DirectoryName, + "backdrops", + MediaType.Video), + + new ExtraRule( + ExtraType.ThemeSong, + ExtraRuleType.DirectoryName, + "theme-music", + MediaType.Audio), + + new ExtraRule( + ExtraType.BehindTheScenes, + ExtraRuleType.DirectoryName, + "behind the scenes", + MediaType.Video), + + new ExtraRule( + ExtraType.DeletedScene, + ExtraRuleType.DirectoryName, + "deleted scenes", + MediaType.Video), + + new ExtraRule( + ExtraType.Interview, + ExtraRuleType.DirectoryName, + "interviews", + MediaType.Video), + + new ExtraRule( + ExtraType.Scene, + ExtraRuleType.DirectoryName, + "scenes", + MediaType.Video), + + new ExtraRule( + ExtraType.Sample, + ExtraRuleType.DirectoryName, + "samples", + MediaType.Video), + + new ExtraRule( + ExtraType.Clip, + ExtraRuleType.DirectoryName, + "shorts", + MediaType.Video), + + new ExtraRule( + ExtraType.Clip, + ExtraRuleType.DirectoryName, + "featurettes", + MediaType.Video), + + new ExtraRule( + ExtraType.Unknown, + ExtraRuleType.DirectoryName, + "extras", + MediaType.Video), + new ExtraRule( ExtraType.Trailer, ExtraRuleType.Filename, @@ -470,24 +530,12 @@ namespace Emby.Naming.Common " sample", MediaType.Video), - new ExtraRule( - ExtraType.ThemeVideo, - ExtraRuleType.DirectoryName, - "backdrops", - MediaType.Video), - new ExtraRule( ExtraType.ThemeSong, ExtraRuleType.Filename, "theme", MediaType.Audio), - new ExtraRule( - ExtraType.ThemeSong, - ExtraRuleType.DirectoryName, - "theme-music", - MediaType.Audio), - new ExtraRule( ExtraType.Scene, ExtraRuleType.Suffix, @@ -534,54 +582,6 @@ namespace Emby.Naming.Common ExtraType.Clip, ExtraRuleType.Suffix, "-short", - MediaType.Video), - - new ExtraRule( - ExtraType.BehindTheScenes, - ExtraRuleType.DirectoryName, - "behind the scenes", - MediaType.Video), - - new ExtraRule( - ExtraType.DeletedScene, - ExtraRuleType.DirectoryName, - "deleted scenes", - MediaType.Video), - - new ExtraRule( - ExtraType.Interview, - ExtraRuleType.DirectoryName, - "interviews", - MediaType.Video), - - new ExtraRule( - ExtraType.Scene, - ExtraRuleType.DirectoryName, - "scenes", - MediaType.Video), - - new ExtraRule( - ExtraType.Sample, - ExtraRuleType.DirectoryName, - "samples", - MediaType.Video), - - new ExtraRule( - ExtraType.Clip, - ExtraRuleType.DirectoryName, - "shorts", - MediaType.Video), - - new ExtraRule( - ExtraType.Clip, - ExtraRuleType.DirectoryName, - "featurettes", - MediaType.Video), - - new ExtraRule( - ExtraType.Unknown, - ExtraRuleType.DirectoryName, - "extras", MediaType.Video) }; diff --git a/tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs b/tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs index de44213207..166b618cf9 100644 --- a/tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs +++ b/tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs @@ -92,7 +92,8 @@ public class FindExtrasTests "/movies/Up/behind the scenes", "/movies/Up/behind the scenes.mkv", "/movies/Up/Up - sample.mkv", - "/movies/Up/Up something else.mkv" + "/movies/Up/Up something else.mkv", + "/movies/Up/extras" }; _fileSystemMock.Setup(f => f.GetFiles( @@ -140,6 +141,21 @@ public class FindExtrasTests } }).Verifiable(); + _fileSystemMock.Setup(f => f.GetFiles( + "/movies/Up/extras", + It.IsAny(), + false, + false)) + .Returns(new List + { + new() + { + FullName = "/movies/Up/extras/Honest Trailer.mkv", + Name = "Honest Trailer.mkv", + IsDirectory = false + } + }).Verifiable(); + var files = paths.Select(p => new FileSystemMetadata { FullName = p, @@ -150,17 +166,19 @@ public class FindExtrasTests var extras = _libraryManager.FindExtras(owner, files, new DirectoryService(_fileSystemMock.Object)).OrderBy(e => e.ExtraType).ToList(); _fileSystemMock.Verify(); - Assert.Equal(6, extras.Count); - Assert.Equal(ExtraType.Trailer, extras[0].ExtraType); - Assert.Equal(typeof(Trailer), extras[0].GetType()); + Assert.Equal(7, extras.Count); + Assert.Equal(ExtraType.Unknown, extras[0].ExtraType); + Assert.Equal(typeof(Video), extras[0].GetType()); Assert.Equal(ExtraType.Trailer, extras[1].ExtraType); Assert.Equal(typeof(Trailer), extras[1].GetType()); - Assert.Equal(ExtraType.BehindTheScenes, extras[2].ExtraType); - Assert.Equal(ExtraType.Sample, extras[3].ExtraType); - Assert.Equal(ExtraType.ThemeSong, extras[4].ExtraType); - Assert.Equal(typeof(Audio), extras[4].GetType()); + Assert.Equal(ExtraType.Trailer, extras[2].ExtraType); + Assert.Equal(typeof(Trailer), extras[2].GetType()); + Assert.Equal(ExtraType.BehindTheScenes, extras[3].ExtraType); + Assert.Equal(ExtraType.Sample, extras[4].ExtraType); Assert.Equal(ExtraType.ThemeSong, extras[5].ExtraType); Assert.Equal(typeof(Audio), extras[5].GetType()); + Assert.Equal(ExtraType.ThemeSong, extras[6].ExtraType); + Assert.Equal(typeof(Audio), extras[6].GetType()); } [Fact] From 19b9646d72bb8793392d4afa3616e1ed341a5f13 Mon Sep 17 00:00:00 2001 From: Joe Rogers <1337joe@gmail.com> Date: Sat, 15 Jan 2022 15:34:34 +0100 Subject: [PATCH 2/2] Add -extra suffix for consistency --- Emby.Naming/Common/NamingOptions.cs | 6 ++++++ .../Library/LibraryManager/FindExtrasTests.cs | 12 +++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Emby.Naming/Common/NamingOptions.cs b/Emby.Naming/Common/NamingOptions.cs index 6197faf50f..e8c855b5a9 100644 --- a/Emby.Naming/Common/NamingOptions.cs +++ b/Emby.Naming/Common/NamingOptions.cs @@ -582,6 +582,12 @@ namespace Emby.Naming.Common ExtraType.Clip, ExtraRuleType.Suffix, "-short", + MediaType.Video), + + new ExtraRule( + ExtraType.Unknown, + ExtraRuleType.Suffix, + "-extra", MediaType.Video) }; diff --git a/tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs b/tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs index 166b618cf9..f5c8cc9708 100644 --- a/tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs +++ b/tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs @@ -60,7 +60,8 @@ public class FindExtrasTests "/movies/Up/Up.mkv", "/movies/Up/Up - trailer.mkv", "/movies/Up/Up - sample.mkv", - "/movies/Up/Up something else.mkv" + "/movies/Up/Up something else.mkv", + "/movies/Up/Up-extra.mkv" }; var files = paths.Select(p => new FileSystemMetadata @@ -71,10 +72,11 @@ public class FindExtrasTests var extras = _libraryManager.FindExtras(owner, files, new DirectoryService(_fileSystemMock.Object)).OrderBy(e => e.ExtraType).ToList(); - Assert.Equal(2, extras.Count); - Assert.Equal(ExtraType.Trailer, extras[0].ExtraType); - Assert.Equal(typeof(Trailer), extras[0].GetType()); - Assert.Equal(ExtraType.Sample, extras[1].ExtraType); + Assert.Equal(3, extras.Count); + Assert.Equal(ExtraType.Unknown, extras[0].ExtraType); + Assert.Equal(ExtraType.Trailer, extras[1].ExtraType); + Assert.Equal(typeof(Trailer), extras[1].GetType()); + Assert.Equal(ExtraType.Sample, extras[2].ExtraType); } [Fact]