Added season page parsing

pull/1019/head
Dmitry Chepurovskiy 2 years ago
parent ab207ac75b
commit 8e1151f5c7
No known key found for this signature in database
GPG Key ID: 5B3A5FDCBFF9B3A4

@ -588,8 +588,9 @@ namespace NzbDrone.Core.Indexers.Definitions
return FollowTrackerRedirection(redirectionUrl, details);
}
private IList<TorrentInfo> ParseRelease(IndexerResponse indexerResponse)
private IList<ReleaseInfo> ParseEpisodeResponse(IndexerResponse indexerResponse)
{
Logger.Debug("ParsingEpisodeResponse: " + indexerResponse.Request.Url.ToString());
var releases = new List<TorrentInfo>();
var parser = new HtmlParser();
var dom = parser.ParseDocument(indexerResponse.Content);
@ -625,12 +626,37 @@ namespace NzbDrone.Core.Indexers.Definitions
releases.AddRange(episodeReleases);
}
return releases;
return releases.ToArray();
}
private IList<ReleaseInfo> ParseNewResponse(IndexerResponse indexerResponse)
private IList<ReleaseInfo> ParseSeasonResponse(IndexerResponse indexerResponse)
{
var releases = new List<ReleaseInfo>();
Logger.Debug("ParsingSeasonResponse: " + indexerResponse.Request.Url.ToString());
var releases = new List<TorrentInfo>();
var parser = new HtmlParser();
var document = parser.ParseDocument(indexerResponse.Content);
var seasons = document.QuerySelectorAll("div.serie-block");
var rowSelector = "table.movie-parts-list > tbody > tr";
foreach (var season in seasons)
{
// Could ne null if serie-block is for Extras
var seasonButton = season.QuerySelector("div.movie-details-block > div.external-btn");
var lastEpisode = season.QuerySelector(rowSelector);
var dateColumn = lastEpisode.QuerySelector("td.delta");
var date = DateFromEpisodeColumn(dateColumn);
var urlDetails = new TrackerUrlDetails(seasonButton);
var seasonReleases = FetchTrackerReleases(urlDetails);
foreach (var release in seasonReleases)
{
release.InfoUrl = indexerResponse.Request.Url.ToString();
release.PublishDate = date;
}
}
return releases.ToArray();
}
@ -638,15 +664,10 @@ namespace NzbDrone.Core.Indexers.Definitions
{
if (indexerResponse.Request.Url.Path.Contains("/episode_"))
{
return ParseNewResponse(indexerResponse);
return ParseEpisodeResponse(indexerResponse);
}
if (indexerResponse.Request.Url.Path == "/new")
{
return ParseNewResponse(indexerResponse);
}
return new List<ReleaseInfo>().ToArray();
return ParseSeasonResponse(indexerResponse);
}
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
@ -665,14 +686,14 @@ namespace NzbDrone.Core.Indexers.Definitions
return (start != -1 && end != -1) ? s.Substring(start + startString.Length, end - start - startString.Length) : null;
}
// private DateTime DateFromEpisodeColumn(AngleSharp.Dom.IElement dateColumn)
// {
// var dateString = dateColumn.QuerySelector("span.small-text")?.TextContent;
private DateTime DateFromEpisodeColumn(AngleSharp.Dom.IElement dateColumn)
{
var dateString = dateColumn.QuerySelector("span.small-text")?.TextContent;
// // 'Eng: 23.05.2017' -> '23.05.2017' OR '23.05.2017' -> '23.05.2017'
// dateString = string.IsNullOrEmpty(dateString) ? dateColumn.QuerySelector("span")?.TextContent : dateString.Substring(dateString.IndexOf(":") + 2);
// var date = DateTime.Parse(dateString, new CultureInfo("RU-ru")); // dd.mm.yyyy
// return date;
// }
// 'Eng: 23.05.2017' -> '23.05.2017' OR '23.05.2017' -> '23.05.2017'
dateString = string.IsNullOrEmpty(dateString) ? dateColumn.QuerySelector("span")?.TextContent : dateString.Substring(dateString.IndexOf(":") + 2);
var date = DateTime.Parse(dateString, new CultureInfo("RU-ru")); // dd.mm.yyyy
return date;
}
}
}

Loading…
Cancel
Save