From 61979bff7a6909b5f9b71fa30edbfbcde7063f0b Mon Sep 17 00:00:00 2001 From: Krisjanis Lejejs Date: Sun, 4 Sep 2022 22:13:29 +0300 Subject: [PATCH] New: Add Latvian language --- src/NzbDrone.Core.Test/Languages/LanguageFixture.cs | 4 ++++ .../ParserTests/LanguageParserFixture.cs | 10 ++++++++++ src/NzbDrone.Core/Languages/Language.cs | 2 ++ src/NzbDrone.Core/Parser/IsoLanguages.cs | 3 ++- src/NzbDrone.Core/Parser/LanguageParser.cs | 13 ++++++++++++- 5 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs b/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs index d4e387260..6b7cd62a6 100644 --- a/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs +++ b/src/NzbDrone.Core.Test/Languages/LanguageFixture.cs @@ -47,6 +47,8 @@ public class LanguageFixture : CoreTest new object[] { 32, Language.Ukrainian }, new object[] { 33, Language.Persian }, new object[] { 34, Language.Bengali }, + new object[] { 35, Language.Slovak }, + new object[] { 36, Language.Latvian }, }; public static object[] ToIntCases = @@ -88,6 +90,8 @@ public class LanguageFixture : CoreTest new object[] { Language.Ukrainian, 32 }, new object[] { Language.Persian, 33 }, new object[] { Language.Bengali, 34 }, + new object[] { Language.Slovak, 35 }, + new object[] { Language.Latvian, 36 }, }; [Test] diff --git a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs index a29df3b07..eab24e677 100644 --- a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs @@ -368,6 +368,16 @@ public void should_parse_language_slovak(string postTitle) result.Languages.Should().BeEquivalentTo(Language.Slovak); } + [TestCase("Movie.Title.2022.LV.WEBRip.XviD-LOL")] + [TestCase("Movie.Title.2022.lv.WEBRip.XviD-LOL")] + [TestCase("Movie.Title.2022.LATVIAN.WEBRip.XviD-LOL")] + [TestCase("Movie.Title.2022.Latvian.WEBRip.XviD-LOL")] + public void should_parse_language_latvian(string postTitle) + { + var result = Parser.Parser.ParseMovieTitle(postTitle); + result.Languages.Should().BeEquivalentTo(Language.Latvian); + } + [TestCase("Movie.Title.en.sub")] [TestCase("Movie Title.eng.sub")] [TestCase("Movie.Title.eng.forced.sub")] diff --git a/src/NzbDrone.Core/Languages/Language.cs b/src/NzbDrone.Core/Languages/Language.cs index e30cab572..37f01ab5e 100644 --- a/src/NzbDrone.Core/Languages/Language.cs +++ b/src/NzbDrone.Core/Languages/Language.cs @@ -106,6 +106,7 @@ public override bool Equals(object obj) public static Language Persian => new Language(33, "Persian"); public static Language Bengali => new Language(34, "Bengali"); public static Language Slovak => new Language(35, "Slovak"); + public static Language Latvian => new Language(36, "Latvian"); public static Language Any => new Language(-1, "Any"); public static Language Original => new Language(-2, "Original"); @@ -151,6 +152,7 @@ public static List All Persian, Bengali, Slovak, + Latvian, Any, Original }; diff --git a/src/NzbDrone.Core/Parser/IsoLanguages.cs b/src/NzbDrone.Core/Parser/IsoLanguages.cs index 5ac742ed0..df33a110a 100644 --- a/src/NzbDrone.Core/Parser/IsoLanguages.cs +++ b/src/NzbDrone.Core/Parser/IsoLanguages.cs @@ -43,7 +43,8 @@ public static class IsoLanguages new IsoLanguage("fa", "", "fas", "Persian", Language.Persian), new IsoLanguage("be", "", "ben", "Bengali", Language.Bengali), new IsoLanguage("lt", "", "lit", "Lithuanian", Language.Lithuanian), - new IsoLanguage("sk", "", "slk", "Slovak", Language.Slovak) + new IsoLanguage("sk", "", "slk", "Slovak", Language.Slovak), + new IsoLanguage("lv", "", "lav", "Latvian", Language.Latvian) }; public static IsoLanguage Find(string isoCode) diff --git a/src/NzbDrone.Core/Parser/LanguageParser.cs b/src/NzbDrone.Core/Parser/LanguageParser.cs index fc222a670..eee7dfaa3 100644 --- a/src/NzbDrone.Core/Parser/LanguageParser.cs +++ b/src/NzbDrone.Core/Parser/LanguageParser.cs @@ -27,7 +27,8 @@ public static class LanguageParser (?\bHebDub\b)| (?\b(?:PL\W?DUB|DUB\W?PL|LEK\W?PL|PL\W?LEK)\b)| (?\[(?:CH[ST]|BIG5|GB)\]|简|繁|字幕)| - (?(?:(?:\dx)?UKR))", + (?(?:(?:\dx)?UKR))| + (?\bLV\b)", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace); private static readonly Regex CaseSensitiveLanguageRegex = new Regex(@"(?:(?i)(?\bLT\b)| @@ -189,6 +190,11 @@ public static List ParseLanguages(string title) languages.Add(Language.Slovak); } + if (lowerTitle.Contains("latvian")) + { + languages.Add(Language.Latvian); + } + // Case sensitive var caseSensitiveMatch = CaseSensitiveLanguageRegex.Match(title); @@ -295,6 +301,11 @@ public static List ParseLanguages(string title) { languages.Add(Language.Ukrainian); } + + if (match.Groups["latvian"].Success) + { + languages.Add(Language.Latvian); + } } if (!languages.Any())