Skip to content

Commit

Permalink
New: (BeyondHD) Add pagination support
Browse files Browse the repository at this point in the history
  • Loading branch information
mynameisbogdan committed Jul 20, 2023
1 parent 4bfaab4 commit a5d8345
Showing 1 changed file with 15 additions and 7 deletions.
22 changes: 15 additions & 7 deletions src/NzbDrone.Core/Indexers/Definitions/BeyondHD.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ public class BeyondHD : TorrentIndexerBase<BeyondHDSettings>
public override string[] IndexerUrls => new[] { "https://beyond-hd.me/" };
public override string Description => "BeyondHD (BHD) is a Private Torrent Tracker for HD MOVIES / TV";
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
public override bool SupportsPagination => true;
public override int PageSize => 100;
public override IndexerCapabilities Capabilities => SetCapabilities();

public BeyondHD(IIndexerHttpClient httpClient, IEventAggregator eventAggregator, IIndexerStatusService indexerStatusService, IConfigService configService, Logger logger)
Expand Down Expand Up @@ -81,7 +83,7 @@ public BeyondHDRequestGenerator(BeyondHDSettings settings, IndexerCapabilities c
_capabilities = capabilities;
}

private IEnumerable<IndexerRequest> GetPagedRequests(string term, int[] categories, string imdbId = null, int tmdbId = 0)
private IEnumerable<IndexerRequest> GetPagedRequests(SearchCriteriaBase searchCriteria, string term, string imdbId = null, int tmdbId = 0)
{
var body = new Dictionary<string, object>
{
Expand Down Expand Up @@ -123,13 +125,19 @@ private IEnumerable<IndexerRequest> GetPagedRequests(string term, int[] categori
body.Add("search", term);
}

var cats = _capabilities.Categories.MapTorznabCapsToTrackers(categories);
var cats = _capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories);

if (cats.Count > 0)
{
body.Add("categories", string.Join(",", cats));
}

if (searchCriteria.Limit is > 0 && searchCriteria.Offset is > 0)
{
var page = (int)(searchCriteria.Offset / searchCriteria.Limit) + 1;
body.Add("page", page);
}

var searchUrl = $"{_settings.BaseUrl}api/torrents/{_settings.ApiKey}";

var request = new HttpRequest(searchUrl, HttpAccept.Json)
Expand All @@ -150,7 +158,7 @@ public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchC
{
var pageableRequests = new IndexerPageableRequestChain();

pageableRequests.Add(GetPagedRequests(searchCriteria.SanitizedSearchTerm, searchCriteria.Categories, searchCriteria.FullImdbId, searchCriteria.TmdbId.GetValueOrDefault()));
pageableRequests.Add(GetPagedRequests(searchCriteria, searchCriteria.SanitizedSearchTerm, searchCriteria.FullImdbId, searchCriteria.TmdbId.GetValueOrDefault()));

return pageableRequests;
}
Expand All @@ -159,7 +167,7 @@ public IndexerPageableRequestChain GetSearchRequests(MusicSearchCriteria searchC
{
var pageableRequests = new IndexerPageableRequestChain();

pageableRequests.Add(GetPagedRequests(searchCriteria.SanitizedSearchTerm, searchCriteria.Categories));
pageableRequests.Add(GetPagedRequests(searchCriteria, searchCriteria.SanitizedSearchTerm));

return pageableRequests;
}
Expand All @@ -168,7 +176,7 @@ public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCrit
{
var pageableRequests = new IndexerPageableRequestChain();

pageableRequests.Add(GetPagedRequests(searchCriteria.SanitizedTvSearchString, searchCriteria.Categories, searchCriteria.FullImdbId));
pageableRequests.Add(GetPagedRequests(searchCriteria, searchCriteria.SanitizedTvSearchString, searchCriteria.FullImdbId));

return pageableRequests;
}
Expand All @@ -177,7 +185,7 @@ public IndexerPageableRequestChain GetSearchRequests(BookSearchCriteria searchCr
{
var pageableRequests = new IndexerPageableRequestChain();

pageableRequests.Add(GetPagedRequests(searchCriteria.SanitizedSearchTerm, searchCriteria.Categories));
pageableRequests.Add(GetPagedRequests(searchCriteria, searchCriteria.SanitizedSearchTerm));

return pageableRequests;
}
Expand All @@ -186,7 +194,7 @@ public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchC
{
var pageableRequests = new IndexerPageableRequestChain();

pageableRequests.Add(GetPagedRequests(searchCriteria.SanitizedSearchTerm, searchCriteria.Categories));
pageableRequests.Add(GetPagedRequests(searchCriteria, searchCriteria.SanitizedSearchTerm));

return pageableRequests;
}
Expand Down

0 comments on commit a5d8345

Please sign in to comment.