New: Parse original from release name when specified

(cherry picked from commit 88f4016fe0ed768f4206d04479156c45517f15b7)

Closes #10673
This commit is contained in:
Mark McDowall 2024-11-06 20:58:45 -08:00 committed by Bogdan
parent 78c009d6fa
commit 4a2202ed7f
2 changed files with 19 additions and 2 deletions

View file

@ -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)
{

View file

@ -37,7 +37,8 @@ public static class LanguageParser
(?<vietnamese>\bVIE\b)|
(?<japanese>\bJPN\b)|
(?<korean>\bKOR\b)|
(?<urdu>\burdu\b)",
(?<urdu>\burdu\b)|
(?<original>\b(?:orig|original)\b)",
RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace);
private static readonly Regex CaseSensitiveLanguageRegex = new Regex(@"(?:(?i)(?<!SUB[\W|_|^]))(?:(?<lithuanian>\bLT\b)|
@ -253,7 +254,7 @@ public static List<Language> 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<Language> ParseLanguages(string title)
}
}
// Case-insensitive
var matches = LanguageRegex.Matches(title);
foreach (Match match in matches)
@ -417,6 +419,11 @@ public static List<Language> ParseLanguages(string title)
{
languages.Add(Language.Urdu);
}
if (match.Groups["original"].Success)
{
languages.Add(Language.Original);
}
}
if (!languages.Any())