From dbdda0da13d5c58dbb0bedecdd162cf2c2f2180d Mon Sep 17 00:00:00 2001 From: Kyrylo Mikos Date: Wed, 10 Jul 2019 11:38:55 +0300 Subject: [PATCH] Added: Support for Ukrainian language. (#3594) --- .../ParserTests/LanguageParserFixture.cs | 2 ++ src/NzbDrone.Core/Parser/IsoLanguages.cs | 1 + src/NzbDrone.Core/Parser/Language.cs | 1 + src/NzbDrone.Core/Parser/LanguageParser.cs | 7 ++++++- 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs index e33b7015d..eec79002b 100644 --- a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs @@ -26,6 +26,8 @@ namespace NzbDrone.Core.Test.ParserTests [TestCase("Castle.2009.S01E14.Mandarin.HDTV.XviD-LOL", Language.Mandarin)] [TestCase("Castle.2009.S01E14.Korean.HDTV.XviD-LOL", Language.Korean)] [TestCase("Castle.2009.S01E14.Russian.HDTV.XviD-LOL", Language.Russian)] + [TestCase("Castle.2009.S01E14.Ukrainian.HDTV.XviD-LOL", Language.Ukrainian)] + [TestCase("Castle.2009.S01E14.Ukr.HDTV.XviD-LOL", Language.Ukrainian)] [TestCase("Castle.2009.S01E14.Polish.HDTV.XviD-LOL", Language.Polish)] [TestCase("Castle.2009.S01E14.Vietnamese.HDTV.XviD-LOL", Language.Vietnamese)] [TestCase("Castle.2009.S01E14.Swedish.HDTV.XviD-LOL", Language.Swedish)] diff --git a/src/NzbDrone.Core/Parser/IsoLanguages.cs b/src/NzbDrone.Core/Parser/IsoLanguages.cs index a5147cdeb..8c02697b3 100644 --- a/src/NzbDrone.Core/Parser/IsoLanguages.cs +++ b/src/NzbDrone.Core/Parser/IsoLanguages.cs @@ -31,6 +31,7 @@ namespace NzbDrone.Core.Parser new IsoLanguage("hu", "hun", Language.Hungarian), new IsoLanguage("he", "heb", Language.Hebrew), new IsoLanguage("cs", "ces", Language.Czech), + new IsoLanguage("ua", "ukr", Language.Ukrainian), new IsoLanguage("an", "any", Language.Any) }; diff --git a/src/NzbDrone.Core/Parser/Language.cs b/src/NzbDrone.Core/Parser/Language.cs index 0d52db05f..78d1a5f73 100644 --- a/src/NzbDrone.Core/Parser/Language.cs +++ b/src/NzbDrone.Core/Parser/Language.cs @@ -30,6 +30,7 @@ namespace NzbDrone.Core.Parser Hungarian = 22, Hebrew = 23, Czech = 24, + Ukrainian = 25, Any = -1, } diff --git a/src/NzbDrone.Core/Parser/LanguageParser.cs b/src/NzbDrone.Core/Parser/LanguageParser.cs index 128db51c9..68af72c2f 100644 --- a/src/NzbDrone.Core/Parser/LanguageParser.cs +++ b/src/NzbDrone.Core/Parser/LanguageParser.cs @@ -13,7 +13,7 @@ namespace NzbDrone.Core.Parser { private static readonly Logger Logger = NzbDroneLogger.GetLogger(typeof(LanguageParser)); - private static readonly Regex LanguageRegex = new Regex(@"(?:\W|_|^)(?\b(?:ita|italian)\b)|(?german\b|videomann)|(?flemish)|(?greek)|(?(?:\W|_)(?:FR|VOSTFR|VO|VFF|VFQ|VF2|TRUEFRENCH)(?:\W|_))|(?\brus\b)|(?nl\W?subs?)|(?\b(?:HUNDUB|HUN)\b)|(?\bHebDub\b)|(?\b(?:CZ|SK)\b)", + private static readonly Regex LanguageRegex = new Regex(@"(?:\W|_|^)(?\b(?:ita|italian)\b)|(?german\b|videomann)|(?flemish)|(?greek)|(?(?:\W|_)(?:FR|VOSTFR|VO|VFF|VFQ|VF2|TRUEFRENCH)(?:\W|_))|(?\brus\b)|(?nl\W?subs?)|(?\b(?:HUNDUB|HUN)\b)|(?\bHebDub\b)|(?\b(?:CZ|SK)\b)|(?\bukr\b)", RegexOptions.IgnoreCase | RegexOptions.Compiled); private static readonly Regex SubtitleLanguageRegex = new Regex(".+?[-_. ](?[a-z]{2,3})(?:[-_. ]forced)?$", RegexOptions.Compiled | RegexOptions.IgnoreCase); @@ -86,6 +86,9 @@ namespace NzbDrone.Core.Parser if (lowerTitle.Contains("czech")) languages.Add( Language.Czech); + if (lowerTitle.Contains("ukrainian")) + languages.Add(Language.Ukrainian); + var match = LanguageRegex.Match(title); if (match.Groups["italian"].Captures.Cast().Any()) @@ -118,6 +121,8 @@ namespace NzbDrone.Core.Parser if (match.Groups["czech"].Success) languages.Add( Language.Czech); + if (match.Groups["ukrainian"].Success) + languages.Add( Language.Ukrainian); return languages.DistinctBy(l => (int)l).ToList(); }