From 8eb6e02607af51bbab5abbc8ab3f2674cfe68110 Mon Sep 17 00:00:00 2001 From: Kalon Shannon-Innes Date: Tue, 19 Sep 2023 02:48:24 +0800 Subject: [PATCH 1/2] Fixed: (Indexer) Myanonamouse Allow aborting download if FL token purchase fails --- .../Indexers/Definitions/MyAnonamouse.cs | 35 +++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/src/NzbDrone.Core/Indexers/Definitions/MyAnonamouse.cs b/src/NzbDrone.Core/Indexers/Definitions/MyAnonamouse.cs index b9bb49601..9fc85ce22 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/MyAnonamouse.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/MyAnonamouse.cs @@ -15,6 +15,7 @@ using NzbDrone.Common.Http; using NzbDrone.Common.Serializer; using NzbDrone.Core.Annotations; using NzbDrone.Core.Configuration; +using NzbDrone.Core.Exceptions; using NzbDrone.Core.Indexers.Exceptions; using NzbDrone.Core.Indexers.Settings; using NzbDrone.Core.IndexerSearch.Definitions; @@ -55,7 +56,7 @@ namespace NzbDrone.Core.Indexers.Definitions public override async Task Download(Uri link) { - if (Settings.Freeleech) + if (Settings.Freeleech > 0) { _logger.Debug($"Attempting to use freeleech token for {link.AbsoluteUri}"); @@ -76,13 +77,25 @@ namespace NzbDrone.Core.Indexers.Definitions var response = await FetchIndexerResponse(indexerReq).ConfigureAwait(false); var resource = Json.Deserialize(response.Content); - if (resource.Success) + if (!resource.Success) { - _logger.Debug($"Successfully to used freeleech token for torrentid ${id}"); + _logger.Debug($"Failed to use freeleech token: {resource.Error}"); + + if (Settings.Freeleech == 1) + { + _logger.Debug($"'Use Freeleech Token' option set to preferred, continuing download"); + } + else + { + // TODO Find a way to deal with failures due to already being freeleech (either personal or VIP) + // TODO Find a better way to abort downloads + throw new ReleaseUnavailableException( + "Failed to buy freeleech token and 'Use Freeleech Token' is set to required, aborting download"); + } } else { - _logger.Debug($"Failed to use freeleech token: ${resource.Error}"); + _logger.Debug($"Successfully used freeleech token for torrentid ${id}"); } } else @@ -507,8 +520,8 @@ namespace NzbDrone.Core.Indexers.Definitions [FieldDefinition(3, Type = FieldType.Select, Label = "Search Type", SelectOptions = typeof(MyAnonamouseSearchType), HelpText = "Specify the desired search type")] public int SearchType { get; set; } - [FieldDefinition(4, Type = FieldType.Checkbox, Label = "Buy Freeleech Token", HelpText = "Buy personal freeleech token for download")] - public bool Freeleech { get; set; } + [FieldDefinition(4, Type = FieldType.Select, Label = "Buy Freeleech Token", SelectOptions = typeof(MyAnonamouseFreeleech), HelpText = "Buy personal freeleech token for download")] + public int Freeleech { get; set; } [FieldDefinition(5, Type = FieldType.Checkbox, Label = "Search in description", HelpText = "Search text in the description")] public bool SearchInDescription { get; set; } @@ -541,6 +554,16 @@ namespace NzbDrone.Core.Indexers.Definitions NotVip = 5, } + public enum MyAnonamouseFreeleech + { + [FieldOption(Label="Never", Hint = "Do not buy tokens")] + Never = 0, + [FieldOption(Label="Preferred", Hint = "Buy and use token if possible")] + Preferred = 1, + [FieldOption(Label="Required", Hint = "Abort download if unable to buy token")] + Required = 2, + } + public class MyAnonamouseTorrent { public int Id { get; set; } From 1e28b73bc4bc482a9a83719e3bbbaf8f6ee3d2da Mon Sep 17 00:00:00 2001 From: Kalon Shannon-Innes Date: Tue, 19 Sep 2023 20:43:04 +0800 Subject: [PATCH 2/2] Use enums to indicate intent --- src/NzbDrone.Core/Indexers/Definitions/MyAnonamouse.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/NzbDrone.Core/Indexers/Definitions/MyAnonamouse.cs b/src/NzbDrone.Core/Indexers/Definitions/MyAnonamouse.cs index 9fc85ce22..409593abf 100644 --- a/src/NzbDrone.Core/Indexers/Definitions/MyAnonamouse.cs +++ b/src/NzbDrone.Core/Indexers/Definitions/MyAnonamouse.cs @@ -56,7 +56,7 @@ namespace NzbDrone.Core.Indexers.Definitions public override async Task Download(Uri link) { - if (Settings.Freeleech > 0) + if (Settings.Freeleech != (int)MyAnonamouseFreeleech.Never) { _logger.Debug($"Attempting to use freeleech token for {link.AbsoluteUri}"); @@ -81,7 +81,7 @@ namespace NzbDrone.Core.Indexers.Definitions { _logger.Debug($"Failed to use freeleech token: {resource.Error}"); - if (Settings.Freeleech == 1) + if (Settings.Freeleech == (int)MyAnonamouseFreeleech.Preferred) { _logger.Debug($"'Use Freeleech Token' option set to preferred, continuing download"); }