From 4faf7ed959db400056b0bcf5b021fe3f4f49dcdb Mon Sep 17 00:00:00 2001 From: Mirx Date: Thu, 6 Aug 2015 10:00:41 +0200 Subject: [PATCH] New: Hungarian language support Closes #729 --- .../ParserTests/LanguageParserFixture.cs | 3 +++ src/NzbDrone.Core/Parser/Language.cs | 3 ++- src/NzbDrone.Core/Parser/Parser.cs | 8 +++++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs index 9127fce7e..5e6b37902 100644 --- a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs @@ -43,6 +43,9 @@ public class LanguageParserFixture : CoreTest [TestCase("Constantine.2014.S01E01.WEBRiP.H264.AAC.5.1-NL.SUBS", Language.Dutch)] [TestCase("Elementary - S02E16 - Kampfhaehne - mkv - by Videomann", Language.German)] [TestCase("Two.Greedy.Italians.S01E01.The.Family.720p.HDTV.x264-FTP", Language.English)] + [TestCase("Castle.2009.S01E14.HDTV.XviD.HUNDUB-LOL", Language.Hungarian)] + [TestCase("Castle.2009.S01E14.HDTV.XviD.ENG.HUN-LOL", Language.Hungarian)] + [TestCase("Castle.2009.S01E14.HDTV.XviD.HUN-LOL", Language.Hungarian)] public void should_parse_language(string postTitle, Language language) { var result = Parser.Parser.ParseTitle(postTitle); diff --git a/src/NzbDrone.Core/Parser/Language.cs b/src/NzbDrone.Core/Parser/Language.cs index a56766162..f85281dd1 100644 --- a/src/NzbDrone.Core/Parser/Language.cs +++ b/src/NzbDrone.Core/Parser/Language.cs @@ -23,6 +23,7 @@ public enum Language Portuguese = 18, Flemish = 19, Greek = 20, - Korean = 21 + Korean = 21, + Hungarian = 22 } } diff --git a/src/NzbDrone.Core/Parser/Parser.cs b/src/NzbDrone.Core/Parser/Parser.cs index e7598d8af..e434af9ac 100644 --- a/src/NzbDrone.Core/Parser/Parser.cs +++ b/src/NzbDrone.Core/Parser/Parser.cs @@ -205,7 +205,7 @@ public static class Parser private static readonly Regex AnimeReleaseGroupRegex = new Regex(@"^(?:\[(?(?!\s).+?(?\b(?:ita|italian)\b)|(?german\b|videomann)|(?flemish)|(?greek)|(?(?:\W|_)(?:FR|VOSTFR)(?:\W|_))|(?\brus\b)|(?nl\W?subs?)", + private static readonly Regex LanguageRegex = new Regex(@"(?:\W|_)(?\b(?:ita|italian)\b)|(?german\b|videomann)|(?flemish)|(?greek)|(?(?:\W|_)(?:FR|VOSTFR)(?:\W|_))|(?\brus\b)|(?nl\W?subs?)|(?\b(?:HUNDUB|HUN)\b)", RegexOptions.IgnoreCase | RegexOptions.Compiled); private static readonly Regex YearInTitleRegex = new Regex(@"^(?.+?)(?:\W|_)?(?<year>\d{4})", @@ -498,6 +498,9 @@ public static Language ParseLanguage(string title) if (lowerTitle.Contains("portuguese")) return Language.Portuguese; + if (lowerTitle.Contains("hungarian")) + return Language.Hungarian; + var match = LanguageRegex.Match(title); if (match.Groups["italian"].Captures.Cast<Capture>().Any()) @@ -521,6 +524,9 @@ public static Language ParseLanguage(string title) if (match.Groups["dutch"].Success) return Language.Dutch; + if (match.Groups["hungarian"].Success) + return Language.Hungarian; + return Language.English; }