From 107f84330382e9d371bf43410b5a148cf9c9a277 Mon Sep 17 00:00:00 2001 From: ojmaster <62865062+ojmaster@users.noreply.github.com> Date: Mon, 31 Mar 2025 16:49:47 -0500 Subject: [PATCH] New: Add Urdu Language (#10957) --- src/NzbDrone.Core.Test/Languages/LanguageFixture.cs | 2 ++ .../ParserTests/IsoLanguagesFixture.cs | 9 +++++++++ .../ParserTests/LanguageParserFixture.cs | 8 ++++++++ src/NzbDrone.Core/ImportLists/TMDb/TMDbLanguageCodes.cs | 2 ++ src/NzbDrone.Core/Languages/Language.cs | 2 ++ src/NzbDrone.Core/Parser/IsoLanguages.cs | 1 + src/NzbDrone.Core/Parser/LanguageParser.cs | 8 +++++++- 7 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs b/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs index 19fdae72e..b3c61daac 100644 --- a/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs +++ b/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs @@ -66,6 +66,7 @@ namespace NzbDrone.Core.Test.Languages new object[] { 51, Language.Afrikaans }, new object[] { 52, Language.Marathi }, new object[] { 53, Language.Tagalog }, + new object[] { 54, Language.Urdu } }; public static object[] ToIntCases = @@ -126,6 +127,7 @@ namespace NzbDrone.Core.Test.Languages new object[] { Language.Afrikaans, 51 }, new object[] { Language.Marathi, 52 }, new object[] { Language.Tagalog, 53 }, + new object[] { Language.Urdu, 54 } }; [Test] diff --git a/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs b/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs index 901bfe874..f4d94715c 100644 --- a/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs @@ -80,5 +80,14 @@ namespace NzbDrone.Core.Test.ParserTests var result = IsoLanguages.Find(isoCode); 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); + } } } diff --git a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs index afa29523d..56dbd2367 100644 --- a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs @@ -492,6 +492,14 @@ namespace NzbDrone.Core.Test.ParserTests 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.eng.sub")] [TestCase("Movie.Title.eng.forced.sub")] diff --git a/src/NzbDrone.Core/ImportLists/TMDb/TMDbLanguageCodes.cs b/src/NzbDrone.Core/ImportLists/TMDb/TMDbLanguageCodes.cs index b26e5ae63..1802728f8 100644 --- a/src/NzbDrone.Core/ImportLists/TMDb/TMDbLanguageCodes.cs +++ b/src/NzbDrone.Core/ImportLists/TMDb/TMDbLanguageCodes.cs @@ -70,5 +70,7 @@ namespace NzbDrone.Core.ImportLists.TMDb mr, [FieldOption(Hint = "Tagalog")] tl, + [FieldOption(Hint = "Urdu")] + ur } } diff --git a/src/NzbDrone.Core/Languages/Language.cs b/src/NzbDrone.Core/Languages/Language.cs index 1c04dc367..fcfae2780 100644 --- a/src/NzbDrone.Core/Languages/Language.cs +++ b/src/NzbDrone.Core/Languages/Language.cs @@ -124,6 +124,7 @@ namespace NzbDrone.Core.Languages public static Language Afrikaans => new Language(51, "Afrikaans"); public static Language Marathi => new Language(52, "Marathi"); 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 Original => new Language(-2, "Original"); @@ -187,6 +188,7 @@ namespace NzbDrone.Core.Languages Afrikaans, Marathi, Tagalog, + Urdu, Any, Original }; diff --git a/src/NzbDrone.Core/Parser/IsoLanguages.cs b/src/NzbDrone.Core/Parser/IsoLanguages.cs index cd1af26e3..8dd9a1357 100644 --- a/src/NzbDrone.Core/Parser/IsoLanguages.cs +++ b/src/NzbDrone.Core/Parser/IsoLanguages.cs @@ -63,6 +63,7 @@ namespace NzbDrone.Core.Parser new IsoLanguage("af", "", "afr", "Afrikaans", Language.Afrikaans), new IsoLanguage("mr", "", "mar", "Marathi", Language.Marathi), new IsoLanguage("tl", "", "tgl", "Tagalog", Language.Tagalog), + new IsoLanguage("ur", "", "urd", "Urdu", Language.Urdu) }; private static readonly Dictionary AlternateIsoCodeMappings = new () diff --git a/src/NzbDrone.Core/Parser/LanguageParser.cs b/src/NzbDrone.Core/Parser/LanguageParser.cs index 006ffea99..5ce9cacd0 100644 --- a/src/NzbDrone.Core/Parser/LanguageParser.cs +++ b/src/NzbDrone.Core/Parser/LanguageParser.cs @@ -36,7 +36,8 @@ namespace NzbDrone.Core.Parser (?\btel\b)| (?\bVIE\b)| (?\bJPN\b)| - (?\bKOR\b)", + (?\bKOR\b)| + (?\burdu\b)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace); private static readonly Regex CaseSensitiveLanguageRegex = new Regex(@"(?:(?i)(?\bLT\b)| @@ -411,6 +412,11 @@ namespace NzbDrone.Core.Parser { languages.Add(Language.Korean); } + + if (match.Groups["urdu"].Success) + { + languages.Add(Language.Urdu); + } } if (!languages.Any())