mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2026-04-21 22:25:03 -04:00
Fixed: (AnimeBytes) Cache result releases
This commit is contained in:
@@ -8,9 +8,11 @@ using System.Net;
|
||||
using System.Text;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using FluentValidation;
|
||||
using NLog;
|
||||
using NzbDrone.Common;
|
||||
using NzbDrone.Common.Cache;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Common.Http;
|
||||
using NzbDrone.Common.Serializer;
|
||||
@@ -38,9 +40,12 @@ namespace NzbDrone.Core.Indexers.Definitions
|
||||
public override IndexerCapabilities Capabilities => SetCapabilities();
|
||||
public override TimeSpan RateLimit => TimeSpan.FromSeconds(4);
|
||||
|
||||
public AnimeBytes(IIndexerHttpClient httpClient, IEventAggregator eventAggregator, IIndexerStatusService indexerStatusService, IConfigService configService, Logger logger)
|
||||
private readonly ICached<IndexerQueryResult> _queryResultCache;
|
||||
|
||||
public AnimeBytes(IIndexerHttpClient httpClient, IEventAggregator eventAggregator, IIndexerStatusService indexerStatusService, IConfigService configService, Logger logger, ICacheManager cacheManager)
|
||||
: base(httpClient, eventAggregator, indexerStatusService, configService, logger)
|
||||
{
|
||||
_queryResultCache = cacheManager.GetCache<IndexerQueryResult>(GetType(), "QueryResults");
|
||||
}
|
||||
|
||||
public override IIndexerRequestGenerator GetRequestGenerator()
|
||||
@@ -58,6 +63,38 @@ namespace NzbDrone.Core.Indexers.Definitions
|
||||
return false;
|
||||
}
|
||||
|
||||
protected string BuildQueryResultCacheKey(IndexerRequest request)
|
||||
{
|
||||
return $"{request.HttpRequest.Url.FullUri}.{HashUtil.ComputeSha256Hash(Settings.ToJson())}";
|
||||
}
|
||||
|
||||
protected override async Task<IndexerQueryResult> FetchPage(IndexerRequest request, IParseIndexerResponse parser)
|
||||
{
|
||||
var cacheKey = BuildQueryResultCacheKey(request);
|
||||
var queryResult = _queryResultCache.Find(cacheKey);
|
||||
|
||||
if (queryResult != null)
|
||||
{
|
||||
queryResult.Cached = true;
|
||||
|
||||
return queryResult;
|
||||
}
|
||||
|
||||
_queryResultCache.ClearExpired();
|
||||
|
||||
queryResult = await base.FetchPage(request, parser);
|
||||
_queryResultCache.Set(cacheKey, queryResult, TimeSpan.FromMinutes(3));
|
||||
|
||||
return queryResult;
|
||||
}
|
||||
|
||||
protected override IList<ReleaseInfo> CleanupReleases(IEnumerable<ReleaseInfo> releases, SearchCriteriaBase searchCriteria)
|
||||
{
|
||||
var cleanReleases = base.CleanupReleases(releases, searchCriteria);
|
||||
|
||||
return cleanReleases.Select(r => (ReleaseInfo)r.Clone()).ToList();
|
||||
}
|
||||
|
||||
private IndexerCapabilities SetCapabilities()
|
||||
{
|
||||
var caps = new IndexerCapabilities
|
||||
|
||||
Reference in New Issue
Block a user