New: Add Urdu language

This commit is contained in:
ojmaster 2025-04-07 19:02:48 -05:00 committed by GitHub
parent 4728fa29ef
commit 66633b9b07
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 59 additions and 3 deletions

View file

@ -43,7 +43,23 @@ namespace NzbDrone.Core.Test.Languages
new object[] { 31, Language.Slovak },
new object[] { 32, Language.Thai },
new object[] { 33, Language.PortugueseBrazil },
new object[] { 34, Language.SpanishLatino }
new object[] { 34, Language.SpanishLatino },
new object[] { 35, Language.Romanian },
new object[] { 36, Language.Latvian },
new object[] { 37, Language.Persian },
new object[] { 38, Language.Catalan },
new object[] { 39, Language.Croatian },
new object[] { 40, Language.Serbian },
new object[] { 41, Language.Bosnian },
new object[] { 42, Language.Estonian },
new object[] { 43, Language.Tamil },
new object[] { 44, Language.Indonesian },
new object[] { 45, Language.Macedonian },
new object[] { 46, Language.Slovenian },
new object[] { 47, Language.Azerbaijani },
new object[] { 48, Language.Uzbek },
new object[] { 49, Language.Malay },
new object[] { 50, Language.Urdu }
};
public static object[] ToIntCases =
@ -81,7 +97,23 @@ namespace NzbDrone.Core.Test.Languages
new object[] { Language.Slovak, 31 },
new object[] { Language.Thai, 32 },
new object[] { Language.PortugueseBrazil, 33 },
new object[] { Language.SpanishLatino, 34 }
new object[] { Language.SpanishLatino, 34 },
new object[] { Language.Romanian, 35 },
new object[] { Language.Latvian, 36 },
new object[] { Language.Persian, 37 },
new object[] { Language.Catalan, 38 },
new object[] { Language.Croatian, 39 },
new object[] { Language.Serbian, 40 },
new object[] { Language.Bosnian, 41 },
new object[] { Language.Estonian, 42 },
new object[] { Language.Tamil, 43 },
new object[] { Language.Indonesian, 44 },
new object[] { Language.Macedonian, 45 },
new object[] { Language.Slovenian, 46 },
new object[] { Language.Azerbaijani, 47 },
new object[] { Language.Uzbek, 48 },
new object[] { Language.Malay, 49 },
new object[] { Language.Urdu, 50 }
};
[Test]

View file

@ -51,5 +51,14 @@ namespace NzbDrone.Core.Test.ParserTests
var result = IsoLanguages.Find(isoCode);
result.Language.Should().Be(Language.Czech);
}
[TestCase("ur")]
[TestCase("urd")]
[TestCase("ur-PK")]
public void should_return_urdu(string isoCode)
{
var result = IsoLanguages.Find(isoCode);
result.Language.Should().Be(Language.Urdu);
}
}
}

View file

@ -509,6 +509,13 @@ namespace NzbDrone.Core.Test.ParserTests
result.Languages.Should().Contain(Language.Uzbek);
}
[TestCase("Title.the.Series.2009.S01E14.Urdu.HDTV.XviD-LOL")]
public void should_parse_language_urdu(string postTitle)
{
var result = LanguageParser.ParseLanguages(postTitle);
result.Should().Contain(Language.Urdu);
}
[TestCase("Name (2020) - S01E20 - [AAC 2.0].testtitle.default.eng.forced.ass", new[] { "default", "forced" }, "testtitle", "English")]
[TestCase("Name (2020) - S01E20 - [AAC 2.0].eng.default.testtitle.forced.ass", new[] { "default", "forced" }, "testtitle", "English")]
[TestCase("Name (2020) - S01E20 - [AAC 2.0].default.eng.testtitle.forced.ass", new[] { "default", "forced" }, "testtitle", "English")]

View file

@ -120,6 +120,7 @@ namespace NzbDrone.Core.Languages
public static Language Azerbaijani => new Language(47, "Azerbaijani");
public static Language Uzbek => new Language(48, "Uzbek");
public static Language Malay => new Language(49, "Malay");
public static Language Urdu => new Language(50, "Urdu");
public static Language Original => new Language(-2, "Original");
public static List<Language> All
@ -178,6 +179,7 @@ namespace NzbDrone.Core.Languages
Azerbaijani,
Uzbek,
Malay,
Urdu,
Original
};
}

View file

@ -60,6 +60,7 @@ namespace NzbDrone.Core.Parser
new IsoLanguage("az", "", "aze", Language.Azerbaijani),
new IsoLanguage("uz", "", "uzb", Language.Uzbek),
new IsoLanguage("ms", "", "msa", Language.Malay),
new IsoLanguage("ur", "", "urd", Language.Urdu)
};
private static readonly Dictionary<string, Language> AlternateIsoCodeMappings = new Dictionary<string, Language>

View file

@ -20,7 +20,7 @@ namespace NzbDrone.Core.Parser
new RegexReplace(@".*?[_. ](S\d{2}(?:E\d{2,4})*[_. ].*)", "$1", RegexOptions.Compiled | RegexOptions.IgnoreCase)
};
private static readonly Regex LanguageRegex = new Regex(@"(?:\W|_)(?<english>\b(?:ing|eng)\b)|(?<italian>\b(?:ita|italian)\b)|(?<german>german\b|videomann|ger[. ]dub|\bger\b)|(?<flemish>flemish)|(?<greek>greek)|(?<french>(?:\W|_|\b)(?:FR|VF|VF2|VFF|VFI|VFQ|TRUEFRENCH|FRENCH|FRE|FRA)(?:\W|_|\b))|(?<russian>\b(?:rus|ru)\b)|(?<hungarian>\b(?:HUNDUB|HUN)\b)|(?<hebrew>\bHebDub\b)|(?<polish>\b(?:PL\W?DUB|DUB\W?PL|LEK\W?PL|PL\W?LEK)\b)|(?<chinese>\[(?:CH[ST]|BIG5|GB)\]|简|繁|字幕)|(?<bulgarian>\bbgaudio\b)|(?<spanish>\b(?:español|castellano|esp|spa(?!\(Latino\)))\b)|(?<ukrainian>\b(?:\dx?)?(?:ukr))|(?<thai>\b(?:THAI)\b)|(?<romanian>\b(?:RoDubbed|ROMANIAN)\b)|(?<catalan>[-,. ]cat[. ](?:DD|subs)|\b(?:catalan|catalán)\b)|(?<latvian>\b(?:lat|lav|lv)\b)|(?<turkish>\b(?:tur)\b)|(?<original>\b(?:orig|original)\b)",
private static readonly Regex LanguageRegex = new Regex(@"(?:\W|_)(?<english>\b(?:ing|eng)\b)|(?<italian>\b(?:ita|italian)\b)|(?<german>german\b|videomann|ger[. ]dub|\bger\b)|(?<flemish>flemish)|(?<greek>greek)|(?<french>(?:\W|_|\b)(?:FR|VF|VF2|VFF|VFI|VFQ|TRUEFRENCH|FRENCH|FRE|FRA)(?:\W|_|\b))|(?<russian>\b(?:rus|ru)\b)|(?<hungarian>\b(?:HUNDUB|HUN)\b)|(?<hebrew>\bHebDub\b)|(?<polish>\b(?:PL\W?DUB|DUB\W?PL|LEK\W?PL|PL\W?LEK)\b)|(?<chinese>\[(?:CH[ST]|BIG5|GB)\]|简|繁|字幕)|(?<bulgarian>\bbgaudio\b)|(?<spanish>\b(?:español|castellano|esp|spa(?!\(Latino\)))\b)|(?<ukrainian>\b(?:\dx?)?(?:ukr))|(?<thai>\b(?:THAI)\b)|(?<romanian>\b(?:RoDubbed|ROMANIAN)\b)|(?<catalan>[-,. ]cat[. ](?:DD|subs)|\b(?:catalan|catalán)\b)|(?<latvian>\b(?:lat|lav|lv)\b)|(?<turkish>\b(?:tur)\b)|(?<urdu>\burdu\b)|(?<original>\b(?:orig|original)\b)",
RegexOptions.IgnoreCase | RegexOptions.Compiled);
private static readonly Regex CaseSensitiveLanguageRegex = new Regex(@"(?:(?i)(?<!SUB[\W|_|^]))(?:(?<lithuanian>\bLT\b)|(?<czech>\bCZ\b)|(?<polish>\bPL\b)|(?<bulgarian>\bBG\b)|(?<slovak>\bSK\b)|(?<german>\bDE\b))(?:(?i)(?![\W|_|^]SUB))",
@ -486,6 +486,11 @@ namespace NzbDrone.Core.Parser
languages.Add(Language.Turkish);
}
if (match.Groups["urdu"].Success)
{
languages.Add(Language.Urdu);
}
if (match.Groups["original"].Success)
{
languages.Add(Language.Original);