mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-11 06:12:14 +02:00
Compare commits
72 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d7c09e62bd | ||
![]() |
2eb54165ac | ||
![]() |
5bad47d327 | ||
![]() |
8900aea849 | ||
![]() |
85ea6e5a2b | ||
![]() |
c69b213376 | ||
![]() |
992d2776d3 | ||
![]() |
ff62b775db | ||
![]() |
19b608c529 | ||
![]() |
1f9d95355d | ||
![]() |
849d1aeef9 | ||
![]() |
08b187bfa1 | ||
![]() |
d8b4ad7f39 | ||
![]() |
02546877fd | ||
![]() |
52fad1e6d2 | ||
![]() |
049e678b0a | ||
![]() |
4edcda8351 | ||
![]() |
01994bf9f5 | ||
![]() |
0d4c8ba860 | ||
![]() |
fad453cf0e | ||
![]() |
222fcde0a3 | ||
![]() |
6aa42263be | ||
![]() |
ec036d70f9 | ||
![]() |
db300f5ae9 | ||
![]() |
1d224b6db9 | ||
![]() |
a3e97bb050 | ||
![]() |
e5827c3456 | ||
![]() |
27d2b6caae | ||
![]() |
bcdc1879d9 | ||
![]() |
a8999e8276 | ||
![]() |
4c2db157e9 | ||
![]() |
10a46bac48 | ||
![]() |
7d6b282039 | ||
![]() |
f6bb9ca263 | ||
![]() |
11e8d4d290 | ||
![]() |
c88a213b2e | ||
![]() |
4295e65dfe | ||
![]() |
8151fbf382 | ||
![]() |
709cafda62 | ||
![]() |
13a1cd3ab7 | ||
![]() |
7c0fd1233f | ||
![]() |
bdc592edfd | ||
![]() |
f2baa8f43c | ||
![]() |
9274a26a0e | ||
![]() |
3a7608317f | ||
![]() |
67ea8db2da | ||
![]() |
40b0cdffc3 | ||
![]() |
2f96ffa15d | ||
![]() |
8086b221ec | ||
![]() |
bf25db7c5f | ||
![]() |
dfa6529e58 | ||
![]() |
c3603014ca | ||
![]() |
4bf6393b6e | ||
![]() |
c57231206f | ||
![]() |
b4a8174a6b | ||
![]() |
8722cb8061 | ||
![]() |
03105455fb | ||
![]() |
3e0bc22459 | ||
![]() |
d8746032ca | ||
![]() |
a1832997b3 | ||
![]() |
4d3ebab00c | ||
![]() |
5f110e2691 | ||
![]() |
060efffc7e | ||
![]() |
c27ed6fd41 | ||
![]() |
8edfb79a3e | ||
![]() |
eef0d55776 | ||
![]() |
79a3d07d09 | ||
![]() |
d44408c988 | ||
![]() |
d99de43309 | ||
![]() |
eaa562a20a | ||
![]() |
b124ba469f | ||
![]() |
d002382883 |
16
README.md
16
README.md
@@ -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`
|
||||
|
@@ -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);
|
||||
|
@@ -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>
|
||||
|
@@ -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"
|
||||
|
@@ -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:
|
||||
|
@@ -6,6 +6,8 @@
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- http://teamctgame.xyz/
|
||||
legacylinks:
|
||||
- https://teamctgame.co/
|
||||
|
||||
caps:
|
||||
|
@@ -6,6 +6,8 @@
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://casstudio.tk/
|
||||
legacylinks:
|
||||
- https://casstudio.tv/
|
||||
|
||||
caps:
|
||||
|
62
src/Jackett.Common/Definitions/concen.yml
Normal file
62
src/Jackett.Common/Definitions/concen.yml
Normal 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"
|
@@ -6,6 +6,8 @@
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.ettv.to/
|
||||
legacylinks:
|
||||
- https://www.ettv.tv/
|
||||
|
||||
caps:
|
||||
|
237
src/Jackett.Common/Definitions/focusx.yml
Normal file
237
src/Jackett.Common/Definitions/focusx.yml
Normal 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"
|
@@ -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:
|
||||
|
@@ -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
|
||||
|
@@ -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"
|
@@ -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
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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:
|
||||
|
@@ -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)
|
||||
|
@@ -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/
|
||||
|
@@ -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
|
||||
|
@@ -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"
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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:
|
||||
|
@@ -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:
|
||||
|
527
src/Jackett.Common/Definitions/tapochek.yml
Normal file
527
src/Jackett.Common/Definitions/tapochek.yml
Normal 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 & Flamenco (video)"}
|
||||
- {id: 501, cat: Audio, desc: "Звуки природы"}
|
||||
- {id: 502, cat: Audio, desc: "Психоактивныe аудиопрограммы"}
|
||||
- {id: 504, cat: Audio/Lossless, desc: "Зарубежный Rap, Hip-Hop, R'n'B (lossless)"}
|
||||
- {id: 505, cat: Audio/Lossless, desc: "Отечественный Rap, Hip-Hop, R'n'B (lossless)"}
|
||||
- {id: 506, cat: Audio/MP3, desc: "Зарубежный Rap, Hip-Hop, R'n'B (mp3)"}
|
||||
- {id: 507, cat: Audio/MP3, desc: "Отечественный Rap, Hip-Hop, R'n'B (mp3)"}
|
||||
- {id: 508, cat: Audio/Video, desc: "Rap, Hip-Hop, R'n'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 & 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 & 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"
|
@@ -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
|
||||
|
@@ -31,6 +31,8 @@
|
||||
paths:
|
||||
- path: src/releaselist.php
|
||||
method: post
|
||||
headers:
|
||||
Referer: ["{{.Config.sitelink}}?releaselist"]
|
||||
inputs:
|
||||
cat: 0
|
||||
page: 1
|
||||
|
@@ -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:
|
||||
|
@@ -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:
|
||||
|
@@ -6,6 +6,8 @@
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://gotorrentkitty.cc/
|
||||
legacylinks:
|
||||
- http://cntorrentkitty.com/
|
||||
- http://cntorrentkitty.xyz/
|
||||
|
||||
|
@@ -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
|
||||
|
863
src/Jackett.Common/Definitions/torrentslocal.yml
Normal file
863
src/Jackett.Common/Definitions/torrentslocal.yml
Normal 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'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'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 & Джо / 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'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 & 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'n'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'n'B (lossless)"}
|
||||
- {id: 921, cat: Audio, desc: "Зарубежный R'n'B"}
|
||||
- {id: 922, cat: Audio, desc: "Отечественный R'n'B"}
|
||||
- {id: 234, cat: Audio, desc: "Отечественный Рэп, Хип-Хоп"}
|
||||
- {id: 612, cat: Audio, desc: "Отечественный Рэп, Хип-Хоп, R'n'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 & Hard Rock"}
|
||||
- {id: 505, cat: Audio, desc: "Classic Rock & 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 & Art-Rock"}
|
||||
- {id: 510, cat: Audio, desc: "Progressive & Art-Rock (lossless)"}
|
||||
- {id: 255, cat: Audio, desc: "Rockabilly, Psychobilly, Rock'n'Roll"}
|
||||
- {id: 511, cat: Audio, desc: "Rockabilly, Psychobilly, Rock'n'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 & Heavy, Power, Speed, Thrash"}
|
||||
- {id: 515, cat: Audio, desc: "Hard & 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 & Hard Rock & Rock'n'Roll"}
|
||||
- {id: 517, cat: Audio, desc: "Classic Rock & Hard Rock & Rock'n..."}
|
||||
- {id: 361, cat: Audio, desc: "Progressive & Art-Rock"}
|
||||
- {id: 518, cat: Audio, desc: "Progressive & Art-Rock (lossless)"}
|
||||
- {id: 362, cat: Audio, desc: "Pop-Rock & Soft Rock & Folk Rock"}
|
||||
- {id: 519, cat: Audio, desc: "Pop-Rock & Soft Rock & 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 & 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 & Bass / Jungle"}
|
||||
- {id: 543, cat: Audio, desc: "Drum & 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"
|
@@ -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:
|
||||
|
@@ -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)
|
@@ -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
|
||||
|
@@ -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()));
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
|
@@ -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");
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -16,5 +16,6 @@ namespace Jackett.Common.Services.Interfaces
|
||||
List<string> notices { get; }
|
||||
string GetBlackholeDirectory();
|
||||
string GetApiKey();
|
||||
bool MonoUserCanRunNetCore();
|
||||
}
|
||||
}
|
||||
|
340
src/Jackett.Common/Utils/Clients/HttpWebClient2NetCore.cs
Normal file
340
src/Jackett.Common/Utils/Clients/HttpWebClient2NetCore.cs
Normal file
@@ -0,0 +1,340 @@
|
||||
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
|
||||
};
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -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'">
|
||||
|
@@ -50,7 +50,7 @@ namespace Jackett.Server
|
||||
{
|
||||
if (DotNetCoreUtil.IsRunningOnDotNetCore)
|
||||
{
|
||||
options.Client = "httpclientnetcore";
|
||||
options.Client = "httpclient2netcore";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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");
|
||||
}
|
||||
|
Reference in New Issue
Block a user