diff --git a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs index bb202fa8e..ec4eee5bc 100644 --- a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs @@ -342,6 +342,16 @@ public void should_parse_language_bengali(string postTitle) result.Languages.Should().BeEquivalentTo(Language.Bengali); } + [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")] + [TestCase("Movie.Title.1990.SLOVAK.HDTV.x264-iCZi")] + public void should_parse_language_slovak(string postTitle) + { + var result = Parser.Parser.ParseMovieTitle(postTitle); + result.Languages.Should().BeEquivalentTo(Language.Slovak); + } + [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 9e5e98236..e30cab572 100644 --- a/src/NzbDrone.Core/Languages/Language.cs +++ b/src/NzbDrone.Core/Languages/Language.cs @@ -105,6 +105,7 @@ public override bool Equals(object obj) public static Language Ukrainian => new Language(32, "Ukrainian"); 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 Any => new Language(-1, "Any"); public static Language Original => new Language(-2, "Original"); @@ -149,6 +150,7 @@ public static List All Ukrainian, Persian, Bengali, + Slovak, Any, Original }; diff --git a/src/NzbDrone.Core/Parser/IsoLanguages.cs b/src/NzbDrone.Core/Parser/IsoLanguages.cs index 10d5c4b65..5ac742ed0 100644 --- a/src/NzbDrone.Core/Parser/IsoLanguages.cs +++ b/src/NzbDrone.Core/Parser/IsoLanguages.cs @@ -42,7 +42,8 @@ public static class IsoLanguages new IsoLanguage("uk", "", "ukr", "Ukrainian", Language.Ukrainian), new IsoLanguage("fa", "", "fas", "Persian", Language.Persian), new IsoLanguage("be", "", "ben", "Bengali", Language.Bengali), - new IsoLanguage("lt", "", "lit", "Lithuanian", Language.Lithuanian) + new IsoLanguage("lt", "", "lit", "Lithuanian", Language.Lithuanian), + new IsoLanguage("sk", "", "slk", "Slovak", Language.Slovak) }; public static IsoLanguage Find(string isoCode) diff --git a/src/NzbDrone.Core/Parser/LanguageParser.cs b/src/NzbDrone.Core/Parser/LanguageParser.cs index 3720c6075..00aab3f98 100644 --- a/src/NzbDrone.Core/Parser/LanguageParser.cs +++ b/src/NzbDrone.Core/Parser/LanguageParser.cs @@ -32,7 +32,8 @@ public static class LanguageParser private static readonly Regex CaseSensitiveLanguageRegex = new Regex(@"(?:(?i)(?\bLT\b)| (?\bCZ\b)| (?\bPL\b)| - (?\bBG\b))(?:(?i)(?![\W|_|^]SUB))", + (?\bBG\b))(?:(?i)(?![\W|_|^]SUB))| + (?\bSK\b)", RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace); private static readonly Regex SubtitleLanguageRegex = new Regex(".+?[-_. ](?[a-z]{2,3})(?:[-_. ]forced)?$", RegexOptions.Compiled | RegexOptions.IgnoreCase); @@ -182,6 +183,11 @@ public static List ParseLanguages(string title) languages.Add(Language.Bengali); } + if (lowerTitle.Contains("slovak")) + { + languages.Add(Language.Slovak); + } + // Case sensitive var caseSensitiveMatch = CaseSensitiveLanguageRegex.Match(title); @@ -205,6 +211,11 @@ public static List ParseLanguages(string title) languages.Add(Language.Bulgarian); } + if (caseSensitiveMatch.Groups["slovak"].Captures.Cast().Any()) + { + languages.Add(Language.Slovak); + } + var matches = LanguageRegex.Matches(title); foreach (Match match in matches)