New: (AlphaRatio) Add pagination support

pull/1878/head
Bogdan 8 months ago
parent add2988789
commit d4b037db78

@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using NLog;
@ -5,6 +6,7 @@ using NzbDrone.Common.Http;
using NzbDrone.Core.Annotations;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers.Definitions.Gazelle;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Messaging.Events;
namespace NzbDrone.Core.Indexers.Definitions;
@ -15,6 +17,9 @@ public class AlphaRatio : GazelleBase<AlphaRatioSettings>
public override string[] IndexerUrls => new[] { "https://alpharatio.cc/" };
public override string Description => "AlphaRatio(AR) is a Private Torrent Tracker for 0DAY / GENERAL";
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
public override bool SupportsPagination => true;
public override int PageSize => 50;
public override TimeSpan RateLimit => TimeSpan.FromSeconds(3);
public AlphaRatio(IIndexerHttpClient httpClient,
IEventAggregator eventAggregator,
@ -39,6 +44,8 @@ public class AlphaRatio : GazelleBase<AlphaRatioSettings>
{
var caps = new IndexerCapabilities
{
LimitsDefault = PageSize,
LimitsMax = PageSize,
TvSearchParams = new List<TvSearchParam>
{
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep
@ -98,9 +105,9 @@ public class AlphaRatioRequestGenerator : GazelleRequestGenerator
_settings = settings;
}
protected override NameValueCollection GetBasicSearchParameters(string term, int[] categories)
protected override NameValueCollection GetBasicSearchParameters(SearchCriteriaBase searchCriteria, string term)
{
var parameters = base.GetBasicSearchParameters(term, categories);
var parameters = base.GetBasicSearchParameters(searchCriteria, term);
if (_settings.FreeleechOnly)
{
@ -112,6 +119,12 @@ public class AlphaRatioRequestGenerator : GazelleRequestGenerator
parameters.Set("scene", "0");
}
if (searchCriteria.Limit is > 0 && searchCriteria.Offset is > 0)
{
var page = (int)(searchCriteria.Offset / searchCriteria.Limit) + 1;
parameters.Set("page", page.ToString());
}
return parameters;
}
}

@ -46,7 +46,7 @@ public class GazelleRequestGenerator : IIndexerRequestGenerator
{
var pageableRequests = new IndexerPageableRequestChain();
var parameters = GetBasicSearchParameters(searchCriteria.SanitizedSearchTerm, searchCriteria.Categories);
var parameters = GetBasicSearchParameters(searchCriteria, searchCriteria.SanitizedSearchTerm);
if (searchCriteria.ImdbId != null)
{
@ -62,7 +62,7 @@ public class GazelleRequestGenerator : IIndexerRequestGenerator
{
var pageableRequests = new IndexerPageableRequestChain();
var parameters = GetBasicSearchParameters(searchCriteria.SanitizedSearchTerm, searchCriteria.Categories);
var parameters = GetBasicSearchParameters(searchCriteria, searchCriteria.SanitizedSearchTerm);
if (searchCriteria.Artist.IsNotNullOrWhiteSpace() && searchCriteria.Artist != "VA")
{
@ -88,7 +88,7 @@ public class GazelleRequestGenerator : IIndexerRequestGenerator
{
var pageableRequests = new IndexerPageableRequestChain();
var parameters = GetBasicSearchParameters(searchCriteria.SanitizedTvSearchString, searchCriteria.Categories);
var parameters = GetBasicSearchParameters(searchCriteria, searchCriteria.SanitizedTvSearchString);
if (searchCriteria.ImdbId != null)
{
@ -104,7 +104,7 @@ public class GazelleRequestGenerator : IIndexerRequestGenerator
{
var pageableRequests = new IndexerPageableRequestChain();
var parameters = GetBasicSearchParameters(searchCriteria.SanitizedSearchTerm, searchCriteria.Categories);
var parameters = GetBasicSearchParameters(searchCriteria, searchCriteria.SanitizedSearchTerm);
pageableRequests.Add(GetRequest(parameters));
return pageableRequests;
@ -114,7 +114,7 @@ public class GazelleRequestGenerator : IIndexerRequestGenerator
{
var pageableRequests = new IndexerPageableRequestChain();
var parameters = GetBasicSearchParameters(searchCriteria.SanitizedSearchTerm, searchCriteria.Categories);
var parameters = GetBasicSearchParameters(searchCriteria, searchCriteria.SanitizedSearchTerm);
pageableRequests.Add(GetRequest(parameters));
return pageableRequests;
@ -123,7 +123,7 @@ public class GazelleRequestGenerator : IIndexerRequestGenerator
// hook to adjust the search term
protected virtual string GetSearchTerm(string term) => term;
protected virtual NameValueCollection GetBasicSearchParameters(string term, int[] categories)
protected virtual NameValueCollection GetBasicSearchParameters(SearchCriteriaBase searchCriteria, string term)
{
var parameters = new NameValueCollection
{
@ -139,9 +139,10 @@ public class GazelleRequestGenerator : IIndexerRequestGenerator
parameters.Set("searchstr", searchTerm.Replace(".", " "));
}
if (categories != null)
if (searchCriteria.Categories != null && searchCriteria.Categories.Any())
{
var queryCats = Capabilities.Categories.MapTorznabCapsToTrackers(categories);
var queryCats = Capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories);
if (queryCats.Any())
{
queryCats.ForEach(cat => parameters.Set($"filter_cat[{cat}]", "1"));

@ -89,7 +89,7 @@ public class GreatPosterWallRequestGenerator : GazelleRequestGenerator
public override IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
{
var parameters = GetBasicSearchParameters(searchCriteria.SearchTerm, searchCriteria.Categories);
var parameters = GetBasicSearchParameters(searchCriteria, searchCriteria.SearchTerm);
if (searchCriteria.ImdbId != null)
{
@ -101,9 +101,9 @@ public class GreatPosterWallRequestGenerator : GazelleRequestGenerator
return pageableRequests;
}
protected override NameValueCollection GetBasicSearchParameters(string term, int[] categories)
protected override NameValueCollection GetBasicSearchParameters(SearchCriteriaBase searchCriteria, string term)
{
var parameters = base.GetBasicSearchParameters(term, categories);
var parameters = base.GetBasicSearchParameters(searchCriteria, term);
if (_settings.FreeleechOnly)
{

Loading…
Cancel
Save