aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaus Vium <cvium@users.noreply.github.com>2022-01-15 20:24:14 +0100
committerGitHub <noreply@github.com>2022-01-15 20:24:14 +0100
commit1d7ec1071fd0743219ff82f49157d8032641e828 (patch)
treec61346d111584cbf5f9fd4ff36fcd01792deaf23
parentd88e39b71db1eff5d650cfc815019c25ad299172 (diff)
parent19b9646d72bb8793392d4afa3616e1ed341a5f13 (diff)
Merge pull request #7186 from 1337joe/extra-rule-reorder
Order extra rules so directory takes precedence over naming
-rw-r--r--Emby.Naming/Common/NamingOptions.cs118
-rw-r--r--tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs46
2 files changed, 95 insertions, 69 deletions
diff --git a/Emby.Naming/Common/NamingOptions.cs b/Emby.Naming/Common/NamingOptions.cs
index c0be0b7c6..e8c855b5a 100644
--- a/Emby.Naming/Common/NamingOptions.cs
+++ b/Emby.Naming/Common/NamingOptions.cs
@@ -411,6 +411,66 @@ namespace Emby.Naming.Common
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,
"trailer",
@@ -471,24 +531,12 @@ namespace Emby.Naming.Common
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,
"-scene",
@@ -537,51 +585,9 @@ namespace Emby.Naming.Common
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",
+ 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 de4421320..f5c8cc970 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]
@@ -92,7 +94,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 +143,21 @@ public class FindExtrasTests
}
}).Verifiable();
+ _fileSystemMock.Setup(f => f.GetFiles(
+ "/movies/Up/extras",
+ It.IsAny<string[]>(),
+ false,
+ false))
+ .Returns(new List<FileSystemMetadata>
+ {
+ 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 +168,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]