New: Add Urdu Language (#10957)

This commit is contained in:
ojmaster 2025-03-31 16:49:47 -05:00 committed by GitHub
parent 16b6997b14
commit 107f843303
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 31 additions and 1 deletions

View file

@ -66,6 +66,7 @@ namespace NzbDrone.Core.Test.Languages
new object[] { 51, Language.Afrikaans }, new object[] { 51, Language.Afrikaans },
new object[] { 52, Language.Marathi }, new object[] { 52, Language.Marathi },
new object[] { 53, Language.Tagalog }, new object[] { 53, Language.Tagalog },
new object[] { 54, Language.Urdu }
}; };
public static object[] ToIntCases = public static object[] ToIntCases =
@ -126,6 +127,7 @@ namespace NzbDrone.Core.Test.Languages
new object[] { Language.Afrikaans, 51 }, new object[] { Language.Afrikaans, 51 },
new object[] { Language.Marathi, 52 }, new object[] { Language.Marathi, 52 },
new object[] { Language.Tagalog, 53 }, new object[] { Language.Tagalog, 53 },
new object[] { Language.Urdu, 54 }
}; };
[Test] [Test]

View file

@ -80,5 +80,14 @@ namespace NzbDrone.Core.Test.ParserTests
var result = IsoLanguages.Find(isoCode); var result = IsoLanguages.Find(isoCode);
result.Language.Should().Be(Language.Tagalog); result.Language.Should().Be(Language.Tagalog);
} }
[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

@ -492,6 +492,14 @@ namespace NzbDrone.Core.Test.ParserTests
result.Should().Contain(Language.Tagalog); result.Should().Contain(Language.Tagalog);
} }
[TestCase("Movie Title 2024 1080p Urdu WEB-DL HEVC x265 BONE")]
[TestCase("Movie.Title.2022.720p.Urdu.WEB-DL.AAC.x264-Mkvking")]
public void should_parse_language_urdu(string postTitle)
{
var result = LanguageParser.ParseLanguages(postTitle);
result.Should().Contain(Language.Urdu);
}
[TestCase("Movie.Title.en.sub")] [TestCase("Movie.Title.en.sub")]
[TestCase("Movie Title.eng.sub")] [TestCase("Movie Title.eng.sub")]
[TestCase("Movie.Title.eng.forced.sub")] [TestCase("Movie.Title.eng.forced.sub")]

View file

@ -70,5 +70,7 @@ namespace NzbDrone.Core.ImportLists.TMDb
mr, mr,
[FieldOption(Hint = "Tagalog")] [FieldOption(Hint = "Tagalog")]
tl, tl,
[FieldOption(Hint = "Urdu")]
ur
} }
} }

View file

@ -124,6 +124,7 @@ namespace NzbDrone.Core.Languages
public static Language Afrikaans => new Language(51, "Afrikaans"); public static Language Afrikaans => new Language(51, "Afrikaans");
public static Language Marathi => new Language(52, "Marathi"); public static Language Marathi => new Language(52, "Marathi");
public static Language Tagalog => new Language(53, "Tagalog"); public static Language Tagalog => new Language(53, "Tagalog");
public static Language Urdu => new Language(54, "Urdu");
public static Language Any => new Language(-1, "Any"); public static Language Any => new Language(-1, "Any");
public static Language Original => new Language(-2, "Original"); public static Language Original => new Language(-2, "Original");
@ -187,6 +188,7 @@ namespace NzbDrone.Core.Languages
Afrikaans, Afrikaans,
Marathi, Marathi,
Tagalog, Tagalog,
Urdu,
Any, Any,
Original Original
}; };

View file

@ -63,6 +63,7 @@ namespace NzbDrone.Core.Parser
new IsoLanguage("af", "", "afr", "Afrikaans", Language.Afrikaans), new IsoLanguage("af", "", "afr", "Afrikaans", Language.Afrikaans),
new IsoLanguage("mr", "", "mar", "Marathi", Language.Marathi), new IsoLanguage("mr", "", "mar", "Marathi", Language.Marathi),
new IsoLanguage("tl", "", "tgl", "Tagalog", Language.Tagalog), new IsoLanguage("tl", "", "tgl", "Tagalog", Language.Tagalog),
new IsoLanguage("ur", "", "urd", "Urdu", Language.Urdu)
}; };
private static readonly Dictionary<string, Language> AlternateIsoCodeMappings = new () private static readonly Dictionary<string, Language> AlternateIsoCodeMappings = new ()

View file

@ -36,7 +36,8 @@ namespace NzbDrone.Core.Parser
(?<telugu>\btel\b)| (?<telugu>\btel\b)|
(?<vietnamese>\bVIE\b)| (?<vietnamese>\bVIE\b)|
(?<japanese>\bJPN\b)| (?<japanese>\bJPN\b)|
(?<korean>\bKOR\b)", (?<korean>\bKOR\b)|
(?<urdu>\burdu\b)",
RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace); RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace);
private static readonly Regex CaseSensitiveLanguageRegex = new Regex(@"(?:(?i)(?<!SUB[\W|_|^]))(?:(?<lithuanian>\bLT\b)| private static readonly Regex CaseSensitiveLanguageRegex = new Regex(@"(?:(?i)(?<!SUB[\W|_|^]))(?:(?<lithuanian>\bLT\b)|
@ -411,6 +412,11 @@ namespace NzbDrone.Core.Parser
{ {
languages.Add(Language.Korean); languages.Add(Language.Korean);
} }
if (match.Groups["urdu"].Success)
{
languages.Add(Language.Urdu);
}
} }
if (!languages.Any()) if (!languages.Any())