From 4a2202ed7fbddc012918d8b269f061e8d89c2e65 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 6 Nov 2024 20:58:45 -0800 Subject: [PATCH] New: Parse original from release name when specified (cherry picked from commit 88f4016fe0ed768f4206d04479156c45517f15b7) Closes #10673 --- .../ParserTests/LanguageParserFixture.cs | 10 ++++++++++ src/NzbDrone.Core/Parser/LanguageParser.cs | 11 +++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs index 56dbd2367d..a1f73c64a1 100644 --- a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs @@ -537,6 +537,16 @@ public void should_not_add_original_language_to_german_release_when_title_contai result.Languages.Should().Contain(Language.German); } + [TestCase("Movie.Title.2025.Original.1080P.WEB.H264-RlsGrp")] + [TestCase("Movie.Title.2025.Orig.1080P.WEB.H264-RlsGrp")] + [TestCase("Movie Title 2025 [HEVC, HDR10, Dolby Vision, WEB-DL 2160p] [Hybrid] 3 XX + Original")] + public void should_parse_original_title_from_release_name(string postTitle) + { + var result = Parser.Parser.ParseMovieTitle(postTitle); + result.Languages.Count.Should().Be(1); + result.Languages.Should().Contain(Language.Original); + } + [TestCase("The.Movie.Name.2023.German.ML.EAC3.720p.NF.WEB.H264-RlsGrp")] public void should_add_original_language_and_english_to_german_release_with_ml_tag(string postTitle) { diff --git a/src/NzbDrone.Core/Parser/LanguageParser.cs b/src/NzbDrone.Core/Parser/LanguageParser.cs index 5ce9cacd0a..f07e807720 100644 --- a/src/NzbDrone.Core/Parser/LanguageParser.cs +++ b/src/NzbDrone.Core/Parser/LanguageParser.cs @@ -37,7 +37,8 @@ public static class LanguageParser (?\bVIE\b)| (?\bJPN\b)| (?\bKOR\b)| - (?\burdu\b)", + (?\burdu\b)| + (?\b(?:orig|original)\b)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace); private static readonly Regex CaseSensitiveLanguageRegex = new Regex(@"(?:(?i)(?\bLT\b)| @@ -253,7 +254,7 @@ public static List ParseLanguages(string title) languages.Add(Language.Tagalog); } - // Case sensitive + // Case-sensitive var caseSensitiveMatches = CaseSensitiveLanguageRegex.Matches(title); foreach (Match match in caseSensitiveMatches) @@ -294,6 +295,7 @@ public static List ParseLanguages(string title) } } + // Case-insensitive var matches = LanguageRegex.Matches(title); foreach (Match match in matches) @@ -417,6 +419,11 @@ public static List ParseLanguages(string title) { languages.Add(Language.Urdu); } + + if (match.Groups["original"].Success) + { + languages.Add(Language.Original); + } } if (!languages.Any())