Browse Source

Fix episode parsing

Bond_009 5 years ago
parent
commit
620047ab9a

+ 1 - 1
Emby.Naming/Common/NamingOptions.cs

@@ -277,7 +277,7 @@ namespace Emby.Naming.Common
                 // This isn't a Kodi naming rule, but the expression below causes false positives,
                 // so we make sure this one gets tested first.
                 // "Foo Bar 889"
-                new EpisodeExpression(@".*[\\\/](?![Ee]pisode)(?<seriesname>[\w\s]+?)\s(?<epnumber>\d{1,3})(-(?<endingepnumber>\d{2,3}))*[^\\\/]*$")
+                new EpisodeExpression(@".*[\\\/](?![Ee]pisode)(?<seriesname>[\w\s]+?)\s(?<epnumber>\d{1,3})(-(?<endingepnumber>\d{2,3}))*[^\\\/x]*$")
                 {
                     IsNamed = true
                 },

+ 16 - 3
tests/Jellyfin.Naming.Tests/TV/EpisodeNumberTests.cs

@@ -6,6 +6,21 @@ namespace Jellyfin.Naming.Tests.TV
 {
     public class EpisodeNumberTests
     {
+        private readonly NamingOptions _namingOptions = new NamingOptions();
+
+        [Theory]
+        [InlineData("Watchmen (2019)/Watchmen 1x03 [WEBDL-720p][EAC3 5.1][h264][-TBS] - She Was Killed by Space Junk.mkv", 3)]
+        [InlineData("The Daily Show/The Daily Show 25x22 - [WEBDL-720p][AAC 2.0][x264] Noah Baumbach-TBS.mkv", 22)]
+        [InlineData("Castle Rock 2x01 Que el rio siga su curso [WEB-DL HULU 1080p h264 Dual DD5.1 Subs].mkv", 1)]
+        [InlineData("'After Life 1x06 Episodio 6 [WEB-DL NF 1080p h264 Dual DD 5.1 Sub].mkv", 6)]
+        public void GetEpisodeNumberFromFileTest(string path, int? expected)
+        {
+            var result = new EpisodePathParser(_namingOptions)
+                .Parse(path, false);
+
+            Assert.Equal(expected, result.EpisodeNumber);
+        }
+
         [Fact]
         public void TestEpisodeNumber1()
         {
@@ -382,9 +397,7 @@ namespace Jellyfin.Naming.Tests.TV
 
         private int? GetEpisodeNumberFromFile(string path)
         {
-            var options = new NamingOptions();
-
-            var result = new EpisodePathParser(options)
+            var result = new EpisodePathParser(_namingOptions)
                 .Parse(path, false);
 
             return result.EpisodeNumber;