mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2026-04-25 22:59:10 -04:00
New: (AlphaRatio) Add pagination support
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user