Fixed: Changed Quality Parser to avoid matching tags in the Episode title instead of the Quality tags.

pull/3113/head
Taloth Saldono 8 years ago
parent cd3b6000a0
commit 19d625c6c5

@ -165,6 +165,7 @@ namespace NzbDrone.Core.Test.ParserTests
[TestCase("Series Title S06E08 1080p WEB h264-EXCLUSIVE", false)] [TestCase("Series Title S06E08 1080p WEB h264-EXCLUSIVE", false)]
[TestCase("Series Title S06E08 No One PROPER 1080p WEB DD5 1 H 264-EXCLUSIVE", true)] [TestCase("Series Title S06E08 No One PROPER 1080p WEB DD5 1 H 264-EXCLUSIVE", true)]
[TestCase("Series Title S06E08 No One PROPER 1080p WEB H 264-EXCLUSIVE", true)] [TestCase("Series Title S06E08 No One PROPER 1080p WEB H 264-EXCLUSIVE", true)]
[TestCase("The.Simpsons.S25E21.Pay.Pal.1080p.WEB-DL.DD5.1.H.264-NTb", false)]
public void should_parse_webdl1080p_quality(string title, bool proper) public void should_parse_webdl1080p_quality(string title, bool proper)
{ {
ParseAndVerifyQuality(title, Quality.WEBDL1080p, proper); ParseAndVerifyQuality(title, Quality.WEBDL1080p, proper);

@ -1,5 +1,6 @@
using System; using System;
using System.IO; using System.IO;
using System.Linq;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using NLog; using NLog;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
@ -64,137 +65,140 @@ namespace NzbDrone.Core.Parser
result.Quality = Quality.RAWHD; result.Quality = Quality.RAWHD;
return result; return result;
} }
var sourceMatch = SourceRegex.Match(normalizedName); var sourceMatch = SourceRegex.Matches(normalizedName).OfType<Match>().LastOrDefault();
var resolution = ParseResolution(normalizedName); var resolution = ParseResolution(normalizedName);
var codecRegex = CodecRegex.Match(normalizedName); var codecRegex = CodecRegex.Match(normalizedName);
if (sourceMatch.Groups["bluray"].Success) if (sourceMatch != null && sourceMatch.Success)
{ {
if (codecRegex.Groups["xvid"].Success || codecRegex.Groups["divx"].Success) if (sourceMatch.Groups["bluray"].Success)
{ {
result.Quality = Quality.DVD; if (codecRegex.Groups["xvid"].Success || codecRegex.Groups["divx"].Success)
return result; {
} result.Quality = Quality.DVD;
return result;
}
if (resolution == Resolution._2160p) if (resolution == Resolution._2160p)
{ {
result.Quality = Quality.Bluray2160p; result.Quality = Quality.Bluray2160p;
return result; return result;
} }
if (resolution == Resolution._1080p) if (resolution == Resolution._1080p)
{ {
result.Quality = Quality.Bluray1080p; result.Quality = Quality.Bluray1080p;
return result;
}
if (resolution == Resolution._480p || resolution == Resolution._576p)
{
result.Quality = Quality.DVD;
return result;
}
result.Quality = Quality.Bluray720p;
return result; return result;
} }
if (resolution == Resolution._480p || resolution == Resolution._576p) if (sourceMatch.Groups["webdl"].Success)
{ {
result.Quality = Quality.DVD; if (resolution == Resolution._2160p)
return result; {
} result.Quality = Quality.WEBDL2160p;
return result;
}
result.Quality = Quality.Bluray720p; if (resolution == Resolution._1080p)
return result; {
} result.Quality = Quality.WEBDL1080p;
return result;
}
if (sourceMatch.Groups["webdl"].Success) if (resolution == Resolution._720p)
{ {
if (resolution == Resolution._2160p) result.Quality = Quality.WEBDL720p;
{ return result;
result.Quality = Quality.WEBDL2160p; }
return result;
}
if (resolution == Resolution._1080p) if (name.Contains("[WEBDL]"))
{ {
result.Quality = Quality.WEBDL1080p; result.Quality = Quality.WEBDL720p;
return result; return result;
} }
if (resolution == Resolution._720p) result.Quality = Quality.WEBDL480p;
{
result.Quality = Quality.WEBDL720p;
return result; return result;
} }
if (name.Contains("[WEBDL]")) if (sourceMatch.Groups["hdtv"].Success)
{ {
result.Quality = Quality.WEBDL720p; if (resolution == Resolution._2160p)
return result; {
} result.Quality = Quality.HDTV2160p;
return result;
}
result.Quality = Quality.WEBDL480p; if (resolution == Resolution._1080p)
return result; {
} result.Quality = Quality.HDTV1080p;
return result;
}
if (sourceMatch.Groups["hdtv"].Success) if (resolution == Resolution._720p)
{ {
if (resolution == Resolution._2160p) result.Quality = Quality.HDTV720p;
{ return result;
result.Quality = Quality.HDTV2160p; }
return result;
}
if (resolution == Resolution._1080p) if (name.Contains("[HDTV]"))
{ {
result.Quality = Quality.HDTV1080p; result.Quality = Quality.HDTV720p;
return result;
}
result.Quality = Quality.SDTV;
return result; return result;
} }
if (resolution == Resolution._720p) if (sourceMatch.Groups["bdrip"].Success ||
sourceMatch.Groups["brrip"].Success)
{ {
result.Quality = Quality.HDTV720p; switch (resolution)
return result; {
case Resolution._720p:
result.Quality = Quality.Bluray720p;
return result;
case Resolution._1080p:
result.Quality = Quality.Bluray1080p;
return result;
default:
result.Quality = Quality.DVD;
return result;
}
} }
if (name.Contains("[HDTV]")) if (sourceMatch.Groups["dvd"].Success)
{ {
result.Quality = Quality.HDTV720p; result.Quality = Quality.DVD;
return result; return result;
} }
result.Quality = Quality.SDTV; if (sourceMatch.Groups["pdtv"].Success ||
return result; sourceMatch.Groups["sdtv"].Success ||
} sourceMatch.Groups["dsr"].Success ||
sourceMatch.Groups["tvrip"].Success)
if (sourceMatch.Groups["bdrip"].Success ||
sourceMatch.Groups["brrip"].Success)
{
switch (resolution)
{ {
case Resolution._720p: if (HighDefPdtvRegex.IsMatch(normalizedName))
result.Quality = Quality.Bluray720p; {
return result; result.Quality = Quality.HDTV720p;
case Resolution._1080p:
result.Quality = Quality.Bluray1080p;
return result; return result;
default: }
result.Quality = Quality.DVD;
return result;
}
}
if (sourceMatch.Groups["dvd"].Success) result.Quality = Quality.SDTV;
{
result.Quality = Quality.DVD;
return result;
}
if (sourceMatch.Groups["pdtv"].Success ||
sourceMatch.Groups["sdtv"].Success ||
sourceMatch.Groups["dsr"].Success ||
sourceMatch.Groups["tvrip"].Success)
{
if (HighDefPdtvRegex.IsMatch(normalizedName))
{
result.Quality = Quality.HDTV720p;
return result; return result;
} }
result.Quality = Quality.SDTV;
return result;
} }
@ -304,7 +308,7 @@ namespace NzbDrone.Core.Parser
} }
catch (ArgumentException) catch (ArgumentException)
{ {
//Swallow exception for cases where string contains illegal //Swallow exception for cases where string contains illegal
//path characters. //path characters.
} }
} }

Loading…
Cancel
Save