From 2749509f001505d35863db4b53bb4bc6c3af6fa4 Mon Sep 17 00:00:00 2001 From: cvium Date: Tue, 28 Dec 2021 00:37:40 +0100 Subject: Use dedicated resolvers for extras --- .../Library/Resolvers/GenericVideoResolver.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs (limited to 'Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs') diff --git a/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs b/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs new file mode 100644 index 000000000..27d781148 --- /dev/null +++ b/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs @@ -0,0 +1,18 @@ +#nullable disable + +#pragma warning disable CS1591 + +using Emby.Naming.Common; +using MediaBrowser.Controller.Entities; + +namespace Emby.Server.Implementations.Library.Resolvers +{ + public class GenericVideoResolver : BaseVideoResolver + where T : Video, new() + { + public GenericVideoResolver(NamingOptions namingOptions) + : base(namingOptions) + { + } + } +} -- cgit v1.2.3 From 58b9e5af79be32fdc5c7ca1c5542206fdea85257 Mon Sep 17 00:00:00 2001 From: Claus Vium Date: Sat, 1 Jan 2022 14:52:54 +0100 Subject: Update Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs Co-authored-by: Joe Rogers <1337joe@users.noreply.github.com> --- .../Library/Resolvers/GenericVideoResolver.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs') diff --git a/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs b/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs index 27d781148..9b6838660 100644 --- a/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs @@ -1,15 +1,21 @@ #nullable disable -#pragma warning disable CS1591 - using Emby.Naming.Common; using MediaBrowser.Controller.Entities; namespace Emby.Server.Implementations.Library.Resolvers { + /// + /// Resolves a Path into a Video or Video subclass. + /// + /// The type of item to resolve. public class GenericVideoResolver : BaseVideoResolver where T : Video, new() { + /// + /// Initializes a new instance of the class. + /// + /// The naming options. public GenericVideoResolver(NamingOptions namingOptions) : base(namingOptions) { -- cgit v1.2.3 From 28c2ac9cc0c2c7d9ed6e38b8de83755899e210f5 Mon Sep 17 00:00:00 2001 From: cvium Date: Sat, 1 Jan 2022 20:07:03 +0100 Subject: Remove file extension filter and fix build --- .../Library/LibraryManager.cs | 2 +- .../Library/Resolvers/GenericVideoResolver.cs | 4 +- .../Library/LibraryManager/FindExtrasTests.cs | 49 ++++++++++++++++++++-- 3 files changed, 48 insertions(+), 7 deletions(-) (limited to 'Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs') diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index 694501d38..855fcc813 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -2700,7 +2700,7 @@ namespace Emby.Server.Implementations.Library var current = fileSystemChildren[i]; if (current.IsDirectory && _namingOptions.AllExtrasTypesFolderNames.ContainsKey(current.Name)) { - var filesInSubFolder = _fileSystem.GetFiles(current.FullName, _namingOptions.VideoFileExtensions, false, false); + var filesInSubFolder = _fileSystem.GetFiles(current.FullName, null, false, false); foreach (var file in filesInSubFolder) { if (!_extraResolver.TryGetExtraTypeForOwner(file.FullName, ownerVideoInfo, out var extraType)) diff --git a/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs b/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs index 9b6838660..b8554bd51 100644 --- a/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/GenericVideoResolver.cs @@ -6,14 +6,14 @@ using MediaBrowser.Controller.Entities; namespace Emby.Server.Implementations.Library.Resolvers { /// - /// Resolves a Path into a Video or Video subclass. + /// Resolves a Path into an instance of the class. /// /// The type of item to resolve. public class GenericVideoResolver : BaseVideoResolver where T : Video, new() { /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// The naming options. public GenericVideoResolver(NamingOptions namingOptions) diff --git a/tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs b/tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs index 5be111ad9..de4421320 100644 --- a/tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs +++ b/tests/Jellyfin.Server.Implementations.Tests/Library/LibraryManager/FindExtrasTests.cs @@ -108,7 +108,7 @@ public class FindExtrasTests Name = "some trailer.mkv", IsDirectory = false } - }); + }).Verifiable(); _fileSystemMock.Setup(f => f.GetFiles( "/movies/Up/behind the scenes", @@ -123,7 +123,7 @@ public class FindExtrasTests Name = "the making of Up.mkv", IsDirectory = false } - }); + }).Verifiable(); _fileSystemMock.Setup(f => f.GetFiles( "/movies/Up/theme-music", @@ -138,17 +138,18 @@ public class FindExtrasTests Name = "theme2.mp3", IsDirectory = false } - }); + }).Verifiable(); var files = paths.Select(p => new FileSystemMetadata { FullName = p, Name = Path.GetFileName(p), - IsDirectory = string.IsNullOrEmpty(Path.GetExtension(p)) + IsDirectory = !Path.HasExtension(p) }).ToList(); 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()); @@ -215,6 +216,46 @@ public class FindExtrasTests Assert.Equal("/movies/Up/trailer.mkv", extras[0].Path); } + [Fact] + public void FindExtras_WrongExtensions_FindsNoExtras() + { + var owner = new Movie { Name = "Up", Path = "/movies/Up/Up.mkv" }; + var paths = new List + { + "/movies/Up/Up.mkv", + "/movies/Up/trailer.noext", + "/movies/Up/theme.png", + "/movies/Up/trailers" + }; + + var files = paths.Select(p => new FileSystemMetadata + { + FullName = p, + Name = Path.GetFileName(p), + IsDirectory = !Path.HasExtension(p) + }).ToList(); + + _fileSystemMock.Setup(f => f.GetFiles( + "/movies/Up/trailers", + It.IsAny(), + false, + false)) + .Returns(new List + { + new() + { + FullName = "/movies/Up/trailers/trailer.jpg", + Name = "trailer.jpg", + IsDirectory = false + } + }).Verifiable(); + + var extras = _libraryManager.FindExtras(owner, files, new DirectoryService(_fileSystemMock.Object)).OrderBy(e => e.ExtraType).ToList(); + + _fileSystemMock.Verify(); + Assert.Empty(extras); + } + [Fact] public void FindExtras_SeriesWithTrailers_FindsCorrectExtras() { -- cgit v1.2.3