diff --git a/src/NzbDrone.Core.Test/ParserTests/ParserFixture.cs b/src/NzbDrone.Core.Test/ParserTests/ParserFixture.cs index 96e73f4cb..11538b7c9 100644 --- a/src/NzbDrone.Core.Test/ParserTests/ParserFixture.cs +++ b/src/NzbDrone.Core.Test/ParserTests/ParserFixture.cs @@ -174,6 +174,23 @@ public void should_not_parse_wrong_language_in_title(string postTitle) parsed.Languages.First().Should().Be(Language.English); } + [TestCase("The.Purge.3.Election.Year.2016.German.DTS.DL.720p.BluRay.x264-MULTiPLEX")] + public void should_not_parse_multi_language_in_releasegroup(string postTitle) + { + var parsed = Parser.Parser.ParseMovieTitle(postTitle, true); + parsed.Languages.Count().Should().Be(1); + parsed.Languages.First().Should().Be(Language.German); + } + + [TestCase("The.Purge.3.Election.Year.2016.German.Multi.DTS.DL.720p.BluRay.x264-MULTiPLEX")] + public void should_parse_multi_language(string postTitle) + { + var parsed = Parser.Parser.ParseMovieTitle(postTitle, true); + parsed.Languages.Count().Should().Be(2); + parsed.Languages.Should().Contain(Language.German); + parsed.Languages.Should().Contain(Language.English, "Added by the multi tag in the release name"); + } + [TestCase("The Italian Job 2008 [tt1234567] 720p BluRay X264", "tt1234567")] [TestCase("The Italian Job 2008 [tt12345678] 720p BluRay X264", "tt12345678")] public void should_parse_imdb_in_title(string postTitle, string imdb) diff --git a/src/NzbDrone.Core/Parser/Parser.cs b/src/NzbDrone.Core/Parser/Parser.cs index 2e3fb70f0..b88d55b79 100644 --- a/src/NzbDrone.Core/Parser/Parser.cs +++ b/src/NzbDrone.Core/Parser/Parser.cs @@ -240,17 +240,6 @@ public static ParsedMovieInfo ParseMovieTitle(string title, bool isDir = false) simpleReleaseTitle = simpleReleaseTitle.Replace(simpleTitleReplaceString, simpleTitleReplaceString.Contains(".") ? "A.Movie" : "A Movie"); } - result.Languages = LanguageParser.ParseLanguages(simpleReleaseTitle); - Logger.Debug("Languages parsed: {0}", string.Join(", ", result.Languages)); - - result.Quality = QualityParser.ParseQuality(title); - Logger.Debug("Quality parsed: {0}", result.Quality); - - if (result.Edition.IsNullOrWhiteSpace()) - { - result.Edition = ParseEdition(simpleReleaseTitle); - } - result.ReleaseGroup = ParseReleaseGroup(simpleReleaseTitle); var subGroup = GetSubGroup(match); @@ -261,6 +250,18 @@ public static ParsedMovieInfo ParseMovieTitle(string title, bool isDir = false) Logger.Debug("Release Group parsed: {0}", result.ReleaseGroup); + result.Languages = LanguageParser.ParseLanguages(result.ReleaseGroup.IsNotNullOrWhiteSpace() ? simpleReleaseTitle.Replace(result.ReleaseGroup, "RlsGrp") : simpleReleaseTitle); + Logger.Debug("Languages parsed: {0}", string.Join(", ", result.Languages)); + + result.Quality = QualityParser.ParseQuality(title); + Logger.Debug("Quality parsed: {0}", result.Quality); + + if (result.Edition.IsNullOrWhiteSpace()) + { + result.Edition = ParseEdition(simpleReleaseTitle); + Logger.Debug("Edition parsed: {0}", result.Edition); + } + result.ReleaseHash = GetReleaseHash(match); if (!result.ReleaseHash.IsNullOrWhiteSpace()) {