New: Parsing of 4K GM-TEAM releases
This commit is contained in:
parent
4ca5a213fa
commit
9e6b32ca3e
|
@ -172,6 +172,7 @@ namespace NzbDrone.Core.Test.ParserTests
|
||||||
[TestCase("My Title - S01E01 - EpTitle [HEVC 4k DTSHD-MA-6ch]", false)]
|
[TestCase("My Title - S01E01 - EpTitle [HEVC 4k DTSHD-MA-6ch]", false)]
|
||||||
[TestCase("My Title - S01E01 - EpTitle [HEVC-4k DTSHD-MA-6ch]", false)]
|
[TestCase("My Title - S01E01 - EpTitle [HEVC-4k DTSHD-MA-6ch]", false)]
|
||||||
[TestCase("My Title - S01E01 - EpTitle [4k HEVC DTSHD-MA-6ch]", false)]
|
[TestCase("My Title - S01E01 - EpTitle [4k HEVC DTSHD-MA-6ch]", false)]
|
||||||
|
[TestCase("[GM-Team][国漫][诛仙][Series Title][2022][19][HEVC][GB][4K]", false)]
|
||||||
public void should_parse_hdtv2160p_quality(string title, bool proper)
|
public void should_parse_hdtv2160p_quality(string title, bool proper)
|
||||||
{
|
{
|
||||||
ParseAndVerifyQuality(title, Quality.HDTV2160p, proper);
|
ParseAndVerifyQuality(title, Quality.HDTV2160p, proper);
|
||||||
|
|
|
@ -49,8 +49,8 @@ namespace NzbDrone.Core.Parser
|
||||||
private static readonly Regex ResolutionRegex = new Regex(@"\b(?:(?<R360p>360p)|(?<R480p>480p|640x480|848x480)|(?<R540p>540p)|(?<R576p>576p)|(?<R720p>720p|1280x720|960p)|(?<R1080p>1080p|1920x1080|1440p|FHD|1080i|4kto1080p)|(?<R2160p>2160p|3840x2160|4k[-_. ](?:UHD|HEVC|BD|H265)|(?:UHD|HEVC|BD|H265)[-_. ]4k))\b",
|
private static readonly Regex ResolutionRegex = new Regex(@"\b(?:(?<R360p>360p)|(?<R480p>480p|640x480|848x480)|(?<R540p>540p)|(?<R576p>576p)|(?<R720p>720p|1280x720|960p)|(?<R1080p>1080p|1920x1080|1440p|FHD|1080i|4kto1080p)|(?<R2160p>2160p|3840x2160|4k[-_. ](?:UHD|HEVC|BD|H265)|(?:UHD|HEVC|BD|H265)[-_. ]4k))\b",
|
||||||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
// Handle cases where no resolution is in the release name; assume if UHD then 4k
|
// Handle cases where no resolution is in the release name (assume if UHD then 4k) or resolution is non-standard
|
||||||
private static readonly Regex ImpliedResolutionRegex = new Regex(@"\b(?<R2160p>UHD)\b",
|
private static readonly Regex AlternativeResolutionRegex = new Regex(@"\b(?<R2160p>UHD)\b|(?<R2160p>\[4K\])",
|
||||||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
private static readonly Regex CodecRegex = new Regex(@"\b(?:(?<x264>x264)|(?<h264>h264)|(?<xvidhd>XvidHD)|(?<xvid>Xvid)|(?<divx>divx))\b",
|
private static readonly Regex CodecRegex = new Regex(@"\b(?:(?<x264>x264)|(?<h264>h264)|(?<xvidhd>XvidHD)|(?<xvid>Xvid)|(?<divx>divx))\b",
|
||||||
|
@ -558,10 +558,9 @@ namespace NzbDrone.Core.Parser
|
||||||
private static Resolution ParseResolution(string name)
|
private static Resolution ParseResolution(string name)
|
||||||
{
|
{
|
||||||
var match = ResolutionRegex.Match(name);
|
var match = ResolutionRegex.Match(name);
|
||||||
|
var alternativeMatch = AlternativeResolutionRegex.Match(name);
|
||||||
|
|
||||||
var matchimplied = ImpliedResolutionRegex.Match(name);
|
if (!match.Success & !alternativeMatch.Success)
|
||||||
|
|
||||||
if (!match.Success & !matchimplied.Success)
|
|
||||||
{
|
{
|
||||||
return Resolution.Unknown;
|
return Resolution.Unknown;
|
||||||
}
|
}
|
||||||
|
@ -601,7 +600,7 @@ namespace NzbDrone.Core.Parser
|
||||||
return Resolution.R2160p;
|
return Resolution.R2160p;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (matchimplied.Groups["R2160p"].Success)
|
if (alternativeMatch.Groups["R2160p"].Success)
|
||||||
{
|
{
|
||||||
return Resolution.R2160p;
|
return Resolution.R2160p;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue