mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-04-24 05:47:22 -04:00
Fixed: (SpeedCD) Add pagination and SupportsPagination
This commit is contained in:
parent
4348ebe187
commit
ac3047f0cc
1 changed files with 50 additions and 40 deletions
|
@ -35,6 +35,7 @@ public class SpeedCD : TorrentIndexerBase<SpeedCDSettings>
|
|||
public override Encoding Encoding => Encoding.UTF8;
|
||||
public override DownloadProtocol Protocol => DownloadProtocol.Torrent;
|
||||
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
|
||||
public override bool SupportsPagination => true;
|
||||
public override IndexerCapabilities Capabilities => SetCapabilities();
|
||||
|
||||
public SpeedCD(IIndexerHttpClient httpClient,
|
||||
|
@ -190,41 +191,6 @@ public class SpeedCDRequestGenerator : IIndexerRequestGenerator
|
|||
_encoding = encoding;
|
||||
}
|
||||
|
||||
private IEnumerable<IndexerRequest> GetPagedRequests(string term, int[] categories, bool deep = false)
|
||||
{
|
||||
var parameters = new List<string>();
|
||||
|
||||
var catList = _capabilities.Categories.MapTorznabCapsToTrackers(categories);
|
||||
foreach (var cat in catList)
|
||||
{
|
||||
parameters.Add(cat);
|
||||
}
|
||||
|
||||
if (_settings.FreeleechOnly)
|
||||
{
|
||||
parameters.Add("freeleech");
|
||||
}
|
||||
|
||||
if (_settings.ExcludeArchives)
|
||||
{
|
||||
parameters.Add("norar");
|
||||
}
|
||||
|
||||
if (deep)
|
||||
{
|
||||
parameters.Add("deep");
|
||||
}
|
||||
|
||||
parameters.Add("q");
|
||||
parameters.Add(term.UrlEncode(_encoding));
|
||||
|
||||
var searchUrl = $"{_settings.BaseUrl.TrimEnd('/')}/browse/{string.Join("/", parameters)}";
|
||||
|
||||
var request = new IndexerRequest(searchUrl, HttpAccept.Html);
|
||||
|
||||
yield return request;
|
||||
}
|
||||
|
||||
public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
|
||||
{
|
||||
var pageableRequests = new IndexerPageableRequestChain();
|
||||
|
@ -236,7 +202,7 @@ public class SpeedCDRequestGenerator : IIndexerRequestGenerator
|
|||
term = $"{searchCriteria.FullImdbId}";
|
||||
}
|
||||
|
||||
pageableRequests.Add(GetPagedRequests(term.Trim(), searchCriteria.Categories, searchCriteria.FullImdbId.IsNotNullOrWhiteSpace()));
|
||||
pageableRequests.Add(GetPagedRequests(term.Trim(), searchCriteria, searchCriteria.FullImdbId.IsNotNullOrWhiteSpace()));
|
||||
|
||||
return pageableRequests;
|
||||
}
|
||||
|
@ -245,7 +211,7 @@ public class SpeedCDRequestGenerator : IIndexerRequestGenerator
|
|||
{
|
||||
var pageableRequests = new IndexerPageableRequestChain();
|
||||
|
||||
pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}", searchCriteria.Categories));
|
||||
pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}", searchCriteria));
|
||||
|
||||
return pageableRequests;
|
||||
}
|
||||
|
@ -271,7 +237,7 @@ public class SpeedCDRequestGenerator : IIndexerRequestGenerator
|
|||
}
|
||||
}
|
||||
|
||||
pageableRequests.Add(GetPagedRequests(term.Trim(), searchCriteria.Categories, searchCriteria.FullImdbId.IsNotNullOrWhiteSpace()));
|
||||
pageableRequests.Add(GetPagedRequests(term.Trim(), searchCriteria, searchCriteria.FullImdbId.IsNotNullOrWhiteSpace()));
|
||||
|
||||
return pageableRequests;
|
||||
}
|
||||
|
@ -280,7 +246,7 @@ public class SpeedCDRequestGenerator : IIndexerRequestGenerator
|
|||
{
|
||||
var pageableRequests = new IndexerPageableRequestChain();
|
||||
|
||||
pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}", searchCriteria.Categories));
|
||||
pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}", searchCriteria));
|
||||
|
||||
return pageableRequests;
|
||||
}
|
||||
|
@ -289,11 +255,55 @@ public class SpeedCDRequestGenerator : IIndexerRequestGenerator
|
|||
{
|
||||
var pageableRequests = new IndexerPageableRequestChain();
|
||||
|
||||
pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}", searchCriteria.Categories));
|
||||
pageableRequests.Add(GetPagedRequests($"{searchCriteria.SanitizedSearchTerm}", searchCriteria));
|
||||
|
||||
return pageableRequests;
|
||||
}
|
||||
|
||||
private IEnumerable<IndexerRequest> GetPagedRequests(string term, SearchCriteriaBase searchCriteria, bool deep = false)
|
||||
{
|
||||
var parameters = new List<string>();
|
||||
|
||||
var catList = _capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories);
|
||||
foreach (var cat in catList)
|
||||
{
|
||||
parameters.Add(cat);
|
||||
}
|
||||
|
||||
if (_settings.FreeleechOnly)
|
||||
{
|
||||
parameters.Add("freeleech");
|
||||
}
|
||||
|
||||
if (_settings.ExcludeArchives)
|
||||
{
|
||||
parameters.Add("norar");
|
||||
}
|
||||
|
||||
if (deep)
|
||||
{
|
||||
parameters.Add("deep");
|
||||
}
|
||||
|
||||
if (term.IsNotNullOrWhiteSpace())
|
||||
{
|
||||
parameters.Add("q");
|
||||
parameters.Add(term.UrlEncode(_encoding));
|
||||
}
|
||||
|
||||
if (searchCriteria.Limit is > 0 && searchCriteria.Offset is > 0)
|
||||
{
|
||||
var page = (int)(searchCriteria.Offset / searchCriteria.Limit) + 1;
|
||||
|
||||
parameters.Add("p");
|
||||
parameters.Add(page.ToString());
|
||||
}
|
||||
|
||||
var searchUrl = $"{_settings.BaseUrl.TrimEnd('/')}/browse/{string.Join("/", parameters)}";
|
||||
|
||||
yield return new IndexerRequest(searchUrl, HttpAccept.Html);
|
||||
}
|
||||
|
||||
public Func<IDictionary<string, string>> GetCookies { get; set; }
|
||||
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue