From 6081094b731eb1edf94d19e9146a2336d6f7a13b Mon Sep 17 00:00:00 2001 From: Ivan de la Beldad Fernandez Date: Tue, 3 Jul 2018 11:01:08 +0200 Subject: [PATCH] newpct: fix parser multi-episode and minor improvements (#3327) * fix: add multiepisode parsing and minor improvements Now a quality it's ensured Now quality it's cleaned from brackets Add dash as multiepisode separator * fix: prevent an error if cannot guess serie name from title * fix: now title is being extracted correctly --- src/Jackett.Common/Indexers/Newpct.cs | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/Jackett.Common/Indexers/Newpct.cs b/src/Jackett.Common/Indexers/Newpct.cs index a355f626e..d38e47fe6 100644 --- a/src/Jackett.Common/Indexers/Newpct.cs +++ b/src/Jackett.Common/Indexers/Newpct.cs @@ -37,7 +37,7 @@ namespace Jackett.Common.Indexers private ReleaseInfo _mostRecentRelease; private Regex _searchStringRegex = new Regex(@"(.+?)S0?(\d+)(E0?(\d+))?$", RegexOptions.IgnoreCase); private Regex _titleListRegex = new Regex(@"Serie(.+?)(Temporada(.+?)(\d+)(.+?))?Capitulos?(.+?)(\d+)((.+?)(\d+))?(.+?)-(.+?)Calidad(.*)", RegexOptions.IgnoreCase); - private Regex _titleClassicRegex = new Regex(@"(\[[^\]]*\])?\[Cap\.(\d{1,2})(\d{2})(_(\d{1,2})(\d{2}))?\]", RegexOptions.IgnoreCase); + private Regex _titleClassicRegex = new Regex(@"(\[[^\]]*\])?\[Cap\.(\d{1,2})(\d{2})([_-](\d{1,2})(\d{2}))?\]", RegexOptions.IgnoreCase); private Regex _titleClassicTvQualityRegex = new Regex(@"\[([^\]]*HDTV[^\]]*)", RegexOptions.IgnoreCase); private int _maxDailyPages = 7; @@ -420,10 +420,28 @@ namespace Jackett.Common.Indexers private string FixedTitle(NewpctRelease release, string quality) { + if (String.IsNullOrEmpty(release.SerieName)) + { + release.SerieName = release.Title; + if (release.Title.Contains("-")) + { + release.SerieName = release.Title.Substring(0, release.Title.IndexOf('-') - 1); + } + } + if (String.IsNullOrEmpty(quality)) + { + quality = "HDTV"; + } + var seasonAndEpisode = "S" + release.Season.ToString().PadLeft(2, '0'); + seasonAndEpisode += "E" + release.Episode.ToString().PadLeft(2, '0'); + if (release.EpisodeTo != release.Episode && release.EpisodeTo != null && release.EpisodeTo != 0) + { + seasonAndEpisode += "-" + release.EpisodeTo.ToString().PadLeft(2, '0'); + } var titleParts = new List(); titleParts.Add(release.SerieName); - titleParts.Add("S" + release.Season.ToString().PadLeft(2, '0') + "E" + release.Episode.ToString().PadLeft(2, '0')); - titleParts.Add(quality); + titleParts.Add(seasonAndEpisode); + titleParts.Add(quality.Replace("[", "").Replace("]", "")); if (release.Title.ToLower().Contains("esp") || release.Title.ToLower().Contains("cast")) { titleParts.Add("Spanish");