From e42edf1d33687723c9bb2e370bbcd028d1b3de17 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sat, 10 Dec 2022 16:25:23 -0800 Subject: [PATCH] New: Add Thai Language Closes #5170 --- .../ParserTests/LanguageParserFixture.cs | 9 +++++++++ src/NzbDrone.Core/Languages/Language.cs | 2 ++ src/NzbDrone.Core/Parser/LanguageParser.cs | 7 ++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs index 47c50014d..f2e507919 100644 --- a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs @@ -312,6 +312,15 @@ namespace NzbDrone.Core.Test.ParserTests result.First().Id.Should().Be(Language.Slovak.Id); } + [TestCase("Thai.Series.Title.S01.THAI.1080p.WEBRip.x265-RARBG")] + [TestCase("Series.Title.S02.THAI.1080p.NF.WEBRip.DDP2.0.x264-PAAI[rartv]")] + [TestCase("Series.Title.S01.THAI.1080p.NF.WEBRip.DDP5.1.x264-NTG[rartv]")] + public void should_parse_language_thai(string postTitle) + { + var result = LanguageParser.ParseLanguages(postTitle); + result.First().Id.Should().Be(Language.Thai.Id); + } + [TestCase("Title.the.Russian.Series.S01E07.Cold.Action.HDTV.XviD-Droned")] [TestCase("Title.the.Russian.Series.S01E07E08.Cold.Action.HDTV.XviD-Droned")] [TestCase("Title.the.Russian.Series.S01.1080p.WEBRip.DDP5.1.x264-Drone")] diff --git a/src/NzbDrone.Core/Languages/Language.cs b/src/NzbDrone.Core/Languages/Language.cs index 2e6bb638f..de0e72a3a 100644 --- a/src/NzbDrone.Core/Languages/Language.cs +++ b/src/NzbDrone.Core/Languages/Language.cs @@ -102,6 +102,7 @@ namespace NzbDrone.Core.Languages public static Language Malayalam => new Language(29, "Malayalam"); public static Language Ukrainian => new Language(30, "Ukrainian"); public static Language Slovak => new Language(31, "Slovak"); + public static Language Thai => new Language(32, "Thai"); public static Language Original => new Language(-2, "Original"); public static List All @@ -142,6 +143,7 @@ namespace NzbDrone.Core.Languages Malayalam, Ukrainian, Slovak, + Thai, Original }; } diff --git a/src/NzbDrone.Core/Parser/LanguageParser.cs b/src/NzbDrone.Core/Parser/LanguageParser.cs index 7e1e76f5d..523441d52 100644 --- a/src/NzbDrone.Core/Parser/LanguageParser.cs +++ b/src/NzbDrone.Core/Parser/LanguageParser.cs @@ -19,7 +19,7 @@ namespace NzbDrone.Core.Parser new RegexReplace(@".*?[_. ](S\d{2}(?:E\d{2,4})*[_. ].*)", "$1", RegexOptions.Compiled | RegexOptions.IgnoreCase) }; - private static readonly Regex LanguageRegex = new Regex(@"(?:\W|_)(?\b(?:ita|italian)\b)|(?german\b|videomann|ger[. ]dub)|(?flemish)|(?greek)|(?(?:\W|_)(?:FR|VF|VF2|VFF|VFQ|TRUEFRENCH)(?:\W|_))|(?\brus\b)|(?\b(?:HUNDUB|HUN)\b)|(?\bHebDub\b)|(?\b(?:PL\W?DUB|DUB\W?PL|LEK\W?PL|PL\W?LEK)\b)|(?\[(?:CH[ST]|BIG5|GB)\]|简|繁|字幕)|(?\bbgaudio\b)|(?\b(?:español|castellano)\b)|(?\b(?:ukr)\b)", + private static readonly Regex LanguageRegex = new Regex(@"(?:\W|_)(?\b(?:ita|italian)\b)|(?german\b|videomann|ger[. ]dub)|(?flemish)|(?greek)|(?(?:\W|_)(?:FR|VF|VF2|VFF|VFQ|TRUEFRENCH)(?:\W|_))|(?\brus\b)|(?\b(?:HUNDUB|HUN)\b)|(?\bHebDub\b)|(?\b(?:PL\W?DUB|DUB\W?PL|LEK\W?PL|PL\W?LEK)\b)|(?\[(?:CH[ST]|BIG5|GB)\]|简|繁|字幕)|(?\bbgaudio\b)|(?\b(?:español|castellano)\b)|(?\b(?:ukr)\b)|(?\b(?:THAI)\b)", RegexOptions.IgnoreCase | RegexOptions.Compiled); private static readonly Regex CaseSensitiveLanguageRegex = new Regex(@"(?:(?i)(?\bLT\b)|(?\bCZ\b)|(?\bPL\b)|(?\bBG\b)|(?\bSK\b))(?:(?i)(?![\W|_|^]SUB))", @@ -340,6 +340,11 @@ namespace NzbDrone.Core.Parser languages.Add(Language.Spanish); } + if (match.Groups["thai"].Success) + { + languages.Add(Language.Thai); + } + return languages; } }