core: redo search cache from scratch. resolves #10382 (#10447)

In simple words, when you make a request in Jackett, the results are saved in memory (cache). The next request will return results form the cache improving response time and making fewer requests to the sites.
* We assume all indexers/sites are stateless, the same request return the same response. If you change the search term, categories or something in the query Jackett has to make a live request to the indexer.
* There are some situations when we don't want to use the cache:
** When we are testing the indexers => if query.IsTest results are not cached
** When the user updates the configuration of one indexer => We call CleanIndexerCache to remove cached results before testing the configuration
** When there is some error/exception in the indexer => The results are not cached so we can retry in the next request
* We want to limit the memory usage, so we try to remove elements from cache ASAP:
** Each indexer can have a maximum number of results in memory. If the limit is exceeded we remove old results
** Cached results expire after some time
* Users can configure the cache or even disable it
This commit is contained in:
Diego Heras 2020-12-11 23:14:21 +01:00 committed by GitHub
parent ec3787e803
commit 69125add3e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
126 changed files with 744 additions and 364 deletions

View File

@ -676,7 +676,7 @@ Jackett is available as a beta package from [SynoCommunity](https://synocommunit
## Running Jackett behind a reverse proxy
When running jackett behind a reverse proxy make sure that the original hostname of the request is passed to Jackett. If HTTPS is used also set the X-Forwarded-Proto header to "https". Don't forget to adjust the "Base Path Override" Jackett option accordingly.
When running jackett behind a reverse proxy make sure that the original hostname of the request is passed to Jackett. If HTTPS is used also set the X-Forwarded-Proto header to "https". Don't forget to adjust the "Base path override" Jackett option accordingly.
Example config for apache:
```

View File

@ -134,8 +134,8 @@ hr {
}
.input-header {
font-size: 18px;
width: 160px;
font-size: 16px;
width: 250px;
display: inline-block;
}
@ -165,7 +165,7 @@ hr {
text-align: center;
}
#jackett-allowext, #jackett-allowupdate, #jackett-logging, #jackett-prerelease {
#jackett-allowext, #jackett-allowupdate, #jackett-logging, #jackett-prerelease, #jackett-cache-enabled {
width: 25px;
}

View File

@ -98,6 +98,14 @@ function loadJackettSettings() {
$("#jackett-allowupdate").attr('checked', data.updatedisabled);
$("#jackett-prerelease").attr('checked', data.prerelease);
$("#jackett-logging").attr('checked', data.logging);
$("#jackett-cache-enabled").attr('checked', data.cache_enabled);
$("#jackett-cache-ttl").val(data.cache_ttl);
$("#jackett-cache-max-results-per-indexer").val(data.cache_max_results_per_indexer);
if (!data.cache_enabled) {
$("#jackett-show-releases").attr("disabled", true);
}
$("#jackett-omdbkey").val(data.omdbkey);
$("#jackett-omdburl").val(data.omdburl);
var password = data.password;
@ -1126,6 +1134,9 @@ function bindUIButtons() {
var jackett_update = $("#jackett-allowupdate").is(':checked');
var jackett_prerelease = $("#jackett-prerelease").is(':checked');
var jackett_logging = $("#jackett-logging").is(':checked');
var jackett_cache_enabled = $("#jackett-cache-enabled").is(':checked');
var jackett_cache_ttl = $("#jackett-cache-ttl").val();
var jackett_cache_max_results_per_indexer = $("#jackett-cache-max-results-per-indexer").val();
var jackett_omdb_key = $("#jackett-omdbkey").val();
var jackett_omdb_url = $("#jackett-omdburl").val();
@ -1143,6 +1154,10 @@ function bindUIButtons() {
blackholedir: $("#jackett-savedir").val(),
logging: jackett_logging,
basepathoverride: jackett_basepathoverride,
logging: jackett_logging,
cache_enabled: jackett_cache_enabled,
cache_ttl: jackett_cache_ttl,
cache_max_results_per_indexer: jackett_cache_max_results_per_indexer,
omdbkey: jackett_omdb_key,
omdburl: jackett_omdb_url,
proxy_type: jackett_proxy_type,

View File

@ -126,8 +126,8 @@ hr {
}
.input-header {
font-size: 18px;
width: 160px;
font-size: 16px;
width: 250px;
display: inline-block;
}
@ -157,7 +157,7 @@ hr {
text-align: center;
}
#jackett-allowext, #jackett-allowupdate, #jackett-logging, #jackett-prerelease {
#jackett-allowext, #jackett-allowupdate, #jackett-logging, #jackett-prerelease, #jackett-cache-enabled {
width: 25px;
}

View File

@ -33,8 +33,8 @@
<link rel="stylesheet" type="text/css" href="../bootstrap/bootstrap.min.css?changed=2017083001">
<link rel="stylesheet" type="text/css" href="../animate.css?changed=2017083001">
<link rel="stylesheet" type="text/css" href="../custom.css?changed=20200223" media="only screen and (min-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom_mobile.css?changed=20200223" media="only screen and (max-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom.css?changed=20201208" media="only screen and (min-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom_mobile.css?changed=20201208" media="only screen and (max-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../css/jquery.dataTables.min.css?changed=2017083001">
<link rel="stylesheet" type="text/css" href="../css/bootstrap-multiselect.css?changed=2017083001" />
<link rel="stylesheet" type="text/css" href="../css/font-awesome.min.css?changed=2017083001">
@ -127,7 +127,7 @@
</a>
</div>
<div class="input-area">
<span class="input-header">Base Path Override: </span>
<span class="input-header">Base path override: </span>
<input id="jackett-basepathoverride" class="form-control input-right" type="text" value="" placeholder="/jackett">
</div>
<div class="input-area">
@ -135,7 +135,7 @@
<input id="jackett-port" class="form-control input-right" type="text" value="" placeholder="9117">
</div>
<div class="input-area">
<span class="input-header">Manual download blackhole directory: </span>
<span class="input-header">Blackhole directory: </span>
<input id="jackett-savedir" class="form-control input-right" type="text" value="" placeholder="c:\torrents\">
</div>
@ -188,6 +188,18 @@
<span class="input-header">Enhanced logging: </span>
<input id="jackett-logging" class="form-control input-right" type="checkbox" />
</div>
<div class="input-area">
<span class="input-header">Cache enabled (recommended): </span>
<input id="jackett-cache-enabled" class="form-control input-right" type="checkbox" />
</div>
<div class="input-area">
<span class="input-header">Cache TTL (seconds): </span>
<input id="jackett-cache-ttl" class="form-control input-right" type="text" value="" placeholder="">
</div>
<div class="input-area">
<span class="input-header">Cache max results per indexer: </span>
<input id="jackett-cache-max-results-per-indexer" class="form-control input-right" type="text" value="" placeholder="">
</div>
<div class="input-area">
<span class="input-header">OMDB API key: </span>
<input id="jackett-omdbkey" class="form-control input-right" type="text" value="" placeholder="">
@ -680,6 +692,6 @@
</script>
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></script>
<script type="text/javascript" src="../custom.js?changed=20201107"></script>
<script type="text/javascript" src="../custom.js?changed=20201208"></script>
</body>
</html>

View File

@ -49,7 +49,8 @@ namespace Jackett.Common.Indexers
set => configData = value;
}
public Abnormal(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
public Abnormal(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "abnormal",
name: "Abnormal",
description: "General French Private Tracker",
@ -68,6 +69,7 @@ namespace Jackett.Common.Indexers
client: w,
logger: l,
p: ps,
cacheService: cs,
downloadBase: "https://abnormal.ws/torrents.php?action=download&id=",
configData: new ConfigurationDataAbnormal())
{

View File

@ -106,7 +106,7 @@ namespace Jackett.Common.Indexers.Abstract
protected AvistazTracker(string link, string id, string name, string description,
IIndexerConfigurationService configService, WebClient client, Logger logger,
IProtectionService p, TorznabCapabilities caps)
IProtectionService p, ICacheService cs, TorznabCapabilities caps)
: base(id: id,
name: name,
description: description,
@ -116,6 +116,7 @@ namespace Jackett.Common.Indexers.Abstract
client: client,
logger: logger,
p: p,
cacheService: cs,
configData: new ConfigurationDataBasicLoginWithPID(@"You have to check 'Enable RSS Feed' in 'My Account',
without this configuration the torrent download does not work.<br/>You can find the PID in 'My profile'."))
{

View File

@ -27,8 +27,8 @@ namespace Jackett.Common.Indexers.Abstract
protected CouchPotatoTracker(string link, string id, string name, string description,
IIndexerConfigurationService configService, WebClient client, Logger logger,
IProtectionService p, TorznabCapabilities caps, ConfigurationData configData,
string endpoint)
IProtectionService p, ICacheService cs, TorznabCapabilities caps,
ConfigurationData configData, string endpoint)
: base(id: id,
name: name,
description: description,
@ -38,6 +38,7 @@ namespace Jackett.Common.Indexers.Abstract
client: client,
logger: logger,
p: p,
cacheService: cs,
configData: configData)
{
this.endpoint = endpoint;

View File

@ -37,9 +37,9 @@ namespace Jackett.Common.Indexers.Abstract
protected GazelleTracker(string link, string id, string name, string description,
IIndexerConfigurationService configService, WebClient client, Logger logger,
IProtectionService p, TorznabCapabilities caps, bool supportsFreeleechTokens,
bool imdbInTags = false, bool has2Fa = false, bool useApiKey = false,
string instructionMessageOptional = null)
IProtectionService p, ICacheService cs, TorznabCapabilities caps,
bool supportsFreeleechTokens, bool imdbInTags = false, bool has2Fa = false,
bool useApiKey = false, string instructionMessageOptional = null)
: base(id: id,
name: name,
description: description,
@ -49,6 +49,7 @@ namespace Jackett.Common.Indexers.Abstract
client: client,
logger: logger,
p: p,
cacheService: cs,
configData: new ConfigurationDataGazelleTracker(
has2Fa, supportsFreeleechTokens, useApiKey, instructionMessageOptional))
{

View File

@ -12,7 +12,8 @@ namespace Jackett.Common.Indexers
[ExcludeFromCodeCoverage]
public class AlphaRatio : GazelleTracker
{
public AlphaRatio(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public AlphaRatio(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "alpharatio",
name: "AlphaRatio",
description: "AlphaRatio (AR) is a Private Torrent Tracker for 0DAY / GENERAL",
@ -32,6 +33,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cs: cs,
supportsFreeleechTokens: true,
imdbInTags: true)
{

View File

@ -27,7 +27,8 @@ namespace Jackett.Common.Indexers
private static readonly Regex SeasonInfoRegex = new Regex(@"(?:(?:TV-)|(?:ТВ-))(\d+)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private static readonly Lazy<Regex> StripRussianTitleRegex = new Lazy<Regex>(() => new Regex(@"^.*?\/\s*", RegexOptions.Compiled));
public AniDUB(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public AniDUB(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "anidub",
name: "AniDUB",
description: "AniDUB Tracker is a semi-private russian tracker and release group for anime",
@ -51,6 +52,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataAniDub())
{
Encoding = Encoding.UTF8;

View File

@ -18,7 +18,7 @@ namespace Jackett.Common.Indexers
[ExcludeFromCodeCoverage]
public class AniLibria : BaseWebIndexer
{
public AniLibria(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
public AniLibria(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps, ICacheService cs)
: base(id: "AniLibria",
name: "AniLibria",
description: "AniLibria is a Public torrent tracker for anime, voiced on russian by AniLibria team",
@ -34,6 +34,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataAniLibria())
{
Encoding = Encoding.UTF8;

View File

@ -23,7 +23,8 @@ namespace Jackett.Common.Indexers
[ExcludeFromCodeCoverage]
public class Anidex : BaseWebIndexer
{
public Anidex(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
public Anidex(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l,
IProtectionService ps, ICacheService cs)
: base(id: "anidex",
name: "Anidex",
description: "Anidex is a Public torrent tracker and indexer, primarily for English fansub groups of anime",
@ -39,6 +40,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationData())
{
Encoding = Encoding.UTF8;

View File

@ -32,7 +32,8 @@ namespace Jackett.Common.Indexers
private ConfigurationDataAnimeBytes ConfigData => (ConfigurationDataAnimeBytes)configData;
public AnimeBytes(IIndexerConfigurationService configService, WebClient client, Logger l, IProtectionService ps)
public AnimeBytes(IIndexerConfigurationService configService, WebClient client, Logger l,
IProtectionService ps, ICacheService cs)
: base(id: "animebytes",
name: "AnimeBytes",
description: "Powered by Tentacles",
@ -59,6 +60,7 @@ namespace Jackett.Common.Indexers
},
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataAnimeBytes("Note: Go to AnimeBytes site and open your account settings. Go to 'Account' tab, move cursor over black part near 'Passkey' and copy its value. Your username is case sensitive."))
{
Encoding = Encoding.UTF8;

View File

@ -32,7 +32,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public AnimeTorrents(IIndexerConfigurationService configService, WebClient c, Logger l, IProtectionService ps)
public AnimeTorrents(IIndexerConfigurationService configService, WebClient c, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "animetorrents",
name: "AnimeTorrents",
description: "Definitive source for anime and manga",
@ -51,6 +52,7 @@ namespace Jackett.Common.Indexers
client: c,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.UTF8;

View File

@ -27,7 +27,8 @@ namespace Jackett.Common.Indexers
private static readonly Regex SizeInfoQueryRegex = new Regex(@"Размер:(.*)\n", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private static readonly Regex ReleaseDateInfoQueryRegex = new Regex(@"Добавлен:(.*)\n", RegexOptions.Compiled | RegexOptions.IgnoreCase);
public Animedia(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public Animedia(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "Animedia",
name: "Animedia",
description: "Animedia is a public russian tracker and release group for anime.",
@ -43,6 +44,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationData())
{
Encoding = Encoding.UTF8;

View File

@ -30,7 +30,8 @@ namespace Jackett.Common.Indexers
"https://tehconnection.me/"
};
public Anthelion(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public Anthelion(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "anthelion",
name: "Anthelion", // old name: TehConnection.me
description: "A movies tracker",
@ -49,6 +50,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.UTF8;

View File

@ -11,7 +11,8 @@ namespace Jackett.Common.Indexers
[ExcludeFromCodeCoverage]
public class AvistaZ : AvistazTracker
{
public AvistaZ(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public AvistaZ(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "avistaz",
name: "AvistaZ",
description: "Aka AsiaTorrents",
@ -30,7 +31,9 @@ namespace Jackett.Common.Indexers
configService: configService,
client: wc,
logger: l,
p: ps)
p: ps,
cs: cs
)
{
AddCategoryMapping(1, TorznabCatType.Movies);
AddCategoryMapping(1, TorznabCatType.MoviesUHD);

View File

@ -24,7 +24,8 @@ namespace Jackett.Common.Indexers
private readonly Regex _removeYearRegex = new Regex(@" [\(\[]?(19|20)\d{2}[\)\]]?$", RegexOptions.Compiled);
private new ConfigurationDataPasskey configData => (ConfigurationDataPasskey)base.configData;
public AwesomeHD(IIndexerConfigurationService configService, Utils.Clients.WebClient c, Logger l, IProtectionService ps)
public AwesomeHD(IIndexerConfigurationService configService, Utils.Clients.WebClient c, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "awesomehd",
name: "Awesome-HD",
description: "An HD tracker",
@ -48,6 +49,7 @@ namespace Jackett.Common.Indexers
client: c,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataPasskey("Note: You can find the Passkey in your profile, " +
"next to Personal information."))
{

View File

@ -33,7 +33,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public BB(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
public BB(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "bb",
name: "bB",
description: "bB is a Private Torrent Tracker for 0DAY / GENERAL",
@ -61,6 +62,7 @@ namespace Jackett.Common.Indexers
client: w,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.UTF8;

View File

@ -60,7 +60,8 @@ namespace Jackett.Common.Indexers
{"greys anatomy", "grey's anatomy"}
};
public BJShare(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public BJShare(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "bjshare",
name: "BJ-Share",
description: "A brazilian tracker.",
@ -88,6 +89,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay())
{
Encoding = Encoding.UTF8;

View File

@ -35,7 +35,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public BakaBT(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
public BakaBT(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l,
IProtectionService ps, ICacheService cs)
: base(id: "bakabt",
name: "BakaBT",
description: "Anime Comunity",
@ -59,6 +60,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBakaBT("To prevent 0-results-error, Enable the " +
"Show-Adult-Content option in your BakaBT account Settings."))
{

View File

@ -36,6 +36,7 @@ namespace Jackett.Common.Indexers
protected Logger logger;
protected IIndexerConfigurationService configurationService;
protected IProtectionService protectionService;
protected ICacheService cacheService;
protected ConfigurationData configData;
@ -62,11 +63,12 @@ namespace Jackett.Common.Indexers
// standard constructor used by most indexers
public BaseIndexer(string link, string id, string name, string description,
IIndexerConfigurationService configService, Logger logger, ConfigurationData configData,
IProtectionService p)
IProtectionService p, ICacheService cs)
{
this.logger = logger;
configurationService = configService;
protectionService = p;
cacheService = cs;
if (!link.EndsWith("/", StringComparison.Ordinal))
throw new Exception("Site link must end with a slash.");
@ -378,14 +380,19 @@ namespace Jackett.Common.Indexers
public virtual async Task<IndexerResult> ResultsForQuery(TorznabQuery query, bool isMetaIndexer)
{
if (!CanHandleQuery(query) || !CanHandleCategories(query, isMetaIndexer))
return new IndexerResult(this, new ReleaseInfo[0]);
return new IndexerResult(this, new ReleaseInfo[0], false);
var cachedReleases = cacheService.Search(this, query);
if (cachedReleases != null)
return new IndexerResult(this, cachedReleases, true);
try
{
var results = await PerformQuery(query);
results = FilterResults(query, results);
results = FixResults(query, results);
return new IndexerResult(this, results);
cacheService.CacheResults(this, query, results.ToList());
return new IndexerResult(this, results, false);
}
catch (Exception ex)
{
@ -400,9 +407,9 @@ namespace Jackett.Common.Indexers
{
protected BaseWebIndexer(string link, string id, string name, string description,
IIndexerConfigurationService configService, WebClient client, Logger logger,
ConfigurationData configData, IProtectionService p, TorznabCapabilities caps,
string downloadBase = null)
: base(link, id, name, description, configService, logger, configData, p)
ConfigurationData configData, IProtectionService p, ICacheService cacheService,
TorznabCapabilities caps, string downloadBase = null)
: base(link, id, name, description, configService, logger, configData, p, cacheService)
{
webclient = client;
downloadUrlBase = downloadBase;
@ -410,8 +417,9 @@ namespace Jackett.Common.Indexers
}
// minimal constructor used by e.g. cardigann generic indexer
protected BaseWebIndexer(IIndexerConfigurationService configService, WebClient client, Logger logger, IProtectionService p)
: base("/", "", "", "", configService, logger, null, p) => webclient = client;
protected BaseWebIndexer(IIndexerConfigurationService configService, WebClient client, Logger logger,
IProtectionService p, ICacheService cacheService)
: base("/", "", "", "", configService, logger, null, p, cacheService) => webclient = client;
public virtual async Task<byte[]> Download(Uri link)
{
@ -658,7 +666,6 @@ namespace Jackett.Common.Indexers
{
var result = await base.ResultsForQuery(query, isMetaIndexer);
result.Releases = CleanLinks(result.Releases);
return result;
}
@ -696,9 +703,9 @@ namespace Jackett.Common.Indexers
{
protected BaseCachingWebIndexer(string link,string id, string name, string description,
IIndexerConfigurationService configService, WebClient client, Logger logger,
ConfigurationData configData, IProtectionService p, TorznabCapabilities caps = null,
string downloadBase = null)
: base(link, id, name, description, configService, client, logger, configData, p, caps, downloadBase)
ConfigurationData configData, IProtectionService p, ICacheService cacheService,
TorznabCapabilities caps = null, string downloadBase = null)
: base(link, id, name, description, configService, client, logger, configData, p, cacheService, caps, downloadBase)
{
}
@ -710,6 +717,7 @@ namespace Jackett.Common.Indexers
}
}
// TODO: remove this implementation and use gloal cache
protected static List<CachedQueryResult> cache = new List<CachedQueryResult>();
protected static readonly TimeSpan cacheTime = new TimeSpan(0, 9, 0);
}

View File

@ -30,7 +30,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public BitCityReloaded(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public BitCityReloaded(IIndexerConfigurationService configService, WebClient wc, Logger l,
IProtectionService ps, ICacheService cs)
: base(id: "bitcityreloaded",
name: "Bit-City Reloaded",
description: "A German general tracker.",
@ -58,6 +59,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay("Only the results from the first search result page are shown, adjust your profile settings to show a reasonable amount (it looks like there's no maximum)."))
{
Encoding = Encoding.GetEncoding("iso-8859-1");

View File

@ -25,7 +25,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataCookie configData => (ConfigurationDataCookie)base.configData;
public BitHDTV(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
public BitHDTV(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "bithdtv",
name: "BIT-HDTV",
description: "BIT-HDTV - Home of High Definition",
@ -45,6 +46,7 @@ namespace Jackett.Common.Indexers
client: w,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataCookie("For best results, change the 'Torrents per page' setting to 100 in your profile."))
{
Encoding = Encoding.GetEncoding("iso-8859-1");

View File

@ -28,7 +28,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public BroadcasTheNet(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public BroadcasTheNet(IIndexerConfigurationService configService, WebClient wc, Logger l,
IProtectionService ps, ICacheService cs)
: base(id: "broadcasthenet",
name: "BroadcasTheNet",
description: "BroadcasTheNet (BTN) is an invite-only torrent tracker focused on TV shows",
@ -46,6 +47,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataAPIKey())
{
Encoding = Encoding.UTF8;

View File

@ -10,7 +10,8 @@ namespace Jackett.Common.Indexers
[ExcludeFromCodeCoverage]
public class BrokenStones : GazelleTracker
{
public BrokenStones(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public BrokenStones(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "brokenstones",
name: "BrokenStones",
description: "Broken Stones is a Private site for MacOS and iOS APPS / GAMES",
@ -20,6 +21,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cs: cs,
supportsFreeleechTokens: true)
{
Language = "en-us";

View File

@ -14,7 +14,8 @@ namespace Jackett.Common.Indexers
"https://www.cgpeers.com/"
};
public CGPeers(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public CGPeers(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "cgpeers",
name: "CGPeers",
description: "CGPeers is a Private Torrent Tracker for GRAPHICS SOFTWARE / TUTORIALS / ETC",
@ -24,6 +25,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cs: cs,
supportsFreeleechTokens: true)
{
Language = "en-us";

View File

@ -58,11 +58,13 @@ namespace Jackett.Common.Indexers
@$"\b({string.Join("|", _SupportedLogicFunctions.Select(Regex.Escape))})(?:\s+(\(?\.[^\)\s]+\)?|""[^""]+"")){{2,}}");
public CardigannIndexer(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l,
IProtectionService ps, IndexerDefinition Definition)
IProtectionService ps, ICacheService cs, IndexerDefinition Definition)
: base(configService: configService,
client: wc,
logger: l,
p: ps)
p: ps,
cacheService: cs
)
{
this.Definition = Definition;
Id = Definition.Id;

View File

@ -31,7 +31,8 @@ namespace Jackett.Common.Indexers
"https://www.cinecalidad.eu/"
};
public Cinecalidad(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public Cinecalidad(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "cinecalidad",
name: "Cinecalidad",
description: "Películas Full HD en Castellano y Latino Dual.",
@ -43,6 +44,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationData())
{
Encoding = Encoding.UTF8;

View File

@ -11,7 +11,8 @@ namespace Jackett.Common.Indexers
[ExcludeFromCodeCoverage]
public class CinemaZ : AvistazTracker
{
public CinemaZ(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public CinemaZ(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "cinemaz",
name: "CinemaZ",
description: "Part of the Avistaz network.",
@ -30,7 +31,9 @@ namespace Jackett.Common.Indexers
configService: configService,
client: wc,
logger: l,
p: ps)
p: ps,
cs: cs
)
{
AddCategoryMapping(1, TorznabCatType.Movies);
AddCategoryMapping(1, TorznabCatType.MoviesUHD);

View File

@ -13,7 +13,8 @@ namespace Jackett.Common.Indexers
[ExcludeFromCodeCoverage]
public class DICMusic : GazelleTracker
{
public DICMusic(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public DICMusic(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "dicmusic",
name: "DICMusic",
description: "DICMusic is a CHINESE Private Torrent Tracker for MUSIC",
@ -29,6 +30,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cs: cs,
supportsFreeleechTokens: true,
has2Fa: true)
{

View File

@ -35,7 +35,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public DarmoweTorenty(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public DarmoweTorenty(IIndexerConfigurationService configService, WebClient wc, Logger l,
IProtectionService ps, ICacheService cs)
: base(id: "darmowetorenty",
name: "Darmowe torenty",
description: "Darmowe torenty is a POLISH Semi-Private Torrent Tracker for MOVIES / TV / GENERAL",
@ -63,6 +64,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay())
{
Encoding = Encoding.GetEncoding("iso-8859-2");

View File

@ -29,7 +29,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public DigitalCore(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
public DigitalCore(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "digitalcore",
name: "DigitalCore",
description: "DigitalCore is a Private Torrent Tracker for MOVIES / TV / GENERAL",
@ -57,6 +58,7 @@ namespace Jackett.Common.Indexers
client: w,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataCookie())
{
Encoding = Encoding.UTF8;

View File

@ -49,7 +49,8 @@ namespace Jackett.Common.Indexers
"https://www.divxtotal.la/"
};
public DivxTotal(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
public DivxTotal(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "divxtotal",
name: "DivxTotal",
description: "DivxTotal is a SPANISH site for Movies, TV series and Software",
@ -68,6 +69,7 @@ namespace Jackett.Common.Indexers
client: w,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationData())
{
Encoding = Encoding.UTF8;

View File

@ -24,7 +24,8 @@ namespace Jackett.Common.Indexers
private string BrowseUrl => SiteLink + "browse.php";
private new ConfigurationDataEliteTracker configData => (ConfigurationDataEliteTracker)base.configData;
public EliteTracker(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
public EliteTracker(IIndexerConfigurationService configService, WebClient webClient, Logger logger,
IProtectionService ps, ICacheService cs)
: base(id: "elitetracker",
name: "Elite-Tracker",
description: "French Torrent Tracker",
@ -50,7 +51,8 @@ namespace Jackett.Common.Indexers
},
configService: configService,
logger: logger,
p: protectionService,
p: ps,
cacheService: cs,
client: webClient,
configData: new ConfigurationDataEliteTracker()
)

View File

@ -53,7 +53,8 @@ namespace Jackett.Common.Indexers
"https://epublibre.unblockit.app/"
};
public EpubLibre(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public EpubLibre(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "epublibre",
name: "EpubLibre",
description: "Más libros, Más libres",
@ -69,6 +70,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationData())
{
Encoding = Encoding.UTF8;

View File

@ -19,7 +19,8 @@ namespace Jackett.Common.Indexers
"https://torrents.yourexotic.com/"
};
public ExoticaZ(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public ExoticaZ(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "exoticaz",
name: "ExoticaZ",
description: "ExoticaZ (YourExotic) is a Private Torrent Tracker for 3X",
@ -34,7 +35,9 @@ namespace Jackett.Common.Indexers
configService: configService,
client: wc,
logger: l,
p: ps)
p: ps,
cs: cs
)
{
AddCategoryMapping(1, TorznabCatType.XXXx264);
AddCategoryMapping(2, TorznabCatType.XXXPack);

View File

@ -16,7 +16,8 @@ namespace Jackett.Common.Indexers.Feeds
[ExcludeFromCodeCoverage]
public class AnimeTosho : BaseNewznabIndexer
{
public AnimeTosho(IIndexerConfigurationService configService, WebClient client, Logger logger, IProtectionService ps)
public AnimeTosho(IIndexerConfigurationService configService, WebClient client, Logger logger,
IProtectionService ps, ICacheService cs)
: base(id: "animetosho",
name: "Anime Tosho",
description: "AnimeTosho (AT) is an automated service that provides torrent files, magnet links and DDL for all anime releases",
@ -32,6 +33,7 @@ namespace Jackett.Common.Indexers.Feeds
client: client,
logger: logger,
p: ps,
cs: cs,
configData: new ConfigurationData())
{
Encoding = Encoding.UTF8;

View File

@ -18,8 +18,8 @@ namespace Jackett.Common.Indexers.Feeds
protected BaseFeedIndexer(string link, string id, string name, string description,
IIndexerConfigurationService configService, WebClient client, Logger logger,
ConfigurationData configData, IProtectionService p, TorznabCapabilities caps = null,
string downloadBase = null)
ConfigurationData configData, IProtectionService p, ICacheService cs,
TorznabCapabilities caps = null, string downloadBase = null)
: base(id: id,
name: name,
description: description,
@ -29,6 +29,7 @@ namespace Jackett.Common.Indexers.Feeds
client: client,
logger: logger,
p: p,
cacheService: cs,
configData: configData,
downloadBase: downloadBase)
{

View File

@ -17,8 +17,8 @@ namespace Jackett.Common.Indexers.Feeds
{
protected BaseNewznabIndexer(string link, string id, string name, string description,
IIndexerConfigurationService configService, WebClient client, Logger logger,
ConfigurationData configData, IProtectionService p, TorznabCapabilities caps = null,
string downloadBase = null)
ConfigurationData configData, IProtectionService p, ICacheService cs,
TorznabCapabilities caps = null, string downloadBase = null)
: base(id: id,
name: name,
description: description,
@ -28,6 +28,7 @@ namespace Jackett.Common.Indexers.Feeds
client: client,
logger: logger,
p: p,
cs: cs,
configData: configData,
downloadBase: downloadBase)
{

View File

@ -30,7 +30,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataFileList configData => (ConfigurationDataFileList)base.configData;
public FileList(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public FileList(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "filelist",
name: "FileList",
description: "The best Romanian site.",
@ -58,6 +59,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataFileList())
{
Encoding = Encoding.UTF8;

View File

@ -23,7 +23,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataBasicLogin configData => (ConfigurationDataBasicLogin)base.configData;
public FunFile(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
public FunFile(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "funfile",
name: "FunFile",
description: "A general tracker",
@ -51,6 +52,7 @@ namespace Jackett.Common.Indexers
client: w,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin("For best results, change the 'Torrents per page' setting to 100 in your profile."))
{
Encoding = Encoding.GetEncoding("iso-8859-1");

View File

@ -30,7 +30,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataCookie configData => (ConfigurationDataCookie)base.configData;
public Fuzer(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
public Fuzer(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "fuzer",
name: "Fuzer",
description: "Fuzer is a private torrent website with israeli torrents.",
@ -58,6 +59,7 @@ namespace Jackett.Common.Indexers
client: w,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataCookie())
{
Encoding = Encoding.GetEncoding("windows-1255");

View File

@ -30,7 +30,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public GazelleGames(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public GazelleGames(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "gazellegames",
name: "GazelleGames",
description: "A gaming tracker.",
@ -40,6 +41,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataCookie())
{
Encoding = Encoding.UTF8;

View File

@ -29,7 +29,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public GimmePeers(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public GimmePeers(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "gimmepeers",
name: "GimmePeers",
description: "Formerly ILT",
@ -57,6 +58,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.GetEncoding("iso-8859-1");

View File

@ -25,7 +25,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public HDBitsApi(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public HDBitsApi(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "hdbitsapi",
name: "HDBits (API)",
description: "The HighDefinition Bittorrent Community",
@ -45,6 +46,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataHDBitsApi())
{
Encoding = Encoding.UTF8;

View File

@ -25,7 +25,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataBasicLogin configData => (ConfigurationDataBasicLogin)base.configData;
public HDSpace(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public HDSpace(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "hdspace",
name: "HD-Space",
description: "Sharing The Universe",
@ -49,6 +50,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.UTF8;

View File

@ -44,7 +44,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataBasicLogin configData => (ConfigurationDataBasicLogin)base.configData;
public HDTorrents(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
public HDTorrents(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "hdtorrents",
name: "HD-Torrents",
description: "HD-Torrents is a private torrent website with HD torrents and strict rules on their content.",
@ -68,6 +69,7 @@ namespace Jackett.Common.Indexers
client: w,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin(
"For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile."))
{

View File

@ -29,7 +29,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public Hebits(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
public Hebits(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l,
IProtectionService ps, ICacheService cs)
: base(id: "hebits",
name: "Hebits",
description: "The Israeli Tracker",
@ -57,6 +58,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
downloadBase: "https://hebits.net/",
configData: new ConfigurationDataBasicLogin())
{

View File

@ -12,11 +12,13 @@ namespace Jackett.Common.Indexers
{
public IIndexer Indexer { get; set; }
public IEnumerable<ReleaseInfo> Releases { get; set; }
public bool IsFromCache;
public IndexerResult(IIndexer Indexer, IEnumerable<ReleaseInfo> Releases)
public IndexerResult(IIndexer indexer, IEnumerable<ReleaseInfo> releases, bool isFromCache)
{
this.Indexer = Indexer;
this.Releases = Releases;
Indexer = indexer;
Releases = releases;
IsFromCache = isFromCache;
}
}

View File

@ -49,7 +49,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataCookie configData => (ConfigurationDataCookie)base.configData;
public IPTorrents(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public IPTorrents(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "iptorrents",
name: "IPTorrents",
description: "Always a step ahead.",
@ -77,6 +78,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataCookie("For best results, change the 'Torrents per page' option to 100 and check the 'Torrents - Show files count' option in the website Settings."))
{
Encoding = Encoding.UTF8;

View File

@ -33,7 +33,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public ImmortalSeed(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
public ImmortalSeed(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l,
IProtectionService ps, ICacheService cs)
: base(id: "immortalseed",
name: "ImmortalSeed",
description: "ImmortalSeed (iS) is a Private Torrent Tracker for MOVIES / TV / GENERAL",
@ -61,6 +62,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.UTF8;

View File

@ -32,7 +32,8 @@ namespace Jackett.Common.Indexers
private ConfigurationData ConfigData => configData;
public InternetArchive(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public InternetArchive(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "internetarchive",
name: "Internet Archive",
description: "Internet Archive is a non-profit digital library offering free universal access to books, movies & music, as well as 406 billion archived web pages",
@ -60,6 +61,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationData())
{
Encoding = Encoding.UTF8;

View File

@ -55,7 +55,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public Libble(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public Libble(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "libble",
name: "Libble",
description: "Libble is a Private Torrent Tracker for MUSIC",
@ -71,6 +72,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.UTF8;

View File

@ -93,7 +93,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public LostFilm(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public LostFilm(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "lostfilm",
name: "LostFilm.tv",
description: "Unique portal about foreign series",
@ -112,6 +113,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataCaptchaLogin())
{
Encoding = Encoding.UTF8;

View File

@ -23,7 +23,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataBasicLogin configData => (ConfigurationDataBasicLogin)base.configData;
public Magnetico(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public Magnetico(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "magnetico",
name: "Magnetico (Local DHT)",
description: "Magnetico is a self-hosted BitTorrent DHT search engine",
@ -51,6 +52,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin("Configure the URL, username and password from your local magneticow.<br>" +
"Default credentials are: username=username, password=password.<br>" +
"If you have many torrents, it is recommended to use PostgreSQL database to make queries faster. With SQLite, timeouts may occur."))

View File

@ -43,7 +43,8 @@ namespace Jackett.Common.Indexers
"http://www.mejortorrentt.org/"
};
public MejorTorrent(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
public MejorTorrent(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "mejortorrent",
name: "MejorTorrent",
description: "MejorTorrent - Hay veces que un torrent viene mejor! :)",
@ -67,6 +68,7 @@ namespace Jackett.Common.Indexers
client: w,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationData())
{
Encoding = Encoding.UTF8;

View File

@ -17,8 +17,8 @@ namespace Jackett.Common.Indexers.Meta
protected BaseMetaIndexer(string name, string id, string description,
IFallbackStrategyProvider fallbackStrategyProvider,
IResultFilterProvider resultFilterProvider,IIndexerConfigurationService configService,
WebClient client, Logger logger, ConfigurationData configData, IProtectionService p,
Func<IIndexer, bool> filter)
WebClient client, Logger logger, ConfigurationData configData, IProtectionService ps,
ICacheService cs, Func<IIndexer, bool> filter)
: base(id: id,
name: name,
description: description,
@ -27,7 +27,8 @@ namespace Jackett.Common.Indexers.Meta
configService: configService,
client: client,
logger: logger,
p: p,
p: ps,
cacheService: cs,
configData: configData)
{
filterFunc = filter;
@ -49,13 +50,14 @@ namespace Jackett.Common.Indexers.Meta
public override async Task<IndexerResult> ResultsForQuery(TorznabQuery query, bool isMetaIndexer)
{
if (!CanHandleQuery(query) || !CanHandleCategories(query, true))
return new IndexerResult(this, new ReleaseInfo[0]);
return new IndexerResult(this, new ReleaseInfo[0], false);
try
{
var results = await PerformQuery(query);
// the results are already filtered and fixed by each indexer
return new IndexerResult(this, results);
// some results may come from cache, but we can't inform without refactor the code
return new IndexerResult(this, results, false);
}
catch (Exception ex)
{

View File

@ -10,14 +10,15 @@ namespace Jackett.Common.Indexers.Meta
{
public AggregateIndexer(IFallbackStrategyProvider fallbackStrategyProvider,
IResultFilterProvider resultFilterProvider, IIndexerConfigurationService configService,
WebClient client, Logger logger, IProtectionService ps)
WebClient client, Logger logger, IProtectionService ps, ICacheService cs)
: base(id: "all",
name: "AggregateSearch",
description: "This feed includes all configured trackers",
configService: configService,
client: client,
logger: logger,
p: ps,
ps: ps,
cs: cs,
configData: new ConfigurationData(),
fallbackStrategyProvider: fallbackStrategyProvider,
resultFilterProvider: resultFilterProvider,

View File

@ -23,7 +23,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataAPIKey configData => (ConfigurationDataAPIKey)base.configData;
public Milkie(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public Milkie(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "milkie",
name: "Milkie",
description: "Milkie.cc (ME) is private torrent tracker for 0day / general",
@ -51,6 +52,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataAPIKey())
{
Encoding = Encoding.UTF8;

View File

@ -33,7 +33,8 @@ namespace Jackett.Common.Indexers
private ConfigurationDataBasicLogin ConfigData => (ConfigurationDataBasicLogin)configData;
public MoreThanTV(IIndexerConfigurationService configService, WebClient c, Logger l, IProtectionService ps)
public MoreThanTV(IIndexerConfigurationService configService, WebClient c, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "morethantv",
name: "MoreThanTV",
description: "Private torrent tracker for TV / MOVIES, and the internal tracker for the release group DRACULA.",
@ -53,6 +54,7 @@ namespace Jackett.Common.Indexers
client: c,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.UTF8;

View File

@ -24,7 +24,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataMyAnonamouse configData => (ConfigurationDataMyAnonamouse)base.configData;
public MyAnonamouse(IIndexerConfigurationService configService, WebClient c, Logger l, IProtectionService ps)
public MyAnonamouse(IIndexerConfigurationService configService, WebClient c, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "myanonamouse",
name: "MyAnonamouse",
description: "Friendliness, Warmth and Sharing",
@ -40,6 +41,7 @@ namespace Jackett.Common.Indexers
client: c,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataMyAnonamouse())
{
Encoding = Encoding.UTF8;

View File

@ -41,35 +41,37 @@ namespace Jackett.Common.Indexers
"ebook"
};
public NCore(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps) :
base(id: "ncore",
name: "nCore",
description: "A Hungarian private torrent site.",
link: "https://ncore.cc/",
caps: new TorznabCapabilities
{
TvSearchParams = new List<TvSearchParam>
{
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep, TvSearchParam.ImdbId
},
MovieSearchParams = new List<MovieSearchParam>
{
MovieSearchParam.Q, MovieSearchParam.ImdbId
},
MusicSearchParams = new List<MusicSearchParam>
{
MusicSearchParam.Q
},
BookSearchParams = new List<BookSearchParam>
{
BookSearchParam.Q
}
},
configService: configService,
client: wc,
logger: l,
p: ps,
configData: new ConfigurationDataNCore())
public NCore(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "ncore",
name: "nCore",
description: "A Hungarian private torrent site.",
link: "https://ncore.cc/",
caps: new TorznabCapabilities
{
TvSearchParams = new List<TvSearchParam>
{
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep, TvSearchParam.ImdbId
},
MovieSearchParams = new List<MovieSearchParam>
{
MovieSearchParam.Q, MovieSearchParam.ImdbId
},
MusicSearchParams = new List<MusicSearchParam>
{
MusicSearchParam.Q
},
BookSearchParams = new List<BookSearchParam>
{
BookSearchParam.Q
}
},
configService: configService,
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataNCore())
{
Encoding = Encoding.UTF8;
Language = "hu-hu";

View File

@ -24,7 +24,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataBasicLoginWith2FA configData => (ConfigurationDataBasicLoginWith2FA)base.configData;
public Nebulance(IIndexerConfigurationService configService, Utils.Clients.WebClient c, Logger l, IProtectionService ps)
public Nebulance(IIndexerConfigurationService configService, Utils.Clients.WebClient c, Logger l,
IProtectionService ps, ICacheService cs)
: base(id: "nebulance",
name: "Nebulance",
description: "At Nebulance we will change the way you think about TV",
@ -40,6 +41,7 @@ namespace Jackett.Common.Indexers
client: c,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLoginWith2FA(@"If 2FA is disabled, let the field empty.
We recommend to disable 2FA because re-login will require manual actions.
<br/>For best results, change the 'Torrents per page' setting to 100 in your profile on the NBL webpage."))

View File

@ -116,7 +116,8 @@ namespace Jackett.Common.Indexers
"https://pctnew.org/"
};
public NewPCT(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public NewPCT(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "newpct",
name: "NewPCT",
description: "NewPCT - Descargar peliculas, series y estrenos torrent gratis",
@ -135,6 +136,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationData())
{
Encoding = Encoding.GetEncoding("windows-1252");

View File

@ -29,7 +29,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public NewRealWorld(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public NewRealWorld(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "newrealworld",
name: "New Real World",
description: "A German general tracker.",
@ -57,6 +58,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay())
{
Encoding = Encoding.GetEncoding("iso-8859-1");

View File

@ -41,7 +41,8 @@ namespace Jackett.Common.Indexers
private ConfigurationDataNorbits ConfigData => (ConfigurationDataNorbits)configData;
public NorBits(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
public NorBits(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "norbits",
name: "NorBits",
description: "NorBits is a Norwegian Private site for MOVIES / TV / GENERAL",
@ -69,6 +70,7 @@ namespace Jackett.Common.Indexers
client: w,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataNorbits())
{
Encoding = Encoding.GetEncoding("iso-8859-1");

View File

@ -11,7 +11,8 @@ namespace Jackett.Common.Indexers
[ExcludeFromCodeCoverage]
public class NotWhatCD : GazelleTracker
{
public NotWhatCD(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public NotWhatCD(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "notwhatcd",
name: "notwhat.cd",
description: "A music tracker",
@ -39,6 +40,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cs: cs,
supportsFreeleechTokens: true)
{
Language = "en-us";

View File

@ -11,7 +11,8 @@ namespace Jackett.Common.Indexers
[ExcludeFromCodeCoverage]
public class Orpheus : GazelleTracker
{
public Orpheus(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public Orpheus(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "orpheus",
name: "Orpheus",
description: "A music tracker",
@ -39,6 +40,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cs: cs,
supportsFreeleechTokens: true,
has2Fa: true)
{

View File

@ -28,7 +28,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public Partis(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public Partis(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "partis",
name: "Partis",
description: "Partis is a SLOVENIAN Private Torrent Tracker",
@ -56,6 +57,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.UTF8;

View File

@ -30,7 +30,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public PassThePopcorn(IIndexerConfigurationService configService, Utils.Clients.WebClient c, Logger l, IProtectionService ps)
public PassThePopcorn(IIndexerConfigurationService configService, Utils.Clients.WebClient c, Logger l,
IProtectionService ps, ICacheService cs)
: base(id: "passthepopcorn",
name: "PassThePopcorn",
description: "PassThePopcorn is a Private site for MOVIES / TV",
@ -50,6 +51,7 @@ namespace Jackett.Common.Indexers
client: c,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataAPILoginWithUserAndPasskeyAndFilter(@"Enter filter options below to restrict search results.
Separate options with a space if using more than one option.<br>Filter options available:
<br><code>GoldenPopcorn</code><br><code>Scene</code><br><code>Checked</code><br><code>Free</code>"))

View File

@ -31,7 +31,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public PirateTheNet(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
public PirateTheNet(IIndexerConfigurationService configService, WebClient w, Logger l,
IProtectionService ps, ICacheService cs)
: base(id: "piratethenet",
name: "PirateTheNet",
description: "A movie tracker",
@ -47,6 +48,7 @@ namespace Jackett.Common.Indexers
client: w,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay("Only the results from the first search result page are shown, adjust your profile settings to show the maximum."))
{
Encoding = Encoding.UTF8;

View File

@ -32,7 +32,8 @@ namespace Jackett.Common.Indexers
private string input_username = null;
private string input_password = null;
public PixelHD(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)
public PixelHD(IIndexerConfigurationService configService, WebClient webClient, Logger logger,
IProtectionService ps, ICacheService cs)
: base(id: "pixelhd",
name: "PiXELHD",
description: "PixelHD (PxHD) is a Private Torrent Tracker for HD .MP4 MOVIES / TV",
@ -46,7 +47,8 @@ namespace Jackett.Common.Indexers
},
configService: configService,
logger: logger,
p: protectionService,
p: ps,
cacheService: cs,
client: webClient,
configData: new ConfigurationDataCaptchaLogin()
)

View File

@ -27,7 +27,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataCookie configData => (ConfigurationDataCookie)base.configData;
public PolishTracker(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public PolishTracker(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "polishtracker",
name: "PolishTracker",
description: "Polish Tracker is a POLISH Private site for 0DAY / MOVIES / GENERAL",
@ -55,6 +56,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataCookie())
{
Encoding = Encoding.UTF8;

View File

@ -33,7 +33,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public PornoLab(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public PornoLab(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "pornolab",
name: "PornoLab",
description: "PornoLab is a Semi-Private Russian site for Adult content",
@ -43,6 +44,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataPornolab())
{
Encoding = Encoding.GetEncoding("windows-1251");

View File

@ -23,7 +23,8 @@ namespace Jackett.Common.Indexers
private string SearchUrl => SiteLink + "browse.php";
private new ConfigurationDataPinNumber configData => (ConfigurationDataPinNumber)base.configData;
public PreToMe(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public PreToMe(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "pretome",
name: "PreToMe",
description: "BitTorrent site for High Quality, High Definition (HD) movies and TV Shows",
@ -51,6 +52,7 @@ namespace Jackett.Common.Indexers
configService: configService,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataPinNumber("For best results, change the 'Torrents per page' setting to 100 in 'Profile => Torrent browse settings'."))
{
Encoding = Encoding.GetEncoding("iso-8859-1");

View File

@ -11,7 +11,8 @@ namespace Jackett.Common.Indexers
[ExcludeFromCodeCoverage]
public class PrivateHD : AvistazTracker
{
public PrivateHD(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public PrivateHD(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "privatehd",
name: "PrivateHD",
description: "BitTorrent site for High Quality, High Definition (HD) movies and TV Shows",
@ -34,7 +35,9 @@ namespace Jackett.Common.Indexers
configService: configService,
client: wc,
logger: l,
p: ps)
p: ps,
cs: cs
)
{
AddCategoryMapping(1, TorznabCatType.Movies);
AddCategoryMapping(1, TorznabCatType.MoviesUHD);

View File

@ -12,7 +12,8 @@ namespace Jackett.Common.Indexers
[ExcludeFromCodeCoverage]
public class PsyTorrents : GazelleTracker
{
public PsyTorrents(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public PsyTorrents(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "psytorrents",
name: "Psytorrents",
description: "Psytorrents (PSY) is a Private Torrent Tracker for ELECTRONIC MUSIC",
@ -32,6 +33,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cs: cs,
supportsFreeleechTokens: true)
{
Language = "en-us";

View File

@ -30,7 +30,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationData configData => base.configData;
public RarBG(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
public RarBG(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l,
IProtectionService ps, ICacheService cs)
: base(id: "rarbg",
name: "RARBG",
description: "RARBG is a Public torrent site for MOVIES / TV / GENERAL",
@ -58,6 +59,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationData())
{
Encoding = Encoding.GetEncoding("windows-1252");

View File

@ -15,7 +15,8 @@ namespace Jackett.Common.Indexers
{
protected override string DownloadUrl => SiteLink + "torrents.php?action=download&usetoken=" + (useTokens ? "1" : "0") + "&id=";
public Redacted(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public Redacted(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "redacted",
name: "Redacted",
description: "A music tracker",
@ -43,6 +44,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cs: cs,
supportsFreeleechTokens: true,
has2Fa: true,
useApiKey: false

View File

@ -25,7 +25,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataBasicLogin configData => (ConfigurationDataBasicLogin)base.configData;
public RevolutionTT(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
public RevolutionTT(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l,
IProtectionService ps, ICacheService cs)
: base(id: "revolutiontt",
name: "RevolutionTT",
description: "The Revolution has begun",
@ -53,6 +54,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin("For best results, change the 'Torrents per page' setting to 100 in your Profile."))
{
Encoding = Encoding.GetEncoding("iso-8859-1");

View File

@ -34,7 +34,8 @@ namespace Jackett.Common.Indexers
"https://rutracker.net/"
};
public RuTracker(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public RuTracker(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "rutracker",
name: "RuTracker",
description: "RuTracker is a Semi-Private Russian torrent site with a thriving file-sharing community",
@ -62,6 +63,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataRutracker())
{
Encoding = Encoding.GetEncoding("windows-1251");

View File

@ -25,7 +25,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataPasskey configData => (ConfigurationDataPasskey)base.configData;
public SceneHD(IIndexerConfigurationService configService, WebClient c, Logger l, IProtectionService ps)
public SceneHD(IIndexerConfigurationService configService, WebClient c, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "scenehd",
name: "SceneHD",
description: "SceneHD is Private site for HD TV / MOVIES",
@ -49,6 +50,7 @@ namespace Jackett.Common.Indexers
client: c,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataPasskey("You can find the Passkey if you generate a RSS " +
"feed link. It's the last parameter in the URL."))
{

View File

@ -25,7 +25,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataSceneTime configData => (ConfigurationDataSceneTime)base.configData;
public SceneTime(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
public SceneTime(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "scenetime",
name: "SceneTime",
description: "Always on time",
@ -53,6 +54,7 @@ namespace Jackett.Common.Indexers
client: w,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataSceneTime())
{
Encoding = Encoding.GetEncoding("iso-8859-1");

View File

@ -14,7 +14,8 @@ namespace Jackett.Common.Indexers
[ExcludeFromCodeCoverage]
public class SecretCinema : GazelleTracker
{
public SecretCinema(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public SecretCinema(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "secretcinema",
name: "Secret Cinema",
description: "A tracker for rare movies.",
@ -34,6 +35,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cs: cs,
supportsFreeleechTokens: false) // ratioless tracker
{
Language = "en-us";

View File

@ -31,7 +31,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public Shazbat(IIndexerConfigurationService configService, WebClient c, Logger l, IProtectionService ps)
public Shazbat(IIndexerConfigurationService configService, WebClient c, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "shazbat",
name: "Shazbat",
description: "Modern indexer",
@ -47,6 +48,7 @@ namespace Jackett.Common.Indexers
client: c,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLoginWithRSS())
{
Encoding = Encoding.UTF8;

View File

@ -19,7 +19,8 @@ namespace Jackett.Common.Indexers
[ExcludeFromCodeCoverage]
internal class ShizaProject : BaseWebIndexer
{
public ShizaProject(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public ShizaProject(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "ShizaProject",
name: "ShizaProject",
description: "ShizaProject Tracker is a semi-private russian tracker and release group for anime",
@ -35,6 +36,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLoginWithEmail())
{
Encoding = Encoding.UTF8;

View File

@ -26,7 +26,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationData configData => base.configData;
public ShowRSS(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public ShowRSS(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "showrss",
name: "ShowRSS",
description: "showRSS is a service that allows you to keep track of your favorite TV shows",
@ -42,6 +43,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationData())
{
Encoding = Encoding.UTF8;

View File

@ -35,7 +35,8 @@ namespace Jackett.Common.Indexers
set => configData = value;
}
public SolidTorrents(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public SolidTorrents(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "solidtorrents",
name: "Solid Torrents",
description: "Solid Torrents is a Public torrent meta-search engine",
@ -63,6 +64,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationData())
{
Encoding = Encoding.UTF8;

View File

@ -44,7 +44,8 @@ namespace Jackett.Common.Indexers
"https://www.myxz.org/"
};
public SpeedApp(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public SpeedApp(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(
id: "speedapp",
name: "SpeedApp",
@ -73,6 +74,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLoginWithEmail())
{
Encoding = Encoding.UTF8;

View File

@ -32,7 +32,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataBasicLogin configData => (ConfigurationDataBasicLogin)base.configData;
public SpeedCD(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public SpeedCD(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "speedcd",
name: "Speed.cd",
description: "Your home now!",
@ -60,6 +61,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin(
@"Speed.Cd have increased their security. If you are having problems please check the security tab
in your Speed.Cd profile. Eg. Geo Locking, your seedbox may be in a different country to the one where you login via your

View File

@ -29,7 +29,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public SuperBits(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
public SuperBits(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "superbits",
name: "Superbits",
description: "Superbits is a SWEDISH Private Torrent Tracker for MOVIES / TV / GENERAL",
@ -57,6 +58,7 @@ namespace Jackett.Common.Indexers
client: w,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataCookie())
{
Encoding = Encoding.UTF8;

View File

@ -31,7 +31,8 @@ namespace Jackett.Common.Indexers
private readonly Regex _seriesInfoSearchRegex = new Regex(
@"S(?<season>\d{1,3})(?:E(?<episode>\d{1,3}))?$", RegexOptions.IgnoreCase);
public TVStore(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps) :
public TVStore(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs) :
base(id: "tvstore",
name: "TV Store",
description: "TV Store is a HUNGARIAN Private Torrent Tracker for TV",
@ -51,6 +52,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataTVstore())
{
Encoding = Encoding.UTF8;

View File

@ -27,7 +27,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataBasicLogin configData => (ConfigurationDataBasicLogin)base.configData;
public TVVault(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public TVVault(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "tvvault",
name: "TV-Vault",
description: "A TV tracker for old shows",
@ -47,6 +48,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.UTF8;

View File

@ -55,12 +55,8 @@ namespace Jackett.Common.Indexers
private static readonly Uri _ApiBaseUri = new Uri("https://apibay.org/");
public ThePirateBay(
IIndexerConfigurationService configService,
WebClient client,
Logger logger,
IProtectionService p
) : base(
public ThePirateBay(IIndexerConfigurationService configService, WebClient client, Logger logger,
IProtectionService ps, ICacheService cs) : base(
id: "thepiratebay",
name: "The Pirate Bay",
description: "Pirate Bay (TPB) is the galaxys most resilient Public BitTorrent site",
@ -87,7 +83,8 @@ namespace Jackett.Common.Indexers
configService: configService,
client: client,
logger: logger,
p: p,
p: ps,
cacheService: cs,
configData: new ConfigurationData()
)
{

View File

@ -31,7 +31,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public Toloka(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public Toloka(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "toloka",
name: "Toloka.to",
description: "Toloka is a Semi-Private Ukrainian torrent site with a thriving file-sharing community",
@ -59,6 +60,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataToloka())
{
Encoding = Encoding.UTF8;

View File

@ -31,7 +31,8 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
public TorrenTech(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l, IProtectionService ps)
public TorrenTech(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l,
IProtectionService ps, ICacheService cs)
: base(id: "torrentech",
name: "Torrentech",
description: "Torrentech (TTH) is a Private Torrent Tracker for ELECTRONIC MUSIC",
@ -47,6 +48,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay())
{
Encoding = Encoding.UTF8;

View File

@ -24,7 +24,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataBasicLogin configData => (ConfigurationDataBasicLogin)base.configData;
public TorrentBytes(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public TorrentBytes(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "torrentbytes",
name: "TorrentBytes",
description: "A decade of TorrentBytes",
@ -48,6 +49,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin("For best results, change the 'Torrents per page' setting to 100 in your profile on the TorrentBytes webpage."))
{
Encoding = Encoding.GetEncoding("iso-8859-1");

View File

@ -46,7 +46,8 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataCookie configData => (ConfigurationDataCookie)base.configData;
public TorrentDay(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
public TorrentDay(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "torrentday",
name: "TorrentDay",
description: "TorrentDay (TD) is a Private site for TV / MOVIES / GENERAL",
@ -74,6 +75,7 @@ namespace Jackett.Common.Indexers
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataCookie(
"Make sure you get the cookies from the same torrent day domain as configured above."))
{

Some files were not shown because too many files have changed in this diff Show More