From d375b5ffbe03f6939372f59b4e69ae9dcf5c5940 Mon Sep 17 00:00:00 2001 From: epmt7w3ugk Date: Tue, 7 Jan 2025 14:47:13 +0100 Subject: [PATCH] Fixed: Parse GER/DE releases as German language Fix parsing for German language to correctly detect "GER" and "DE" Update test for GER/DE language parsing. --- .../ParserTests/LanguageParserFixture.cs | 6 ++++++ src/NzbDrone.Core/Parser/LanguageParser.cs | 8 +++++++- src/NzbDrone.Core/Parser/Parser.cs | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs index ec3c2ce890..c7bb13a641 100644 --- a/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/LanguageParserFixture.cs @@ -87,7 +87,13 @@ public void should_parse_language_spanish(string postTitle) } [TestCase("Movie.Title.1994.German.1080p.XviD-LOL")] + [TestCase("Movie.Title.2016.GERMAN.DUBBED.WS.WEBRiP.XviD.REPACK-TVP")] + [TestCase("Movie Title 2016 - Kampfhaehne - mkv - by Videomann")] [TestCase("Movie.Title.2016.Ger.Dub.AAC.1080p.WebDL.x264-TKP21")] + [TestCase("Movie.Title.2016.Ger.AAC.1080p.WebDL.x264-TKP21")] + [TestCase("Movie.Title.2016.Hun/Ger/Ita.AAC.1080p.WebDL.x264-TKP21")] + [TestCase("Movie.Title.2016.1080p.10Bit.HEVC.WEBRip.HIN-ENG-GER.DD5.1.H.265")] + [TestCase("Movie.Title.2016.HU-IT-DE.AAC.1080p.WebDL.x264")] public void should_parse_language_german(string postTitle) { var result = Parser.Parser.ParseMovieTitle(postTitle, true); diff --git a/src/NzbDrone.Core/Parser/LanguageParser.cs b/src/NzbDrone.Core/Parser/LanguageParser.cs index f710e9b15a..fd4ebe9ca3 100644 --- a/src/NzbDrone.Core/Parser/LanguageParser.cs +++ b/src/NzbDrone.Core/Parser/LanguageParser.cs @@ -16,7 +16,7 @@ public static class LanguageParser private static readonly Logger Logger = NzbDroneLogger.GetLogger(typeof(LanguageParser)); private static readonly Regex LanguageRegex = new Regex(@"(?:\W|_|^)(?\b(?:ita|italian)\b)| - (?german\b|videomann|ger[. ]dub)| + (?german\b|videomann|ger[. ]dub|\bger\b)| (?flemish)| (?bgaudio)| (?rodubbed)| @@ -44,6 +44,7 @@ public static class LanguageParser (?\bPL\b)| (?\bBG\b)| (?\bSK\b)| + (?\bDE\b)| (?\b(? ParseLanguages(string title) { languages.Add(Language.Spanish); } + + if (match.Groups["german"].Captures.Any()) + { + languages.Add(Language.German); + } } var matches = LanguageRegex.Matches(title); diff --git a/src/NzbDrone.Core/Parser/Parser.cs b/src/NzbDrone.Core/Parser/Parser.cs index e943feb6bb..d77f85c087 100644 --- a/src/NzbDrone.Core/Parser/Parser.cs +++ b/src/NzbDrone.Core/Parser/Parser.cs @@ -142,7 +142,7 @@ public static class Parser private static readonly Regex CleanQualityBracketsRegex = new Regex(@"\[[a-z0-9 ._-]+\]$", RegexOptions.IgnoreCase | RegexOptions.Compiled); - private static readonly Regex ReleaseGroupRegex = new Regex(@"-(?[a-z0-9]+(?-[a-z0-9]+)?(?!.+?(?:480p|576p|720p|1080p|2160p)))(?\d+)|(?tt\d{7,8}))(?:\k)?)(?:\b|[-._ ]|$)|[-._ ]\[(?[a-z0-9]+)\]$", + private static readonly Regex ReleaseGroupRegex = new Regex(@"-(?[a-z0-9]+(?-[a-z0-9]+)?(?!.+?(?:480p|576p|720p|1080p|2160p)))(?\d+)|(?tt\d{7,8}))(?:\k)?)(?:\b|[-._ ]|$)|[-._ ]\[(?[a-z0-9]+)\]$", RegexOptions.IgnoreCase | RegexOptions.Compiled); private static readonly Regex InvalidReleaseGroupRegex = new Regex(@"^([se]\d+|[0-9a-f]{8})$", RegexOptions.IgnoreCase | RegexOptions.Compiled);