mirror of
https://github.com/Prowlarr/Prowlarr
synced 2026-05-08 12:43:19 +02:00
Added season page parsing
This commit is contained in:
parent
ab207ac75b
commit
8e1151f5c7
1 changed files with 40 additions and 19 deletions
|
|
@ -588,8 +588,9 @@ private IList<TorrentInfo> FetchTrackerReleases(TrackerUrlDetails details)
|
|||
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 @@ private IList<TorrentInfo> ParseRelease(IndexerResponse indexerResponse)
|
|||
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 @@ public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
|
|||
{
|
||||
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 @@ private string TrimString(string s, string startString, string endString)
|
|||
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…
Reference in a new issue