diff --git a/README.md b/README.md index dd429b70b..aec1cd25d 100644 --- a/README.md +++ b/README.md @@ -393,6 +393,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht * HHanClub * House of Devil * HQMusic + * iAnon * ICC2022 * ImmortalSeed (iS) * Immortuos diff --git a/src/Jackett.Common/Indexers/iAnon.cs b/src/Jackett.Common/Indexers/iAnon.cs new file mode 100644 index 000000000..8353a7e67 --- /dev/null +++ b/src/Jackett.Common/Indexers/iAnon.cs @@ -0,0 +1,71 @@ +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using Jackett.Common.Indexers.Abstract; +using Jackett.Common.Models; +using Jackett.Common.Services.Interfaces; +using NLog; +using WebClient = Jackett.Common.Utils.Clients.WebClient; + +namespace Jackett.Common.Indexers +{ + [ExcludeFromCodeCoverage] + public class iAnon : GazelleTracker + { + public override string Id => "ianon"; + public override string Name => "iAnon"; + public override string Description => "MacOS software tracker"; + public override string SiteLink { get; protected set; } = "https://ianon.app/"; + public override string Language => "en-US"; + public override string Type => "private"; + + public override TorznabCapabilities TorznabCaps => SetCapabilities(); + + protected override string DownloadUrl => SiteLink + "ajax.php?action=download" + (useTokens ? "&usetoken=1" : "") + "&id="; + protected override string AuthorizationFormat => "token {0}"; + protected override int ApiKeyLength => 118; + + public iAnon(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps, ICacheService cs) + : base(configService: configService, + client: wc, + logger: l, + p: ps, + cs: cs, + supportsFreeleechTokens: true, + useApiKey: true, + instructionMessageOptional: "
  1. Go to iAnon's site and open your account settings.
  2. Go to Access Settings tab use the click here to create a new token link.
  3. Give it a name and click Generate.
  4. Finally, copy/paste the token to your Jackett config APIKey input box.
" + ) + { + } + + protected override string FlipOptionalTokenString(string requestLink) => requestLink.Replace("&usetoken=1", ""); + + private TorznabCapabilities SetCapabilities() + { + var caps = new TorznabCapabilities + { + MovieSearchParams = new List + { + MovieSearchParam.Q, MovieSearchParam.Genre + }, + MusicSearchParams = new List + { + MusicSearchParam.Q, MusicSearchParam.Genre + }, + BookSearchParams = new List + { + BookSearchParam.Q, BookSearchParam.Genre + } + }; + + caps.Categories.AddCategoryMapping(1, TorznabCatType.Audio, "Music"); + caps.Categories.AddCategoryMapping(2, TorznabCatType.PCMac, "Applications"); + caps.Categories.AddCategoryMapping(3, TorznabCatType.Books, "E-Books"); + caps.Categories.AddCategoryMapping(4, TorznabCatType.AudioAudiobook, "Audiobooks"); + caps.Categories.AddCategoryMapping(5, TorznabCatType.Movies, "E-Learning Videos"); + caps.Categories.AddCategoryMapping(6, TorznabCatType.Audio, "Comedy"); + caps.Categories.AddCategoryMapping(7, TorznabCatType.Books, "Comics"); + + return caps; + } + } +}