Fixed: (AvistazBase) Add pagination and `SupportsPagination`

pull/1540/head
Bogdan 1 year ago
parent ac3047f0cc
commit 538abcc47b

@ -23,17 +23,6 @@ namespace NzbDrone.Core.Indexers.Definitions
{
}
public override IIndexerRequestGenerator GetRequestGenerator()
{
return new AvistazRequestGenerator
{
Settings = Settings,
HttpClient = _httpClient,
Logger = _logger,
Capabilities = Capabilities
};
}
public override IParseIndexerResponse GetParser()
{
return new AvistaZParser();
@ -43,6 +32,8 @@ namespace NzbDrone.Core.Indexers.Definitions
{
var caps = new IndexerCapabilities
{
LimitsDefault = PageSize,
LimitsMax = PageSize,
TvSearchParams = new List<TvSearchParam>
{
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep, TvSearchParam.ImdbId, TvSearchParam.TvdbId, TvSearchParam.Genre

@ -15,7 +15,9 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
public override DownloadProtocol Protocol => DownloadProtocol.Torrent;
public override bool SupportsRss => true;
public override bool SupportsSearch => true;
public override bool SupportsPagination => true;
public override int PageSize => 50;
public override TimeSpan RateLimit => TimeSpan.FromSeconds(4);
public override IndexerCapabilities Capabilities => SetCapabilities();
protected virtual string LoginUrl => Settings.BaseUrl + "api/v1/jackett/auth";
private IIndexerRepository _indexerRepository;
@ -36,9 +38,10 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
return new AvistazRequestGenerator
{
Settings = Settings,
Capabilities = Capabilities,
PageSize = PageSize,
HttpClient = _httpClient,
Logger = _logger,
Capabilities = Capabilities
Logger = _logger
};
}

@ -12,23 +12,35 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
public class AvistazRequestGenerator : IIndexerRequestGenerator
{
public AvistazSettings Settings { get; set; }
public IIndexerHttpClient HttpClient { get; set; }
public IndexerCapabilities Capabilities { get; set; }
public int PageSize { get; set; }
public IIndexerHttpClient HttpClient { get; set; }
public Logger Logger { get; set; }
public Func<IDictionary<string, string>> GetCookies { get; set; }
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
protected virtual string SearchUrl => Settings.BaseUrl + "api/v1/jackett/torrents";
// hook to adjust the search category
protected virtual List<KeyValuePair<string, string>> GetBasicSearchParameters(int[] categories, string genre)
protected virtual List<KeyValuePair<string, string>> GetBasicSearchParameters(SearchCriteriaBase searchCriteria, string genre = null)
{
var categories = searchCriteria.Categories ?? Array.Empty<int>();
var categoryMapping = Capabilities.Categories.MapTorznabCapsToTrackers(categories).Distinct().ToList();
var qc = new List<KeyValuePair<string, string>> // NameValueCollection don't support cat[]=19&cat[]=6
{
{ "in", "1" },
{ "type", categoryMapping.Any() ? categoryMapping.First() : "0" }
{ "type", categoryMapping.FirstIfSingleOrDefault("0") },
{ "limit", Math.Min(PageSize, searchCriteria.Limit.GetValueOrDefault(PageSize)).ToString() }
};
if (searchCriteria.Limit is > 0 && searchCriteria.Offset is > 0)
{
var page = (int)(searchCriteria.Offset / searchCriteria.Limit) + 1;
qc.Add("page", page.ToString());
}
if (Settings.FreeleechOnly)
{
qc.Add("discount[]", "1");
@ -78,7 +90,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
{
var parameters = GetBasicSearchParameters(searchCriteria.Categories, searchCriteria.Genre);
var parameters = GetBasicSearchParameters(searchCriteria, searchCriteria.Genre);
if (searchCriteria.ImdbId.IsNotNullOrWhiteSpace())
{
@ -100,7 +112,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
public IndexerPageableRequestChain GetSearchRequests(MusicSearchCriteria searchCriteria)
{
var parameters = GetBasicSearchParameters(searchCriteria.Categories, null);
var parameters = GetBasicSearchParameters(searchCriteria);
parameters.Add("search", GetSearchTerm(searchCriteria.SanitizedSearchTerm).Trim());
@ -111,7 +123,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria)
{
var parameters = GetBasicSearchParameters(searchCriteria.Categories, searchCriteria.Genre);
var parameters = GetBasicSearchParameters(searchCriteria, searchCriteria.Genre);
if (searchCriteria.ImdbId.IsNotNullOrWhiteSpace())
{
@ -135,7 +147,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
public IndexerPageableRequestChain GetSearchRequests(BookSearchCriteria searchCriteria)
{
throw new NotImplementedException();
return new IndexerPageableRequestChain();
}
// hook to adjust the search term
@ -143,7 +155,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria)
{
var parameters = GetBasicSearchParameters(searchCriteria.Categories, null);
var parameters = GetBasicSearchParameters(searchCriteria);
parameters.Add("search", GetSearchTerm(searchCriteria.SanitizedSearchTerm).Trim());

@ -23,21 +23,12 @@ namespace NzbDrone.Core.Indexers.Definitions
{
}
public override IIndexerRequestGenerator GetRequestGenerator()
{
return new AvistazRequestGenerator
{
Settings = Settings,
HttpClient = _httpClient,
Logger = _logger,
Capabilities = Capabilities
};
}
protected override IndexerCapabilities SetCapabilities()
{
var caps = new IndexerCapabilities
{
LimitsDefault = PageSize,
LimitsMax = PageSize,
TvSearchParams = new List<TvSearchParam>
{
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep, TvSearchParam.ImdbId, TvSearchParam.Genre

@ -24,17 +24,6 @@ namespace NzbDrone.Core.Indexers.Definitions
{
}
public override IIndexerRequestGenerator GetRequestGenerator()
{
return new AvistazRequestGenerator
{
Settings = Settings,
HttpClient = _httpClient,
Logger = _logger,
Capabilities = Capabilities,
};
}
public override IParseIndexerResponse GetParser()
{
return new ExoticaZParser(Capabilities.Categories);
@ -42,7 +31,11 @@ namespace NzbDrone.Core.Indexers.Definitions
protected override IndexerCapabilities SetCapabilities()
{
var caps = new IndexerCapabilities();
var caps = new IndexerCapabilities
{
LimitsDefault = PageSize,
LimitsMax = PageSize
};
caps.Categories.AddCategoryMapping(1, NewznabStandardCategory.XXXx264, "Video Clip");
caps.Categories.AddCategoryMapping(2, NewznabStandardCategory.XXXPack, "Video Pack");

@ -23,21 +23,12 @@ namespace NzbDrone.Core.Indexers.Definitions
{
}
public override IIndexerRequestGenerator GetRequestGenerator()
{
return new AvistazRequestGenerator
{
Settings = Settings,
HttpClient = _httpClient,
Logger = _logger,
Capabilities = Capabilities
};
}
protected override IndexerCapabilities SetCapabilities()
{
var caps = new IndexerCapabilities
{
LimitsDefault = PageSize,
LimitsMax = PageSize,
TvSearchParams = new List<TvSearchParam>
{
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep, TvSearchParam.ImdbId, TvSearchParam.TvdbId, TvSearchParam.Genre

Loading…
Cancel
Save