From 620047ab9adeea5fc0d38f51990d456b1300b968 Mon Sep 17 00:00:00 2001 From: Bond_009 Date: Wed, 19 Feb 2020 22:35:40 +0100 Subject: [PATCH 1/3] Fix episode parsing --- Emby.Naming/Common/NamingOptions.cs | 2 +- .../TV/EpisodeNumberTests.cs | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Emby.Naming/Common/NamingOptions.cs b/Emby.Naming/Common/NamingOptions.cs index 1554e61d83..b4f22ed696 100644 --- a/Emby.Naming/Common/NamingOptions.cs +++ b/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)(?[\w\s]+?)\s(?\d{1,3})(-(?\d{2,3}))*[^\\\/]*$") + new EpisodeExpression(@".*[\\\/](?![Ee]pisode)(?[\w\s]+?)\s(?\d{1,3})(-(?\d{2,3}))*[^\\\/x]*$") { IsNamed = true }, diff --git a/tests/Jellyfin.Naming.Tests/TV/EpisodeNumberTests.cs b/tests/Jellyfin.Naming.Tests/TV/EpisodeNumberTests.cs index 93c59c9cab..fe6f1515c0 100644 --- a/tests/Jellyfin.Naming.Tests/TV/EpisodeNumberTests.cs +++ b/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; From dfd74adc15a1f90f2e7ae6050a563bdbef581ee2 Mon Sep 17 00:00:00 2001 From: Bond_009 Date: Wed, 19 Feb 2020 22:51:30 +0100 Subject: [PATCH 2/3] Add test --- .../TV/SeasonNumberTests.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tests/Jellyfin.Naming.Tests/TV/SeasonNumberTests.cs b/tests/Jellyfin.Naming.Tests/TV/SeasonNumberTests.cs index ba3c5ecac9..1df28c974c 100644 --- a/tests/Jellyfin.Naming.Tests/TV/SeasonNumberTests.cs +++ b/tests/Jellyfin.Naming.Tests/TV/SeasonNumberTests.cs @@ -6,11 +6,21 @@ namespace Jellyfin.Naming.Tests.TV { public class SeasonNumberTests { - private int? GetSeasonNumberFromEpisodeFile(string path) + private readonly NamingOptions _namingOptions = new NamingOptions(); + + [Theory] + [InlineData("The Daily Show/The Daily Show 25x22 - [WEBDL-720p][AAC 2.0][x264] Noah Baumbach-TBS.mkv", 25)] + public void GetSeasonNumberFromEpisodeFileTest(string path, int? expected) { - var options = new NamingOptions(); + var result = new EpisodeResolver(_namingOptions) + .Resolve(path, false); - var result = new EpisodeResolver(options) + Assert.Equal(expected, result.SeasonNumber); + } + + private int? GetSeasonNumberFromEpisodeFile(string path) + { + var result = new EpisodeResolver(_namingOptions) .Resolve(path, false); return result.SeasonNumber; From 7df6d4e7a09faf54fb7b907fd40fed2eb354f813 Mon Sep 17 00:00:00 2001 From: Bond-009 Date: Thu, 20 Feb 2020 12:02:45 +0100 Subject: [PATCH 3/3] Update EpisodeNumberTests.cs --- tests/Jellyfin.Naming.Tests/TV/EpisodeNumberTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Jellyfin.Naming.Tests/TV/EpisodeNumberTests.cs b/tests/Jellyfin.Naming.Tests/TV/EpisodeNumberTests.cs index fe6f1515c0..5017fce4d9 100644 --- a/tests/Jellyfin.Naming.Tests/TV/EpisodeNumberTests.cs +++ b/tests/Jellyfin.Naming.Tests/TV/EpisodeNumberTests.cs @@ -12,7 +12,7 @@ namespace Jellyfin.Naming.Tests.TV [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)] + [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)