Merge pull request #17310 from TowyTowy/fix/format3d-trailing-token

Fix 3D format detection when the tag is the last token of the path
This commit is contained in:
Bond-009
2026-07-28 20:05:51 +02:00
committed by GitHub
2 changed files with 30 additions and 4 deletions
+9 -4
View File
@@ -52,13 +52,18 @@ namespace Emby.Naming.Video
while (path.Length > 0)
{
var index = path.IndexOfAny(delimiters);
ReadOnlySpan<char> currentSlice;
if (index == -1)
{
index = path.Length - 1;
// No delimiter left, the last token is the remainder of the path
currentSlice = path;
path = default;
}
else
{
currentSlice = path[..index];
path = path[(index + 1)..];
}
var currentSlice = path[..index];
path = path[(index + 1)..];
if (!foundPrefix)
{
@@ -19,6 +19,27 @@ namespace Jellyfin.Naming.Tests.Video
Test("Super movie 3d hsbs.mp4", true, "hsbs");
}
[Fact]
public void TestFormat3DAtEndOfPath()
{
// Directory based media (eg. DVD or BluRay folder rips) have no file extension,
// so the 3D tag can be the last token of the path.
Test("Super movie (2009) 3d hsbs", true, "hsbs");
Test("Super movie (2009).3d.sbs", true, "sbs");
Test("Super movie (2009) 3d htab", true, "htab");
Test("Super movie (2009).hsbs", true, "hsbs");
Test("Super movie (2009) 3d", false, null);
}
[Fact]
public void TestResolveDirectory3D()
{
var result = VideoResolver.ResolveDirectory("/movies/Oblivion (2013) 3d hsbs", _namingOptions);
Assert.True(result?.Is3D);
Assert.Equal("hsbs", result?.Format3D, true);
}
[Fact]
public void Test3DName()
{