Przeglądaj źródła

Require delimiter immediately after filename match

Joe Rogers 3 lat temu
rodzic
commit
cf033b25f8

+ 10 - 2
MediaBrowser.Providers/MediaInfo/MediaInfoResolver.cs

@@ -43,6 +43,11 @@ namespace MediaBrowser.Providers.MediaInfo
         /// </summary>
         private readonly IMediaEncoder _mediaEncoder;
 
+        /// <summary>
+        /// The <see cref="NamingOptions"/> instance.
+        /// </summary>
+        private readonly NamingOptions _namingOptions;
+
         /// <summary>
         /// The <see cref="DlnaProfileType"/> of the files this resolver should resolve.
         /// </summary>
@@ -62,6 +67,7 @@ namespace MediaBrowser.Providers.MediaInfo
             DlnaProfileType type)
         {
             _mediaEncoder = mediaEncoder;
+            _namingOptions = namingOptions;
             _type = type;
             _externalPathParser = new ExternalPathParser(namingOptions, localizationManager, _type);
         }
@@ -159,9 +165,11 @@ namespace MediaBrowser.Providers.MediaInfo
 
             foreach (var file in files)
             {
-                if (_compareInfo.IsPrefix(Path.GetFileNameWithoutExtension(file), video.FileNameWithoutExtension, CompareOptions, out int matchLength))
+                var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(file);
+                if (_compareInfo.IsPrefix(fileNameWithoutExtension, video.FileNameWithoutExtension, CompareOptions, out int matchLength)
+                    && (fileNameWithoutExtension.Length == matchLength || _namingOptions.MediaFlagDelimiters.Contains(fileNameWithoutExtension[matchLength].ToString())))
                 {
-                    var externalPathInfo = _externalPathParser.ParseFile(file, Path.GetFileNameWithoutExtension(file)[matchLength..]);
+                    var externalPathInfo = _externalPathParser.ParseFile(file, fileNameWithoutExtension[matchLength..]);
 
                     if (externalPathInfo != null)
                     {

+ 1 - 1
tests/Jellyfin.Providers.Tests/MediaInfo/MediaInfoResolverTests.cs

@@ -113,7 +113,7 @@ public class MediaInfoResolverTests
     [InlineData("My.Video.mp3")]
     [InlineData("My.Video.png")]
     [InlineData("My.Video.txt")]
-    // [InlineData("My.Video Sequel.srt")]
+    [InlineData("My.Video Sequel.srt")]
     [InlineData("Some.Other.Video.srt")]
     public void GetExternalFiles_FuzzyMatching_RejectsNonMatches(string file)
     {