mirror of https://github.com/Jackett/Jackett
Merge changes
This commit is contained in:
commit
fad2a10bef
|
@ -43,6 +43,7 @@ Download in the [Releases page](https://github.com/zone117x/Jackett/releases)
|
||||||
* [BeyondHD](https://beyondhd.me/)
|
* [BeyondHD](https://beyondhd.me/)
|
||||||
* [T411](http://www.t411.io/)
|
* [T411](http://www.t411.io/)
|
||||||
* [FrenchTorrentDb](http://www.frenchtorrentdb.com/)
|
* [FrenchTorrentDb](http://www.frenchtorrentdb.com/)
|
||||||
|
* [bB](http://reddit.com/r/baconbits)
|
||||||
|
|
||||||
|
|
||||||
### Additional Trackers
|
### Additional Trackers
|
||||||
|
|
|
@ -13,6 +13,7 @@ using System.Web.Http;
|
||||||
|
|
||||||
namespace Jackett.Controllers
|
namespace Jackett.Controllers
|
||||||
{
|
{
|
||||||
|
[AllowAnonymous]
|
||||||
public class DownloadController : ApiController
|
public class DownloadController : ApiController
|
||||||
{
|
{
|
||||||
private Logger logger;
|
private Logger logger;
|
||||||
|
|
|
@ -18,6 +18,11 @@ namespace Jackett
|
||||||
|
|
||||||
static Engine()
|
static Engine()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
TracingEnabled = true;
|
||||||
|
#endif
|
||||||
|
|
||||||
var builder = new ContainerBuilder();
|
var builder = new ContainerBuilder();
|
||||||
builder.RegisterModule<JackettModule>();
|
builder.RegisterModule<JackettModule>();
|
||||||
container = builder.Build();
|
container = builder.Build();
|
||||||
|
@ -48,8 +53,10 @@ namespace Jackett
|
||||||
return container;
|
return container;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsWindows {
|
public static bool IsWindows
|
||||||
get {
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
return Environment.OSVersion.Platform == PlatformID.Win32NT;
|
return Environment.OSVersion.Platform == PlatformID.Win32NT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,11 +29,11 @@ namespace Jackett.Indexers
|
||||||
|
|
||||||
string cookieHeader;
|
string cookieHeader;
|
||||||
|
|
||||||
public AlphaRatio(IIndexerManagerService i, Logger l):
|
public AlphaRatio(IIndexerManagerService i, Logger l)
|
||||||
base(name: "AlphaRatio",
|
: base(name: "AlphaRatio",
|
||||||
description: "Legendary",
|
description: "Legendary",
|
||||||
link: new Uri("https://alpharatio.cc"),
|
link: new Uri("https://alpharatio.cc"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -48,15 +48,16 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public AnimeBytes(IIndexerManagerService i, Logger l) :
|
public AnimeBytes(IIndexerManagerService i, Logger l)
|
||||||
base(name: "AnimeBytes",
|
: base(name: "AnimeBytes",
|
||||||
description: "The web's best Chinese cartoons",
|
description: "The web's best Chinese cartoons",
|
||||||
link: new Uri("https://animebytes.tv"),
|
link: new Uri("https://animebytes.tv"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
TorznabCaps.Categories.Clear();
|
||||||
|
TorznabCaps.Categories.Add(new TorznabCategory { ID = "5070", Name = "TV/Anime" });
|
||||||
LoginUrl = SiteLink + "/user/login";
|
LoginUrl = SiteLink + "/user/login";
|
||||||
SearchUrl = SiteLink + "/torrents.php?filter_cat[1]=1";
|
SearchUrl = SiteLink + "/torrents.php?filter_cat[1]=1";
|
||||||
|
|
||||||
|
|
|
@ -27,11 +27,11 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public BB(IIndexerManagerService i, Logger l) :
|
public BB(IIndexerManagerService i, Logger l)
|
||||||
base(name: "bB",
|
: base(name: "bB",
|
||||||
description: "bB",
|
description: "bB",
|
||||||
link: new Uri("http://www.reddit.com/r/baconbits"),
|
link: new Uri("http://www.reddit.com/r/baconbits"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
@ -68,7 +68,6 @@ namespace Jackett.Indexers
|
||||||
};
|
};
|
||||||
|
|
||||||
var content = new FormUrlEncodedContent(pairs);
|
var content = new FormUrlEncodedContent(pairs);
|
||||||
|
|
||||||
var response = await client.PostAsync(LoginUrl, content);
|
var response = await client.PostAsync(LoginUrl, content);
|
||||||
var responseContent = await response.Content.ReadAsStringAsync();
|
var responseContent = await response.Content.ReadAsStringAsync();
|
||||||
|
|
||||||
|
@ -87,8 +86,9 @@ namespace Jackett.Indexers
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
var configSaveData = new JObject();
|
var configSaveData = new JObject();
|
||||||
cookies.DumpToJson(SiteLink, configSaveData);
|
cookies.DumpToJson(BaseUrl, configSaveData);
|
||||||
SaveConfig(configSaveData);
|
SaveConfig(configSaveData);
|
||||||
IsConfigured = true;
|
IsConfigured = true;
|
||||||
}
|
}
|
||||||
|
@ -97,7 +97,7 @@ namespace Jackett.Indexers
|
||||||
|
|
||||||
public void LoadFromSavedConfiguration(JToken jsonConfig)
|
public void LoadFromSavedConfiguration(JToken jsonConfig)
|
||||||
{
|
{
|
||||||
cookies.FillFromJson(SiteLink, jsonConfig, logger);
|
cookies.FillFromJson(new Uri(BaseUrl), jsonConfig, logger);
|
||||||
IsConfigured = true;
|
IsConfigured = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,9 +16,11 @@ namespace Jackett.Indexers
|
||||||
public string DisplayDescription { get; private set; }
|
public string DisplayDescription { get; private set; }
|
||||||
public string DisplayName { get; private set; }
|
public string DisplayName { get; private set; }
|
||||||
public string ID { get { return GetIndexerID(GetType()); } }
|
public string ID { get { return GetIndexerID(GetType()); } }
|
||||||
|
|
||||||
public bool IsConfigured { get; protected set; }
|
public bool IsConfigured { get; protected set; }
|
||||||
public Uri SiteLink { get; private set; }
|
public Uri SiteLink { get; private set; }
|
||||||
public bool RequiresRageIDLookupDisabled { get; private set; }
|
|
||||||
|
public TorznabCapabilities TorznabCaps { get; private set; }
|
||||||
|
|
||||||
protected Logger logger;
|
protected Logger logger;
|
||||||
protected IIndexerManagerService indexerService;
|
protected IIndexerManagerService indexerService;
|
||||||
|
@ -31,14 +33,14 @@ namespace Jackett.Indexers
|
||||||
return StringUtil.StripNonAlphaNumeric(type.Name.ToLowerInvariant());
|
return StringUtil.StripNonAlphaNumeric(type.Name.ToLowerInvariant());
|
||||||
}
|
}
|
||||||
|
|
||||||
public BaseIndexer(string name, string description, bool rageid, Uri link, IIndexerManagerService manager, Logger logger)
|
public BaseIndexer(string name, string description, Uri link, TorznabCapabilities caps, IIndexerManagerService manager, Logger logger)
|
||||||
{
|
{
|
||||||
DisplayName = name;
|
DisplayName = name;
|
||||||
DisplayDescription = description;
|
DisplayDescription = description;
|
||||||
SiteLink = link;
|
SiteLink = link;
|
||||||
|
TorznabCaps = caps;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
indexerService = manager;
|
indexerService = manager;
|
||||||
RequiresRageIDLookupDisabled = rageid;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void SaveConfig(JToken config)
|
protected void SaveConfig(JToken config)
|
||||||
|
|
|
@ -24,11 +24,11 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public BeyondHD(IIndexerManagerService i, Logger l) :
|
public BeyondHD(IIndexerManagerService i, Logger l)
|
||||||
base(name: "BeyondHD",
|
: base(name: "BeyondHD",
|
||||||
description: "Without BeyondHD, your HDTV is just a TV",
|
description: "Without BeyondHD, your HDTV is just a TV",
|
||||||
link: new Uri("https://beyondhd.me"),
|
link: new Uri("https://beyondhd.me"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,11 +26,11 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public BitHdtv(IIndexerManagerService i, Logger l) :
|
public BitHdtv(IIndexerManagerService i, Logger l)
|
||||||
base(name: "BIT-HDTV",
|
: base(name: "BIT-HDTV",
|
||||||
description: "Home of high definition invites",
|
description: "Home of high definition invites",
|
||||||
link: new Uri("https://www.bit-hdtv.com"),
|
link: new Uri("https://www.bit-hdtv.com"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -52,11 +52,11 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public BitMeTV(IIndexerManagerService i, Logger l) :
|
public BitMeTV(IIndexerManagerService i, Logger l)
|
||||||
base(name: "BitMeTV",
|
: base(name: "BitMeTV",
|
||||||
description: "TV Episode specialty tracker",
|
description: "TV Episode specialty tracker",
|
||||||
link: new Uri("http://www.bitmetv.org"),
|
link: new Uri("http://www.bitmetv.org"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -45,11 +45,11 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public FrenchTorrentDb(IIndexerManagerService i, Logger l) :
|
public FrenchTorrentDb(IIndexerManagerService i, Logger l)
|
||||||
base(name: "FrenchTorrentDb",
|
: base(name: "FrenchTorrentDb",
|
||||||
description: "One the biggest French Torrent Tracker",
|
description: "One the biggest French Torrent Tracker",
|
||||||
link: new Uri("http://www.frenchtorrentdb.com/"),
|
link: new Uri("http://www.frenchtorrentdb.com/"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -29,11 +29,11 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public Freshon(IIndexerManagerService i, Logger l) :
|
public Freshon(IIndexerManagerService i, Logger l)
|
||||||
base(name: "FreshOnTV",
|
: base(name: "FreshOnTV",
|
||||||
description: "Our goal is to provide the latest stuff in the TV show domain",
|
description: "Our goal is to provide the latest stuff in the TV show domain",
|
||||||
link: new Uri("https://www.bit-hdtv.com"),
|
link: new Uri("https://www.bit-hdtv.com"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,11 +26,11 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public HDTorrents(IIndexerManagerService i, Logger l) :
|
public HDTorrents(IIndexerManagerService i, Logger l)
|
||||||
base(name: "HD-Torrents",
|
: base(name: "HD-Torrents",
|
||||||
description: "HD-Torrents is a private torrent website with HD torrents and strict rules on their content.",
|
description: "HD-Torrents is a private torrent website with HD torrents and strict rules on their content.",
|
||||||
link: new Uri("http://hdts.ru"),// Of the accessible domains the .ru seems the most reliable. https://hdts.ru | https://hd-torrents.org | https://hd-torrents.net | https://hd-torrents.me
|
link: new Uri("http://hdts.ru"),// Of the accessible domains the .ru seems the most reliable. https://hdts.ru | https://hd-torrents.org | https://hd-torrents.net | https://hd-torrents.me
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace Jackett.Indexers
|
||||||
|
|
||||||
Uri SiteLink { get; }
|
Uri SiteLink { get; }
|
||||||
|
|
||||||
bool RequiresRageIDLookupDisabled { get; }
|
TorznabCapabilities TorznabCaps { get; }
|
||||||
|
|
||||||
// Whether this indexer has been configured, verified and saved in the past and has the settings required for functioning
|
// Whether this indexer has been configured, verified and saved in the past and has the settings required for functioning
|
||||||
bool IsConfigured { get; }
|
bool IsConfigured { get; }
|
||||||
|
|
|
@ -23,11 +23,11 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public IPTorrents(IIndexerManagerService i, Logger l) :
|
public IPTorrents(IIndexerManagerService i, Logger l)
|
||||||
base(name: "IPTorrents",
|
: base(name: "IPTorrents",
|
||||||
description: "Always a step ahead.",
|
description: "Always a step ahead.",
|
||||||
link: new Uri("https://iptorrents.com"),
|
link: new Uri("https://iptorrents.com"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,11 +30,11 @@ namespace Jackett.Indexers
|
||||||
string cookieHeader;
|
string cookieHeader;
|
||||||
int retries = 3;
|
int retries = 3;
|
||||||
|
|
||||||
public MoreThanTV(IIndexerManagerService i, Logger l) :
|
public MoreThanTV(IIndexerManagerService i, Logger l)
|
||||||
base(name: "MoreThanTV",
|
: base(name: "MoreThanTV",
|
||||||
description: "ROMANIAN Private Torrent Tracker for TV / MOVIES, and the internal tracker for the release group DRACULA.",
|
description: "ROMANIAN Private Torrent Tracker for TV / MOVIES, and the internal tracker for the release group DRACULA.",
|
||||||
link: new Uri("https://www.morethan.tv"),
|
link: new Uri("https://www.morethan.tv"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,11 +27,11 @@ namespace Jackett.Indexers
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
|
|
||||||
public Rarbg(IIndexerManagerService i, Logger l) :
|
public Rarbg(IIndexerManagerService i, Logger l)
|
||||||
base(name: "RARBG",
|
: base(name: "RARBG",
|
||||||
description: "RARBG",
|
description: "RARBG",
|
||||||
link: new Uri("https://rarbg.com"),
|
link: new Uri("https://rarbg.com"),
|
||||||
rageid: false,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -24,11 +24,11 @@ namespace Jackett.Indexers
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
string cookieHeader;
|
string cookieHeader;
|
||||||
|
|
||||||
public SceneAccess(IIndexerManagerService i, Logger l) :
|
public SceneAccess(IIndexerManagerService i, Logger l)
|
||||||
base(name: "SceneAccess",
|
: base(name: "SceneAccess",
|
||||||
description: "Your gateway to the scene",
|
description: "Your gateway to the scene",
|
||||||
link: new Uri("https://sceneaccess.eu"),
|
link: new Uri("https://sceneaccess.eu"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,11 +26,11 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public SceneTime(IIndexerManagerService i, Logger l) :
|
public SceneTime(IIndexerManagerService i, Logger l)
|
||||||
base(name: "SceneTime",
|
: base(name: "SceneTime",
|
||||||
description: "Always on time",
|
description: "Always on time",
|
||||||
link: new Uri("https://www.scenetime.com"),
|
link: new Uri("https://www.scenetime.com"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,11 +25,11 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public ShowRSS(IIndexerManagerService i, Logger l) :
|
public ShowRSS(IIndexerManagerService i, Logger l)
|
||||||
base(name: "ShowRSS",
|
: base(name: "ShowRSS",
|
||||||
description: "showRSS is a service that allows you to keep track of your favorite TV shows",
|
description: "showRSS is a service that allows you to keep track of your favorite TV shows",
|
||||||
link: new Uri("http://showrss.info"),
|
link: new Uri("http://showrss.info"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -29,11 +29,11 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public SpeedCD(IIndexerManagerService i, Logger l) :
|
public SpeedCD(IIndexerManagerService i, Logger l)
|
||||||
base(name: "Speed.cd",
|
: base(name: "Speed.cd",
|
||||||
description: "Your home now!",
|
description: "Your home now!",
|
||||||
link: new Uri("http://speed.cd"),
|
link: new Uri("http://speed.cd"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,11 +25,11 @@ namespace Jackett.Indexers
|
||||||
private HttpClientHandler handler;
|
private HttpClientHandler handler;
|
||||||
private HttpClient client;
|
private HttpClient client;
|
||||||
|
|
||||||
public Strike(IIndexerManagerService i, Logger l) :
|
public Strike(IIndexerManagerService i, Logger l)
|
||||||
base(name: "Strike",
|
: base(name: "Strike",
|
||||||
description: "Torrent search engine",
|
description: "Torrent search engine",
|
||||||
link: new Uri("https://getstrike.net"),
|
link: new Uri("https://getstrike.net"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,11 +32,11 @@ namespace Jackett.Indexers
|
||||||
string token = string.Empty;
|
string token = string.Empty;
|
||||||
DateTime lastTokenFetch = DateTime.MinValue;
|
DateTime lastTokenFetch = DateTime.MinValue;
|
||||||
|
|
||||||
public T411(IIndexerManagerService i, Logger l) :
|
public T411(IIndexerManagerService i, Logger l)
|
||||||
base(name: "T411",
|
: base(name: "T411",
|
||||||
description: "French Torrent Tracker",
|
description: "French Torrent Tracker",
|
||||||
link: new Uri("http://www.t411.io"),
|
link: new Uri("http://www.t411.io"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,11 +26,11 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public ThePirateBay(IIndexerManagerService i, Logger l) :
|
public ThePirateBay(IIndexerManagerService i, Logger l)
|
||||||
base(name: "The Pirate Bay",
|
: base(name: "The Pirate Bay",
|
||||||
description: "The worlds largest bittorrent indexer",
|
description: "The worlds largest bittorrent indexer",
|
||||||
link: new Uri("https://thepiratebay.mn"),
|
link: new Uri("https://thepiratebay.mn"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,11 +26,11 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public TorrentDay(IIndexerManagerService i, Logger l) :
|
public TorrentDay(IIndexerManagerService i, Logger l)
|
||||||
base(name: "TorrentDay",
|
: base(name: "TorrentDay",
|
||||||
description: "TorrentDay",
|
description: "TorrentDay",
|
||||||
link: new Uri("https://torrentday.eu"),
|
link: new Uri("https://torrentday.eu"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,11 +25,11 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public TorrentLeech(IIndexerManagerService i, Logger l) :
|
public TorrentLeech(IIndexerManagerService i, Logger l)
|
||||||
base(name: "TorrentLeech",
|
: base(name: "TorrentLeech",
|
||||||
description: "This is what happens when you seed",
|
description: "This is what happens when you seed",
|
||||||
link: new Uri("http://www.torrentleech.org"),
|
link: new Uri("http://www.torrentleech.org"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,11 +25,11 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public TorrentShack(IIndexerManagerService i, Logger l) :
|
public TorrentShack(IIndexerManagerService i, Logger l)
|
||||||
base(name: "TorrentShack",
|
: base(name: "TorrentShack",
|
||||||
description: "TorrentShack",
|
description: "TorrentShack",
|
||||||
link: new Uri("http://torrentshack.me"),
|
link: new Uri("http://torrentshack.me"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -24,11 +24,11 @@ namespace Jackett.Indexers
|
||||||
HttpClientHandler handler;
|
HttpClientHandler handler;
|
||||||
HttpClient client;
|
HttpClient client;
|
||||||
|
|
||||||
public Torrentz(IIndexerManagerService i, Logger l) :
|
public Torrentz(IIndexerManagerService i, Logger l)
|
||||||
base(name: "Torrentz",
|
: base(name: "Torrentz",
|
||||||
description: "Torrentz is a meta-search engine and a Multisearch. This means we just search other search engines.",
|
description: "Torrentz is a meta-search engine and a Multisearch. This means we just search other search engines.",
|
||||||
link: new Uri("https://torrentz.eu"),
|
link: new Uri("https://torrentz.eu"),
|
||||||
rageid: true,
|
caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
|
||||||
manager: i,
|
manager: i,
|
||||||
logger: l)
|
logger: l)
|
||||||
{
|
{
|
||||||
|
|
|
@ -156,7 +156,9 @@
|
||||||
<Compile Include="Indexers\BaseIndexer.cs" />
|
<Compile Include="Indexers\BaseIndexer.cs" />
|
||||||
<Compile Include="Indexers\BB.cs" />
|
<Compile Include="Indexers\BB.cs" />
|
||||||
<Compile Include="Indexers\SpeedCD.cs" />
|
<Compile Include="Indexers\SpeedCD.cs" />
|
||||||
|
<Compile Include="Models\TorznabCapabilities.cs" />
|
||||||
<Compile Include="Models\Config\ServerConfig.cs" />
|
<Compile Include="Models\Config\ServerConfig.cs" />
|
||||||
|
<Compile Include="Models\TorznabCategory.cs" />
|
||||||
<Compile Include="Services\ProcessService.cs" />
|
<Compile Include="Services\ProcessService.cs" />
|
||||||
<Compile Include="Services\SecuityService.cs" />
|
<Compile Include="Services\SecuityService.cs" />
|
||||||
<Compile Include="Services\SerializeService.cs" />
|
<Compile Include="Services\SerializeService.cs" />
|
||||||
|
@ -216,6 +218,7 @@
|
||||||
<Compile Include="CurlHelper.cs" />
|
<Compile Include="CurlHelper.cs" />
|
||||||
<Compile Include="Indexers\AlphaRatio.cs" />
|
<Compile Include="Indexers\AlphaRatio.cs" />
|
||||||
<Compile Include="Utils\StringUtil.cs" />
|
<Compile Include="Utils\StringUtil.cs" />
|
||||||
|
<Compile Include="Utils\TorznabCapsUtil.cs" />
|
||||||
<Compile Include="Utils\WebApiRootRedirectMiddleware.cs" />
|
<Compile Include="Utils\WebApiRootRedirectMiddleware.cs" />
|
||||||
<Compile Include="Utils\WebAPIRequestLogger.cs" />
|
<Compile Include="Utils\WebAPIRequestLogger.cs" />
|
||||||
<Compile Include="Utils\WebAPIToNLogTracer.cs" />
|
<Compile Include="Utils\WebAPIToNLogTracer.cs" />
|
||||||
|
|
|
@ -19,14 +19,23 @@ namespace Jackett.Models.Config
|
||||||
public string APIKey { get; set; }
|
public string APIKey { get; set; }
|
||||||
public string AdminPassword { get; set; }
|
public string AdminPassword { get; set; }
|
||||||
|
|
||||||
public string GetListenAddress(bool? external = null)
|
public string[] GetListenAddresses(bool? external = null)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (external == null)
|
if (external == null)
|
||||||
{
|
{
|
||||||
external = AllowExternal;
|
external = AllowExternal;
|
||||||
}
|
}
|
||||||
return "http://" + (external.Value ? "*" : "localhost") + ":" + Port + "/";
|
if (external.Value)
|
||||||
|
{
|
||||||
|
return new string[] { "http://*:" + Port + "/" };
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return new string[] {
|
||||||
|
"http://127.0.0.1:" + Port + "/",
|
||||||
|
"http://localhost:" + Port + "/",
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GenerateApi()
|
public string GenerateApi()
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
|
namespace Jackett.Models
|
||||||
|
{
|
||||||
|
public class TorznabCapabilities
|
||||||
|
{
|
||||||
|
|
||||||
|
public bool SearchAvailable { get; set; }
|
||||||
|
|
||||||
|
public bool TVSearchAvailable { get; set; }
|
||||||
|
|
||||||
|
public bool SupportsTVRageSearch { get; set; }
|
||||||
|
|
||||||
|
public List<TorznabCategory> Categories { get; private set; }
|
||||||
|
|
||||||
|
public TorznabCapabilities()
|
||||||
|
{
|
||||||
|
Categories = new List<TorznabCategory>();
|
||||||
|
}
|
||||||
|
|
||||||
|
string SupportedTVSearchParams
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var parameters = new List<string>() { "q", "season", "ep" };
|
||||||
|
if (SupportsTVRageSearch)
|
||||||
|
parameters.Add("rid");
|
||||||
|
return string.Join(",", parameters);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ToXml()
|
||||||
|
{
|
||||||
|
var xdoc = new XDocument(
|
||||||
|
new XDeclaration("1.0", "UTF-8", null),
|
||||||
|
new XElement("caps",
|
||||||
|
new XElement("searching",
|
||||||
|
new XElement("search",
|
||||||
|
new XAttribute("available", SearchAvailable ? "yes" : "no"),
|
||||||
|
new XAttribute("supportedParams", "q")
|
||||||
|
),
|
||||||
|
new XElement("tv-search",
|
||||||
|
new XAttribute("available", TVSearchAvailable ? "yes" : "no"),
|
||||||
|
new XAttribute("supportedParams", SupportedTVSearchParams)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
new XElement("categories",
|
||||||
|
from c in Categories
|
||||||
|
select new XElement("category",
|
||||||
|
new XAttribute("id", c.ID),
|
||||||
|
new XAttribute("name", c.Name),
|
||||||
|
from sc in c.SubCategories
|
||||||
|
select new XElement("subcat",
|
||||||
|
new XAttribute("id", sc.ID),
|
||||||
|
new XAttribute("name", sc.Name)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
return xdoc.Declaration.ToString() + Environment.NewLine + xdoc.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Jackett.Models
|
||||||
|
{
|
||||||
|
public class TorznabCategory
|
||||||
|
{
|
||||||
|
public string ID { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
public List<TorznabCategory> SubCategories { get; private set; }
|
||||||
|
|
||||||
|
public TorznabCategory()
|
||||||
|
{
|
||||||
|
SubCategories = new List<TorznabCategory>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -18,7 +18,6 @@ namespace Jackett.Models
|
||||||
public int Limit { get; private set; }
|
public int Limit { get; private set; }
|
||||||
public int Offset { get; private set; }
|
public int Offset { get; private set; }
|
||||||
public int RageID { get; private set; }
|
public int RageID { get; private set; }
|
||||||
public bool RageIDLookupEnabled { get; private set; }
|
|
||||||
|
|
||||||
public int Season { get; private set; }
|
public int Season { get; private set; }
|
||||||
public string Episode { get; private set; }
|
public string Episode { get; private set; }
|
||||||
|
@ -73,8 +72,6 @@ namespace Jackett.Models
|
||||||
q.SanitizedSearchTerm = SanitizeSearchTerm(q.SearchTerm);
|
q.SanitizedSearchTerm = SanitizeSearchTerm(q.SearchTerm);
|
||||||
}
|
}
|
||||||
|
|
||||||
q.RageIDLookupEnabled = query["rid_enabled"] != "0";
|
|
||||||
|
|
||||||
if (query["cat"] != null)
|
if (query["cat"] != null)
|
||||||
{
|
{
|
||||||
q.Categories = query["cat"].Split(',');
|
q.Categories = query["cat"].Split(',');
|
||||||
|
|
|
@ -111,20 +111,22 @@ namespace Jackett.Services
|
||||||
indexerService.InitIndexers();
|
indexerService.InitIndexers();
|
||||||
|
|
||||||
// Start the server
|
// Start the server
|
||||||
logger.Debug("Starting web server at " + config.GetListenAddress());
|
logger.Debug("Starting web server at " + config.GetListenAddresses()[0]);
|
||||||
_server = WebApp.Start<Startup>(url: config.GetListenAddress());
|
var startOptions = new StartOptions();
|
||||||
|
config.GetListenAddresses().ToList().ForEach(u => startOptions.Urls.Add(u));
|
||||||
|
_server = WebApp.Start<Startup>(startOptions);
|
||||||
logger.Debug("Web server started");
|
logger.Debug("Web server started");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ReserveUrls(bool doInstall = true)
|
public void ReserveUrls(bool doInstall = true)
|
||||||
{
|
{
|
||||||
logger.Debug("Unreserving Urls");
|
logger.Debug("Unreserving Urls");
|
||||||
RunNetSh(string.Format("http delete urlacl {0}", config.GetListenAddress(false)));
|
config.GetListenAddresses(false).ToList().ForEach(u => RunNetSh(string.Format("http delete urlacl {0}", u)));
|
||||||
RunNetSh(string.Format("http delete urlacl {0}", config.GetListenAddress(true)));
|
config.GetListenAddresses(true).ToList().ForEach(u => RunNetSh(string.Format("http delete urlacl {0}", u)));
|
||||||
if (doInstall)
|
if (doInstall)
|
||||||
{
|
{
|
||||||
logger.Debug("Reserving Urls");
|
logger.Debug("Reserving Urls");
|
||||||
RunNetSh(string.Format("http add urlacl {0} sddl=D:(A;;GX;;;S-1-1-0)", config.GetListenAddress()));
|
config.GetListenAddresses(true).ToList().ForEach(u => RunNetSh(string.Format("http add urlacl {0} sddl=D:(A;;GX;;;S-1-1-0)", u)));
|
||||||
logger.Debug("Urls reserved");
|
logger.Debug("Urls reserved");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
using Jackett.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Jackett.Utils
|
||||||
|
{
|
||||||
|
public static class TorznabCapsUtil
|
||||||
|
{
|
||||||
|
public static TorznabCapabilities CreateDefaultTorznabTVCaps()
|
||||||
|
{
|
||||||
|
var caps = new TorznabCapabilities();
|
||||||
|
caps.SearchAvailable = true;
|
||||||
|
caps.TVSearchAvailable = true;
|
||||||
|
caps.SupportsTVRageSearch = false;
|
||||||
|
caps.Categories.AddRange(new[] {
|
||||||
|
new TorznabCategory { ID = "5000", Name = "TV" },
|
||||||
|
new TorznabCategory { ID = "5030", Name = "TV/SD" },
|
||||||
|
new TorznabCategory { ID = "5040", Name = "TV/HD" }
|
||||||
|
});
|
||||||
|
return caps;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue