diff --git a/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs b/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs index 569a157c2..7b756e3ad 100644 --- a/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs +++ b/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs @@ -56,7 +56,8 @@ namespace NzbDrone.Core.Test.Languages new object[] { 41, Language.Bosnian }, new object[] { 42, Language.Estonian }, new object[] { 43, Language.Tamil }, - new object[] { 44, Language.Indonesian } + new object[] { 44, Language.Indonesian }, + new object[] { 45, Language.Telugu } }; public static object[] ToIntCases = @@ -107,7 +108,8 @@ namespace NzbDrone.Core.Test.Languages new object[] { Language.Bosnian, 41 }, new object[] { Language.Estonian, 42 }, new object[] { Language.Tamil, 43 }, - new object[] { Language.Indonesian, 44 } + new object[] { Language.Indonesian, 44 }, + new object[] { Language.Telugu, 45 } }; [Test] diff --git a/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs b/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs index 37acf7b7a..0cef2a390 100644 --- a/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/IsoLanguagesFixture.cs @@ -44,5 +44,14 @@ namespace NzbDrone.Core.Test.ParserTests var result = IsoLanguages.Find(isoCode); result.Should().Be(null); } + + [TestCase("te")] + [TestCase("tel")] + [TestCase("te-IN")] + public void should_return_telugu(string isoCode) + { + var result = IsoLanguages.Find(isoCode); + result.Language.Should().Be(Language.Telugu); + } } } diff --git a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs index 647472992..a4d141f7b 100644 --- a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs @@ -362,6 +362,15 @@ namespace NzbDrone.Core.Test.ParserTests result.Languages.Should().BeEquivalentTo(Language.Bengali); } + [TestCase("Movie Title (2018) Telugu DVDScr X264 AAC 700 MB")] + [TestCase("Movie.Title.2022.Tel.WEBRip.x264-VXT")] + [TestCase("Movie Title (2019) Proper HDRip - 720p - x264 - HQ Line Auds - [Telugu + Tamil + Hindi + English] - 1.1GB")] + public void should_parse_language_telugu(string postTitle) + { + var result = Parser.Parser.ParseMovieTitle(postTitle); + result.Languages.Should().Contain(Language.Telugu); + } + [TestCase("Movie.Title.1994.HDTV.x264.SK-iCZi")] [TestCase("Movie.Title.2019.1080p.HDTV.x265.iNTERNAL.SK-iCZi")] [TestCase("Movie.Title.2018.SLOVAK.DUAL.2160p.UHD.BluRay.x265-iCZi")] diff --git a/src/NzbDrone.Core/Languages/Language.cs b/src/NzbDrone.Core/Languages/Language.cs index 3cf57ce71..59d6fdd26 100644 --- a/src/NzbDrone.Core/Languages/Language.cs +++ b/src/NzbDrone.Core/Languages/Language.cs @@ -115,6 +115,7 @@ namespace NzbDrone.Core.Languages public static Language Estonian => new Language(42, "Estonian"); public static Language Tamil => new Language(43, "Tamil"); public static Language Indonesian => new Language(44, "Indonesian"); + public static Language Telugu => new Language(45, "Telugu"); public static Language Any => new Language(-1, "Any"); public static Language Original => new Language(-2, "Original"); @@ -169,6 +170,7 @@ namespace NzbDrone.Core.Languages Estonian, Tamil, Indonesian, + Telugu, Any, Original }; diff --git a/src/NzbDrone.Core/Parser/IsoLanguages.cs b/src/NzbDrone.Core/Parser/IsoLanguages.cs index 8a58de7d8..9a918d037 100644 --- a/src/NzbDrone.Core/Parser/IsoLanguages.cs +++ b/src/NzbDrone.Core/Parser/IsoLanguages.cs @@ -53,7 +53,8 @@ namespace NzbDrone.Core.Parser new IsoLanguage("bs", "", "bos", "Bosnian", Language.Bosnian), new IsoLanguage("et", "", "est", "Estonian", Language.Estonian), new IsoLanguage("ta", "", "tam", "Tamil", Language.Tamil), - new IsoLanguage("id", "", "ind", "Indonesian", Language.Indonesian) + new IsoLanguage("id", "", "ind", "Indonesian", Language.Indonesian), + new IsoLanguage("te", "", "tel", "Telugu", Language.Telugu) }; public static IsoLanguage Find(string isoCode) diff --git a/src/NzbDrone.Core/Parser/LanguageParser.cs b/src/NzbDrone.Core/Parser/LanguageParser.cs index e34df35fd..3e6df0724 100644 --- a/src/NzbDrone.Core/Parser/LanguageParser.cs +++ b/src/NzbDrone.Core/Parser/LanguageParser.cs @@ -30,7 +30,8 @@ namespace NzbDrone.Core.Parser (?\[(?:CH[ST]|BIG5|GB)\]|简|繁|字幕)| (?(?:(?:\dx)?UKR))| (?\b(?:español|castellano)\b)| - (?\bLV\b)", + (?\bLV\b)| + (?\btel\b)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace); private static readonly Regex CaseSensitiveLanguageRegex = new Regex(@"(?:(?i)(?\bLT\b)| @@ -212,6 +213,11 @@ namespace NzbDrone.Core.Parser languages.Add(Language.Tamil); } + if (lowerTitle.Contains("telugu")) + { + languages.Add(Language.Telugu); + } + // Case sensitive var caseSensitiveMatchs = CaseSensitiveLanguageRegex.Matches(title); @@ -336,6 +342,11 @@ namespace NzbDrone.Core.Parser { languages.Add(Language.Romanian); } + + if (match.Groups["telugu"].Success) + { + languages.Add(Language.Telugu); + } } if (!languages.Any())