Compare commits

...

73 Commits

Author SHA1 Message Date
flightlevel
ec985a2318 Use custom certificate validation handler for httpclient2netcore
https://github.com/Jackett/Jackett/issues/5172
2019-05-04 16:18:25 +10:00
Scott Cooper
d7c09e62bd tapochek: more categories corrections (#5178)
* move comma
2019-05-04 17:59:13 +12:00
flightlevel
2eb54165ac Update proxy message
https://github.com/Jackett/Jackett/issues/4862
2019-05-04 15:58:15 +10:00
flightlevel
5bad47d327 Fix install link
Fixes #5171
2019-05-04 15:52:14 +10:00
Garfield69
8900aea849 Update README.md 2019-05-04 09:28:39 +12:00
Garfield69
85ea6e5a2b Merge branch 'master' of https://github.com/Jackett/Jackett 2019-05-04 09:26:52 +12:00
Garfield69
c69b213376 Update README.md 2019-05-04 09:26:33 +12:00
James
992d2776d3 broadcastthenet: Season Search enhancement (#5174)
- If only a season is searched, format it in a way expected by the indexer
2019-05-04 07:54:30 +12:00
Garfield69
ff62b775db solidtorrents: selectors changed
use non truncated title
add grabs
rework seed leech size
2019-05-03 08:47:03 +12:00
capitre
19b608c529 vizuk: update volumefactors and minseedtime (#5170) 2019-05-03 07:26:45 +12:00
Garfield69
1f9d95355d tapochek: corrention for a couple categories 2019-05-02 20:59:06 +12:00
Garfield69
849d1aeef9 add tapochek a private Russian forum. resolves #4971 2019-05-02 20:37:48 +12:00
Garfield69
08b187bfa1 nnm-club: new domain 2019-05-02 07:49:42 +12:00
snamds
d8b4ad7f39 Newpct: correct Category filter. resolves #5121 (#5163)
Some categories were not well filtered
2019-05-02 07:15:45 +12:00
flightlevel
02546877fd Inform Mono users that Mono is no longer required 2019-05-01 20:15:26 +10:00
Garfield69
52fad1e6d2 shareisland: new layout resolves #5150 2019-04-30 12:19:59 +12:00
Garfield69
049e678b0a tntvillage: add header for search post. resolves #5131 2019-04-30 08:20:21 +12:00
flightlevel
4edcda8351 Make httpclient2netcore the default 2019-04-29 20:30:27 +10:00
Garfield69
01994bf9f5 shareisland: cat updates 2019-04-28 09:12:25 +12:00
flightlevel
0d4c8ba860 Inform users that Mono is no longer needed
Note: Not enabled currently, will enable at a later date
2019-04-27 20:59:33 +10:00
flightlevel
fad453cf0e Add httpclient2netcore 2019-04-27 20:27:11 +10:00
Jorman
222fcde0a3 shareisland revert previous download link changes (#5137)
Revert last change, site changed again the download decision. I commented out the code ... just in case
2019-04-27 19:02:10 +12:00
Jorman
6aa42263be shareisland: followup #5129 (#5130)
The download now works, thanks @garfield69
2019-04-26 19:36:25 +12:00
Jorman
ec036d70f9 shareisland: download link update (#5129)
Update download selector
2019-04-26 18:58:03 +12:00
Garfield69
db300f5ae9 skytorrentclone: restore magnets only option. #4542 2019-04-25 07:09:25 +12:00
Garfield69
1d224b6db9 casatorrent: new domain #4911 2019-04-24 16:21:35 +12:00
Garfield69
a3e97bb050 amigosshare: new results layout 2019-04-23 19:21:57 +12:00
Garfield69
e5827c3456 megabliz: set as private 2019-04-22 17:28:50 +12:00
Garfield69
27d2b6caae kikibt: drop .cc domain, only using .pw now. 2019-04-22 08:32:58 +12:00
Garfield69
bcdc1879d9 btkitty: new domain 2019-04-22 08:28:37 +12:00
Garfield69
a8999e8276 torrentkitty: new domain 2019-04-22 08:20:31 +12:00
Garfield69
4c2db157e9 torrent9clone: back to .lol
same as gktorrent?
2019-04-21 17:34:35 +12:00
Garfield69
10a46bac48 gktorrent: back to .net
whats the f'ing point of yo-yo'ing from .tv to .net and back again?
2019-04-21 17:18:02 +12:00
Garfield69
7d6b282039 Revert "RarBG: bump requestDelay to 2.2 for #5107"
This reverts commit f6bb9ca263.
2019-04-21 15:28:19 +12:00
Garfield69
f6bb9ca263 RarBG: bump requestDelay to 2.2 for #5107 2019-04-21 10:50:34 +12:00
Garfield69
11e8d4d290 custom.js: ensure url len <= 2k resolves #5104
https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers
2019-04-21 09:52:09 +12:00
Peter Zsak
c88a213b2e insanetracker: new login.php page (#5105) 2019-04-21 08:03:55 +12:00
Garfield69
4295e65dfe skytorrentsclone: back to .lol domain
the .to domain redirects to BTDB

turns out .to was a completely different site than .lol and not an alternate as first thought.
changes made for .to have been reversed.
.lol uses query parm for search,
and itorrents.org for dl links
2019-04-19 18:04:40 +12:00
Garfield69
8151fbf382 add concen a public conspiracy torrent tracker. resolves #5097 2019-04-19 16:04:27 +12:00
flightlevel
709cafda62 Enable workstation garbage collection
Attempting to limit the amount of memory used by Jackett for users with high core CPUs  https://blog.markvincze.com/troubleshooting-high-memory-usage-with-asp-net-core-on-kubernetes/
2019-04-19 11:41:47 +10:00
Garfield69
13a1cd3ab7 Merge branch 'master' of https://github.com/Jackett/Jackett 2019-04-19 11:35:32 +12:00
Garfield69
7c0fd1233f index.html: shortcut favicon update. resolves #5095
stupid firefox
nothing wrong with the previous version of the link wihch works fine on chrome
but firefox won't show it, something to do with cache or other crap.
adding a ? solves, so what the heck.
2019-04-19 11:35:29 +12:00
Ellmout
bdc592edfd Sharewood: Add Grabs, Freeleech, and Double Upload (#5087) 2019-04-17 19:30:30 +12:00
Garfield69
f2baa8f43c hdtorrents: attempt to handle mederator profile. #5065
clean up  imdbid logic
sometimes grabs is missing
bump selector count by 4 for mederator's extra links
2019-04-17 12:22:26 +12:00
Garfield69
9274a26a0e ettv: new domain .to 2019-04-16 07:23:07 +12:00
Garfield69
3a7608317f shelllife: oops. resolves #5074 2019-04-15 08:17:53 +12:00
Garfield69
67ea8db2da xwtorrents: add optional seedbox dl resolves #5071 2019-04-14 16:35:36 +12:00
flightlevel
40b0cdffc3 Reduce cache size 2019-04-14 11:59:48 +10:00
kaso17
2f96ffa15d TorrentHeaven: add certificate hash 2019-04-13 15:52:00 +02:00
kaso17
8086b221ec remove GODs (dead) 2019-04-12 17:32:43 +02:00
Garfield69
bf25db7c5f losslessclub: add music-search 2019-04-12 07:42:59 +12:00
Garfield69
dfa6529e58 trancetraffic: add music-search 2019-04-12 07:40:56 +12:00
Garfield69
c3603014ca shelllife: add music-search 2019-04-12 07:38:54 +12:00
Garfield69
4bf6393b6e jpopsuki: add music-search 2019-04-12 07:34:02 +12:00
Garfield69
c57231206f funkytorrents: add music-search 2019-04-12 07:28:08 +12:00
Garfield69
b4a8174a6b fullmixmusic: add music-search 2019-04-12 07:25:58 +12:00
Garfield69
8722cb8061 readme: add lidarr mention 2019-04-12 07:17:06 +12:00
Garfield69
03105455fb casstudio: new domain .tk resolves #5060 2019-04-12 07:10:46 +12:00
Garfield69
3e0bc22459 soundpark: add music-search #5022 2019-04-12 07:06:45 +12:00
Garfield69
d8746032ca remove hdplus. its gone. #4843 2019-04-11 09:28:34 +12:00
Garfield69
a1832997b3 gktorrent: back to .tv
like a yo yo
2019-04-11 09:13:39 +12:00
Garfield69
4d3ebab00c torrent9clone: new domain 2019-04-11 09:09:34 +12:00
Garfield69
5f110e2691 kikibt: new domain 2019-04-11 08:59:54 +12:00
Garfield69
060efffc7e tigers-dl: changes to their search results
build download link as its been dropped
shift all the other selectors as a result fot he dl-link being dropped
2019-04-11 08:31:11 +12:00
Garfield69
c27ed6fd41 add torrents-local, a Russian semi-Private tracker. resolves #5049 2019-04-10 17:24:28 +12:00
Garfield69
8edfb79a3e remove crazyhd yml #5043 2019-04-10 15:57:10 +12:00
Garfield69
eef0d55776 Revert "add crazyhd a Bangladeshi private tracker. resolves #5043"
This reverts commit d99de43309.
2019-04-10 15:55:20 +12:00
Garfield69
79a3d07d09 torrent9: new domain 2019-04-10 08:51:08 +12:00
Garfield69
d44408c988 add focusx a Russian Public site. Resolves #5045 2019-04-09 16:01:37 +12:00
Garfield69
d99de43309 add crazyhd a Bangladeshi private tracker. resolves #5043 2019-04-09 08:44:56 +12:00
Garfield69
eaa562a20a torrentproject2: update row selector 2019-04-09 08:02:03 +12:00
Garfield69
b124ba469f torrent9clone: new domain 2019-04-09 06:59:25 +12:00
flightlevel
d002382883 Updater: remove jackett executable
#5022
2019-04-08 20:32:08 +10:00
53 changed files with 2360 additions and 482 deletions

View File

@@ -9,7 +9,7 @@
This project is a new fork and is recruiting development help. If you are able to help out please contact us.
Jackett works as a proxy server: it translates queries from apps ([Sonarr](https://github.com/Sonarr/Sonarr), [Radarr](https://github.com/Radarr/Radarr), [SickRage](https://sickrage.github.io/), [CouchPotato](https://couchpota.to/), [Mylar](https://github.com/evilhero/mylar), [DuckieTV](https://github.com/SchizoDuckie/DuckieTV), [qBittorrent](https://www.qbittorrent.org/), [Nefarious](https://github.com/lardbit/nefarious) etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps.
Jackett works as a proxy server: it translates queries from apps ([Sonarr](https://github.com/Sonarr/Sonarr), [Radarr](https://github.com/Radarr/Radarr), [SickRage](https://sickrage.github.io/), [CouchPotato](https://couchpota.to/), [Mylar](https://github.com/evilhero/mylar), [Lidarr](https://github.com/lidarr/lidarr), [DuckieTV](https://github.com/SchizoDuckie/DuckieTV), [qBittorrent](https://www.qbittorrent.org/), [Nefarious](https://github.com/lardbit/nefarious) etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps.
Developer note: The software implements the [Torznab](https://github.com/Sonarr/Sonarr/wiki/Implementing-a-Torznab-indexer) (with [nZEDb](https://github.com/nZEDb/nZEDb/blob/dev/docs/newznab_api_specification.txt) category numbering) and [TorrentPotato](https://github.com/RuudBurger/CouchPotatoServer/wiki/Couchpotato-torrent-provider) APIs.
@@ -31,6 +31,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* BTDB
* BTDigg
* BTKitty
* ConCen
* cpasbien
* cpasbienClone
* DIGBT
@@ -96,7 +97,6 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* GDF76
* Kinozal
* LostFilm.tv
* Mega-Bliz
* Metal Tracker
* MVGroup Forum
* MVGroup Main
@@ -108,6 +108,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* Sharewood
* SkTorrent
* SoundPark
* Torrents-Local
* Union Fansub
* Vanila
* XtreMeZone (MYXZ)
@@ -201,6 +202,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* FANO.IN
* FileList (FL)
* Femdomcult
* FocusX
* Freedom-HD (Freedom Paradise)
* FreeTorrent
* FullMixMusic
@@ -214,7 +216,6 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* GigaTorrents
* GimmePeers (formerly ILT) <!-- maintained by jamesb2147 -->
* GiroTorrent
* GODS
* Greek Team
* HacheDe
* Hardbay
@@ -232,7 +233,6 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* HDCity
* HDHome (HDBigger)
* HDME
* HDplus
* HDSky
* HDTorrents.it
* Hebits
@@ -256,6 +256,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* Magico (Trellas)
* Majomparádé (TurkDepo)
* Manicomio Share
* Mega-Bliz
* Mononoké-BT
* MoreThanTV (MTV)
* MyAnonamouse (MAM)
@@ -318,6 +319,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* SportsCult
* SuperBits (SBS)
* TakeaByte
* Tapochek
* Tasmanit
* TBPlus
* TenYardTorrents (TYT)
@@ -414,7 +416,8 @@ Jackett can also be run from the command line if you would like to see log messa
On most operating systems all the required dependencies will already be present. In case they are not, you can refer to this page https://docs.microsoft.com/en-us/dotnet/core/linux-prerequisites?tabs=netcore2x#linux-distribution-dependencies
### Install as service
To install Jackett as a service, open the Terminal and run `sudo ./install_service_systemd.sh` You need root permissions to install the service. The service will start on each logon. You can always stop it by running `systemctl stop jackett.service` from Terminal. You can start it again it using `systemctl start jackett.service`. Logs are stored as usual under `~/.config/Jackett/log.txt` and also in `journalctl -u jackett.service`.
1. Download and extract the latest `Jackett.Binaries.LinuxAMDx64.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases)
2. To install Jackett as a service, open the Terminal and run `sudo ./install_service_systemd.sh` You need root permissions to install the service. The service will start on each logon. You can always stop it by running `systemctl stop jackett.service` from Terminal. You can start it again it using `systemctl start jackett.service`. Logs are stored as usual under `~/.config/Jackett/log.txt` and also in `journalctl -u jackett.service`.
### Run without installing as a service
Download and extract the latest `Jackett.Binaries.LinuxAMDx64.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases) and run Jackett with the command `./jackett`
@@ -427,7 +430,8 @@ If you want to run it with a user without a /home directory you need to add `Env
On most operating systems all the required dependencies will already be present. In case they are not, you can refer to this page https://docs.microsoft.com/en-us/dotnet/core/linux-prerequisites?tabs=netcore2x#linux-distribution-dependencies
### Install as service
To install Jackett as a service, open the Terminal and run `sudo ./install_service_systemd.sh` You need root permissions to install the service. The service will start on each logon. You can always stop it by running `systemctl stop jackett.service` from Terminal. You can start it again it using `systemctl start jackett.service`. Logs are stored as usual under `~/.config/Jackett/log.txt` and also in `journalctl -u jackett.service`.
1. Download and extract the latest `Jackett.Binaries.LinuxARM32.tar.gz` or `Jackett.Binaries.LinuxARM64.tar.gz` (32 bit is the most common on ARM) release from the [releases page](https://github.com/Jackett/Jackett/releases)
2. To install Jackett as a service, open the Terminal and run `sudo ./install_service_systemd.sh` You need root permissions to install the service. The service will start on each logon. You can always stop it by running `systemctl stop jackett.service` from Terminal. You can start it again it using `systemctl start jackett.service`. Logs are stored as usual under `~/.config/Jackett/log.txt` and also in `journalctl -u jackett.service`.
### Run without installing as a service
Download and extract the latest `Jackett.Binaries.LinuxARM32.tar.gz` or `Jackett.Binaries.LinuxARM64.tar.gz` (32 bit is the most common on ARM) release from the [releases page](https://github.com/Jackett/Jackett/releases) and run Jackett with the command `./jackett`

View File

@@ -94,6 +94,10 @@ function loadJackettSettings() {
$("#logoutBtn").show();
}
if (data.can_run_netcore != null && data.can_run_netcore === true) {
$("#can-upgrade-from-mono").show();
}
$.each(data.notices, function (index, value) {
console.log(value);
doNotify(value, "danger", "glyphicon glyphicon-alert", false);
@@ -222,12 +226,12 @@ function displayUnconfiguredIndexersList() {
doNotify("Configuration failed: " + data.error, "danger", "glyphicon glyphicon-alert");
}
}).fail(function (data) {
if(data.responseJSON.error !== undefined) {
doNotify("An error occured while configuring this indexer<br /><b>" + data.responseJSON.error + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + indexerId + "] " + data.responseJSON.error + " (Config)\" target=\"_blank\">Click here to open an issue on GitHub for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
} else {
doNotify("An error occured while configuring this indexer, is Jackett server running ?", "danger", "glyphicon glyphicon-alert");
}
if(data.responseJSON.error !== undefined) {
var indexEnd = 2048 - "https://github.com/Jackett/Jackett/issues/new?title=[".length - indexerId.length - "] ".length - " (Config)".length; // keep url <= 2k #5104
doNotify("An error occured while configuring this indexer<br /><b>" + data.responseJSON.error.substring(0, indexEnd) + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + indexerId + "] " + data.responseJSON.error.substring(0, indexEnd) + " (Config)\" target=\"_blank\">Click here to open an issue on GitHub for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
} else {
doNotify("An error occured while configuring this indexer, is Jackett server running ?", "danger", "glyphicon glyphicon-alert");
}
});
});
});
@@ -444,12 +448,13 @@ function testIndexer(id, notifyResult) {
doNotify("Test failed for " + id + ": \n" + data.error, "danger", "glyphicon glyphicon-alert");
}
}).fail(function (data) {
updateTestState(id, "error", data.error, indexers);
if(data.responseJSON.error !== undefined && notifyResult) {
doNotify("An error occured while testing this indexer<br /><b>" + data.responseJSON.error + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + id + "] " + data.responseJSON.error + " (Test)\" target=\"_blank\">Click here to open an issue on GitHub for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
} else {
doNotify("An error occured while testing indexers, please take a look at indexers with failed test for more informations.", "danger", "glyphicon glyphicon-alert");
}
updateTestState(id, "error", data.error, indexers);
if(data.responseJSON.error !== undefined && notifyResult) {
var indexEnd = 2048 - "https://github.com/Jackett/Jackett/issues/new?title=[".length - id.length - "] ".length - " (Test)".length; // keep url <= 2k #5104
doNotify("An error occured while testing this indexer<br /><b>" + data.responseJSON.error.substring(0, indexEnd) + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + id + "] " + data.responseJSON.error.substring(0, indexEnd) + " (Test)\" target=\"_blank\">Click here to open an issue on GitHub for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
} else {
doNotify("An error occured while testing indexers, please take a look at indexers with failed test for more informations.", "danger", "glyphicon glyphicon-alert");
}
});
}
@@ -651,11 +656,12 @@ function populateSetupForm(indexerId, name, config, caps, link, alternativesitel
doNotify("Configuration failed: " + data.error, "danger", "glyphicon glyphicon-alert");
}
}).fail(function (data) {
if(data.responseJSON.error !== undefined) {
doNotify("An error occured while updating this indexer<br /><b>" + data.responseJSON.error + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + indexerId + "] " + data.responseJSON.error + " (Config)\" target=\"_blank\">Click here to open an issue on GitHub for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
} else {
doNotify("An error occured while updating this indexer, request to Jackett server failed, is server running ?", "danger", "glyphicon glyphicon-alert");
}
if(data.responseJSON.error !== undefined) {
var indexEnd = 2048 - "https://github.com/Jackett/Jackett/issues/new?title=[".length - indexerId.length - "] ".length - " (Config)".length; // keep url <= 2k #5104
doNotify("An error occured while updating this indexer<br /><b>" + data.responseJSON.error.substring(0, indexEnd) + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + indexerId + "] " + data.responseJSON.error.substring(0, indexEnd) + " (Config)\" target=\"_blank\">Click here to open an issue on GitHub for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
} else {
doNotify("An error occured while updating this indexer, request to Jackett server failed, is server running ?", "danger", "glyphicon glyphicon-alert");
}
}).always(function () {
$goButton.html(originalBtnText);
$goButton.prop('disabled', false);

View File

@@ -19,7 +19,7 @@
<link rel="apple-touch-icon" sizes="180x180" href="../apple-touch-icon-180x180.png" />
<link rel="mask-icon" href="jackett_medium.png" color="#35c5f4">
<link rel="icon" type="image/ico" href="../favicon.ico" />
<link rel='shortcut icon' type='image/x-icon' href='../favicon.ico' />
<link rel='shortcut icon' type='image/x-icon' href='../favicon.ico?' />
<script type="text/javascript" src="../libs/filesize.min.js?changed=2017083001"></script>
<script type="text/javascript" src="../libs/jquery.min.js?changed=2017083001"></script>
<script type="text/javascript" src="../libs/jquery.dataTables.min.js?changed=2017083001" charset="utf8"></script>
@@ -51,6 +51,14 @@
<input id="api-key-input" class="form-control input-right" type="text" value="" placeholder="API Key" readonly="">
</div>
<hr />
<div id="can-upgrade-from-mono" hidden class="alert alert-info" role="alert">
<strong>Standalone version of Jackett is now available - Mono not required</strong> <br>
To upgrade to the standalone version of Jackett, <a href="https://github.com/Jackett/Jackett#install-on-linux-amdx64" target="_blank" class="alert-link">click here</a> for install instructions.
Upgrading is straight forward, simply install the standalone version and your indexers/configuration will carry over.
Benefits include: increased performance, improved stability and no dependency on Mono.
</div>
<div class="pull-right">
<button id="jackett-add-indexer" class="btn btn-success btn-sm">
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Add indexer
@@ -142,8 +150,7 @@
</div>
<div id="proxy-warning" hidden>
<span>
WARNING: The proxy option is unstable and potentially leaks requests. If no fix from the community is forthcoming
in the next few months, the proxy option will be removed from Jackett. Recommendation is to use a VPN.
WARNING: The proxy option potentially leaks requests. Recommendation is to use a VPN.
</span>
</div>
<div class="input-area">
@@ -671,6 +678,6 @@
</script>
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></script>
<script type="text/javascript" src="../custom.js?changed=20190401"></script>
<script type="text/javascript" src="../custom.js?changed=20190427"></script>
</body>
</html>

View File

@@ -175,7 +175,7 @@
sort: "id"
order: "desc"
rows:
selector: table > tbody > tr:has(a[href^="torrents-details.php?id="])
selector: div#fancy-list-group ul.list-group li.list-group-item
fields:
title:
selector: a[href^="torrents-details.php?id="]
@@ -185,14 +185,8 @@
download:
selector: a[href^="download.php?id="]
attribute: href
banner:
selector: a[href^="torrents-details.php?id="]
attribute: title
filters:
- name: regexp
args: "src=\"(.*?)\""
category:
selector: td:first-child img
selector: div.list-group-item-addon img
attribute: src
case:
# unfortunately the site does not have category numbers on the results page, just a .png which can apply to both movies and tv.
@@ -299,11 +293,11 @@
date:
text: now
size:
selector: td:nth-child(2) span.badge-info
selector: div.list-group-item-content p.m-0 span.badge-info
seeders:
selector: td:nth-child(4)
selector: div.list-group-item-controls a:nth-child(1)
leechers:
selector: td:nth-child(5)
selector: div.list-group-item-controls a:nth-child(2)
downloadvolumefactor:
case:
"span.badge-success:contains(\"FREE\")": "0"

View File

@@ -7,15 +7,16 @@
encoding: UTF-8
followredirect: true
links:
- http://btkitty.pet/
- https://btkittys.co/
legacylinks:
- https://cnbtkitty.org/
- http://cnbtkitty.org/
- https://cnbtkitty.com/
- http://cnbtkitty.com/
- https://cnbtkitty.me/
- http://cnbtkitty.me/
- http://cnbtkitty.ws/
- https://cnbtkitty.org/
- http://cnbtkitty.org/
- https://cnbtkitty.com/
- http://cnbtkitty.com/
- https://cnbtkitty.me/
- http://cnbtkitty.me/
- http://cnbtkitty.ws/
- http://btkitty.pet/
caps:
categorymappings:

View File

@@ -6,6 +6,8 @@
type: private
encoding: UTF-8
links:
- http://teamctgame.xyz/
legacylinks:
- https://teamctgame.co/
caps:

View File

@@ -6,6 +6,8 @@
type: private
encoding: UTF-8
links:
- https://casstudio.tk/
legacylinks:
- https://casstudio.tv/
caps:

View File

@@ -0,0 +1,62 @@
---
site: concen
name: ConCen
description: "ConCen (Conspiracy Central) is a Public conspiracy related torrent index"
language: en-us
type: public
encoding: UTF-8
links:
- https://concen.org/
caps:
categories:
1: Other
modes:
search: [q]
settings: []
search:
paths:
- path: "torrents/concen.org/content/ufos-extraterrestrials-and-classified-free-energy-pack"
inputs:
title_op: "allwords"
title: "{{.Keywords}}"
title_1_op: "not"
title_1: ""
seeds: "All"
rows:
selector: table > tbody > tr
fields:
title:
selector: td.views-field-title a
category:
text: 1
details:
selector: td.views-field-title a
attribute: href
download:
selector: td.views-field-field-torrent a
attribute: href
magnet:
selector: td.views-field-name a
attribute: href
filters:
- name: prepend
args: "magnet:"
date:
selector: td.views-field-created
size:
selector: td.views-field-size
seeders:
selector: td.views-field-seeds
leechers:
selector: td.views-field-peers
grabs:
selector: td.views-field-completed
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -6,6 +6,8 @@
type: public
encoding: UTF-8
links:
- https://www.ettv.to/
legacylinks:
- https://www.ettv.tv/
caps:

View File

@@ -0,0 +1,237 @@
---
site: focusx
name: FocusX
description: "FocusX is a RUSSIAN Public torrent site for MOVIES and TV"
language: re-RU
type: public
encoding: UTF-8
links:
- https://focu.sx/
caps:
categorymappings:
- {id: 111, cat: Movies, desc: "1922"}
- {id: 135, cat: Movies, desc: "Анон"}
- {id: 168, cat: Movies, desc: "Воспитательница"}
- {id: 10, cat: Movies, desc: "Мёд в голове"}
- {id: 16, cat: Movies, desc: "Малыш"}
- {id: 18, cat: Movies, desc: "Копенгаген"}
- {id: 19, cat: Movies, desc: "Заброшенный"}
- {id: 38, cat: Movies, desc: "Звёздные войны: Эпизод 7 Пробуждение силы"}
- {id: 42, cat: Movies, desc: "В лабиринте молчания"}
- {id: 44, cat: Movies, desc: "Женщина в золотом"}
- {id: 45, cat: Movies, desc: "Падение Лондона"}
- {id: 46, cat: Movies, desc: "Высотка"}
- {id: 49, cat: Movies, desc: "Капитан Америка: Гражданская война"}
- {id: 50, cat: Movies, desc: "Рыцарь кубков"}
- {id: 54, cat: Movies, desc: "Охотник: Война Зимы"}
- {id: 57, cat: Movies, desc: "Портниха"}
- {id: 60, cat: Movies, desc: "Бэтмен против Супермена: На заре справедливости"}
- {id: 61, cat: Movies, desc: "Комета"}
- {id: 64, cat: Movies, desc: "Зоотопия"}
- {id: 65, cat: Movies, desc: "В твоих глазах"}
- {id: 66, cat: Movies, desc: "Люди Икс: Апокалипсис"}
- {id: 67, cat: Movies, desc: "Потерянный Валентин"}
- {id: 70, cat: Movies, desc: "Припаркованные"}
- {id: 71, cat: Movies, desc: "Легенда о Тарзане"}
- {id: 72, cat: Movies, desc: "Пока я не исчезну"}
- {id: 73, cat: Movies, desc: "Механик: Воскрешение"}
- {id: 74, cat: Movies, desc: "Варкрафт"}
- {id: 76, cat: Movies, desc: "Гнилые кварталы"}
- {id: 80, cat: Movies, desc: "Приятные вибрации"}
- {id: 83, cat: Movies, desc: "Возмущение"}
- {id: 84, cat: Movies, desc: "Трейнспоттинг (На игле)"}
- {id: 85, cat: Movies, desc: "Тысячу раз 'спокойной ночи'"}
- {id: 90, cat: Movies, desc: "Дангал"}
- {id: 100, cat: TV, desc: "Смертельное оружие"}
- {id: 101, cat: TV, desc: "Гавайи 5-0"}
- {id: 102, cat: TV, desc: "Черный Список"}
- {id: 103, cat: TV, desc: "Нелюди"}
- {id: 106, cat: TV, desc: "Одаренные"}
- {id: 107, cat: TV, desc: "Теория большого взрыва"}
- {id: 108, cat: TV, desc: "Ходячие мертвецы"}
- {id: 109, cat: TV, desc: "Хроники Шаннары"}
- {id: 110, cat: TV, desc: "Порох"}
- {id: 112, cat: TV, desc: "Субура"}
- {id: 115, cat: TV, desc: "Безбожники"}
- {id: 116, cat: TV, desc: "Секретные Материалы"}
- {id: 118, cat: TV, desc: "Охотник за разумом"}
- {id: 119, cat: TV, desc: "Алиенист"}
- {id: 120, cat: TV, desc: "Ординатор"}
- {id: 121, cat: TV, desc: "Уэйко"}
- {id: 122, cat: TV, desc: "Американская история преступлений"}
- {id: 124, cat: TV, desc: "Бельвью"}
- {id: 126, cat: TV, desc: "Видоизменённый углерод"}
- {id: 128, cat: TV, desc: "Здесь и Сейчас"}
- {id: 129, cat: TV, desc: "Взлет"}
- {id: 130, cat: TV, desc: "Инстинкт"}
- {id: 131, cat: TV, desc: "Стартап"}
- {id: 133, cat: TV, desc: "Террор"}
- {id: 136, cat: TV, desc: "Мир Дикого Запада"}
- {id: 138, cat: TV, desc: "В пустыне смерти"}
- {id: 139, cat: TV, desc: "Дождь"}
- {id: 140, cat: TV, desc: "Страйк"}
- {id: 141, cat: TV, desc: "Безопасность"}
- {id: 143, cat: TV, desc: "Подлый пит"}
- {id: 144, cat: TV, desc: "Голиаф"}
- {id: 146, cat: TV, desc: "Весьма Английский Скандал"}
- {id: 147, cat: TV, desc: "Королева Сахара"}
- {id: 155, cat: TV, desc: "Наследники"}
- {id: 156, cat: TV, desc: "Джек Райан"}
- {id: 158, cat: TV, desc: "Леденящие кровь приключения Сабрины"}
- {id: 161, cat: TV, desc: "Частные сыщики"}
- {id: 162, cat: TV, desc: "Изнанка дела"}
- {id: 163, cat: TV, desc: "Наркос: Мексика"}
- {id: 164, cat: TV, desc: "Возвращение домой"}
- {id: 165, cat: TV, desc: "Метод Комински"}
- {id: 166, cat: TV, desc: "Элита"}
- {id: 167, cat: TV, desc: "Грязный Джон"}
- {id: 169, cat: TV, desc: "Романовы"}
- {id: 170, cat: TV, desc: "Страна приливов"}
- {id: 171, cat: TV, desc: "Тюрьма Оз"}
- {id: 172, cat: TV, desc: "Смертельный класс"}
- {id: 173, cat: TV, desc: "Парфюм"}
- {id: 174, cat: TV, desc: "Цветочный дом"}
- {id: 175, cat: TV, desc: "Каратель"}
- {id: 176, cat: TV, desc: "Матрёшка"}
- {id: 177, cat: TV, desc: "Берлинская резидентура"}
- {id: 178, cat: TV, desc: "Настоящий Детектив"}
- {id: 179, cat: TV, desc: "Половое Просвещение"}
- {id: 180, cat: TV, desc: "АКАДЕМИЯ АМБРЕЛЛА"}
- {id: 181, cat: TV, desc: "Сорвиголова"}
- {id: 182, cat: TV, desc: "Мистер Посредник"}
- {id: 9, cat: TV, desc: "Иерихон"}
- {id: 11, cat: TV, desc: "11-22-63"}
- {id: 12, cat: TV, desc: "Апокалипсис: Первая мировая война"}
- {id: 13, cat: TV, desc: "Смерть в раю"}
- {id: 14, cat: TV, desc: "Джереми Кларксон: Военные истории"}
- {id: 15, cat: TV, desc: "Чёрные паруса"}
- {id: 17, cat: TV, desc: "Карточный домик"}
- {id: 37, cat: TV, desc: "Джек Айриш"}
- {id: 39, cat: TV, desc: "Чужестранка"}
- {id: 40, cat: TV, desc: "Девушка по вызову"}
- {id: 41, cat: TV, desc: "Джереми Кларксон: Триллер"}
- {id: 43, cat: TV, desc: "Игра престолов"}
- {id: 47, cat: TV, desc: "Острые козырьки"}
- {id: 48, cat: TV, desc: "Странная парочка"}
- {id: 51, cat: TV, desc: "Проповедник"}
- {id: 52, cat: TV, desc: "Изгой"}
- {id: 53, cat: TV, desc: "Рэй Донован"}
- {id: 55, cat: TV, desc: "Оранжевый - хит сезона"}
- {id: 56, cat: TV, desc: "Бесстыдники"}
- {id: 58, cat: TV, desc: "Мистер Робот"}
- {id: 59, cat: TV, desc: "Валландер"}
- {id: 62, cat: TV, desc: "Штамм"}
- {id: 63, cat: TV, desc: "Куорри"}
- {id: 68, cat: TV, desc: "Бесстыжие"}
- {id: 69, cat: TV, desc: "Нарко"}
- {id: 75, cat: TV, desc: "Все схвачено"}
- {id: 77, cat: TV, desc: "Граница"}
- {id: 79, cat: TV, desc: "Бош"}
- {id: 81, cat: TV, desc: "Викинги"}
- {id: 82, cat: TV, desc: "Салем"}
- {id: 86, cat: TV, desc: "Кровавая Гонка"}
- {id: 87, cat: TV, desc: "Сеньор Авила"}
- {id: 88, cat: TV, desc: "Стрелок"}
- {id: 89, cat: TV, desc: "Миднайт Техас"}
- {id: 91, cat: TV, desc: "Утиные Истории"}
- {id: 96, cat: TV, desc: "Двойка"}
- {id: 97, cat: TV, desc: "Тик-герой"}
modes:
search: [q]
settings: []
search:
paths:
# https://focu.sx/tracker/search?freeleech=0&query=daredevil
- path: "{{if .Keywords}}tracker/search?freeleech=0&query={{.Keywords}}{{else}}tracker/{{end}}"
followredirect: true
rows:
selector: ol.torrentListItems li.torrentListItem
fields:
title:
selector: div.name div.titleText h3 a
details:
selector: div.name div.titleText h3 a
attribute: href
filters:
- name: prepend
args: "{{ .Config.sitelink }}"
category:
selector: div.torrentCategory a
attribute: href
filters:
- name: querystring
args: category_id
download:
selector: div.download a
attribute: href
filters:
- name: prepend
args: "{{ .Config.sitelink }}"
magnet:
selector: div.download a[href^="magnet:?"]
attribute: href
date:
selector: div.name div.titleText div.secondRow div span
attribute: title
# 7 мар 2019 в 21:06
filters:
- name: replace
args: [" в ", " "]
- name: replace
args: ["янв", "Jan"]
- name: replace
args: ["фев", "Feb"]
- name: replace
args: ["мар", "Mar"]
- name: replace
args: ["апр", "Apr"]
- name: replace
args: ["май", "May"]
- name: replace
args: ["июн", "Jun"]
- name: replace
args: ["июл", "Jul"]
- name: replace
args: ["авг", "Aug"]
- name: replace
args: ["сен", "Sep"]
- name: replace
args: ["окт", "Oct"]
- name: replace
args: ["ноя", "Nov"]
- name: replace
args: ["дек", "Dec"]
- name: dateparse
args: "2 Jan 2006 15:04"
size:
selector: div.size
filters:
- name: replace
args: [".", ""]
- name: replace
args: [",", "."]
- name: replace
args: ["ТБ", "TB"]
- name: replace
args: ["ГБ", "GB"]
- name: replace
args: ["МБ", "MB"]
- name: replace
args: ["КБ", "KB"]
grabs:
selector: div.snatched
seeders:
selector: div.seeders
leechers:
selector: div.leechers
downloadvolumefactor:
case:
"div.name div.titleText h3 span:contains(\"Золото\")": "0"
"*": "1"
uploadvolumefactor:
text: "1"

View File

@@ -16,6 +16,7 @@
modes:
search: [q]
music-search: [q, album, artist, label, year]
login:
path: login.php
@@ -32,7 +33,7 @@
paths:
- path: browse.php
inputs:
search: "{{ .Query.Keywords }}"
search: "{{if .Query.Artist}}{{ .Query.Artist }}{{else}}{{ .Keywords }}{{end}}"
showsearch: "1"
incldead: "1"
rows:

View File

@@ -51,7 +51,7 @@
modes:
search: [q]
tv-search: [q, season, ep]
music-search: [q, album, artist, label, year]
login:
path: takelogin.php
@@ -69,7 +69,7 @@
- path: browse.php
inputs:
#$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Query.Keywords }}"
search: "{{if .Query.Artist}}{{ .Query.Artist }}{{else}}{{ .Keywords }}{{end}}"
incldead: 1
rows:
selector: table.mainouter > tbody > tr > td.outer > table > tbody > tr.mouse_out

View File

@@ -1,165 +0,0 @@
---
site: gods
name: GODS
description: "GODS is a German Private site for TV / MOVIES / GENERAL"
language: de-de
type: private
encoding: windows-1252
links:
- https://gods.lu/
caps:
categorymappings:
# Movie
- {id: 132, cat: Movies/BluRay, desc: "BluRay"}
- {id: 146, cat: Movies/HD, desc: "Remux"}
- {id: 186, cat: Movies/UHD, desc: "UHD"}
- {id: 189, cat: Movies/HD, desc: "HD"}
- {id: 190, cat: Movies/SD, desc: "SD"}
- {id: 20, cat: Movies/DVD, desc: "DVD"}
- {id: 131, cat: Movies/3D, desc: "3D"}
- {id: 16, cat: Movies, desc: "Packs"}
# Serien
- {id: 187, cat: TV/UHD, desc: "Staffeln UHD"}
- {id: 173, cat: TV/HD, desc: "Staffeln HD"}
- {id: 133, cat: TV/SD, desc: "Staffeln SD"}
- {id: 188, cat: TV/UHD, desc: "Folgen UHD"}
- {id: 174, cat: TV/HD, desc: "Folgen HD"}
- {id: 7, cat: TV/SD, desc: "Folgen SD"}
# Doku
- {id: 152, cat: TV/Documentary, desc: "HD"}
- {id: 153, cat: TV/Documentary, desc: "SD"}
# Spiele
- {id: 4, cat: PC/Games, desc: "Windows"}
- {id: 29, cat: Console/XBox360, desc: "XBOX 360"}
- {id: 126, cat: Console/Wii, desc: "Wii"}
- {id: 183, cat: Console/Wii, desc: "Wii U"}
- {id: 128, cat: Console/PS3, desc: "PS3"}
- {id: 154, cat: Console/Other, desc: "Andere"}
# Musik
- {id: 6, cat: Audio, desc: "Alben"}
- {id: 139, cat: Audio/Lossless, desc: "Lossless"}
- {id: 177, cat: Audio, desc: "Singles"}
- {id: 157, cat: Audio, desc: "Charts"}
- {id: 192, cat: Audio, desc: "Packs"}
- {id: 161, cat: Audio/Video, desc: "Video"}
- {id: 22, cat: PC/0day, desc: "Windows"}
- {id: 129, cat: PC/Mac, desc: "Mac OS"}
- {id: 164, cat: PC/0day, desc: "Linux"}
- {id: 124, cat: PC/Phone-Android, desc: "Android"}
- {id: 165, cat: PC/Phone-IOS, desc: "Apple iOS"}
- {id: 167, cat: PC/Phone-Other, desc: "Andere"}
# Sport
- {id: 130, cat: TV/Sport, desc: "HD"}
- {id: 135, cat: TV/Sport, desc: "SD"}
# International
- {id: 170, cat: Movies/Foreign, desc: "Filme HD"}
- {id: 134, cat: Movies/Foreign, desc: "Filme SD"}
- {id: 171, cat: TV/Foreign, desc: "Folgen HD"}
- {id: 172, cat: TV/Foreign, desc: "Folgen SD"}
# Sonstiges
- {id: 28, cat: TV/Anime, desc: "Anime"}
- {id: 13, cat: Books, desc: "e-Book"}
- {id: 11, cat: Audio/Audiobook, desc: "Hören"}
- {id: 136, cat: Other, desc: "Bilder"}
- {id: 9, cat: Other, desc: "Tutorial"}
- {id: 178, cat: Other, desc: "Anderes"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: pin
type: text
label: Pin
- name: username
type: text
label: Username
- name: password
type: password
label: Password
login:
path: login/
method: form
form: form
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
pin: "{{ .Config.pin }}"
test:
path: browse.php
search:
paths:
- path: browse.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Query.Keywords }}"
intitle: "1"
incldead: "1"
team: "0"
orderby: "added"
sort: desc
rows:
selector: table.tableinborder > tbody > tr:has(a[href^="details.php"])
fields:
title:
selector: a[href^="details.php"]
banner:
selector: a[href^="details.php"] > span > img
attribute: src
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
details:
selector: a[href^="details.php"]
attribute: href
comments:
selector: a[href*="&tocomm="]
attribute: href
download:
selector: a[href^="download.php"]
attribute: href
files:
selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(1) > b:nth-child(2)
grabs:
selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(3) > b:nth-child(1)
size:
selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(1) > b:nth-child(1)
filters:
- name: replace
args: [".", ""]
- name: replace
args: [",", "."]
seeders:
selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(3) > b:nth-child(1)
leechers:
selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(3) > b:nth-child(3)
date:
selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(6)
filters:
- name: replace
args: ["\xA0", " "]
- name: dateparse
args: "02.01.2006 15:04:05"
downloadvolumefactor:
case:
img[alt="onlyupload"]: "0"
"*": "1"
uploadvolumefactor:
case:
"*": "1"

View File

@@ -1,123 +0,0 @@
---
site: hdplus
name: HDplus
description: "HDplus is Private Torrent Tracker for MOVIES / TV / MUSIC"
language: en-us
type: private
encoding: UTF-8
links:
- https://hdplus.xyz/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Music"}
modes:
search: [q, imdbid]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
login:
path: login
method: form
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: 1
selectorinputs:
_token:
selector: meta[name="csrf-token"]
attribute: content
error:
- selector: form[action$="/login"] .text-red
test:
path: /
selector: a[href$="/logout"]
ratio:
path: /
selector: span:has(i.fa-sync-alt)
filters:
- name: regexp
args: "Ratio : (\\d+)"
search:
paths:
- path: filterTorrents
inputs:
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
uploader: ""
imdb: "{{ .Query.IMDBIDShort }}"
tvdb: ""
tmdb: ""
sort: created_at
direction: desc
qty: 100
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/.*?\\.(\\d+)"
title:
selector: a.view-torrent
download:
selector: a[href*="/download/"]
attribute: href
details:
selector: a.view-torrent
attribute: href
size:
selector: td:nth-child(5)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
grabs:
selector: td:nth-child(6)
filters:
- name: regexp
args: ([\d\.]+)
date:
selector: time
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portoguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch
- name: re_replace
args: ["(önce|tagasi|geleden|fa|temu|siden|atrás|nazpět|назад|acum|hace|il y a|vor|преди)", "ago"]
- name: re_replace
args: ["(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut)", "minute"]
- name: re_replace
args: ["(dakika|minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten)", "minutes"]
- name: re_replace
args: ["(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur)", "hour"]
- name: re_replace
args: ["(saat|tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden)", "hours"]
- name: re_replace
args: ["(gün|päev|dag|giorno|dzień|dia|den|день|zi|día|jour|Tag|ден)", "day"]
- name: re_replace
args: ["(gün|päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen)", "days"]
- name: re_replace
args: ["(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица)", "week"]
- name: re_replace
args: ["(hafta|nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
- name: re_replace
args: [" (ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
- name: re_replace
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
downloadvolumefactor:
case:
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech
"i[data-original-title=\"Global freeleech\"]": "0" # Global Freeleech
"*": "1"
uploadvolumefactor:
case:
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
"*": "1"
# UNIT3D

View File

@@ -46,14 +46,14 @@
movie-search: [q, imdbid]
login:
path: takelogin.php
path: login.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
notsecure: "1"
error:
- selector: div.login_error_content
- selector: div.login_error_content_text
test:
path: browse.php

View File

@@ -26,6 +26,7 @@
modes:
search: [q]
tv-search: [q, season, ep]
music-search: [q, album, artist, label, year]
login:
path: login.php
@@ -49,7 +50,7 @@
- path: torrents.php
inputs:
$raw: "{{range .Categories}}filter_cat[{{.}}]=1&{{end}}"
searchstr: "{{ .Query.Keywords }}"
searchstr: "{{if .Query.Artist}}{{ .Query.Artist }}{{else}}{{ .Keywords }}{{end}}"
order_by: time
order_way: desc
action: basic

View File

@@ -7,8 +7,11 @@
encoding: UTF-8
followredirect: true
links:
- https://kikibt.cc/
- https://kikibt.pw/
legacylinks:
- https://kikibt.me/
- http://kikibt.pw/
- https://kikibt.cc/
caps:
categorymappings:

View File

@@ -14,7 +14,7 @@
modes:
search: [q]
tv-search: [q, season, ep]
music-search: [q, album, artist, label, year]
login:
path: takelogin.php
@@ -32,7 +32,7 @@
paths:
- path: browse.php
inputs:
search: "{{ .Query.Keywords }}"
search: "{{if .Query.Artist}}{{ .Query.Artist }}{{else}}{{ .Keywords }}{{end}}"
t: "all"
rows:
selector: div#releases-table > table > tbody > tr:has(a.browselink)

View File

@@ -1,9 +1,9 @@
---
site: megabliz
name: Mega-Bliz
description: "Mega-Bliz is a Semi-Private site for MOVIES / TV / GENERAL"
description: "Mega-Bliz is a Private site for MOVIES / TV / GENERAL"
language: en-us
type: semi-private
type: private
encoding: UTF-8
links:
- https://mega-bliz.nl/

View File

@@ -6,9 +6,10 @@
type: semi-private
encoding: windows-1251
links:
- https://nnm-club.me/
- http://nnmclub.to/
legacylinks:
- https://nnm-club.name/
- https://nnm-club.me/
certificates:
- 7877113458e90f3643dd28424657a29469f5dc55
- 0edfdcc8cf9f69dbe5473878145cae92504275b0

View File

@@ -17,16 +17,17 @@
- {id: 21, cat: Movies/DVD, desc: "Movie DVD-9"}
- {id: 11, cat: Movies/DVD, desc: "Movie DVD-5"}
- {id: 20, cat: Movies/SD, desc: "Movie DVDRip"}
- {id: 45, cat: Movies, desc: "Movie RIP mp4"}
- {id: 22, cat: Movies/UHD, desc: "Movie 4K-Ultra-HD"}
- {id: 23, cat: Movies/HD, desc: "Movie H-265"}
- {id: 24, cat: Movies/HD, desc: "Movie 1080p"}
- {id: 25, cat: Movies/HD, desc: "Movie 720p"}
- {id: 26, cat: Movies/3D, desc: "Movie 3D-FullHD"}
- {id: 27, cat: Movies/BluRay, desc: "Movie Blu Ray Disk"}
- {id: 43, cat: Movies/SD, desc: "BMovie DRip"}
- {id: 27, cat: Movies/BluRay, desc: "Movie BluRay"}
- {id: 43, cat: Movies/SD, desc: "Movie BDRip"}
- {id: 29, cat: Movies/SD, desc: "Movie Cine News"}
- {id: 30, cat: TV/HD, desc: "Serie Tv HD"}
- {id: 31, cat: TV/SD, desc: "Serie Tv SD"}
- {id: 30, cat: TV/HD, desc: "Serie TV HD"}
- {id: 31, cat: TV/SD, desc: "Serie TV SD"}
- {id: 35, cat: TV/Other, desc: "Programmi TV"}
- {id: 42, cat: TV/Documentary, desc: "Documentari"}
# Music
@@ -46,6 +47,7 @@
- {id: 17, cat: Books, desc: "Edicola Riviste"}
- {id: 41, cat: Books, desc: "Edicola Fumetti"}
# Applicazioni
- {id: 4, cat: PC, desc: "IPTV"}
- {id: 7, cat: PC/0day, desc: "Applicazioni PC"}
- {id: 8, cat: PC/0day, desc: "Applicazioni Linux"}
- {id: 9, cat: PC/Mac, desc: "Applicazioni Mac"}
@@ -77,8 +79,19 @@
path: index.php
selector: a[href="logout.php"]
# download:
# before:
# path: thanks.php
# method: "post"
# inputs:
# infohash: "{{ .DownloadUri.Query.id }}"
# thanks: "1"
# rndval: "1487013827343"
# selector: a[href^="download.php?id="]
search:
paths:
# 30 entries per page
- path: index.php
inputs:
pages: 1
@@ -91,24 +104,6 @@
- path: index.php
inputs:
pages: 4
- path: index.php
inputs:
pages: 5
- path: index.php
inputs:
pages: 6
- path: index.php
inputs:
pages: 7
- path: index.php
inputs:
pages: 8
- path: index.php
inputs:
pages: 9
- path: index.php
inputs:
pages: 10
inputs:
search: "{{ .Keywords }}"
category: "{{range .Categories}}{{.}};{{end}}"
@@ -124,41 +119,16 @@
- name: re_replace # S01E01 to 1 1
args: ["(?i)\\bS0*(\\d+)E0*(\\d+)\\b", "$1 $2"]
rows:
selector: div.b-content > table > tbody > tr > td > table.lista > tbody > tr:has(a[href^="index.php?page=torrents&category="])
selector: table.lista > tbody > tr:has(a[href^="index.php?page=torrents&category="])
filters:
- name: andmatch
fields:
download:
# selector: a[href^="index.php?page=downloadcheck&id="]
selector: a[href^="download.php?id="]
attribute: href
title: # shortened title?
selector: td:nth-child(2)
filters:
- name: re_replace # replace special characters with " " (space)
args: ["[^a-zA-Z0-9\\s]|\\.", " "]
- name: re_replace # replace multiple spaces
args: ["[ ]{2,}", " "]
# normalize to SXXEYY format
- name: re_replace # S01 E01 to S01E01
args: ["(?i)\\bS(\\d+)\\sE(\\d+)\\b", "S$1E$2"]
- name: re_replace # 01x01 to S01E01
args: ["(?i)(\\d{2})x(\\d+)", "S$1E$2"]
- name: re_replace # 1x01 to S01E01
args: ["(?i)\\b(\\d{1})x(\\d+)", "S0$1E$2"]
- name: re_replace # Stagione X --> S0X
args: ["(?i)\\bStagion[ei]\\s?(\\d{1})\\b|\\bSeason'?s?\\s?(\\d{1})\\b", "S0$1$2"]
- name: re_replace # Stagione XX --> SXX
args: ["(?i)\\bStagion[ei]\\s?(\\d{2,})\\b|\\bSeason'?s?\\s?(\\d{2,})\\b", "S$1$2"]
- name: re_replace # Episodio 4 to E4
args: ["(?i)\\b(?:[\\/\\|]?Episodio\\s?(\\d+)|Puntata\\s?(\\d+))", "E$1$2"]
- name: re_replace # Episodi 4 5 to E04-05
args: ["(?i)\\b(?:Puntate\\s*)(\\d+)\\s?(\\d+)", "E0$1-0$2"]
- name: re_replace # rimozioni varie
args: ["(?i)(Serie completa|Completat?a?|in pausa)", ""]
title: # long titles?
optional: true
selector: td:nth-child(2)
attribute: title
title:
selector: a[href^="index.php?page=torrent-details&id="]
filters:
- name: re_replace # replace special characters with " " (space)
args: ["[^a-zA-Z0-9\\s]|\\.", " "]
@@ -182,7 +152,7 @@
- name: re_replace # rimozioni varie
args: ["(?i)(Serie completa|Completat?a?|in pausa)", ""]
category:
selector: td:nth-child(1) a[href^="index.php?page=torrents&category="]
selector: a[href^="index.php?page=torrents&category="]
attribute: href
filters:
- name: querystring
@@ -198,21 +168,32 @@
- name: regexp
args: "src=(.+?) "
size:
selector: td:nth-last-child(3)
date:
selector: td[width="85"] # some users have an extra uploader column between the grabs and size column, see #4435
filters:
- name: dateparse
args: "02/01/2006"
grabs:
selector: td[width="85"] + td + td + td
selector: td:has(a[href^="index.php?page=torrent-details&id="]) p:nth-of-type(2)
filters:
- name: replace
args: ["---", "0"]
args: [" \xA0 ", " "]
- name: regexp
args: " (.*?)$"
date:
selector: td:has(a[href^="index.php?page=torrent-details&id="]) p:nth-of-type(3)
filters:
- name: replace
args: ["\xA0 ", " "]
- name: regexp
args: " (.*?)$"
- name: dateparse
args: "15:04:05 02/01/2006"
seeders:
selector: td[width="85"] + td
selector: td:has(a[href^="index.php?page=torrent-details&id="]) p:nth-of-type(4) a:nth-of-type(1)
filters:
leechers:
selector: td[width="85"] + td + td
selector: td:has(a[href^="index.php?page=torrent-details&id="]) p:nth-of-type(4) a:nth-of-type(2)
filters:
grabs:
text: 0
grabs:
optional: true
selector: td:has(a[href^="index.php?page=torrent-details&id="]) p:nth-of-type(4) a:nth-of-type(3)
downloadvolumefactor:
case:
img[alt="Free Leech"]: "0"

View File

@@ -81,6 +81,9 @@
selector: div.bouton-s
leechers:
selector: div.bouton-l
grabs:
selector: div.bouton-c
date:
selector: div.col-detail div.row div span
filters:
@@ -98,8 +101,10 @@
args: " ago"
downloadvolumefactor:
case:
"span.badge-extra:contains('Freeleech')" : "0"
"*": "1"
uploadvolumefactor:
case:
"span.badge-extra:contains('Double Upload')" : "2"
"*": "1"
# UNIT3D

View File

@@ -14,7 +14,7 @@
modes:
search: [q]
tv-search: [q, season, ep]
music-search: [q, album, artist, label, year]
login:
path: takelogin.php
@@ -31,7 +31,7 @@
paths:
- path: browse.php
inputs:
search: "{{ .Query.Keywords }}"
search: "{{if .Query.Artist}}{{ .Query.Artist }}{{else}}{{ .Keywords }}{{end}}"
incldead: 1
rows:
selector: table#ct > tbody > tr.torrent_row

View File

@@ -6,9 +6,9 @@
type: public
encoding: UTF-8
links:
- https://www.skytorrents.to/
legacylinks:
- https://www.skytorrents.lol/
legacylinks:
- https://www.skytorrents.to/
caps:
categories:
@@ -29,23 +29,23 @@
movie-search: [q]
settings:
- name: btdb.eu-links
- name: itorrents-links
type: checkbox
label: Add download links via btdb.eu
label: Add download links via itorrents.org
default: true
- name: info
type: info
label: btdb.eu Note
default: Without the btdb.eu option only magnet links will be provided.
label: ITorrents Note
default: Without the itorrents option only magnet links will be provided.
search:
# https://www.skytorrents.lol/?search=mr+mercedes+s02e05&sort=created
# https://www.skytorrents.lol/?query=mr+mercedes+s02e05&sort=created
# https://www.skytorrents.lol/top100
paths:
- path: "{{ if .Keywords }}?search={{ .Keywords }}&sort=created{{else}}top100{{end}}"
- path: "{{ if .Keywords }}?search={{ .Keywords }}&sort=created&page=2{{else}}{{end}}"
- path: "{{ if .Keywords }}?search={{ .Keywords }}&sort=created&page=3{{else}}{{end}}"
- path: "{{ if .Keywords }}?search={{ .Keywords }}&sort=created&page=4{{else}}{{end}}"
- path: "{{ if .Keywords }}?query={{ .Keywords }}&sort=created{{else}}top100{{end}}"
- path: "{{ if .Keywords }}?query={{ .Keywords }}&sort=created&page=2{{else}}{{end}}"
- path: "{{ if .Keywords }}?query={{ .Keywords }}&sort=created&page=3{{else}}{{end}}"
- path: "{{ if .Keywords }}?query={{ .Keywords }}&sort=created&page=4{{else}}{{end}}"
rows:
selector: tr.result
fields:
@@ -62,11 +62,11 @@
details:
selector: td a
attribute: href
download-btdb.eu:
selector: a[href^="//btdb.eu"]
download-itorrents:
selector: a[href^="//itorrents"]
attribute: href
download:
text: "{{if .Config.btdb.eu-links}}{{ .Result.download-btdb.eu }}{{else}}{{end}}"
text: "{{if .Config.itorrents-links}}{{ .Result.download-itorrents }}{{else}}{{end}}"
magnet:
selector: a[href^="magnet:?"]
attribute: href

View File

@@ -38,7 +38,8 @@
selector: div[role="listitem"]:has(a[href^="magnet:?xt="])
fields:
title:
selector: div[class$="__title"] h3
selector: div[class$="__title"] a[title]
attribute: title
details:
selector: div[class$="__title"] a
attribute: href
@@ -62,12 +63,13 @@
- name: regexp
args: "(\\d+ \\w+ \\w+)"
seeders:
selector: div.v-list__tile__content div:nth-of-type(3) span:nth-child(1)
selector: div.v-list__tile__sub-title span.green--text
leechers:
selector: div.v-list__tile__content div:nth-of-type(3) span:nth-child(2)
selector: div.v-list__tile__sub-title span.red--text
grabs:
selector: div.v-list__tile__sub-title span:last-of-type
size:
selector: div.v-list__tile__content div:nth-of-type(3)
remove: span
selector: div.v-list__tile__sub-title:last-of-type strong
downloadvolumefactor:
text: "0"
uploadvolumefactor:

View File

@@ -15,6 +15,7 @@
modes:
search: [q]
music-search: [q, album, artist, label, year]
login:
path: login
@@ -37,7 +38,7 @@
paths:
- path: "{{if .Keywords}}search{{else}}music{{end}}"
inputs:
q: "{{ .Keywords }}"
q: "{{if .Query.Artist}}{{ .Query.Artist }}{{else}}{{ .Keywords }}{{end}}"
num: 50
rows:

View File

@@ -0,0 +1,527 @@
---
site: tapochek
name: Tapochek
description: "Tapochek is a RUSSIAN Private Torrent Tracker for 0DAY / GENERAL"
language: ru-ru
type: private
encoding: windows-1251
links:
- https://tapochek.net/
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: striprussian
type: checkbox
label: Strip Russian Letters
default: false
caps:
categorymappings:
# PC Games
# Игры для PC
- {id: 2, cat: PC/Games, desc: "Игры для PC (общее)"}
- {id: 14, cat: PC/Games, desc: "Альфа-, Бета- и Демо-версии"}
- {id: 314, cat: PC/Games, desc: "NoCD/ NoDVD"}
- {id: 13, cat: PC/Games, desc: "Русификаторы"}
- {id: 12, cat: PC/Games, desc: "Патчи"}
- {id: 11, cat: PC/Games, desc: "Чит-программы и трейнеры"}
- {id: 10, cat: PC/Games, desc: "Дополнения для игр"}
- {id: 9, cat: PC/Games, desc: "Игровые журналы и приложенные материалы"}
- {id: 712, cat: PC/Games, desc: "Гайды, бонусные диски и другие дополнительные материалы"}
- {id: 18, cat: PC/Games, desc: "Горячие новинки"}
- {id: 808, cat: PC/Games, desc: "Репаки от R.G. Механики"}
- {id: 809, cat: PC/Games, desc: "Горячие новинки от R.G. Механики"}
- {id: 810, cat: PC/Games, desc: "Аркады от R.G. Механики"}
- {id: 811, cat: PC/Games, desc: "Приключения и квесты от R.G. Механики"}
- {id: 812, cat: PC/Games, desc: "Стратегии от R.G. Механики"}
- {id: 813, cat: PC/Games, desc: "Симуляторы от R.G. Механики"}
- {id: 814, cat: PC/Games, desc: "Action от R.G. Механики"}
- {id: 815, cat: PC/Games, desc: "RPG от R.G. Механики"}
- {id: 903, cat: PC/Games, desc: "jRPG от R.G. Механики"}
- {id: 887, cat: PC/Games, desc: "Раздачи от R.G. Игроманы"}
- {id: 888, cat: PC/Games, desc: "Аркады от R.G. Игроманы"}
- {id: 889, cat: PC/Games, desc: "Приключения и квесты от R.G. Игроманы"}
- {id: 890, cat: PC/Games, desc: "Стратегии от R.G. Игроманы"}
- {id: 891, cat: PC/Games, desc: "Симуляторы от R.G. Игроманы"}
- {id: 892, cat: PC/Games, desc: "Action от R.G. Игроманы"}
- {id: 893, cat: PC/Games, desc: "RPG от R.G. Игроманы"}
- {id: 913, cat: PC/Games, desc: "Раздачи от R.G. GOGFAN"}
- {id: 935, cat: PC/Games, desc: "Ранний доступ от R.G. GOGFAN"}
- {id: 914, cat: PC/Games, desc: "Аркады от R.G. GOGFAN"}
- {id: 915, cat: PC/Games, desc: "Приключения и квесты от R.G. GOGFAN"}
- {id: 931, cat: PC/Games, desc: "Стратегии от R.G. GOGFAN"}
- {id: 930, cat: PC/Games, desc: "Симуляторы от R.G. GOGFAN"}
- {id: 929, cat: PC/Games, desc: "Action от R.G. GOGFAN"}
- {id: 928, cat: PC/Games, desc: "RPG от R.G. GOGFAN"}
- {id: 24, cat: PC/Games, desc: "Приключения и квесты"}
- {id: 25, cat: PC/Games, desc: "Стратегии"}
- {id: 28, cat: PC/Games, desc: "RTS (стратегии в реальном времени)"}
- {id: 27, cat: PC/Games, desc: "TBS (пошаговые стратегии)"}
- {id: 26, cat: PC/Games, desc: "Wargame"}
- {id: 238, cat: PC/Games, desc: "Экономические стратегии"}
- {id: 19, cat: PC/Games, desc: "Аркады"}
- {id: 23, cat: PC/Games, desc: "Аркады (разное)"}
- {id: 22, cat: PC/Games, desc: "Логические аркады"}
- {id: 21, cat: PC/Games, desc: "Настольные и карточные аркады"}
- {id: 20, cat: PC/Games, desc: "Мини/флеш-игры"}
- {id: 29, cat: PC/Games, desc: "Симуляторы"}
- {id: 31, cat: PC/Games, desc: "Авиасимуляторы"}
- {id: 34, cat: PC/Games, desc: "Спортивные симуляторы"}
- {id: 33, cat: PC/Games, desc: "Космические симуляторы"}
- {id: 32, cat: PC/Games, desc: "Гоночные симуляторы"}
- {id: 30, cat: PC/Games, desc: "Другие симуляторы"}
- {id: 35, cat: PC/Games, desc: "Action"}
- {id: 39, cat: PC/Games, desc: "FPS (1st Person)"}
- {id: 38, cat: PC/Games, desc: "TPS (3rd Person)"}
- {id: 37, cat: PC/Games, desc: "Stealth Action"}
- {id: 36, cat: PC/Games, desc: "Тактические шутеры"}
- {id: 40, cat: PC/Games, desc: "RPG"}
- {id: 41, cat: PC/Games, desc: "Эротические игры"}
- {id: 43, cat: PC/Games, desc: "Эротические"}
- {id: 42, cat: PC/Games, desc: "Хентайные"}
- {id: 44, cat: PC/Games, desc: "Многопользовательские игры"}
- {id: 45, cat: PC/Games, desc: "MMORPG"}
- {id: 46, cat: PC/Games, desc: "Для самых маленьких"}
# Games for Consoles
# Игры для Консолей
- {id: 69, cat: Console/Xbox, desc: "Xbox"}
- {id: 86, cat: Console/Xbox 360, desc: "XBox360 | Игры"}
- {id: 646, cat: Console/Xbox 360, desc: "XBox360 | JTAG"}
- {id: 87, cat: Console/Xbox 360, desc: "XBox360 | 360E"}
- {id: 89, cat: Console/Xbox 360, desc: "XBox360 | Demo"}
- {id: 612, cat: Console/Xbox 360, desc: "XBox360 | Live"}
- {id: 614, cat: Console/Xbox 360, desc: "XBox360 | Soft"}
- {id: 88, cat: Console/Xbox, desc: "XBox | Игры"}
- {id: 85, cat: Console/Xbox, desc: "Прочее | Архив (XBox)"}
- {id: 70, cat: Console/PSP, desc: "PlayStation"}
- {id: 910, cat: Console/PS4, desc: "PS4 | Игры"}
- {id: 911, cat: Console/PS4, desc: "PS4 | Сцена"}
- {id: 689, cat: Console/PS3, desc: "PS3 | Игры"}
- {id: 818, cat: Console/PS3, desc: "PS3 | Сцена"}
- {id: 696, cat: Console/PSP, desc: "PSN | Игры"}
- {id: 853, cat: Console/PS3, desc: "PS3 | Emulation"}
- {id: 904, cat: Console/PS Vita, desc: "PS Vita | Игры"}
- {id: 102, cat: Console/PSP, desc: "PSP | Игры"}
- {id: 103, cat: Console/PS3, desc: "PS2 | Игры"}
- {id: 104, cat: Console/PSP, desc: "PSX | Игры"}
- {id: 435, cat: Console/PSP, desc: "PSP | Сцена"}
- {id: 105, cat: Console/PSP, desc: "PSP | PSX-PSP"}
- {id: 690, cat: Console/PS3, desc: "PS3 | Прочее"}
- {id: 178, cat: Console/PSP, desc: "PSP | Прочее"}
- {id: 101, cat: Console/PSP, desc: "Архив (PS)"}
- {id: 78, cat: Console/NDS, desc: "Nintendo"}
- {id: 148, cat: Console/NDS, desc: "Архив (Nintendo)"}
- {id: 116, cat: Console/NDS, desc: "NDS | Игры"}
- {id: 885, cat: Console/3DS, desc: "3DS | Игры"}
- {id: 912, cat: Console, desc: "Switch | Игры"}
- {id: 115, cat: Console/Wii, desc: "Wii | Игры"}
- {id: 899, cat: Console/WiiU, desc: "Wii U | Игры"}
- {id: 900, cat: Console/WiiU, desc: "Wii U | Сцена"}
- {id: 381, cat: Console/Wiiware/VC, desc: "WiiWare | Игры"}
- {id: 382, cat: Console, desc: "GameCube | Игры"}
- {id: 349, cat: Console, desc: "Sega"}
- {id: 350, cat: Console, desc: "Dreamcast | Игры"}
- {id: 351, cat: Console, desc: "Saturn | Игры"}
- {id: 352, cat: Console, desc: "Игры для старых консолей"}
- {id: 390, cat: Console, desc: "Коллекции (игры для разных платформ)"}
# Games for macOS and Linux
# Игры для macOS и Linux
- {id: 936, cat: PC/Games, desc: "Горячие новинки игр для macOS и Linux"}
- {id: 129, cat: PC/Games, desc: "Игры для Linux от R.G. GOGFAN"}
- {id: 874, cat: PC/Games, desc: "[Linux] Аркады от R.G. GOGFAN"}
- {id: 695, cat: PC/Games, desc: "[Linux] Приключения и квесты от R.G. GOGFAN"}
- {id: 873, cat: PC/Games, desc: "[Linux] Стратегии от R.G. GOGFAN"}
- {id: 872, cat: PC/Games, desc: "[Linux] Симуляторы от R.G. GOGFAN"}
- {id: 871, cat: PC/Games, desc: "[Linux] Action от R.G. GOGFAN"}
- {id: 932, cat: PC/Games, desc: "[Linux] RPG от R.G. GOGFAN"}
- {id: 861, cat: PC/Games, desc: "Игры для macOS от R.G. GOGFAN"}
- {id: 862, cat: PC/Games, desc: "[macOS] Аркады от R.G. GOGFAN"}
- {id: 875, cat: PC/Games, desc: "[macOS] Приключения и квесты от R.G. GOGFAN"}
- {id: 876, cat: PC/Games, desc: "[macOS] Стратегии от R.G. GOGFAN"}
- {id: 877, cat: PC/Games, desc: "[macOS] Симуляторы от R.G. GOGFAN"}
- {id: 878, cat: PC/Games, desc: "[macOS] Action от R.G. GOGFAN"}
- {id: 933, cat: PC/Games, desc: "[macOS] RPG от R.G. GOGFAN"}
# Cinema
# Кинематограф
- {id: 429, cat: Movies, desc: "Новинки кинематографа"}
- {id: 886, cat: Movies/3D, desc: "Новинки (3D)"}
- {id: 703, cat: Movies, desc: "Экранки и Low-рипы (CAMRip, TS, WEBRip)"}
- {id: 430, cat: Movies, desc: "Новинки 2018-2019 (Rips)"}
- {id: 431, cat: Movies/WEBDL, desc: "Новинки 2018-2019 (Web-DL, HD Rips)"}
- {id: 934, cat: Movies/BluRay, desc: "Новинки 2018-2019 (Blu-Ray и BDRemux)"}
- {id: 908, cat: Movies, desc: "Экранки и Low-рипы с рекламой"}
- {id: 909, cat: Movies/HD, desc: "Новинки 2018-2019 (HD и HD Rips) с рекламой"}
- {id: 74, cat: Movies/Foreign, desc: "Зарубежное кино"}
- {id: 121, cat: Movies/BluRay, desc: "Зарубежное кино | Blu-Ray и BDRemux"}
- {id: 122, cat: Movies/HD, desc: "Зарубежное кино | HD Rips"}
- {id: 123, cat: Movies/DVD, desc: "Зарубежное кино | DVD"}
- {id: 124, cat: Movies/Foreign, desc: "Зарубежное кино | Rips"}
- {id: 75, cat: Movies, desc: "Отечественное кино"}
- {id: 127, cat: Movies/BluRay, desc: "Отечественное кино | Blu-Ray и BDRemux"}
- {id: 128, cat: Movies/HD, desc: "Отечественное кино | HD Rips"}
- {id: 130, cat: Movies/DVD, desc: "Российское кино | DVD"}
- {id: 131, cat: Movies, desc: "Российское кино | Rips"}
- {id: 133, cat: Movies/DVD, desc: "Советское кино | DVD"}
- {id: 135, cat: Movies, desc: "Советское кино | Rips"}
- {id: 869, cat: Movies/3D, desc: "3D"}
- {id: 161, cat: TV/FOREIGN, desc: "Зарубежные сериалы"}
- {id: 160, cat: TV, desc: "Отечественные cериалы"}
- {id: 320, cat: TV, desc: "Мультфильмы"}
- {id: 938, cat: TV/HD, desc: "Мультфильмы | Blu-Ray и BDRemux"}
- {id: 324, cat: TV/HD, desc: "Мультфильмы | HD Rips"}
- {id: 325, cat: TV/SD, desc: "Мультфильмы | DVD"}
- {id: 326, cat: TV, desc: "Отечественные мультфильмы | Rips"}
- {id: 327, cat: TV, desc: "Отечественные короткометражные мультфильмы"}
- {id: 328, cat: TV, desc: "Зарубежные мультфильмы | Rips"}
- {id: 329, cat: TV, desc: "Зарубежные короткометражные мультфильмы"}
- {id: 330, cat: TV, desc: "Сборники мультфильмов"}
- {id: 321, cat: TV, desc: "Мультсериалы"}
- {id: 162, cat: TV/Documentary, desc: "Документальные фильмы и телепередачи"}
- {id: 392, cat: TV, desc: "Развлекательные телепередачи и шоу"}
# Anime
# Аниме
- {id: 693, cat: TV/Anime, desc: "Аниме (Основной)"}
- {id: 684, cat: TV/Anime, desc: "Аниме (DVD)"}
- {id: 677, cat: TV/Anime, desc: "Аниме DVD [Бутлег]"}
- {id: 96, cat: TV/Anime, desc: "Аниме DVD [Лицензии]"}
- {id: 678, cat: TV/Anime, desc: "Аниме (HD и Blu-ray)"}
- {id: 660, cat: TV/Anime, desc: "Аниме Blu-ray и Remux"}
- {id: 95, cat: TV/Anime, desc: "Аниме HD Rips"}
- {id: 106, cat: TV/Anime, desc: "Аниме Манга и прочий арт"}
- {id: 109, cat: TV/Anime, desc: "Аниме Манга"}
- {id: 107, cat: TV/Anime, desc: "Аниме Обои, артбуки и др."}
- {id: 685, cat: TV/Anime, desc: "Аниме Азиатские мультфильмы"}
- {id: 687, cat: TV/Anime, desc: "Аниме DVD"}
- {id: 686, cat: TV/Anime, desc: "Аниме Rips"}
- {id: 688, cat: TV/Anime, desc: "Аниме HD Rips"}
- {id: 680, cat: TV/Anime, desc: "Аниме (Хентай)"}
- {id: 681, cat: TV/Anime, desc: "Аниме Censored"}
- {id: 682, cat: TV/Anime, desc: "Аниме UnCensored"}
- {id: 683, cat: TV/Anime, desc: "Аниме PtCensored"}
- {id: 697, cat: TV/Anime, desc: "Аниме Манга, обои, артбуки и др."}
# Music and Music Video
# Музыка и Музыкальное видео
- {id: 451, cat: Audio/Lossless, desc: "Классическая музыка (lossless)"}
- {id: 452, cat: Audio/Lossless, desc: "Классическая музыка в современной обработке (lossless)"}
- {id: 453, cat: Audio/MP3, desc: "Классическая музыка (mp3)"}
- {id: 454, cat: Audio/MP3, desc: "Классическая музыка в современной обработке (mp3)"}
- {id: 455, cat: Audio/Video, desc: "Классическая музыка (video)"}
- {id: 457, cat: Audio/Lossless, desc: "Зарубежный Jazz, Blues (lossless)"}
- {id: 458, cat: Audio/Lossless, desc: "Отечественный Jazz, Blues (lossless)"}
- {id: 459, cat: Audio/MP3, desc: "Зарубежный Jazz, Blues (mp3)"}
- {id: 460, cat: Audio/MP3, desc: "Отечественный Jazz, Blues (mp3)"}
- {id: 461, cat: Audio/Video, desc: "Jazz, Blues (video)"}
- {id: 463, cat: Audio/Lossless, desc: "Зарубежный Reggae, Ska, Dub (lossless)"}
- {id: 464, cat: Audio/Lossless, desc: "Отечественный Reggae, Ska, Dub (lossless)"}
- {id: 465, cat: Audio/MP3, desc: "Зарубежный Reggae, Ska, Dub (mp3)"}
- {id: 466, cat: Audio/MP3, desc: "Отечественный Reggae, Ska, Dub (mp3)"}
- {id: 467, cat: Audio/Video, desc: "Reggae, Ska, Dub (video)"}
- {id: 469, cat: Audio/Lossless, desc: "Rосk (losslеss)"}
- {id: 470, cat: Audio/Lossless, desc: "Mеtаl (losslеss)"}
- {id: 471, cat: Audio/Lossless, desc: "Аltеrnаtivе, Рunk, Indереndеnt (lоsslеss)"}
- {id: 472, cat: Audio/MP3, desc: "Rосk (mр3)"}
- {id: 473, cat: Audio/MP3, desc: "Mеtаl (mр3)"}
- {id: 474, cat: Audio/MP3, desc: "Аltеrnаtivе, Рunk, Indереndеnt (mр3)"}
- {id: 475, cat: Audio/Video, desc: "Зарубежный Rock (video)"}
- {id: 477, cat: Audio/Lossless, desc: "Rосk, Punk, Alternative (losslеss)"}
- {id: 478, cat: Audio, desc: "Mеtаl (losslеss)"}
- {id: 479, cat: Audio/MP3, desc: "Rосk, Punk, Alternative (mр3)"}
- {id: 480, cat: Audio/MP3, desc: "Mеtаl (mр3)"}
- {id: 481, cat: Audio/Video, desc: "Отечественный Rock (video)"}
- {id: 483, cat: Audio/Lossless, desc: "Зарубежная Поп-музыка (lossless)"}
- {id: 484, cat: Audio/Lossless, desc: "Отечественная Поп-музыка (lossless)"}
- {id: 485, cat: Audio/Lossless, desc: "Eurodance, Technopop, Disco (lossless)"}
- {id: 486, cat: Audio/MP3, desc: "Зарубежная Поп-музыка (mp3)"}
- {id: 487, cat: Audio/MP3, desc: "Отечественная Поп-музыка (mp3)"}
- {id: 488, cat: Audio/MP3, desc: "Eurodance, Technopop, Disco (mp3)"}
- {id: 489, cat: Audio/MP3, desc: "Поп-музыка, Eurodance, Disco (официальные сборники) (mp3)"}
- {id: 490, cat: Audio/Video, desc: "Поп-музыка, Eurodance, Disco (video)"}
- {id: 492, cat: Audio/Lossless, desc: "Фольклор, Народная и Этническая музыка (lossless)"}
- {id: 493, cat: Audio/MP3, desc: "Фольклор, Народная и Этническая музыка (mp3)"}
- {id: 494, cat: Audio/Video, desc: "Фольклор, Народная и Этническая музыка (video)"}
- {id: 496, cat: Audio/Lossless, desc: "NewAge, Meditative (lossless)"}
- {id: 497, cat: Audio/Lossless, desc: "Flamenco, Акустическая гитара (lossless)"}
- {id: 498, cat: Audio/MP3, desc: "NewAge, Meditative (mp3)"}
- {id: 499, cat: Audio/MP3, desc: "Flamenco, Акустическая гитара (mp3)"}
- {id: 500, cat: Audio/Video, desc: "New Age, Relax, Meditative &amp; Flamenco (video)"}
- {id: 501, cat: Audio, desc: "Звуки природы"}
- {id: 502, cat: Audio, desc: сихоактивныe аудиопрограммы"}
- {id: 504, cat: Audio/Lossless, desc: "Зарубежный Rap, Hip-Hop, R&#039;n&#039;B (lossless)"}
- {id: 505, cat: Audio/Lossless, desc: "Отечественный Rap, Hip-Hop, R&#039;n&#039;B (lossless)"}
- {id: 506, cat: Audio/MP3, desc: "Зарубежный Rap, Hip-Hop, R&#039;n&#039;B (mp3)"}
- {id: 507, cat: Audio/MP3, desc: "Отечественный Rap, Hip-Hop, R&#039;n&#039;B (mp3)"}
- {id: 508, cat: Audio/Video, desc: "Rap, Hip-Hop, R&#039;n&#039;B (video)"}
- {id: 510, cat: Audio/Lossless, desc: "Trance, Goa Trance, Psy-Trance, PsyChill, Ambient Dub (lossl.."}
- {id: 511, cat: Audio/Lossless, desc: "House, Techno, Hardcore, Hardstyle, Jumpstyle (lossless)"}
- {id: 512, cat: Audio/Lossless, desc: "Drum &amp; Bass, Jungle, Breakbeat, Dubstep, IDM (lossless)"}
- {id: 513, cat: Audio/Lossless, desc: "Chillout, Lounge, Downtempo, Trip-Hop (lossless)"}
- {id: 514, cat: Audio/Lossless, desc: "Traditional Electronic, Ambient, Experimental (lossless)"}
- {id: 515, cat: Audio, desc: "Industrial, Noise, EBM, Dark Electro, Aggrotech, Synthpop, N.."}
- {id: 516, cat: Audio/MP3, desc: "Trance, Goa Trance, Psy-Trance, PsyChill, Ambient Dub (mp3)"}
- {id: 517, cat: Audio/MP3, desc: "House, Techno, Hardcore, Hardstyle, Jumpstyle (mp3)"}
- {id: 518, cat: Audio/MP3, desc: "Drum &amp; Bass, Jungle, Breakbeat, Dubstep, IDM (mp3)"}
- {id: 519, cat: Audio/MP3, desc: "Chillout, Lounge, Downtempo, Trip-Hop (mp3)"}
- {id: 520, cat: Audio/MP3, desc: "Traditional Electronic, Ambient, Experimental (mp3)"}
- {id: 521, cat: Audio, desc: "Industrial, Noise, EBM, Dark Electro, Aggrotech, Synthpop, N.."}
- {id: 522, cat: Audio/Video, desc: "Электронная музыка (video)"}
- {id: 524, cat: Audio/Lossless, desc: "Зарубежный шансон (lossless)"}
- {id: 525, cat: Audio/Lossless, desc: "Отечественный шансон (lossless)"}
- {id: 526, cat: Audio/Lossless, desc: "Авторская песня (lossless)"}
- {id: 527, cat: Audio/Lossless, desc: "Военная песня (lossless)"}
- {id: 528, cat: Audio/MP3, desc: "Зарубежный шансон (mp3)"}
- {id: 529, cat: Audio/MP3, desc: "Отечественный шансон (mp3)"}
- {id: 530, cat: Audio, desc: "Отечественный шансон (официальные сборники) (mp3)"}
- {id: 531, cat: Audio/MP3, desc: "Авторская песня (mp3)"}
- {id: 532, cat: Audio/MP3, desc: "Военная песня (mp3)"}
- {id: 533, cat: Audio/Video, desc: "Шансон, Авторская и Военная песня (video)"}
- {id: 402, cat: Audio/Lossless, desc: "Саундтреки к фильмам и мультфильмам (lossless)"}
- {id: 403, cat: Audio/Lossless, desc: "Саундтреки к аниме (lossless)"}
- {id: 399, cat: Audio/Lossless, desc: "Саундтреки к играм (lossless)"}
- {id: 401, cat: Audio/MP3, desc: "Саундтреки к фильмам и мультфильмам (mp3)"}
- {id: 404, cat: Audio/MP3, desc: "Саундтреки к аниме (mp3)"}
- {id: 400, cat: Audio/MP3, desc: "Саундтреки к играм (mp3)"}
- {id: 535, cat: Audio/Lossless, desc: "Зарубежная музыка других жанров (lossless)"}
- {id: 536, cat: Audio/Lossless, desc: "Отечественная музыка других жанров (lossless)"}
- {id: 537, cat: Audio/MP3, desc: "Зарубежная музыка других жанров (mp3)"}
- {id: 538, cat: Audio/MP3, desc: "Отечественная музыка других жанров (mp3)"}
- {id: 539, cat: Audio/Video, desc: "Музыка других жанров (video)"}
- {id: 540, cat: Audio, desc: "Караоке и минусовки (фонограммы)"}
- {id: 541, cat: Audio, desc: "Сборники песен для детей"}
- {id: 542, cat: Audio, desc: "Неофициальные и внежанровые сборники"}
- {id: 543, cat: Audio, desc: "Неофициальные кинематографические видео"}
- {id: 545, cat: Audio, desc: "Многоканальная музыка"}
- {id: 546, cat: Audio, desc: "Собственные оцифровки"}
- {id: 547, cat: Audio, desc: "Hi-Res stereo"}
# Software
# Программное обеспечение
- {id: 202, cat: PC/Mac, desc: "Mac OS (для Apple Macintosh)"}
- {id: 203, cat: PC/Mac, desc: "Mac OS (для РС-Hackintosh)"}
- {id: 204, cat: PC/Mac, desc: "Программы для просмотра и обработки видео Mac OS"}
- {id: 205, cat: PC/Mac, desc: "Программы для создания и обработки графики Mac OS"}
- {id: 206, cat: PC/Mac, desc: "Аудио редакторы и конверторы для Mac OS"}
- {id: 207, cat: PC/Mac, desc: "Системные программы для Mac OS"}
- {id: 208, cat: PC/Mac, desc: "Другие программы для Mac OS"}
- {id: 215, cat: PC, desc: "Операционные системы (Unix и Unix-подобные)"}
- {id: 216, cat: PC, desc: "Программное обеспечение для Unix и Unix-подобных OS"}
- {id: 217, cat: PC, desc: "Другие OS и программное обеспечение под них"}
- {id: 227, cat: PC, desc: "Настольные OS, выпущенные до 2001 года (Microsoft Windows OS.."}
- {id: 228, cat: PC, desc: "Windows XP"}
- {id: 229, cat: PC, desc: "Windows Vista"}
- {id: 230, cat: PC, desc: "Windows 7"}
- {id: 879, cat: PC, desc: "Windows 8"}
- {id: 905, cat: PC, desc: "Windows 10"}
- {id: 698, cat: PC, desc: "Сборки (Microsoft Windows XP)"}
- {id: 701, cat: PC, desc: "Сборки (Microsoft Windows 7)"}
- {id: 880, cat: PC, desc: "Сборки (Microsoft Windows 8)"}
- {id: 906, cat: PC, desc: "Сборки (Microsoft Windows 10)"}
- {id: 231, cat: PC, desc: "Серверные (Microsoft Windows OS)"}
- {id: 232, cat: PC, desc: "Разное (Microsoft Windows OS)"}
- {id: 236, cat: PC, desc: "Работа с жёстким диском"}
- {id: 237, cat: PC, desc: "Резервное копирование"}
- {id: 240, cat: PC, desc: "Архиваторы и файловые менеджеры"}
- {id: 239, cat: PC, desc: "Программы для настройки и оптимизации ОС"}
- {id: 241, cat: PC, desc: "Сервисное обслуживание компьютера"}
- {id: 242, cat: PC, desc: "Работа с носителями информации"}
- {id: 243, cat: PC, desc: "Информация и диагностика"}
- {id: 244, cat: PC, desc: "Программы для интернет и сетей"}
- {id: 245, cat: PC, desc: "Антивирусы и Файерволы"}
- {id: 246, cat: PC, desc: "Программы для защиты информации"}
- {id: 247, cat: PC, desc: "Драйвера"}
- {id: 248, cat: PC, desc: "Серверное ПО для Windows"}
- {id: 249, cat: PC, desc: "Изменение интерфейса ОС Windows"}
- {id: 250, cat: PC, desc: "Скринсейверы"}
- {id: 251, cat: PC, desc: "Разное (Системные программы под Windows)"}
- {id: 409, cat: PC, desc: "Системы автоматизации проектных работ (САПР)"}
- {id: 607, cat: PC, desc: "Программы для архитекторов и дизайнеров интерьеров"}
- {id: 593, cat: PC, desc: "Офисные программы и системы"}
- {id: 595, cat: PC, desc: "Системы для научной работы"}
- {id: 594, cat: PC, desc: "Системы для бизнеса"}
- {id: 257, cat: PC, desc: "Каталогизаторы и просмотрщики графики"}
- {id: 258, cat: PC, desc: "Аудио- и видео-, CD- проигрыватели и каталогизаторы"}
- {id: 259, cat: PC, desc: "Программы для интернет и сетей"}
- {id: 260, cat: PC, desc: "Распознавание текста, звука и синтез речи"}
- {id: 261, cat: PC, desc: "Словари и переводчики"}
- {id: 262, cat: PC, desc: "Программное обеспечение для автолюбителей"}
- {id: 263, cat: PC, desc: "Медицинское программное обеспечение"}
- {id: 264, cat: PC, desc: "Справочные системы и карты"}
- {id: 265, cat: PC, desc: "Разное (Пользовательские программы)"}
- {id: 268, cat: PC, desc: "WYSIWYG Редакторы для веб-диза"}
- {id: 269, cat: PC, desc: "Текстовые редакторы с подсветкой"}
- {id: 270, cat: PC, desc: "Среды программирования, компиляторы и вспомогательные програ.."}
- {id: 271, cat: PC, desc: "Компоненты для сред программирования"}
- {id: 272, cat: PC, desc: "Системы управления базами данных (СУБД)"}
- {id: 273, cat: PC, desc: "Скрипты и шаблоны"}
- {id: 274, cat: PC, desc: "Разное (Веб-разработка и программирование)"}
- {id: 278, cat: PC, desc: "Программные комплекты"}
- {id: 279, cat: PC, desc: "Плагины для программ компании Adobe"}
- {id: 280, cat: PC, desc: "Графические редакторы"}
- {id: 281, cat: PC, desc: "Программы для верстки, печати и работы со шрифтами"}
- {id: 282, cat: PC, desc: "3D моделирование, рендеринг и плагины для них"}
- {id: 283, cat: PC, desc: "Анимация"}
- {id: 284, cat: PC, desc: "Создание DVD и BD дисков"}
- {id: 285, cat: PC, desc: "Редакторы видео"}
- {id: 286, cat: PC, desc: "Видео- Аудио- конверторы"}
- {id: 287, cat: PC, desc: "Работа со звуком"}
- {id: 290, cat: PC, desc: "Разное (Программы для работы с мультимедиа и 3D)"}
- {id: 293, cat: PC, desc: "Растровые и Векторные Клипарты"}
- {id: 294, cat: PC, desc: "Заготовки, виньетки, рамки"}
- {id: 295, cat: PC, desc: "Стили, кисти, формы и узоры для Adobe Photoshop"}
- {id: 296, cat: PC, desc: "Текстуры и материалы"}
- {id: 297, cat: PC, desc: "3D графика"}
- {id: 298, cat: PC, desc: "Футажи"}
- {id: 299, cat: PC, desc: "Звуковые эффекты"}
- {id: 300, cat: PC, desc: "Библиотеки сэмплов"}
- {id: 301, cat: PC, desc: "Шрифты"}
- {id: 302, cat: PC, desc: "Photostoсks"}
- {id: 303, cat: PC, desc: "Разное (Материалы для мультимедиа и дизайна)"}
- {id: 597, cat: PC, desc: "Справочно-правовые Системы"}
- {id: 600, cat: PC, desc: "Консультант Плюс"}
- {id: 599, cat: PC, desc: "Гарант"}
- {id: 601, cat: PC, desc: "Кодекс"}
- {id: 623, cat: PC, desc: "Мобильные телефоны"}
- {id: 624, cat: PC, desc: "КПК"}
- {id: 625, cat: PC, desc: "Навигаторы"}
- {id: 626, cat: PC, desc: "Карты для навигаторов"}
- {id: 627, cat: PC, desc: "Плееры"}
- {id: 628, cat: PC, desc: "Разное (Мобильные устройства и КПК)"}
- {id: 622, cat: PC/Phone-IOS, desc: "Apple Mobile Device Software"}
- {id: 667, cat: PC/Phone-IOS, desc: "Прошивки (iPhone/iPod Touch/iPad)"}
- {id: 668, cat: PC/Phone-IOS, desc: "Программы (iPhone/iPod Touch/iPad)"}
- {id: 669, cat: PC/Phone-IOS, desc: "Игры (iPhone/iPod Touch/iPad)"}
- {id: 670, cat: PC/Phone-IOS, desc: "Видео (iPhone/iPod Touch/iPad)"}
- {id: 672, cat: PC/Phone-IOS, desc: "Разное (iPhone/iPod Touch/iPad)"}
- {id: 671, cat: PC/Phone-IOS, desc: "Музыка (iPhone/iPod Touch/iPad)"}
- {id: 639, cat: PC, desc: "Обучающие видеоматериалы"}
- {id: 640, cat: PC, desc: "Мультимедийные материалы"}
- {id: 642, cat: PC, desc: "Разное"}
# Library
# Библиотека
- {id: 717, cat: Books, desc: "Аудиокниги"}
- {id: 740, cat: Books, desc: "Проект S.T.A.L.K.E.R."}
- {id: 738, cat: Books, desc: "Детектив / боевик"}
- {id: 739, cat: Books, desc: "Фантастика / фэнтези / мистика / ужасы"}
- {id: 836, cat: Books, desc: "Роман / комедийные произведения / приключения"}
- {id: 838, cat: Books, desc: "Классическая литература и современная проза"}
- {id: 837, cat: Books, desc: "Образование и Право"}
- {id: 843, cat: Books, desc: "Разное"}
- {id: 713, cat: Books, desc: "Художественная литература"}
- {id: 724, cat: Books, desc: "Детектив / боевик"}
- {id: 728, cat: Books, desc: "Фантастика / фэнтези / мистика / ужасы"}
- {id: 725, cat: Books, desc: "Роман / приключения / драма"}
- {id: 727, cat: Books, desc: "Комедийные произведения"}
- {id: 723, cat: Books, desc: "Историческая книга"}
- {id: 721, cat: Books, desc: "Классическая литература и современная проза"}
- {id: 722, cat: Books, desc: "Поэзия"}
- {id: 844, cat: Books, desc: "Разное"}
- {id: 718, cat: Books, desc: "Журналы"}
- {id: 763, cat: Books, desc: "Эротические журналы"}
- {id: 715, cat: Books, desc: "Компьютерная литература"}
- {id: 839, cat: Books, desc: "Научная и тех.литература"}
- {id: 719, cat: Books, desc: "Образование, Право и Психология"}
- {id: 846, cat: Books, desc: "Сексология"}
- {id: 840, cat: Books, desc: "Военное дело"}
- {id: 842, cat: Books, desc: "Спорт и физическое воспитание"}
- {id: 841, cat: Books, desc: "Хобби"}
- {id: 716, cat: Books, desc: "Дом и семейный очаг"}
- {id: 714, cat: Books, desc: "Книги для малышей и их родителей"}
- {id: 845, cat: Books, desc: "Комиксы"}
- {id: 741, cat: Books, desc: "Разное"}
# Technical assistance
# Техническая помощь
- {id: 578, cat: Other, desc: "µTorrent и BitTorrent 4.x, 5.x, 6.x"}
# Release - groups
# Релиз - группы
- {id: 378, cat: Other, desc: "Анонсы"}
# Miscellanea
# Разное
- {id: 644, cat: Other, desc: "Разное"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
login:
path: login.php
method: form
form: form[action$="/login.php"]
inputs:
login_username: "{{ .Config.username }}"
login_password: "{{ .Config.password }}"
autologin: 1
redirect: "index.php"
error:
- selector: h4:contains("Вы ввели")
test:
path: index.php
selector: a[href="./login.php?logout=1"]
search:
paths:
- path: tracker.php
inputs:
$raw: "{{ if .Categories }}{{ range .Categories }}f[]={{.}}&{{end}}{{else}}f[]=-1{{end}}"
nm: "{{ .Keywords }}"
o: 1
s: 2
tm: -1
sns: -1
rows:
selector: tr[id^="tor_"]
fields:
title:
selector: a.genmed
filters:
- name: replace
args: [" / ", " "]
- name: replace
args: ["Кураж-Бамбей", "kurazh"]
- name: replace
args: ["Кубик в Кубе", "Kubik"]
- name: re_replace
args: ["((\\([12][0-9]{3}\\))(.+)\\([Сс]езон\\s+(\\d+).+[Сс]ери[ия]\\s+(?:(\\d+-*\\d*).*\\d+)*\\))", " - S$4E$5 - rus $3"]
- name: re_replace
args: ["(\\([А-Яа-я\\W]+\\))|(^[А-Яа-я\\W\\d]+\\/ )|([а-яА-Я \\-]+,+)|([а-яА-Я]+)", "{{ if .Config.striprussian }}{{ else }}$1$2$3$4{{ end }}"]
- name: replace
args: ["-Rip", "Rip"]
- name: replace
args: ["WEB-DL", "WEBDL"]
- name: replace
args: ["WEBDLRip", "WEBDL"]
- name: replace
args: ["HDTVRip", "HDTV"]
details:
selector: a.genmed
attribute: href
download:
optional: true
selector: a[href^="./download.php?id="]
attribute: href
category:
selector: td a.gen
attribute: href
filters:
- name: querystring
args: f
size:
selector: td:nth-child(6) > u
date:
selector: td:last-child > u
seeders:
selector: td.seedmed > b
leechers:
selector: td.leechmed > b
downloadvolumefactor:
case:
img[src="images/tor_gold.gif"]: "0"
img[src="images/tor_silver.gif"]: "0.5"
"*": "1"
uploadvolumefactor:
text: "1"

View File

@@ -142,8 +142,15 @@
- name: querystring
args: category
download:
selector: td a[href^="download.php?id="]
selector: td a[href*="torrent-details"]
attribute: href
filters:
- name: querystring
args: id
- name: prepend
args: "download.php?id="
- name: append
args: "&f={{.Result.title}}.torrent"
banner:
selector: td a[href*="id="]
attribute: onmouseover
@@ -151,18 +158,18 @@
- name: regexp
args: "src=(.+?) width="
size:
selector: td:nth-child(5)
selector: td:nth-child(4)
seeders:
selector: td:nth-child(6)
selector: td:nth-child(5)
leechers:
selector: td:nth-child(7)
selector: td:nth-child(6)
grabs:
selector: td:nth-child(8)
selector: td:nth-child(7)
filters:
- name: replace
args: ["---", "0"]
date:
selector: td:nth-child(9)
selector: td:nth-child(8)
filters:
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portoguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch

View File

@@ -31,6 +31,8 @@
paths:
- path: src/releaselist.php
method: post
headers:
Referer: ["{{.Config.sitelink}}?releaselist"]
inputs:
cat: 0
page: 1

View File

@@ -7,7 +7,7 @@
encoding: UTF-8
followredirect: true
links:
- https://wvw.t9.pe/
- https://www.torrent9.cat/
legacylinks:
- http://www.torrent9.ec/
@@ -26,6 +26,7 @@
- https://www.torrent9.uno/
- https://wvw.torrent9.uno/
- https://ww1.torrent9.uno/
- https://wvw.t9.pe/
caps:
categorymappings:

View File

@@ -7,12 +7,15 @@
encoding: UTF-8
followredirect: true
links:
- https://wwv.torrent9.vg/
- https://www.torrent9.lol/
legacylinks:
- https://www.torrents9.pw/
- https://www.torrent9.ch/
- https://www1.torrent9.ch/
- https://www2.torrent9.ch/
- https://wwv.torrent9.vg/
- https://www.torrent9.vc/
- https://wvw.torrent9.vc/
caps:
categorymappings:

View File

@@ -6,6 +6,8 @@
type: public
encoding: UTF-8
links:
- https://gotorrentkitty.cc/
legacylinks:
- http://cntorrentkitty.com/
- http://cntorrentkitty.xyz/

View File

@@ -61,7 +61,7 @@
- path: "?t={{if .Keywords}}{{.Keywords}}{{else}}test{{end}}&orderby=latest{{if .Config.filter-verified }}&safe=on{{else}}{{end}}"
followredirect: true
rows:
selector: "#similarfiles div:has(a[href^=\"/t3-\"])"
selector: "#similarfiles div:has(a[href^=\"/t0-\"])"
fields:
title:
selector: span > a

View File

@@ -0,0 +1,863 @@
---
site: torrentslocal
name: Torrents-Local
description: "Torrents-Local is a RUSSIAN Semi-Private Torrent Tracker"
language: ru-ru
type: semi-private
encoding: UTF-8
links:
- https://torrents-local.xyz/
caps:
categorymappings:
# Кино, Видео и ТВ
- {id: 8, cat: Movies, desc: "Арт-хаус и авторское кино"}
- {id: 12, cat: Movies, desc: "Аниме"}
- {id: 473, cat: Movies, desc: "AMV и пр. видео"}
- {id: 214, cat: Movies, desc: "Dorama и live-action"}
- {id: 685, cat: Movies, desc: "DVD"}
- {id: 371, cat: Movies, desc: "HD"}
- {id: 932, cat: Movies, desc: "HD Полнометражные"}
- {id: 119, cat: Movies, desc: "OST"}
- {id: 561, cat: Movies, desc: "OST (lossless)"}
- {id: 149, cat: Movies, desc: "Манга"}
- {id: 148, cat: Movies, desc: "Онгоинги"}
- {id: 215, cat: Movies, desc: "Полнометражные"}
- {id: 202, cat: Movies, desc: "Фэндом"}
- {id: 6, cat: Movies, desc: "Зарубежное кино"}
- {id: 592, cat: Movies, desc: "Азиатские фильмы"}
- {id: 160, cat: Movies, desc: "Индийские фильмы"}
- {id: 813, cat: Movies, desc: "Коллекции"}
- {id: 591, cat: Movies, desc: "Фильмы до 1960 года"}
- {id: 590, cat: Movies, desc: "Фильмы 1961 - 2000"}
- {id: 589, cat: Movies, desc: "Фильмы 2001 - 2005"}
- {id: 588, cat: Movies, desc: "Фильмы 2006 - 2010"}
- {id: 945, cat: Movies, desc: "Фильмы 2011 - 2015"}
- {id: 978, cat: Movies, desc: "Фильмы 2016 - 2019"}
- {id: 479, cat: Movies, desc: "Фильмы на языке оригинала"}
- {id: 10, cat: Movies, desc: "Мультфильмы"}
- {id: 759, cat: Movies, desc: "Короткометражные"}
- {id: 475, cat: Movies, desc: "СССР"}
- {id: 7, cat: Movies, desc: "Отечественное кино"}
- {id: 227, cat: Movies, desc: "СССР"}
- {id: 888, cat: Movies, desc: "3D и 4K Видео"}
- {id: 399, cat: Movies, desc: "3D и 4K Кинофильмы"}
- {id: 339, cat: Movies, desc: "3D и 4K Мультфильмы"}
- {id: 948, cat: Movies, desc: "3D и 4K Документальные фильмы"}
- {id: 670, cat: Movies, desc: "Разное"}
- {id: 212, cat: Movies, desc: "Театр"}
- {id: 146, cat: Movies, desc: "Трейлеры и дополнительные материалы"}
- {id: 100, cat: Movies, desc: "Видео для портативных устройств"}
- {id: 105, cat: Movies, desc: "Видео для мобильных (3GP, MP4, AVI)"}
- {id: 690, cat: Movies, desc: "Видео для iPhone, iPod Touch"}
- {id: 689, cat: Movies, desc: "Видео для PSP"}
# DVD/HD видео"
- {id: 832, cat: Movies/HD, desc: "Арт-хаус и авторское кино HD"}
- {id: 835, cat: Movies/HD, desc: "Классика зарубежного кино"}
- {id: 837, cat: Movies/HD, desc: "Классика зарубежного кино DVD"}
- {id: 836, cat: Movies/HD, desc: "Классика зарубежного кино HD"}
- {id: 842, cat: Movies/HD, desc: "Зарубежное кино HD"}
- {id: 876, cat: Movies/HD, desc: "HD Коллекции"}
- {id: 845, cat: Movies/HD, desc: "HD до 2000 года"}
- {id: 844, cat: Movies/HD, desc: "HD 2001 - 2005"}
- {id: 843, cat: Movies/HD, desc: "HD 2006 - 2010"}
- {id: 870, cat: Movies/HD, desc: "HD 2011 - 2015"}
- {id: 980, cat: Movies/HD, desc: "HD 2016 - 2019"}
- {id: 846, cat: Movies/HD, desc: "Мультфильмы HD"}
- {id: 849, cat: Movies/HD, desc: "Отечественное кино DVD/HD"}
- {id: 851, cat: Movies/HD, desc: "Отечественное кино DVD"}
- {id: 850, cat: Movies/HD, desc: "Отечественное кино HD"}
# Сериалы
- {id: 14, cat: TV, desc: "Зарубежные сериалы"}
- {id: 862, cat: TV, desc: "Сборники"}
- {id: 454, cat: TV, desc: "Сериалы на языке оригинала"}
- {id: 115, cat: TV, desc: "24 часа / 24"}
- {id: 981, cat: TV, desc: "Ад на колёсах / Hell on Wheels"}
- {id: 982, cat: TV, desc: "Американская история ужасов / American Horror Story"}
- {id: 194, cat: TV, desc: "Анатомия страcти / Grey&#039;s Anatomy"}
- {id: 734, cat: TV, desc: "Антураж / Красавцы / Entourage"}
- {id: 997, cat: TV, desc: "Банши / Banshee"}
- {id: 153, cat: TV, desc: "Баффи - Истребительница вампиров / Buffy the Vampire..."}
- {id: 998, cat: TV, desc: "Белый воротничок / White Collar"}
- {id: 1013, cat: TV, desc: "Бесстыжие / Shameless"}
- {id: 379, cat: TV, desc: "Блудливая калифорния / Californication"}
- {id: 988, cat: TV, desc: "Бруклин 9-9 / Brooklyn Nine-Nine"}
- {id: 999, cat: TV, desc: "Быть человеком / Being Human"}
- {id: 992, cat: TV, desc: "В поле зрения / Person of Interest"}
- {id: 1000, cat: TV, desc: "Викинги / Vikings"}
- {id: 818, cat: TV, desc: "Во все тяжкие / Breaking Bad; Лучше звоните Солу / Better..."}
- {id: 1011, cat: TV, desc: "Воздействие / Leverage"}
- {id: 90, cat: TV, desc: "Герои / Heroes"}
- {id: 86, cat: TV, desc: "Говорящая с призраками / Ghost Whisperer"}
- {id: 558, cat: TV, desc: "Готэм / Gotham"}
- {id: 126, cat: TV, desc: "Грань / Fringe"}
- {id: 162, cat: TV, desc: "Гримм / Grimm"}
- {id: 1001, cat: TV, desc: "Далеко во Вселенной / Farscape"}
- {id: 134, cat: TV, desc: "Два с половиной человека / Two and a Half Men"}
- {id: 1002, cat: TV, desc: "Две девицы на мели / 2 Broke Girls"}
- {id: 81, cat: TV, desc: "Декстер / Dexter"}
- {id: 114, cat: TV, desc: "Демоны Да Винчи / Da Vinci&#039;s Demons"}
- {id: 380, cat: TV, desc: "Дефективный детектив / Monk"}
- {id: 164, cat: TV, desc: "Дневники вампира / The Vampire Diaries; Древние / The..."}
- {id: 112, cat: TV, desc: "Доктор Кто / Doctor Who"}
- {id: 61, cat: TV, desc: "Доктор Хаус / House M.D."}
- {id: 121, cat: TV, desc: "Друзья / Friends &amp; Джо / Joey"}
- {id: 560, cat: TV, desc: "Её звали Никита / La Femme Nikita"}
- {id: 125, cat: TV, desc: "Зачарованные / Charmed"}
- {id: 91, cat: TV, desc: "Звездные Врата / Stargate"}
- {id: 433, cat: TV, desc: "Звездный крейсер Галактика / Battlestar Galactica"}
- {id: 92, cat: TV, desc: "Звездный путь / Star Trek"}
- {id: 220, cat: TV, desc: "Игра Престолов / Game of Thrones"}
- {id: 245, cat: TV, desc: "Как сказал Джим / According to Jim"}
- {id: 201, cat: TV, desc: "Как я встретил вашу маму / How I met your mother"}
- {id: 995, cat: TV, desc: "Карточный домик / House of Cards"}
- {id: 641, cat: TV, desc: "Касл / Castle"}
- {id: 653, cat: TV, desc: "Клан Сопрано / The Sopranos"}
- {id: 127, cat: TV, desc: "Коломбо / Columbo"}
- {id: 191, cat: TV, desc: "Компьютерщики / The IT Crowd"}
- {id: 1010, cat: TV, desc: "Континуум / Continuum"}
- {id: 196, cat: TV, desc: "Кости / Bones"}
- {id: 431, cat: TV, desc: "Косяки (Дурман) / Weeds"}
- {id: 62, cat: TV, desc: "Клиника / Scrubs"}
- {id: 424, cat: TV, desc: "Легенда об Искателе / Legend of the Seeker"}
- {id: 387, cat: TV, desc: "Медиум / Medium"}
- {id: 1003, cat: TV, desc: "Менталист / The Mentalist"}
- {id: 193, cat: TV, desc: "Меня зовут Эрл / My name is Earl"}
- {id: 751, cat: TV, desc: "Мерлин / Merlin"}
- {id: 165, cat: TV, desc: "Мертвая зона / The Dead Zone"}
- {id: 192, cat: TV, desc: "Молокососы / Skins"}
- {id: 994, cat: TV, desc: "Мотель Бейтс / Bates Motel"}
- {id: 197, cat: TV, desc: "Мыслить как преступник / Criminal minds"}
- {id: 381, cat: TV, desc: "Настоящая Кровь / True Blood"}
- {id: 1014, cat: TV, desc: "Нация Z / Z Nation"}
- {id: 1004, cat: TV, desc: "Оборотень / Teen Wolf"}
- {id: 195, cat: TV, desc: "Одинокие сердца / The O.C."}
- {id: 1012, cat: TV, desc: "Однажды в сказке / Once Upon a Time"}
- {id: 990, cat: TV, desc: "Однокурсники / Community"}
- {id: 64, cat: TV, desc: "Остаться в живых / LOST"}
- {id: 198, cat: TV, desc: "Отбросы / Плохие / Misfits"}
- {id: 386, cat: TV, desc: "Отчаянные домохозяйки / Desperate housewives"}
- {id: 406, cat: TV, desc: "Офис / The Office"}
- {id: 63, cat: TV, desc: "Побег / Prison Break"}
- {id: 1005, cat: TV, desc: "Полтергейст: Наследие / Poltergeist: The Legacy"}
- {id: 583, cat: TV, desc: "Притворщик / Pretender"}
- {id: 1006, cat: TV, desc: "Прослушка / The Wire"}
- {id: 167, cat: TV, desc: "Пуаро Агаты Кристи / Agatha Christie&#039;s Poirot"}
- {id: 943, cat: TV, desc: "Редкие и старинные сериалы"}
- {id: 991, cat: TV, desc: "Рухнувшие небеса / Falling Skies"}
- {id: 98, cat: TV, desc: "Сверхъестественное / Supernatural"}
- {id: 88, cat: TV, desc: "Секретные материалы / X-files"}
- {id: 1007, cat: TV, desc: "Силиконовая долина / Silicon Valley"}
- {id: 166, cat: TV, desc: "Скорая помощь / ER"}
- {id: 385, cat: TV, desc: "Спартак / Spartacus"}
- {id: 752, cat: TV, desc: "Сплетница / Gossip Girl"}
- {id: 128, cat: TV, desc: "Стрела / Arrow"}
- {id: 983, cat: TV, desc: "Сыны Анархии / Sons of Anarchy"}
- {id: 101, cat: TV, desc: "Тайны Смолвиля / Smallville"}
- {id: 993, cat: TV, desc: "Темное дитя / Orphan Black"}
- {id: 190, cat: TV, desc: "Теория Большого Взрыва / The Big Bang Theory; Мол..."}
- {id: 738, cat: TV, desc: "Теория Лжи (Обмани меня) / Lie to me"}
- {id: 246, cat: TV, desc: "Торчвуд / Torchwood"}
- {id: 996, cat: TV, desc: "Уилфред / Wilfred"}
- {id: 129, cat: TV, desc: "Флэш / The Flash"}
- {id: 161, cat: TV, desc: "Ходячие мертвецы / The Walking Dead; Бойтесь хо..."}
- {id: 150, cat: TV, desc: "Холм одного дерева / One Tree Hill"}
- {id: 986, cat: TV, desc: "Хранилище 13 / Warehouse 13"}
- {id: 124, cat: TV, desc: "Части тела / Nip Tuck"}
- {id: 985, cat: TV, desc: "Чертова служба в госпитале Мэш / M*A*S*H"}
- {id: 984, cat: TV, desc: "Чёрный список / The Blacklist"}
- {id: 200, cat: TV, desc: "Числа / Numb3rs"}
- {id: 472, cat: TV, desc: "Шерлок / Sherlock"}
- {id: 1008, cat: TV, desc: "Штамм / The Strain"}
- {id: 123, cat: TV, desc: "Эврика / Eureka"}
- {id: 1009, cat: TV, desc: "Электронные жучки / Bugs"}
- {id: 987, cat: TV, desc: "Элементарно / Elementary"}
- {id: 597, cat: TV, desc: "Латиноамериканские сериалы"}
- {id: 11, cat: TV, desc: "Мультсериалы"}
- {id: 383, cat: TV, desc: "Аватар: Легенда об Аанге / Avatar: The Last Airbender"}
- {id: 889, cat: TV, desc: "Американский папаша / American Dad! (Seth MacFarlane)"}
- {id: 933, cat: TV, desc: "Бернард / Bernard"}
- {id: 143, cat: TV, desc: "Битва зверей / Beast Wars"}
- {id: 168, cat: TV, desc: "Букашки / Minuscule"}
- {id: 758, cat: TV, desc: "Гриффины / Family Guy (Seth MacFarlane)"}
- {id: 934, cat: TV, desc: "Губка Боб Квадратные Штаны / SpongeBob SquarePants"}
- {id: 46, cat: TV, desc: "Звездные войны / Star wars"}
- {id: 935, cat: TV, desc: "Маша и Медведь"}
- {id: 133, cat: TV, desc: "Мыши-байкеры с Марса / Biker Mice from Mars"}
- {id: 652, cat: TV, desc: "Охотники за привидениями"}
- {id: 936, cat: TV, desc: "Пингвины из Мадагаскара / The Penguins of Madagascar"}
- {id: 937, cat: TV, desc: "Приключения Лунтика"}
- {id: 938, cat: TV, desc: "Робоцып / Robot Chicken"}
- {id: 132, cat: TV, desc: "Симпсоны / The Simpsons"}
- {id: 421, cat: TV, desc: "Смешарики"}
- {id: 184, cat: TV, desc: "Том и Джерри / Tom and Jerry"}
- {id: 405, cat: TV, desc: "Тотали Спайс / Totally Spies"}
- {id: 142, cat: TV, desc: "Трансформеры / Transformers"}
- {id: 687, cat: TV, desc: "Футурама / Futurama"}
- {id: 384, cat: TV, desc: "Царь горы / King of the hill"}
- {id: 158, cat: TV, desc: "Что с Энди / What with Andy"}
- {id: 382, cat: TV, desc: "Школа волшебниц / Winx Club"}
- {id: 939, cat: TV, desc: "Шоу Кливленда / The Cleveland Show (Seth MacFarlane)"}
- {id: 434, cat: TV, desc: "Экранизация комиксов / Comics"}
- {id: 131, cat: TV, desc: "Южный Парк / South Park"}
- {id: 13, cat: TV, desc: "Отечественные cериалы"}
- {id: 137, cat: TV, desc: "Бригада"}
- {id: 188, cat: TV, desc: "Восьмидесятые"}
- {id: 815, cat: TV, desc: "Глухарь"}
- {id: 559, cat: TV, desc: "Интерны"}
- {id: 189, cat: TV, desc: "Кадетство"}
- {id: 221, cat: TV, desc: "Карпов"}
- {id: 422, cat: TV, desc: "Реальные пацаны"}
- {id: 661, cat: TV, desc: "Сваты"}
- {id: 138, cat: TV, desc: "Солдаты"}
- {id: 584, cat: TV, desc: "Убойная сила"}
- {id: 651, cat: TV, desc: "Улицы разбитых фонарей"}
- {id: 136, cat: TV, desc: "Универ"}
# Документалистика, юмор, спорт"
- {id: 57, cat: TV, desc: "Документальные фильмы и телепередачи"}
- {id: 155, cat: TV, desc: "BBC"}
- {id: 186, cat: TV, desc: "Discovery Channel"}
- {id: 570, cat: TV, desc: "HD"}
- {id: 634, cat: TV, desc: "IMAX/3D"}
- {id: 403, cat: TV, desc: "National Geographic"}
- {id: 824, cat: TV, desc: "Авиация"}
- {id: 855, cat: TV, desc: "Биографии. Личности и кумиры"}
- {id: 856, cat: TV, desc: "Видовые, релаксационные"}
- {id: 443, cat: TV, desc: "Военное дело"}
- {id: 635, cat: TV, desc: "Диагностика кармы"}
- {id: 929, cat: TV, desc: "Документальные фильмы на языке оригинала"}
- {id: 554, cat: TV, desc: "Живая планета"}
- {id: 830, cat: TV, desc: "За рулем"}
- {id: 867, cat: TV, desc: "Информационно-аналитические передачи и публицистика"}
- {id: 633, cat: TV, desc: "История и мировая культура"}
- {id: 531, cat: TV, desc: "Космос"}
- {id: 185, cat: TV, desc: "Криминальная документалистика"}
- {id: 965, cat: TV, desc: "Научно-популярные фильмы"}
- {id: 866, cat: TV, desc: "Паранормальные явления и экстрасенсорика"}
- {id: 523, cat: TV, desc: "Политика и экономика"}
- {id: 949, cat: TV, desc: "Путешествия и туризм"}
- {id: 425, cat: TV, desc: "Религия"}
- {id: 109, cat: TV, desc: "Обои и картинки"}
- {id: 890, cat: TV, desc: "Абстракции"}
- {id: 736, cat: TV, desc: "Аватары, Иконки, Смайлы"}
- {id: 625, cat: TV, desc: "Живопись, Графика, Фэнтези арт"}
- {id: 891, cat: TV, desc: "Игры"}
- {id: 626, cat: TV, desc: "Картинки"}
- {id: 899, cat: TV, desc: "Кино и мультфильмы"}
- {id: 927, cat: TV, desc: "Компьютеры, ноутбуки, Интернет"}
- {id: 919, cat: TV, desc: "Космос"}
- {id: 898, cat: TV, desc: "Красивые девушки"}
- {id: 920, cat: TV, desc: "Кулинария"}
- {id: 627, cat: TV, desc: "Обои на разную тематику"}
- {id: 926, cat: TV, desc: "Праздники"}
- {id: 892, cat: TV, desc: "Природа, города и страны"}
- {id: 893, cat: TV, desc: "Спорт"}
- {id: 894, cat: TV, desc: "Техника"}
- {id: 628, cat: TV, desc: "Фото знаменитостей"}
- {id: 58, cat: TV, desc: "Развлекательные телепередачи и шоу, приколы и юмор"}
- {id: 154, cat: TV, desc: "Comedy Club"}
- {id: 551, cat: TV, desc: "Top Gear"}
- {id: 877, cat: TV, desc: "Авторские шоу и концерты, бенефисы и концертографии"}
- {id: 878, cat: TV, desc: "Демонстрационные шоу"}
- {id: 145, cat: TV, desc: "КВН"}
- {id: 858, cat: TV, desc: "Пародийные телепередачи и шоу"}
- {id: 632, cat: TV, desc: "Познавательно-развлекательные телепередачи, игры и виктори..."}
- {id: 621, cat: TV, desc: "Пост-КВН и Молодежные скетч-шоу"}
- {id: 857, cat: TV, desc: "Премии вручения, праздничные и новогодние программы"}
- {id: 930, cat: TV, desc: "Развлекательные телепередачи на языке оригинала"}
- {id: 372, cat: TV, desc: "Реалити и ток-шоу"}
- {id: 59, cat: TV, desc: "Спорт"}
- {id: 208, cat: TV, desc: "Автоспорт"}
- {id: 750, cat: TV, desc: "Американский футбол, регби и бейсбол"}
- {id: 229, cat: TV, desc: "Биатлон и лыжи"}
- {id: 528, cat: TV, desc: "Бильярд"}
- {id: 206, cat: TV, desc: "Боевые искусства"}
- {id: 828, cat: TV, desc: "Бокс"}
- {id: 205, cat: TV, desc: "Брейк-данс"}
- {id: 207, cat: TV, desc: "Велоспорт и мотоспорт"}
- {id: 210, cat: TV, desc: "Культуризм, фитнес"}
- {id: 407, cat: TV, desc: "Паркур"}
- {id: 817, cat: TV, desc: "Покер"}
- {id: 404, cat: TV, desc: "Скейтборд"}
- {id: 209, cat: TV, desc: "Сноуборд"}
- {id: 673, cat: TV, desc: "Теннис"}
- {id: 791, cat: TV, desc: "Зимние Олимпийские Игры 2014 в Сочи"}
- {id: 793, cat: TV, desc: "Биатлон"}
- {id: 970, cat: TV, desc: "Бобслей/Санный спорт/Скелетон"}
- {id: 795, cat: TV, desc: "Конькобежный спорт"}
- {id: 794, cat: TV, desc: "Лыжный спорт"}
- {id: 971, cat: TV, desc: "Сноуборд/Фристайл/Шорт-трек/Керлинг"}
- {id: 969, cat: TV, desc: "Фигурное катание"}
- {id: 792, cat: TV, desc: "Хоккей"}
- {id: 797, cat: TV, desc: "Обзорные и разные тематические передачи"}
- {id: 60, cat: TV, desc: "Футбол"}
- {id: 490, cat: TV, desc: "Игры национальных сборных"}
- {id: 491, cat: TV, desc: "Международные лиги и кубки"}
- {id: 492, cat: TV, desc: "Национальные чемпионаты и кубки зарубежных стран"}
- {id: 489, cat: TV, desc: "Обзоры и передачи о футболе"}
- {id: 649, cat: TV, desc: "Товарищеские и выставочные матчи"}
- {id: 488, cat: TV, desc: "Футбольное видео"}
- {id: 493, cat: TV, desc: "Чемпионат и Кубок России"}
- {id: 829, cat: TV, desc: "Чемпионат мира 2014"}
- {id: 204, cat: TV, desc: "Хоккей"}
- {id: 450, cat: TV, desc: "NHL"}
- {id: 449, cat: TV, desc: "КХЛ"}
- {id: 451, cat: TV, desc: "Международные турниры по хоккею"}
- {id: 636, cat: TV, desc: "Обучающее видео"}
- {id: 452, cat: TV, desc: "Хоккейное видео"}
- {id: 203, cat: TV, desc: "Баскетбол"}
- {id: 662, cat: TV, desc: "NBA"}
- {id: 760, cat: TV, desc: "NCAA"}
- {id: 666, cat: TV, desc: "Баскетбольное видео"}
- {id: 664, cat: TV, desc: "Европейский клубный баскетбол"}
- {id: 663, cat: TV, desc: "Международные турниры"}
- {id: 665, cat: TV, desc: "Обучающее видео"}
- {id: 763, cat: TV, desc: "Рестлинг"}
- {id: 897, cat: TV, desc: "DVD"}
- {id: 814, cat: TV, desc: "NXT"}
- {id: 772, cat: TV, desc: "Packs &amp; Documentaries"}
- {id: 764, cat: TV, desc: "RAW"}
- {id: 765, cat: TV, desc: "SmackDown!"}
- {id: 768, cat: TV, desc: "TNA IMPACT WRESTLING"}
- {id: 770, cat: TV, desc: "TNA PPV"}
- {id: 896, cat: TV, desc: "WWE Classics"}
- {id: 769, cat: TV, desc: "WWE PPV"}
# Книги, аудиокниги, обучающие видео"
- {id: 15, cat: Books, desc: "Книги (общий раздел)"}
- {id: 1015, cat: Books, desc: "Собрание сочинений"}
- {id: 1016, cat: Books, desc: "Издательские серии и циклы"}
- {id: 852, cat: Books, desc: "Библиотеки и собрания книг"}
- {id: 1018, cat: Books, desc: "Естественные и формальные науки"}
- {id: 358, cat: Books, desc: "Научно-популярная литература"}
- {id: 1032, cat: Books, desc: "Головоломки, логические задачи и игры"}
- {id: 942, cat: Books, desc: "Иностранные языки"}
- {id: 20, cat: Books, desc: "Авто и мото"}
- {id: 359, cat: Books, desc: "Детские книги и журналы"}
- {id: 97, cat: Books, desc: "Журналы (общий раздел)"}
- {id: 972, cat: Books, desc: "Искусство. Культурология. Путеводители"}
- {id: 356, cat: Books, desc: "Искусство фотографии"}
- {id: 354, cat: Books, desc: "Историческая литература и военное дело"}
- {id: 116, cat: Books, desc: "Комиксы"}
- {id: 973, cat: Books, desc: "Кулинария"}
- {id: 352, cat: Books, desc: "Медицина и здоровье"}
- {id: 816, cat: Books, desc: "Многопредметные энциклопедии и словари"}
- {id: 446, cat: Books, desc: "Ноты и музыкальная литература"}
- {id: 946, cat: Books, desc: "Психология. Философия. Эзотерика."}
- {id: 756, cat: Books, desc: "Радиоэлектроника"}
- {id: 355, cat: Books, desc: "Рисунок, графический дизайн"}
- {id: 353, cat: Books, desc: "Спорт, боевые искусства"}
- {id: 357, cat: Books, desc: "Строительство и ремонт"}
- {id: 94, cat: Books, desc: "Учебные"}
- {id: 93, cat: Books, desc: "Художественные"}
- {id: 640, cat: Books, desc: "Хобби и увлечения, коллекционирование (разное)"}
- {id: 1019, cat: Books, desc: "Художественная литература"}
- {id: 1020, cat: Books, desc: "Собрание сочинений (классическая литература)"}
- {id: 1021, cat: Books, desc: "Собрание сочинений (классическая фантастика/фэнтези)"}
- {id: 1022, cat: Books, desc: "Собрание сочинений (современная литература)"}
- {id: 1023, cat: Books, desc: "Собрание сочинений (современная фантастика/фэнтези)"}
- {id: 1024, cat: Books, desc: "Издательские серии и циклы"}
- {id: 1025, cat: Books, desc: "Библиотеки и собрания книг"}
- {id: 1026, cat: Books, desc: "Классическая русская литература"}
- {id: 1027, cat: Books, desc: "Классическая зарубежная литература"}
- {id: 1028, cat: Books, desc: "Классическая фантастика и фэнтези"}
- {id: 1029, cat: Books, desc: "Современная литература"}
- {id: 1030, cat: Books, desc: "Современная фантастика и фэнтези"}
- {id: 1031, cat: Books, desc: "Ранобэ"}
- {id: 16, cat: Books, desc: "Компьютерная литература"}
- {id: 344, cat: Books, desc: "Unix-подобная операционная система"}
- {id: 346, cat: Books, desc: "Веб-дизайн и программирование"}
- {id: 348, cat: Books, desc: "Графика"}
- {id: 351, cat: Books, desc: "Железо (книги о ПК)"}
- {id: 341, cat: Books, desc: "Компьютерные журналы"}
- {id: 347, cat: Books, desc: "Программирование"}
- {id: 343, cat: Books, desc: "Программы"}
- {id: 342, cat: Books, desc: "Программы от Microsoft"}
- {id: 349, cat: Books, desc: "Сети"}
- {id: 345, cat: Books, desc: "Базы данных, СУБД"}
- {id: 350, cat: Books, desc: "Хакинг и безопасность"}
- {id: 17, cat: Books, desc: "Аудиокниги"}
- {id: 941, cat: Books, desc: "Детская литература"}
- {id: 940, cat: Books, desc: "Иностранные языки"}
- {id: 468, cat: Books, desc: "Классическая литература (Аудиокниги)"}
- {id: 853, cat: Books, desc: "Психология, тренинги, саморазвитие (Аудиокниги)"}
- {id: 95, cat: Books, desc: "Современная литература (Аудиокниги)"}
- {id: 96, cat: Books, desc: "Учебные аудиокниги (разное)"}
- {id: 854, cat: Books, desc: "Фантастика / Фэнтези / Мистика (Аудиокниги)"}
- {id: 19, cat: Books, desc: "Видеоуроки и обучающие интерактивные DVD"}
- {id: 629, cat: Books, desc: "Авто и мото"}
- {id: 596, cat: Books, desc: "Беременность, роды, уход за новорождённым"}
- {id: 439, cat: Books, desc: "Бизнес"}
- {id: 575, cat: Books, desc: "Для детей"}
- {id: 642, cat: Books, desc: "Игра на барабанах"}
- {id: 522, cat: Books, desc: "Иностранные языки"}
- {id: 426, cat: Books, desc: "Йога"}
- {id: 595, cat: Books, desc: "Кулинария"}
- {id: 744, cat: Books, desc: "Массаж"}
- {id: 577, cat: Books, desc: "Медицина и здоровье"}
- {id: 219, cat: Books, desc: "Музыка"}
- {id: 811, cat: Books, desc: "Пикап, правила общения"}
- {id: 217, cat: Books, desc: "ПО"}
- {id: 593, cat: Books, desc: "Психология, тренинги, саморазвитие"}
- {id: 654, cat: Books, desc: "Рисование"}
- {id: 218, cat: Books, desc: "Рыбалка"}
- {id: 747, cat: Books, desc: "Секреты красоты"}
- {id: 576, cat: Books, desc: "Строительство и ремонт"}
- {id: 474, cat: Books, desc: "Танцы"}
- {id: 743, cat: Books, desc: "Фокусы и трюки"}
- {id: 82, cat: Books, desc: "Подкасты"}
# Музыка"
- {id: 216, cat: Audio, desc: "Rocksteady, Ska, Reggae, Dub"}
- {id: 83, cat: Audio, desc: "World Music, Ethnic, Folk"}
- {id: 401, cat: Audio, desc: "Сборники"}
- {id: 598, cat: Audio, desc: "Башкирская, татарская"}
- {id: 617, cat: Audio, desc: "Видео"}
- {id: 616, cat: Audio, desc: "Сборники клипов"}
- {id: 615, cat: Audio, desc: "Сборники"}
- {id: 637, cat: Audio, desc: "Юмор"}
- {id: 22, cat: Audio, desc: "Джаз и Блюз"}
- {id: 606, cat: Audio, desc: "Lossless"}
- {id: 686, cat: Audio, desc: "Кавказ"}
- {id: 733, cat: Audio, desc: "Видео"}
- {id: 23, cat: Audio, desc: "Классическая музыка"}
- {id: 607, cat: Audio, desc: "Lossless"}
- {id: 27, cat: Audio, desc: "Музыка других жанров"}
- {id: 608, cat: Audio, desc: "Lossless"}
- {id: 553, cat: Audio, desc: "Мюзикл"}
- {id: 24, cat: Audio, desc: "Поп музыка"}
- {id: 470, cat: Audio, desc: "Зарубежная"}
- {id: 599, cat: Audio, desc: "Зарубежная (lossless)"}
- {id: 469, cat: Audio, desc: "Отечественная"}
- {id: 600, cat: Audio, desc: "Отечественная (lossless)"}
- {id: 471, cat: Audio, desc: "Сборники"}
- {id: 25, cat: Audio, desc: "Рэп, Хип-Хоп, R&#039;n&#039;B"}
- {id: 925, cat: Audio, desc: "WebRip Видео (Зарубежное)"}
- {id: 880, cat: Audio, desc: "WebRip Видео (Отечественное)"}
- {id: 410, cat: Audio, desc: "DVD видео"}
- {id: 411, cat: Audio, desc: "HD видео"}
- {id: 420, cat: Audio, desc: "Instrumental"}
- {id: 235, cat: Audio, desc: "Зарубежный Рэп, Хип-Хоп"}
- {id: 611, cat: Audio, desc: "Зарубежный Рэп, Хип-Хоп, R&#039;n&#039;B (lossless)"}
- {id: 921, cat: Audio, desc: "Зарубежный R&#039;n&#039;B"}
- {id: 922, cat: Audio, desc: "Отечественный R&#039;n&#039;B"}
- {id: 234, cat: Audio, desc: "Отечественный Рэп, Хип-Хоп"}
- {id: 612, cat: Audio, desc: "Отечественный Рэп, Хип-Хоп, R&#039;n&#039;B (lossless)"}
- {id: 409, cat: Audio, desc: "Видео (Заруб.)"}
- {id: 412, cat: Audio, desc: "Видео (Отеч.)"}
- {id: 26, cat: Audio, desc: "Саундтреки и Караоке"}
- {id: 484, cat: Audio, desc: "Саундтреки к играм"}
- {id: 579, cat: Audio, desc: "Саундтреки к играм (lossless)"}
- {id: 485, cat: Audio, desc: "Саундтреки к фильмам и сериалам"}
- {id: 580, cat: Audio, desc: "Саундтреки к фильмам и сериалам (lossless)"}
- {id: 735, cat: Audio, desc: "Караоке"}
- {id: 156, cat: Audio, desc: "Шансон, Авторская и Военная песня"}
- {id: 676, cat: Audio, desc: "Шансон"}
- {id: 677, cat: Audio, desc: "Авторская и Военная песня"}
- {id: 678, cat: Audio, desc: "Сборники"}
- {id: 239, cat: Audio, desc: "Видео (Музыка)"}
- {id: 241, cat: Audio, desc: "DVD"}
- {id: 240, cat: Audio, desc: "HD"}
- {id: 376, cat: Audio, desc: "Клипы (Зарубежные)"}
- {id: 375, cat: Audio, desc: "Клипы (Отечественные)"}
- {id: 549, cat: Audio, desc: "Сборники Клипов"}
# Рок-музыка"
- {id: 30, cat: Audio, desc: "Зарубежная Alternative"}
- {id: 267, cat: Audio, desc: "Alternative"}
- {id: 562, cat: Audio, desc: "Alternative (lossless)"}
- {id: 368, cat: Audio, desc: "Emo / Hardcore"}
- {id: 563, cat: Audio, desc: "Emo / Hardcore (lossless)"}
- {id: 369, cat: Audio, desc: "Industrial"}
- {id: 564, cat: Audio, desc: "Industrial (lossless)"}
- {id: 266, cat: Audio, desc: "Punk"}
- {id: 565, cat: Audio, desc: "Punk (lossless)"}
- {id: 364, cat: Audio, desc: "Отечественная Alternative"}
- {id: 370, cat: Audio, desc: "Alternative"}
- {id: 566, cat: Audio, desc: "Alternative (lossless)"}
- {id: 365, cat: Audio, desc: "Emo / Hardcore"}
- {id: 567, cat: Audio, desc: "Emo / Hardcore (lossless)"}
- {id: 366, cat: Audio, desc: "Industrial"}
- {id: 568, cat: Audio, desc: "Industrial (lossless)"}
- {id: 367, cat: Audio, desc: "Punk"}
- {id: 569, cat: Audio, desc: "Punk (lossless)"}
- {id: 29, cat: Audio, desc: "Зарубежный Metal"}
- {id: 254, cat: Audio, desc: "Avant-garde, Experimental"}
- {id: 498, cat: Audio, desc: "Avant-garde, Experimental (lossless)"}
- {id: 253, cat: Audio, desc: "Black, Folk, Pagan, Viking"}
- {id: 499, cat: Audio, desc: "Black, Folk, Pagan, Viking (lossless)"}
- {id: 252, cat: Audio, desc: "Death, Doom, Sludge, Stoner"}
- {id: 500, cat: Audio, desc: "Death, Doom, Sludge, Stoner (lossless)"}
- {id: 251, cat: Audio, desc: "Gothic Metal"}
- {id: 501, cat: Audio, desc: "Gothic Metal (lossless)"}
- {id: 250, cat: Audio, desc: "Grind, Brutal Death"}
- {id: 502, cat: Audio, desc: "Grind, Brutal Death (lossless)"}
- {id: 249, cat: Audio, desc: "Heavy, Power, Progressive"}
- {id: 503, cat: Audio, desc: "Heavy, Power, Progressive (lossless)"}
- {id: 895, cat: Audio, desc: "Symphonic, Operatic"}
- {id: 909, cat: Audio, desc: "Symphonic, Operatic (lossless)"}
- {id: 247, cat: Audio, desc: "Thrash, Speed"}
- {id: 504, cat: Audio, desc: "Thrash, Speed (lossless)"}
- {id: 28, cat: Audio, desc: "Зарубежный Rock"}
- {id: 260, cat: Audio, desc: "Classic Rock &amp; Hard Rock"}
- {id: 505, cat: Audio, desc: "Classic Rock &amp; Hard Rock (lossless)"}
- {id: 258, cat: Audio, desc: "Folk-Rock"}
- {id: 506, cat: Audio, desc: "Folk-Rock (lossless)"}
- {id: 444, cat: Audio, desc: "Garage Rock, Post-Punk, Gothic Rock, Synth Pop"}
- {id: 507, cat: Audio, desc: "Garage Rock, Post-Punk, Gothic Rock, Synth Pop (lossless)"}
- {id: 256, cat: Audio, desc: "Instrumental"}
- {id: 508, cat: Audio, desc: "Instrumental (lossless)"}
- {id: 257, cat: Audio, desc: "Indie Rock, Britpop, Pop-Rock, Soft Rock"}
- {id: 509, cat: Audio, desc: "Indie Rock, Britpop, Pop-Rock, Soft Rock (lossless)"}
- {id: 259, cat: Audio, desc: "Progressive &amp; Art-Rock"}
- {id: 510, cat: Audio, desc: "Progressive &amp; Art-Rock (lossless)"}
- {id: 255, cat: Audio, desc: "Rockabilly, Psychobilly, Rock&#039;n&#039;Roll"}
- {id: 511, cat: Audio, desc: "Rockabilly, Psychobilly, Rock&#039;n&#039;Roll (lossless)"}
- {id: 99, cat: Audio, desc: "Отечественный Метал"}
- {id: 336, cat: Audio, desc: "Black, Folk, Pagan, Viking"}
- {id: 512, cat: Audio, desc: "Black, Folk, Pagan, Viking (lossless)"}
- {id: 338, cat: Audio, desc: "Death, Grind"}
- {id: 513, cat: Audio, desc: "Death, Grind (lossless)"}
- {id: 335, cat: Audio, desc: "Doom, Gothic"}
- {id: 514, cat: Audio, desc: "Doom, Gothic (lossless)"}
- {id: 333, cat: Audio, desc: "Hard &amp; Heavy, Power, Speed, Thrash"}
- {id: 515, cat: Audio, desc: "Hard &amp; Heavy, Power, Speed, Thrash (lossless)"}
- {id: 334, cat: Audio, desc: "Progressive, Art"}
- {id: 516, cat: Audio, desc: "Progressive, Art (lossless)"}
- {id: 31, cat: Audio, desc: "Отечественный Рок"}
- {id: 360, cat: Audio, desc: "Classic Rock &amp; Hard Rock &amp; Rock&#039;n&#039;Roll"}
- {id: 517, cat: Audio, desc: "Classic Rock &amp; Hard Rock &amp; Rock&#039;n..."}
- {id: 361, cat: Audio, desc: "Progressive &amp; Art-Rock"}
- {id: 518, cat: Audio, desc: "Progressive &amp; Art-Rock (lossless)"}
- {id: 362, cat: Audio, desc: "Pop-Rock &amp; Soft Rock &amp; Folk Rock"}
- {id: 519, cat: Audio, desc: "Pop-Rock &amp; Soft Rock &amp; Folk Rock (lossless)"}
- {id: 141, cat: Audio, desc: "Experimental"}
- {id: 526, cat: Audio, desc: "Lossless"}
- {id: 85, cat: Audio, desc: "Восточноазиатский Рок / Поп"}
- {id: 527, cat: Audio, desc: "Lossless"}
- {id: 32, cat: Audio, desc: "Видео (Рок-музыка)"}
- {id: 374, cat: Audio, desc: "Alternative"}
- {id: 238, cat: Audio, desc: "DVD"}
- {id: 573, cat: Audio, desc: "Experimental"}
- {id: 237, cat: Audio, desc: "HD"}
- {id: 574, cat: Audio, desc: "J-Rock / Pop / Visual Kei"}
- {id: 571, cat: Audio, desc: "Metal"}
- {id: 572, cat: Audio, desc: "Rock"}
- {id: 373, cat: Audio, desc: "Документалистика"}
- {id: 400, cat: Audio, desc: "Сборники Рок-Музыки"}
# Электронная музыка"
- {id: 33, cat: Audio, desc: "Trance, Goa-Trance, Psy-Trance, PsyChill, Ambient Dub"}
- {id: 429, cat: Audio, desc: "Trance - Albums, Compilations"}
- {id: 430, cat: Audio, desc: "Trance - Radioshows, Livesets, Mixes"}
- {id: 874, cat: Audio, desc: "Trance - Singles, EPs"}
- {id: 533, cat: Audio, desc: "Trance - Singles, Albums, LPs (lossless)"}
- {id: 428, cat: Audio, desc: "Goa-Trance / Psychedelic / Psy-Chill / Ambient Dub"}
- {id: 534, cat: Audio, desc: "Goa-Trance / Psychedelic / Psy-Chill / Ambient Dub..."}
- {id: 658, cat: Audio, desc: "Сборники"}
- {id: 34, cat: Audio, desc: "House, Techno"}
- {id: 438, cat: Audio, desc: "Techno / Minimal / Tech House"}
- {id: 535, cat: Audio, desc: "Techno / Minimal / Tech House (lossless)"}
- {id: 435, cat: Audio, desc: "House / Electro House"}
- {id: 536, cat: Audio, desc: "House / Electro House (lossless)"}
- {id: 659, cat: Audio, desc: "Сборники House / Electro House"}
- {id: 398, cat: Audio, desc: "Livesets"}
- {id: 436, cat: Audio, desc: "Progressive House / Deep House"}
- {id: 396, cat: Audio, desc: "Vinyls / EPs / tracks"}
- {id: 35, cat: Audio, desc: "Drum &amp; Bass, Jungle, Electro, Breakbeat, IDM,..."}
- {id: 416, cat: Audio, desc: "Breakbeat / Beats"}
- {id: 540, cat: Audio, desc: "Breakbeat / Beats (lossless)"}
- {id: 415, cat: Audio, desc: "Drum &amp; Bass / Jungle"}
- {id: 543, cat: Audio, desc: "Drum &amp; Bass / Jungle (lossless)"}
- {id: 417, cat: Audio, desc: "Electro"}
- {id: 544, cat: Audio, desc: "Electro (lossless)"}
- {id: 419, cat: Audio, desc: "Hardcore / Hardstyle"}
- {id: 545, cat: Audio, desc: "Hardcore / Hardstyle (lossless)"}
- {id: 418, cat: Audio, desc: "Idm"}
- {id: 546, cat: Audio, desc: "Idm (lossless)"}
- {id: 660, cat: Audio, desc: "Сборники"}
- {id: 36, cat: Audio, desc: "Chillout, Lounge, Downtempo, Trip-Hop"}
- {id: 538, cat: Audio, desc: "Lossless"}
- {id: 402, cat: Audio, desc: "Сборники"}
- {id: 84, cat: Audio, desc: "Industrial"}
- {id: 539, cat: Audio, desc: "Lossless"}
- {id: 630, cat: Audio, desc: "Дискографии"}
- {id: 242, cat: Audio, desc: "Видео (Электронная музыка)"}
- {id: 244, cat: Audio, desc: "DVD"}
- {id: 243, cat: Audio, desc: "HD"}
- {id: 377, cat: Audio, desc: "Клипы"}
# Игры для PC"
- {id: 40, cat: PC/Games, desc: "Новые раздачи"}
- {id: 65, cat: PC/Games, desc: "Горячие Новинки"}
- {id: 75, cat: PC/Games, desc: "Action"}
- {id: 457, cat: PC/Games, desc: "Action до 2003 г."}
- {id: 900, cat: PC/Games, desc: "FPS (1st Person)"}
- {id: 901, cat: PC/Games, desc: "TPS (3rd Person)"}
- {id: 902, cat: PC/Games, desc: "Counter Strike"}
- {id: 102, cat: PC/Games, desc: "Horror"}
- {id: 456, cat: PC/Games, desc: "Horror до 2003 г."}
- {id: 822, cat: PC/Games, desc: "Азартные игры"}
- {id: 68, cat: PC/Games, desc: "Аркады"}
- {id: 464, cat: PC/Games, desc: "Аркады до 2003 г."}
- {id: 73, cat: PC/Games, desc: "Гонки"}
- {id: 463, cat: PC/Games, desc: "Гонки до 2003 г."}
- {id: 270, cat: PC/Games, desc: "Для самых маленьких"}
- {id: 823, cat: PC/Games, desc: "Другое"}
- {id: 624, cat: PC/Games, desc: "Программы для игр"}
- {id: 548, cat: PC/Games, desc: "Сборники до 2003 г."}
- {id: 67, cat: PC/Games, desc: "Демо-версии"}
- {id: 458, cat: PC/Games, desc: "Русификаторы \ Англофикаторы"}
- {id: 442, cat: PC/Games, desc: "Патчи"}
- {id: 66, cat: PC/Games, desc: "Модификации"}
- {id: 657, cat: PC/Games, desc: "Логические"}
- {id: 77, cat: PC/Games, desc: "Многопользовательские"}
- {id: 69, cat: PC/Games, desc: "Приключения и квесты"}
- {id: 461, cat: PC/Games, desc: "Приключения и квесты до 2003 г."}
- {id: 76, cat: PC/Games, desc: "Ролевые (RPG)"}
- {id: 455, cat: PC/Games, desc: "Ролевые (RPG) до 2003 г."}
- {id: 908, cat: PC/Games, desc: "Симуляторы"}
- {id: 271, cat: PC/Games, desc: "Спортивные симуляторы"}
- {id: 787, cat: PC/Games, desc: "Космические симуляторы"}
- {id: 74, cat: PC/Games, desc: "Другие симуляторы"}
- {id: 71, cat: PC/Games, desc: "Автосимуляторы"}
- {id: 72, cat: PC/Games, desc: "Авиасимуляторы"}
- {id: 70, cat: PC/Games, desc: "Стратегии"}
- {id: 459, cat: PC/Games, desc: "Стратегии до 2003 г."}
- {id: 903, cat: PC/Games, desc: "TBS (пошаговые стратегии)"}
- {id: 904, cat: PC/Games, desc: "RTS (стратегии в реальном времени)"}
- {id: 905, cat: PC/Games, desc: "Экономические стратегии"}
- {id: 496, cat: PC/Games, desc: "Файтинги"}
- {id: 497, cat: PC/Games, desc: "Файтинги до 2003 г."}
- {id: 906, cat: PC/Games, desc: "Репаки от R.G.Packers Torrents.Local"}
- {id: 38, cat: PC/Games, desc: "Игровые серверы"}
- {id: 961, cat: PC/Games, desc: "Игры с эмуляторами"}
- {id: 78, cat: PC/Games, desc: "Игровое видео"}
- {id: 117, cat: PC/Games, desc: "Counter-Strike"}
- {id: 483, cat: PC/Games, desc: "Lineage"}
- {id: 788, cat: PC/Games, desc: "Warcraft 3"}
- {id: 486, cat: PC/Games, desc: "World of Warcraft"}
- {id: 487, cat: PC/Games, desc: "Видеожурналы"}
- {id: 825, cat: PC/Games, desc: "Видеопрохождение игр"}
- {id: 482, cat: PC/Games, desc: "Телепередачи"}
# Игры для других платформ"
- {id: 44, cat: Console, desc: "Xbox 360"}
- {id: 868, cat: Console, desc: "PS3"}
- {id: 56, cat: Console, desc: "PS2"}
- {id: 337, cat: Console, desc: "PS1"}
- {id: 45, cat: Console, desc: "PSP"}
- {id: 42, cat: Console, desc: "Разное"}
# Программы и дизайн"
- {id: 918, cat: PC, desc: "Новые раздачи"}
- {id: 808, cat: PC, desc: "Android"}
- {id: 809, cat: PC, desc: "Игры"}
- {id: 810, cat: PC, desc: "Софт"}
- {id: 89, cat: PC, desc: "Linux, Unix и другие ОС"}
- {id: 631, cat: PC, desc: "Устаревшие дистрибутивы"}
- {id: 427, cat: PC, desc: "Программное обеспечение"}
- {id: 495, cat: PC, desc: "Игры"}
- {id: 55, cat: PC, desc: "Mac OS X, iPhone, iPod Touch"}
- {id: 586, cat: PC, desc: "Программы для iPhone/iPod Touch"}
- {id: 684, cat: PC, desc: "Игры для iPhone/iPod Touch"}
- {id: 683, cat: PC, desc: "Темы для iPhone/iPod Touch"}
- {id: 681, cat: PC, desc: "Дистрибутивы, сборки Mac OS X"}
- {id: 585, cat: PC, desc: "Программы для Mac OS X"}
- {id: 680, cat: PC, desc: "Игры для Mac OS X"}
- {id: 737, cat: PC, desc: "Разное"}
- {id: 50, cat: PC, desc: "Веб-разработка и Программирование"}
- {id: 319, cat: PC, desc: "WYSIWYG Редакторы для веб-диза"}
- {id: 316, cat: PC, desc: "Компоненты для сред программирования"}
- {id: 315, cat: PC, desc: "Скрипты и шаблоны"}
- {id: 317, cat: PC, desc: "Среды программирования, компиляторы и вспомогател..."}
- {id: 318, cat: PC, desc: "Текстовые редакторы"}
- {id: 52, cat: PC, desc: "ГИС, системы навигации и карты"}
- {id: 332, cat: PC, desc: "Материалы для мультимедиа и дизайна"}
- {id: 594, cat: PC, desc: "Авторские сборки"}
- {id: 582, cat: PC, desc: "Кисти"}
- {id: 746, cat: PC, desc: "Семплы"}
- {id: 552, cat: PC, desc: "Футажи"}
- {id: 581, cat: PC, desc: "Шрифты"}
- {id: 47, cat: PC, desc: "Операционные системы от Microsoft"}
- {id: 284, cat: PC, desc: "Настольные ОС от Microsoft (выпущенные до Windows XP)"}
- {id: 280, cat: PC, desc: "Windows XP"}
- {id: 282, cat: PC, desc: "Windows Vista"}
- {id: 378, cat: PC, desc: "Windows 7"}
- {id: 944, cat: PC, desc: "Windows 8"}
- {id: 789, cat: PC, desc: "Windows 10"}
- {id: 281, cat: PC, desc: "Серверные ОС"}
- {id: 732, cat: PC, desc: "WPI, Live CD, Пакеты обновлений"}
- {id: 51, cat: PC, desc: "Программы для работы с мультимедиа и 3D"}
- {id: 324, cat: PC, desc: "3D моделирование, рендеринг и плагины для них"}
- {id: 325, cat: PC, desc: "Анимация"}
- {id: 330, cat: PC, desc: "Аудио- и видео-, CD- проигрыватели и каталогизаторы"}
- {id: 328, cat: PC, desc: "Аудио- и видео- конверторы"}
- {id: 118, cat: PC, desc: "Графические редакторы"}
- {id: 331, cat: PC, desc: "Каталогизаторы и просмотрщики графики"}
- {id: 623, cat: PC, desc: "Кодеки"}
- {id: 329, cat: PC, desc: "Работа со звуком"}
- {id: 327, cat: PC, desc: "Редакторы видео"}
- {id: 326, cat: PC, desc: "Создание DVD-видео"}
- {id: 322, cat: PC, desc: "Плагины для программ компании Adobe"}
- {id: 321, cat: PC, desc: "Программные комплекты"}
- {id: 323, cat: PC, desc: "Программы для верстки, печати и работы со шрифтами"}
- {id: 48, cat: PC, desc: "Системные программы"}
- {id: 291, cat: PC, desc: "Анти-шпионы и анти-трояны"}
- {id: 300, cat: PC, desc: "Архиваторы и файловые менеджеры"}
- {id: 289, cat: PC, desc: "Драйвера"}
- {id: 287, cat: PC, desc: "Изменение интерфейса ОС Windows"}
- {id: 296, cat: PC, desc: "Информация и диагностика"}
- {id: 290, cat: PC, desc: "Программы для защиты информации"}
- {id: 295, cat: PC, desc: "Программы для интернет и сетей"}
- {id: 292, cat: PC, desc: "Программы для защиты компьютера"}
- {id: 299, cat: PC, desc: "Программы для настройки и оптимизации ОС"}
- {id: 297, cat: PC, desc: "Работа с носителями информации"}
- {id: 285, cat: PC, desc: "Работа с жёстким диском"}
- {id: 301, cat: PC, desc: "Резервное копирование"}
- {id: 288, cat: PC, desc: "Серверное ПО для Windows"}
- {id: 298, cat: PC, desc: "Сервисное обслуживание компьютера"}
- {id: 286, cat: PC, desc: "Скринсейверы"}
- {id: 54, cat: PC, desc: "Разное"}
- {id: 622, cat: PC, desc: "Обучающие программы, энциклопедии, электронные пособия ..."}
- {id: 303, cat: PC, desc: "Системы для бизнеса, офиса, научной и проектной работы"}
- {id: 313, cat: PC, desc: "Медицинский софт"}
- {id: 305, cat: PC, desc: "Офисные системы"}
- {id: 312, cat: PC, desc: "Программы для архитекторов и дизайнеров интерьеров"}
- {id: 314, cat: PC, desc: "Прочие справочные системы"}
- {id: 308, cat: PC, desc: "Работа с PDF и DjVu"}
- {id: 307, cat: PC, desc: "Распознавание текста, звука и синтез речи"}
- {id: 311, cat: PC, desc: "САПР"}
- {id: 306, cat: PC, desc: "Системы для бизнеса"}
- {id: 310, cat: PC, desc: "Системы для научной работы"}
- {id: 309, cat: PC, desc: "Словари, переводчики"}
modes:
search: [q]
login:
path: login.php
method: post
inputs:
"login_username": "{{ .Config.username }}"
"login_password": "{{ .Config.password }}"
autologin: 1
login: "Log in"
error:
- selector: h4.text-danger
test:
path: tracker.php
selector: a[href="./login.php?logout=1"]
search:
paths:
- path: tracker.php
method: post
inputs:
$raw: "{{ if .Categories }}{{ range .Categories }}f[]={{.}}&{{end}}{{else}}f[]=-1{{end}}"
prev_allw: 1
prev_a: 0
prev_dla: 0
prev_dlc: 0
prev_dld: 0
prev_dlw: 0
prev_my: 0
prev_new: 0
prev_sd: 0
prev_da: 1
prev_dc: 0
prev_df: 1
prev_ds: 0
prev_tor_type: 0
# sort by 1=registered 2=topicTitle 4=completed 10=seed 11=leech 12=up 13=down 5=replies 6=views 7=size 8=lastPost 9=seedLastSeen
o: 1
# 1=asc 2=desc
s: 2
# show category
dc: 0
# show forum
df: 1
# show author
da: 1
# show speed
ds: 0
# -1=all time
tm: -1
# seed not seen -1=disregard
sns: -1
# group releases -1=not selected
srg: -1
nm: "{{ .Keywords }}"
# find a username
pn: ""
rows:
selector: tr[id^="tor_"]
fields:
title:
selector: td a.genmed b
details:
selector: td a.genmed
attribute: href
download:
selector: td a.tr-dl
attribute: href
category:
selector: td a.gen
attribute: href
filters:
- name: querystring
args: "f"
size:
selector: td a.tr-dl
filters:
- name: replace
args: [".", ""]
- name: replace
args: [",", "."]
seeders:
selector: td.seedmed
leechers:
selector: td.leechmed
# Russian and Ukranian and English languages are supported
grabs:
optional: true
selector: td[title^="Ответов"]
grabs:
optional: true
selector: td[title^="Відповідей"]
grabs:
optional: true
selector: td[title^="Replies"]
# date for English, Russian, Ukrainian
date:
selector: td[title="Added"] p:last-of-type, td[title="Добавлен"] p:last-of-type, td[title="Додано"] p:last-of-type
filters:
# replace month abbreviations
- name: re_replace
args: ["Янв|Січ", "Jan"]
- name: re_replace
args: ["Фев|Лют", "Feb"]
- name: re_replace
args: ["Мар|Бер", "Mar"]
- name: re_replace
args: ["Апр|Кві", "Apr"]
- name: re_replace
args: ["Май|Травень", "May"]
- name: re_replace
args: ["Июн|Чер", "Jun"]
- name: re_replace
args: ["Июл|Лип", "Jul"]
- name: re_replace
args: ["Авг|Сер", "Aug"]
- name: re_replace
args: ["Сен|Вер", "Sep"]
- name: re_replace
args: ["Окт|Жов", "Oct"]
- name: re_replace
args: ["Ноя|Лис", "Nov"]
- name: re_replace
args: ["Дек|Грудень", "Dec"]
- name: dateparse
args: "2-Jan-06"
downloadvolumefactor:
case:
img[src="styles/images/tor_gold.gif"]: "0"
img[src="styles/images/tor_silver.gif"]: "0.5"
"*": "1"
uploadvolumefactor:
case:
"*": "1"

View File

@@ -16,7 +16,7 @@
modes:
search: [q]
tv-search: [q, season, ep]
music-search: [q, album, artist, label, year]
login:
path: takelogin.php
@@ -33,7 +33,7 @@
paths:
- path: browse.php
inputs:
search: "{{ .Query.Keywords }}"
search: "{{if .Query.Artist}}{{ .Query.Artist }}{{else}}{{ .Keywords }}{{end}}"
rows:
selector: table.mainouter table > tbody > tr:has(a[href^="details.php?id="])
fields:

View File

@@ -158,15 +158,9 @@
attribute: title
filters:
- name: replace
args: ["FREE LEECH!", "0"]
downloadvolumefactor:
optional: true
selector: img[src$="torrent_multiple_download.png"]
attribute: title
filters:
- name: split
args: [":", 1]
- name: trim
args: ["No cuenta la descarga", "0"]
- name: replace
args: ["Cuenta descarga: 0.5", "0.5"]
uploadvolumefactor:
text: "1"
uploadvolumefactor:
@@ -174,10 +168,9 @@
selector: img[src$="torrent_multiple_upload.png"]
attribute: title
filters:
- name: split
args: [":", 1]
- name: trim
- name: replace
args: ["Cuenta subida por: 2", 2]
minimumratio:
text: "1.0"
minimumseedtime:
text: "259200" # 3 day (72h)
text: "345600" # 4 day (96h)

View File

@@ -61,6 +61,19 @@
modes:
search: [q]
tv-search: [q, season, ep]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: seedbox
type: checkbox
label: "Use SeedBox Download Link"
default: false
login:
path: login.php
@@ -103,9 +116,14 @@
title:
selector: a[href^="details.php?id="]
attribute: title
download:
download1:
selector: a[href^="download.php"]
attribute: href
download2:
selector: a[href^="download2.php"]
attribute: href
download:
text: "{{if .Config.seedbox}}{{ .Result.download2 }}{{else}}{{ .Result.download1 }}{{end}}"
details:
selector: a[href^="details.php?id="]
attribute: href

View File

@@ -1,7 +1,8 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig;
@@ -91,6 +92,13 @@ namespace Jackett.Common.Indexers
var btnOffset = query.Offset;
var releases = new List<ReleaseInfo>();
// If only the season is searched for then change format to match expected format
var seasonOnlyMatch = new Regex(@".*\s[Ss]{1}\d{2}(?<![Ee]{1}\d{2,3})?$").Match(searchString);
if (seasonOnlyMatch.Success)
{
searchString = Regex.Replace(searchString, @"[Ss]{1}\d{2}", $"Season {query.Season}");
}
var parameters = new JArray();
parameters.Add(new JValue(configData.Key.Value));
parameters.Add(new JValue(searchString.Trim()));

View File

@@ -155,34 +155,29 @@ namespace Jackett.Common.Indexers
release.Title = qRow.Find("td.mainblockcontent b a").Text();
release.Description = qRow.Find("td:nth-child(3) > span").Text();
if (0 != qRow.Find("td.mainblockcontent u").Length)
{
var imdbStr = qRow.Find("td.mainblockcontent u").Parent().First().Attr("href").Replace("http://www.imdb.com/title/tt", "").Replace("/", "");
long imdb;
if (ParseUtil.TryCoerceLong(imdbStr, out imdb))
{
release.Imdb = imdb;
}
}
release.MinimumRatio = 1;
release.MinimumSeedTime = 172800;
int tdIndex = 0;
if(qRow.Find("td:nth-last-child(1)").Text() == "Edit") tdIndex = 1;
// moderators get additional delete, recomend and like links
if (qRow.Find("td:nth-last-child(4)").Text() == "Edit") tdIndex = 4;
// Sometimes the uploader column is missing
int seeders, peers;
if (ParseUtil.TryCoerceInt(qRow.Find($"td:nth-last-child({tdIndex + 3})").Text(), out seeders))
if (ParseUtil.TryCoerceInt(qRow.Find($"td:nth-last-child({tdIndex + 3})").Text(), out int seeders))
{
release.Seeders = seeders;
if (ParseUtil.TryCoerceInt(qRow.Find($"td:nth-last-child({tdIndex + 2})").Text(), out peers))
if (ParseUtil.TryCoerceInt(qRow.Find($"td:nth-last-child({tdIndex + 2})").Text(), out int peers))
{
release.Peers = peers + release.Seeders;
}
}
release.Grabs = ParseUtil.CoerceLong(qRow.Find($"td:nth-last-child({tdIndex + 1})").Text());
// Sometimes the grabs column is missing
if (ParseUtil.TryCoerceLong(qRow.Find($"td:nth-last-child({tdIndex + 1})").Text(), out long grabs))
{
release.Grabs = grabs;
}
string fullSize = qRow.Find("td.mainblockcontent").Get(6).InnerText;
release.Size = ReleaseInfo.GetBytes(fullSize);
@@ -216,7 +211,7 @@ namespace Jackett.Common.Indexers
else
release.DownloadVolumeFactor = 1;
var imdblink = qRow.Find("a[href^=\"https://www.imdb.com/title/\"]").Attr("href");
var imdblink = qRow.Find("a[href*=\"www.imdb.com/title/\"]").Attr("href");
release.Imdb = ParseUtil.GetLongFromString(imdblink);
releases.Add(release);

View File

@@ -84,8 +84,8 @@ namespace Jackett.Common.Indexers
private int _maxDailyPages = 7;
private int _maxMoviesPages = 30;
private int _maxEpisodesListPages = 100;
private int[] _allTvCategories = TorznabCatType.TV.SubCategories.Select(c => c.ID).ToArray();
private int[] _allMoviesCategories = TorznabCatType.Movies.SubCategories.Select(c => c.ID).ToArray();
private int[] _allTvCategories = (new TorznabCategory[] { TorznabCatType.TV }).Concat(TorznabCatType.TV.SubCategories).Select(c => c.ID).ToArray();
private int[] _allMoviesCategories = (new TorznabCategory[] { TorznabCatType.Movies }).Concat(TorznabCatType.Movies.SubCategories).Select(c => c.ID).ToArray();
private bool _includeVo;
private bool _filterMovies;

View File

@@ -22,6 +22,7 @@ namespace Jackett.Common.Indexers
public override string[] LegacySiteLinks { get; protected set; } = new string[] {
"https://torrentheaven.myfqdn.info/",
};
private string IndexUrl { get { return SiteLink + "index.php"; } }
private string LoginCompleteUrl { get { return SiteLink + "index.php?strWebValue=account&strWebAction=login_complete&ancestry=verify"; } }
@@ -46,6 +47,8 @@ namespace Jackett.Common.Indexers
Language = "de-de";
Type = "private";
wc.AddTrustedCertificate(new Uri(SiteLink).Host, "cbf23ac75b07255ad7548a87567a839d23f31576"); // incomplete CA chain
AddCategoryMapping(1, TorznabCatType.PCGames, "GAMES/PC");
AddCategoryMapping(3, TorznabCatType.Console, "GAMES/Sonstige");
AddCategoryMapping(59, TorznabCatType.ConsolePS4, "GAMES/PlayStation");

View File

@@ -33,6 +33,8 @@ namespace Jackett.Common.Models.DTO
public string omdburl { get; set; }
[DataMember]
public string app_version { get; set; }
[DataMember]
public bool can_run_netcore { get; set; }
[DataMember]
public ProxyType proxy_type { get; set; }
@@ -50,7 +52,7 @@ namespace Jackett.Common.Models.DTO
notices = new string[0];
}
public ServerConfig(IEnumerable<string> notices, Models.Config.ServerConfig config, string version)
public ServerConfig(IEnumerable<string> notices, Models.Config.ServerConfig config, string version, bool canRunNetCore)
{
this.notices = notices;
port = config.Port;
@@ -65,6 +67,7 @@ namespace Jackett.Common.Models.DTO
omdbkey = config.OmdbApiKey;
omdburl = config.OmdbApiUrl;
app_version = version;
can_run_netcore = canRunNetCore;
proxy_type = config.ProxyType;
proxy_url = config.ProxyUrl;

View File

@@ -56,6 +56,9 @@ namespace Jackett.Common.Plumbing
case "httpclientnetcore":
RegisterWebClient<HttpWebClientNetCore>(builder);
break;
case "httpclient2netcore":
RegisterWebClient<HttpWebClient2NetCore>(builder);
break;
case "httpclient":
RegisterWebClient<HttpWebClient>(builder);
break;

View File

@@ -13,7 +13,7 @@ namespace Jackett.Common.Services
{
private readonly List<TrackerCache> cache = new List<TrackerCache>();
private readonly int MAX_RESULTS_PER_TRACKER = 1000;
private readonly TimeSpan AGE_LIMIT = new TimeSpan(7, 0, 0, 0);
private readonly TimeSpan AGE_LIMIT = new TimeSpan(0, 1, 0, 0);
public void CacheRssResults(IIndexer indexer, IEnumerable<ReleaseInfo> releases)
{
@@ -44,7 +44,7 @@ namespace Jackett.Common.Services
// Prune cache
foreach(var tracker in cache)
{
tracker.Results = tracker.Results.OrderByDescending(i => i.Created).Take(MAX_RESULTS_PER_TRACKER).ToList();
tracker.Results = tracker.Results.Where(x => x.Created > DateTime.Now.Subtract(AGE_LIMIT)).OrderByDescending(i => i.Created).Take(MAX_RESULTS_PER_TRACKER).ToList();
}
}
}

View File

@@ -16,5 +16,6 @@ namespace Jackett.Common.Services.Interfaces
List<string> notices { get; }
string GetBlackholeDirectory();
string GetApiKey();
bool MonoUserCanRunNetCore();
}
}

View File

@@ -0,0 +1,343 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
using com.LandonKey.SocksWebProxy;
using com.LandonKey.SocksWebProxy.Proxy;
using CloudFlareUtilities;
using Jackett.Common.Models.Config;
using Jackett.Common.Services.Interfaces;
using NLog;
using Jackett.Common.Helpers;
using System.Diagnostics;
namespace Jackett.Common.Utils.Clients
{
// Compared to HttpWebClient this implementation will reuse the HttpClient instance (one per indexer).
// This should improve performance and avoid problems with too many open file handles.
public class HttpWebClient2NetCore : WebClient
{
CookieContainer cookies;
ClearanceHandler clearanceHandlr;
HttpClientHandler clientHandlr;
HttpClient client;
static protected Dictionary<string, ICollection<string>> trustedCertificates = new Dictionary<string, ICollection<string>>();
static protected string webProxyUrl;
static protected IWebProxy webProxy;
[DebuggerNonUserCode] // avoid "Exception User-Unhandled" Visual Studio messages
static public bool ValidateCertificate(HttpRequestMessage request, X509Certificate2 certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
var hash = certificate.GetCertHashString();
ICollection<string> hosts;
trustedCertificates.TryGetValue(hash, out hosts);
if (hosts != null)
{
if (hosts.Contains(request.RequestUri.Host))
return true;
}
if (sslPolicyErrors != SslPolicyErrors.None)
{
// Throw exception with certificate details, this will cause a "Exception User-Unhandled" when running it in the Visual Studio debugger.
// The certificate is only available inside this function, so we can't catch it at the calling method.
throw new Exception("certificate validation failed: " + certificate.ToString());
}
return sslPolicyErrors == SslPolicyErrors.None;
}
static public void InitProxy(ServerConfig serverConfig)
{
// dispose old SocksWebProxy
if (webProxy != null && webProxy is SocksWebProxy)
{
((SocksWebProxy)webProxy).Dispose();
webProxy = null;
}
webProxyUrl = serverConfig.GetProxyUrl();
if (!string.IsNullOrWhiteSpace(webProxyUrl))
{
if (serverConfig.ProxyType != ProxyType.Http)
{
var addresses = Dns.GetHostAddressesAsync(serverConfig.ProxyUrl).Result;
var socksConfig = new ProxyConfig
{
SocksAddress = addresses.FirstOrDefault(),
Username = serverConfig.ProxyUsername,
Password = serverConfig.ProxyPassword,
Version = serverConfig.ProxyType == ProxyType.Socks4 ?
ProxyConfig.SocksVersion.Four :
ProxyConfig.SocksVersion.Five
};
if (serverConfig.ProxyPort.HasValue)
{
socksConfig.SocksPort = serverConfig.ProxyPort.Value;
}
webProxy = new SocksWebProxy(socksConfig, false);
}
else
{
NetworkCredential creds = null;
if (!serverConfig.ProxyIsAnonymous)
{
var username = serverConfig.ProxyUsername;
var password = serverConfig.ProxyPassword;
creds = new NetworkCredential(username, password);
}
webProxy = new WebProxy(webProxyUrl)
{
BypassProxyOnLocal = false,
Credentials = creds
};
}
}
}
public HttpWebClient2NetCore(IProcessService p, Logger l, IConfigurationService c, ServerConfig sc)
: base(p: p,
l: l,
c: c,
sc: sc)
{
if (webProxyUrl == null)
InitProxy(sc);
cookies = new CookieContainer();
CreateClient();
}
public void CreateClient()
{
clearanceHandlr = new ClearanceHandler();
clearanceHandlr.MaxRetries = 30;
clientHandlr = new HttpClientHandler
{
CookieContainer = cookies,
AllowAutoRedirect = false, // Do not use this - Bugs ahoy! Lost cookies and more.
UseCookies = true,
Proxy = webProxy,
UseProxy = (webProxy != null),
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate
};
// custom certificate validation handler (netcore version)
clientHandlr.ServerCertificateCustomValidationCallback = ValidateCertificate;
clearanceHandlr.InnerHandler = clientHandlr;
client = new HttpClient(clearanceHandlr);
}
// Called everytime the ServerConfig changes
public override void OnNext(ServerConfig value)
{
var newProxyUrl = serverConfig.GetProxyUrl();
if (webProxyUrl != newProxyUrl) // if proxy URL changed
InitProxy(serverConfig);
// recreate client if needed (can't just change the proxy attribute)
if (!ReferenceEquals(clientHandlr.Proxy, webProxy))
{
CreateClient();
}
}
override public void Init()
{
ServicePointManager.DefaultConnectionLimit = 1000;
if (serverConfig.RuntimeSettings.IgnoreSslErrors == true)
{
logger.Info(string.Format("HttpWebClient: Disabling certificate validation"));
ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => { return true; };
}
}
override protected async Task<WebClientByteResult> Run(WebRequest webRequest)
{
HttpResponseMessage response = null;
var request = new HttpRequestMessage();
request.Headers.ExpectContinue = false;
request.RequestUri = new Uri(webRequest.Url);
if (webRequest.EmulateBrowser == true)
request.Headers.UserAgent.ParseAdd(BrowserUtil.ChromeUserAgent);
else
request.Headers.UserAgent.ParseAdd("Jackett/" + configService.GetVersion());
// clear cookies from cookiecontainer
var oldCookies = cookies.GetCookies(request.RequestUri);
foreach (Cookie oldCookie in oldCookies)
{
oldCookie.Expired = true;
}
if (!string.IsNullOrEmpty(webRequest.Cookies))
{
// add cookies to cookiecontainer
var cookieUrl = new Uri(request.RequestUri.Scheme + "://" + request.RequestUri.Host); // don't include the path, Scheme is needed for mono compatibility
foreach (var ccookiestr in webRequest.Cookies.Split(';'))
{
var cookiestrparts = ccookiestr.Split('=');
var name = cookiestrparts[0].Trim();
if (string.IsNullOrWhiteSpace(name))
continue;
var value = "";
if (cookiestrparts.Length >= 2)
value = cookiestrparts[1].Trim();
var cookie = new Cookie(name, value);
cookies.Add(cookieUrl, cookie);
}
}
if (webRequest.Headers != null)
{
foreach (var header in webRequest.Headers)
{
if (header.Key != "Content-Type")
{
request.Headers.TryAddWithoutValidation(header.Key, header.Value);
}
}
}
if (!string.IsNullOrEmpty(webRequest.Referer))
request.Headers.Referrer = new Uri(webRequest.Referer);
if (!string.IsNullOrEmpty(webRequest.RawBody))
{
var type = webRequest.Headers.Where(h => h.Key == "Content-Type").Cast<KeyValuePair<string, string>?>().FirstOrDefault();
if (type.HasValue)
{
var str = new StringContent(webRequest.RawBody);
str.Headers.Remove("Content-Type");
str.Headers.Add("Content-Type", type.Value.Value);
request.Content = str;
}
else
request.Content = new StringContent(webRequest.RawBody);
request.Method = HttpMethod.Post;
}
else if (webRequest.Type == RequestType.POST)
{
if (webRequest.PostData != null)
request.Content = new FormUrlEncodedContent(webRequest.PostData);
request.Method = HttpMethod.Post;
}
else
{
request.Method = HttpMethod.Get;
}
response = await client.SendAsync(request);
var result = new WebClientByteResult();
result.Content = await response.Content.ReadAsByteArrayAsync();
foreach (var header in response.Headers)
{
IEnumerable<string> value = header.Value;
result.Headers[header.Key.ToLowerInvariant()] = value.ToArray();
}
// some cloudflare clients are using a refresh header
// Pull it out manually
if (response.StatusCode == System.Net.HttpStatusCode.ServiceUnavailable && response.Headers.Contains("Refresh"))
{
var refreshHeaders = response.Headers.GetValues("Refresh");
var redirval = "";
var redirtime = 0;
if (refreshHeaders != null)
{
foreach (var value in refreshHeaders)
{
var start = value.IndexOf("=");
var end = value.IndexOf(";");
var len = value.Length;
if (start > -1)
{
redirval = value.Substring(start + 1);
result.RedirectingTo = redirval;
// normally we don't want a serviceunavailable (503) to be a redirect, but that's the nature
// of this cloudflare approach..don't want to alter BaseWebResult.IsRedirect because normally
// it shoudln't include service unavailable..only if we have this redirect header.
response.StatusCode = System.Net.HttpStatusCode.Redirect;
redirtime = Int32.Parse(value.Substring(0, end));
System.Threading.Thread.Sleep(redirtime * 1000);
}
}
}
}
if (response.Headers.Location != null)
{
result.RedirectingTo = response.Headers.Location.ToString();
}
// Mono won't add the baseurl to relative redirects.
// e.g. a "Location: /index.php" header will result in the Uri "file:///index.php"
// See issue #1200
if (result.RedirectingTo != null && result.RedirectingTo.StartsWith("file://"))
{
// URL decoding apparently is needed to, without it e.g. Demonoid download is broken
// TODO: is it always needed (not just for relative redirects)?
var newRedirectingTo = WebUtilityHelpers.UrlDecode(result.RedirectingTo, webRequest.Encoding);
if (newRedirectingTo.StartsWith("file:////")) // Location without protocol but with host (only add scheme)
newRedirectingTo = newRedirectingTo.Replace("file://", request.RequestUri.Scheme + ":");
else
newRedirectingTo = newRedirectingTo.Replace("file://", request.RequestUri.Scheme + "://" + request.RequestUri.Host);
logger.Debug("[MONO relative redirect bug] Rewriting relative redirect URL from " + result.RedirectingTo + " to " + newRedirectingTo);
result.RedirectingTo = newRedirectingTo;
}
result.Status = response.StatusCode;
// Compatiblity issue between the cookie format and httpclient
// Pull it out manually ignoring the expiry date then set it manually
// http://stackoverflow.com/questions/14681144/httpclient-not-storing-cookies-in-cookiecontainer
IEnumerable<string> cookieHeaders;
var responseCookies = new List<Tuple<string, string>>();
if (response.Headers.TryGetValues("set-cookie", out cookieHeaders))
{
foreach (var value in cookieHeaders)
{
logger.Debug(value);
var nameSplit = value.IndexOf('=');
if (nameSplit > -1)
{
responseCookies.Add(new Tuple<string, string>(value.Substring(0, nameSplit), value.Substring(0, value.IndexOf(';') == -1 ? value.Length : (value.IndexOf(';'))) + ";"));
}
}
var cookieBuilder = new StringBuilder();
foreach (var cookieGroup in responseCookies.GroupBy(c => c.Item1))
{
cookieBuilder.AppendFormat("{0} ", cookieGroup.Last().Item2);
}
result.Cookies = cookieBuilder.ToString().Trim();
}
ServerUtil.ResureRedirectIsFullyQualified(webRequest, result);
return result;
}
override public void AddTrustedCertificate(string host, string hash)
{
hash = hash.ToUpper();
ICollection<string> hosts;
trustedCertificates.TryGetValue(hash.ToUpper(), out hosts);
if (hosts == null)
{
hosts = new HashSet<string>();
trustedCertificates[hash] = hosts;
}
hosts.Add(host);
}
}
}

View File

@@ -103,5 +103,18 @@ namespace Jackett.Common.Utils
}
}
}
public bool IsNonWindowsDotNetCoreVariant(JackettVariant variant)
{
if (variant == JackettVariant.CoreMacOs || variant == JackettVariant.CoreLinuxAmdx64
|| variant == JackettVariant.CoreLinuxArm32 || variant == JackettVariant.CoreLinuxArm64)
{
return true;
}
else
{
return false;
}
}
}
}

View File

@@ -64,7 +64,7 @@ namespace Jackett.Server.Controllers
[HttpGet]
public Common.Models.DTO.ServerConfig Config()
{
var dto = new Common.Models.DTO.ServerConfig(serverService.notices, serverConfig, configService.GetVersion());
var dto = new Common.Models.DTO.ServerConfig(serverService.notices, serverConfig, configService.GetVersion(), serverService.MonoUserCanRunNetCore());
return dto;
}

View File

@@ -11,7 +11,7 @@ namespace Jackett.Server
{
public static void ProcessSettings(RuntimeSettings runtimeSettings, Logger logger)
{
if (runtimeSettings.ClientOverride != "httpclient" && runtimeSettings.ClientOverride != "httpclient2" && runtimeSettings.ClientOverride != "httpclientnetcore")
if (runtimeSettings.ClientOverride != "httpclient" && runtimeSettings.ClientOverride != "httpclient2" && runtimeSettings.ClientOverride != "httpclientnetcore" && runtimeSettings.ClientOverride != "httpclient2netcore")
{
logger.Error($"Client override ({runtimeSettings.ClientOverride}) has been deprecated, please remove it from your start arguments");
Environment.Exit(1);

View File

@@ -6,6 +6,7 @@
<AssemblyName>JackettConsole</AssemblyName>
<OutputType>Exe</OutputType>
<NoWarn>NU1605</NoWarn>
<ServerGarbageCollection>false</ServerGarbageCollection>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' != 'net461' and $(RuntimeIdentifier.Contains('win')) == 'false'">

View File

@@ -50,7 +50,7 @@ namespace Jackett.Server
{
if (DotNetCoreUtil.IsRunningOnDotNetCore)
{
options.Client = "httpclientnetcore";
options.Client = "httpclient2netcore";
}
else
{

View File

@@ -7,6 +7,7 @@ using NLog;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
@@ -31,6 +32,7 @@ namespace Jackett.Server.Services
private List<string> _notices = new List<string>();
private ServerConfig config;
private IProtectionService _protectionService;
private bool isDotNetCoreCapable;
public ServerService(IIndexerManagerService i, IProcessService p, ISerializeService s, IConfigurationService c, Logger l, Common.Utils.Clients.WebClient w, IUpdateService u, IProtectionService protectionService, ServerConfig serverConfig)
{
@@ -279,6 +281,36 @@ namespace Jackett.Server.Services
logger.Error(e, "Error while checking build date of Jackett.Common");
}
//Alert user that they no longer need to use Mono
try
{
Variants variants = new Variants();
Variants.JackettVariant variant = variants.GetVariant();
if (variant == Variants.JackettVariant.Mono)
{
Process process = new Process();
process.StartInfo.FileName = "uname";
process.StartInfo.Arguments = "-m";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
logger.Debug($"uname output was: {output}");
output = output.ToLower();
if (output.Contains("armv7") || output.Contains("armv8") || output.Contains("x86_64"))
{
isDotNetCoreCapable = true;
}
}
}
catch (Exception e)
{
logger.Debug(e, "Unable to get architecture");
}
CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-US");
// Load indexers
indexerService.InitIndexers(configService.GetCardigannDefinitionsFolders());
@@ -354,5 +386,10 @@ namespace Jackett.Server.Services
{
return config.APIKey;
}
public bool MonoUserCanRunNetCore()
{
return isDotNetCoreCapable;
}
}
}

View File

@@ -174,6 +174,34 @@ namespace Jackett.Updater
// On unix we kill the PIDs after the update so e.g. systemd can automatically restart the process
KillPids(pids);
}
Variants variants = new Variants();
if (variants.IsNonWindowsDotNetCoreVariant(variant))
{
// On Linux you can't modify an executable while it is executing
// https://github.com/Jackett/Jackett/issues/5022
// https://stackoverflow.com/questions/16764946/what-generates-the-text-file-busy-message-in-unix#comment32135232_16764967
// Delete the ./jackett executable
try
{
logger.Info("Attempting to remove the jackett executable from: " + options.Path);
string executable = options.Path.TrimEnd('/') + "/jackett";
if (File.Exists(executable))
{
File.Delete(executable);
logger.Info("Deleted " + executable);
}
else
{
logger.Info("jackett executable not found in: " + executable);
}
}
catch (Exception e)
{
logger.Error(e);
}
}
logger.Info("Finding files in: " + updateLocation);
var files = Directory.GetFiles(updateLocation, "*.*", SearchOption.AllDirectories);
foreach (var file in files)
@@ -292,6 +320,9 @@ namespace Jackett.Updater
"Definitions/redtopia.yml",
"Definitions/btxpress.yml",
"Definitions/btstornet.yml",
"Definitions/crazyhd.yml",
"Definitions/hdplus.yml",
"Definitions/gods.yml",
};
foreach (var oldFile in oldFiles)
@@ -402,8 +433,8 @@ namespace Jackett.Updater
private string GetJackettConsolePath(string directoryPath)
{
if (variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreLinuxAmdx64
|| variant == Variants.JackettVariant.CoreLinuxArm32 || variant == Variants.JackettVariant.CoreLinuxArm64)
Variants variants = new Variants();
if (variants.IsNonWindowsDotNetCoreVariant(variant))
{
return Path.Combine(directoryPath, "jackett");
}