mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-10 13:48:02 +02:00
Compare commits
166 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
41142dc88f | ||
![]() |
eeb791dbb6 | ||
![]() |
cf8011f2b8 | ||
![]() |
f1b7d591bd | ||
![]() |
d4e776e23a | ||
![]() |
1a548d1c8c | ||
![]() |
756161f1e7 | ||
![]() |
919bf4d99a | ||
![]() |
6eb7a3df45 | ||
![]() |
5a822fe5ab | ||
![]() |
dffefa1044 | ||
![]() |
1cc62c0f7c | ||
![]() |
46edeabcfa | ||
![]() |
e89d1f4616 | ||
![]() |
65aec0058d | ||
![]() |
11e6e26c12 | ||
![]() |
2b59863409 | ||
![]() |
34f518841e | ||
![]() |
771fb73062 | ||
![]() |
ba6a4647a0 | ||
![]() |
7aadf02167 | ||
![]() |
e9536bff76 | ||
![]() |
012fd043f6 | ||
![]() |
d81a8f0217 | ||
![]() |
db97f9eed3 | ||
![]() |
94f0e1a732 | ||
![]() |
7b076a001c | ||
![]() |
5fd7210791 | ||
![]() |
dcf3956afd | ||
![]() |
73b8495197 | ||
![]() |
2f86b439e4 | ||
![]() |
d010053f36 | ||
![]() |
edbb0159e7 | ||
![]() |
2c770607e6 | ||
![]() |
6191ec0ef4 | ||
![]() |
771e2ea2be | ||
![]() |
a16a0ff73c | ||
![]() |
470550a3c8 | ||
![]() |
2195c6bb87 | ||
![]() |
f36a3232d8 | ||
![]() |
f7fcc614f7 | ||
![]() |
c15d6468d2 | ||
![]() |
ecec867de8 | ||
![]() |
461834879e | ||
![]() |
d0507319c5 | ||
![]() |
0921388f9e | ||
![]() |
543ea776c4 | ||
![]() |
bb595337bd | ||
![]() |
a3f7575e8e | ||
![]() |
2c423b3b88 | ||
![]() |
1253b15061 | ||
![]() |
d6f36349c9 | ||
![]() |
46553c3054 | ||
![]() |
e843f6ce31 | ||
![]() |
5e4286e382 | ||
![]() |
2e110e986b | ||
![]() |
3039e2fbe5 | ||
![]() |
9e83be6ae1 | ||
![]() |
5f68c25b6e | ||
![]() |
50019e05b7 | ||
![]() |
679c74eebd | ||
![]() |
3ac9d26a91 | ||
![]() |
45fa6e3971 | ||
![]() |
deb016fabf | ||
![]() |
ad281585f2 | ||
![]() |
3206d3350d | ||
![]() |
c4744f84e2 | ||
![]() |
bc25de158d | ||
![]() |
ed4e1b801b | ||
![]() |
3c81af1a62 | ||
![]() |
4737093f81 | ||
![]() |
7a77245e25 | ||
![]() |
138185929f | ||
![]() |
a82c166b23 | ||
![]() |
b421253ee5 | ||
![]() |
77832602bd | ||
![]() |
87a36e3621 | ||
![]() |
c33f0594bd | ||
![]() |
a4ee8fee8d | ||
![]() |
a12f573e80 | ||
![]() |
ea14a5a194 | ||
![]() |
b9f9c10baf | ||
![]() |
e049376381 | ||
![]() |
e89312b52f | ||
![]() |
4f758ee8cc | ||
![]() |
2f8aa41fe0 | ||
![]() |
8425926636 | ||
![]() |
3e0f25c51b | ||
![]() |
c52199f7ca | ||
![]() |
bede5241c8 | ||
![]() |
9cb9b859a8 | ||
![]() |
47580ec726 | ||
![]() |
8e9290c501 | ||
![]() |
3ddd35d54b | ||
![]() |
6529b1fe38 | ||
![]() |
a58ba9e329 | ||
![]() |
ca7def79d2 | ||
![]() |
c50a29a8e9 | ||
![]() |
f86e8dd5b6 | ||
![]() |
3530fa8244 | ||
![]() |
6f65992bb5 | ||
![]() |
f1c83273f2 | ||
![]() |
fdff9e4406 | ||
![]() |
b8be09a203 | ||
![]() |
aa26654be9 | ||
![]() |
20e21cfc8a | ||
![]() |
068cbcd36b | ||
![]() |
acb649499b | ||
![]() |
8c47f03a55 | ||
![]() |
f63fe9918b | ||
![]() |
c1389c76f3 | ||
![]() |
253f9ad6bb | ||
![]() |
ab63e03e3b | ||
![]() |
46c6039144 | ||
![]() |
b619360bf1 | ||
![]() |
ae316ffc1b | ||
![]() |
e051c13f3a | ||
![]() |
88f290d558 | ||
![]() |
d6f15940b3 | ||
![]() |
e702160c10 | ||
![]() |
f90ba08b2d | ||
![]() |
a05b64a097 | ||
![]() |
ce806a7678 | ||
![]() |
5f41fe3d08 | ||
![]() |
ffa264f333 | ||
![]() |
46aa25772b | ||
![]() |
eeb0b3bc39 | ||
![]() |
cdfdd2c1bb | ||
![]() |
ec985a2318 | ||
![]() |
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 |
32
README.md
32
README.md
@@ -45,6 +45,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Il Corsaro Nero <!-- maintained by bonny1992 -->
|
||||
* Il Corsaro Blu
|
||||
* Isohunt2
|
||||
* iTorrent
|
||||
* KATcrs
|
||||
* KickAssTorrent (KATcr)
|
||||
* KickAssTorrent (thekat.se clone)
|
||||
@@ -53,11 +54,14 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* MacTorrents
|
||||
* MagnetDL
|
||||
* MejorTorrent <!-- maintained by ivandelabeldad -->
|
||||
* MkvCage
|
||||
* Monova
|
||||
* MovCr
|
||||
* Newpct (aka: tvsinpagar, descargas2020, torrentlocura, torrentrapid, tumejortorrent, pctnew, etc)
|
||||
* Nyaa.si
|
||||
* Nyaa-Pantsu
|
||||
* Nyoo
|
||||
* OxTorrent
|
||||
* ProStyleX
|
||||
* QXR
|
||||
* RARBG
|
||||
@@ -77,17 +81,20 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* TorrentGalaxy.org (TGx)
|
||||
* TorrentKitty
|
||||
* TorrentProject2
|
||||
* TorrentQuest
|
||||
* Torrents.csv
|
||||
* Torrent9
|
||||
* Torernt9 clone (torrents9.ch)
|
||||
* Torrentz2
|
||||
* World Wide Torrents
|
||||
* YourBittorrent
|
||||
* YTS.ag
|
||||
* Zooqle
|
||||
|
||||
### Supported Semi-Private Trackers
|
||||
* 7tor
|
||||
* Alein
|
||||
* AniDUB
|
||||
* ArenaBG
|
||||
* CzTorrent
|
||||
* Deildu
|
||||
@@ -95,9 +102,9 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Gay-Torrents.net
|
||||
* Gay-Torrents.org
|
||||
* GDF76
|
||||
* HamsterStudio
|
||||
* Kinozal
|
||||
* LostFilm.tv
|
||||
* Mega-Bliz
|
||||
* Metal Tracker
|
||||
* MVGroup Forum
|
||||
* MVGroup Main
|
||||
@@ -173,7 +180,6 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* CGPeers
|
||||
* CHDBits
|
||||
* ChannelX
|
||||
* CiNEFiLHD
|
||||
* Cinemageddon
|
||||
* Cinematik
|
||||
* CinemaZ (EuTorrents)
|
||||
@@ -194,6 +200,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Dragonworld Reloaded
|
||||
* Dream Team
|
||||
* DXDHD
|
||||
* EfectoDoppler
|
||||
* EliteHD (HDClub) [![(invite needed)][inviteneeded]](#)
|
||||
* Elit Tracker (ET)
|
||||
* Elite-Tracker
|
||||
@@ -204,7 +211,6 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* FileList (FL)
|
||||
* Femdomcult
|
||||
* FocusX
|
||||
* Freedom-HD (Freedom Paradise)
|
||||
* FreeTorrent
|
||||
* FullMixMusic
|
||||
* FunFile (FF)
|
||||
@@ -212,6 +218,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Fuzer (FZ)
|
||||
* GAYtorrent.ru
|
||||
* GazelleGames (GGn)
|
||||
* Generation-Free
|
||||
* GFXNews
|
||||
* GFXPeers
|
||||
* GigaTorrents
|
||||
@@ -257,12 +264,14 @@ 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)
|
||||
* myAmity
|
||||
* MySpleen
|
||||
* NCore
|
||||
* NBTorrents
|
||||
* Nebulance (NBL) (TransmiTheNet)
|
||||
* New Real World
|
||||
* Norbits
|
||||
@@ -297,8 +306,10 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* RetroFlix
|
||||
* RevolutionTT
|
||||
* RGU
|
||||
* RocketHD
|
||||
* RoDVD (Cinefiles)
|
||||
* Romanian Metal Torrent (RMT)
|
||||
* RPTorrents
|
||||
* SceneFZ
|
||||
* SceneHD
|
||||
* SceneReactor
|
||||
@@ -308,9 +319,9 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Secret Cinema
|
||||
* Shareisland
|
||||
* ShareSpaceDB
|
||||
* Sharingue
|
||||
* Shazbat
|
||||
* Shellife (SL)
|
||||
* SiamBIT
|
||||
* SpaceTorrent
|
||||
* Speed-Share
|
||||
* SpeedCD
|
||||
@@ -319,8 +330,10 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* SportsCult
|
||||
* SuperBits (SBS)
|
||||
* TakeaByte
|
||||
* Tapochek
|
||||
* Tasmanit
|
||||
* TBPlus
|
||||
* TeamHD
|
||||
* TenYardTorrents (TYT)
|
||||
* TheEmpire (TE)
|
||||
* The Geeks
|
||||
@@ -361,6 +374,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* u-torrents (SceneFZ)
|
||||
* UHDBits
|
||||
* Ultimate Gamer Club (UGC)
|
||||
* UnionGang
|
||||
* Vizuk
|
||||
* Waffles
|
||||
* World-In-HD
|
||||
@@ -380,7 +394,7 @@ Trackers marked with [![(invite needed)][inviteneeded]](#) have no active maint
|
||||
|
||||
### Aggregate indexers
|
||||
|
||||
A special "all" indexer is available at `/api/v2.0/indexers/all/results/torznab/api`.
|
||||
A special "all" indexer is available at `/api/v2.0/indexers/all/results/torznab`.
|
||||
It will query all configured indexers and return the combined results.
|
||||
|
||||
If your client supports multiple feeds it's recommended to add each indexer directly instead of using the all indexer.
|
||||
@@ -415,7 +429,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`
|
||||
@@ -428,7 +443,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`
|
||||
@@ -558,7 +574,7 @@ All contributions are welcome just send a pull request.
|
||||
### Windows
|
||||
* Install the .NET Core [SDK](https://www.microsoft.com/net/download/windows)
|
||||
* Clone Jackett
|
||||
* From the `src` directory, run `dotnet restore`
|
||||
* Open Powershell and from the `src` directory, run `dotnet restore`
|
||||
* Open the Jackett solution in Visual Studio 2017 (version 15.9 or above)
|
||||
* Right click on the Jackett solution and click 'Rebuild Solution' to restore nuget packages
|
||||
* Select Jackett.Server as startup project
|
||||
|
@@ -6,6 +6,10 @@ image:
|
||||
environment:
|
||||
APPVEYOR_YML_DISABLE_PS_LINUX: true
|
||||
configuration: Release
|
||||
install:
|
||||
#Remove once .NET Core 2.2.5 is deployed to Appveyor
|
||||
- sh: sudo apt-get update
|
||||
- sh: sudo apt-get -y install dotnet-sdk-2.2
|
||||
assembly_info:
|
||||
patch: true
|
||||
file: '**\AssemblyInfo.*'
|
||||
|
@@ -126,7 +126,6 @@ Task("Package-Mono-Full-Framework")
|
||||
|
||||
CopyFiles("./src/Jackett.Updater/bin/" + configuration + "/net461" + "/JackettUpdater.*", buildOutputPath); //builds against multiple frameworks
|
||||
|
||||
CopyFileToDirectory("./install_service_macos_mono", buildOutputPath);
|
||||
CopyFileToDirectory("./install_service_systemd_mono.sh", buildOutputPath);
|
||||
CopyFileToDirectory("./Upstart.config", buildOutputPath);
|
||||
|
||||
|
@@ -1,77 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Setting up colors
|
||||
BOLDRED="$(printf '\033[1;31m')"
|
||||
BOLDGREEN="$(printf '\033[1;32m')"
|
||||
NC="$(printf '\033[0m')" # No Color
|
||||
|
||||
# Stop and unload the service if it's running
|
||||
launchctl remove org.user.Jackett
|
||||
|
||||
# Move working directory to Jackett's
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
# Check if we're running from Jackett's directory
|
||||
if [ ! -f ./JackettConsole.exe ]; then
|
||||
echo "${BOLDRED}ERROR${NC}: Couldn't locate JackettConsole.exe. Is the script in the right directory?"
|
||||
exit 1
|
||||
fi
|
||||
jackettdir="$(pwd)"
|
||||
|
||||
# Check if mono is installed
|
||||
command -v mono >/dev/null 2>&1 || { echo >&2 "${BOLDRED}ERROR${NC}: Jackett requires Mono but it's not installed. Aborting."; exit 1; }
|
||||
monodir="$(dirname $(command -v mono))"
|
||||
|
||||
# Check that no other service called Jackett is already running
|
||||
if [[ $(launchctl list | grep org.user.Jackett) ]]; then
|
||||
echo "${BOLDRED}ERROR${NC}: Jackett already seems to be running as a service. Please stop it before running this script again."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Write the plist to LaunchAgents
|
||||
mkdir -p ~/Library/LaunchAgents/
|
||||
cat >~/Library/LaunchAgents/org.user.Jackett.plist <<EOL
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>EnvironmentVariables</key>
|
||||
<dict>
|
||||
<key>PATH</key>
|
||||
<string>/usr/bin:/bin:/usr/sbin:/sbin:${monodir}</string>
|
||||
</dict>
|
||||
<key>KeepAlive</key>
|
||||
<true/>
|
||||
<key>Label</key>
|
||||
<string>org.user.Jackett</string>
|
||||
<key>ProgramArguments</key>
|
||||
<array>
|
||||
<string>${monodir}/mono</string>
|
||||
<string>--debug</string>
|
||||
<string>JackettConsole.exe</string>
|
||||
<string>--NoRestart</string>
|
||||
</array>
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
<key>WorkingDirectory</key>
|
||||
<string>${jackettdir}</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
EOL
|
||||
|
||||
# Run the agent
|
||||
launchctl load ~/Library/LaunchAgents/org.user.Jackett.plist
|
||||
|
||||
# Check that it's running
|
||||
if [[ $(launchctl list | grep org.user.Jackett) ]]; then
|
||||
echo "${BOLDGREEN}Agent successfully installed and launched!${NC}"
|
||||
else
|
||||
cat << EOL
|
||||
${BOLDRED}ERROR${NC}: Could not launch agent. The installation might have failed.
|
||||
Please open an issue on https://github.com/Jackett/Jackett/issues and paste following information:
|
||||
Mono directory: \`${monodir}\`
|
||||
Jackett directory: \`${jackettdir}\`
|
||||
|
||||
EOL
|
||||
fi
|
@@ -70,7 +70,6 @@ else
|
||||
cat << EOL
|
||||
${BOLDRED}ERROR${NC}: Could not launch service. The installation might have failed.
|
||||
Please open an issue on https://github.com/Jackett/Jackett/issues and paste following information:
|
||||
Mono directory: \`${monodir}\`
|
||||
Jackett directory: \`${jackettdir}\`
|
||||
Jackett user: \`${jackettuser}\`
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -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"
|
||||
|
@@ -39,6 +39,9 @@
|
||||
- name: regexp
|
||||
args: "Ratio : (\\d+)"
|
||||
|
||||
download:
|
||||
selector: a[href*="/download/"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: filterTorrents
|
||||
@@ -66,7 +69,7 @@
|
||||
title:
|
||||
selector: a.view-torrent
|
||||
download:
|
||||
selector: a[href*="/download/"]
|
||||
selector: a[href*="/download_check/"]
|
||||
attribute: href
|
||||
details:
|
||||
selector: a.view-torrent
|
||||
|
@@ -18,21 +18,18 @@
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings:
|
||||
- name: cookie
|
||||
type: text
|
||||
label: Cookie
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker in your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Select the <b>Headers</b> tab<li>Find 'cookie:' in the <b>Request Headers</b> section<li>Copy & paste the whole cookie string to here</ol>"
|
||||
|
||||
login:
|
||||
method: cookie
|
||||
path: login.php
|
||||
method: form
|
||||
form: form#loginform
|
||||
inputs:
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
keeplogged: 1
|
||||
error:
|
||||
- selector: form#loginform .warning
|
||||
test:
|
||||
path: index.php
|
||||
path: torrents.php
|
||||
|
||||
search:
|
||||
paths:
|
||||
|
96
src/Jackett.Common/Definitions/beyond-hd.yml
Normal file
96
src/Jackett.Common/Definitions/beyond-hd.yml
Normal file
@@ -0,0 +1,96 @@
|
||||
---
|
||||
site: beyond-hd
|
||||
name: Beyond-HD
|
||||
description: "Without BeyondHD, your HDTV is just a TV"
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://beyond-hd.me/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Movies"}
|
||||
- {id: 2, cat: TV, desc: "TV"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, imdbid]
|
||||
movie-search: [q, imdbid]
|
||||
|
||||
login:
|
||||
path: login
|
||||
method: form
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
remember: 1
|
||||
error:
|
||||
- selector: div.has-error
|
||||
test:
|
||||
path: torrents
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: torrents
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
|
||||
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
|
||||
description: ""
|
||||
uploader: ""
|
||||
imdb: "{{ .Query.IMDBIDShort }}"
|
||||
tmdb: ""
|
||||
sorting: 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.torrent-name
|
||||
download:
|
||||
selector: a[href*="/download/"]
|
||||
attribute: href
|
||||
details:
|
||||
selector: a.torrent-name
|
||||
attribute: href
|
||||
banner:
|
||||
optional: true
|
||||
selector: div.torrent-poster img
|
||||
attribute: src
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/600x900", ""]
|
||||
date:
|
||||
selector: td:not(a[href$="/history"]) span.text-orange
|
||||
filters:
|
||||
- name: timeago
|
||||
size:
|
||||
selector: td span.text-blue
|
||||
seeders:
|
||||
selector: a[href$="/peers"] span.text-green
|
||||
leechers:
|
||||
selector: a[href$="/peers"] span.text-red
|
||||
grabs:
|
||||
selector: a[href$="/history"]
|
||||
imdb:
|
||||
optional: true
|
||||
selector: a[href*="www.imdb.com/title/tt"]
|
||||
attribute: href
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"100% Free\"]": "0"
|
||||
"i[data-original-title=\"25% Promo\"]": "0.75"
|
||||
"i[data-original-title=\"50% Promo\"]": "0.5"
|
||||
"i[data-original-title=\"75% Promo\"]": "0.25"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"*": "1"
|
||||
# UNIT3D
|
@@ -140,21 +140,21 @@
|
||||
size:
|
||||
selector: td:nth-last-child(2)
|
||||
date:
|
||||
selector: td:nth-last-child(7)
|
||||
selector: td:nth-last-child(8)
|
||||
filters:
|
||||
- name: append
|
||||
args: " +01:00"
|
||||
- name: dateparse
|
||||
args: "02/01/2006 -07:00"
|
||||
grabs:
|
||||
selector: td:nth-last-child(4)
|
||||
selector: td:nth-last-child(5)
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["---", "0"]
|
||||
seeders:
|
||||
selector: td:nth-last-child(6)
|
||||
selector: td:nth-last-child(7)
|
||||
leechers:
|
||||
selector: td:nth-last-child(5)
|
||||
selector: td:nth-last-child(6)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[alt="Gold 100% Free"]: "0"
|
||||
|
@@ -27,9 +27,12 @@
|
||||
password: "{{ .Config.password }}"
|
||||
remember: 1
|
||||
error:
|
||||
- selector: div.has-error
|
||||
- selector: script[nonce]:contains("Error")
|
||||
message:
|
||||
selector: script[nonce]:contains("Error")
|
||||
test:
|
||||
path: torrents
|
||||
selector: a[href$="/logout"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
@@ -71,13 +74,13 @@
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/600x900", ""]
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
selector: td:nth-last-child(4)
|
||||
seeders:
|
||||
selector: td:nth-child(6)
|
||||
selector: td:nth-last-child(3)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
||||
selector: td:nth-last-child(2)
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
selector: td:nth-last-child(1)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d\.]+)
|
||||
|
@@ -29,9 +29,10 @@
|
||||
search:
|
||||
paths:
|
||||
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time{{else}}recent{{end}}"
|
||||
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time&page=2{{else}}{{end}}"
|
||||
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time&page=3{{else}}{{end}}"
|
||||
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time&page=4{{else}}{{end}}"
|
||||
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time&page=2{{else}}recent?page=2{{end}}"
|
||||
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time&page=3{{else}}recent?page=3{{end}}"
|
||||
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time&page=4{{else}}recent?page=4{{end}}"
|
||||
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time&page=5{{else}}recent?page=5{{end}}"
|
||||
rows:
|
||||
selector: li[class$="item"]
|
||||
fields:
|
||||
@@ -52,6 +53,8 @@
|
||||
selector: div[class$="info"] span:nth-of-type(2)
|
||||
date:
|
||||
selector: div[class$="info"] span:nth-of-type(3)
|
||||
filters:
|
||||
- name: timeago
|
||||
grabs:
|
||||
selector: div[class$="info"] span:nth-of-type(4)
|
||||
seeders:
|
||||
|
@@ -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:
|
||||
|
@@ -18,7 +18,7 @@
|
||||
- name: info_results
|
||||
type: info
|
||||
label: "Search results"
|
||||
default: "For best results, increase the torrents number in your profile to 100.<br />Default is 15."
|
||||
default: "Only the <b>xBtit_Default</b> style is supported with this indexer.<br />For best results, increase the torrents number in your profile to 100.<br />Default is 15."
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -6,7 +6,10 @@
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://teamctgame.xyz/
|
||||
legacylinks:
|
||||
- https://teamctgame.co/
|
||||
- http://teamctgame.xyz/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -28,7 +28,9 @@
|
||||
password: "{{ .Config.password }}"
|
||||
remember: 1
|
||||
error:
|
||||
- selector: div.has-error
|
||||
- selector: script[nonce]:contains("Error")
|
||||
message:
|
||||
selector: script[nonce]:contains("Error")
|
||||
test:
|
||||
path: torrents
|
||||
selector: a[href$="/logout"]
|
||||
@@ -83,13 +85,13 @@
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/600x900", ""]
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
selector: td:nth-last-child(4)
|
||||
seeders:
|
||||
selector: td:nth-child(6)
|
||||
selector: td:nth-last-child(3)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
||||
selector: td:nth-last-child(2)
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
selector: td:nth-last-child(1)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d\.]+)
|
||||
|
@@ -1,142 +0,0 @@
|
||||
---
|
||||
site: cinefilhd
|
||||
name: CiNEFiLHD
|
||||
description: "CiNEFiLHD is a Private Torrent Tracker for MOVIES / TV / MUSIC"
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- http://www.cinefilhd.org/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 37, cat: Movies/HD, desc: " Internal/HD-1080p"}
|
||||
- {id: 17, cat: Movies/HD, desc: " Internal/HD-720p"}
|
||||
- {id: 30, cat: TV/HD, desc: " Internal/HDTV"}
|
||||
- {id: 15, cat: Movies/HD, desc: " Internal/mHD"}
|
||||
- {id: 40, cat: Movies, desc: " Internal/Mp4"}
|
||||
- {id: 26, cat: Movies, desc: " Internal/Remux"}
|
||||
- {id: 45, cat: Movies/WEBDL, desc: " Internal/WEB-DL"}
|
||||
- {id: 25, cat: Movies/3D, desc: " Movies/3D-Ou"}
|
||||
- {id: 16, cat: Movies/3D, desc: " Movies/3D-SbS"}
|
||||
- {id: 5, cat: Movies/BluRay, desc: " Movies/BluRay"}
|
||||
- {id: 38, cat: Movies/HD, desc: " Movies/HD-1080p"}
|
||||
- {id: 10, cat: Movies/HD, desc: " Movies/HD-720p"}
|
||||
- {id: 29, cat: Movies/HD, desc: " Movies/mHD"}
|
||||
- {id: 41, cat: Movies, desc: " Movies/Mp4"}
|
||||
- {id: 39, cat: Movies, desc: " Movies/Remux"}
|
||||
- {id: 44, cat: Movies/WEBDL, desc: " Movies/WEB-DL"}
|
||||
- {id: 23, cat: Audio/Lossless, desc: " Lossless"}
|
||||
- {id: 14, cat: Audio/MP3, desc: " MP3-Packs"}
|
||||
- {id: 22, cat: Audio/MP3, desc: " Music-MP3"}
|
||||
- {id: 43, cat: Audio/Video, desc: " Music/1080p"}
|
||||
- {id: 42, cat: Audio/Video, desc: " Music/720p"}
|
||||
- {id: 12, cat: TV/HD, desc: " HDTV-Packs"}
|
||||
- {id: 21, cat: TV/HD, desc: " Movies/HDTV"}
|
||||
|
||||
modes:
|
||||
search: [q, imdbid]
|
||||
tv-search: [q, season, ep, imdbid]
|
||||
movie-search: [q, imdbid]
|
||||
|
||||
login:
|
||||
path: takelogin.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
submitme: "LOGIN"
|
||||
returnto: /
|
||||
error:
|
||||
- selector: h2:contains("failed")
|
||||
message:
|
||||
selector: td.colhead2
|
||||
test:
|
||||
path: browse.php
|
||||
selector: :has(a[href^="logout.php?hash_please="])
|
||||
|
||||
ratio:
|
||||
path: browse.php
|
||||
selector: div div font:contains("Ratio:")
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "Ratio:\\s(.*?)\\s"
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}cat{{.}}=1&{{end}}"
|
||||
search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
|
||||
# title descr genre all
|
||||
searchin: "{{ if .Query.IMDBID }}descr{{else}}title{{end}}"
|
||||
# 0=active 1=incl dead 2=only dead
|
||||
incldead: 1
|
||||
# 0=no 1=yes
|
||||
only_free: 0
|
||||
rows:
|
||||
selector: table.mainouter table > tbody > tr:has(a[href^="details.php?id="]), table.mainouter table > tbody > tr[id^="kdescr"]
|
||||
after: 1
|
||||
fields:
|
||||
title:
|
||||
selector: a[href^="details.php?id="]
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
category:
|
||||
selector: a[href^="browse.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
download:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["details.php?id=", "download.php?torrent="]
|
||||
banner:
|
||||
selector: a[href^="details.php?id="][onmouseover]
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
# onmouseover="Tip('<img class=\'pup\' src=\'https://image.tmdb.org/t/p/original/x96AdPlpl4MjUP2DeUhRJifhCMd.jpg\' width=
|
||||
- name: regexp
|
||||
args: src=\\'(.*?)\\'
|
||||
imdb:
|
||||
optional: true
|
||||
selector: a[href*="www.imdb.com/title/tt"]
|
||||
files:
|
||||
selector: td:nth-child(4)
|
||||
# 2 flavours of dates
|
||||
date:
|
||||
# Today<br /> 10:20 AM
|
||||
# Yesterday<br /> 08:03 PM
|
||||
optional: true
|
||||
selector: td:nth-child(6):contains("day")
|
||||
date:
|
||||
# Feb 14 2019<br /> 10:20 AM
|
||||
optional: true
|
||||
selector: td:nth-child(6):not(:contains("day"))
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "Jan 2 2006 03:04 pm"
|
||||
size:
|
||||
selector: td:nth-child(7)
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d,]+)
|
||||
seeders:
|
||||
selector: td:nth-child(9)
|
||||
leechers:
|
||||
selector: td:nth-child(10)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
tr.freeleech_color: "0"
|
||||
tr.highlight: "0"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"*": "1"
|
||||
# U-232 v3
|
@@ -38,19 +38,16 @@
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings:
|
||||
- name: cookie
|
||||
type: text
|
||||
label: Cookie
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker in your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Select the <b>Headers</b> tab<li>Find 'cookie:' in the <b>Request Headers</b> section<li>Copy & paste the whole cookie string to here</ol>"
|
||||
|
||||
login:
|
||||
method: cookie
|
||||
path: login-page
|
||||
method: form
|
||||
form: form[action="/login?url=%2F"]
|
||||
inputs:
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
persistent_login: 1
|
||||
error:
|
||||
- selector: div.error
|
||||
test:
|
||||
path: torrents
|
||||
|
||||
|
@@ -20,20 +20,15 @@
|
||||
tv-search: [q, season, ep, imdbid]
|
||||
movie-search: [q, imdbid]
|
||||
|
||||
settings:
|
||||
- name: cookie
|
||||
type: text
|
||||
label: Cookie
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker in your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Select the <b>Headers</b> tab<li>Find 'cookie:' in the <b>Request Headers</b> section<li>Copy & paste the whole cookie string to here</ol>"
|
||||
|
||||
login:
|
||||
method: cookie
|
||||
path: login
|
||||
method: form
|
||||
inputs:
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
test:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
remember: 1
|
||||
error:
|
||||
- selector: form[action$="/login"] span strong
|
||||
test:
|
||||
path: torrents
|
||||
selector: a[href$="/logout"]
|
||||
|
@@ -56,17 +56,21 @@
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings:
|
||||
- name: cookie
|
||||
type: text
|
||||
label: Cookie
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker in your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Select the <b>Headers</b> tab<li>Find 'cookie:' in the <b>Request Headers</b> section<li>Copy & paste the whole cookie string to here</ol>"
|
||||
|
||||
login:
|
||||
path: index.php?page=login
|
||||
method: post
|
||||
method: cookie
|
||||
inputs:
|
||||
uid: "{{ .Config.username }}"
|
||||
pwd: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: div#login-alert
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
|
@@ -34,7 +34,9 @@
|
||||
password: "{{ .Config.password }}"
|
||||
remember: 1
|
||||
error:
|
||||
- selector: div.has-error
|
||||
- selector: script[nonce]:contains("Error")
|
||||
message:
|
||||
selector: script[nonce]:contains("Error")
|
||||
test:
|
||||
path: torrents
|
||||
selector: a[href$="/logout"]
|
||||
@@ -86,13 +88,13 @@
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/600x900", ""]
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
selector: td:nth-last-child(4)
|
||||
seeders:
|
||||
selector: td:nth-child(6)
|
||||
selector: td:nth-last-child(3)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
||||
selector: td:nth-last-child(2)
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
selector: td:nth-last-child(1)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d\.]+)
|
||||
|
94
src/Jackett.Common/Definitions/efectodoppler.yml
Normal file
94
src/Jackett.Common/Definitions/efectodoppler.yml
Normal file
@@ -0,0 +1,94 @@
|
||||
---
|
||||
site: efectodoppler
|
||||
name: Efecto Doppler
|
||||
description: "Efecto Doppler is a SPANISH Private Torrent Tracker for MUSIC"
|
||||
language: es-es
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://efectodoppler.pw/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
1: Audio
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
music-search: [q, album, artist, label, year]
|
||||
|
||||
login:
|
||||
path: login.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
keeplogged: 1
|
||||
error:
|
||||
- selector: form > span.warning
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href^="logout.php?auth="]
|
||||
|
||||
ratio:
|
||||
path: index.php
|
||||
selector: li#stats_ratio span.stat span
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: torrents.php
|
||||
inputs:
|
||||
artistname: "{{if .Query.Artist}}{{ .Query.Artist }}{{else}}{{end}}"
|
||||
groupname: "{{if .Query.Artist}}{{else}}{{ .Keywords }}{{end}}"
|
||||
order_by: time
|
||||
order_way: desc
|
||||
rows:
|
||||
selector: tr.torrent
|
||||
fields:
|
||||
category:
|
||||
text: "1"
|
||||
artist:
|
||||
text: "Varios artistas"
|
||||
artist:
|
||||
selector: a[href^="artist.php?id="]
|
||||
optional: true
|
||||
title:
|
||||
selector: a[href^="torrents.php?id="]
|
||||
filters:
|
||||
- name: prepend
|
||||
args: "{{.Result.artist}} - "
|
||||
details:
|
||||
selector: a[href^="torrents.php?id="]
|
||||
attribute: href
|
||||
banner:
|
||||
selector: div.group_image img
|
||||
attribute: src
|
||||
download:
|
||||
selector: a[href^="torrents.php?action=download&id="]
|
||||
attribute: href
|
||||
description:
|
||||
selector: div.torrent_info
|
||||
files:
|
||||
selector: td:nth-child(3)
|
||||
date:
|
||||
selector: td:nth-child(4) span
|
||||
attribute: title
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "Jan 02 2006, 15:04"
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
grabs:
|
||||
selector: td:nth-child(6)
|
||||
seeders:
|
||||
selector: td:nth-child(7)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
strong.torrent_label[title*="Neutral"]: "0"
|
||||
strong.torrent_label[title*="Oro"]: "0"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
strong.torrent_label[title*="Neutral"]: "0"
|
||||
"*": "1"
|
@@ -6,9 +6,10 @@
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.elitetorrent.io/
|
||||
- https://www.elitetorrent.one/
|
||||
legacylinks:
|
||||
- https://www.elitetorrent.biz/
|
||||
- https://www.elitetorrent.io/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
|
@@ -1,160 +0,0 @@
|
||||
---
|
||||
site: freedomhd
|
||||
name: Freedom-HD
|
||||
description: "Freedom-HD (Freedom Paradise) is a ratioless FRENCH Private Torrent Tracker for HD MOVIES / GENERAL"
|
||||
language: fr-fr
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- http://freedom-paradise.eu/
|
||||
|
||||
download:
|
||||
before:
|
||||
path: list_thanks.php
|
||||
method: "get"
|
||||
inputs:
|
||||
id: "{{ .DownloadUri.Query.id }}"
|
||||
to: "give"
|
||||
torrent: "{{ .DownloadUri.Query.id }}"
|
||||
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
# ANIMES
|
||||
- {id: 105, cat: TV/Anime, desc: "ANIMES 1080p-Bluray"}
|
||||
- {id: 149, cat: TV/Anime, desc: "ANIMES 3D"}
|
||||
- {id: 143, cat: TV/Anime, desc: "ANIMES 4K-2160p"}
|
||||
- {id: 104, cat: TV/Anime, desc: "ANIMES 720p-Bluray"}
|
||||
- {id: 90, cat: TV/Anime, desc: "ANIMES HDrip-720p"}
|
||||
- {id: 93, cat: TV/Anime, desc: "ANIMES HDrip-1080p"}
|
||||
- {id: 131, cat: TV/Anime, desc: "ANIMES SD"}
|
||||
- {id: 120, cat: TV/Anime, desc: "ANIMES X265-1080p"}
|
||||
- {id: 119, cat: TV/Anime, desc: "ANIMES X265-720p"}
|
||||
# DOCUMENTAIRES
|
||||
- {id: 107, cat: TV/Documentary, desc: "DOCS 1080p-Bluray"}
|
||||
- {id: 152, cat: TV/Documentary, desc: "DOCS 2160p-Bluray"}
|
||||
- {id: 106, cat: TV/Documentary, desc: "DOCS 720p-Bluray"}
|
||||
- {id: 94, cat: TV/Documentary, desc: "DOCS HDrip-1080p"}
|
||||
- {id: 91, cat: TV/Documentary, desc: "DOCS HDrip-720p"}
|
||||
- {id: 142, cat: TV/Documentary, desc: "DOCS HDTV"}
|
||||
- {id: 141, cat: TV/Documentary, desc: "DOCS SD"}
|
||||
# EBOOK
|
||||
- {id: 124, cat: Books, desc: "Livres et Magazines"}
|
||||
# FILMS
|
||||
- {id: 97, cat: Movies/HD, desc: "FILMS Bluray-1080p"}
|
||||
- {id: 103, cat: Movies/3D, desc: "FILMS 3D"}
|
||||
- {id: 111, cat: Movies/UHD, desc: "FILMS 4K"}
|
||||
- {id: 96, cat: Movies/HD, desc: "FILMS Bluray-720p"}
|
||||
- {id: 127, cat: Movies/HD, desc: "FILMS BDrip"}
|
||||
- {id: 128, cat: Movies/HD, desc: "FILMS BRrip"}
|
||||
- {id: 140, cat: Movies/HD, desc: "FILMS BSD-Team"}
|
||||
- {id: 126, cat: Movies/SD, desc: "FILMS DVDrip"}
|
||||
- {id: 136, cat: Movies/BluRay, desc: "FILMS Full-Bluray"}
|
||||
- {id: 135, cat: Movies/SD, desc: "FILMS Team Freedom-HD"}
|
||||
- {id: 137, cat: Movies/SD, desc: "FILMS Team ticadow"}
|
||||
- {id: 89, cat: Movies/HD, desc: "FILMS HDrip-720p"}
|
||||
- {id: 92, cat: Movies/HD, desc: "FILMS HDrip-1080p"}
|
||||
- {id: 112, cat: Movies/SD, desc: "FILMS Team-Hush"}
|
||||
- {id: 129, cat: Movies/HD, desc: "FILMS Team-Romkent"}
|
||||
- {id: 125, cat: Movies/Other, desc: "FILMS WEBrip"}
|
||||
- {id: 110, cat: Movies/HD, desc: "FILMS X265-1080p"}
|
||||
- {id: 109, cat: Movies/HD, desc: "FILMS X265-720p"}
|
||||
# GAMES
|
||||
- {id: 134, cat: PC/Games, desc: "jeu PC"}
|
||||
# MUSIQUES
|
||||
- {id: 114, cat: Audio/Lossless, desc: "MUSIQUES Flac"}
|
||||
- {id: 113, cat: Audio/MP3, desc: "MUSIQUES MP3"}
|
||||
- {id: 132, cat: Audio, desc: "MUSIQUES HQ"}
|
||||
- {id: 130, cat: Audio/Video, desc: "MUSIQUES video clip"}
|
||||
# SERIE
|
||||
- {id: 121, cat: TV/SD, desc: "SERIE SD"}
|
||||
- {id: 102, cat: TV/HD, desc: "SERIE 1080p-Bluray"}
|
||||
- {id: 101, cat: TV/HD, desc: "SERIE 720p-Bluray"}
|
||||
- {id: 100, cat: TV/HD, desc: "SERIE HDrip-1080p"}
|
||||
- {id: 99, cat: TV/HD, desc: "SERIE HDrip-720p"}
|
||||
- {id: 151, cat: TV/UHD, desc: "SERIE HDrip-2160p"}
|
||||
# SPECTACLES
|
||||
- {id: 138, cat: TV, desc: "SPECTACLES Bluray-1080p"}
|
||||
- {id: 139, cat: TV, desc: "SPECTACLES Bluray-720p"}
|
||||
- {id: 133, cat: TV, desc: "SPECTACLES DVDrip"}
|
||||
- {id: 118, cat: TV, desc: "SPECTACLES HDrip-1080p"}
|
||||
- {id: 117, cat: TV, desc: "SPECTACLES HDrip-720p"}
|
||||
# SPORT
|
||||
- {id: 146, cat: TV/Sport, desc: "SPORT HDTV-1080p"}
|
||||
- {id: 147, cat: TV/Sport, desc: "SPORT HDTV-720p"}
|
||||
- {id: 148, cat: TV/Sport, desc: "SPORT SD"}
|
||||
- {id: 144, cat: TV/Sport, desc: "SPORT WEB-DL-1080p"}
|
||||
- {id: 145, cat: TV/Sport, desc: "SPORT WEB-DL-720p"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
|
||||
login:
|
||||
path: account-login.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
remember: "yes"
|
||||
returnto: "/"
|
||||
error:
|
||||
- selector: div.myFrame:has(font.error)
|
||||
test:
|
||||
path: torrents-search.php
|
||||
selector: a.logout
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: torrents-search.php
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Query.Keywords }}"
|
||||
incldead: "1"
|
||||
|
||||
rows:
|
||||
selector: table.ttable_headinner > tbody > tr[class^="t-row"]
|
||||
filters:
|
||||
- name: andmatch
|
||||
after: 1
|
||||
fields:
|
||||
download:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["torrents-details.php", "download.php"]
|
||||
title:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: title
|
||||
category:
|
||||
selector: a[href^="torrents.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
details:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: href
|
||||
description:
|
||||
selector: ul
|
||||
banner:
|
||||
selector: img.rounded-img
|
||||
attribute: src
|
||||
size:
|
||||
selector: td:nth-child(3)
|
||||
grabs:
|
||||
selector: td:nth-child(6)
|
||||
seeders:
|
||||
selector: td:nth-child(4)
|
||||
leechers:
|
||||
selector: td:nth-child(5)
|
||||
date:
|
||||
text: now
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[alt="freeleech"]: "0"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"*": "1"
|
@@ -23,6 +23,7 @@
|
||||
- {id: 11, cat: PC/Phone-Android, desc: "Android ROMs"}
|
||||
- {id: 12, cat: TV/Documentary, desc: "Documentaries"}
|
||||
- {id: 13, cat: TV, desc: "Shows"}
|
||||
- {id: 14, cat: Audio/Video, desc: "Music clips"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
@@ -36,7 +37,9 @@
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: form[action*="/login"] .text-red
|
||||
- selector: script[nonce]:contains("Error")
|
||||
message:
|
||||
selector: script[nonce]:contains("Error")
|
||||
test:
|
||||
path: torrents
|
||||
|
||||
@@ -46,6 +49,7 @@
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
|
||||
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
|
||||
description: ""
|
||||
uploader: ""
|
||||
imdb: "{{ .Query.IMDBIDShort }}"
|
||||
tvdb: ""
|
||||
@@ -71,20 +75,27 @@
|
||||
details:
|
||||
selector: a.view-torrent
|
||||
attribute: href
|
||||
banner:
|
||||
optional: true
|
||||
selector: div.torrent-poster img
|
||||
attribute: src
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/600x900", ""]
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
selector: td:nth-last-child(4)
|
||||
seeders:
|
||||
selector: td:nth-child(7)
|
||||
selector: td:nth-last-child(3)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
selector: td:nth-last-child(2)
|
||||
grabs:
|
||||
selector: td:nth-child(6)
|
||||
selector: td:nth-last-child(1)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d\.]+)
|
||||
imdb:
|
||||
optional: true
|
||||
selector: a[href^="https://www.imdb.com/title/"]
|
||||
selector: a[href*="www.imdb.com/title/tt"]
|
||||
attribute: href
|
||||
date:
|
||||
selector: time
|
||||
@@ -114,13 +125,17 @@
|
||||
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=\"Personal Freeleech\"]": "0" # 24 Hour FreeLeech From BON Store
|
||||
"i[data-original-title=\"Special Freeleech\"]": "0" # Special FreeLeech For Certain User Groups
|
||||
"i[data-original-title=\"Freeleech Token\"]": "0" # Freeleech From Token
|
||||
"i[data-original-title=\"Global FreeLeech\"]": "0" # Global Freeleech
|
||||
"i[data-original-title=\"Freeleech\"]": "0" # Freeleech
|
||||
"i[data-original-title=\"Featured\"]": "0" # Featured Torrent
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
|
||||
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
|
||||
"i[data-original-title=\"Double Upload\"]": "2" # Single Torrent Double Upload
|
||||
"i[data-original-title=\"Global Double Upload\"]": "2" # Global Double Upload
|
||||
"i[data-original-title=\"Featured\"]": "2" # Featured Torrent
|
||||
"*": "1"
|
||||
# UNIT3D
|
||||
# UNIT3D 1.9.2
|
||||
|
@@ -7,8 +7,6 @@
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.frozen-layer.com/
|
||||
certificates:
|
||||
- 001bc21dd13b54b05106b510a327a7182ec443a4
|
||||
|
||||
settings:
|
||||
- name: category
|
||||
|
208
src/Jackett.Common/Definitions/generationfree.yml
Normal file
208
src/Jackett.Common/Definitions/generationfree.yml
Normal file
@@ -0,0 +1,208 @@
|
||||
---
|
||||
site: generationfree
|
||||
name: Generation-Free
|
||||
description: "Generation-Free is a FRENCH Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: fr-fr
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://generation-free.biz/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 10, cat: TV/HD, desc: "Animation: HD720P"}
|
||||
- {id: 11, cat: TV/HD, desc: "Animation: HD1080P"}
|
||||
- {id: 56, cat: TV/SD, desc: "Animation: DVDRip"}
|
||||
- {id: 13, cat: TV/SD, desc: "Animation: DVD"}
|
||||
- {id: 105, cat: TV/HD, desc: "Animation: Bluray"}
|
||||
- {id: 106, cat: TV/HD, desc: "Animation: HDTV"}
|
||||
- {id: 108, cat: TV/WEB-DL, desc: "Animation: WEBDL"}
|
||||
- {id: 109, cat: TV/WEB-DL, desc: "Animation: WEBRIP"}
|
||||
- {id: 18, cat: PC/0day, desc: "Applications: PC"}
|
||||
- {id: 16, cat: PC/Games, desc: "Applications: Jeux"}
|
||||
- {id: 19, cat: PC/Phone-Android, desc: "Applications: Android"}
|
||||
- {id: 38, cat: PC/Phone-Other, desc: "Applications: Mobile Phone"}
|
||||
- {id: 17, cat: PC/Mac, desc: "Applications: Mac"}
|
||||
- {id: 117, cat: PC, desc: "Applications: Appli-autre"}
|
||||
- {id: 40, cat: PC, desc: "Applications: Linux"}
|
||||
- {id: 67, cat: TV/OTHER, desc: "Autres: Emission TV"}
|
||||
- {id: 118, cat: TV/Documentary, desc: "Documentaires: Sport"}
|
||||
- {id: 15, cat: TV/Documentary, desc: "Documentaires: HD"}
|
||||
- {id: 14, cat: TV/Documentary, desc: "Documentaires: DivX"}
|
||||
- {id: 76, cat: TV/Documentary, desc: "Documentaires: TVRip/HDTV"}
|
||||
- {id: 62, cat: Audio/Audiobook, desc: "E-Books: E-Books Audio"}
|
||||
- {id: 51, cat: Books/Ebook, desc: "E-Books: BD"}
|
||||
- {id: 50, cat: Books/Ebook, desc: "E-Books: Manuel Français"}
|
||||
- {id: 49, cat: Books/Ebook, desc: "E-Books: Manuel Anglais"}
|
||||
- {id: 36, cat: Books/Ebook, desc: "E-Books: Livres Français"}
|
||||
- {id: 53, cat: Books/Ebook, desc: "E-Books: Livre Anglais"}
|
||||
- {id: 52, cat: Books/Ebook, desc: "E-Books: Revue - Journaux"}
|
||||
- {id: 3, cat: Movies/DVD, desc: "Films: DVDRIP"}
|
||||
- {id: 4, cat: Movies/DVD, desc: "Films: DVD5"}
|
||||
- {id: 66, cat: Movies, desc: "Films: VOSTFR"}
|
||||
- {id: 88, cat: Movies/BluRay, desc: "Films: Full BD/BR"}
|
||||
- {id: 89, cat: Movies/BluRay, desc: "Films: BD/BR Rip"}
|
||||
- {id: 5, cat: Movies/DVD, desc: "Films: DVD9"}
|
||||
- {id: 94, cat: Movies/DVD, desc: "Films: DVDscreen"}
|
||||
- {id: 91, cat: Movies, desc: "Films: RemuX"}
|
||||
- {id: 104, cat: Movies/BluRay, desc: "Films: Film-BDRip"}
|
||||
- {id: 110, cat: Movies/WEBDL, desc: "Films: WEBRip"}
|
||||
- {id: 111, cat: Movies/WEBDL, desc: "Films: WEBRip-720p-P"}
|
||||
- {id: 95, cat: Movies/BluRay, desc: "Films: bluray"}
|
||||
- {id: 102, cat: Movies/WEBDL, desc: "Films: WEB-DL 720P"}
|
||||
- {id: 101, cat: Movies/WEBDL, desc: "Films: WEB-DL 1080P"}
|
||||
- {id: 92, cat: Movies/UHD, desc: "Films: 4K"}
|
||||
- {id: 100, cat: Movies/UHD, desc: "Films: 4KLight"}
|
||||
- {id: 71, cat: Movies/WEBDL, desc: "Films: WEB-DL"}
|
||||
- {id: 69, cat: Movies/3D, desc: "Films: Film 3D"}
|
||||
- {id: 65, cat: TV, desc: "Films: VO"}
|
||||
- {id: 72, cat: TV/HD, desc: "Films: TVRip/HDTV"}
|
||||
- {id: 96, cat: Movies/HD, desc: "Films: HDlight"}
|
||||
- {id: 70, cat: Movies/HD, desc: "Films: MHD X265"}
|
||||
- {id: 103, cat: Movies/HD, desc: "Films: Film-HDRIP"}
|
||||
- {id: 57, cat: TV, desc: "Films: TS/CAM"}
|
||||
- {id: 59, cat: TV, desc: "Films: Spectacle"}
|
||||
- {id: 87, cat: XXX, desc: "Films: XXX"}
|
||||
- {id: 55, cat: Movies/HD, desc: "Films: MHD 720P"}
|
||||
- {id: 54, cat: Movies/HD, desc: "Films: MHD 1080P"}
|
||||
- {id: 1, cat: Movies/HD, desc: "Films: HD720P"}
|
||||
- {id: 2, cat: Movies/HD, desc: "Films: HD1080P"}
|
||||
- {id: 90, cat: Movies/HD, desc: "Films: HD X265"}
|
||||
- {id: 112, cat: Movies/WEBDL, desc: "Films: WEBrip-1080-P"}
|
||||
- {id: 77, cat: PC/Phone-Other, desc: "GPS: Cartes"}
|
||||
- {id: 78, cat: PC/Phone-Other, desc: "GPS: Radars"}
|
||||
- {id: 125, cat: TV/Anime, desc: "Mangas: DVDRip"}
|
||||
- {id: 124, cat: TV/Anime, desc: "Mangas: HD720P"}
|
||||
- {id: 97, cat: Audio, desc: "Musique: Podcast"}
|
||||
- {id: 98, cat: Audio, desc: "Musique: karaoké"}
|
||||
- {id: 75, cat: Audio, desc: "Musique: Concert TVRip"}
|
||||
- {id: 24, cat: Audio/Lossless, desc: "Musique: Single Flac"}
|
||||
- {id: 25, cat: Audio/MP3, desc: "Musique: Single MP3"}
|
||||
- {id: 22, cat: Audio/MP3, desc: "Musique: Album MP3"}
|
||||
- {id: 115, cat: Audio/MP3, desc: "Musique: Coffret mp3"}
|
||||
- {id: 23, cat: Audio/Lossless, desc: "Musique: Album Flac"}
|
||||
- {id: 116, cat: Audio/Lossless, desc: "Musique: Coffret flac"}
|
||||
- {id: 64, cat: Audio, desc: "Musique: Mégamix Maison"}
|
||||
- {id: 58, cat: Audio, desc: "Musique: Concert"}
|
||||
- {id: 6, cat: TV, desc: "Serie TV: Saison FR"}
|
||||
- {id: 7, cat: TV, desc: "Serie TV: Episode FR"}
|
||||
- {id: 61, cat: TV, desc: "Serie TV: Episode VOSTFR"}
|
||||
- {id: 93, cat: TV, desc: "Serie TV: Saison VOSTFR"}
|
||||
- {id: 113, cat: TV, desc: "Serie TV: Episode QC"}
|
||||
- {id: 114, cat: TV, desc: "Serie TV: Saison QC"}
|
||||
- {id: 73, cat: TV/WEB-DL, desc: "Serie TV: WEB-DL"}
|
||||
- {id: 74, cat: TV/HD, desc: "Serie TV: TVRip/HDTV"}
|
||||
- {id: 12, cat: TV, desc: "Serie TV: Animation"}
|
||||
- {id: 63, cat: TV, desc: "Serie TV: Episode VO"}
|
||||
- {id: 120, cat: TV/HD, desc: "Serie TV: Episode Bluray 1080p"}
|
||||
- {id: 121, cat: TV/HD, desc: "Serie TV: Saison Bluray 720p"}
|
||||
- {id: 122, cat: TV/HD, desc: "Serie TV: Saison Bluray 1080p"}
|
||||
- {id: 119, cat: TV/HD, desc: "Serie TV: Episode Bluray 720p"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: multilang
|
||||
type: checkbox
|
||||
label: Replace MULTI by another language in release name
|
||||
default: false
|
||||
- name: multilanguage
|
||||
type: select
|
||||
label: Replace MULTI by this language
|
||||
default: VOSTFR
|
||||
options:
|
||||
FRENCH : "FRENCH"
|
||||
"MULTI FRENCH": "MULTI FRENCH"
|
||||
ENGLISH: "ENGLISH"
|
||||
"MULTI ENGLISH": "MULTI ENGLISH"
|
||||
VOSTFR: "VOSTFR"
|
||||
"MULTI VOSTFR": "MULTI VOSTFR"
|
||||
|
||||
login:
|
||||
path: account-login.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: td.tboxhead
|
||||
test:
|
||||
path: torrents-search.php
|
||||
selector: a[href="account-logout.php"]
|
||||
|
||||
download:
|
||||
before:
|
||||
path: "list_thanks.php"
|
||||
method: "get"
|
||||
inputs:
|
||||
id: "{{ .DownloadUri.Query.id }}"
|
||||
to: "give"
|
||||
torrent: "{{ .DownloadUri.Query.id }}"
|
||||
selector: a[href^="download.php?id="]
|
||||
|
||||
search:
|
||||
paths:
|
||||
# 40 results per page
|
||||
- path: torrents-search.php
|
||||
- path: torrents-search.php
|
||||
inputs:
|
||||
page: 1
|
||||
inputs:
|
||||
# multi cats unsupported, defaulting to all
|
||||
cat: 0
|
||||
search: "{{ .Keywords }}"
|
||||
incldead: 1
|
||||
freeleech: 0
|
||||
inclexternal: 0
|
||||
lang: 0
|
||||
sort: id
|
||||
order: desc
|
||||
|
||||
rows:
|
||||
selector: table.ttable_headinner > tbody > tr.t-row
|
||||
fields:
|
||||
title_original:
|
||||
selector: a[href^="torrents-details.php?id="] b
|
||||
title_multilang:
|
||||
text: "{{ .Result.title_original }}"
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["\\s[Mm][Uu][Ll][Tt][Ii]\\s", " {{ .Config.multilanguage }} "]
|
||||
title:
|
||||
text: "{{if .Config.multilang }}{{ .Result.title_multilang }}{{else}}{{ .Result.title_original }}{{end}}"
|
||||
category:
|
||||
selector: a[href^="torrents.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
details:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-last-child(4)
|
||||
seeders:
|
||||
selector: td:nth-last-child(3)
|
||||
leechers:
|
||||
selector: td:nth-last-child(2)
|
||||
date:
|
||||
text: now
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="images/fl.gif"]: "0"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"*": "1"
|
@@ -7,7 +7,7 @@
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://www.gktorrent.tv/
|
||||
- https://www.gktorrent.biz/
|
||||
legacylinks:
|
||||
- https://www.gktorrent.com/
|
||||
- http://www.gktorrent.com/
|
||||
@@ -24,6 +24,7 @@
|
||||
- https://www.gktorrent.me/
|
||||
- https://www.rantop.org/
|
||||
- https://www.gktorrent.cx/
|
||||
- https://www.gktorrent.tv/
|
||||
- https://www.gktorrent.net/
|
||||
|
||||
caps:
|
||||
|
@@ -63,22 +63,23 @@
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings:
|
||||
- name: cookie
|
||||
type: text
|
||||
label: Cookie
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker in your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Select the <b>Headers</b> tab<li>Find 'cookie:' in the <b>Request Headers</b> section<li>Copy & paste the whole cookie string to here</ol>"
|
||||
|
||||
login:
|
||||
path: ajax/login.php
|
||||
method: post
|
||||
method: cookie
|
||||
headers:
|
||||
user-agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36"
|
||||
form: form
|
||||
inputs:
|
||||
loginbox_membername: "{{ .Config.username }}"
|
||||
loginbox_password: "{{ .Config.password }}"
|
||||
action: "login"
|
||||
loginbox_remember: "true"
|
||||
error:
|
||||
- selector: div.error
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
test:
|
||||
path: ?p=home&pid=1
|
||||
selector: div#member_info_bar
|
||||
|
||||
search:
|
||||
path: /
|
||||
|
345
src/Jackett.Common/Definitions/hamsterstudio.yml
Normal file
345
src/Jackett.Common/Definitions/hamsterstudio.yml
Normal file
@@ -0,0 +1,345 @@
|
||||
---
|
||||
site: hamsterstudio
|
||||
name: HamsterStudio
|
||||
description: "HamsterStudio is a RUSSIAN Semi-Private Torrent Tracker for TV"
|
||||
language: ru-ru
|
||||
type: private
|
||||
encoding: windows-1251
|
||||
links:
|
||||
- http://hamsterstudio.org/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 23, cat: Movies, desc: "Кино"}
|
||||
- {id: 18, cat: TV/WEB-DL, desc: "Веб-сериалы"}
|
||||
- {id: 19, cat: TV/OTHER, desc: "Разные сериалы"}
|
||||
- {id: 10, cat: Audio, desc: "Музыка"}
|
||||
- {id: 29, cat: TV, desc: "Лечение (Пациенты)"}
|
||||
- {id: 37, cat: TV, desc: "Сериалы с ТВ"}
|
||||
- {id: 21, cat: TV, desc: "Полуночный зверь"}
|
||||
- {id: 11, cat: TV, desc: "Милые обманщицы"}
|
||||
- {id: 27, cat: TV, desc: "Девочки"}
|
||||
- {id: 20, cat: TV, desc: "Умерь Свой Пыл"}
|
||||
- {id: 24, cat: TV, desc: "Ийон Тихий, космический пилот"}
|
||||
- {id: 25, cat: TV, desc: "Красный карлик"}
|
||||
- {id: 22, cat: TV, desc: "Тримей"}
|
||||
- {id: 26, cat: TV, desc: "На дне"}
|
||||
- {id: 38, cat: TV, desc: "Галактика: Кровь и Хром"}
|
||||
- {id: 39, cat: TV, desc: "Супертюрьма"}
|
||||
- {id: 40, cat: TV, desc: "Семерка Блэйка"}
|
||||
- {id: 42, cat: TV, desc: "Западное крыло"}
|
||||
- {id: 43, cat: TV, desc: "Убойный Отдел: Уличные Будни"}
|
||||
- {id: 47, cat: TV, desc: "Это Англия"}
|
||||
- {id: 48, cat: TV, desc: "Бенидорм"}
|
||||
- {id: 49, cat: TV, desc: "Сайнфелд"}
|
||||
- {id: 51, cat: TV, desc: "Вице"}
|
||||
- {id: 52, cat: TV, desc: "За кадром о кадре"}
|
||||
- {id: 54, cat: TV, desc: "Хемлок Гроув"}
|
||||
- {id: 56, cat: TV, desc: "Семейное древо"}
|
||||
- {id: 57, cat: TV, desc: "Мэрон"}
|
||||
- {id: 59, cat: TV, desc: "Спецнах"}
|
||||
- {id: 60, cat: TV, desc: "Работа не волк"}
|
||||
- {id: 64, cat: TV, desc: "Дивизион "}
|
||||
- {id: 66, cat: TV, desc: "Кошмары Фредди"}
|
||||
- {id: 67, cat: TV, desc: "Все дома"}
|
||||
- {id: 69, cat: TV, desc: "Бездельницы"}
|
||||
- {id: 70, cat: TV, desc: "Реальные люди"}
|
||||
- {id: 71, cat: TV, desc: "Трофеи Вавилона"}
|
||||
- {id: 72, cat: TV, desc: "Постфактум"}
|
||||
- {id: 73, cat: TV, desc: "Детектив Босх"}
|
||||
- {id: 74, cat: TV, desc: "В девятом номере"}
|
||||
- {id: 75, cat: TV, desc: "Верь"}
|
||||
- {id: 76, cat: TV, desc: "Семь дней"}
|
||||
- {id: 77, cat: TV, desc: "Красная дорога"}
|
||||
- {id: 78, cat: TV, desc: "Борджиа"}
|
||||
- {id: 79, cat: TV, desc: "Вдовец"}
|
||||
- {id: 80, cat: TV, desc: "Безумцы"}
|
||||
- {id: 81, cat: TV, desc: "Убийство первой степени"}
|
||||
- {id: 82, cat: TV, desc: "Мистер Слоун"}
|
||||
- {id: 83, cat: TV, desc: "Путеводитель по семейной жизни"}
|
||||
- {id: 84, cat: TV, desc: "Агенты"}
|
||||
- {id: 85, cat: TV, desc: "Блюз Хилл-Стрит"}
|
||||
- {id: 86, cat: TV, desc: "В погоне за тенями"}
|
||||
- {id: 87, cat: TV, desc: "Константин"}
|
||||
- {id: 88, cat: TV, desc: "Готэм"}
|
||||
- {id: 89, cat: TV, desc: "Клей"}
|
||||
- {id: 90, cat: TV, desc: "Скорострел"}
|
||||
- {id: 91, cat: TV, desc: "Водитель"}
|
||||
- {id: 92, cat: TV, desc: "Очевидное"}
|
||||
- {id: 93, cat: TV, desc: "Красные дубы"}
|
||||
- {id: 94, cat: TV, desc: "Жизнь начинается в 18"}
|
||||
- {id: 95, cat: TV, desc: "Безрассудный"}
|
||||
- {id: 96, cat: TV, desc: "Пропавший без вести"}
|
||||
- {id: 97, cat: TV, desc: "Взгляд в прошлое"}
|
||||
- {id: 98, cat: TV, desc: "Королевская семья"}
|
||||
- {id: 99, cat: TV, desc: "Одиночки с причудами"}
|
||||
- {id: 101, cat: TV, desc: "CSI: Киберпространство"}
|
||||
- {id: 102, cat: TV, desc: "Сорвиголова"}
|
||||
- {id: 103, cat: TV, desc: "Осадок"}
|
||||
- {id: 104, cat: TV, desc: "Призраки Энфилда"}
|
||||
- {id: 105, 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: 111, cat: TV, desc: "Человек в высоком замке"}
|
||||
- {id: 112, cat: TV, desc: "Бойтесь Ходячих мертвецов"}
|
||||
- {id: 113, cat: TV, desc: "Стражи галактики"}
|
||||
- {id: 114, cat: TV, desc: "Герои: Возрождение"}
|
||||
- {id: 115, cat: TV, desc: "Заключенный"}
|
||||
- {id: 116, cat: TV, desc: "Родина"}
|
||||
- {id: 117, cat: TV, desc: "Фарго"}
|
||||
- {id: 118, cat: TV, desc: "Американская история ужасов"}
|
||||
- {id: 119, cat: TV, desc: "Оставленные"}
|
||||
- {id: 121, cat: TV, desc: "Любовники"}
|
||||
- {id: 122, cat: TV, desc: "Агенты Щит"}
|
||||
- {id: 123, cat: TV, desc: "Эш против зловещих мертвецов"}
|
||||
- {id: 124, cat: TV, desc: "Ходячие мертвецы"}
|
||||
- {id: 125, cat: TV, desc: "Демоны Да Винчи"}
|
||||
- {id: 120, cat: TV, desc: "Сонная лощина"}
|
||||
- {id: 126, cat: TV, desc: "Джекил и Хайд"}
|
||||
- {id: 127, cat: TV, desc: "Джессика Джонс"}
|
||||
- {id: 128, cat: TV, desc: "Лондонский шпион"}
|
||||
- {id: 129, cat: TV, desc: "Мост"}
|
||||
- {id: 130, cat: TV, desc: "Хроники Франкенштейна"}
|
||||
- {id: 131, cat: TV, desc: "Пространство"}
|
||||
- {id: 132, cat: TV, desc: "Конец детства"}
|
||||
- {id: 133, cat: TV, desc: "Путь к выздоровлению"}
|
||||
- {id: 134, cat: TV, desc: "Старость не радость"}
|
||||
- {id: 135, cat: TV, desc: "Пьяная история"}
|
||||
- {id: 136, cat: TV, desc: "Хроники Шаннары"}
|
||||
- {id: 137, 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: 145, cat: TV, desc: "Банши "}
|
||||
- {id: 146, cat: TV, desc: " Шоу Джимма Гаффигана"}
|
||||
- {id: 147, cat: TV, desc: "Все кувырком"}
|
||||
- {id: 148, cat: TV, desc: "Сожители"}
|
||||
- {id: 149, cat: TV, desc: "Внутри Эми Шумер"}
|
||||
- {id: 150, cat: TV, desc: "С чистого листа"}
|
||||
- {id: 151, cat: TV, desc: "Хофф в записи"}
|
||||
- {id: 152, cat: TV, desc: "Жевательная резинка"}
|
||||
- {id: 153, cat: TV, desc: "Охотники"}
|
||||
- {id: 154, cat: TV, desc: "Даркнет"}
|
||||
- {id: 155, cat: TV, desc: "Бонг для путешествий во времен"}
|
||||
- {id: 156, cat: TV, desc: "Бульварные ужасы"}
|
||||
- {id: 157, cat: TV, desc: "Флауэрсы"}
|
||||
- {id: 158, cat: TV, desc: "Грейс и Фрэнки "}
|
||||
- {id: 159, cat: TV, desc: "Проповедник"}
|
||||
- {id: 142, cat: TV, desc: "Принц из Беверли Хиллз"}
|
||||
- {id: 160, 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: 168, cat: TV, desc: "Трагедия в Кеттеринге"}
|
||||
- {id: 170, cat: TV, desc: "Я люблю Дика"}
|
||||
- {id: 171, 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: 182, cat: TV, desc: "Слепое пятно"}
|
||||
- {id: 183, cat: TV, desc: "Королевы крика"}
|
||||
- {id: 184, cat: TV, desc: "Черный список"}
|
||||
- {id: 185, cat: TV, desc: "Однажды в сказке"}
|
||||
- {id: 186, cat: TV, desc: "Звездные войны: повстанцы"}
|
||||
- {id: 187, cat: TV, desc: "Скорпион"}
|
||||
- {id: 188, cat: TV, desc: "Безбашенные"}
|
||||
- {id: 189, cat: TV, desc: "Черное зеркало"}
|
||||
- {id: 190, cat: TV, desc: "Стэн против сил зла"}
|
||||
- {id: 191, cat: TV, desc: "Удалённые"}
|
||||
- {id: 192, cat: TV, desc: "Сирены"}
|
||||
- {id: 193, cat: TV, desc: "По ту сторону"}
|
||||
- {id: 194, cat: TV, desc: "ОА"}
|
||||
- {id: 195, cat: TV, desc: "Табу"}
|
||||
- {id: 196, cat: TV, desc: "Колония"}
|
||||
- {id: 197, cat: TV, desc: "Волшебники"}
|
||||
- {id: 198, cat: TV, desc: "24 часа"}
|
||||
- {id: 199, cat: TV, desc: "Миллиарды"}
|
||||
- {id: 200, cat: TV, desc: "Большая маленькая ложь"}
|
||||
- {id: 201, cat: TV, desc: "Легион"}
|
||||
- {id: 202, cat: TV, desc: "Сан рекордз"}
|
||||
- {id: 203, cat: TV, desc: "Заложница"}
|
||||
- {id: 204, cat: TV, desc: "Убийство на пляже"}
|
||||
- {id: 205, cat: TV, desc: "Подземка"}
|
||||
- {id: 206, cat: TV, desc: "Любовь"}
|
||||
- {id: 207, cat: TV, desc: "Преступление по-американски "}
|
||||
- {id: 208, cat: TV, desc: "Большой куш"}
|
||||
- {id: 209, cat: TV, desc: "Побег"}
|
||||
- {id: 210, cat: TV, desc: "Я Зомби"}
|
||||
- {id: 211, cat: TV, desc: "Лучше звоните Солу"}
|
||||
- {id: 212, cat: TV, desc: "Арчер"}
|
||||
- {id: 213, cat: TV, desc: "Дорогие белые"}
|
||||
- {id: 214, cat: TV, desc: "Американские боги"}
|
||||
- {id: 215, cat: TV, desc: "Брокмайр"}
|
||||
- {id: 216, cat: TV, desc: "Энджи Трайбека"}
|
||||
- {id: 217, cat: TV, desc: "Уэнтуорт "}
|
||||
- {id: 218, cat: TV, desc: "Звери."}
|
||||
- {id: 219, cat: TV, desc: "Упадок и разрушение"}
|
||||
- {id: 220, cat: TV, desc: "Просто парочка"}
|
||||
- {id: 221, cat: TV, desc: "Твин Пикс"}
|
||||
- {id: 222, cat: TV, desc: "Умираю со смеху"}
|
||||
- {id: 223, cat: TV, desc: "По волчьим законам"}
|
||||
- {id: 224, cat: TV, desc: "Карточный домик"}
|
||||
- {id: 225, cat: TV, desc: "Приключения Тедди Ракспина"}
|
||||
- {id: 226, cat: TV, desc: "Темная материя"}
|
||||
- {id: 227, cat: TV, desc: "Вайнона Эрп"}
|
||||
- {id: 228, cat: TV, desc: "Киллджойс"}
|
||||
- {id: 229, cat: TV, desc: "Кровавая гонка"}
|
||||
- {id: 230, cat: TV, desc: "Сшиватели"}
|
||||
- {id: 231, cat: TV, desc: "Ночная смена"}
|
||||
- {id: 232, cat: TV, desc: "Мгла"}
|
||||
- {id: 233, cat: TV, desc: "Зверинец"}
|
||||
- {id: 234, cat: TV, desc: "Снегопад"}
|
||||
- {id: 235, cat: TV, desc: "Спасение"}
|
||||
- {id: 236, cat: TV, desc: "По болезни"}
|
||||
- {id: 237, cat: TV, desc: "Кастлвания"}
|
||||
- {id: 238, cat: TV, desc: "Штамм"}
|
||||
- {id: 239, cat: TV, desc: "Игра престолов"}
|
||||
- {id: 240, cat: TV, desc: "Мстители"}
|
||||
- {id: 241, cat: TV, desc: "Комната 104"}
|
||||
- {id: 242, cat: TV, desc: "Миднайт, Техас"}
|
||||
- {id: 243, cat: TV, desc: "Человек-паук"}
|
||||
- {id: 244, cat: TV, desc: "Рэй Донован"}
|
||||
- {id: 245, cat: TV, desc: "Мистер Мерседес"}
|
||||
- {id: 246, cat: TV, desc: "Эпизоды"}
|
||||
- {id: 247, cat: TV, desc: "Охота на Унабомбера "}
|
||||
- {id: 248, cat: TV, desc: "Защитники"}
|
||||
- {id: 249, cat: TV, desc: "Раскосяченные"}
|
||||
- {id: 250, cat: TV, desc: "Двойка"}
|
||||
- {id: 251, cat: TV, desc: "Нарко"}
|
||||
- {id: 252, cat: TV, desc: "Ты — воплощение порока"}
|
||||
- {id: 253, cat: TV, desc: "Конь БоДжек"}
|
||||
- {id: 254, cat: TV, desc: "Орвилл"}
|
||||
- {id: 256, cat: TV, desc: "Южный парк"}
|
||||
- {id: 257, cat: TV, desc: "Звездный путь: Дискавери"}
|
||||
- {id: 258, cat: TV, desc: "Мик"}
|
||||
- {id: 259, cat: TV, desc: "Морская полиция"}
|
||||
- {id: 260, cat: TV, desc: "Смертельное оружие"}
|
||||
- {id: 261, cat: TV, desc: "Сверхлюди"}
|
||||
- {id: 262, cat: TV, desc: "Одарённые"}
|
||||
- {id: 263, cat: TV, desc: "Полиция Чикаго"}
|
||||
- {id: 264, cat: TV, desc: "Это Мы"}
|
||||
- {id: 265, cat: TV, desc: "Империя"}
|
||||
- {id: 266, cat: TV, desc: "Мыслить как преступник"}
|
||||
- {id: 267, cat: TV, desc: "Экзорцист"}
|
||||
- {id: 268, cat: TV, desc: "Люцифер"}
|
||||
- {id: 269, cat: TV, desc: "Нация Z"}
|
||||
- {id: 270, cat: TV, desc: "Сверхестественое"}
|
||||
- {id: 273, cat: TV, desc: "Доктор Шанс"}
|
||||
- {id: 271, cat: TV, desc: "Мистер Робот"}
|
||||
- {id: 272, cat: TV, desc: "Очень странные дела"}
|
||||
- {id: 274, cat: TV, desc: "Стрела"}
|
||||
- {id: 275, cat: TV, desc: "Флэш"}
|
||||
- {id: 276, cat: TV, desc: "Супердевушка"}
|
||||
- {id: 277, cat: TV, desc: "Легенды завтрашнего дня "}
|
||||
- {id: 278, cat: TV, desc: "Суеверие"}
|
||||
- {id: 279, cat: TV, desc: "Конец ёбанного мира"}
|
||||
- {id: 280, cat: TV, desc: "Спецназ"}
|
||||
- {id: 281, cat: TV, desc: "Бесстыдники "}
|
||||
- {id: 282, cat: TV, desc: "Проклятая нация"}
|
||||
- {id: 283, cat: TV, desc: "Человек будущего"}
|
||||
- {id: 284, cat: TV, desc: "Каратель"}
|
||||
- {id: 285, cat: TV, desc: "Фантастика"}
|
||||
- {id: 286, cat: TV, desc: "Ужасы/триллер"}
|
||||
- {id: 287, cat: TV, desc: "Драма"}
|
||||
- {id: 288, cat: TV, desc: "Комедия"}
|
||||
- {id: 289, cat: TV, desc: "Боевик"}
|
||||
- {id: 290, cat: TV, desc: "Детектив"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
|
||||
login:
|
||||
path: takelogin.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: div.error
|
||||
test:
|
||||
path: browse.php
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
# 0 active 1 incdead 2 onlydead 3 gold 4 seedfree
|
||||
incldead: "1"
|
||||
rows:
|
||||
selector: table.embedded > tbody > tr:has(a[href^="details.php?id="])
|
||||
fields:
|
||||
title:
|
||||
selector: a[href^="details.php?id="]
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["\\b(\\d)\\b", "0$1"]
|
||||
- name: re_replace
|
||||
args: [".+Сезон\\s+(\\d+)(?:.+Серия\\s+(\\d+))*[\\s\\S]*\\/\\s+(.+)\\s+\\(\\d+\\)\\s+(\\S*)\\s*(\\w*\\d*).*", "$3 - S$1E$2 - rus $5 $4 newstudio"]
|
||||
- name: replace
|
||||
args: ["WEBDLRip","WEBDL"]
|
||||
- name: replace
|
||||
args: ["HDTVRip","HDTV"]
|
||||
- name: replace
|
||||
args: ["E -","E01-99 -"]
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
category:
|
||||
selector: a[href^="browse.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
files:
|
||||
selector: td:nth-child(3)
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
date:
|
||||
selector: i
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "2006-01-02 15:04:05"
|
||||
seeders:
|
||||
selector: td:nth-child(6)
|
||||
filters:
|
||||
- name: split
|
||||
args: ["|", 0]
|
||||
leechers:
|
||||
selector: td:nth-child(6)
|
||||
filters:
|
||||
- name: split
|
||||
args: ["|", 1]
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="pic/diamond.png"]: "0"
|
||||
img[src="pic/freedownload.gif"]: "0"
|
||||
img[src="pic/silver.gif"]: "0.5"
|
||||
img[src="pic/bronze.gif"]: "0.75"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img[src="pic/diamond.png"]: "2"
|
||||
"*": "1"
|
@@ -14,9 +14,10 @@
|
||||
- {id: 2, cat: TV, desc: "TV"}
|
||||
- {id: 3, cat: Audio, desc: "Music"}
|
||||
- {id: 4, cat: Books, desc: "Books"}
|
||||
- {id: 5, cat: PC/Mac, desc: "Apps"}
|
||||
- {id: 5, cat: PC, desc: "Apps"}
|
||||
- {id: 6, cat: Other, desc: "Other"}
|
||||
- {id: 7, cat: PC/Games, desc: "Games"}
|
||||
- {id: 8, cat: TV/Sport, desc: "Sports"}
|
||||
|
||||
|
||||
modes:
|
||||
@@ -41,6 +42,7 @@
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
|
||||
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
|
||||
description: ""
|
||||
uploader: ""
|
||||
imdb: "{{ .Query.IMDBIDShort }}"
|
||||
tvdb: ""
|
||||
@@ -107,9 +109,11 @@
|
||||
case:
|
||||
"i[data-original-title=\"100% Free\"]": "0"
|
||||
"i[data-original-title=\"Global FreeLeech\"]": "0"
|
||||
"i[data-original-title=\"Featured\"]": "0"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"Featured\"]": "2"
|
||||
"i[data-original-title=\"Double upload\"]": "2"
|
||||
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
|
||||
"*": "1"
|
||||
|
@@ -58,13 +58,28 @@
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
extras:
|
||||
text: ""
|
||||
extras:
|
||||
optional: true
|
||||
selector: td.titulo a[class]
|
||||
filters:
|
||||
- name: prepend
|
||||
args: "["
|
||||
- name: append
|
||||
args: "]"
|
||||
title:
|
||||
selector: td.titulo a[id]
|
||||
filters:
|
||||
- name: prepend
|
||||
args: "{{ .Result.extras }} "
|
||||
- name: append
|
||||
args: " [spanish]"
|
||||
args: " [Spanish]"
|
||||
details:
|
||||
selector: td.titulo a
|
||||
selector: td.titulo a[id]
|
||||
attribute: href
|
||||
comments:
|
||||
selector: td.foro a
|
||||
attribute: href
|
||||
size:
|
||||
selector: td.tamano
|
||||
@@ -142,3 +157,10 @@
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["Freeleech X2", "2"]
|
||||
minimumratio:
|
||||
text: "1.0"
|
||||
minimumseedtime:
|
||||
text: "345600"
|
||||
description:
|
||||
optional: true
|
||||
selector: td.titulo a[class]
|
||||
|
@@ -28,10 +28,14 @@
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
remember: 1
|
||||
error:
|
||||
- selector: form[action*="/login"] .text-red
|
||||
- selector: script[nonce]:contains("Error")
|
||||
message:
|
||||
selector: script[nonce]:contains("Error")
|
||||
test:
|
||||
path: torrents
|
||||
selector: a[href$="/logout"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
@@ -39,6 +43,7 @@
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
|
||||
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
|
||||
description: ""
|
||||
uploader: ""
|
||||
imdb: "{{ .Query.IMDBIDShort }}"
|
||||
tvdb: ""
|
||||
@@ -65,13 +70,13 @@
|
||||
selector: a.view-torrent
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
selector: td:nth-last-child(4)
|
||||
seeders:
|
||||
selector: td:nth-child(7)
|
||||
selector: td:nth-last-child(3)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
selector: td:nth-last-child(2)
|
||||
grabs:
|
||||
selector: td:nth-child(6)
|
||||
selector: td:nth-last-child(1)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d\.]+)
|
||||
@@ -103,12 +108,17 @@
|
||||
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=\"Personal Freeleech\"]": "0" # 24 Hour FreeLeech From BON Store
|
||||
"i[data-original-title=\"Special Freeleech\"]": "0" # Special FreeLeech For Certain User Groups
|
||||
"i[data-original-title=\"Freeleech Token\"]": "0" # Freeleech From Token
|
||||
"i[data-original-title=\"Global FreeLeech\"]": "0" # Global Freeleech
|
||||
"i[data-original-title=\"Freeleech\"]": "0" # Freeleech
|
||||
"i[data-original-title=\"Featured\"]": "0" # Featured Torrent
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
|
||||
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
|
||||
"i[data-original-title=\"Double Upload\"]": "2" # Single Torrent Double Upload
|
||||
"i[data-original-title=\"Global Double Upload\"]": "2" # Global Double Upload
|
||||
"i[data-original-title=\"Featured\"]": "2" # Featured Torrent
|
||||
"*": "1"
|
||||
# UNIT3D
|
||||
# UNIT3D 1.9.2
|
||||
|
@@ -79,13 +79,12 @@
|
||||
incldead: 1
|
||||
search_by: "{{ if .Query.IMDBID }}imdb{{else}}name{{end}}"
|
||||
rows:
|
||||
selector: table.table-striped > tbody > tr:has(a[title][href^="details.php?id="])
|
||||
selector: table.table-striped > tbody > tr:has(a[href^="details.php?id="])
|
||||
fields:
|
||||
title:
|
||||
selector: a[title][href^="details.php?id="]
|
||||
attribute: title
|
||||
selector: a[href^="details.php?id="]
|
||||
details:
|
||||
selector: a[title][href^="details.php?id="]
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
category:
|
||||
selector: a[href^="?cat="]
|
||||
@@ -96,7 +95,7 @@
|
||||
banner:
|
||||
attribute: rel
|
||||
imdb:
|
||||
selector: a[href*="https://www.imdb.com/title/"]
|
||||
selector: a[href*="www.imdb.com/title/"]
|
||||
optional: true
|
||||
attribute: href
|
||||
download:
|
||||
|
@@ -10,8 +10,6 @@
|
||||
legacylinks:
|
||||
- http://ilcorsaroblu.org/
|
||||
- https://www.ilcorsaroblu.info/
|
||||
certificates:
|
||||
- e6dd93ef71f96d04559e2bee8cc8e6fd74957730 # incomplete CA chain
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -13,14 +13,6 @@
|
||||
- https://ilcorsaronero.info/
|
||||
- https://ilcorsaronero.ch/
|
||||
- https://ilcorsaronero.cc/
|
||||
certificates:
|
||||
- 89c12d4a080b5aeec00acbb269dc9b44584b1b3f # incomplete CA chain
|
||||
- aa7c40aa360a1cec8a9687312fd50402b912e618 # incomplete CA chain
|
||||
- 83174ec1f92fa13cdef9d51888ea1dfba2166e17 # incomplete CA chain
|
||||
- c414bf4ad6c69841693c147849f4c314aa200bdf # incomplete CA chain
|
||||
- 3a402766ce22fd1aa24bfc1a4fd47e9309eb8c98 # incomplete CA chain
|
||||
- 160f832730737a70264768ceddf3cd94bc51ffb7 # incomplete CA chain
|
||||
- a60e969b27965d4dc2ff45d50c20e2e872d4e9b9 # incomplete CA chain
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -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
|
||||
|
||||
@@ -65,10 +65,10 @@
|
||||
search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Query.Keywords }}{{end}}"
|
||||
t: "all"
|
||||
rows:
|
||||
selector: table.torrentable > tbody > tr:has(td.maintd)
|
||||
selector: table.torrenttable > tbody > tr:has(td.torrentmain)
|
||||
fields:
|
||||
title:
|
||||
selector: div.tortitle > a
|
||||
selector: td.torrentmain > a.torrentname
|
||||
attribute: title
|
||||
category:
|
||||
selector: a[href^="browse.php?cat="]
|
||||
@@ -77,10 +77,10 @@
|
||||
- name: querystring
|
||||
args: cat
|
||||
details:
|
||||
selector: div.tortitle > a
|
||||
selector: td.torrentmain > a.torrentname
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php/"]
|
||||
selector: a[href*="/download.php/"]
|
||||
attribute: href
|
||||
imdb:
|
||||
optional: true
|
||||
@@ -95,51 +95,49 @@
|
||||
selector: a.cover
|
||||
attribute: href
|
||||
files:
|
||||
selector: td:nth-child(6)
|
||||
selector: div.files > a.button.small
|
||||
filters:
|
||||
- name: replace
|
||||
args: [".", ""]
|
||||
size:
|
||||
selector: td:nth-child(8)
|
||||
selector: td.center.size
|
||||
filters:
|
||||
- name: replace
|
||||
args: [".", ""]
|
||||
- name: replace
|
||||
args: [",", "."]
|
||||
grabs:
|
||||
selector: td:nth-child(9) > div:first-child
|
||||
filters:
|
||||
- name: replace
|
||||
args: [".", ""]
|
||||
- name: regexp
|
||||
args: "^([\\d]+)"
|
||||
seeders:
|
||||
selector: td:nth-child(9) > div:first-child
|
||||
selector: td.center.data > a:first-child
|
||||
filters:
|
||||
- name: replace
|
||||
args: [".", ""]
|
||||
- name: regexp
|
||||
args: "\\|\\s*([\\d]+)\\s*\\|"
|
||||
leechers:
|
||||
selector: td:nth-child(9) > div:first-child
|
||||
selector: td.center.data > a:nth-child(2)
|
||||
filters:
|
||||
- name: replace
|
||||
args: [".", ""]
|
||||
- name: regexp
|
||||
args: "([\\d]+)$"
|
||||
date:
|
||||
selector: td.date
|
||||
grabs:
|
||||
selector: td.center.data
|
||||
filters:
|
||||
- name: replace
|
||||
args: [".", ""]
|
||||
remove: div.uploader, div.moderation, a.leftborder
|
||||
|
||||
date:
|
||||
selector: td.center.date
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(\\-)(\\d{2})(\\d{2})(\\:)", "-$2 $3:"]
|
||||
- name: dateparse
|
||||
args: "2006.01.02 15:04:05"
|
||||
args: "2006-01-02 15:04"
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img[src^="pic/4x.gif"]: "4"
|
||||
img[src^="pic/3x.gif"]: "3"
|
||||
img[src^="pic/2x.gif"]: "2"
|
||||
"*": "1"
|
||||
a[href^="?doubleup=four"]: "4"
|
||||
a[href^="?doubleup=three"]: "3"
|
||||
a[href^="?doubleup=two"]: "2"
|
||||
"*" : "1"
|
||||
description:
|
||||
selector: td.maintd
|
||||
remove: div.tortitle, div.markcont, div.tablebuttons, div.tablebigbuttons
|
||||
selector: div.contenttext
|
||||
remove: div.contenttitle
|
||||
|
80
src/Jackett.Common/Definitions/itorrent.yml
Normal file
80
src/Jackett.Common/Definitions/itorrent.yml
Normal file
@@ -0,0 +1,80 @@
|
||||
---
|
||||
site: itorrent
|
||||
name: iTorrent
|
||||
description: "iTorrent is a Public HUNGARIAN site"
|
||||
language: hu
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://itorrent.ws/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
"Apps": PC
|
||||
"book": Books
|
||||
"Games": PC/Games
|
||||
"Movies": Movies
|
||||
"Music": Audio
|
||||
"XXX": XXX
|
||||
"TV": TV
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings: []
|
||||
|
||||
download:
|
||||
selector: a[href^="/torrentfiles/"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: "torrentek/title/{{ .Keywords}}/"
|
||||
rows:
|
||||
selector: tr.gradeX
|
||||
filters:
|
||||
- name: andmatch
|
||||
fields:
|
||||
category:
|
||||
selector: td:nth-child(1) i
|
||||
attribute: class
|
||||
filters:
|
||||
# patch. books are "fa fa-book" while all the other categories are "ico-list-*"
|
||||
- name: replace
|
||||
args: [" ", "-"]
|
||||
- name: split
|
||||
args: ["-", 2]
|
||||
title:
|
||||
selector: td:nth-child(2) a
|
||||
details:
|
||||
selector: td:nth-child(2) a
|
||||
attribute: href
|
||||
download:
|
||||
selector: td:nth-child(2) a
|
||||
attribute: href
|
||||
date:
|
||||
selector: td:nth-child(4) span
|
||||
optional: true
|
||||
attribute: title
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "2006.01.02 15:04"
|
||||
date:
|
||||
selector: td:nth-child(4):not(span)
|
||||
optional: true
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "2006.01.02"
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
grabs:
|
||||
selector: td:nth-child(6)
|
||||
seeders:
|
||||
selector: td:nth-child(7)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
@@ -7,11 +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:
|
||||
|
@@ -173,6 +173,8 @@
|
||||
args: ["Кураж-Бамбей", "kurazh"]
|
||||
- name: replace
|
||||
args: ["Кубик в Кубе", "Kubik"]
|
||||
- name: replace
|
||||
args: ["Кравец", "Kravec"]
|
||||
- name: re_replace
|
||||
args: ["\\((\\d+)\\s+[Сс]езон:\\s+(?:(\\d+-*\\d*)\\s+[Сс]ери[ия]\\s+.*\\d+)\\)(.*)\\s([12][0-9]{3})\\s(.*)", "$3 - S$1E$2 - rus $5"]
|
||||
- name: re_replace
|
||||
|
@@ -41,7 +41,7 @@
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: "{{if .Keywords}}search/all/{{ .Keywords}}/{{else}}/index.php?page=latest100{{end}}"
|
||||
- path: "{{if .Keywords}}search/all/{{ .Keywords}}/date/1/{{else}}/index.php?page=latest100{{end}}"
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["S[0-9]{2}([^E]|$)", ""] #remove season tag without episode
|
||||
|
@@ -29,11 +29,11 @@
|
||||
title:
|
||||
selector: div.blog-content h3 a
|
||||
category:
|
||||
selector: a[href*="/category/"]
|
||||
selector: a[href*="/mac-os-"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: split
|
||||
args: ["/", 4]
|
||||
args: ["/", 3]
|
||||
details:
|
||||
selector: div.blog-content h3 a
|
||||
attribute: href
|
||||
@@ -44,7 +44,7 @@
|
||||
selector: div.blog-media p a img
|
||||
attribute: data-src
|
||||
date:
|
||||
selector: div.blog-content div.entry-meta time
|
||||
selector: time
|
||||
attribute: datetime
|
||||
filters:
|
||||
- name: replace
|
||||
|
@@ -39,33 +39,34 @@
|
||||
paths:
|
||||
# return movie results if there are no search parms supplied (for use with the TEST button)
|
||||
# http://www.magnetdl.com/m/midnight-texas-s01e10/
|
||||
# using "invalid-cat" in the default case (empty keywords) causes no category limitation
|
||||
- path: "{{if .Keywords}}{{ re_replace .Keywords \"(.).*\" \"$1\" }}/{{ .Keywords }}/{{else}}download/invalid-cat/{{end}}"
|
||||
- path: "{{if .Keywords}}{{ re_replace .Keywords \"(.).*\" \"$1\" }}/{{ .Keywords }}/{{else}}download/movies/{{end}}"
|
||||
rows:
|
||||
selector: tr:has(td[class="m"])
|
||||
selector: tr:has(td.m)
|
||||
fields:
|
||||
title:
|
||||
selector: td[class="n"] a
|
||||
selector: td.n a
|
||||
attribute: title
|
||||
category:
|
||||
optional: true
|
||||
selector: td[class^="t"]
|
||||
details:
|
||||
selector: td[class="n"] a
|
||||
selector: td.n a
|
||||
attribute: href
|
||||
magnet:
|
||||
selector: td[class="m"] a
|
||||
selector: td.m a
|
||||
attribute: href
|
||||
date:
|
||||
selector: td:nth-child(3)
|
||||
filters:
|
||||
- name: timeago
|
||||
files:
|
||||
selector: td:nth-child(5)
|
||||
size:
|
||||
selector: td:nth-child(6)
|
||||
seeders:
|
||||
selector: td[class="s"]
|
||||
files:
|
||||
selector: td[class="l"]
|
||||
selector: td.s
|
||||
leechers:
|
||||
selector: td.l
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
|
@@ -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/
|
||||
|
79
src/Jackett.Common/Definitions/mkvcage.yml
Normal file
79
src/Jackett.Common/Definitions/mkvcage.yml
Normal file
@@ -0,0 +1,79 @@
|
||||
---
|
||||
site: mkvcage
|
||||
name: MkvCage
|
||||
description: "MkvCage is a Public torrent site for MOVIES / TV"
|
||||
language: en-us
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.mkvcage.com/
|
||||
|
||||
legacylinks:
|
||||
- https://www.mkvcage.ws/
|
||||
- https://mkvcage.com/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
1: Movies
|
||||
2: TV
|
||||
3: Other
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings: []
|
||||
|
||||
download:
|
||||
selector: a[href^="magnet:?"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
# 6 hits per page!?!?!
|
||||
- path: "{{if .Keywords}}?s={{ .Keywords}}{{else}}{{end}}"
|
||||
- path: "page/2/{{if .Keywords}}?s={{ .Keywords}}{{else}}{{end}}"
|
||||
- path: "page/3/{{if .Keywords}}?s={{ .Keywords}}{{else}}{{end}}"
|
||||
- path: "page/4/{{if .Keywords}}?s={{ .Keywords}}{{else}}{{end}}"
|
||||
- path: "page/5/{{if .Keywords}}?s={{ .Keywords}}{{else}}{{end}}"
|
||||
rows:
|
||||
selector: article
|
||||
filters:
|
||||
- name: andmatch
|
||||
fields:
|
||||
title:
|
||||
selector: h2 a
|
||||
category:
|
||||
selector: span.cat-links
|
||||
attribute: class
|
||||
case:
|
||||
a[href*="/category/movies/"]: "1"
|
||||
a[href*="/category/tv-shows/"]: "2"
|
||||
"*": "3"
|
||||
details:
|
||||
selector: h2 a
|
||||
attribute: href
|
||||
download:
|
||||
selector: h2 a
|
||||
attribute: href
|
||||
description:
|
||||
selector: pre
|
||||
banner:
|
||||
selector: div img
|
||||
attribute: src
|
||||
date:
|
||||
selector: span.posted-on a time
|
||||
attribute: datetime
|
||||
size:
|
||||
selector: h2 a
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(.*?)(\\d+)\\.?\\d?([T|G|M|K]B)$", "$2 $3"]
|
||||
seeders:
|
||||
text: 1
|
||||
leechers:
|
||||
text: 1
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
69
src/Jackett.Common/Definitions/movcr.yml
Normal file
69
src/Jackett.Common/Definitions/movcr.yml
Normal file
@@ -0,0 +1,69 @@
|
||||
---
|
||||
site: movcr
|
||||
name: MovCr
|
||||
description: "MovCr is an Indian Public torrent site"
|
||||
language: en-us
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://movcr.tv/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
"other": Other
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings: []
|
||||
|
||||
download:
|
||||
selector: a[href^="/torrents/"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: "{{if .Keywords}}search/search.php?q={{ .Keywords}}{{else}}/{{end}}"
|
||||
rows:
|
||||
selector: tr:has(td.name a[href^="/download-"])
|
||||
filters:
|
||||
- name: andmatch
|
||||
fields:
|
||||
category:
|
||||
text: other
|
||||
title:
|
||||
selector: td.name a:nth-child(2)
|
||||
details:
|
||||
selector: td.name a
|
||||
attribute: href
|
||||
download:
|
||||
selector: td.name a
|
||||
attribute: href
|
||||
date:
|
||||
selector: td.seeds:contains("-")
|
||||
optional: true
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "2006-01-02"
|
||||
date:
|
||||
selector: td.seeds:not(:contains("-"))
|
||||
optional: true
|
||||
filters:
|
||||
- name: timeago
|
||||
size:
|
||||
selector: td.leeches
|
||||
seeders:
|
||||
selector: td:nth-child(2)
|
||||
filters:
|
||||
- name: split
|
||||
args: ["/", 0]
|
||||
leechers:
|
||||
selector: td:nth-child(2)
|
||||
filters:
|
||||
- name: split
|
||||
args: ["/", 1]
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
121
src/Jackett.Common/Definitions/nbtorrents.yml
Normal file
121
src/Jackett.Common/Definitions/nbtorrents.yml
Normal file
@@ -0,0 +1,121 @@
|
||||
---
|
||||
site: nbtorrents
|
||||
name: NBTorrents
|
||||
description: "NBTorrents is an INDIAN Private site for MOVIES / TV / MUSIC"
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.nbtorrents.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 22, cat: TV/Anime, desc: "Anime"}
|
||||
- {id: 26, cat: TV/Documentary, desc: "Documentaries"}
|
||||
- {id: 1, cat: Movies/UHD, desc: "Movies UHD & BluRay"}
|
||||
- {id: 3, cat: Movies/BluRay, desc: "Movies BDRips"}
|
||||
- {id: 6, cat: Movies/DVD, desc: "Movies DVD"}
|
||||
- {id: 7, cat: Movies/DVD, desc: "Movies DVDRip"}
|
||||
- {id: 8, cat: Movies, desc: "Movies Pre"}
|
||||
- {id: 2, cat: Movies, desc: "Movies Remux"}
|
||||
- {id: 4, cat: Movies/WEBDL, desc: "Movies Web"}
|
||||
- {id: 5, cat: Movies/WEBDL, desc: "Movies WebRip"}
|
||||
- {id: 15, cat: Audio/Lossless, desc: "Music FLAC"}
|
||||
- {id: 17, cat: Audio/MP3, desc: "Music MP3"}
|
||||
- {id: 18, cat: Audio, desc: "Music Pack"}
|
||||
- {id: 20, cat: Audio, desc: "Music Podcast"}
|
||||
- {id: 19, cat: Audio/Video, desc: "Music Video"}
|
||||
- {id: 16, cat: Audio, desc: "Music Web"}
|
||||
- {id: 25, cat: TV/Sport, desc: "Sports"}
|
||||
- {id: 10, cat: TV/UHD, desc: "TV UHD & BluRay"}
|
||||
- {id: 11, cat: TV, desc: "TV BDRips"}
|
||||
- {id: 14, cat: TV, desc: "TV packs"}
|
||||
- {id: 12, cat: TV/WEB-DL, desc: "TV Web"}
|
||||
- {id: 13, cat: TV/WEB-DL, desc: "TV WebRips"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
login:
|
||||
path: login.php
|
||||
method: form
|
||||
form: form[action="takelogin.php"]
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
submitme: "X"
|
||||
error:
|
||||
- selector: td.colhead:contains("failed")
|
||||
message:
|
||||
selector: table tr td.text
|
||||
test:
|
||||
path: browse.php
|
||||
selector: a[href*="logout.php?hash_insert="]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
searchin: "title"
|
||||
incldead: 1
|
||||
"only_free": 0
|
||||
|
||||
rows:
|
||||
selector: table.mainouter tr table tr:has(a[href^="download.php?torrent="])
|
||||
filters:
|
||||
- name: andmatch
|
||||
fields:
|
||||
category:
|
||||
selector: td a[href^="browse.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title:
|
||||
selector: td a[href^="details.php?id="]
|
||||
details:
|
||||
selector: td a[href^="details.php?id="]
|
||||
attribute: href
|
||||
banner:
|
||||
selector: td a[href^="details.php?id="]
|
||||
optional: true
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "src=\\\\\'(.*?)\\\\\' "
|
||||
download:
|
||||
selector: td a[href^="download.php?torrent="]
|
||||
attribute: href
|
||||
imdb:
|
||||
selector: td a[href*="www.imdb.com/title/tt"]
|
||||
optional: true
|
||||
attribute: href
|
||||
files:
|
||||
selector: td:nth-of-type(5)
|
||||
date:
|
||||
selector: td:nth-of-type(7)
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "Jan 2 2006 03:04 PM"
|
||||
size:
|
||||
selector: td:nth-of-type(8)
|
||||
grabs:
|
||||
selector: td:nth-of-type(9)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "([\\d]+)"
|
||||
seeders:
|
||||
selector: td:nth-of-type(10)
|
||||
leechers:
|
||||
selector: td:nth-of-type(11)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"img[title=\"Free Torrent\"]": "0" # torrent specific free leech (icon)?
|
||||
"a.info:contains(\"Free\")": "0" # global freeleech note?
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
@@ -39,9 +39,8 @@
|
||||
search:
|
||||
paths:
|
||||
- path: torrents.php
|
||||
method: post
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
$raw: "{{range .Categories}}cat={{.}}&{{end}}"
|
||||
search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
|
||||
search_area: "{{ if .Query.IMDBID }}4{{else}}0{{end}}"
|
||||
search_mode: 0
|
||||
@@ -54,7 +53,7 @@
|
||||
- name: andmatch
|
||||
fields:
|
||||
title:
|
||||
selector: td.name > div > a.poster-preview[title]
|
||||
selector: td.name > div > a[href*="-torrent-"][title]
|
||||
attribute: title
|
||||
category:
|
||||
selector: td.category > a
|
||||
@@ -63,35 +62,39 @@
|
||||
- name: querystring
|
||||
args: cat
|
||||
details:
|
||||
selector: td.name > div > a.poster-preview[title]
|
||||
selector: td.name > div > a[href*="-torrent-"][title]
|
||||
attribute: href
|
||||
banner:
|
||||
selector: td.name > a.poster-preview img
|
||||
attribute: src
|
||||
comments:
|
||||
selector: a[href*="#comments"]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a.bookmark[onclick]
|
||||
attribute: onclick
|
||||
selector: td.name > div > a[href*="-torrent-"][title]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: replace
|
||||
args: [",false)", ""]
|
||||
- name: replace
|
||||
args: ["return bookmark(", "download.php?id="]
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
seeders:
|
||||
selector: td:nth-child(6)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
- name: regexp
|
||||
args: "-torrent-(\\d+).html"
|
||||
- name: prepend
|
||||
args: "download.php?id="
|
||||
date:
|
||||
selector: td:nth-child(4)
|
||||
selector: td:nth-child(5)
|
||||
filters:
|
||||
- name: timeago
|
||||
size:
|
||||
selector: td:nth-child(6)
|
||||
seeders:
|
||||
selector: td:nth-child(7)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
grabs:
|
||||
selector: td:nth-child(9)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"span.label:contains(\"Free\")": "0"
|
||||
"span.label:contains(\"50%\")": "0.5"
|
||||
"span.label:contains(\"30%\")": "0.7"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
|
@@ -6,12 +6,10 @@
|
||||
type: semi-private
|
||||
encoding: windows-1251
|
||||
links:
|
||||
- https://nnm-club.me/
|
||||
- http://nnmclub.to/
|
||||
legacylinks:
|
||||
- https://nnm-club.name/
|
||||
certificates:
|
||||
- 7877113458e90f3643dd28424657a29469f5dc55
|
||||
- 0edfdcc8cf9f69dbe5473878145cae92504275b0
|
||||
- https://nnm-club.me/
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
|
@@ -7,8 +7,6 @@
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://nyaa.si/
|
||||
certificates:
|
||||
- 3801e330482d4f9baef71ca4e33ba23ede74f59c # incomplete CA chain
|
||||
|
||||
settings:
|
||||
- name: filter-id
|
||||
|
86
src/Jackett.Common/Definitions/oxtorrent.yml
Normal file
86
src/Jackett.Common/Definitions/oxtorrent.yml
Normal file
@@ -0,0 +1,86 @@
|
||||
---
|
||||
site: oxtorrent
|
||||
name: OxTorrent
|
||||
description: "OxTorrent is a French Public site for TV / MOVIES / GENERAL"
|
||||
language: fr-fr
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://wwv.oxtorrent.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: movies, cat: Movies, desc: "Movies"}
|
||||
- {id: tvshows, cat: TV, desc: "TV Shows"}
|
||||
- {id: softwares, cat: PC, desc: "Softwares"}
|
||||
- {id: music, cat: Audio, desc: "Music"}
|
||||
- {id: console-games, cat: Console, desc: "Console Games"}
|
||||
- {id: pc-games, cat: PC/Games, desc: "PC Games"}
|
||||
- {id: books, cat: Books, desc: "Books"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings: []
|
||||
|
||||
download:
|
||||
selector: a[href^="/download/"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: "{{if .Keywords}}recherche/{{.Keywords}}{{else}}{{end}}"
|
||||
rows:
|
||||
selector: div.listing-torrent > table > tbody > tr:has(a)
|
||||
fields:
|
||||
site_date:
|
||||
selector: td:nth-child(1) a
|
||||
filters:
|
||||
# date is at the end of the title, so we get it and name it site_date
|
||||
- name: regexp
|
||||
args: "(\\w+)$"
|
||||
title:
|
||||
selector: td:nth-child(1) a
|
||||
filters:
|
||||
# now we put the date at the right place according scene naming rules using .Result.site_date
|
||||
- name: replace
|
||||
args: [" FRENCH", " {{ .Result.site_date }} FRENCH"]
|
||||
- name: replace
|
||||
args: ["MULTI", "{{ .Result.site_date }} MULTI"]
|
||||
- name: replace
|
||||
args: ["TRUEFRENCH", "{{ .Result.site_date }} TRUEFRENCH"]
|
||||
- name: replace
|
||||
args: ["VOSTFR", "{{ .Result.site_date }} VOSTFR"]
|
||||
# and we delete it at the end
|
||||
- name: re_replace
|
||||
args: ["(\\w+)$", ""]
|
||||
details:
|
||||
selector: td:nth-child(1) a
|
||||
attribute: href
|
||||
download:
|
||||
selector: td:nth-child(1) a
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(2)
|
||||
seeders:
|
||||
selector: td:nth-child(3)
|
||||
leechers:
|
||||
selector: td:nth-child(4)
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
||||
category:
|
||||
selector: td:nth-child(1) > i
|
||||
case:
|
||||
.Films: "movies"
|
||||
.Séries: "tvshows"
|
||||
.Logiciels: "softwares"
|
||||
.Musique: "music"
|
||||
.Jeux-Consoles: "console-games"
|
||||
.Jeux-PC: "pc-games"
|
||||
.Ebook: "books"
|
||||
date:
|
||||
text: "now"
|
@@ -92,12 +92,12 @@
|
||||
selector: table[width="100%"] > tbody tr:has(a[href^="download.php?id="])
|
||||
fields:
|
||||
title:
|
||||
selector: td:nth-child(2) a
|
||||
selector: a[href^="javascript:popdetails"]
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["[FREE] ", ""]
|
||||
details:
|
||||
selector: td:nth-child(2) a
|
||||
selector: a[href^="javascript:popdetails"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: replace
|
||||
@@ -105,29 +105,28 @@
|
||||
- name: replace
|
||||
args: [");'", ""]
|
||||
category:
|
||||
selector: td:nth-child(1) a
|
||||
selector: a[href^="torrents.php?category="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: category
|
||||
download:
|
||||
optional: true
|
||||
selector: td:nth-child(4) a
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
date:
|
||||
# 19/01/2019
|
||||
selector: td:nth-child(5)
|
||||
selector: td:nth-last-child(9)
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "02/01/2006"
|
||||
size:
|
||||
selector: td:nth-child(6)
|
||||
selector: td:nth-last-child(8)
|
||||
seeders:
|
||||
selector: td:nth-child(8)
|
||||
selector: td:nth-last-child(6)
|
||||
leechers:
|
||||
selector: td:nth-child(9) a
|
||||
selector: td:nth-last-child(5)
|
||||
grabs:
|
||||
selector: td:nth-child(10)
|
||||
selector: td:nth-last-child(4)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"img[src=\"images/fdownload.gif\"]": "0"
|
||||
|
@@ -6,6 +6,8 @@
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://proaudiotorrents.org/
|
||||
legacylinks:
|
||||
- http://proaudiotorrents.org/
|
||||
|
||||
caps:
|
||||
@@ -36,21 +38,18 @@
|
||||
modes:
|
||||
search: [q]
|
||||
|
||||
settings:
|
||||
- name: cookie
|
||||
type: text
|
||||
label: Cookie
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<p>This site requires you to solve a ReCaptcha. It's no longer possible to solve the captcha in Jackett. Please enter the cookie for the site manually.</p><ol><li>Login to this tracker in your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Select the <b>Headers</b> tab<li>Find 'cookie:' in the <b>Request Headers</b> section<li>Copy & paste the whole cookie string to here</ol>"
|
||||
|
||||
login:
|
||||
method: cookie
|
||||
path: login.php
|
||||
method: form
|
||||
form: form[action="takelogin.php"]
|
||||
submitpath: takelogin.php
|
||||
inputs:
|
||||
cookie: "{{.Config.cookie}}"
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: table tr td.text
|
||||
test:
|
||||
path: index.php
|
||||
path: my.php
|
||||
|
||||
search:
|
||||
paths:
|
||||
|
@@ -41,6 +41,7 @@
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, imdbid]
|
||||
|
||||
login:
|
||||
path: login
|
||||
@@ -50,7 +51,9 @@
|
||||
password: "{{ .Config.password }}"
|
||||
remember: 1
|
||||
error:
|
||||
- selector: div.has-error
|
||||
- selector: script[nonce]:contains("Error")
|
||||
message:
|
||||
selector: script[nonce]:contains("Error")
|
||||
test:
|
||||
path: torrents
|
||||
selector: a[href$="/logout"]
|
||||
@@ -67,10 +70,10 @@
|
||||
- path: filterTorrents
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
|
||||
description: ""
|
||||
uploader: ""
|
||||
imdb: ""
|
||||
imdb: "{{ .Query.IMDBIDShort }}"
|
||||
tvdb: ""
|
||||
tmdb: ""
|
||||
sort: created_at
|
||||
@@ -93,14 +96,21 @@
|
||||
details:
|
||||
selector: a.view-torrent
|
||||
attribute: href
|
||||
banner:
|
||||
optional: true
|
||||
selector: div.torrent-poster img
|
||||
attribute: src
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/600x900", ""]
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
selector: td:nth-last-child(4)
|
||||
seeders:
|
||||
selector: td:nth-child(6)
|
||||
selector: td:nth-last-child(3)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
||||
selector: td:nth-last-child(2)
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
selector: td:nth-last-child(1)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d\.]+)
|
||||
|
@@ -38,7 +38,7 @@
|
||||
inputs:
|
||||
search: "{{if .Query.Artist}}{{ .Query.Artist }}{{else}}{{ .Keywords }}{{end}}"
|
||||
rows:
|
||||
selector: body:nth-child(2) tbody tr td:nth-child(2) table.lista tbody tr:nth-child(2) table.lista tbody tr:has(a[href^="download.php?id="])
|
||||
selector: table.lista[width="100%"] tbody tr:has(a[href^="download.php?id="])
|
||||
fields:
|
||||
title:
|
||||
selector: td a[href^="details.php?id="]
|
||||
|
@@ -1,19 +1,18 @@
|
||||
---
|
||||
site: sharingue
|
||||
name: Sharingue
|
||||
description: "Sharingue is a BRAZILIAN Private Tracker for TV / MOVIES / ANIME / MUSIC"
|
||||
language: pt-br
|
||||
site: rockethd
|
||||
name: RocketHD
|
||||
description: "RocketHD is a GERMAN Private Tracker for MOVIES / TV"
|
||||
language: de-de
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.sharingue.live/
|
||||
- https://rocket-hd.me/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Movies (Filmes)"}
|
||||
- {id: 3, cat: Audio, desc: "Music (Músicas)"}
|
||||
- {id: 4, cat: TV, desc: "TV (Séries)"}
|
||||
- {id: 5, cat: TV/Anime, desc: "Anime (Animes)"}
|
||||
- {id: 1, cat: Movies, desc: "Movies"}
|
||||
- {id: 2, cat: TV, desc: "TV"}
|
||||
- {id: 3, cat: Movies, desc: "Collection"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
@@ -27,19 +26,17 @@
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
remember: 1
|
||||
selectorinputs:
|
||||
_token:
|
||||
selector: meta[name="csrf-token"]
|
||||
attribute: content
|
||||
error:
|
||||
- selector: form[action$="/login"] .text-red
|
||||
- selector: script[nonce]:contains("Error")
|
||||
message:
|
||||
selector: script[nonce]:contains("Error")
|
||||
test:
|
||||
path: /
|
||||
path: torrents
|
||||
selector: a[href$="/logout"]
|
||||
|
||||
ratio:
|
||||
path: /
|
||||
selector: span:has(i.fa-sync-alt)
|
||||
path: torrents
|
||||
selector: li:has(i.fa-sync-alt)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "Ratio : (\\d+)"
|
||||
@@ -50,13 +47,14 @@
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
|
||||
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
|
||||
description: ""
|
||||
uploader: ""
|
||||
imdb: "{{ .Query.IMDBIDShort }}"
|
||||
tvdb: ""
|
||||
tmdb: ""
|
||||
mal: ""
|
||||
sort: created_at
|
||||
direction: desc
|
||||
sort: "created_at"
|
||||
direction: "desc"
|
||||
qty: 100
|
||||
rows:
|
||||
selector: table > tbody > tr
|
||||
@@ -75,17 +73,28 @@
|
||||
details:
|
||||
selector: a.view-torrent
|
||||
attribute: href
|
||||
banner:
|
||||
optional: true
|
||||
selector: div.torrent-poster img
|
||||
attribute: src
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/600x900", ""]
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
selector: td:nth-last-child(4)
|
||||
seeders:
|
||||
selector: td:nth-child(7)
|
||||
selector: td:nth-last-child(3)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
selector: td:nth-last-child(2)
|
||||
grabs:
|
||||
selector: td:nth-child(6)
|
||||
selector: td:nth-last-child(1)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d\.]+)
|
||||
imdb:
|
||||
optional: true
|
||||
selector: a[href*="www.imdb.com/title/tt"]
|
||||
attribute: href
|
||||
date:
|
||||
selector: time
|
||||
filters:
|
||||
@@ -114,12 +123,17 @@
|
||||
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
|
||||
"i[data-original-title=\"Personal Freeleech\"]": "0" # 24 Hour FreeLeech From BON Store
|
||||
"i[data-original-title=\"Special Freeleech\"]": "0" # Special FreeLeech For Certain User Groups
|
||||
"i[data-original-title=\"Freeleech Token\"]": "0" # Freeleech From Token
|
||||
"i[data-original-title=\"Global FreeLeech\"]": "0" # Global Freeleech
|
||||
"i[data-original-title=\"Freeleech\"]": "0" # Freeleech
|
||||
"i[data-original-title=\"Featured\"]": "0" # Featured Torrent
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
|
||||
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
|
||||
"i[data-original-title=\"Double Upload\"]": "2" # Single Torrent Double Upload
|
||||
"i[data-original-title=\"Global Double Upload\"]": "2" # Global Double Upload
|
||||
"i[data-original-title=\"Featured\"]": "2" # Featured Torrent
|
||||
"*": "1"
|
||||
# UNIT3D
|
||||
# UNIT3D 1.9.3
|
103
src/Jackett.Common/Definitions/rptorrents.yml
Normal file
103
src/Jackett.Common/Definitions/rptorrents.yml
Normal file
@@ -0,0 +1,103 @@
|
||||
---
|
||||
site: rptorrents
|
||||
name: RPTorrents
|
||||
description: "RPTorrents is a Private tracker for MOVIES / TV / GENERAL"
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://rptorrents.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: PC/Games, desc: "Games PC"}
|
||||
- {id: 2, cat: PC/0day, desc: "Apps Windows"}
|
||||
- {id: 3, cat: PC/Mac, desc: "Apps Mac"}
|
||||
- {id: 4, cat: PC, desc: "Apps Linux"}
|
||||
- {id: 34, cat: PC/Phone-Other, desc: "Apps Mobile"}
|
||||
- {id: 6, cat: TV/Anime, desc: "Movie Cartoons"}
|
||||
- {id: 7, cat: Movies/WEBDL, desc: "Movies WEB-DL"}
|
||||
- {id: 32, cat: Movies/UHD, desc: "Movies 4k"}
|
||||
- {id: 9, cat: Movies/HD, desc: "Movies HD"}
|
||||
- {id: 10, cat: Movies/3D, desc: "Movies 3D"}
|
||||
- {id: 11, cat: Movies, desc: "Movies Pack"}
|
||||
- {id: 12, cat: Movies/BluRay, desc: "Movies Bluray"}
|
||||
- {id: 33, cat: Movies/BluRay, desc: "Movies Bluray - Rips"}
|
||||
- {id: 14, cat: TV/HD, desc: "TV HD"}
|
||||
- {id: 15, cat: TV/WEB-DL, desc: "TV WEB-DL"}
|
||||
- {id: 16, cat: TV/SD, desc: "TV SD"}
|
||||
- {id: 17, cat: TV, desc: "TV Pack"}
|
||||
- {id: 18, cat: TV/Documentary, desc: "TV Documentary"}
|
||||
- {id: 19, cat: Audio/MP3, desc: "Music MP3"}
|
||||
- {id: 20, cat: Audio/Lossless, desc: "Music Flac"}
|
||||
- {id: 23, cat: Audio, desc: "Music Pack"}
|
||||
- {id: 22, cat: Audio/Video, desc: "Music Video"}
|
||||
- {id: 35, cat: PC/Games, desc: "Games Pack"}
|
||||
- {id: 29, cat: XXX, desc: "Movie XXX"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
|
||||
login:
|
||||
path: account-login.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
remember: "yes"
|
||||
error:
|
||||
- selector: div.myFrame-caption:contains("Access Denied")
|
||||
message:
|
||||
selector: div.myFrame-content
|
||||
test:
|
||||
path: torrents-search.php
|
||||
selector: a[href="account-logout.php"]
|
||||
search:
|
||||
paths:
|
||||
- path: torrents-search.php
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
# 0 name & desc 1 name 2 desc 3 genre
|
||||
incldesc: 1
|
||||
rows:
|
||||
selector: tr.t-row
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="torrents.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: title
|
||||
details:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(4)
|
||||
date:
|
||||
selector: td:nth-child(5)
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "02.01.200615:04:05"
|
||||
grabs:
|
||||
selector: td:nth-child(7)
|
||||
seeders:
|
||||
selector: td:nth-child(8)
|
||||
leechers:
|
||||
selector: td:nth-child(9)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="images/free.gif"]: "0"
|
||||
img[src="images/t_extern.png"]: "0"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img[src="images/t_extern.png"]: "0"
|
||||
"*": "1"
|
@@ -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"
|
||||
|
@@ -62,7 +62,7 @@
|
||||
selector: div.table-responsive-line
|
||||
fields:
|
||||
category:
|
||||
selector: i.torrent-icon
|
||||
selector: img.torrent-icon
|
||||
attribute: data-original-title
|
||||
title:
|
||||
selector: a.view-torrent
|
||||
|
171
src/Jackett.Common/Definitions/siambit.yml
Normal file
171
src/Jackett.Common/Definitions/siambit.yml
Normal file
@@ -0,0 +1,171 @@
|
||||
---
|
||||
site: siambit
|
||||
name: SiamBIT
|
||||
description: "SiamBIT is a THAI Private Torrent Tracker for GENERAL"
|
||||
language: th-th
|
||||
type: private
|
||||
encoding: tis-620
|
||||
links:
|
||||
- https://www.siambit.me/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Other, desc: "@ King"}
|
||||
- {id: 75, cat: PC/0day, desc: "OS Windows / Office"}
|
||||
- {id: 10, cat: TV, desc: "Cartoons / Animation"}
|
||||
- {id: 9, cat: TV/Sport, desc: "Sports / Football"}
|
||||
- {id: 110, cat: PC/Games, desc: "Mobile games"}
|
||||
- {id: 7, cat: PC/Games, desc: "Games"}
|
||||
- {id: 40, cat: Audio/Video, desc: "clips"}
|
||||
- {id: 16, cat: Audio/Video, desc: "Concert"}
|
||||
- {id: 3, cat: Audio/Other, desc: "Karaoke / MV"}
|
||||
- {id: 70, cat: PC, desc: "software AntiVirus / Antispyware"}
|
||||
- {id: 100, cat: PC/Phone-Other, desc: "software Mobile / Theme / Ringtone / mv"}
|
||||
- {id: 85, cat: PC/Mac, desc: "Mac software"}
|
||||
- {id: 105, cat: PC, desc: "Linux software"}
|
||||
- {id: 8, cat: PC, desc: "software"}
|
||||
- {id: 56, cat: Other, desc: "Dictionary / map"}
|
||||
- {id: 19, cat: TV, desc: "Talk show / comedy / radio"}
|
||||
- {id: 20, cat: TV, desc: "general"}
|
||||
- {id: 55, cat: PC/Phone-IOS, desc: "Tablet / iPhone"}
|
||||
- {id: 21, cat: TV, desc: "Dharma"}
|
||||
- {id: 2, cat: Audio/MP3, desc: "Music"}
|
||||
- {id: 130, cat: Audio/Audiobook, desc: "High quality music (Lossless)"}
|
||||
- {id: 60, cat: Other, desc: "fonts / icons / clip art / templates"}
|
||||
- {id: 90, cat: Movies/UHD, desc: "4K UHD movies"}
|
||||
- {id: 91, cat: Movies/DVD, desc: "DVD movies"}
|
||||
- {id: 92, cat: Movies/HD, desc: "Hi-Def movies"}
|
||||
- {id: 89, cat: Movies/SD, desc: "VCD movies"}
|
||||
- {id: 93, cat: TV, desc: "Mother and child @ / Learning materials for children"}
|
||||
- {id: 4, cat: TV, desc: "TV shows / Variety / Game shows"}
|
||||
- {id: 50, cat: Other, desc: "Images"}
|
||||
- {id: 18, cat: Other, desc: "website"}
|
||||
- {id: 17, cat: TV/Documentary, desc: "Documentary"}
|
||||
- {id: 11, cat: Books/Technical, desc: "Learning materials / Books / Ebook"}
|
||||
- {id: 5, cat: Movies, desc: "Movies / series [Korea]"}
|
||||
- {id: 54, cat: Movies, desc: "Movies / Series [China]"}
|
||||
- {id: 51, cat: Movies, desc: "Movie series / series [Japan]"}
|
||||
- {id: 52, cat: Movies, desc: "Movies / Series [Western]"}
|
||||
- {id: 57, cat: Movies, desc: "Movies / series [other]"}
|
||||
- {id: 53, cat: Movies, desc: "Movie series / series / drama [Thai]"}
|
||||
- {id: 901, cat: XXX, desc: "XXX-Anime"}
|
||||
- {id: 902, cat: XXX, desc: "XXX-Game"}
|
||||
- {id: 903, cat: XXX, desc: "XXX-Japan censored"}
|
||||
- {id: 904, cat: XXX, desc: "XXX-Japan"}
|
||||
- {id: 905, cat: XXX, desc: "XXX-Guava"}
|
||||
- {id: 906, cat: XXX, desc: "XXX-Asia censored"}
|
||||
- {id: 907, cat: XXX, desc: "XXX-Asia"}
|
||||
- {id: 908, cat: XXX, desc: "XXX-Gay"}
|
||||
- {id: 910, cat: XXX, desc: "XXX-clip"}
|
||||
- {id: 911, cat: XXX, desc: "XXX-pictures"}
|
||||
- {id: 912, cat: XXX, desc: "XXX-magazine"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
login:
|
||||
path: takelogin.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: td.text
|
||||
test:
|
||||
path: nDonated.php
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
download:
|
||||
before:
|
||||
path: ajax.php
|
||||
method: get
|
||||
inputs:
|
||||
_action: "say_thank"
|
||||
id: "{{ .DownloadUri.Query.id }}"
|
||||
selector: a[href^="downloadnew.php?id="]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: viewno18.php
|
||||
categorymappings: ["!", 901, 902, 903, 904, 905, 906, 907, 908, 910, 911, 912]
|
||||
- path: viewbr.php
|
||||
categorymappings: [901, 902, 903, 904, 905, 906, 907, 908, 910, 911, 912]
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
searchin: 0
|
||||
rows:
|
||||
selector: table[width="100%"][border="1"][cellspacing="0"][cellpadding="5"] > tbody > tr:has(a[href*="hashinfo="])
|
||||
fields:
|
||||
title:
|
||||
selector: a[href^="details.php?id="]
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
category:
|
||||
selector: a[href^="viewno18.php?cat="], a[href^="viewbr.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
download:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
imdb:
|
||||
optional: true
|
||||
selector: a[href*="www.imdb.com/title/"]
|
||||
attribute: href
|
||||
files:
|
||||
selector: td:nth-child(5)
|
||||
date:
|
||||
selector: td:nth-child(7)
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "02-01-200615:04:05"
|
||||
size:
|
||||
selector: td:nth-child(8)
|
||||
grabs:
|
||||
selector: td:nth-child(9)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
seeders:
|
||||
selector: td:nth-child(10)
|
||||
leechers:
|
||||
selector: td:nth-child(11)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"td:nth-child(3):contains(\"100%\")": "0"
|
||||
"td:nth-child(3):contains(\"95%\")": "0.05"
|
||||
"td:nth-child(3):contains(\"90%\")": "0.1"
|
||||
"td:nth-child(3):contains(\"85%\")": "0.15"
|
||||
"td:nth-child(3):contains(\"80%\")": "0.2"
|
||||
"td:nth-child(3):contains(\"75%\")": "0.25"
|
||||
"td:nth-child(3):contains(\"70%\")": "0.3"
|
||||
"td:nth-child(3):contains(\"65%\")": "0.35"
|
||||
"td:nth-child(3):contains(\"60%\")": "0.4"
|
||||
"td:nth-child(3):contains(\"55%\")": "0.45"
|
||||
"td:nth-child(3):contains(\"50%\")": "0.5"
|
||||
"td:nth-child(3):contains(\"45%\")": "0.55"
|
||||
"td:nth-child(3):contains(\"40%\")": "0.6"
|
||||
"td:nth-child(3):contains(\"35%\")": "0.65"
|
||||
"td:nth-child(3):contains(\"30%\")": "0.7"
|
||||
"td:nth-child(3):contains(\"25%\")": "0.75"
|
||||
"td:nth-child(3):contains(\"20%\")": "0.8"
|
||||
"td:nth-child(3):contains(\"15%\")": "0.85"
|
||||
"td:nth-child(3):contains(\"10%\")": "0.9"
|
||||
"td:nth-child(3):contains(\"5%\")": "0.95"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"td:nth-child(4):contains(\"x2\")": "2"
|
||||
"td:nth-child(4):contains(\"x3\")": "3"
|
||||
"td:nth-child(4):contains(\"x4\")": "4"
|
||||
"td:nth-child(4):contains(\"x5\")": "5"
|
||||
"td:nth-child(4):contains(\"x6\")": "6"
|
||||
"td:nth-child(4):contains(\"x7\")": "7"
|
||||
"td:nth-child(4):contains(\"x8\")": "8"
|
||||
"td:nth-child(4):contains(\"x9\")": "9"
|
||||
"*": "1"
|
@@ -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:
|
||||
|
@@ -13,11 +13,13 @@
|
||||
- {id: 47, cat: TV/Sport, desc: "EPL"}
|
||||
- {id: 41, cat: TV/Sport, desc: "American Football"}
|
||||
- {id: 17, cat: TV/Sport, desc: "Athletics"}
|
||||
- {id: 51, cat: TV/Sport, desc: "Baseball"}
|
||||
- {id: 34, cat: TV/Sport, desc: "Bodybuilding/Fitness"}
|
||||
- {id: 50, cat: TV/Sport, desc: "Golf"}
|
||||
- {id: 29, cat: TV/Sport, desc: "Boxing"}
|
||||
- {id: 19, cat: TV/Sport, desc: "BrainGames"}
|
||||
- {id: 36, cat: TV/Sport, desc: "BreakDance"}
|
||||
- {id: 40, cat: TV/Sport, desc: "Cricet/Golf/Baseball"}
|
||||
- {id: 40, cat: TV/Sport, desc: "Golf"}
|
||||
- {id: 23, cat: TV/Sport, desc: "Cycling"}
|
||||
- {id: 31, cat: TV/Sport, desc: "Documentary"}
|
||||
- {id: 1, cat: TV/Sport, desc: "European Basketball"}
|
||||
@@ -55,6 +57,7 @@
|
||||
- {id: 16, cat: TV/Sport, desc: "WinterSport"}
|
||||
- {id: 33, cat: TV/Sport, desc: "Wrestling/Grapling"}
|
||||
- {id: 48, cat: TV/Sport, desc: "Uncategorised"}
|
||||
- {id: 53, cat: TV/Sport, desc: "Cricket"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
@@ -71,9 +74,6 @@
|
||||
test:
|
||||
path: index.php
|
||||
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: index.php
|
||||
@@ -95,12 +95,18 @@
|
||||
title:
|
||||
remove: span
|
||||
selector: td:nth-child(2)
|
||||
filters:
|
||||
# strip the upright bars in the title
|
||||
- name: re_replace
|
||||
args: ["( \\| )+", " "]
|
||||
download:
|
||||
selector: a[href^="index.php?page=torrent-details&id="]
|
||||
# download.php?id=fb27625a0543ed731f7b3505beebf4c8d530f8f9&f=IIHF+2019-05-26+%7C+Gold+Medal+%7C+Canada+vs+Finland+%7C+1080p+EN.torrent
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["index.php?page=torrent-details&id=", "download.php?id="]
|
||||
# strip the upright bars in the title's filename
|
||||
- name: re_replace
|
||||
args: ["(\\+%7C\\+)+", "+"]
|
||||
details:
|
||||
selector: a[href^="index.php?page=torrent-details&id="]
|
||||
attribute: href
|
||||
@@ -112,11 +118,11 @@
|
||||
selector: td:nth-child(7)
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
# date:
|
||||
# selector: td:nth-child(5)
|
||||
# filters:
|
||||
# - name: dateparse
|
||||
# args: "02/05/2017"
|
||||
date:
|
||||
selector: td:nth-child(5)
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "02/01/2006"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"*": "1"
|
||||
|
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"
|
99
src/Jackett.Common/Definitions/teamhd.yml
Normal file
99
src/Jackett.Common/Definitions/teamhd.yml
Normal file
@@ -0,0 +1,99 @@
|
||||
---
|
||||
site: teamhd
|
||||
name: TeamHD
|
||||
description: "TeamHD is a RUSSIAN Private Torrent Tracker for HD MOVIES / TV"
|
||||
language: ru-ru
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://teamhd.org/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 29, cat: Movies/HD, desc: "Movies Фильмы"}
|
||||
- {id: 25, cat: TV/Anime, desc: "Cartoons Мультфильмы"}
|
||||
- {id: 26, cat: Audio/Lossless, desc: "Hi-Res Audio"}
|
||||
- {id: 27, cat: Other, desc: "Demo Демо"}
|
||||
- {id: 28, cat: TV/Documentary, desc: "Documentary Документальное кино"}
|
||||
- {id: 30, cat: Audio/Video, desc: "Music Video Музыкальное видео"}
|
||||
- {id: 31, cat: TV/Sport, desc: "Sport Спорт"}
|
||||
- {id: 32, cat: TV/HD, desc: "TV Show ТВ Шоу"}
|
||||
- {id: 33, cat: TV/HD, desc: "Soaps Сериалы"}
|
||||
- {id: 34, cat: TV/HD, desc: "Other"}
|
||||
- {id: 35, cat: Movies, desc: "Content w/o subs Контент без перевода"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
login:
|
||||
path: takelogin.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: div.error
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="/logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
incldead: 0
|
||||
free: 0
|
||||
year: ""
|
||||
|
||||
rows:
|
||||
selector: table.browse > tbody > tr
|
||||
fields:
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
title:
|
||||
selector: a[href^="/details/id"]
|
||||
details:
|
||||
selector: a[href^="/details/id"]
|
||||
attribute: href
|
||||
category:
|
||||
selector: a[href*="/browse/cat"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
date:
|
||||
selector: td > div > small
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "02-01-2006 15:04"
|
||||
seeders:
|
||||
selector: td:nth-child(4)
|
||||
filters:
|
||||
- name: split
|
||||
args: ["|", 0]
|
||||
leechers:
|
||||
selector: td:nth-child(4)
|
||||
filters:
|
||||
- name: split
|
||||
args: ["|", 1]
|
||||
grabs:
|
||||
selector: td:nth-child(5) strong
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
remove: strong
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
a[href^="/details/id"][style="color:#f2b101"]: "0"
|
||||
a[href^="/details/id"][style="color:#828b8b"]: "0.5"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"*": "1"
|
@@ -20,6 +20,7 @@
|
||||
- {id: 5, cat: PC, desc: "Apps"}
|
||||
- {id: 6, cat: Other, desc: "Misc"}
|
||||
- {id: 7, cat: XXX, desc: "XXX"}
|
||||
- {id: 8, cat: Movies, desc: "Kids"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
@@ -56,6 +57,7 @@
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
|
||||
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
|
||||
description: ""
|
||||
uploader: ""
|
||||
imdb: "{{ .Query.IMDBIDShort }}"
|
||||
tvdb: ""
|
||||
@@ -81,17 +83,24 @@
|
||||
details:
|
||||
selector: a.view-torrent
|
||||
attribute: href
|
||||
banner:
|
||||
optional: true
|
||||
selector: div.torrent-poster img
|
||||
attribute: src
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/600x900/212121/FFFFFF/?text=NOCOVER", ""]
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
seeders:
|
||||
selector: td:nth-child(7)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
selector: td:nth-last-child(4)
|
||||
grabs:
|
||||
selector: td:nth-child(6)
|
||||
selector: td:nth-last-child(3)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d\.]+)
|
||||
seeders:
|
||||
selector: td:nth-last-child(2)
|
||||
leechers:
|
||||
selector: td:nth-last-child(1)
|
||||
date:
|
||||
selector: time
|
||||
filters:
|
||||
@@ -120,12 +129,14 @@
|
||||
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=\"Freeleech\"]": "0" # Freeleech
|
||||
"i[data-original-title=\"Global freeleech\"]": "0" # Global Freeleech
|
||||
"i[data-original-title=\"Featured\"]": "0" # Featured
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
|
||||
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
|
||||
"i[data-original-title=\"Featured\"]": "2" # Featured
|
||||
"*": "1"
|
||||
# UNIT3D
|
||||
|
@@ -31,6 +31,8 @@
|
||||
paths:
|
||||
- path: src/releaselist.php
|
||||
method: post
|
||||
headers:
|
||||
Referer: ["{{.Config.sitelink}}?releaselist"]
|
||||
inputs:
|
||||
cat: 0
|
||||
page: 1
|
||||
|
@@ -45,7 +45,7 @@
|
||||
settings: []
|
||||
|
||||
download:
|
||||
selector: a[href^="/downloading/"]
|
||||
selector: a.download:contains("le Torrent")
|
||||
|
||||
search:
|
||||
paths:
|
||||
|
@@ -7,15 +7,19 @@
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://wvw.torrent9.vc/
|
||||
- https://ww1.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.lol/
|
||||
- https://www.torrent9.vc/
|
||||
- https://wvw.torrent9.vc/
|
||||
- https://www.torrent9.lol/
|
||||
- https://wvw.torrent9.lol/
|
||||
- https://wwv.torrent9.lol/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -63,7 +63,7 @@
|
||||
sort: "id"
|
||||
order: "desc"
|
||||
rows:
|
||||
selector: div[class="tgxtablerow clickable-row click"]
|
||||
selector: div[class="tgxtablerow"]
|
||||
fields:
|
||||
title:
|
||||
selector: div a[href^="/torrent/"]
|
||||
@@ -77,9 +77,6 @@
|
||||
details:
|
||||
selector: div a[href^="/torrent/"]
|
||||
attribute: href
|
||||
download:
|
||||
selector: div a[href*="/get/"]
|
||||
attribute: href
|
||||
magnet:
|
||||
selector: div a[href^="magnet:?"]
|
||||
attribute: href
|
||||
|
@@ -6,6 +6,8 @@
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://gotorrentkitty.cc/
|
||||
legacylinks:
|
||||
- http://cntorrentkitty.com/
|
||||
- http://cntorrentkitty.xyz/
|
||||
|
||||
|
71
src/Jackett.Common/Definitions/torrentquest.yml
Normal file
71
src/Jackett.Common/Definitions/torrentquest.yml
Normal file
@@ -0,0 +1,71 @@
|
||||
---
|
||||
site: torrentquest
|
||||
name: TorrentQuest
|
||||
description: "TorrentQuest is a Public torrent Magnet Links search engine"
|
||||
language: en-us
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://torrentquest.com/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
"TV": TV
|
||||
"Movie": Movies
|
||||
"Music": Audio
|
||||
"E-Book": Books/Ebook
|
||||
"Game": PC/Games
|
||||
"Software": PC
|
||||
"Other": Other
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings: []
|
||||
|
||||
search:
|
||||
headers:
|
||||
# prevent redirect
|
||||
Accept: ["text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"]
|
||||
keywordsfilters:
|
||||
# replace space between keywords with - to prevent 404 Not Found
|
||||
- name: re_replace
|
||||
args: [" ", "-"]
|
||||
- name: tolower
|
||||
paths:
|
||||
# return movie results if there are no search parms supplied (for use with the TEST button)
|
||||
# http://www.magnetdl.com/m/midnight-texas-s01e10/
|
||||
- path: "{{if .Keywords}}{{ re_replace .Keywords \"(.).*\" \"$1\" }}/{{ .Keywords }}/{{else}}download/movies/{{end}}"
|
||||
rows:
|
||||
selector: tr:has(td.m)
|
||||
fields:
|
||||
title:
|
||||
selector: td.n a
|
||||
attribute: title
|
||||
category:
|
||||
optional: true
|
||||
selector: td[class^="t"]
|
||||
details:
|
||||
selector: td.n a
|
||||
attribute: href
|
||||
magnet:
|
||||
selector: td.m a
|
||||
attribute: href
|
||||
date:
|
||||
selector: td:nth-child(3)
|
||||
filters:
|
||||
- name: timeago
|
||||
files:
|
||||
selector: td:nth-child(5)
|
||||
size:
|
||||
selector: td:nth-child(6)
|
||||
seeders:
|
||||
selector: td.s
|
||||
leechers:
|
||||
selector: td.l
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
@@ -10,32 +10,34 @@
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 13, cat: PC/0day, desc: "0DAY"}
|
||||
- {id: 37, cat: TV/Anime, desc: "ANIME/HD"}
|
||||
- {id: 13, cat: PC/0day, desc: "Apps/0DAY"}
|
||||
- {id: 37, cat: TV/Anime, desc: "Anime/HD"}
|
||||
- {id: 9, cat: TV/Anime, desc: "Anime/SD"}
|
||||
- {id: 1, cat: PC/0day, desc: "Apps"}
|
||||
- {id: 27, cat: Books, desc: "Bookware"}
|
||||
- {id: 32, cat: Books/Ebook, desc: "EBOOK"}
|
||||
- {id: 47, cat: Console/Other, desc: "GAMES/NSW"}
|
||||
- {id: 60, cat: Console/Other, desc: "GAMES/ATARI"}
|
||||
- {id: 63, cat: Console/Other, desc: "GAMES/UPDATES"}
|
||||
- {id: 32, cat: Books/Ebook, desc: "EBooks"}
|
||||
- {id: 47, cat: Console/Other, desc: "Games/NSW"}
|
||||
- {id: 60, cat: Console/Other, desc: "Games/ATARI"}
|
||||
- {id: 63, cat: Console/Other, desc: "Games/UPDATES"}
|
||||
- {id: 2, cat: PC/Games, desc: "Games/PC"}
|
||||
- {id: 8, cat: Console/PS3, desc: "Games/PS3"}
|
||||
- {id: 30, cat: Console/PS4, desc: "GAMES/PS4"}
|
||||
- {id: 30, cat: Console/PS4, desc: "Games/PS4"}
|
||||
- {id: 7, cat: Console/PSP, desc: "Games/PSP"}
|
||||
- {id: 16, cat: Console/Wii, desc: "GAMES/WII"}
|
||||
- {id: 29, cat: Console/WiiU, desc: "GAMES/WIIU"}
|
||||
- {id: 17, cat: Console/XBox 360, desc: "GAMES/XBOX360"}
|
||||
- {id: 16, cat: Console/Wii, desc: "Games/WII"}
|
||||
- {id: 29, cat: Console/WiiU, desc: "Games/WIIU"}
|
||||
- {id: 17, cat: Console/XBox 360, desc: "Games/XBOX360"}
|
||||
- {id: 50, cat: Movies/BluRay, desc: "Movies/Bluray-UHD"}
|
||||
- {id: 31, cat: Movies/BluRay, desc: "MOVIES/COMPLETE-BLURAY"}
|
||||
- {id: 3, cat: Movies/DVD, desc: "MOVIES/DVDR"}
|
||||
- {id: 39, cat: Movies/Foreign, desc: "MOVIES/HD-Foreign"}
|
||||
- {id: 62, cat: Movies/Foreign, desc: "MOVIES/SD-Foreign"}
|
||||
- {id: 19, cat: Movies/HD, desc: "MOVIES/X264"}
|
||||
- {id: 31, cat: Movies/BluRay, desc: "Movies/COMPLETE-BLURAY"}
|
||||
- {id: 3, cat: Movies/DVD, desc: "Movies/DVDR"}
|
||||
- {id: 39, cat: Movies/Foreign, desc: "Movies/HD-Foreign"}
|
||||
- {id: 62, cat: Movies/Foreign, desc: "Movies/SD-Foreign"}
|
||||
- {id: 19, cat: Movies/HD, desc: "Movies/X264"}
|
||||
- {id: 49, cat: Movies/HD, desc: "Movies/X265"}
|
||||
- {id: 25, cat: Movies/SD, desc: "MOVIES/XVID"}
|
||||
- {id: 6, cat: XXX, desc: "MOVIES/XXX"}
|
||||
- {id: 25, cat: Movies/SD, desc: "Movies/XVID"}
|
||||
- {id: 6, cat: XXX, desc: "Movies/XXX"}
|
||||
- {id: 53, cat: XXX, desc: "Movies/XXX-HD"}
|
||||
- {id: 57, cat: XXX, desc: "Movies/XXX-PAYSITE"}
|
||||
- {id: 55, cat: XXX, desc: "Movies/XXX-DVDR"}
|
||||
- {id: 33, cat: Audio/Lossless, desc: "Music/FLAC"}
|
||||
- {id: 28, cat: Audio/Other, desc: "Music/MBluRay"}
|
||||
- {id: 34, cat: Audio/Other, desc: "Music/MDVDR"}
|
||||
@@ -52,8 +54,8 @@
|
||||
- {id: 44, cat: TV/HD, desc: "P2P/TV-HD"}
|
||||
- {id: 51, cat: Movies/HD, desc: "P2P/X265"}
|
||||
- {id: 41, cat: Movies/SD, desc: "P2P/XVID"}
|
||||
- {id: 35, cat: TV/Sport, desc: "SPORT"}
|
||||
- {id: 36, cat: TV/Sport, desc: "SPORT-HD"}
|
||||
- {id: 35, cat: TV/Sport, desc: "TV/SPORT"}
|
||||
- {id: 36, cat: TV/Sport, desc: "TV/SPORT-HD"}
|
||||
- {id: 11, cat: TV/HD, desc: "TV/BluRay"}
|
||||
- {id: 23, cat: TV/SD, desc: "TV/DVDR"}
|
||||
- {id: 24, cat: TV/SD, desc: "TV/DVDRIP"}
|
||||
@@ -75,22 +77,10 @@
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: incldead
|
||||
type: select
|
||||
label: "Search Torrents that are:"
|
||||
default: "0"
|
||||
options:
|
||||
"0" : "Active"
|
||||
"1": "Including Dead"
|
||||
"2": "Only Dead"
|
||||
- name: onlyfree
|
||||
type: checkbox
|
||||
label: Show only Free torrents
|
||||
default: false
|
||||
- name: info
|
||||
type: info
|
||||
label: Results Per Page
|
||||
default: For best results, change the 'Torrents per page' setting to 100 on your 'Torrent Options' from the 'Pers Tools > UserCP' menu on the TorrentSeeds webpage.
|
||||
default: For best results, change the <b>Torrents per page</b> setting to <b>100</b> on your <b>Torrent</b> tab from the <b>Pers Tools > UserCP</b> menu on the TorrentSeeds webpage.
|
||||
|
||||
login:
|
||||
path: login.php
|
||||
@@ -108,82 +98,58 @@
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
- path: browse_elastic.php
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
searchin: "title"
|
||||
incldead: "{{ .Config.incldead }}"
|
||||
"only_free": "{{ if .Config.onlyfree }}1{{else}}0{{end}}"
|
||||
$raw: "{{range .Categories}}cat[{{.}}]=1&{{end}}"
|
||||
query: "{{ .Keywords }}"
|
||||
# name, descr, genre, all
|
||||
search_in: name
|
||||
# all, any
|
||||
search_mode: all
|
||||
# added, name, year, size, snatched, seeders, leechers, random
|
||||
order_by: added
|
||||
# desc, asc
|
||||
order_way: desc
|
||||
# advanced disabled
|
||||
# scene: 1 yes 0 no
|
||||
# freetorrent: 1 freeleech 2 neutral 3 either 0 normal
|
||||
# uploader: 1 uploaded 0 member
|
||||
# archived: 1 yes 0 no
|
||||
|
||||
rows:
|
||||
selector: tr.browse_color, tr[id^="kdescr"]
|
||||
after: 1
|
||||
filters:
|
||||
- name: andmatch
|
||||
selector: table.torrent-table tr[class]
|
||||
fields:
|
||||
category:
|
||||
selector: td:nth-of-type(1) a
|
||||
selector: a[href^="/browse_elastic.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title:
|
||||
selector: td:nth-of-type(2) a
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: split
|
||||
args: [">", "1"]
|
||||
- name: replace
|
||||
args: ["</b", ""]
|
||||
title:
|
||||
selector: a[href^="/details.php?id="]
|
||||
details:
|
||||
selector: td:nth-of-type(2) > a[onmouseover]
|
||||
selector: a[href^="/details.php?id="]
|
||||
attribute: href
|
||||
banner:
|
||||
selector: td:nth-of-type(2) > a[onmouseover]
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "src=\\\\'(.+?)\\\\'"
|
||||
- name: replace
|
||||
args: ["./pic/noposter.png", ""]
|
||||
download:
|
||||
selector: td:nth-of-type(3) a
|
||||
selector: a[href^="/download.php?torrent="]
|
||||
attribute: href
|
||||
files:
|
||||
selector: td:nth-of-type(5)
|
||||
# 2 flavours of dates
|
||||
selector: td.torrent-table-files
|
||||
date:
|
||||
# Today<br /> 10:20 AM
|
||||
# Yesterday<br /> 08:03 PM
|
||||
optional: true
|
||||
selector: td:nth-child(7):contains("day")
|
||||
date:
|
||||
# Feb 14 2019<br /> 10:20 AM
|
||||
optional: true
|
||||
selector: td:nth-child(7):not(:contains("day"))
|
||||
selector: td.torrent-table-added
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "Jan 2 2006 03:04 pm"
|
||||
- name: timeago
|
||||
size:
|
||||
selector: td:nth-of-type(8)
|
||||
selector: td.torrent-table-size
|
||||
grabs:
|
||||
selector: td:nth-of-type(9)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "([\\d]+)"
|
||||
selector: td.torrent-table-snatched
|
||||
seeders:
|
||||
selector: td:nth-of-type(10)
|
||||
selector: td.torrent-table-seeders
|
||||
leechers:
|
||||
selector: td:nth-of-type(11)
|
||||
description:
|
||||
selector: td[colspan="14"]
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["\n", "<br>\n"]
|
||||
selector: td.torrent-table-leechers
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"img[alt=\"Free Torrent\"]": "0"
|
||||
span.freeleech: "0"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
||||
|
@@ -7,8 +7,6 @@
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.trancetraffic.com/
|
||||
certificates:
|
||||
- 117B89D7C086F3E051F0A5A3576504667402AE52
|
||||
|
||||
caps:
|
||||
categories:
|
||||
|
117
src/Jackett.Common/Definitions/uniongang.yml
Normal file
117
src/Jackett.Common/Definitions/uniongang.yml
Normal file
@@ -0,0 +1,117 @@
|
||||
---
|
||||
site: uniongang
|
||||
name: UnionGang
|
||||
description: "UnionGang is a RUSSIAN Private Torrent Tracker for MOVIES / GENERAL"
|
||||
language: ru-ru
|
||||
type: private
|
||||
encoding: windows-1251
|
||||
links:
|
||||
- https://www.uniongang.net/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Movies SATRip / DVDRip / HDRip"}
|
||||
- {id: 21, cat: Movies/WEBDL, desc: "Movies WEB-DLRip / WEB-DL"}
|
||||
- {id: 2, cat: Movies/HD, desc: "Movies x264"}
|
||||
- {id: 3, cat: Movies/DVD, desc: "Movies DVD5"}
|
||||
- {id: 4, cat: Movies/DVD, desc: "Movies DVD9"}
|
||||
- {id: 5, cat: Movies/HD, desc: "Movies BDRemux / 720p / 1080p / Bl"}
|
||||
- {id: 6, cat: TV, desc: "TV Сериал"}
|
||||
- {id: 7, cat: TV/Documentary, desc: "TV Документальный"}
|
||||
- {id: 19, cat: TV/Sport, desc: "TV Спорт"}
|
||||
- {id: 8, cat: XXX, desc: "XXX Эротика"}
|
||||
- {id: 9, cat: TV, desc: "Мультфильм"}
|
||||
- {id: 10, cat: TV, desc: "КВН Юмор"}
|
||||
- {id: 11, cat: PC, desc: "Игра PC"}
|
||||
- {id: 13, cat: Audio, desc: "Музыка / Русская"}
|
||||
- {id: 14, cat: Audio, desc: "Музыка / Зарубежная"}
|
||||
- {id: 15, cat: Audio/Video, desc: "Видеоклип"}
|
||||
- {id: 16, cat: Audio/Audiobook, desc: "Аудиокнига"}
|
||||
- {id: 20, cat: Movies/3D, desc: "Movies 3D"}
|
||||
- {id: 23, cat: Movies/UHD, desc: "Movies 4K"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: striprussian
|
||||
type: checkbox
|
||||
label: Strip Russian Letters
|
||||
default: false
|
||||
|
||||
login:
|
||||
path: takelogin.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: div.error
|
||||
test:
|
||||
path: /
|
||||
selector: a[href="/logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
incldead: 1
|
||||
dsearch: ""
|
||||
rows:
|
||||
selector: table.embedded > tbody > tr:has(a[href^="download.php?id="])
|
||||
fields:
|
||||
title:
|
||||
selector: a[href^="/torrent-"]
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(\\([А-Яа-я\\W]+\\))|(^[А-Яа-я\\W\\d]+\\/ )|([а-яА-Я \\-]+,+)|([а-яА-Я]+)", "{{ if .Config.striprussian }}{{ else }}$1$2$3$4{{ end }}"]
|
||||
details:
|
||||
selector: a[href^="/torrent-"]
|
||||
attribute: href
|
||||
category:
|
||||
selector: a[href^="browse.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
date:
|
||||
selector: i
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "2006-01-02 15:04:05"
|
||||
files:
|
||||
selector: td:nth-last-child(5)
|
||||
size:
|
||||
selector: td:nth-last-child(3)
|
||||
seeders:
|
||||
selector: td:nth-last-child(2)
|
||||
filters:
|
||||
- name: split
|
||||
args: [ "|", 0 ]
|
||||
leechers:
|
||||
selector: td:nth-last-child(2)
|
||||
filters:
|
||||
- name: split
|
||||
args: [ "|", 1 ]
|
||||
grabs:
|
||||
selector: td:nth-last-child(1)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="pic/freedownload.gif"]: "0"
|
||||
img[src="pic/silverdownload.gif"]: "0.5"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
@@ -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)
|
@@ -15,17 +15,21 @@
|
||||
- {id: 23 , cat: Movies/3D, desc: "Peliculas - 3D"}
|
||||
- {id: 17 , cat: Movies/HD, desc: "Peliculas - FullBluray/BDRemux"}
|
||||
- {id: 29 , cat: Movies/HD, desc: "Peliculas - 1080p x265"}
|
||||
- {id: 21 , cat: Movies/HD, desc: "Peliculas - 4K"}
|
||||
- {id: 21 , cat: Movies/UHD, desc: "Peliculas - 4K"}
|
||||
- {id: 30 , cat: Movies/HD, desc: "Peliculas - MicroHD x265"}
|
||||
- {id: 35 , cat: TV/HD, desc: "TV/Series - 4K"}
|
||||
- {id: 35 , cat: TV/UHD, desc: "TV/Series - 4K"}
|
||||
- {id: 31 , cat: TV/HD, desc: "TV/Series - x265"}
|
||||
- {id: 25 , cat: TV/HD, desc: "TV/Series - HDTV & WEB-DL 1080p"}
|
||||
- {id: 37 , cat: TV/Documentary, desc: "Documentales"}
|
||||
- {id: 41 , cat: TV/Sport, desc: "Deportes"}
|
||||
- {id: 5 , cat: Movies/HD, desc: "Anime"}
|
||||
- {id: 5 , cat: TV/Anime, desc: "Anime"}
|
||||
- {id: 34 , cat: TV/HD, desc: "Dibujos animados"}
|
||||
- {id: 14 , cat: Audio/MP3, desc: "Música - MP3"}
|
||||
- {id: 39 , cat: Audio/Lossless, desc: "Música - FLAC"}
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
login:
|
||||
path: index.php?page=login
|
||||
|
@@ -21,6 +21,8 @@
|
||||
- {id: 15, cat: Audio/Video, desc: "Concert"}
|
||||
- {id: 25, cat: PC, desc: "Logiciels"}
|
||||
- {id: 27, cat: TV, desc: "Spectacles"}
|
||||
- {id: 28, cat: TV/Sport, desc: "Sports"}
|
||||
- {id: 29, cat: XXX, desc: "XXX"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
@@ -7,7 +7,7 @@
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://www.yggtorrent.gg/
|
||||
- https://www.yggtorrent.ch/
|
||||
legacylinks:
|
||||
- https://yggtorrent.com/
|
||||
- https://ww1.yggtorrent.com/
|
||||
@@ -26,6 +26,7 @@
|
||||
- https://www.ygg.to/
|
||||
- https://ww3.yggtorrent.gg/
|
||||
- http://www2.yggtorrent.gg/
|
||||
- https://www.yggtorrent.gg/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
@@ -91,7 +92,7 @@
|
||||
- name: searchanddlurl
|
||||
label: Search and download URL
|
||||
type: text
|
||||
default: www2.yggtorrent.gg
|
||||
default: www2.yggtorrent.ch
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
@@ -139,10 +140,15 @@
|
||||
type: checkbox
|
||||
label: Enhance sonarr compatibility with anime by renaming episode (xxx to exxx). Works only if episode is at the end of the query. Can disturb movies search. (back to the future 3 -> back to the future e3)
|
||||
default: false
|
||||
- name: sonarrv3hack
|
||||
# NEW SEARCH ENGINE MIGH BE BETTER THAN THAT
|
||||
# - name: sonarrv3hack
|
||||
# type: checkbox
|
||||
# label: "REMOVED"
|
||||
# default: false
|
||||
- name: betasearchengine
|
||||
type: checkbox
|
||||
label: "Enable Full season search hack: Sonarrv3 send 'Series Name SXX' but it won't match 'Series Name - Saison 01' for example so we remove the 'SXX' ==> 'Series Name'"
|
||||
default: true
|
||||
label: "Use Beta Search engine URL (Less restrictive) / SonarrV3 Full Series Search NEW"
|
||||
default: false
|
||||
|
||||
login:
|
||||
method: form
|
||||
@@ -154,6 +160,15 @@
|
||||
submit: ""
|
||||
error:
|
||||
- selector: "#login_msg_pass[style=\"\"][style] > center"
|
||||
- selector: "#ban_msg_login[style=\"\"][style] > center"
|
||||
- selector: "#login_msg_mail[style=\"\"][style] > center"
|
||||
- selector: a[href$="/user/disabled"]
|
||||
message:
|
||||
# Compte Inactif
|
||||
selector: a[href$="/user/disabled"] strong
|
||||
filters:
|
||||
- name: append
|
||||
args: " - Dès que vous passez en dessous d'un ratio inférieur à 1, Votre compte devient inactif et le site vous coupe les téléchargements."
|
||||
test:
|
||||
path: /
|
||||
selector: div#top_panel:contains("Déconnexion")
|
||||
@@ -161,15 +176,19 @@
|
||||
search:
|
||||
followredirect: true
|
||||
keywordsfilters:
|
||||
# COMMENT THAT BECAUSE OF BETA SEARCH
|
||||
# Full season seach hack: Sonarrv3 send 'Series Name SXX' but it won't match 'Series Name - Saison 01' for example so we remove the 'SXX' ==> 'Series Name'
|
||||
- name: re_replace
|
||||
args: ["(.*)[sS](\\d{1,4})$", "{{ if .Config.sonarrv3hack }}$1{{else}}$1S$2{{end}}"]
|
||||
# - name: re_replace
|
||||
# args: ["(.*)[sS](\\d{1,4})$", "{{ if .Config.sonarrv3hack }}$1{{else}}$1S$2{{end}}"]
|
||||
- name: replace
|
||||
args: ["\"", ""]
|
||||
- name: trim
|
||||
paths:
|
||||
- path: "https://{{ .Config.searchanddlurl }}/engine/search?category={{ .Config.category }}&name={{if .Config.enhancedAnime}}{{ re_replace .Keywords \"([\\.\\s\\[\\-])(\\d+)$\" \"$1e$2\" }}{{else}}{{ .Keywords }}{{end}}&description=&file=&uploader=&sub_category=&do=search&order=desc&sort=publish_date"
|
||||
- path: "https://{{ .Config.searchanddlurl }}/engine/search?category={{ .Config.category }}&name={{if .Config.enhancedAnime}}{{ re_replace .Keywords \"([\\.\\s\\[\\-])(\\d+)$\" \"$1e$2\" }}{{else}}{{ .Keywords }}{{end}}&description=&file=&uploader=&sub_category=&do=search&order=desc&sort=publish_date&page=50"
|
||||
# - path: "https://{{ .Config.searchanddlurl }}/{{if .Config.betasearchengine}}new_search{{else}}engine{{end}}/search?category={{ .Config.category }}&name={{if .Config.enhancedAnime}}{{ re_replace .Keywords \"([\\.\\s\\[\\-])(\\d+)$\" \"$1e$2\" }}{{else}}{{ re_replace .Keywords \"\\s\" \"\"\"\" }}{{end}}&description=&file=&uploader=&sub_category=&do=search&order=desc&sort=publish_date"
|
||||
# - path: "https://{{ .Config.searchanddlurl }}/{{if .Config.betasearchengine}}new_search{{else}}engine{{end}}/search?category={{ .Config.category }}&name={{if .Config.enhancedAnime}}{{ re_replace .Keywords \"([\\.\\s\\[\\-])(\\d+)$\" \"$1e$2\" }}{{else}}{{ re_replace .Keywords \"\\s\" \"\"\"\" }}{{end}}&description=&file=&uploader=&sub_category=&do=search&order=desc&sort=publish_date&page=50"
|
||||
#CHANGED / REMOVED THE quotes around Keyword, seems not needed now / Added betasearch engine
|
||||
- path: "https://{{ .Config.searchanddlurl }}/{{if .Config.betasearchengine}}new_search{{else}}engine{{end}}/search?category={{ .Config.category }}&name={{ .Keywords }}&description=&file=&uploader=&sub_category=&do=search&order=desc&sort=publish_date"
|
||||
- path: "https://{{ .Config.searchanddlurl }}/{{if .Config.betasearchengine}}new_search{{else}}engine{{end}}/search?category={{ .Config.category }}&name={{ .Keywords }}&description=&file=&uploader=&sub_category=&do=search&order=desc&sort=publish_date&page=50"
|
||||
rows:
|
||||
selector: "table.table > tbody > tr"
|
||||
fields:
|
||||
@@ -216,8 +235,19 @@
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["[\\.\\s\\[\\-][Vv][Oo][Ss][Tt][Ff][Rr][\\.\\s\\]\\-]", ".ENGLISH."]
|
||||
title:
|
||||
- name: re_replace
|
||||
args: ["[\\.\\s\\[\\-][Ss][Uu][Bb][Ff][Rr][Ee][Nn][Cc][Hh][\\.\\s\\]\\-]", ".ENGLISH."]
|
||||
title_phase3:
|
||||
text: "{{if .Config.vostfr }}{{ .Result.title_vostfr }}{{else}}{{ .Result.title_phase2 }}{{end}}"
|
||||
title_anime:
|
||||
text: "{{ .Result.title_phase3 }}"
|
||||
filters:
|
||||
# Sonarr need E in front of 3 digit number or else it thinks it is episode
|
||||
# S01E10 for number 110 for example ==> enhancedAnime
|
||||
- name: re_replace
|
||||
args: ["(.*)(\\.| |\\-)(\\d{1,4})(\\.| |\\-)(.*)", "$1 E$3 $5"]
|
||||
title:
|
||||
text: "{{if .Config.enhancedAnime }}{{ .Result.title_anime }}{{else}}{{ .Result.title_phase3 }}{{end}}"
|
||||
details:
|
||||
selector: ":nth-child(2) > a"
|
||||
attribute: href
|
||||
|
84
src/Jackett.Common/Definitions/yourbittorrent.yml
Normal file
84
src/Jackett.Common/Definitions/yourbittorrent.yml
Normal file
@@ -0,0 +1,84 @@
|
||||
---
|
||||
site: yourbittorrent
|
||||
name: YourBittorrent
|
||||
description: "YourBittorrent is a Public torrent index"
|
||||
language: en-us
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://yourbittorrent.com/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
"Anime": TV/Anime
|
||||
"Software": PC
|
||||
"eBooks": Books
|
||||
"XXX": XXX
|
||||
"Games": PC/Games
|
||||
"Movies": Movies
|
||||
"Music": Audio
|
||||
"Television": TV
|
||||
"Other": Other
|
||||
"Pictures": Other
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings: []
|
||||
|
||||
download:
|
||||
selector: a[href^="/down/"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: /
|
||||
inputs:
|
||||
v: ""
|
||||
c: ""
|
||||
q: "{{ .Keywords}}"
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["[\\s]+", "-"]
|
||||
rows:
|
||||
selector: tr.table-default, tr.table-success
|
||||
filters:
|
||||
- name: andmatch
|
||||
fields:
|
||||
category:
|
||||
selector: td:nth-child(1) a
|
||||
attribute: title
|
||||
title:
|
||||
selector: td:nth-child(2) a
|
||||
details:
|
||||
selector: td:nth-child(2) a
|
||||
attribute: href
|
||||
download:
|
||||
selector: td:nth-child(2) a
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(4)
|
||||
date:
|
||||
selector: td:nth-child(5):not(:contains("/"))
|
||||
optional: true
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["Today", "now"]
|
||||
- name: replace
|
||||
args: ["Yesterday", "1 day"]
|
||||
- name: timeago
|
||||
date:
|
||||
selector: td:nth-child(5):contains("/")
|
||||
optional: true
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "02/01/06"
|
||||
seeders:
|
||||
selector: td:nth-child(6)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
@@ -7,24 +7,51 @@
|
||||
encoding: windows-1251
|
||||
links:
|
||||
- http://zamunda.net/
|
||||
- http://zamunda.ch/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
7: TV/SD
|
||||
33: TV/HD
|
||||
25: TV/Other
|
||||
5: Movies/HD
|
||||
19: Movies/SD
|
||||
46: Movies/3D
|
||||
42: Movies/BluRay
|
||||
20: Movies/DVD
|
||||
9: XXX
|
||||
49: XXX/Other
|
||||
6: Audio
|
||||
30: Audio/Other
|
||||
29: Audio/Other
|
||||
51: Audio/Other
|
||||
34: Audio/Lossless
|
||||
categorymappings:
|
||||
- {id: 42, cat: Movies/BluRay, desc: "Movies Blu-ray"}
|
||||
- {id: 25, cat: TV/Anime, desc: "TV Animation/Anime"}
|
||||
- {id: 35, cat: Movies/HD, desc: "Movies HD"}
|
||||
- {id: 46, cat: Movies/3D, desc: "Movies 3D"}
|
||||
- {id: 20, cat: Movies/DVD, desc: "Movies DVD-R"}
|
||||
- {id: 19, cat: Movies/SD, desc: "Movies SD"}
|
||||
- {id: 5, cat: Movies/HD, desc: "Movies HD"}
|
||||
- {id: 24, cat: Movies, desc: "Movies BG"}
|
||||
- {id: 31, cat: Movies, desc: "Movies Science"}
|
||||
- {id: 28, cat: Movies, desc: "Movies Russia"}
|
||||
- {id: 7, cat: TV/SD, desc: "TV SD"}
|
||||
- {id: 33, cat: TV/HD, desc: "TV HD"}
|
||||
- {id: 39, cat: PC/Mac, desc: "Games Mac"}
|
||||
- {id: 4, cat: PC/ISO, desc: "Games ISO"}
|
||||
- {id: 21, cat: PC/Games, desc: "Games PC Rip"}
|
||||
- {id: 17, cat: Console/PS3, desc: "Games PS"}
|
||||
- {id: 40, cat: Console/Xbox, desc: "Games Xbox"}
|
||||
- {id: 12, cat: Console, desc: "Games Console"}
|
||||
- {id: 54, cat: PC, desc: "Games Linux"}
|
||||
- {id: 17, cat: Console/PS3, desc: "Games PS"}
|
||||
- {id: 6, cat: Audio, desc: "Music"}
|
||||
- {id: 30, cat: Audio/Other, desc: "Music DTS"}
|
||||
- {id: 29, cat: Audio/Other, desc: "Music DVD-R"}
|
||||
- {id: 51, cat: Audio/Other, desc: "Music Hi-Res/Vinyl"}
|
||||
- {id: 34, cat: Audio/Lossless, desc: "Music Lossless"}
|
||||
- {id: 38, cat: PC/Mac, desc: "Programs Mac"}
|
||||
- {id: 1, cat: PC/ISO, desc: "Programs PC ISO"}
|
||||
- {id: 22, cat: PC/Phone-Other, desc: "Programs Other"}
|
||||
- {id: 43, cat: TV/Sport, desc: "Sport HD"}
|
||||
- {id: 41, cat: TV/Sport, desc: "Sport SD"}
|
||||
- {id: 36, cat: PC/Phone-Other, desc: "Programs Mobile/GSM"}
|
||||
- {id: 52, cat: PC/Phone-Android, desc: "Android/Games"}
|
||||
- {id: 53, cat: PC/Phone-Android, desc: "Android/Apps"}
|
||||
- {id: 26, cat: Other, desc: "Other"}
|
||||
- {id: 23, cat: Other, desc: "Clips"}
|
||||
- {id: 32, cat: Books/Comics, desc: "Books Comics"}
|
||||
- {id: 37, cat: Books/Technical, desc: "Books Dox"}
|
||||
- {id: 9, cat: XXX, desc: "XXX"}
|
||||
- {id: 48, cat: XXX, desc: "XXX 3D"}
|
||||
- {id: 49, cat: XXX, desc: "XXX HD"}
|
||||
- {id: 27, cat: TV/Anime, desc: "Hentai"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
@@ -11,18 +11,48 @@
|
||||
|
||||
caps:
|
||||
categories:
|
||||
7: TV/SD
|
||||
33: TV/HD
|
||||
25: TV/Other
|
||||
5: Movies/HD
|
||||
53: Movies/HD
|
||||
35: Movies/WEBDL
|
||||
19: Movies/SD
|
||||
46: Movies/3D
|
||||
42: Movies/BluRay
|
||||
20: Movies/DVD
|
||||
9: XXX
|
||||
49: XXX/Other
|
||||
categorymappings:
|
||||
- {id: 42, cat: Movies/BluRay, desc: "Movies Blu-ray"}
|
||||
- {id: 25, cat: TV/Anime, desc: "TV Animation/Anime"}
|
||||
- {id: 35, cat: Movies/HD, desc: "Movies HD"}
|
||||
- {id: 46, cat: Movies/3D, desc: "Movies 3D"}
|
||||
- {id: 20, cat: Movies/DVD, desc: "Movies DVD-R"}
|
||||
- {id: 19, cat: Movies/SD, desc: "Movies SD"}
|
||||
- {id: 5, cat: Movies/HD, desc: "Movies HD"}
|
||||
- {id: 24, cat: Movies, desc: "Movies BG"}
|
||||
- {id: 31, cat: Movies, desc: "Movies Science"}
|
||||
- {id: 28, cat: Movies, desc: "Movies Russia"}
|
||||
- {id: 7, cat: TV/SD, desc: "TV SD"}
|
||||
- {id: 33, cat: TV/HD, desc: "TV HD"}
|
||||
- {id: 39, cat: PC/Mac, desc: "Games Mac"}
|
||||
- {id: 4, cat: PC/ISO, desc: "Games ISO"}
|
||||
- {id: 21, cat: PC/Games, desc: "Games PC Rip"}
|
||||
- {id: 17, cat: Console/PS3, desc: "Games PS"}
|
||||
- {id: 40, cat: Console/Xbox, desc: "Games Xbox"}
|
||||
- {id: 12, cat: Console, desc: "Games Console"}
|
||||
- {id: 54, cat: PC, desc: "Games Linux"}
|
||||
- {id: 17, cat: Console/PS3, desc: "Games PS"}
|
||||
- {id: 6, cat: Audio, desc: "Music"}
|
||||
- {id: 30, cat: Audio/Other, desc: "Music DTS"}
|
||||
- {id: 29, cat: Audio/Other, desc: "Music DVD-R"}
|
||||
- {id: 51, cat: Audio/Other, desc: "Music Hi-Res/Vinyl"}
|
||||
- {id: 34, cat: Audio/Lossless, desc: "Music Lossless"}
|
||||
- {id: 38, cat: PC/Mac, desc: "Programs Mac"}
|
||||
- {id: 1, cat: PC/ISO, desc: "Programs PC ISO"}
|
||||
- {id: 22, cat: PC/Phone-Other, desc: "Programs Other"}
|
||||
- {id: 43, cat: TV/Sport, desc: "Sport HD"}
|
||||
- {id: 41, cat: TV/Sport, desc: "Sport SD"}
|
||||
- {id: 36, cat: PC/Phone-Other, desc: "Programs Mobile/GSM"}
|
||||
- {id: 52, cat: PC/Phone-Android, desc: "Android/Games"}
|
||||
- {id: 53, cat: PC/Phone-Android, desc: "Android/Apps"}
|
||||
- {id: 26, cat: Other, desc: "Other"}
|
||||
- {id: 23, cat: Other, desc: "Clips"}
|
||||
- {id: 32, cat: Books/Comics, desc: "Books Comics"}
|
||||
- {id: 37, cat: Books/Technical, desc: "Books Dox"}
|
||||
- {id: 9, cat: XXX, desc: "XXX"}
|
||||
- {id: 48, cat: XXX, desc: "XXX 3D"}
|
||||
- {id: 49, cat: XXX, desc: "XXX HD"}
|
||||
- {id: 27, cat: TV/Anime, desc: "Hentai"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
@@ -32,6 +32,7 @@ namespace Jackett.Common.Indexers
|
||||
private string TorrentCommentUrl { get { return TorrentDescriptionUrl; } }
|
||||
private string TorrentDescriptionUrl { get { return SiteLink + "torrents.php?id="; } }
|
||||
private string TorrentDownloadUrl { get { return SiteLink + "torrents.php?action=download&id={id}&authkey={auth_key}&torrent_pass={torrent_pass}"; } }
|
||||
private string ReplaceMulti { get { return ConfigData.ReplaceMulti.Value; } }
|
||||
private bool Latency { get { return ConfigData.Latency.Value; } }
|
||||
private bool DevMode { get { return ConfigData.DevMode.Value; } }
|
||||
private bool CacheMode { get { return ConfigData.HardDriveCache.Value; } }
|
||||
@@ -302,6 +303,11 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
// Release Name
|
||||
string name = tRow.Find("td:eq(1) > a").Text();
|
||||
//issue #3847 replace multi keyword
|
||||
if(!string.IsNullOrEmpty(ReplaceMulti)){
|
||||
System.Text.RegularExpressions.Regex regex = new Regex("(?i)([\\.\\- ])MULTI([\\.\\- ])");
|
||||
name = regex.Replace(name, "$1"+ReplaceMulti+"$2");
|
||||
}
|
||||
output("Release: " + name);
|
||||
|
||||
// Category
|
||||
|
@@ -36,7 +36,7 @@ namespace Jackett.Common.Indexers.Abstract
|
||||
)
|
||||
{
|
||||
this.endpoint = endpoint;
|
||||
TorznabCaps.SupportsImdbSearch = true;
|
||||
TorznabCaps.SupportsImdbMovieSearch = true;
|
||||
}
|
||||
|
||||
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
|
||||
|
610
src/Jackett.Common/Indexers/AniDub.cs
Normal file
610
src/Jackett.Common/Indexers/AniDub.cs
Normal file
@@ -0,0 +1,610 @@
|
||||
using AngleSharp.Dom;
|
||||
using AngleSharp.Html.Parser;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Models.IndexerConfig.Bespoke;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using Microsoft.AspNetCore.WebUtilities;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
internal class AniDub : BaseWebIndexer
|
||||
{
|
||||
private static readonly Regex EpisodeInfoRegex = new Regex(@"\[(.*?)(?: \(.*?\))? из (.*?)\]$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
private static readonly Regex SeasonInfoQueryRegex = new Regex(@"S(\d+)(?:E\d*)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
private static readonly Regex SeasonInfoRegex = new Regex(@"(?:(?:TV-)|(?:ТВ-))(\d+)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
private static readonly Lazy<Regex> StripRussianTitleRegex = new Lazy<Regex>(() => new Regex(@"^.*?\/\s*", RegexOptions.Compiled));
|
||||
|
||||
public AniDub(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
|
||||
: base(name: "AniDUB",
|
||||
description: "AniDUB Tracker is a semi-private russian tracker and release group for anime",
|
||||
link: "https://tr.anidub.com/",
|
||||
caps: new TorznabCapabilities(),
|
||||
configService: configService,
|
||||
client: wc,
|
||||
logger: l,
|
||||
p: ps,
|
||||
configData: new ConfigurationDataAniDub())
|
||||
{
|
||||
Encoding = Encoding.UTF8;
|
||||
Language = "ru-RU";
|
||||
Type = "semi-private";
|
||||
|
||||
AddCategoryMapping(2, TorznabCatType.TVAnime, "Аниме TV");
|
||||
AddCategoryMapping(14, TorznabCatType.TVAnime, "Аниме TV / Законченные сериалы");
|
||||
AddCategoryMapping(10, TorznabCatType.TVAnime, "Аниме TV / Аниме Ongoing");
|
||||
AddCategoryMapping(11, TorznabCatType.TVAnime, "Аниме TV / Многосерийный сёнэн");
|
||||
AddCategoryMapping(13, TorznabCatType.XXX, "18+");
|
||||
AddCategoryMapping(15, TorznabCatType.BooksComics, "Манга");
|
||||
AddCategoryMapping(16, TorznabCatType.Audio, "OST");
|
||||
AddCategoryMapping(17, TorznabCatType.Audio, "Подкасты");
|
||||
AddCategoryMapping(3, TorznabCatType.TVAnime, "Аниме Фильмы");
|
||||
AddCategoryMapping(4, TorznabCatType.TVAnime, "Аниме OVA");
|
||||
AddCategoryMapping(5, TorznabCatType.TVAnime, "Аниме OVA |- Аниме ONA");
|
||||
AddCategoryMapping(9, TorznabCatType.TV, "Дорамы");
|
||||
AddCategoryMapping(6, TorznabCatType.TV, "Дорамы / Японские Сериалы и Фильмы");
|
||||
AddCategoryMapping(7, TorznabCatType.TV, "Дорамы / Корейские Сериалы и Фильмы");
|
||||
AddCategoryMapping(8, TorznabCatType.TV, "Дорамы / Китайские Сериалы и Фильмы");
|
||||
AddCategoryMapping(12, TorznabCatType.Other, "Аниме Ongoing Анонсы");
|
||||
AddCategoryMapping(1, TorznabCatType.Other, "Новости проекта Anidub");
|
||||
}
|
||||
|
||||
private static Dictionary<string, string> CategoriesMap => new Dictionary<string, string>
|
||||
{
|
||||
{ "/anime_tv/full", "14" },
|
||||
{ "/anime_tv/anime_ongoing", "10" },
|
||||
{ "/anime_tv/shonen", "11" },
|
||||
{ "/anime_tv", "2" },
|
||||
{ "/xxx", "13" },
|
||||
{ "/manga", "15" },
|
||||
{ "/ost", "16" },
|
||||
{ "/podcast", "17" },
|
||||
{ "/anime_movie", "3" },
|
||||
{ "/anime_ova/anime_ona", "5" },
|
||||
{ "/anime_ova", "4" },
|
||||
{ "/dorama/japan_dorama", "6" },
|
||||
{ "/dorama/korea_dorama", "7" },
|
||||
{ "/dorama/china_dorama", "8" },
|
||||
{ "/dorama", "9" },
|
||||
{ "/anons_ongoing", "12" },
|
||||
};
|
||||
|
||||
private static ICollection<string> DefaultSearchCategories => new[] { "0" };
|
||||
|
||||
private ConfigurationDataAniDub Configuration
|
||||
{
|
||||
get { return (ConfigurationDataAniDub)configData; }
|
||||
set { configData = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// https://tr.anidub.com/index.php
|
||||
/// </summary>
|
||||
private string LoginUrl => SiteLink + "index.php";
|
||||
|
||||
/// <summary>
|
||||
/// https://tr.anidub.com/index.php?do=search
|
||||
/// </summary>
|
||||
private string SearchUrl => SiteLink + "index.php?do=search";
|
||||
|
||||
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
|
||||
{
|
||||
LoadValuesFromJson(configJson);
|
||||
|
||||
var data = new Dictionary<string, string>
|
||||
{
|
||||
{ "login_name", Configuration.Username.Value },
|
||||
{ "login_password", Configuration.Password.Value },
|
||||
{ "login", "submit" }
|
||||
};
|
||||
|
||||
var result = await RequestLoginAndFollowRedirect(
|
||||
LoginUrl,
|
||||
data,
|
||||
CookieHeader,
|
||||
returnCookiesFromFirstCall: true
|
||||
);
|
||||
|
||||
var parser = new HtmlParser();
|
||||
var document = await parser.ParseDocumentAsync(result.Content);
|
||||
|
||||
await ConfigureIfOK(result.Cookies, IsAuthorized(result), () =>
|
||||
{
|
||||
const string ErrorSelector = "#content .berror .berror_c";
|
||||
var errorMessage = document.QuerySelector(ErrorSelector).Text().Trim();
|
||||
throw new ExceptionWithConfigData(errorMessage, Configuration);
|
||||
});
|
||||
|
||||
return IndexerConfigurationStatus.Completed;
|
||||
}
|
||||
|
||||
public override async Task<byte[]> Download(Uri link)
|
||||
{
|
||||
await EnsureAuthorized();
|
||||
return await base.Download(link);
|
||||
}
|
||||
|
||||
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
|
||||
{
|
||||
// If the search string is empty use the latest releases
|
||||
if (query.IsTest || query.SearchTerm.IsNullOrEmptyOrWhitespace())
|
||||
{
|
||||
return await FetchNewReleases();
|
||||
}
|
||||
else
|
||||
{
|
||||
return await PerformSearch(query);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task EnsureAuthorized()
|
||||
{
|
||||
var result = await RequestStringWithCookies(SiteLink);
|
||||
|
||||
if (!IsAuthorized(result))
|
||||
{
|
||||
await ApplyConfiguration(null);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<List<ReleaseInfo>> FetchNewReleases()
|
||||
{
|
||||
const string ReleaseLinksSelector = "#dle-content > .story > .story_h > .lcol > h2 > a";
|
||||
|
||||
var result = await RequestStringWithCookies(SiteLink);
|
||||
var releases = new List<ReleaseInfo>();
|
||||
|
||||
try
|
||||
{
|
||||
var parser = new HtmlParser();
|
||||
var document = await parser.ParseDocumentAsync(result.Content);
|
||||
|
||||
foreach (var linkNode in document.QuerySelectorAll(ReleaseLinksSelector))
|
||||
{
|
||||
var url = linkNode.GetAttribute("href");
|
||||
releases.AddRange(await FetchShowReleases(url));
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
OnParseError(result.Content, ex);
|
||||
}
|
||||
|
||||
return releases;
|
||||
}
|
||||
|
||||
private async Task<List<ReleaseInfo>> FetchShowReleases(string url)
|
||||
{
|
||||
const string ContentId = "dle-content";
|
||||
const string ReleasesSelector = "#tabs .torrent_c > div";
|
||||
|
||||
var releases = new List<ReleaseInfo>();
|
||||
|
||||
var uri = new Uri(url);
|
||||
var categories = ParseCategories(uri)?.ToArray();
|
||||
if (categories == null)
|
||||
{
|
||||
// If no category then it should be a news topic
|
||||
// Doesn't happen often
|
||||
return releases;
|
||||
}
|
||||
|
||||
var result = await RequestStringWithCookies(url);
|
||||
|
||||
try
|
||||
{
|
||||
var parser = new HtmlParser();
|
||||
var document = await parser.ParseDocumentAsync(result.Content);
|
||||
var content = document.GetElementById(ContentId);
|
||||
|
||||
var date = GetDateFromShowPage(url, content);
|
||||
|
||||
var baseTitle = GetBaseTitle(categories, content);
|
||||
var bannerUrl = GetBannerUrl(url, content);
|
||||
|
||||
foreach (var releaseNode in content.QuerySelectorAll(ReleasesSelector))
|
||||
{
|
||||
IElement tabNode;
|
||||
if (releaseNode.Children.Any(node => node.ClassName?.Contains("torrent_h") == true))
|
||||
{
|
||||
// No quality, one tab, seems like a buggy page
|
||||
tabNode = releaseNode;
|
||||
}
|
||||
else
|
||||
{
|
||||
const StringComparison comparisonType = StringComparison.InvariantCultureIgnoreCase;
|
||||
tabNode = releaseNode.Children.First(node => node.TagName.Equals("div", comparisonType));
|
||||
}
|
||||
|
||||
var seeders = GetReleaseSeeders(tabNode);
|
||||
|
||||
|
||||
var release = new ReleaseInfo
|
||||
{
|
||||
Title = BuildReleaseTitle(baseTitle, tabNode),
|
||||
Guid = new Uri(GetReleaseGuid(url, tabNode)),
|
||||
Comments = uri,
|
||||
Link = GetReleaseLink(tabNode),
|
||||
PublishDate = date,
|
||||
Category = categories,
|
||||
DownloadVolumeFactor = 0,
|
||||
UploadVolumeFactor = 0,
|
||||
Size = GetReleaseSize(tabNode),
|
||||
Grabs = GetReleaseGrabs(tabNode),
|
||||
Description = GetReleaseDescription(tabNode),
|
||||
Seeders = seeders,
|
||||
Peers = GetReleaseLeechers(tabNode) + seeders,
|
||||
BannerUrl = bannerUrl
|
||||
};
|
||||
|
||||
releases.Add(release);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
OnParseError(result.Content, ex);
|
||||
}
|
||||
|
||||
return releases;
|
||||
}
|
||||
|
||||
private static string GetReleaseGuid(string url, IElement tabNode)
|
||||
{
|
||||
// Appending id to differentiate between different quality versions
|
||||
return QueryHelpers.AddQueryString(url, "id", GetTorrentId(tabNode));
|
||||
}
|
||||
|
||||
private static int GetReleaseLeechers(IElement tabNode)
|
||||
{
|
||||
const string LeechersSelector = ".list.down > .li_swing_m";
|
||||
|
||||
var leechersStr = tabNode.QuerySelector(LeechersSelector).Text();
|
||||
int.TryParse(leechersStr, out var leechers);
|
||||
return leechers;
|
||||
}
|
||||
|
||||
private static int GetReleaseSeeders(IElement tabNode)
|
||||
{
|
||||
const string SeedersSelector = ".list.down > .li_distribute_m";
|
||||
|
||||
var seedersStr = tabNode.QuerySelector(SeedersSelector).Text();
|
||||
int.TryParse(seedersStr, out var seeders);
|
||||
return seeders;
|
||||
}
|
||||
|
||||
private static string GetReleaseDescription(IElement tabNode)
|
||||
{
|
||||
const string DescriptionSelector = ".tech > pre";
|
||||
return tabNode.QuerySelector(DescriptionSelector)?.Text()?.Trim();
|
||||
}
|
||||
|
||||
private static long GetReleaseGrabs(IElement tabNode)
|
||||
{
|
||||
const string GrabsSelector = ".list.down > .li_download_m";
|
||||
|
||||
var grabsStr = tabNode.QuerySelector(GrabsSelector).Text();
|
||||
long.TryParse(grabsStr, out var grabs);
|
||||
return grabs;
|
||||
}
|
||||
|
||||
private static long GetReleaseSize(IElement tabNode)
|
||||
{
|
||||
const string SizeSelector = ".list.down > .red";
|
||||
|
||||
var sizeStr = tabNode.QuerySelector(SizeSelector).Text();
|
||||
return ReleaseInfo.GetBytes(sizeStr);
|
||||
}
|
||||
|
||||
private Uri GetReleaseLink(IElement tabNode) =>
|
||||
new Uri($"{SiteLink}engine/download.php?id={GetTorrentId(tabNode)}");
|
||||
|
||||
private static string GetTorrentId(IElement tabNode)
|
||||
{
|
||||
var nodeId = tabNode.Id;
|
||||
|
||||
// Format is "torrent_{id}_info"
|
||||
return nodeId
|
||||
.Replace("torrent_", string.Empty)
|
||||
.Replace("_info", string.Empty);
|
||||
}
|
||||
|
||||
private static string BuildReleaseTitle(string baseTitle, IElement tabNode)
|
||||
{
|
||||
var releaseNode = tabNode.ParentElement;
|
||||
var quality = GetQuality(releaseNode);
|
||||
|
||||
if (!quality.IsNullOrEmptyOrWhitespace())
|
||||
{
|
||||
return $"{baseTitle} [{quality}]";
|
||||
}
|
||||
|
||||
return baseTitle;
|
||||
}
|
||||
|
||||
private static string GetQuality(IElement releaseNode)
|
||||
{
|
||||
// For some releases there's no block with quality
|
||||
if (releaseNode.Id.IsNullOrEmptyOrWhitespace())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var quality = releaseNode.Id.Trim();
|
||||
switch (quality.ToLowerInvariant())
|
||||
{
|
||||
case "tv720": return "HDTV 720p";
|
||||
case "tv1080": return "HDTV 1080p";
|
||||
case "bd720": return "BDRip 720p";
|
||||
case "bd1080": return "BDRip 1080p";
|
||||
case "hwp": return "SDTV";
|
||||
default: return quality.ToUpperInvariant();
|
||||
}
|
||||
}
|
||||
|
||||
private Uri GetBannerUrl(string url, IElement content)
|
||||
{
|
||||
var bannerNode = content.QuerySelector(".poster_bg .poster img");
|
||||
var bannerSrc = bannerNode.GetAttribute("src");
|
||||
|
||||
if (Uri.TryCreate(bannerSrc, UriKind.Absolute, out var bannerUrl))
|
||||
{
|
||||
return bannerUrl;
|
||||
}
|
||||
|
||||
logger.Warn($"[AniDub] Banner URL couldn't be parsed on '{url}'. Banner node src: {bannerSrc}");
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private string GetBaseTitle(int[] categories, IElement content)
|
||||
{
|
||||
var domTitle = content.QuerySelector("#news-title");
|
||||
|
||||
var baseTitle = domTitle.Text().Trim();
|
||||
baseTitle = StripRussianTitle(baseTitle);
|
||||
baseTitle = FixBookInfo(baseTitle);
|
||||
|
||||
var isShow = categories.Contains(TorznabCatType.TVAnime.ID);
|
||||
|
||||
if (isShow)
|
||||
{
|
||||
baseTitle = FixShowTitle(baseTitle);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Just fix TV-\d to S\d and [\d+] to E\d
|
||||
baseTitle = FixSeasonInfo(baseTitle);
|
||||
baseTitle = FixEpisodeInfo(baseTitle);
|
||||
}
|
||||
|
||||
baseTitle = FixMovieInfo(baseTitle);
|
||||
|
||||
return baseTitle.Trim();
|
||||
}
|
||||
|
||||
private string FixShowTitle(string title)
|
||||
{
|
||||
var seasonNum = GetSeasonNum(title);
|
||||
|
||||
// Remove season info
|
||||
title = SeasonInfoRegex.Replace(title, string.Empty);
|
||||
|
||||
// Normalize for parsing usages
|
||||
// Should look like S01E01-E09
|
||||
return EpisodeInfoRegex.Replace(
|
||||
title,
|
||||
match => match.Success ? $"S{seasonNum:00}E01-E{match.Groups[1]}" : string.Empty
|
||||
);
|
||||
}
|
||||
|
||||
private int GetSeasonNum(string title)
|
||||
{
|
||||
// First season is often skipped so return 1 if nothing matched
|
||||
const int defaultSeason = 1;
|
||||
|
||||
var seasonMatch = SeasonInfoRegex.Match(title);
|
||||
|
||||
if (!seasonMatch.Success)
|
||||
{
|
||||
return defaultSeason;
|
||||
}
|
||||
|
||||
var seasonVal = seasonMatch.Groups[defaultSeason].Value;
|
||||
if (int.TryParse(seasonVal, out var seasonNum))
|
||||
{
|
||||
return seasonNum;
|
||||
}
|
||||
|
||||
return defaultSeason;
|
||||
}
|
||||
|
||||
private string StripRussianTitle(string title)
|
||||
{
|
||||
if (Configuration.StripRussianTitle.Value)
|
||||
{
|
||||
return StripRussianTitleRegex.Value.Replace(title, string.Empty);
|
||||
}
|
||||
|
||||
return title;
|
||||
}
|
||||
|
||||
private static string FixBookInfo(string title) =>
|
||||
title.Replace("[Главы ", "[");
|
||||
|
||||
private static string FixEpisodeInfo(string title) =>
|
||||
EpisodeInfoRegex.Replace(
|
||||
title,
|
||||
match => match.Success ? $"E01-E{match.Groups[1]}" : string.Empty
|
||||
);
|
||||
|
||||
private static string FixMovieInfo(string title) =>
|
||||
title.Replace(" [Movie]", string.Empty);
|
||||
|
||||
private static string FixSeasonInfo(string title) =>
|
||||
SeasonInfoRegex.Replace(
|
||||
title,
|
||||
match => match.Success ? $"S{int.Parse(match.Groups[1].Value):00}" : string.Empty
|
||||
);
|
||||
|
||||
private DateTime GetDateFromShowPage(string url, IElement content)
|
||||
{
|
||||
const string dateFormat = "d-MM-yyyy";
|
||||
const string dateTimeFormat = dateFormat + ", HH:mm";
|
||||
|
||||
// Would be better to use AssumeLocal and provide "ru-RU" culture,
|
||||
// but doesn't work cross-platform
|
||||
const DateTimeStyles style = DateTimeStyles.AssumeUniversal;
|
||||
|
||||
var culture = CultureInfo.InvariantCulture;
|
||||
|
||||
var dateText = GetDateFromDocument(content);
|
||||
|
||||
//Correct way but will not always work on cross-platform
|
||||
//var localTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time");
|
||||
//var nowLocal = TimeZoneInfo.ConvertTime(DateTime.UtcNow, localTimeZone);
|
||||
|
||||
// Russian Standard Time is +03:00, no DST
|
||||
const int russianStandardTimeDiff = 3;
|
||||
var nowLocal = DateTime.UtcNow.AddHours(russianStandardTimeDiff);
|
||||
|
||||
dateText = dateText
|
||||
.Replace("Вчера", nowLocal.AddDays(-1).ToString(dateFormat))
|
||||
.Replace("Сегодня", nowLocal.ToString(dateFormat));
|
||||
|
||||
if (DateTime.TryParseExact(dateText, dateTimeFormat, culture, style, out var date))
|
||||
{
|
||||
var utcDate = date.ToUniversalTime();
|
||||
return utcDate.AddHours(-russianStandardTimeDiff);
|
||||
}
|
||||
|
||||
logger.Warn($"[AniDub] Date time couldn't be parsed on '{url}'. Date text: {dateText}");
|
||||
|
||||
return DateTime.UtcNow;
|
||||
}
|
||||
|
||||
private static string GetDateFromDocument(IElement content)
|
||||
{
|
||||
const string DateSelector = ".story_inf > li:nth-child(2)";
|
||||
|
||||
var domDate = content.QuerySelector(DateSelector).LastChild;
|
||||
|
||||
if (domDate?.NodeName != "#text")
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
return domDate.NodeValue.Trim();
|
||||
}
|
||||
|
||||
private bool IsAuthorized(WebClientStringResult result) =>
|
||||
result.Content.Contains("index.php?action=logout");
|
||||
|
||||
private IEnumerable<int> ParseCategories(Uri showUri)
|
||||
{
|
||||
Dictionary<string, string> categoriesMap = CategoriesMap;
|
||||
|
||||
var path = showUri.AbsolutePath.ToLowerInvariant();
|
||||
|
||||
return categoriesMap
|
||||
.Where(categoryMap => path.StartsWith(categoryMap.Key))
|
||||
.Select(categoryMap => MapTrackerCatToNewznab(categoryMap.Value))
|
||||
.FirstOrDefault();
|
||||
}
|
||||
|
||||
private async Task<List<ReleaseInfo>> PerformSearch(TorznabQuery query)
|
||||
{
|
||||
const string searchLinkSelector = "#dle-content > .searchitem > h3 > a";
|
||||
|
||||
var releases = new List<ReleaseInfo>();
|
||||
|
||||
var response = await PostDataWithCookies(SearchUrl, PreparePostData(query));
|
||||
|
||||
try
|
||||
{
|
||||
var parser = new HtmlParser();
|
||||
var document = await parser.ParseDocumentAsync(response.Content);
|
||||
|
||||
foreach (var linkNode in document.QuerySelectorAll(searchLinkSelector))
|
||||
{
|
||||
var link = linkNode.GetAttribute("href");
|
||||
releases.AddRange(await FetchShowReleases(link));
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
OnParseError(response.Content, ex);
|
||||
}
|
||||
|
||||
return releases;
|
||||
}
|
||||
|
||||
private List<KeyValuePair<string, string>> PreparePostData(TorznabQuery query)
|
||||
{
|
||||
var data = new List<KeyValuePair<string, string>>
|
||||
{
|
||||
{ "do", "search" },
|
||||
{ "subaction", "search" },
|
||||
{ "search_start", "1" },
|
||||
{ "full_search", "1" },
|
||||
{ "result_from", "1" },
|
||||
{ "story", NormalizeSearchQuery(query)},
|
||||
{ "titleonly", "0" },
|
||||
{ "searchuser", "" },
|
||||
{ "replyless", "0" },
|
||||
{ "replylimit", "0" },
|
||||
{ "searchdate", "0" },
|
||||
{ "beforeafter", "after" },
|
||||
{ "sortby", "" },
|
||||
{ "resorder", "desc" },
|
||||
{ "showposts", "1" },
|
||||
};
|
||||
|
||||
data.AddRange(PrepareCategoriesQuery(query));
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
private IEnumerable<KeyValuePair<string, string>> PrepareCategoriesQuery(TorznabQuery query)
|
||||
{
|
||||
var categories = query.HasSpecifiedCategories
|
||||
? MapTorznabCapsToTrackers(query)
|
||||
: DefaultSearchCategories;
|
||||
|
||||
return categories.Select(
|
||||
category => new KeyValuePair<string, string>("catlist[]", category)
|
||||
);
|
||||
}
|
||||
|
||||
private static string NormalizeSearchQuery(TorznabQuery query)
|
||||
{
|
||||
var searchQuery = query.SanitizedSearchTerm;
|
||||
|
||||
// Convert S\dE\d to TV-{Season}
|
||||
// because of the convention on the tracker
|
||||
searchQuery = SeasonInfoQueryRegex.Replace(
|
||||
searchQuery,
|
||||
match => match.Success ? $"TV-{int.Parse(match.Groups[1].Value)}" : string.Empty
|
||||
);
|
||||
|
||||
if (query.Season > 0)
|
||||
{
|
||||
// Replace "TV- " with season from query
|
||||
searchQuery = SeasonInfoRegex.Replace(searchQuery, string.Empty);
|
||||
searchQuery += $" TV-{query.Season}";
|
||||
}
|
||||
|
||||
// Search is normalized with '+' instead of spaces
|
||||
return searchQuery.ToLowerInvariant().Replace(" ", "+");
|
||||
}
|
||||
}
|
||||
}
|
@@ -55,7 +55,7 @@ namespace Jackett.Common.Indexers
|
||||
Language = "pt-br";
|
||||
Type = "private";
|
||||
|
||||
TorznabCaps.SupportsImdbSearch = true;
|
||||
TorznabCaps.SupportsImdbMovieSearch = true;
|
||||
|
||||
AddCategoryMapping(14, TorznabCatType.TVAnime, "Anime");
|
||||
AddCategoryMapping(3, TorznabCatType.PC0day, "Aplicativos");
|
||||
|
@@ -293,9 +293,9 @@ namespace Jackett.Common.Indexers
|
||||
if (query.HasSpecifiedCategories)
|
||||
if (!caps.SupportsCategories(query.Categories))
|
||||
return false;
|
||||
if (caps.SupportsImdbSearch && query.IsImdbQuery)
|
||||
if (caps.SupportsImdbMovieSearch && query.IsImdbQuery)
|
||||
return true;
|
||||
else if (!caps.SupportsImdbSearch && query.IsImdbQuery && query.QueryType != "TorrentPotato") // potato query should always contain imdb+search term
|
||||
else if (!caps.SupportsImdbMovieSearch && query.IsImdbQuery && query.QueryType != "TorrentPotato") // potato query should always contain imdb+search term
|
||||
return false;
|
||||
if (caps.SearchAvailable && query.IsSearch)
|
||||
return true;
|
||||
@@ -307,7 +307,7 @@ namespace Jackett.Common.Indexers
|
||||
return true;
|
||||
if (caps.SupportsTVRageSearch && query.IsTVRageSearch)
|
||||
return true;
|
||||
if (caps.SupportsImdbSearch && query.IsImdbQuery)
|
||||
if (caps.SupportsImdbMovieSearch && query.IsImdbQuery)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
@@ -1,203 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using CsQuery;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Models.IndexerConfig;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
public class BeyondHD : BaseWebIndexer
|
||||
{
|
||||
private string SearchUrl { get { return SiteLink + "browse.php?searchin=descr&incldead=1&"; } }
|
||||
|
||||
private new ConfigurationDataLoginLink configData
|
||||
{
|
||||
get { return (ConfigurationDataLoginLink)base.configData; }
|
||||
set { base.configData = value; }
|
||||
}
|
||||
|
||||
public BeyondHD(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
|
||||
: base(name: "BeyondHD",
|
||||
description: "Without BeyondHD, your HDTV is just a TV",
|
||||
link: "https://beyond-hd.me/",
|
||||
caps: new TorznabCapabilities(),
|
||||
configService: configService,
|
||||
client: w,
|
||||
logger: l,
|
||||
p: ps,
|
||||
configData: new ConfigurationDataLoginLink())
|
||||
{
|
||||
Encoding = Encoding.UTF8;
|
||||
Language = "en-us";
|
||||
Type = "private";
|
||||
|
||||
configData.DisplayText.Value = "Go to the general tab of your BeyondHD user profile and create/copy the Login Link.";
|
||||
|
||||
TorznabCaps.SupportsImdbSearch = true;
|
||||
|
||||
AddCategoryMapping(37, TorznabCatType.MoviesBluRay, "Movie / Blu-ray");
|
||||
AddCategoryMapping(71, TorznabCatType.Movies3D, "Movie / 3D");
|
||||
AddCategoryMapping(83, TorznabCatType.Movies3D, "FraMeSToR 3D");
|
||||
|
||||
AddCategoryMapping(77, TorznabCatType.MoviesHD, "Movie / 1080p/i");
|
||||
AddCategoryMapping(102, TorznabCatType.MoviesUHD, "Movie / 4K Disk");
|
||||
AddCategoryMapping(94, TorznabCatType.MoviesUHD, "Movie / 4K Other");
|
||||
AddCategoryMapping(103, TorznabCatType.MoviesUHD, "Movie / 4K Remux");
|
||||
AddCategoryMapping(78, TorznabCatType.MoviesHD, "Movie / 720p");
|
||||
AddCategoryMapping(54, TorznabCatType.MoviesHD, "Movie / MP4");
|
||||
AddCategoryMapping(17, TorznabCatType.MoviesHD, "Movie / Remux");
|
||||
AddCategoryMapping(38, TorznabCatType.MoviesHD, "Movie / WEB-DL");
|
||||
AddCategoryMapping(106, TorznabCatType.MoviesHD, "Internal / BHDStudio 1080p");
|
||||
AddCategoryMapping(105, TorznabCatType.MoviesHD, "Internal / BHDStudio 720p");
|
||||
AddCategoryMapping(50, TorznabCatType.MoviesHD, "Internal / FraMeSToR 1080p");
|
||||
AddCategoryMapping(75, TorznabCatType.MoviesHD, "Internal / FraMeSToR 720p");
|
||||
AddCategoryMapping(49, TorznabCatType.MoviesHD, "Internal / FraMeSToR REMUX");
|
||||
AddCategoryMapping(101, TorznabCatType.MoviesHD, "Internal / FraMeSToR 4K REMUX");
|
||||
AddCategoryMapping(61, TorznabCatType.MoviesHD, "Internal / HDX REMUX");
|
||||
AddCategoryMapping(86, TorznabCatType.MoviesHD, "Internal / SC4R");
|
||||
AddCategoryMapping(95, TorznabCatType.MoviesHD, "Nightripper 1080p");
|
||||
AddCategoryMapping(96, TorznabCatType.MoviesHD, "Nightripper 720p");
|
||||
AddCategoryMapping(98, TorznabCatType.MoviesHD, "Nightripper MicroHD");
|
||||
|
||||
AddCategoryMapping(104, TorznabCatType.TVUHD, "TV Show / 4K");
|
||||
AddCategoryMapping(40, TorznabCatType.TVHD, "TV Show / Blu-ray");
|
||||
AddCategoryMapping(44, TorznabCatType.TVHD, "TV Show / Encodes");
|
||||
AddCategoryMapping(48, TorznabCatType.TVHD, "TV Show / HDTV");
|
||||
AddCategoryMapping(89, TorznabCatType.TVHD, "TV Show / Packs");
|
||||
AddCategoryMapping(46, TorznabCatType.TVHD, "TV Show / Remux");
|
||||
AddCategoryMapping(99, TorznabCatType.TVHD, "TV Show / Sports");
|
||||
AddCategoryMapping(100, TorznabCatType.TVHD, "TV Show / Sports / WEB-DL");
|
||||
AddCategoryMapping(45, TorznabCatType.TVHD, "TV Show / WEB-DL");
|
||||
AddCategoryMapping(97, TorznabCatType.TVHD, "Nightripper TV Show Encodes");
|
||||
|
||||
AddCategoryMapping(36, TorznabCatType.AudioLossless, "Music / Lossless");
|
||||
AddCategoryMapping(69, TorznabCatType.AudioMP3, "Music / MP3");
|
||||
AddCategoryMapping(55, TorznabCatType.AudioVideo, "Music / 1080p/i");
|
||||
AddCategoryMapping(56, TorznabCatType.AudioVideo, "Music / 720p");
|
||||
AddCategoryMapping(42, TorznabCatType.AudioVideo, "Music / Blu-ray");
|
||||
AddCategoryMapping(41, TorznabCatType.AudioVideo, "Music / Movie OST");
|
||||
}
|
||||
|
||||
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
|
||||
{
|
||||
LoadValuesFromJson(configJson);
|
||||
|
||||
var result = await RequestStringWithCookies(configData.LoginLink.Value);
|
||||
await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("Welcome Back"), () =>
|
||||
{
|
||||
var errorMessage = result.Content;
|
||||
throw new ExceptionWithConfigData(errorMessage, configData);
|
||||
});
|
||||
return IndexerConfigurationStatus.RequiresTesting;
|
||||
}
|
||||
|
||||
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
|
||||
{
|
||||
List<ReleaseInfo> releases = new List<ReleaseInfo>();
|
||||
Regex IMDBRegEx = new Regex(@"tt(\d+)", RegexOptions.Compiled);
|
||||
|
||||
var searchString = query.GetQueryString();
|
||||
var searchUrl = SearchUrl;
|
||||
var queryCollection = new NameValueCollection();
|
||||
var searchStringIsImdbQuery = (ParseUtil.GetImdbID(searchString) != null);
|
||||
|
||||
if (query.IsImdbQuery)
|
||||
{
|
||||
queryCollection.Add("search", query.ImdbID);
|
||||
}
|
||||
else if (searchStringIsImdbQuery)
|
||||
{
|
||||
queryCollection.Add("search", searchString);
|
||||
}
|
||||
else if (!string.IsNullOrWhiteSpace(searchString))
|
||||
{
|
||||
Regex ReplaceRegex = new Regex("[^a-zA-Z0-9]+");
|
||||
searchString = "%" + ReplaceRegex.Replace(searchString, "%") + "%";
|
||||
searchString = Regex.Replace(searchString, @"(%\d{3,4})[ip](%)", "$1$2"); // remove i/p from resolution tags (see #835)
|
||||
queryCollection.Add("search", searchString);
|
||||
}
|
||||
|
||||
foreach (var cat in MapTorznabCapsToTrackers(query))
|
||||
{
|
||||
queryCollection.Add("c" + cat, "1");
|
||||
}
|
||||
|
||||
searchUrl += queryCollection.GetQueryString();
|
||||
|
||||
var results = await RequestStringWithCookiesAndRetry(searchUrl);
|
||||
await FollowIfRedirect(results);
|
||||
try
|
||||
{
|
||||
CQ dom = results.Content;
|
||||
var rows = dom["table.torrenttable > tbody > tr.browse_color, table.torrenttable > tbody > tr.highlight"];
|
||||
foreach (var row in rows)
|
||||
{
|
||||
var release = new ReleaseInfo();
|
||||
release.MinimumRatio = 1;
|
||||
release.MinimumSeedTime = 172800;
|
||||
|
||||
var qRow = row.Cq();
|
||||
|
||||
var catStr = row.ChildElements.ElementAt(0).FirstElementChild.GetAttribute("href").Split('=')[1];
|
||||
release.Category = MapTrackerCatToNewznab(catStr);
|
||||
|
||||
var qLink = row.ChildElements.ElementAt(2).FirstChild.Cq();
|
||||
release.Link = new Uri(SiteLink + qLink.Attr("href"));
|
||||
var torrentId = qLink.Attr("href").Split('=').Last();
|
||||
|
||||
var descCol = row.ChildElements.ElementAt(3);
|
||||
var qCommentLink = descCol.FirstChild.Cq();
|
||||
release.Title = qCommentLink.Text();
|
||||
if (!query.IsImdbQuery && !query.MatchQueryStringAND(release.Title))
|
||||
continue;
|
||||
release.Comments = new Uri(SiteLink + qCommentLink.Attr("href"));
|
||||
release.Guid = release.Comments;
|
||||
release.Link = new Uri($"{SiteLink}download.php?torrent={torrentId}");
|
||||
|
||||
var dateStr = descCol.ChildElements.Last().Cq().Text().Split('|').Last().ToLowerInvariant().Replace("ago.", "").Trim();
|
||||
release.PublishDate = DateTimeUtil.FromTimeAgo(dateStr);
|
||||
|
||||
var sizeStr = row.ChildElements.ElementAt(7).Cq().Text();
|
||||
release.Size = ReleaseInfo.GetBytes(sizeStr);
|
||||
|
||||
release.Seeders = ParseUtil.CoerceInt(row.ChildElements.ElementAt(9).Cq().Text());
|
||||
release.Peers = ParseUtil.CoerceInt(row.ChildElements.ElementAt(10).Cq().Text()) + release.Seeders;
|
||||
|
||||
var files = qRow.Find("td:nth-child(6)").Text();
|
||||
release.Files = ParseUtil.CoerceInt(files);
|
||||
|
||||
var grabs = qRow.Find("td:nth-child(9) > a").Get(0).FirstChild.ToString();
|
||||
release.Grabs = ParseUtil.CoerceInt(grabs);
|
||||
|
||||
var imdbLink = qRow.Find("a[href*=\"imdb.com/title/\"]").Attr("href");
|
||||
if (imdbLink != null)
|
||||
{
|
||||
var IMDBMatch = IMDBRegEx.Match(imdbLink);
|
||||
release.Imdb = ParseUtil.CoerceLong(IMDBMatch.Groups[1].Value);
|
||||
}
|
||||
|
||||
release.DownloadVolumeFactor = 0;
|
||||
release.UploadVolumeFactor = 1;
|
||||
|
||||
releases.Add(release);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
OnParseError(results.Content, ex);
|
||||
}
|
||||
|
||||
return releases;
|
||||
}
|
||||
}
|
||||
}
|
@@ -41,7 +41,7 @@ namespace Jackett.Common.Indexers
|
||||
Language = "en-us";
|
||||
Type = "private";
|
||||
|
||||
TorznabCaps.SupportsImdbSearch = true;
|
||||
TorznabCaps.SupportsImdbMovieSearch = true;
|
||||
|
||||
AddCategoryMapping(1, TorznabCatType.MoviesDVD, "Movies/DVDR");
|
||||
AddCategoryMapping(2, TorznabCatType.MoviesSD, "Movies/XviD");
|
||||
|
@@ -22,7 +22,7 @@ namespace Jackett.Common.Indexers
|
||||
{
|
||||
Language = "pt-br";
|
||||
Type = "private";
|
||||
TorznabCaps.SupportsImdbSearch = false; // they store the imdb ID but it's not included in the results, search is also not available.
|
||||
TorznabCaps.SupportsImdbMovieSearch = false; // they store the imdb ID but it's not included in the results, search is also not available.
|
||||
TorznabCaps.SupportedMusicSearchParamsList = new List<string>() { "q", "album", "artist", "label", "year" };
|
||||
|
||||
AddCategoryMapping(1, TorznabCatType.Movies, "Filmes");
|
||||
|
@@ -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()));
|
||||
|
@@ -92,7 +92,7 @@ namespace Jackett.Common.Indexers
|
||||
Type = Definition.Type;
|
||||
TorznabCaps = new TorznabCapabilities();
|
||||
|
||||
TorznabCaps.SupportsImdbSearch = Definition.Caps.Modes.Where(c => c.Key == "movie-search" && c.Value.Contains("imdbid")).Any();
|
||||
TorznabCaps.SupportsImdbMovieSearch = Definition.Caps.Modes.Where(c => c.Key == "movie-search" && c.Value.Contains("imdbid")).Any();
|
||||
if (Definition.Caps.Modes.ContainsKey("music-search"))
|
||||
TorznabCaps.SupportedMusicSearchParamsList = Definition.Caps.Modes["music-search"];
|
||||
|
||||
@@ -788,8 +788,9 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
var hasCaptcha = false;
|
||||
|
||||
var CloudFlareCaptchaChallenge = landingResultDocument.QuerySelector("script[src*=\"/recaptcha/api.js\"]");
|
||||
var grecaptcha = landingResultDocument.QuerySelector(".g-recaptcha");
|
||||
if (grecaptcha != null)
|
||||
if (CloudFlareCaptchaChallenge != null && grecaptcha != null)
|
||||
{
|
||||
hasCaptcha = true;
|
||||
var CaptchaItem = new RecaptchaItem();
|
||||
@@ -1108,9 +1109,9 @@ namespace Jackett.Common.Indexers
|
||||
variables[".Query.Season"] = query.Season;
|
||||
variables[".Query.Movie"] = null;
|
||||
variables[".Query.Year"] = query.Year.ToString();
|
||||
variables[".Query.Limit"] = query.Limit;
|
||||
variables[".Query.Offset"] = query.Offset;
|
||||
variables[".Query.Extended"] = query.Extended;
|
||||
variables[".Query.Limit"] = query.Limit.ToString();
|
||||
variables[".Query.Offset"] = query.Offset.ToString();
|
||||
variables[".Query.Extended"] = query.Extended.ToString();
|
||||
variables[".Query.Categories"] = query.Categories;
|
||||
variables[".Query.APIKey"] = query.ApiKey;
|
||||
variables[".Query.TVDBID"] = null;
|
||||
@@ -1494,7 +1495,7 @@ namespace Jackett.Common.Indexers
|
||||
if (Filter.Args != null)
|
||||
CharacterLimit = int.Parse(Filter.Args);
|
||||
|
||||
if (query.ImdbID != null && TorznabCaps.SupportsImdbSearch)
|
||||
if (query.ImdbID != null && TorznabCaps.SupportsImdbMovieSearch)
|
||||
break; // skip andmatch filter for imdb searches
|
||||
|
||||
if (!query.MatchQueryStringAND(release.Title, CharacterLimit))
|
||||
|
@@ -210,7 +210,7 @@ namespace Jackett.Common.Indexers
|
||||
var qRow = row.Cq();
|
||||
release.Title = qRow.Find("td:nth-child(2) > a").First().Text().Trim();
|
||||
|
||||
if ((query.ImdbID == null || !TorznabCaps.SupportsImdbSearch) && !query.MatchQueryStringAND(release.Title))
|
||||
if ((query.ImdbID == null || !TorznabCaps.SupportsImdbMovieSearch) && !query.MatchQueryStringAND(release.Title))
|
||||
continue;
|
||||
|
||||
release.Guid = new Uri(SiteLink + qRow.Find("td:nth-child(2) > a").First().Attr("href"));
|
||||
|
@@ -25,10 +25,6 @@ namespace Jackett.Common.Indexers
|
||||
{ get { return SiteLink + "browse.php"; } }
|
||||
private bool TorrentHTTPSMode => configData.TorrentHTTPSMode.Value;
|
||||
|
||||
private static readonly string[] certificateHashs = new string[] {
|
||||
"4482711D19A95CDE01D7958E5F1295E05BCA335D", // Let's Encrypt Authority X3
|
||||
};
|
||||
|
||||
private new ConfigurationDataEliteTracker configData
|
||||
{
|
||||
get { return (ConfigurationDataEliteTracker)base.configData; }
|
||||
@@ -54,6 +50,10 @@ namespace Jackett.Common.Indexers
|
||||
AddCategoryMapping(63, TorznabCatType.TVAnime, "Animes DVD");
|
||||
AddCategoryMapping(56, TorznabCatType.TVAnime, "Animes HD");
|
||||
AddCategoryMapping(59, TorznabCatType.TVAnime, "Animes Serie");
|
||||
AddCategoryMapping(89, TorznabCatType.TVAnime, "Animes HDLight");
|
||||
AddCategoryMapping(87, TorznabCatType.TVAnime, "Animes Pack");
|
||||
AddCategoryMapping(88, TorznabCatType.TVAnime, "Animes SD");
|
||||
AddCategoryMapping(90, TorznabCatType.TVAnime, "Animes 3D");
|
||||
|
||||
AddCategoryMapping(3, TorznabCatType.PC0day, "APPLICATION");
|
||||
AddCategoryMapping(74, TorznabCatType.PCPhoneAndroid, "ANDROID");
|
||||
@@ -65,6 +65,7 @@ namespace Jackett.Common.Indexers
|
||||
AddCategoryMapping(38, TorznabCatType.TVDocumentary, "DOCUMENTAIRES");
|
||||
|
||||
AddCategoryMapping(34, TorznabCatType.Books, "EBOOKS");
|
||||
AddCategoryMapping(86, TorznabCatType.Books, "ABOOKS");
|
||||
|
||||
AddCategoryMapping(7, TorznabCatType.Movies, "FILMS");
|
||||
AddCategoryMapping(11, TorznabCatType.MoviesDVD, "DVD");
|
||||
@@ -78,10 +79,12 @@ namespace Jackett.Common.Indexers
|
||||
AddCategoryMapping(51, TorznabCatType.MoviesHD, "1080P");
|
||||
AddCategoryMapping(70, TorznabCatType.Movies3D, "3D");
|
||||
AddCategoryMapping(50, TorznabCatType.MoviesHD, "720P");
|
||||
AddCategoryMapping(84, TorznabCatType.MoviesHD, "4K");
|
||||
AddCategoryMapping(84, TorznabCatType.MoviesUHD, "4K");
|
||||
AddCategoryMapping(49, TorznabCatType.MoviesBluRay, "BluRay");
|
||||
AddCategoryMapping(78, TorznabCatType.MoviesHD, "M - HD");
|
||||
AddCategoryMapping(78, TorznabCatType.MoviesHD, "HDLight");
|
||||
AddCategoryMapping(85, TorznabCatType.MoviesHD, "x265");
|
||||
AddCategoryMapping(91, TorznabCatType.Movies3D, "3D");
|
||||
AddCategoryMapping(95, TorznabCatType.Movies, "VOSTFR");
|
||||
|
||||
AddCategoryMapping(15, TorznabCatType.Console, "JEUX VIDEO");
|
||||
AddCategoryMapping(76, TorznabCatType.Console3DS, "3DS");
|
||||
@@ -103,6 +106,7 @@ namespace Jackett.Common.Indexers
|
||||
AddCategoryMapping(44, TorznabCatType.ConsoleXbox360, "XBOX360.E");
|
||||
AddCategoryMapping(54, TorznabCatType.ConsoleXbox360, "XBOX360.JTAG");
|
||||
AddCategoryMapping(43, TorznabCatType.ConsoleXbox360, "XBOX360.NTSC");
|
||||
AddCategoryMapping(96, TorznabCatType.Console, "NSW");
|
||||
|
||||
AddCategoryMapping(23, TorznabCatType.Audio, "MUSIQUES");
|
||||
AddCategoryMapping(26, TorznabCatType.Audio, "CLIP/CONCERT");
|
||||
@@ -110,14 +114,17 @@ namespace Jackett.Common.Indexers
|
||||
AddCategoryMapping(60, TorznabCatType.AudioMP3, "MP3");
|
||||
|
||||
AddCategoryMapping(30, TorznabCatType.TV, "SERIES");
|
||||
AddCategoryMapping(73, TorznabCatType.TV, "Pack TV");
|
||||
AddCategoryMapping(31, TorznabCatType.TV, "Series FR");
|
||||
AddCategoryMapping(32, TorznabCatType.TV, "Series VO");
|
||||
AddCategoryMapping(33, TorznabCatType.TV, "Series VO-STFR");
|
||||
AddCategoryMapping(77, TorznabCatType.TVSD, "Series.DVD");
|
||||
AddCategoryMapping(67, TorznabCatType.TVHD, "Series.FR.HD");
|
||||
AddCategoryMapping(68, TorznabCatType.TVHD, "Series.VO.HD");
|
||||
AddCategoryMapping(69, TorznabCatType.TVHD, "Series.VOSTFR.HD");
|
||||
AddCategoryMapping(73, TorznabCatType.TVSD, "Series Pack FR SD");
|
||||
AddCategoryMapping(92, TorznabCatType.TVHD, "Series Pack FR HD");
|
||||
AddCategoryMapping(93, TorznabCatType.TVSD, "Series Pack VOSTFR SD");
|
||||
AddCategoryMapping(94, TorznabCatType.TVHD, "Series Pack VOSTFR HD");
|
||||
AddCategoryMapping(31, TorznabCatType.TVSD, "Series FR SD");
|
||||
AddCategoryMapping(32, TorznabCatType.TVSD, "Series VO SD");
|
||||
AddCategoryMapping(33, TorznabCatType.TVSD, "Series VOSTFR SD");
|
||||
AddCategoryMapping(77, TorznabCatType.TVSD, "Series DVD");
|
||||
AddCategoryMapping(67, TorznabCatType.TVHD, "Series.FR HD");
|
||||
AddCategoryMapping(68, TorznabCatType.TVHD, "Series VO HD");
|
||||
AddCategoryMapping(69, TorznabCatType.TVHD, "Series VOSTFR HD");
|
||||
|
||||
AddCategoryMapping(47, TorznabCatType.TV, "SPECTACLES/EMISSIONS");
|
||||
AddCategoryMapping(71, TorznabCatType.TV, "Emissions");
|
||||
@@ -128,10 +135,6 @@ namespace Jackett.Common.Indexers
|
||||
AddCategoryMapping(65, TorznabCatType.TVSport, "UFC");
|
||||
|
||||
AddCategoryMapping(37, TorznabCatType.XXX, "XXX");
|
||||
|
||||
foreach (var certificateHash in certificateHashs)
|
||||
webclient.AddTrustedCertificate(new Uri(SiteLink).Host, certificateHash);
|
||||
|
||||
}
|
||||
|
||||
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
|
||||
@@ -273,7 +276,7 @@ namespace Jackett.Common.Indexers
|
||||
}
|
||||
else
|
||||
{
|
||||
release.PublishDate = DateTime.ParseExact(added.TextContent.Trim(), "dd.M.yyyy HH:mm", CultureInfo.InvariantCulture);
|
||||
release.PublishDate = DateTime.ParseExact(added.TextContent.Trim(), "dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture);
|
||||
lastDate = release.PublishDate;
|
||||
}
|
||||
|
||||
|
@@ -31,7 +31,7 @@ namespace Jackett.Common.Indexers.Feeds
|
||||
SearchAvailable = true,
|
||||
TVSearchAvailable = false,
|
||||
MovieSearchAvailable = false,
|
||||
SupportsImdbSearch = false,
|
||||
SupportsImdbMovieSearch = false,
|
||||
SupportsTVRageSearch = false
|
||||
};
|
||||
|
||||
|
@@ -47,7 +47,7 @@ namespace Jackett.Common.Indexers
|
||||
Language = "ro-ro";
|
||||
Type = "private";
|
||||
|
||||
TorznabCaps.SupportsImdbSearch = true;
|
||||
TorznabCaps.SupportsImdbMovieSearch = true;
|
||||
|
||||
AddCategoryMapping(24, TorznabCatType.TVAnime, "Anime");
|
||||
AddCategoryMapping(11, TorznabCatType.Audio, "Audio");
|
||||
@@ -120,8 +120,8 @@ namespace Jackett.Common.Indexers
|
||||
}
|
||||
|
||||
queryCollection.Add("cat", cat);
|
||||
queryCollection.Add("searchin", "0");
|
||||
queryCollection.Add("sort", "0");
|
||||
queryCollection.Add("searchin", "1");
|
||||
queryCollection.Add("sort", "2");
|
||||
|
||||
searchUrl += "?" + queryCollection.GetQueryString();
|
||||
|
||||
|
@@ -46,7 +46,7 @@ namespace Jackett.Common.Indexers
|
||||
Encoding = Encoding.GetEncoding("windows-1255");
|
||||
Language = "he-il";
|
||||
Type = "private";
|
||||
TorznabCaps.SupportsImdbSearch = true;
|
||||
TorznabCaps.SupportsImdbMovieSearch = true;
|
||||
TorznabCaps.Categories.Clear();
|
||||
|
||||
// סרטים
|
||||
|
@@ -298,7 +298,7 @@ namespace Jackett.Common.Indexers
|
||||
release.Title = release.Title.Replace(", Neutral Leech!", "");
|
||||
|
||||
if (stickyGroup) // AND match for sticky releases
|
||||
if ((query.ImdbID == null || !TorznabCaps.SupportsImdbSearch) && !query.MatchQueryStringAND(release.Title))
|
||||
if ((query.ImdbID == null || !TorznabCaps.SupportsImdbMovieSearch) && !query.MatchQueryStringAND(release.Title))
|
||||
continue;
|
||||
|
||||
var Size = qSize.TextContent;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user