mirror of
https://github.com/Prowlarr/Prowlarr
synced 2026-05-08 12:43:19 +02:00
Lostfilm parse /new page in IndexerRequestsGenerarator to parse in IndexerParser only releases pages
This commit is contained in:
parent
e13b0b7a97
commit
ab207ac75b
1 changed files with 27 additions and 42 deletions
|
|
@ -182,8 +182,29 @@ public LostfilmRequestGenerator()
|
|||
{
|
||||
}
|
||||
|
||||
private IList<string> GetSearchPageURLs(string term, int? season, string episode)
|
||||
private IList<string> GetNewReleaseURLs()
|
||||
{
|
||||
Logger.Debug("GetNewReleaseURLs");
|
||||
var urls = new List<string>();
|
||||
|
||||
var req = new IndexerRequest(Settings.BaseUrl + "new", HttpAccept.Html);
|
||||
var response = new IndexerResponse(req, HttpClient.ExecuteProxied(req.HttpRequest, Definition));
|
||||
|
||||
var parser = new HtmlParser();
|
||||
var dom = parser.ParseDocument(response.Content);
|
||||
var rows = dom.QuerySelectorAll("div.row");
|
||||
foreach (var r in rows)
|
||||
{
|
||||
var path = r.QuerySelector("a").GetAttribute("href");
|
||||
urls.Add(Settings.BaseUrl + path.TrimStart('/'));
|
||||
}
|
||||
|
||||
return urls;
|
||||
}
|
||||
|
||||
private IList<string> GetSearchReleaseURLs(string term, int? season, string episode)
|
||||
{
|
||||
Logger.Debug("GetSearchReleaseURLs");
|
||||
var urls = new List<string>();
|
||||
/*
|
||||
Torznab query for some series could contains sanitized title. E.g. "Star Wars: The Clone Wars" will become "Star Wars The Clone Wars".
|
||||
|
|
@ -247,8 +268,8 @@ private IList<string> GetSearchPageURLs(string term, int? season, string episode
|
|||
|
||||
requestBuilder.PostProcess += r => r.RequestTimeout = TimeSpan.FromSeconds(15);
|
||||
requestBuilder.SetCookies(Indexer.GetCookiesPublic());
|
||||
var req = new IndexerRequest(requestBuilder.Build());
|
||||
var response = new IndexerResponse(req, HttpClient.ExecuteProxied(req.HttpRequest, Definition));
|
||||
var request = new IndexerRequest(requestBuilder.Build());
|
||||
var response = new IndexerResponse(request, HttpClient.ExecuteProxied(request.HttpRequest, Definition));
|
||||
|
||||
if (response.Content == null)
|
||||
{
|
||||
|
|
@ -322,13 +343,14 @@ private IEnumerable<IndexerRequest> GetPagedRequests(string term, int[] categori
|
|||
|
||||
if (string.IsNullOrWhiteSpace(term))
|
||||
{
|
||||
requestUrls.Add(Settings.BaseUrl + "new");
|
||||
requestUrls.AddRange(GetNewReleaseURLs());
|
||||
}
|
||||
else
|
||||
{
|
||||
requestUrls.AddRange(GetSearchPageURLs(term, season, episode));
|
||||
requestUrls.AddRange(GetSearchReleaseURLs(term, season, episode));
|
||||
}
|
||||
|
||||
Logger.Debug("GetPagedRequests: " + requestUrls.Count.ToString());
|
||||
foreach (var url in requestUrls)
|
||||
{
|
||||
yield return new IndexerRequest(url, HttpAccept.Html);
|
||||
|
|
@ -607,38 +629,6 @@ private IList<TorrentInfo> ParseRelease(IndexerResponse indexerResponse)
|
|||
}
|
||||
|
||||
private IList<ReleaseInfo> ParseNewResponse(IndexerResponse indexerResponse)
|
||||
{
|
||||
var releases = new List<ReleaseInfo>();
|
||||
|
||||
var parser = new HtmlParser();
|
||||
var dom = parser.ParseDocument(indexerResponse.Content);
|
||||
var rows = dom.QuerySelectorAll("div.row");
|
||||
foreach (var r in rows)
|
||||
{
|
||||
var link = r.QuerySelector("a").GetAttribute("href");
|
||||
var releaseRequest = new IndexerRequest(_settings.BaseUrl + link.TrimStart('/'), HttpAccept.Html);
|
||||
var releaseResponse = new IndexerResponse(releaseRequest, HttpClient.ExecuteProxied(releaseRequest.HttpRequest, Definition));
|
||||
|
||||
// Throw common http errors here before we try to parse
|
||||
if (releaseResponse.HttpResponse.HasHttpError)
|
||||
{
|
||||
if ((int)releaseResponse.HttpResponse.StatusCode == 429)
|
||||
{
|
||||
throw new TooManyRequestsException(releaseRequest.HttpRequest, releaseResponse.HttpResponse);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new IndexerException(releaseResponse, "Http error code: " + releaseResponse.HttpResponse.StatusCode);
|
||||
}
|
||||
}
|
||||
|
||||
releases.AddRange(ParseRelease(releaseResponse));
|
||||
}
|
||||
|
||||
return releases.ToArray();
|
||||
}
|
||||
|
||||
private IList<ReleaseInfo> ParseSearchResponse(IndexerResponse indexerResponse)
|
||||
{
|
||||
var releases = new List<ReleaseInfo>();
|
||||
return releases.ToArray();
|
||||
|
|
@ -646,11 +636,6 @@ private IList<ReleaseInfo> ParseSearchResponse(IndexerResponse indexerResponse)
|
|||
|
||||
public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
|
||||
{
|
||||
if (indexerResponse.Request.Url.Path == "/new")
|
||||
{
|
||||
return ParseNewResponse(indexerResponse);
|
||||
}
|
||||
|
||||
if (indexerResponse.Request.Url.Path.Contains("/episode_"))
|
||||
{
|
||||
return ParseNewResponse(indexerResponse);
|
||||
|
|
|
|||
Loading…
Reference in a new issue