From d0244978aafd7c2b4db288da1bc81b0f42a244ad Mon Sep 17 00:00:00 2001 From: Bogdan Date: Fri, 14 Apr 2023 23:00:03 +0300 Subject: [PATCH] Fixed: Ignore `VA` artists in Redacted --- .../RedactedTests/RedactedFixture.cs | 4 +- .../Indexers/Redacted/Redacted.cs | 7 +--- .../Indexers/Redacted/RedactedParser.cs | 6 +-- .../Redacted/RedactedRequestGenerator.cs | 37 +++++++++++++------ .../Indexers/Redacted/RedactedSettings.cs | 4 +- 5 files changed, 34 insertions(+), 24 deletions(-) diff --git a/src/NzbDrone.Core.Test/IndexerTests/RedactedTests/RedactedFixture.cs b/src/NzbDrone.Core.Test/IndexerTests/RedactedTests/RedactedFixture.cs index b13a80974..66f08ba78 100644 --- a/src/NzbDrone.Core.Test/IndexerTests/RedactedTests/RedactedFixture.cs +++ b/src/NzbDrone.Core.Test/IndexerTests/RedactedTests/RedactedFixture.cs @@ -9,7 +9,7 @@ using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers.Redacted; using NzbDrone.Core.Test.Framework; -namespace NzbDrone.Core.Test.IndexerTests.GazelleTests +namespace NzbDrone.Core.Test.IndexerTests.RedactedTests { [TestFixture] public class RedactedFixture : CoreTest @@ -17,7 +17,7 @@ namespace NzbDrone.Core.Test.IndexerTests.GazelleTests [SetUp] public void Setup() { - Subject.Definition = new IndexerDefinition() + Subject.Definition = new IndexerDefinition { Name = "Redacted", Settings = new RedactedSettings diff --git a/src/NzbDrone.Core/Indexers/Redacted/Redacted.cs b/src/NzbDrone.Core/Indexers/Redacted/Redacted.cs index 45495af5a..7725d6eaf 100644 --- a/src/NzbDrone.Core/Indexers/Redacted/Redacted.cs +++ b/src/NzbDrone.Core/Indexers/Redacted/Redacted.cs @@ -26,12 +26,7 @@ namespace NzbDrone.Core.Indexers.Redacted public override IIndexerRequestGenerator GetRequestGenerator() { - return new RedactedRequestGenerator() - { - Settings = Settings, - HttpClient = _httpClient, - Logger = _logger, - }; + return new RedactedRequestGenerator(Settings, _httpClient, _logger); } public override IParseIndexerResponse GetParser() diff --git a/src/NzbDrone.Core/Indexers/Redacted/RedactedParser.cs b/src/NzbDrone.Core/Indexers/Redacted/RedactedParser.cs index a3d1311af..36a602db1 100644 --- a/src/NzbDrone.Core/Indexers/Redacted/RedactedParser.cs +++ b/src/NzbDrone.Core/Indexers/Redacted/RedactedParser.cs @@ -56,9 +56,9 @@ namespace NzbDrone.Core.Indexers.Redacted title += " [Cue]"; } - torrentInfos.Add(new GazelleInfo() + torrentInfos.Add(new GazelleInfo { - Guid = string.Format("Redacted-{0}", id), + Guid = $"Redacted-{id}", Artist = artist, // 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), Peers = int.Parse(torrent.Leechers) + int.Parse(torrent.Seeders), PublishDate = torrent.Time.ToUniversalTime(), - Scene = torrent.Scene, + Scene = torrent.Scene }); } } diff --git a/src/NzbDrone.Core/Indexers/Redacted/RedactedRequestGenerator.cs b/src/NzbDrone.Core/Indexers/Redacted/RedactedRequestGenerator.cs index 9e5487960..398db35a3 100644 --- a/src/NzbDrone.Core/Indexers/Redacted/RedactedRequestGenerator.cs +++ b/src/NzbDrone.Core/Indexers/Redacted/RedactedRequestGenerator.cs @@ -11,10 +11,16 @@ namespace NzbDrone.Core.Indexers.Redacted { 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 Logger Logger { get; set; } + public RedactedRequestGenerator(RedactedSettings settings, IHttpClient httpClient, Logger logger) + { + _settings = settings; + _httpClient = httpClient; + _logger = logger; + } public virtual IndexerPageableRequestChain GetRecentRequests() { @@ -28,14 +34,23 @@ namespace NzbDrone.Core.Indexers.Redacted public IndexerPageableRequestChain GetSearchRequests(AlbumSearchCriteria searchCriteria) { 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; } public IndexerPageableRequestChain GetSearchRequests(ArtistSearchCriteria searchCriteria) { var pageableRequests = new IndexerPageableRequestChain(); - pageableRequests.Add(GetRequest(string.Format("&artistname={0}", searchCriteria.CleanArtistQuery))); + pageableRequests.Add(GetRequest($"&artistname={searchCriteria.CleanArtistQuery}")); return pageableRequests; } @@ -48,13 +63,13 @@ namespace NzbDrone.Core.Indexers.Redacted index.Status != "success" || index.Response.Passkey.IsNullOrWhiteSpace()) { - Logger.Debug("Redacted authentication failed."); + _logger.Debug("Redacted authentication failed."); 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 GetRequest(string searchParameters) @@ -70,7 +85,7 @@ namespace NzbDrone.Core.Indexers.Redacted { var request = RequestBuilder().Resource("ajax.php?action=index").Build(); - var indexResponse = HttpClient.Execute(request); + var indexResponse = _httpClient.Execute(request); var result = Json.Deserialize(indexResponse.Content); @@ -79,9 +94,9 @@ namespace NzbDrone.Core.Indexers.Redacted private HttpRequestBuilder RequestBuilder() { - return new HttpRequestBuilder($"{Settings.BaseUrl.Trim().TrimEnd('/')}") + return new HttpRequestBuilder($"{_settings.BaseUrl.Trim().TrimEnd('/')}") .Accept(HttpAccept.Json) - .SetHeader("Authorization", Settings.ApiKey); + .SetHeader("Authorization", _settings.ApiKey); } } } diff --git a/src/NzbDrone.Core/Indexers/Redacted/RedactedSettings.cs b/src/NzbDrone.Core/Indexers/Redacted/RedactedSettings.cs index 468959149..622aa33df 100644 --- a/src/NzbDrone.Core/Indexers/Redacted/RedactedSettings.cs +++ b/src/NzbDrone.Core/Indexers/Redacted/RedactedSettings.cs @@ -14,7 +14,7 @@ namespace NzbDrone.Core.Indexers.Redacted public class RedactedSettings : ITorrentIndexerSettings { - private static readonly RedactedSettingsValidator Validator = new RedactedSettingsValidator(); + private static readonly RedactedSettingsValidator Validator = new (); public RedactedSettings() { @@ -34,7 +34,7 @@ namespace NzbDrone.Core.Indexers.Redacted public int MinimumSeeders { get; set; } [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)] public int? EarlyReleaseLimit { get; set; }