diff options
| author | Claus Vium <cvium@users.noreply.github.com> | 2022-01-19 14:36:50 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-19 14:36:50 +0100 |
| commit | 8b36bc0ade036557769270f67c402ce94795b04b (patch) | |
| tree | ef0e93a0fe20a440c06574a3d16f53d7dd05facc | |
| parent | 1a32153a31c9417efd52574fa44d6c337ccce3dd (diff) | |
| parent | 8b706cebef8bbb82e3bc91ee7527fb4be15ee505 (diff) | |
Merge pull request #7203 from 1337joe/fix-resolving-local-alternates
Fix resolving local alternates
3 files changed, 43 insertions, 21 deletions
diff --git a/Emby.Naming/Common/NamingOptions.cs b/Emby.Naming/Common/NamingOptions.cs index e8c855b5a..eb211050f 100644 --- a/Emby.Naming/Common/NamingOptions.cs +++ b/Emby.Naming/Common/NamingOptions.cs @@ -591,6 +591,10 @@ namespace Emby.Naming.Common MediaType.Video) }; + AllExtrasTypesFolderNames = VideoExtraRules + .Where(i => i.RuleType == ExtraRuleType.DirectoryName) + .ToDictionary(i => i.Token, i => i.ExtraType, StringComparer.OrdinalIgnoreCase); + Format3DRules = new[] { // Kodi rules: @@ -679,6 +683,10 @@ namespace Emby.Naming.Common ".mxf" }); + VideoFileExtensions = extensions + .Distinct(StringComparer.OrdinalIgnoreCase) + .ToArray(); + MultipleEpisodeExpressions = new[] { @".*(\\|\/)[sS]?(?<seasonnumber>[0-9]{1,4})[xX](?<epnumber>[0-9]{1,3})((-| - )[0-9]{1,4}[eExX](?<endingepnumber>[0-9]{1,3}))+[^\\\/]*$", @@ -696,25 +704,6 @@ namespace Emby.Naming.Common IsNamed = true }).ToArray(); - VideoFileExtensions = extensions - .Distinct(StringComparer.OrdinalIgnoreCase) - .ToArray(); - - AllExtrasTypesFolderNames = new Dictionary<string, ExtraType>(StringComparer.OrdinalIgnoreCase) - { - ["trailers"] = ExtraType.Trailer, - ["theme-music"] = ExtraType.ThemeSong, - ["backdrops"] = ExtraType.ThemeVideo, - ["extras"] = ExtraType.Unknown, - ["behind the scenes"] = ExtraType.BehindTheScenes, - ["deleted scenes"] = ExtraType.DeletedScene, - ["interviews"] = ExtraType.Interview, - ["scenes"] = ExtraType.Scene, - ["samples"] = ExtraType.Sample, - ["shorts"] = ExtraType.Clip, - ["featurettes"] = ExtraType.Clip - }; - Compile(); } diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index 1a9295dc8..122e9654a 100644 --- a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs @@ -128,10 +128,9 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies return movie?.ExtraType == null ? movie : null; } - // Owned items will be caught by the video extra resolver if (args.Parent == null) { - return null; + return base.Resolve(args); } if (IsInvalid(args.Parent, collectionType)) diff --git a/tests/Jellyfin.Server.Implementations.Tests/Library/MovieResolverTests.cs b/tests/Jellyfin.Server.Implementations.Tests/Library/MovieResolverTests.cs new file mode 100644 index 000000000..f2efcddba --- /dev/null +++ b/tests/Jellyfin.Server.Implementations.Tests/Library/MovieResolverTests.cs @@ -0,0 +1,34 @@ +using Emby.Naming.Common; +using Emby.Server.Implementations.Library.Resolvers.Movies; +using MediaBrowser.Controller; +using MediaBrowser.Controller.Drawing; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.IO; +using Moq; +using Xunit; + +namespace Jellyfin.Server.Implementations.Tests.Library; + +public class MovieResolverTests +{ + private static readonly NamingOptions _namingOptions = new(); + + [Fact] + public void Resolve_GivenLocalAlternateVersion_ResolvesToVideo() + { + var movieResolver = new MovieResolver(Mock.Of<IImageProcessor>(), _namingOptions); + var itemResolveArgs = new ItemResolveArgs( + Mock.Of<IServerApplicationPaths>(), + Mock.Of<IDirectoryService>()) + { + Parent = null, + FileInfo = new FileSystemMetadata + { + FullName = "/movies/Black Panther (2018)/Black Panther (2018) - 1080p 3D.mk3d" + } + }; + + Assert.NotNull(movieResolver.Resolve(itemResolveArgs)); + } +} |
