Fixed: Ignore `VA` artists in Redacted

pull/3582/head
Bogdan 2 years ago committed by Qstick
parent 0a0ddf2b02
commit d0244978aa

@ -9,7 +9,7 @@ using NzbDrone.Core.Indexers;
using NzbDrone.Core.Indexers.Redacted; using NzbDrone.Core.Indexers.Redacted;
using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.IndexerTests.GazelleTests namespace NzbDrone.Core.Test.IndexerTests.RedactedTests
{ {
[TestFixture] [TestFixture]
public class RedactedFixture : CoreTest<Redacted> public class RedactedFixture : CoreTest<Redacted>
@ -17,7 +17,7 @@ namespace NzbDrone.Core.Test.IndexerTests.GazelleTests
[SetUp] [SetUp]
public void Setup() public void Setup()
{ {
Subject.Definition = new IndexerDefinition() Subject.Definition = new IndexerDefinition
{ {
Name = "Redacted", Name = "Redacted",
Settings = new RedactedSettings Settings = new RedactedSettings

@ -26,12 +26,7 @@ namespace NzbDrone.Core.Indexers.Redacted
public override IIndexerRequestGenerator GetRequestGenerator() public override IIndexerRequestGenerator GetRequestGenerator()
{ {
return new RedactedRequestGenerator() return new RedactedRequestGenerator(Settings, _httpClient, _logger);
{
Settings = Settings,
HttpClient = _httpClient,
Logger = _logger,
};
} }
public override IParseIndexerResponse GetParser() public override IParseIndexerResponse GetParser()

@ -56,9 +56,9 @@ namespace NzbDrone.Core.Indexers.Redacted
title += " [Cue]"; title += " [Cue]";
} }
torrentInfos.Add(new GazelleInfo() torrentInfos.Add(new GazelleInfo
{ {
Guid = string.Format("Redacted-{0}", id), Guid = $"Redacted-{id}",
Artist = artist, Artist = artist,
// Splice Title from info to avoid calling API again for every torrent. // Splice Title from info to avoid calling API again for every torrent.
@ -72,7 +72,7 @@ namespace NzbDrone.Core.Indexers.Redacted
Seeders = int.Parse(torrent.Seeders), Seeders = int.Parse(torrent.Seeders),
Peers = int.Parse(torrent.Leechers) + int.Parse(torrent.Seeders), Peers = int.Parse(torrent.Leechers) + int.Parse(torrent.Seeders),
PublishDate = torrent.Time.ToUniversalTime(), PublishDate = torrent.Time.ToUniversalTime(),
Scene = torrent.Scene, Scene = torrent.Scene
}); });
} }
} }

@ -11,10 +11,16 @@ namespace NzbDrone.Core.Indexers.Redacted
{ {
public class RedactedRequestGenerator : IIndexerRequestGenerator public class RedactedRequestGenerator : IIndexerRequestGenerator
{ {
public RedactedSettings Settings { get; set; } private readonly RedactedSettings _settings;
private readonly IHttpClient _httpClient;
private readonly Logger _logger;
public IHttpClient HttpClient { get; set; } public RedactedRequestGenerator(RedactedSettings settings, IHttpClient httpClient, Logger logger)
public Logger Logger { get; set; } {
_settings = settings;
_httpClient = httpClient;
_logger = logger;
}
public virtual IndexerPageableRequestChain GetRecentRequests() public virtual IndexerPageableRequestChain GetRecentRequests()
{ {
@ -28,14 +34,23 @@ namespace NzbDrone.Core.Indexers.Redacted
public IndexerPageableRequestChain GetSearchRequests(AlbumSearchCriteria searchCriteria) public IndexerPageableRequestChain GetSearchRequests(AlbumSearchCriteria searchCriteria)
{ {
var pageableRequests = new IndexerPageableRequestChain(); var pageableRequests = new IndexerPageableRequestChain();
pageableRequests.Add(GetRequest(string.Format("&artistname={0}&groupname={1}", searchCriteria.CleanArtistQuery, searchCriteria.CleanAlbumQuery)));
if (searchCriteria.CleanArtistQuery == "VA")
{
pageableRequests.Add(GetRequest($"&groupname={searchCriteria.CleanAlbumQuery}"));
}
else
{
pageableRequests.Add(GetRequest($"&artistname={searchCriteria.CleanArtistQuery}&groupname={searchCriteria.CleanAlbumQuery}"));
}
return pageableRequests; return pageableRequests;
} }
public IndexerPageableRequestChain GetSearchRequests(ArtistSearchCriteria searchCriteria) public IndexerPageableRequestChain GetSearchRequests(ArtistSearchCriteria searchCriteria)
{ {
var pageableRequests = new IndexerPageableRequestChain(); var pageableRequests = new IndexerPageableRequestChain();
pageableRequests.Add(GetRequest(string.Format("&artistname={0}", searchCriteria.CleanArtistQuery))); pageableRequests.Add(GetRequest($"&artistname={searchCriteria.CleanArtistQuery}"));
return pageableRequests; return pageableRequests;
} }
@ -48,13 +63,13 @@ namespace NzbDrone.Core.Indexers.Redacted
index.Status != "success" || index.Status != "success" ||
index.Response.Passkey.IsNullOrWhiteSpace()) index.Response.Passkey.IsNullOrWhiteSpace())
{ {
Logger.Debug("Redacted authentication failed."); _logger.Debug("Redacted authentication failed.");
throw new Exception("Failed to authenticate with Redacted."); throw new Exception("Failed to authenticate with Redacted.");
} }
Logger.Debug("Redacted authentication succeeded."); _logger.Debug("Redacted authentication succeeded.");
Settings.PassKey = index.Response.Passkey; _settings.PassKey = index.Response.Passkey;
} }
private IEnumerable<IndexerRequest> GetRequest(string searchParameters) private IEnumerable<IndexerRequest> GetRequest(string searchParameters)
@ -70,7 +85,7 @@ namespace NzbDrone.Core.Indexers.Redacted
{ {
var request = RequestBuilder().Resource("ajax.php?action=index").Build(); var request = RequestBuilder().Resource("ajax.php?action=index").Build();
var indexResponse = HttpClient.Execute(request); var indexResponse = _httpClient.Execute(request);
var result = Json.Deserialize<GazelleAuthResponse>(indexResponse.Content); var result = Json.Deserialize<GazelleAuthResponse>(indexResponse.Content);
@ -79,9 +94,9 @@ namespace NzbDrone.Core.Indexers.Redacted
private HttpRequestBuilder RequestBuilder() private HttpRequestBuilder RequestBuilder()
{ {
return new HttpRequestBuilder($"{Settings.BaseUrl.Trim().TrimEnd('/')}") return new HttpRequestBuilder($"{_settings.BaseUrl.Trim().TrimEnd('/')}")
.Accept(HttpAccept.Json) .Accept(HttpAccept.Json)
.SetHeader("Authorization", Settings.ApiKey); .SetHeader("Authorization", _settings.ApiKey);
} }
} }
} }

@ -14,7 +14,7 @@ namespace NzbDrone.Core.Indexers.Redacted
public class RedactedSettings : ITorrentIndexerSettings public class RedactedSettings : ITorrentIndexerSettings
{ {
private static readonly RedactedSettingsValidator Validator = new RedactedSettingsValidator(); private static readonly RedactedSettingsValidator Validator = new ();
public RedactedSettings() public RedactedSettings()
{ {
@ -34,7 +34,7 @@ namespace NzbDrone.Core.Indexers.Redacted
public int MinimumSeeders { get; set; } public int MinimumSeeders { get; set; }
[FieldDefinition(4)] [FieldDefinition(4)]
public SeedCriteriaSettings SeedCriteria { get; set; } = new SeedCriteriaSettings(); public SeedCriteriaSettings SeedCriteria { get; set; } = new ();
[FieldDefinition(5, Type = FieldType.Number, Label = "Early Download Limit", Unit = "days", HelpText = "Time before release date Lidarr will download from this indexer, empty is no limit", Advanced = true)] [FieldDefinition(5, Type = FieldType.Number, Label = "Early Download Limit", Unit = "days", HelpText = "Time before release date Lidarr will download from this indexer, empty is no limit", Advanced = true)]
public int? EarlyReleaseLimit { get; set; } public int? EarlyReleaseLimit { get; set; }

Loading…
Cancel
Save