Compare commits

...

56 Commits

Author SHA1 Message Date
Garfield69
363d08634a puntotorrent: update categories. resolves #5042 2019-04-08 10:59:12 +12:00
Garfield69
2b503e01a1 amigosshare: adjustments resolves #5004
add banner
fix a category
2019-04-07 16:41:27 +12:00
Garfield69
a838dbcb6c xktorrent: categories
and other assorted selectors
2019-04-07 09:53:51 +12:00
Garfield69
16f96e0419 avg: update category selector
and date processing
2019-04-07 08:44:33 +12:00
Garfield69
5fe974afad asiancinema: updates for unit3d 1.9.2 2019-04-07 08:26:05 +12:00
Garfield69
593bbb37d3 dxdhd: updates for unti3d 1.9.2
plus add / amend categories
2019-04-07 08:11:27 +12:00
ThomasClemenceau
c9fbc7268b cpasbien, cpasbienclone, gktorrent, torrent9, torrent9clone: fix title with MULTI language. (#5031)
The MULTI was before the year so it was not supported by Radarr,Couchpotato etc..
2019-04-06 10:43:51 +13:00
Garfield69
a32ad215cd add SoundPark a semi-private russian site for music. #5022
downloading is untested.
the site has an aggressive advert method and the dl link is only available ad-free to members or vip
a newbie like me has to wait 1 week before becoming a member
meanwhile the dl link redirects to ads randomly :-(
2019-04-06 10:06:35 +13:00
Garfield69
34509d284f torrent9clone: new domain wwv.*.vg 2019-04-06 08:48:45 +13:00
Garfield69
2ca7975d3d cpasbien, cpasbienclone, gktorrent, torrent9, torrent9clone: fix title. resolves #5027 2019-04-06 07:52:28 +13:00
Garfield69
e8dbaa4a8e lesaloon: add capcha. resolves #5026 2019-04-05 15:59:40 +13:00
Garfield69
a6fd4c3da1 cpasbeinclone: update for recent html changes 2019-04-04 09:44:21 +13:00
Garfield69
1b3365d8ad spacetorrent: drop redundant French date replacements 2019-04-04 09:17:45 +13:00
Garfield69
a822b3c4f4 tigers-dl: support multi languages for dates
and date selector
and fix grabs when ---
2019-04-04 08:59:26 +13:00
Garfield69
ff663cc202 arenabg: download link for .torrent has changed. #5013 2019-04-03 08:12:03 +13:00
kaso17
4c3dbb4746 TCCF: remove inv flag 2019-04-02 16:55:39 +02:00
kaso17
a4ba0d21d9 HTTPClients: avoid Exception User-Unhandled notices 2019-04-02 15:39:14 +02:00
Garfield69
859da99442 yggtorrent: optionally disable sonarrv3hack. resolves #4987 2019-04-02 11:21:49 +13:00
Garfield69
1cbeb74c8e sharewood: correct results sort. resolves #5006 2019-04-02 08:05:40 +13:00
Garfield69
4ae705eb15 elitetorrentbiz: new domain .io resolves #5008 2019-04-02 07:18:46 +13:00
flightlevel
b469c2e764 Fix proxy javascript error 2019-04-01 19:40:35 +11:00
flightlevel
2712ff432b Revert "Revert "Revert "Revert "Add proxy warning to dashboard""""
This reverts commit 5d21a69b07.
2019-04-01 19:24:49 +11:00
Garfield69
9da64d5bbf amigosshare: search page changes. resolves #5004
Also the logout link has gone!!!
2019-04-01 17:32:49 +13:00
Garfield69
5d21a69b07 Revert "Revert "Revert "Add proxy warning to dashboard"""
This reverts commit a083090b5e.
2019-04-01 17:30:53 +13:00
Garfield69
a083090b5e Revert "Revert "Add proxy warning to dashboard""
This reverts commit 27ae1b3e82.
2019-04-01 15:45:32 +13:00
Garfield69
27ae1b3e82 Revert "Add proxy warning to dashboard"
This reverts commit b3d2ad94a7.
2019-04-01 12:49:07 +13:00
Garfield69
f0245900e4 Revert "custom.js: prevent null.trim error resolves #5000"
This reverts commit a61991fcdb.
2019-04-01 12:49:03 +13:00
Garfield69
4ea6ce6cc2 gktorrent: they are back onto .net domain 2019-04-01 10:59:00 +13:00
Garfield69
f905e44b09 racingforeveryone: updates for unit3d 1.9.2 2019-04-01 10:44:14 +13:00
Jorman
fa1ee57072 ilcorsaronero: update multi-page searching (#5001) 2019-04-01 09:50:34 +13:00
Jorman
da56368720 monova: date and size selector updates plus up to 5 page fetch (#5002)
Sometimes I got some error from monova, like date, size
So I update these field and I added the search and rss sync up to page 5
2019-04-01 09:06:00 +13:00
Garfield69
a61991fcdb custom.js: prevent null.trim error resolves #5000 2019-04-01 08:35:22 +13:00
WSHaRK993
8051e87d2a README: Jackett binary is now named jackett instead of JackettConsole (Linux/macOS) (#4995)
plus other cosmetic amendments
2019-04-01 08:29:31 +13:00
WSHaRK993
a0eb39f87b hdforever: Freeleech tag fix & token option (#4994) resolves #4979 2019-04-01 07:32:40 +13:00
flightlevel
b3d2ad94a7 Add proxy warning to dashboard 2019-03-31 11:50:32 +11:00
Garfield69
a6154898ed amigosshare: add info about torrent list. #4988 2019-03-30 16:34:37 +13:00
Garfield69
9b39e1c3c2 scenetime: add freeleech filter. resolves #4983 2019-03-29 16:32:35 +13:00
Garfield69
656702cde7 blutopia: changes for unit3d 1.9.2 2019-03-29 14:43:07 +13:00
Garfield69
34114c23fc channelx: updates for unit3d 1.9.2 #4924 2019-03-29 08:48:38 +13:00
Garfield69
31c629c862 Update no_information_provided.md 2019-03-29 07:25:01 +13:00
flightlevel
be34f78be0 Remove Mono from macOS instructions 2019-03-28 20:25:33 +11:00
flightlevel
219d9548a1 macOS no longer requires Mono 2019-03-28 20:23:45 +11:00
morpheus133
88a24cad1e bithumen: PublishDate to torrents from current year was handled wrongly. (#4978) 2019-03-28 09:10:52 +13:00
Garfield69
a86e1e82f2 avg: add language support for Russian and Ukranian. #4969 2019-03-28 08:54:34 +13:00
Garfield69
747394fce7 add peers.fm a private Russian tracker. Resolves #4969 2019-03-27 13:22:42 +13:00
Garfield69
09229dcf29 add avg a private Russian Games site. #4969 2019-03-27 10:41:51 +13:00
Garfield69
5afc1a1c9a torrentsectorcrew: add info about classic layout 2019-03-26 19:27:09 +13:00
Garfield69
505948b69a add tigers-dl a French Private tracker. #4961
yet to find volumefactors
2019-03-26 16:05:58 +13:00
kaso17
68e72e41cf Psytorrents: update certificate 2019-03-25 17:14:45 +01:00
kaso17
573ba5b41f BJShare: ad re-login 2019-03-25 17:14:34 +01:00
kaso17
dfd1ec375b Torrent Sector Crew: fix indexer 2019-03-25 16:56:06 +01:00
kaso17
3fa0b76b59 remove BTF invite flag 2019-03-25 15:30:21 +01:00
kaso17
c830a59d58 ImmortalSeed: fix indexer 2019-03-25 15:27:25 +01:00
kaso17
d05767fd3b Bittorrentfiles: fix links 2019-03-25 15:07:12 +01:00
flightlevel
08ab66a447 Package update 2019-03-25 19:27:28 +11:00
flightlevel
6ee45ec0b2 Updater: Don't remove jackett.dll
#4948
2019-03-25 19:22:08 +11:00
47 changed files with 1319 additions and 363 deletions

View File

@@ -5,5 +5,5 @@ You've created an issue, but haven't provided any details to allow the community
Provide a description of the feature request or bug, the more details the better.
If you are experiencing an issue with a tracker, a **full enhanced log must be included**. Instructions for obtaining logs are here: https://github.com/Jackett/Jackett#troubleshooting
**Jackett version**:
**Mono version** (if not using Windows):
(At the bottom of your Jackett Dashboard page) **Jackett version**:
(if you installed using Jackett.Binaries.Mono.tar.gz) **Mono version**:

View File

@@ -16,9 +16,9 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
#### Supported Systems
* Windows using .NET 4.6.1 or above [Download here](https://www.microsoft.com/net/framework/versions/net461).
* Linux
* macOS using Mono 5.8 or above. [Download here](http://www.mono-project.com/download/).
* Windows 7SP1 or greater using .NET 4.6.1 or above [Download here](https://www.microsoft.com/net/framework/versions/net461)
* Linux ([supported operating systems here](https://github.com/dotnet/core/blob/master/release-notes/2.1/2.1-supported-os.md))
* macOS 10.12 or greater
### Supported Public Trackers
* 1337x
@@ -107,6 +107,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* RuTracker
* Sharewood
* SkTorrent
* SoundPark
* Union Fansub
* Vanila
* XtreMeZone (MYXZ)
@@ -134,6 +135,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* Audiobook Torrents (ABT)
* AudioNews (AN)
* Awesome-HD (AHD)
* AVG (Audio Video Games)
* Avistaz (AsiaTorrents)
* B2S-Share
* Back-ups
@@ -151,7 +153,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* BitMeTV
* BitsPiracy
* Bitspyder
* BitTorrentFiles [![(invite needed)][inviteneeded]](#)
* BitTorrentFiles
* BitTurk
* BJ-Share (BJ)
* BlueBird
@@ -271,6 +273,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* P2PBG
* Passione Torrent <!-- maintained by bonny1992 -->
* PassThePopcorn (PTP)
* Peers.FM
* PiratBit
* PirateTheNet (PTN)
* PiXELHD (PxHD)
@@ -328,12 +331,13 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* The Show
* The-Torrents
* The Vault
* Tigers-dl
* Torrent Network (TN)
* Torrent Sector Crew (TSC)
* Torrent.LT
* TorrentBD
* TorrentBytes (TBy)
* TorrentCCF (TCCF) [![(invite needed)][inviteneeded]](#)
* TorrentCCF (TCCF)
* TorrentDay (TD)
* Torrentech (TTH)
* TorrentHeaven
@@ -388,8 +392,8 @@ Using the all indexer has no advantages (besides reduced management overhead), o
To get all Jackett indexers including their capabilities you can use `t=indexers` on the all indexer. To get only configured/unconfigured indexers you can also add `configured=true/false` as query parameter.
## Installation on Windows
## Installation on Windows
We recommend you install Jackett as a Windows service using the supplied installer. You may also download the zipped version if you would like to configure everything manually.
To get started with using the installer for Jackett, follow the steps below:
@@ -405,20 +409,30 @@ When installed as a service the tray icon acts as a way to open/start/stop Jacke
Jackett can also be run from the command line if you would like to see log messages (Ensure the server isn't already running from the tray/service). This can be done by using "JackettConsole.exe" (for Command Prompt), found in the Jackett data folder: "%ProgramData%\Jackett".
## Install on Linux (AMDx64)
1. 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`
2. (Optional) 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`.
## Install on Linux (AMDx64)
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`.
### 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`
### home directory
If you want to run it with a user without a /home directory you need to add `Environment=XDG_CONFIG_HOME=/path/to/folder` to your systemd file, this folder will be used to store your config files.
## Install on Linux (ARMv7 or above)
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) and run Jackett with the command `./jackett`
2. (Optional) 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`.
## Install on Linux (ARMv7 or above)
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`.
### 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`
### home directory
If you want to run it with a user without a /home directory you need to add `Environment=XDG_CONFIG_HOME=/path/to/folder` to your systemd file, this folder will be used to store your config files.
@@ -437,35 +451,39 @@ If you want to run it with a user without a /home directory you need to add `Env
Mono must be compiled with the Roslyn compiler (default), using MCS will cause "An error has occurred." errors (See https://github.com/Jackett/Jackett/issues/2704).
### Installation on Linux via Ansible
On a RHEL/Centos 7 system: [linuxhq.jackett](https://galaxy.ansible.com/linuxhq/jackett)
On an Ubuntu 16 system: [chrisjohnson00.jackett](https://galaxy.ansible.com/chrisjohnson00/jackett)
## Installation on macOS
### Prerequisites
Install [Mono 5.8](http://www.mono-project.com/download/#download-mac) or better (using the latest pkg installer is recommended).
* Setup ssl support by running `curl -sS https://curl.haxx.se/ca/cacert.pem | cert-sync --user /dev/stdin`
macOS 10.12 or greater
### Install as service
1. Download and extract the latest `Jackett.Binaries.Mono.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases).
2. Open the extracted folder and double-click on `install_service_macos_mono`.
1. Download and extract the latest `Jackett.Binaries.macOS.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases).
2. Open the extracted folder and double-click on `install_service_macos`.
3. If the installation was a success, you can close the Terminal window.
The service will start on each logon. You can always stop it by running `launchctl unload ~/Library/LaunchAgents/org.user.Jackett.plist` from Terminal. You can start it again it using `launchctl load ~/Library/LaunchAgents/org.user.Jackett.plist`.
Logs are stored as usual under `~/.config/Jackett/log.txt`.
### Run without installing as a service
Download and extract the latest `Jackett.Binaries.Mono.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases) and run Jackett using mono with the command `mono --debug JackettConsole.exe`.
Download and extract the latest `Jackett.Binaries.macOS.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases) and run Jackett with the command `./jackett`.
## Installation using Docker
Detailed instructions are available at [LinuxServer.io Jackett Docker](https://hub.docker.com/r/linuxserver/jackett/). The Jackett Docker is highly recommended, especially if you are having Mono stability issues or having issues running Mono on your system eg. QNAP, Synology. Thanks to [LinuxServer.io](https://linuxserver.io)
## Installation on Synology
Jackett is available as beta package from [SynoCommunity](https://synocommunity.com/)
## Running Jackett behind a reverse proxy
When running jackett behind a reverse proxy make sure that the original hostname of the request is passed to Jackett. If HTTPS is used also set the X-Forwarded-Proto header to "https". Don't forget to adjust the "Base Path Override" Jackett option accordingly.
@@ -558,7 +576,7 @@ cd Jackett/src
# dotnet core version
dotnet publish Jackett.Server -f netcoreapp2.2 --self-contained -r osx-x64 -c Debug # takes care of everything
./Jackett.Server/bin/Debug/netcoreapp2.2/osx-x64/JackettConsole # run jackett
./Jackett.Server/bin/Debug/netcoreapp2.2/osx-x64/jackett # run jackett
```
### Linux
@@ -571,14 +589,8 @@ cd Jackett/src
# dotnet core version
dotnet publish Jackett.Server -f netcoreapp2.2 --self-contained -r linux-x64 -c Debug # takes care of everything
./Jackett.Server/bin/Debug/netcoreapp2.2/linux-x64/JackettConsole # run jackett
./Jackett.Server/bin/Debug/netcoreapp2.2/linux-x64/jackett # run jackett
```
<!--
# mono version (currently broken)
nuget restore Jackett.sln # prepare dependencies
msbuild Jackett.Server/Jackett.Server.csproj /t:Build /p:Configuration=Debug # compile
mono Jackett.Server/bin/Debug/JackettServer.exe # run jackett
-->
## Screenshots

View File

@@ -270,6 +270,11 @@ table td.fit{
text-align: right;
margin-right: 1em;
}
input#searchquery{
input#searchquery {
width:400px;
}
#proxy-warning {
color: red;
}

View File

@@ -100,6 +100,7 @@ function loadJackettSettings() {
})
reloadIndexers();
proxyWarning(data.proxy_url);
});
}
@@ -1221,4 +1222,18 @@ function bindUIButtons() {
doNotify("Request to Jackett server failed", "danger", "glyphicon glyphicon-alert");
});
});
$('#jackett-proxy-url').on('input', function () {
proxyWarning($(this).val());
});
}
function proxyWarning(input) {
if (input != null && input.trim() !== "") {
$('#proxy-warning').show();
}
else
{
$('#proxy-warning').hide();
}
}

View File

@@ -281,6 +281,10 @@ div#jackett-releases-datatable_wrapper {
width: 100%;
overflow-x: scroll;
}
input#searchquery{
input#searchquery {
width:50%;
}
#proxy-warning {
color: red;
}

View File

@@ -34,8 +34,8 @@
<link rel="stylesheet" type="text/css" href="../bootstrap/bootstrap.min.css?changed=2017083001">
<link rel="stylesheet" type="text/css" href="../animate.css?changed=2017083001">
<link rel="stylesheet" type="text/css" href="../custom.css?changed=2017083001" media="only screen and (min-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom_mobile.css?changed=2017083001" media="only screen and (max-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom.css?changed=20190401" media="only screen and (min-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom_mobile.css?changed=20190401" media="only screen and (max-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../css/jquery.dataTables.min.css?changed=2017083001">
<link rel="stylesheet" type="text/css" href="../css/bootstrap-multiselect.css?changed=2017083001" />
<link rel="stylesheet" type="text/css" href="../css/font-awesome.min.css?changed=2017083001">
@@ -87,8 +87,10 @@
<h4>Adding a Jackett indexer to RSS clients (RSS feed)</h4>
<ol>
<li>Click on the indexers corresponding <button type="button" class="btn btn-xs btn-info">Copy RSS Feed</button> button and paste it into the URL field of the RSS client.</li>
<li>You can adjust the <b>q</b> (search string) and <b>cat</b> (categories) arguments accordingly.
E.g. <b>...&cat=2030,2040&q=big+buck+bunny</b> will search for "big buck bunny" in the Movies/SD (2030) and Movies/HD (2040) categories (See the indexer configuration for available categories).</li>
<li>
You can adjust the <b>q</b> (search string) and <b>cat</b> (categories) arguments accordingly.
E.g. <b>...&cat=2030,2040&q=big+buck+bunny</b> will search for "big buck bunny" in the Movies/SD (2030) and Movies/HD (2040) categories (See the indexer configuration for available categories).
</li>
</ol>
</div>
<hr />
@@ -138,6 +140,12 @@
<option value="2">socks5</option>
</select>
</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.
</span>
</div>
<div class="input-area">
<span class="input-header">Proxy url: </span>
<input id="jackett-proxy-url" class="form-control input-right" type="text" value="" placeholder="Blank to disable">
@@ -663,6 +671,6 @@
</script>
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></script>
<script type="text/javascript" src="../custom.js?changed=20180711"></script>
<script type="text/javascript" src="../custom.js?changed=20190401"></script>
</body>
</html>

View File

@@ -6,6 +6,8 @@
type: private
encoding: UTF-8
links:
- https://bittorrentfiles.me/
legacylinks:
- https://www.Bittorrentfiles.me/
caps:

View File

@@ -10,6 +10,18 @@
legacylinks:
- http://amigos-share.club/
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: info_results
type: info
label: "Search results"
default: "Set <b>Exibição De Torrents</b> to <b>Lista</b> in your <b>Minhas Configurações</b>.<br />Using <b>Capas</b> is not supported and will return 0 results."
caps:
categorymappings:
- {id: 107, cat: XXX, desc: "Adultos: Gay"}
@@ -48,7 +60,7 @@
- {id: 2, cat: Movies, desc: "Filmes: Terror"}
- {id: 1, cat: Movies, desc: "Filmes: Ação"}
- {id: 80, cat: Movies, desc: "Filmes: Aventura"}
- {id: 70, cat: Other, desc: "Fotos: XXX"}
- {id: 70, cat: XXX, desc: "Fotos: XXX"}
- {id: 79, cat: Console/PS4, desc: "Jogos: Ps4"}
- {id: 47, cat: PC/Games, desc: "Jogos: Pc"}
- {id: 61, cat: Console, desc: "Jogos: Emuladores e Roms"}
@@ -130,18 +142,18 @@
error:
- selector: div.alert-error
test:
path: index.php
path: torrents-search.php
selector: a[href="account-logout.php"]
ratio:
path: index.php
path: torrents-search.php
selector: li:contains("Ratio:") a b
search:
paths:
# http://amigos-share.club/torrents-search.php?search=&c1=1&c19=1&c36=1&incldead=0&freeleech=0&lang=0sort=id&order=desc&page=1
- path: torrents-search.php
# site displays just 21 results, no profile options found to change this, so we attempt to fetch 5 pages
# site displays just 9 results, no profile options found to change this, so we attempt to fetch 5 pages
- path: torrents-search.php
inputs:
page: 1
@@ -157,13 +169,13 @@
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
incldead: 0
incldead: 1
freeleech: 0
lang: 0
sort: "id"
order: "desc"
rows:
selector: table.table-striped > tbody > tr:has(a[href^="torrents-details.php?id="])
selector: table > tbody > tr:has(a[href^="torrents-details.php?id="])
fields:
title:
selector: a[href^="torrents-details.php?id="]
@@ -173,6 +185,12 @@
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
attribute: src
@@ -195,7 +213,7 @@
"[src$=\"/E-books.png\"]": "67"
"[src$=\"/Revista.png\"]": "68"
"[src$=\"/Aventura.png\"]": "80"
"[src$=\"/XXX.png\"]": "70"
"[src$=\"/Revistas-XXX.png\"]": "70"
"[src$=\"/Jogos-Ps4.png\"]": "79"
"[src$=\"/Jogos-PC.png\"]": "47"
"[src$=\"/Jogos-EmuladoreseRoms.png\"]": "61"
@@ -281,14 +299,14 @@
date:
text: now
size:
selector: td:nth-child(2) span.label-info
selector: td:nth-child(2) span.badge-info
seeders:
selector: td:nth-child(4)
leechers:
selector: td:nth-child(5)
downloadvolumefactor:
case:
"span.label-success i:contains(\"FREE\")": "0"
"span.badge-success:contains(\"FREE\")": "0"
"*": "1"
uploadvolumefactor:
case:

View File

@@ -78,10 +78,10 @@
- name: downloadlink
type: select
label: Download link
default: "magnet:"
default: "magnet:?xt="
options:
"/download/" : ".torrent"
"magnet:": "magnet"
"/get/key:" : ".torrent"
"magnet:?xt=": "magnet"
login:
path: /
@@ -100,7 +100,7 @@
selector: a[href="/users/logout/"]
download:
selector: a[href^="{{ .Config.downloadlink }}"]
selector: a[href*="{{ .Config.downloadlink }}"]
search:
paths:

View File

@@ -25,10 +25,19 @@
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: 1
error:
- selector: form[action*="/login"] .text-red
- selector: div.has-error
test:
path: torrents
selector: a[href$="/logout"]
ratio:
path: torrents
selector: li:has(i.fa-sync-alt)
filters:
- name: regexp
args: "Ratio : (\\d+)"
search:
paths:
@@ -36,23 +45,24 @@
inputs:
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
description: ""
uploader: ""
imdb: "{{ .Query.IMDBIDShort }}"
tvdb: ""
tmdb: ""
mal: ""
sorting: created_at
direction: desc
sort: "created_at"
direction: "desc"
qty: 100
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/category/"]
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/category/.*?\\.(\\d+)"
args: "/categories/.*?\\.(\\d+)"
title:
selector: a.view-torrent
download:
@@ -61,17 +71,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)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
grabs:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
filters:
- name: regexp
args: ([\d\.]+)
imdb:
optional: true
selector: a[href*="www.imdb.com/title/tt"]
attribute: href
date:
selector: time
filters:
@@ -100,12 +121,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

View File

@@ -0,0 +1,299 @@
---
site: avg
name: AVG
description: "Audio Video Games (BestRepack) is a RUSSIAN Private Torrent Tracker for GAMES"
language: ru-ru
type: private
encoding: UTF-8
links:
- https://avg.club/
caps:
categorymappings:
- {id: 110, cat: PC/Games, desc: "Репаки от R.G. Catalyst"}
- {id: 146, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Горячие новинки"}
- {id: 112, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Action"}
- {id: 113, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Fighting"}
- {id: 114, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst RPG"}
- {id: 118, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Аркады"}
- {id: 120, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Квесты и приключения"}
- {id: 122, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Стратегии"}
- {id: 124, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Симуляторы"}
- {id: 126, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Гонки"}
- {id: 147, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Горячие новинки"}
- {id: 115, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Action"}
- {id: 116, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Fighting"}
- {id: 117, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst RPG"}
- {id: 119, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Аркады"}
- {id: 121, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Квесты и приключения"}
- {id: 123, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Стратегии"}
- {id: 125, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Симуляторы"}
- {id: 127, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Гонки"}
- {id: 9, cat: PC/Games, desc: "Игры PC (Репаки) Горячие новинки"}
- {id: 2, cat: PC/Games, desc: "Игры PC (Репаки) Action"}
- {id: 8, cat: PC/Games, desc: "Игры PC (Репаки) Fighting"}
- {id: 3, cat: PC/Games, desc: "Игры PC (Репаки) RPG"}
- {id: 7, cat: PC/Games, desc: "Игры PC (Репаки) Аркады"}
- {id: 6, cat: PC/Games, desc: "Игры PC (Репаки) Квесты и приключения"}
- {id: 4, cat: PC/Games, desc: "Игры PC (Репаки) Стратегии"}
- {id: 5, cat: PC/Games, desc: "Игры PC (Репаки) Симуляторы"}
- {id: 73, cat: PC/Games, desc: "Игры PC (Репаки) Гонки"}
- {id: 149, cat: PC/Games, desc: "Игры PC (Репаки) «Стройбат»"}
- {id: 148, cat: PC/Games, desc: "Игры PC (Оригиналы) Горячие новинки"}
- {id: 129, cat: PC/Games, desc: "Игры PC (Оригиналы) Action"}
- {id: 131, cat: PC/Games, desc: "Игры PC (Оригиналы) Fighting"}
- {id: 133, cat: PC/Games, desc: "Игры PC (Оригиналы) RPG"}
- {id: 135, cat: PC/Games, desc: "Игры PC (Оригиналы) Аркады"}
- {id: 137, cat: PC/Games, desc: "Игры PC (Оригиналы) Квесты и приключения"}
- {id: 139, cat: PC/Games, desc: "Игры PC (Оригиналы) Стратегии"}
- {id: 141, cat: PC/Games, desc: "Игры PC (Оригиналы) Симуляторы"}
- {id: 143, cat: PC/Games, desc: "Игры PC (Оригиналы) Гонки"}
- {id: 19, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты)"}
- {id: 130, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) Action"}
- {id: 132, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) Fighting"}
- {id: 134, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) RPG"}
- {id: 136, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) Аркады"}
- {id: 138, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) Квесты и приключения"}
- {id: 140, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) Стратегии"}
- {id: 142, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) Симуляторы"}
- {id: 144, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) Гонки"}
- {id: 145, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) Linux / MacOS"}
- {id: 10, cat: PC/Games, desc: "Игры PC (Оригиналы) Горячие новинки"}
- {id: 11, cat: PC/Games, desc: "Игры PC (Оригиналы) Action"}
- {id: 12, cat: PC/Games, desc: "Игры PC (Оригиналы) Fighting"}
- {id: 13, cat: PC/Games, desc: "Игры PC (Оригиналы) RPG"}
- {id: 14, cat: PC/Games, desc: "Игры PC (Оригиналы) Аркады"}
- {id: 15, cat: PC/Games, desc: "Игры PC (Оригиналы) Квесты и приключения"}
- {id: 16, cat: PC/Games, desc: "Игры PC (Оригиналы) Стратегии"}
- {id: 17, cat: PC/Games, desc: "Игры PC (Оригиналы) Симуляторы"}
- {id: 74, cat: PC/Games, desc: "Игры PC (Оригиналы) Гонки"}
- {id: 98, cat: PC/Games, desc: "Игры PC (Оригиналы) Игры для Linux"}
- {id: 99, cat: PC/Games, desc: "Игры PC (Оригиналы) Игры для MacOS"}
- {id: 70, cat: Console/Xbox, desc: "Игры для консолей Xbox"}
- {id: 71, cat: Console/PSP, desc: "Игры для консолей Playstation"}
- {id: 72, cat: Console/Other, desc: "Игры для консолей Другие консоли"}
- {id: 34, cat: Movies, desc: "Кинематограф Новинки"}
- {id: 109, cat: Movies/HD, desc: "Кинематограф Новинки HD Remux / Blu-Ray Discs"}
- {id: 108, cat: Movies/HD, desc: "Кинематограф Новинки HD Rips (720p,1080p)"}
- {id: 20, cat: Movies, desc: "Кинематограф Отечественное кино"}
- {id: 21, cat: Movies, desc: "Кинематограф Зарубежное кино"}
- {id: 28, cat: TV, desc: "Отечественные сериалы"}
- {id: 27, cat: TV, desc: "Зарубежные сериалы"}
- {id: 29, cat: TV, desc: "Мультфильмы"}
- {id: 30, cat: TV, desc: "Мультсериалы"}
- {id: 37, cat: TV, desc: "Документальное кино"}
- {id: 38, cat: TV, desc: "Концерты и передачи"}
- {id: 67, cat: TV/Anime, desc: "Аниме Релизы"}
- {id: 45, cat: Audio, desc: "Музыка Тяжелая и альтернативная музыка"}
- {id: 85, cat: Audio, desc: "Музыка Эстрадная и поп-музыка"}
- {id: 77, cat: Audio, desc: "Музыка Электронная музыка"}
- {id: 58, cat: Audio, desc: "Музыка Рэп, хип-хоп, R`n`B"}
- {id: 78, cat: Audio, desc: "Музыка Фолк, этническая и народная музыка"}
- {id: 42, cat: Audio, desc: "Музыка Классическая и академическая музыка"}
- {id: 82, cat: Audio, desc: "Музыка New Age, Chillout, музыка для медитации"}
- {id: 79, cat: Audio, desc: "Музыка Джаз, блюз"}
- {id: 80, cat: Audio, desc: "Музыка Авторская песня, шансон"}
- {id: 49, cat: Audio, desc: "Музыка Саундтреки"}
- {id: 50, cat: Audio, desc: "Музыка Саундтреки Саундтреки к фильмам, мультфильмам, сериалам"}
- {id: 51, cat: Audio, desc: "Музыка Саундтреки Саундтреки к играм"}
- {id: 81, cat: Audio, desc: "Музыка Прочая музыка"}
- {id: 83, cat: Audio, desc: "Музыка Прочая музыка Неофициальные сборники"}
- {id: 156, cat: PC, desc: "Программное обеспечение Live CD, DVD, USB версии"}
- {id: 157, cat: PC, desc: "Программное обеспечение Windows 10 и более поздние"}
- {id: 158, cat: PC, desc: "Программное обеспечение Windows 8.1 и более ранние"}
- {id: 159, cat: PC, desc: "Программное обеспечение Обновления и языковые пакеты"}
- {id: 160, cat: PC, desc: "Программное обеспечение Серверные версии"}
- {id: 193, cat: PC/Mac, desc: "Программное обеспечение macOS"}
- {id: 194, cat: PC/Mac, desc: "Программное обеспечение macOS Stable (Release)"}
- {id: 195, cat: PC/Mac, desc: "Программное обеспечение macOS Dev (Beta)"}
- {id: 164, cat: PC/Mac, desc: "Программное обеспечение macOS Дистрибутивы Linux"}
- {id: 163, cat: PC/Mac, desc: "Программное обеспечение macOS *nix OS"}
- {id: 162, cat: PC/Mac, desc: "Программное обеспечение macOS Программное обеспечение"}
- {id: 165, cat: PC, desc: "Программное обеспечение Мультимедиа и графика"}
- {id: 172, cat: PC, desc: "Программное обеспечение Мультимедиа и графика Аудио-редакторы"}
- {id: 171, cat: PC, desc: "Программное обеспечение Мультимедиа и графика Видео-редакторы"}
- {id: 170, cat: PC, desc: "Программное обеспечение Мультимедиа и графика Графические редакторы"}
- {id: 169, cat: PC, desc: "Программное обеспечение Мультимедиа и графика Материалы для аудио"}
- {id: 168, cat: PC, desc: "Программное обеспечение Мультимедиа и графика Материалы для видео"}
- {id: 167, cat: PC, desc: "Программное обеспечение Мультимедиа и графика Материалы для графики"}
- {id: 166, cat: PC, desc: "Программное обеспечение Мультимедиа и графика Моделирование, рендеринг, плагины"}
- {id: 173, cat: PC, desc: "Программное обеспечение Программирование и веб-разработка"}
- {id: 177, cat: PC, desc: "Программное обеспечение Программирование и веб-разработка DDK/SDK"}
- {id: 178, cat: PC, desc: "Программное обеспечение Программирование и веб-разработка Веб-редакторы"}
- {id: 176, cat: PC, desc: "Программное обеспечение Программирование и веб-разработка Системы управления базами данных (СУБД)"}
- {id: 175, cat: PC, desc: "Программное обеспечение Программирование и веб-разработка Компиляторы и среды разработки"}
- {id: 174, cat: PC, desc: "Программное обеспечение Программирование и веб-разработка Компоненты и дополнения"}
- {id: 179, cat: PC/0day, desc: "Программное обеспечение Windows Software"}
- {id: 188, cat: PC/0day, desc: "Программное обеспечение Windows Software Интернет-приложения"}
- {id: 187, cat: PC/0day, desc: "Программное обеспечение Windows Software Информационная безопасность"}
- {id: 186, cat: PC/0day, desc: "Программное обеспечение Windows Software Офисные приложения и редакторы"}
- {id: 185, cat: PC/0day, desc: "Программное обеспечение Windows Software Переводчики и словари"}
- {id: 184, cat: PC/0day, desc: "Программное обеспечение Windows Software Проигрыватели и кодеки"}
- {id: 183, cat: PC/0day, desc: "Программное обеспечение Windows Software Работа с носителями и медиа"}
- {id: 182, cat: PC/0day, desc: "Программное обеспечение Windows Software Системные приложения"}
- {id: 181, cat: PC/0day, desc: "Программное обеспечение Windows Software Эмуляторы"}
- {id: 180, cat: PC/0day, desc: "Программное обеспечение Windows Software Прочие приложения"}
- {id: 197, cat: PC/0day, desc: "Программное обеспечение Windows Software Архиваторы и файловые менеджеры"}
- {id: 203, cat: PC/0day, desc: "Программное обеспечение Windows Software Проигрыватели и кодеки"}
- {id: 202, cat: PC/0day, desc: "Программное обеспечение Windows Software Офисные приложения и редакторы"}
- {id: 201, cat: PC/0day, desc: "Программное обеспечение Windows Software Работа с носителями и медиа"}
- {id: 200, cat: PC/0day, desc: "Программное обеспечение Windows Software Информационная безопасность"}
- {id: 199, cat: PC/0day, desc: "Программное обеспечение Windows Software Интернет-приложения"}
- {id: 198, cat: PC/0day, desc: "Программное обеспечение Windows Software Системные приложения"}
- {id: 22, cat: Other, desc: "Прочее Оформление релизов"}
- {id: 53, cat: Other, desc: "Прочее Оформление релизов Оформление релизов (игры)"}
- {id: 54, cat: Other, desc: "Прочее Оформление релизов Оформление релизов (кино/мультфильмы/аниме)"}
- {id: 55, cat: Other, desc: "Прочее Оформление релизов Оформление релизов (музыка)"}
- {id: 192, cat: Other, desc: "Прочее Оформление релизов Оформление релизов (софт)"}
- {id: 31, cat: Other, desc: "Прочее Обновления/DLC"}
- {id: 102, cat: Other, desc: "Прочее Обновления/DLC для MacOS"}
- {id: 101, cat: Other, desc: "Прочее Обновления/DLC для Linux"}
- {id: 100, cat: Other, desc: "Прочее Обновления/DLC для Windows"}
- {id: 76, cat: Other, desc: "Прочее Языковые пакеты"}
- {id: 103, cat: Other, desc: "Прочее Языковые пакеты для MacOS"}
- {id: 104, cat: Other, desc: "Прочее Языковые пакеты для Linux"}
- {id: 105, cat: Other, desc: "Прочее Языковые пакеты для Windows"}
- {id: 84, cat: Other, desc: "Прочее Демо-, альфа-, бета-версии"}
- {id: 32, cat: Other, desc: "Прочее NoCD/NoDVD"}
- {id: 75, cat: Other, desc: "Прочее Моды"}
- {id: 106, cat: Other, desc: "Прочее Моды Моды для Titan Quest (+ Immortal Throne)"}
- {id: 95, cat: Other, desc: "Прочее Моды Моды для Dungeon Siege"}
- {id: 94, cat: Other, desc: "Прочее Моды Моды для Resident Evil 4"}
- {id: 93, cat: Other, desc: "Прочее Моды Моды для Doom III"}
- {id: 92, cat: Other, desc: "Прочее Моды Плагины для TESV Skyrim"}
- {id: 91, cat: Other, desc: "Прочее Моды Плагины для TESIV Oblivion"}
- {id: 90, cat: Other, desc: "Прочее Моды Плагины для TESIII Morrowind"}
- {id: 97, cat: Other, desc: "Прочее Пиратки"}
modes:
search: [q]
login:
path: login.php
method: post
inputs:
"login_username": "{{ .Config.username }}"
"login_password": "{{ .Config.password }}"
autologin: 1
login: "Log in"
error:
- selector: table.error tr td div.msg:not(:contains(">>>"))
test:
path: tracker.php
selector: a[href="./login.php?logout=1"]
search:
paths:
- path: tracker.php
method: post
inputs:
$raw: "{{ if .Categories }}{{ range .Categories }}f[]={{.}}&{{end}}{{else}}f[]=-1{{end}}"
prev_allw: 1
prev_a: 0
prev_dla: 0
prev_dlc: 0
prev_dld: 0
prev_dlw: 0
prev_my: 0
prev_new: 0
prev_sd: 0
prev_da: 1
prev_dc: 0
prev_df: 1
prev_ds: 0
prev_tor_type: 0
# sort by 1=registered 2=topicTitle 4=completed 10=seed 11=leech 12=up 13=down 5=replies 6=views 7=size 8=lastPost 9=seedLastSeen
o: 1
# 1=asc 2=desc
s: 2
# show category
dc: 0
# show forum
df: 1
# show author
da: 1
# show speed
ds: 0
# -1=all time
tm: -1
# seed not seen -1=disregard
sns: -1
# group releases -1=not selected
srg: -1
nm: "{{ .Keywords }}"
# find a username
pn: ""
submit: " Search "
rows:
selector: tr[id^="tor_"]
fields:
title:
selector: td a.genmed b
details:
selector: td a.genmed
attribute: href
download:
selector: td a.tr-dl
attribute: href
category:
selector: td a.gen
attribute: href
filters:
- name: regexp
args: "=(\\d+)\\."
size:
selector: td a.tr-dl
seeders:
selector: td.seedmed
leechers:
selector: td.leechmed
# Russian and Ukranian and English languages are supported
grabs:
optional: true
selector: td[title^="Ответов"]
grabs:
optional: true
selector: td[title^="Відповідей"]
grabs:
optional: true
selector: td[title^="Replies"]
# date for English, Russian, Ukrainian
date:
selector: td[title="Added"] p:last-of-type, td[title="Добавлен"] p:last-of-type, td[title="Додано"] p:last-of-type
filters:
# replace month abbreviations
- name: re_replace
args: ["Янв|Січ", "Jan"]
- name: re_replace
args: ["Фев|Лют", "Feb"]
- name: re_replace
args: ["Мар|Бер", "Mar"]
- name: re_replace
args: ["Апр|Кві", "Apr"]
- name: re_replace
args: ["Май|Травень", "May"]
- name: re_replace
args: ["Июн|Чер", "Jun"]
- name: re_replace
args: ["Июл|Лип", "Jul"]
- name: re_replace
args: ["Авг|Сер", "Aug"]
- name: re_replace
args: ["Сен|Вер", "Sep"]
- name: re_replace
args: ["Окт|Жов", "Oct"]
- name: re_replace
args: ["Ноя|Лис", "Nov"]
- name: re_replace
args: ["Дек|Грудень", "Dec"]
- name: dateparse
args: "2-Jan-06"
downloadvolumefactor:
case:
img[src="styles/images/tor_gold.gif"]: "0"
img[src="styles/images/tor_silver.gif"]: "0.5"
"*": "1"
uploadvolumefactor:
case:
"*": "1"

View File

@@ -135,13 +135,24 @@
- name: replace
args: ["×", ""]
date:
selector: td:nth-child(5)
selector: td:nth-child(5):contains('.')
optional: true
remove: font
filters:
- name: replace
args: [". ", " "]
- name: prepend
args: "2019."
- name: re_replace
args: ["([0-9]{4}).([0-9]+).([0-9]+) (.*)", "$2.$3.$1 $4"]
date:
selector: td:nth-child(5):contains('ma'), td:nth-child(5):contains("tegnap"), td:nth-child(5):contains('-')
optional: true
remove: font
filters:
- name: replace
args: ["ma", "today"]
- name: replace
args: ["tegnap", "yesterday"]
description:
selector: td:nth-child(2) > div

View File

@@ -25,8 +25,9 @@
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: 1
error:
- selector: form[action*="/login"] .text-red
- selector: div.has-error
test:
path: torrents
@@ -36,12 +37,13 @@
inputs:
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
description: ""
uploader: ""
imdb: "{{ .Query.IMDBIDShort }}"
tvdb: ""
tmdb: ""
mal: ""
sorting: created_at
sort: created_at
direction: desc
qty: 100
rows:
@@ -61,6 +63,13 @@
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)
seeders:
@@ -74,7 +83,7 @@
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
@@ -117,4 +126,4 @@
"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

View File

@@ -28,7 +28,7 @@
password: "{{ .Config.password }}"
remember: 1
error:
- selector: form[action*="/login"] .text-red
- selector: div.has-error
test:
path: torrents
selector: a[href$="/logout"]
@@ -84,15 +84,15 @@
args: ["https://via.placeholder.com/600x900", ""]
size:
selector: td:nth-child(5)
grabs:
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
filters:
- name: regexp
args: ([\d\.]+)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
imdb:
optional: true
selector: a[href*="www.imdb.com/title/tt"]
@@ -138,4 +138,4 @@
"i[data-original-title=\"Global Double Upload\"]": "2" # Global Double Upload
"i[data-original-title=\"Featured\"]": "2" # Featured Torrent
"*": "1"
# UNIT3D 1.9
# UNIT3D 1.9.2

View File

@@ -67,7 +67,9 @@
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"]
args: [" FRENCH", " {{ .Result.site_date }} FRENCH"]
- name: replace
args: ["MULTI", "{{ .Result.site_date }} MULTI"]
- name: replace
args: ["TRUEFRENCH", "{{ .Result.site_date }} TRUEFRENCH"]
- name: replace

View File

@@ -16,21 +16,28 @@
categorymappings:
- {id: films, cat: Movies, desc: "Movies"}
- {id: series, cat: TV, desc: "TV"}
- {id: musique, cat: Audio, desc: "Music"}
- {id: ebook, cat: Books, desc: "Ebook"}
- {id: logiciels, cat: PC, desc: "Software"}
- {id: jeux-pc, cat: PC/Games, desc: "PC Games"}
- {id: jeux-consoles, cat: Console, desc: "Console Games"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
download:
selector: div#btn-download a
selector: div.btn-download a
attribute: href
search:
paths:
- path: "{{if .Keywords}}recherche/{{.Keywords}}{{else}}{{end}}"
rows:
selector: div#gauche > table > tbody > tr:has(a)
selector: table.table-corps > tbody > tr:has(a)
fields:
site_date:
selector: a
@@ -43,7 +50,9 @@
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"]
args: [" FRENCH", " {{ .Result.site_date }} FRENCH"]
- name: replace
args: ["MULTI", "{{ .Result.site_date }} MULTI"]
- name: replace
args: ["TRUEFRENCH", "{{ .Result.site_date }} TRUEFRENCH"]
- name: replace
@@ -61,21 +70,21 @@
selector: div.poid
filters:
- name: re_replace
args: [ "\\.(\\d) Ko", "$1X00"]
args: [ "\\.(\\d)Ko", "$1X00"]
- name: re_replace
args: [ " Ko", "000"]
args: [ "Ko", "000"]
- name: re_replace
args: [ "\\.(\\d) Mo", "$1X00000"]
args: [ "\\.(\\d)Mo", "$1X00000"]
- name: re_replace
args: [ " Mo", "000000"]
args: [ "Mo", "000000"]
- name: re_replace
args: [ "\\.(\\d) Go", "$1X00000000"]
args: [ "\\.(\\d)Go", "$1X00000000"]
- name: re_replace
args: [ " Go", "000000000"]
args: [ "Go", "000000000"]
- name: re_replace
args: [ "\\.(\\d) To", "$1X00000000000"]
args: [ "\\.(\\d)To", "$1X00000000000"]
- name: re_replace
args: [ " To", "000000000000"]
args: [ "To", "000000000000"]
- name: replace
args: [ "X", "" ]
date:

View File

@@ -15,10 +15,11 @@
- {id: 3, cat: Audio, desc: "Music"}
- {id: 4, cat: TV/Anime, desc: "Anime"}
- {id: 5, cat: PC/0day, desc: "Apps"}
- {id: 6, cat: Books, desc: "Books"}
- {id: 6, cat: Books, desc: "eBooks"}
- {id: 7, cat: PC/Games, desc: "Games"}
- {id: 8, cat: TV/Sport, desc: "Sports"}
- {id: 9, cat: Other, desc: "Other"}
- {id: 9, cat: Other, desc: "Others"}
- {id: 10, cat: XXX, desc: "XXX"}
modes:
search: [q]
@@ -31,10 +32,19 @@
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: 1
error:
- selector: table.main:contains("Login Failed!")
- selector: div.has-error
test:
path: torrents
selector: a[href$="/logout"]
ratio:
path: torrents
selector: li:has(i.fa-sync-alt)
filters:
- name: regexp
args: "Ratio : (\\d+)"
search:
paths:
@@ -42,13 +52,14 @@
inputs:
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
description: ""
uploader: ""
imdb: "{{ .Query.IMDBIDShort }}"
tvdb: ""
tmdb: ""
mal: ""
sorting: created_at
direction: desc
sort: "created_at"
direction: "desc"
qty: 100
rows:
selector: table > tbody > tr
@@ -67,17 +78,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)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
grabs:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
filters:
- name: regexp
args: ([\d\.]+)
imdb:
optional: true
selector: a[href*="www.imdb.com/title/tt"]
attribute: href
date:
selector: time
filters:
@@ -106,12 +128,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

View File

@@ -6,6 +6,8 @@
type: public
encoding: UTF-8
links:
- https://www.elitetorrent.io/
legacylinks:
- https://www.elitetorrent.biz/
caps:

View File

@@ -7,7 +7,7 @@
encoding: UTF-8
followredirect: true
links:
- https://www.gktorrent.tv/
- https://www.gktorrent.net/
legacylinks:
- https://www.gktorrent.com/
- http://www.gktorrent.com/
@@ -23,8 +23,9 @@
- https://www.gktorrent.org/
- https://www.gktorrent.me/
- https://www.rantop.org/
- https://www.gktorrent.net/
- https://www.gktorrent.cx/
- https://www.gktorrent.tv/
caps:
categorymappings:
- {id: movies, cat: Movies, desc: "Movies"}
@@ -62,7 +63,9 @@
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"]
args: [" FRENCH", " {{ .Result.site_date }} FRENCH"]
- name: replace
args: ["MULTI", "{{ .Result.site_date }} MULTI"]
- name: replace
args: ["TRUEFRENCH", "{{ .Result.site_date }} TRUEFRENCH"]
- name: replace

View File

@@ -8,6 +8,18 @@
links:
- https://hdf.world/
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: usetoken
type: checkbox
label: Always try to use the FreeLeech Token
default: false
caps:
categories:
1: Movies
@@ -49,9 +61,17 @@
rows:
selector: table#torrent_table > tbody > tr.torrent
fields:
download:
download-regular:
selector: a[href^="torrents.php?action=download&"]
attribute: href
download-usetoken:
selector: a[href^="torrents.php?action=download&"]
attribute: href
filters:
- name: append
args: "&usetoken=1"
download:
text: "{{if .Config.usetoken}}{{ .Result.download-usetoken }}{{else}}{{ .Result.download-regular }}{{end}}"
title:
selector: div.group_info
remove: span:nth-child(1), div.tags
@@ -210,7 +230,7 @@
selector: td:nth-child(8)
downloadvolumefactor:
case:
"div.group_info:contains(\"Free\")": "0"
"div.group_info:contains(\"/ Free\")": "0"
"div.group_info:contains(\"↓75%\")": "0.75"
"div.group_info:contains(\"↓50%\")": "0.50"
"div.group_info:contains(\"↓25%\")": "0.25"

View File

@@ -59,16 +59,12 @@
# - path: "{{if .Keywords}}argh.php?search={{ .Keywords}}
# {{else}}/recenti
# {{end}}"
- path: "{{if .Keywords}}advsearch.php?&category={{range .Categories}}{{.}};{{end}}&search={{ .Keywords}}&order=data&by=DESC&page=0{{else}}/recenti{{end}}"
- path: "{{if .Keywords}}advsearch.php?&category={{range .Categories}}{{.}};{{end}}&search={{ .Keywords}}&order=data&by=DESC&page=1{{else}}/recenti{{end}}"
- path: "{{if .Keywords}}advsearch.php?&category={{range .Categories}}{{.}};{{end}}&search={{ .Keywords}}&order=data&by=DESC&page=2{{else}}/recenti{{end}}"
- path: "{{if .Keywords}}advsearch.php?&category={{range .Categories}}{{.}};{{end}}&search={{ .Keywords}}&order=data&by=DESC&page=3{{else}}/recenti{{end}}"
- path: "{{if .Keywords}}advsearch.php?&category={{range .Categories}}{{.}};{{end}}&search={{ .Keywords}}&order=data&by=DESC&page=4{{else}}/recenti{{end}}"
- path: "{{if .Keywords}}advsearch.php?&category={{range .Categories}}{{.}};{{end}}&search={{ .Keywords}}&order=data&by=DESC&page=5{{else}}/recenti{{end}}"
- path: "{{if .Keywords}}advsearch.php?&category={{range .Categories}}{{.}};{{end}}&search={{ .Keywords}}&order=data&by=DESC&page=6{{else}}/recenti{{end}}"
- path: "{{if .Keywords}}advsearch.php?&category={{range .Categories}}{{.}};{{end}}&search={{ .Keywords}}&order=data&by=DESC&page=7{{else}}/recenti{{end}}"
- path: "{{if .Keywords}}advsearch.php?&category={{range .Categories}}{{.}};{{end}}&search={{ .Keywords}}&order=data&by=DESC&page=8{{else}}/recenti{{end}}"
- path: "{{if .Keywords}}advsearch.php?&category={{range .Categories}}{{.}};{{end}}&search={{ .Keywords}}&order=data&by=DESC&page=9{{else}}/recenti{{end}}"
- path: "{{if .Keywords}}advsearch.php?&category={{range .Categories}}{{.}};{{end}}&search={{ .Keywords}}&order=data&by=DESC&page=0{{else}}/browse/0{{end}}"
- path: "{{if .Keywords}}advsearch.php?&category={{range .Categories}}{{.}};{{end}}&search={{ .Keywords}}&order=data&by=DESC&page=1{{else}}/browse/1{{end}}"
- path: "{{if .Keywords}}advsearch.php?&category={{range .Categories}}{{.}};{{end}}&search={{ .Keywords}}&order=data&by=DESC&page=2{{else}}/browse/2{{end}}"
- path: "{{if .Keywords}}advsearch.php?&category={{range .Categories}}{{.}};{{end}}&search={{ .Keywords}}&order=data&by=DESC&page=3{{else}}/browse/3{{end}}"
- path: "{{if .Keywords}}advsearch.php?&category={{range .Categories}}{{.}};{{end}}&search={{ .Keywords}}&order=data&by=DESC&page=4{{else}}/browse/4{{end}}"
- path: "{{if .Keywords}}advsearch.php?&category={{range .Categories}}{{.}};{{end}}&search={{ .Keywords}}&order=data&by=DESC&page=5{{else}}/browse/5{{end}}"
keywordsfilters:
- name: diacritics
args: replace

View File

@@ -86,6 +86,10 @@
inputs:
uid: "{{ .Config.username }}"
pwd: "{{ .Config.password }}"
captcha:
type: image
selector: img[src^="access_code/"]
input: private_key
error:
- selector: tr td span[style="color:#FF0000;"]
test:

View File

@@ -34,9 +34,15 @@
paths:
# https://monova.to/search?term=vikings+s05e05
# https://monova.to/video
- path: "{{if .Keywords}}search?term={{.Keywords}}{{else}}video{{end}}"
# https://monova.org/video?page=2
- path: "{{if .Keywords}}search?term={{.Keywords}}?page=1{{else}}video?page=1{{end}}"
- path: "{{if .Keywords}}search?term={{.Keywords}}?page=2{{else}}video?page=2{{end}}"
- path: "{{if .Keywords}}search?term={{.Keywords}}?page=3{{else}}video?page=3{{end}}"
- path: "{{if .Keywords}}search?term={{.Keywords}}?page=4{{else}}video?page=4{{end}}"
- path: "{{if .Keywords}}search?term={{.Keywords}}?page=5{{else}}video?page=5{{end}}"
rows:
selector: tr.desktop:not(tr.success)
#selector: tr.desktop:not(tr.success)
selector: tr.desktop
filters:
- name: andmatch
fields:
@@ -56,7 +62,11 @@
selector: td.torrent_name a
attribute: href
size:
optional: true
selector: td.center-align
filters:
- name: replace
args: ["N/A","500 MB"]
seeders:
text: "1"
leechers:
@@ -66,9 +76,14 @@
uploadvolumefactor:
text: "1"
date:
optional: true
selector: td.torrent_name
remove: a
filters:
- name: replace
args: ["added ",""]
- name: replace
args: [" ago.*$",""]
- name: replace
args: ["min.","minutes"]
- name: timeago

View File

@@ -0,0 +1,126 @@
---
site: peersfm
name: Peers.FM
description: "Peers.FM is a RUSSIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: ru-ru
type: private
encoding: windows-1251
links:
- https://peers.fm/
caps:
categorymappings:
- {id: 18, cat: TV/Anime, desc: "Anime"}
- {id: 17, cat: PC, desc: "Database"}
- {id: 25, cat: TV, desc: "EDU"}
- {id: 14, cat: Movies/HD, desc: "HD Видео"}
- {id: 7, cat: Other, desc: "Images"}
- {id: 15, cat: PC/Mac, desc: "Mac"}
- {id: 26, cat: PC/Phone-Other, desc: "Mobile"}
- {id: 24, cat: TV, desc: "TV Show"}
- {id: 1, cat: PC, desc: "WaReZ"}
- {id: 10, cat: XXX, desc: "XXX"}
- {id: 9, cat: Audio/Audiobook, desc: "Аудиокниги"}
- {id: 3, cat: PC/Games, desc: "Игры/GameZ"}
- {id: 2, cat: Audio/Video, desc: "Клипы/Концерты"}
- {id: 8, cat: Books/Magazines, desc: "Книги/Журналы"}
- {id: 20, cat: Audio/Lossless, desc: "Музыка/Lossless"}
- {id: 11, cat: Audio/Mp3, desc: "Музыка/Mp3"}
- {id: 13, cat: TV, desc: "Мультфильмы"}
- {id: 12, cat: Other, desc: "Разное/Miscellaneous"}
- {id: 4, cat: Movies/DVD, desc: "Фильмы DVD"}
- {id: 6, cat: Movies, desc: "Фильмы MPEG4"}
modes:
search: [q]
tv-search: [q, season, ep]
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
SSL: 1
error:
- selector: table[width="400"] tr td
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=incl dead 2=only dead 3=FREE
incldead: 1
rows:
selector: table[width="940px"] > tbody > tr:has(a[href^="details.php?id="])
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^="download.php/"]
attribute: href
grabs:
selector: a[href^="download.php/"]
filters:
- name: regexp
args: (\d+)
size:
selector: td:nth-child(6)
date:
selector: td:nth-child(5)
filters:
# replace month abbreviations
- name: replace
args: ["янв", "Jan"]
- name: replace
args: ["фев", "Feb"]
- name: replace
args: ["мар", "Mar"]
- name: replace
args: ["апр", "Apr"]
- name: replace
args: ["май", "May"]
- name: replace
args: ["июн", "Jun"]
- name: replace
args: ["июл", "Jul"]
- name: replace
args: ["авг", "Aug"]
- name: replace
args: ["сен", "Sep"]
- name: replace
args: ["окт", "Oct"]
- name: replace
args: ["ноя", "Nov"]
- name: replace
args: ["дек", "Dec"]
- name: dateparse
args: "15:04:0502 Jan 2006"
seeders:
selector: td:nth-child(8)
leechers:
selector: td:nth-child(9)
downloadvolumefactor:
case:
img[src="pic/free_100.png"]: "0"
img[src="pic/free_75.png"]: "0.25"
img[src="pic/free_50.png"]: "0.5"
img[src="pic/free_25.png"]: "0.75"
"*": "1"
uploadvolumefactor:
case:
"*": "1"

View File

@@ -12,55 +12,55 @@
categorymappings:
- {id: 17, cat: Movies/Other, desc: "VCD/SVCD - SVCD/VCD"}
- {id: 78, cat: Movies/Other, desc: "VCD/SVCD - Estrenos VCD/SVCD"}
- {id: 14, cat: Movies/SD, desc: "XVID - Series"}
- {id: 45, cat: Movies/SD, desc: "XVID - Animación"}
- {id: 46, cat: Movies/SD, desc: "XVID - Deportes"}
- {id: 47, cat: Movies/SD, desc: "XVID - Documentales"}
- {id: 14, cat: TV/SD, desc: "XVID - Series"}
- {id: 45, cat: TV/Anime, desc: "XVID - Animación"}
- {id: 46, cat: TV/Sport, desc: "XVID - Deportes"}
- {id: 47, cat: TV/Documentary, desc: "XVID - Documentales"}
- {id: 33, cat: Movies/SD, desc: "XVID - Estrenos"}
- {id: 48, cat: Movies/SD, desc: "XVID - Películas"}
- {id: 114, cat: Movies/SD, desc: "XVID - Estrenos BajaCalidad"}
- {id: 12, cat: Movies/SD, desc: "XVID - Adulto (+18)"}
- {id: 51, cat: Movies/SD, desc: "XVID - Música"}
- {id: 37, cat: Movies/DVD, desc: "DVD - Animación"}
- {id: 38, cat: Movies/DVD, desc: "DVD - Deportes"}
- {id: 39, cat: Movies/DVD, desc: "DVD - Documentales"}
- {id: 12, cat: XXX/XviD, desc: "XVID - Adulto (+18)"}
- {id: 51, cat: Audio/Video, desc: "XVID - Música"}
- {id: 37, cat: TV/Anime, desc: "DVD - Animación"}
- {id: 38, cat: TV/Sport, desc: "DVD - Deportes"}
- {id: 39, cat: TV/Documentary, desc: "DVD - Documentales"}
- {id: 40, cat: Movies/DVD, desc: "DVD - Películas"}
- {id: 41, cat: Movies/DVD, desc: "DVD - Series"}
- {id: 42, cat: Movies/DVD, desc: "DVD - Adulto (+18)"}
- {id: 43, cat: Movies/DVD, desc: "DVD - Música"}
- {id: 106, cat: Movies/HD, desc: "HDRip - Animación"}
- {id: 107, cat: Movies/HD, desc: "HDRip - Deportes"}
- {id: 108, cat: Movies/HD, desc: "HDRip - Documentales"}
- {id: 41, cat: TV/SD, desc: "DVD - Series"}
- {id: 42, cat: XXX/DVD, desc: "DVD - Adulto (+18)"}
- {id: 43, cat: Audio/Video, desc: "DVD - Música"}
- {id: 106, cat: TV/Anime, desc: "HDRip - Animación"}
- {id: 107, cat: TV/Sport, desc: "HDRip - Deportes"}
- {id: 108, cat: TV/Documentary, desc: "HDRip - Documentales"}
- {id: 109, cat: Movies/HD, desc: "HDRip - Películas"}
- {id: 110, cat: Movies/HD, desc: "HDRip - Series"}
- {id: 112, cat: Movies/HD, desc: "HDRip - Adulto (+18)"}
- {id: 111, cat: Movies/HD, desc: "HDRip - Música"}
- {id: 117, cat: Movies/3D, desc: "3D - Animación"}
- {id: 118, cat: Movies/3D, desc: "3D - Deportes"}
- {id: 119, cat: Movies/3D, desc: "3D - Documentales"}
- {id: 110, cat: TV/HD, desc: "HDRip - Series"}
- {id: 112, cat: XXX/x264, desc: "HDRip - Adulto (+18)"}
- {id: 111, cat: Audio/Video, desc: "HDRip - Música"}
- {id: 117, cat: TV/Anime, desc: "3D - Animación"}
- {id: 118, cat: TV/Sport, desc: "3D - Deportes"}
- {id: 119, cat: TV/Documentary, desc: "3D - Documentales"}
- {id: 120, cat: Movies/3D, desc: "3D - Películas"}
- {id: 121, cat: Movies/3D, desc: "3D - Adulto (+18)"}
- {id: 126, cat: Movies/HD, desc: "Micro HD - Animación"}
- {id: 127, cat: Movies/HD, desc: "Micro HD - Deportes"}
- {id: 128, cat: Movies/HD, desc: "Micro HD - Documentales"}
- {id: 121, cat: XXX, desc: "3D - Adulto (+18)"}
- {id: 126, cat: TV/Anime, desc: "Micro HD - Animación"}
- {id: 127, cat: TV/Sport, desc: "Micro HD - Deportes"}
- {id: 128, cat: TV/Documentary, desc: "Micro HD - Documentales"}
- {id: 57, cat: Movies/HD, desc: "Micro HD - Películas"}
- {id: 124, cat: Movies/HD, desc: "Micro HD - Series"}
- {id: 129, cat: Movies/HD, desc: "Micro HD - Adulto"}
- {id: 130, cat: Movies/HD, desc: "Micro HD - Música"}
- {id: 53, cat: Movies/HD, desc: "HD - Animación"}
- {id: 54, cat: Movies/HD, desc: "HD - Deportes"}
- {id: 55, cat: Movies/HD, desc: "HD - Documentales"}
- {id: 124, cat: TV/HD, desc: "Micro HD - Series"}
- {id: 129, cat: XXX/x264, desc: "Micro HD - Adulto"}
- {id: 130, cat: Audio/Video, desc: "Micro HD - Música"}
- {id: 53, cat: TV/Anime, desc: "HD - Animación"}
- {id: 54, cat: TV/Sport, desc: "HD - Deportes"}
- {id: 55, cat: TV/Documentary, desc: "HD - Documentales"}
- {id: 56, cat: Movies/HD, desc: "HD - BDrip/BDremux/FullBD"}
- {id: 58, cat: Movies/HD, desc: "HD - WEB-DL/Line Dubbed"}
- {id: 59, cat: Movies/HD, desc: "HD - Series"}
- {id: 63, cat: Movies/HD, desc: "HD - Adulto (+18)"}
- {id: 61, cat: Movies/HD, desc: "HD - Música"}
- {id: 136, cat: Movies/UHD, desc: "UHD - Animación"}
- {id: 137, cat: Movies/UHD, desc: "UHD - Deportes"}
- {id: 138, cat: Movies/UHD, desc: "UHD - Documentales"}
- {id: 59, cat: TV/HD, desc: "HD - Series"}
- {id: 63, cat: XXX/x264, desc: "HD - Adulto (+18)"}
- {id: 61, cat: Audio/Video, desc: "HD - Música"}
- {id: 136, cat: TV/Anime, desc: "UHD - Animación"}
- {id: 137, cat: TV/Sport, desc: "UHD - Deportes"}
- {id: 138, cat: TV/Documentary, desc: "UHD - Documentales"}
- {id: 139, cat: Movies/UHD, desc: "UHD - Películas"}
- {id: 140, cat: Movies/UHD, desc: "UHD - Series"}
- {id: 141, cat: Movies/UHD, desc: "UHD - Adulto (+18)"}
- {id: 140, cat: TV/UHD, desc: "UHD - Series"}
- {id: 141, cat: XXX/x264, desc: "UHD - Adulto (+18)"}
- {id: 69, cat: Audio/MP3, desc: "MP3"}
- {id: 70, cat: Audio/Lossless, desc: "FLAC"}
- {id: 71, cat: Audio/Other, desc: "Otros Formatos"}

View File

@@ -50,7 +50,7 @@
password: "{{ .Config.password }}"
remember: 1
error:
- selector: form[action$="/login"] .text-red
- selector: div.has-error
test:
path: torrents
selector: a[href$="/logout"]
@@ -96,11 +96,11 @@
size:
selector: td:nth-child(5)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
grabs:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
filters:
- name: regexp
args: ([\d\.]+)
@@ -132,12 +132,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

View File

@@ -53,8 +53,9 @@
- path: filterTorrents
inputs:
search: "{{ .Keywords }}"
description: ""
uploader: ""
sort: created_at
sorting: created_at
direction: desc
qty: 100
rows:

View File

@@ -0,0 +1,129 @@
---
site: soundpark
name: SoundPark
description: "SoundPark Semi-Private RUSSIAN site dedicated to MUSIC."
language: ru-RU
type: semi-private
encoding: UTF-8
links:
- https://soundpark-club.com/
- https://soundpark-club.casa/
caps:
categories:
"Music": Audio
modes:
search: [q]
login:
path: login
method: form
form: form[action="/login"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
returnto: ""
error:
- selector: div.stdmsg_text
test:
path: /
selector: a[href="/logout"]
download:
selector: a[href^="/album/download-torrent/"]
search:
paths:
- path: "{{if .Keywords}}search{{else}}music{{end}}"
inputs:
q: "{{ .Keywords }}"
num: 50
rows:
# first selector is for the music page (recent uploads) and the second selector is for the search page
selector: div[itemscope] > table.browse_albums, div.div-rellist
fields:
title:
selector: tr:nth-child(1) td:nth-child(1) h2 a, div h3 a
details:
selector: tr:nth-child(1) td:nth-child(1) h2 a, div h3 a
attribute: href
category:
text: "Music"
banner:
selector: tr:nth-child(2) td:nth-child(1) a img, div i img
attribute: src
optional: true
download:
selector: tr:nth-child(1) td:nth-child(1) h2 a, div h3 a
attribute: href
# dates come in two flavours:
# Russian, Spanish and English supported
date:
# fix for spanish yesterday, the time is not present
text: now
date:
# Today at 22:28:10
# Yesterday at 10:18:40
# Вчера в 10:18:40
# Hoy a las 07:33:17
selector: tr:nth-child(1) > td:nth-child(2) > div.details > span:nth-child(1):contains(":"), div > span.edit:contains(":")
optional: true
filters:
- name: replace
args: [" at ", " "]
- name: re_replace
args: ["Ayer a las|Вчера в", "Yesterday"]
- name: re_replace
args: ["Hoy a las|Сегодня в", "Today"]
date:
# 3 april 2019
selector: tr:nth-child(1) > td:nth-child(2) > div.details > span:nth-child(1):not(:contains(":")), div > span.edit:not(:contains(":"))
optional: true
filters:
- name: re_replace
args: ["enero|января", "January"]
- name: re_replace
args: ["febrero|февраля", "February"]
- name: re_replace
args: ["marzo|марта ", "March"]
- name: re_replace
args: ["abril|апреля", "April"]
- name: re_replace
args: ["mayo|мая", "May"]
- name: re_replace
args: ["junio|июня", "June"]
- name: re_replace
args: ["julio|июля", "July"]
- name: re_replace
args: ["agosto|августа", "August"]
- name: re_replace
args: ["septiembre|сентября", "September"]
- name: re_replace
args: ["octubre|октября", "October"]
- name: re_replace
args: ["noviembre|ноября", "November"]
- name: re_replace
args: ["diciembre|декабря", "December"]
- name: dateparse
args: "2 January 2006"
size:
# search page does not have size.
text: "500 MB"
size:
# but today's page can, if the content fixed-length string contains a title that is not too long.
selector: tr:nth-child(2) td.descr meta
attribute: content
optional: true
filters:
- name: regexp
args: "Size: (.*?),"
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: 1
uploadvolumefactor:
text: 1

View File

@@ -67,24 +67,16 @@
date:
selector: td:nth-child(4)
filters:
- name: replace
args: ["heures", "hours"]
- name: replace
args: ["heure", "hour"]
- name: replace
args: ["jours", "days"]
- name: replace
args: ["jour", "day"]
- name: replace
args: ["semaines", "weeks"]
- name: replace
args: ["semaine", "week"]
- name: replace
args: ["mois", "months"]
args: ["moi", "month"]
- name: replace
args: ["ans", "years"]
- name: replace
args: ["an", "year"]
args: [" an", " year"]
- name: append
args: " ago"
size:

View File

@@ -0,0 +1,194 @@
---
site: tigers-dl
name: Tigers-dl
description: "Tigers-dl is a FRENCH Private Torrent Tracker for MOVIES / TV / GENERAL"
language: fr-fr
type: private
encoding: UTF-8
links:
- https://www.tigers-dl.net/
caps:
categorymappings:
# Cam et Screener
- {id: 81, cat: Movies, desc: "Cam ts / tc / Fr"}
- {id: 82, cat: Movies, desc: "Cam ts / tc / US"}
# Movies
- {id: 11, cat: Movies, desc: "Action"}
- {id: 13, cat: Movies, desc: "Animation"}
- {id: 14, cat: Movies, desc: "Arts Martiaux"}
- {id: 15, cat: Movies, desc: "Aventure"}
- {id: 16, cat: Movies, desc: "Biographies"}
- {id: 17, cat: Movies, desc: "Comedie dramatique"}
- {id: 18, cat: Movies, desc: "Comedie musicale"}
- {id: 19, cat: Movies, desc: "Comedie"}
- {id: 20, cat: Movies, desc: "Divers"}
- {id: 21, cat: Movies, desc: "Documentaires"}
- {id: 22, cat: Movies, desc: "Drame"}
- {id: 23, cat: Movies, desc: "Epouvante-horreur"}
- {id: 24, cat: Movies, desc: "Espionnage"}
- {id: 25, cat: Movies, desc: "Famille"}
- {id: 26, cat: Movies, desc: "Fantastique"}
- {id: 27, cat: Movies, desc: "Guerre"}
- {id: 28, cat: Movies, desc: "Historique"}
- {id: 29, cat: Movies, desc: "Musical"}
- {id: 30, cat: Movies, desc: "Peplum"}
- {id: 31, cat: Movies, desc: "Policier"}
- {id: 32, cat: Movies, desc: "Romance"}
- {id: 33, cat: Movies, desc: "Science fiction"}
- {id: 34, cat: Movies, desc: "Thriller"}
- {id: 35, cat: Movies, desc: "Western"}
- {id: 42, cat: Movies, desc: "Coffret"}
- {id: 43, cat: Movies, desc: "Trilogie"}
- {id: 71, cat: Movies, desc: "Anciens Films"}
# Music / Concert
- {id: 37, cat: Audio/MP3, desc: "Music Mp3"}
- {id: 38, cat: Audio, desc: "Concerts"}
- {id: 39, cat: Audio, desc: "Megamix"}
- {id: 40, cat: Audio, desc: "Compilation"}
- {id: 41, cat: Audio, desc: "Spectacles"}
# Animation
- {id: 45, cat: TV, desc: "wall disney"}
- {id: 46, cat: TV, desc: "Dessins animé"}
- {id: 47, cat: TV/Anime, desc: "Manga"}
# Apps
- {id: 7, cat: PC/0day, desc: "Apps Win"}
- {id: 8, cat: PC, desc: "Apps Linux"}
- {id: 9, cat: PC/Mac, desc: "Apps Mac"}
- {id: 77, cat: PC/Phone-Other, desc: "Mobile"}
# Games
- {id: 49, cat: PC/Games, desc: "Jeux PC"}
- {id: 50, cat: Console/PSP, desc: "PSP"}
- {id: 51, cat: Console/Wii, desc: "wii"}
- {id: 52, cat: Console/PS3, desc: "PS3"}
- {id: 53, cat: Console/PS4, desc: "PS4"}
- {id: 61, cat: Console/Xbox, desc: "Xbox 360"}
# E-BOOKS
- {id: 55, cat: Books, desc: "Livres français"}
- {id: 56, cat: Books, desc: "BD"}
- {id: 57, cat: Books, desc: "Journaux"}
- {id: 58, cat: Books, desc: "Magazines"}
- {id: 59, cat: Books, desc: "Cuisine"}
- {id: 60, cat: Books, desc: "Science"}
- {id: 76, cat: Books, desc: "Informatiques"}
# Series TV
- {id: 63, cat: TV/SD, desc: "Séries VF"}
- {id: 64, cat: TV/HD, desc: "Séries VF 720p"}
- {id: 65, cat: TV/HD, desc: "Séries VF 1080p"}
- {id: 66, cat: TV/SD, desc: "Séries VOSTFR"}
- {id: 67, cat: TV/HD, desc: "Séries VOSTFR 720p"}
- {id: 68, cat: TV/HD, desc: "Séries VOSTFR 1080p"}
- {id: 69, cat: TV/SD, desc: "Séries VO"}
- {id: 70, cat: TV, desc: "Anciennes Séries !!!"}
# Movies Porno
- {id: 73, cat: XXX, desc: "Films porno - V.I.P"}
- {id: 74, cat: XXX, desc: "BD porno"}
- {id: 75, cat: XXX, desc: "Manga"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
login:
path: index.php?page=login
method: form
form: form[action="index.php?page=login"]
inputs:
uid: "{{ .Config.username }}"
pwd: "{{ .Config.password }}"
error:
- selector: td.lista span[style="color:#FF0000;"]
test:
path: index.php
selector: :has(a[href="logout.php"])
search:
paths:
# https://www.tigers-dl.net/index.php?page=torrents&search=venom&category=0&active=0&order=3&by=2
- path: index.php
inputs:
page: "torrents"
category: "{{range .Categories}}{{.}};{{end}}"
search: "{{.Keywords}}"
# 0=all 1=active only 2=dead only
active: 0
# 1=cat. 2=name 3=age 4=size 5=seed 6=leech 7=comm
order: 3
# 1=desc 2=asc
by: 2
rows:
selector: table.lista tr:has(a[href^="index.php?page=torrent-details"])
fields:
title:
selector: td a[href*="torrent-details"]
details:
selector: td a[href*="torrent-details"]
attribute: href
category:
selector: td a[href*="category="]
attribute: href
filters:
- name: querystring
args: category
download:
selector: td a[href^="download.php?id="]
attribute: href
banner:
selector: td a[href*="id="]
attribute: onmouseover
filters:
- name: regexp
args: "src=(.+?) width="
size:
selector: td:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
filters:
- name: replace
args: ["---", "0"]
date:
selector: td:nth-child(9)
filters:
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portoguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch
- name: re_replace
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut)", "minute"]
- name: re_replace
args: ["(?i)(dakika|minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten)", "minutes"]
- name: re_replace
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur)", "hour"]
- name: re_replace
args: ["(?i)(saat|tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden)", "hours"]
- name: re_replace
args: ["(?i)(gün|päev|dag|giorno|dzień|dia|den|день|zi|día|jour|Tag|ден)", "day"]
- name: re_replace
args: ["(?i)(gün|päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen)", "days"]
- name: re_replace
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица)", "week"]
- name: re_replace
args: ["(?i)(hafta|nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
- name: re_replace
args: ["(?i) (ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
- name: re_replace
args: ["(?i) (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
- name: append
args: " ago"
downloadvolumefactor:
text: "1"
uploadvolumefactor:
text: "1"

View File

@@ -63,7 +63,9 @@
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"]
args: [" FRENCH", " {{ .Result.site_date }} FRENCH"]
- name: replace
args: ["MULTI", "{{ .Result.site_date }} MULTI"]
- name: replace
args: ["TRUEFRENCH", "{{ .Result.site_date }} TRUEFRENCH"]
- name: replace

View File

@@ -7,11 +7,12 @@
encoding: UTF-8
followredirect: true
links:
- https://www2.torrent9.ch/
- https://wwv.torrent9.vg/
legacylinks:
- https://www.torrents9.pw/
- https://www.torrent9.ch/
- https://www1.torrent9.ch/
- https://www2.torrent9.ch/
caps:
categorymappings:
@@ -72,7 +73,9 @@
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"]
args: [" FRENCH", " {{ .Result.site_date }} FRENCH"]
- name: replace
args: ["MULTI", "{{ .Result.site_date }} MULTI"]
- name: replace
args: ["TRUEFRENCH", "{{ .Result.site_date }} TRUEFRENCH"]
- name: replace

View File

@@ -82,7 +82,10 @@
- name: password
type: password
label: Password
- name: info_results
type: info
label: "Search results"
default: "<ol><li>Only the Classic profile is supported.<li>Make sure to set the <b>TorrentList-Layout</b> option in your profile to <b>Klassisches Layout, sehr breite Darstellung.</b><li>And for best results set the <b>Torrents pro Seite</b> to <b>100.</b></ol>"
login:
path: landing.php
method: form
@@ -117,98 +120,60 @@
orderby: "added"
sort: "desc"
rows:
selector: table.tableinborder:has(a[href^="download_ssl.php"])
selector: table.tablebrowse > tbody > tr:has(a[href^="download_ssl.php"])
fields:
title:
selector: a[title][href^="details.php"]
attribute: title
category:
selector: td[style][colspan]
case:
td[style$="#000033;"]:contains("Android"): 65
td[style$="#000033;"]:contains("iOS"): 83
td[style$="#000033;"]:contains("Linux"): 107
td[style$="#000033;"]:contains("MAC"): 48
td[style$="#000033;"]:contains("Sonstige"): 109
td[style$="#000033;"]:contains("Win"): 22
td[style$="#1d2f8c;"]:contains("aBooks"): 24
td[style$="#1d2f8c;"]:contains("Disco's"): 104
td[style$="#1d2f8c;"]:contains("Hörspiel"): 38
td[style$="#1d2f8c;"]:contains("Musik"): 6
td[style$="#1d2f8c;"]:contains("Tracks"): 82
td[style$="#1d2f8c;"]:contains("Videos"): 29
td[style$="#000000;"]:contains("3D"): 113
td[style$="#000000;"]:contains("HD"): 76
td[style$="#000000;"]:contains("Packs"): 78
td[style$="#000000;"]:contains("SD"): 75
td[style$="#000000;"]:contains("Sonstige"): 114
td[style$="#000000;"]:contains("Untouched"): 77
td[style$="#55316e;"]:contains("1080p"): 54
td[style$="#55316e;"]:contains("3D"): 5
td[style$="#55316e;"]:contains("720p"): 55
td[style$="#55316e;"]:contains("Anime"): 111
td[style$="#55316e;"]:contains("BluRay"): 43
td[style$="#55316e;"]:contains("DVDR"): 20
td[style$="#55316e;"]:contains("Int"): 120
td[style$="#55316e;"]:contains("Remux"): 119
td[style$="#55316e;"]:contains("UHD"): 121
td[style$="#55316e;"]:contains("UHD Remux"): 124
td[style$="#55316e;"]:contains("SD"): 36
td[style$="#620000;"]:contains("Anime"): 112
td[style$="#620000;"]:contains("HD"): 69
td[style$="#620000;"]:contains("Int"): 72
td[style$="#620000;"]:contains("Packs"): 68
td[style$="#620000;"]:contains("SD"): 66
td[style$="#620000;"]:contains("TV-Shows"): 108
td[style$="#003300;"]:contains("Diverses"): 117
td[style$="#003300;"]:contains("eBooks"): 28
td[style$="#003300;"]:contains("Sport"): 42
td[style$="#003300;"]:contains("Tutorials"): 103
td[style$="#003300;"]:contains("Wallpaper"): 9
td[style$="#FF00FF;"]:contains("XXX"): 64
td[style$="#FF3300;"]:contains("MAC"): 115
td[style$="#FF3300;"]:contains("Nintendo"): 37
td[style$="#FF3300;"]:contains("PC"): 4
td[style$="#FF3300;"]:contains("PSX"): 58
td[style$="#FF3300;"]:contains("Sonstige"): 116
td[style$="#FF3300;"]:contains("XBOX"): 50
selector: a[href*="cat="]
attribute: href
filters:
- name: querystring
args: cat
comments:
selector: a[href*="&tocomm="]
attribute: href
download:
selector: a[href^="download_ssl.php"]
attribute: href
banner:
selector: a.thumbnail > span > img
attribute: src
grabs:
selector: td:has(a[href*="&tosnatchers="])
selector: td:nth-child(9)
filters:
- name: regexp
args: "(\\d+) x"
args: "(\\d+)"
size:
selector: td:has(a[href*="&filelist="])
selector: td:nth-child(6)
filters:
- name: regexp
args: "(.*?) in"
- name: replace
args: [".", ""]
- name: replace
args: [",", "."]
files:
selector: td:has(a[href*="&filelist="]) > b
selector: a[href*="&filelist=1"]
seeders:
selector: td:has(a[href*="&toseeders="]) > font
selector: td:has(a[href*="&toseeders="])
filters:
- name: regexp
args: "(\\d+)"
leechers:
selector: td:has(a[href*="&todlers="]) > font
selector: td:has(a[href*="&todlers="])
filters:
- name: regexp
args: "(\\d+)"
date:
selector: td:has(a[href*="&tocomm="]) ~ td
selector: td:nth-child(5)
filters:
- name: re_replace
args: ["\\s", " "]
- name: dateparse
args: "02.01.2006 15:04:05"
args: "02.01.200615:04:05"
downloadvolumefactor:
case:
img[src="pic/oupic.gif"]: "0"
img[src="pic/-40.gif"]: "0.6"
"font[color=\"#730d1e\"]:contains(\"[OnlyUpload]\")": "0"
"*": "1"
uploadvolumefactor:
case:

View File

@@ -12,23 +12,20 @@
categorymappings:
- {id: 1, cat: Movies, desc: "Film"}
- {id: 2, cat: TV, desc: "Série"}
- {id: 3, cat: TV/Anime, desc: "Film d'Animation"}
- {id: 5, cat: TV/Sport, desc: "Sport"}
- {id: 3, cat: TV/Anime, desc: "Animés"}
- {id: 5, cat: Audio, desc: "Audios"}
- {id: 6, cat: TV/Documentary, desc: "Documentaire"}
- {id: 7, cat: Audio, desc: "Musique"}
- {id: 8, cat: Audio/Other, desc: "Podcast Audio"}
- {id: 7, cat: Other, desc: "Formations"}
- {id: 13, cat: Books/Ebook, desc: "eBooks"}
- {id: 14, cat: TV, desc: "Spectacle"}
- {id: 14, cat: Console, desc: "Jeux"}
- {id: 15, cat: Audio/Video, desc: "Concert"}
- {id: 18, cat: TV/Anime, desc: "Manga"}
- {id: 19, cat: Books/Comics, desc: "Comics"}
- {id: 20, cat: Books/Comics, desc: "Bande dessinée"}
- {id: 22, cat: Console, desc: "Jeux"}
- {id: 25, cat: PC, desc: "Logiciels"}
- {id: 27, cat: TV, desc: "Spectacles"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
tv-search: [q, season, ep]
movie-search: [q]
login:
path: login
@@ -37,18 +34,14 @@
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: 1
selectorinputs:
_token:
selector: meta[name="csrf-token"]
attribute: content
error:
- selector: form[action$="/login"] span strong
test:
path: /
path: torrents
selector: a[href$="/logout"]
ratio:
path: /
path: torrents
selector: span:has(i.fa-sync-alt)
filters:
- name: regexp
@@ -59,14 +52,11 @@
- path: filterTorrents
inputs:
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
search: "{{ .Keywords }}"
description: ""
uploader: ""
imdb: "{{ .Query.IMDBIDShort }}"
tvdb: ""
tmdb: ""
mal: ""
sorting: created_at
direction: desc
sort: "created_at"
direction: "desc"
qty: 100
rows:
selector: table > tbody > tr
@@ -85,21 +75,17 @@
details:
selector: a.view-torrent
attribute: href
imdb:
selector: a[href^="https://www.imdb.com/title/"]
attribute: href
optional: true
size:
selector: td:nth-child(5)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
selector: td:nth-child(4)
grabs:
selector: td:nth-child(6)
selector: td:nth-child(5)
filters:
- name: regexp
args: ([\d\.]+)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
date:
selector: time
filters:
@@ -117,12 +103,13 @@
args: " ago"
downloadvolumefactor:
case:
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech
"i[data-original-title=\"Freeleech\"]": "0" # Single Torrent Freeleech
"i[data-original-title=\"Global freeleech\"]": "0" # Global Freeleech
"*": "1"
uploadvolumefactor:
case:
"i[data-original-title=\"Global freeleech\"]": "2" # Global Freeleech
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
"*": "1"
# UNIT3D
# UNIT3D 1.?

View File

@@ -139,6 +139,10 @@
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
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
login:
method: form
@@ -159,7 +163,7 @@
keywordsfilters:
# 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})$", "$1"]
args: ["(.*)[sS](\\d{1,4})$", "{{ if .Config.sonarrv3hack }}$1{{else}}$1S$2{{end}}"]
- name: replace
args: ["\"", ""]
- name: trim

View File

@@ -139,6 +139,12 @@ namespace Jackett.Common.Indexers
if (string.IsNullOrWhiteSpace(query.SearchTerm) && !query.IsImdbQuery)
{
var results = await RequestStringWithCookies(TodayUrl);
if (results.IsRedirect)
{
// re-login
await ApplyConfiguration(null);
results = await RequestStringWithCookies(TodayUrl);
}
try
{
const string rowsSelector = "table.torrent_table > tbody > tr:not(tr.colhead)";
@@ -274,6 +280,12 @@ namespace Jackett.Common.Indexers
searchUrl += "?" + queryCollection.GetQueryString();
var results = await RequestStringWithCookies(searchUrl);
if (results.IsRedirect)
{
// re-login
await ApplyConfiguration(null);
results = await RequestStringWithCookies(searchUrl);
}
try
{
const string rowsSelector = "table.torrent_table > tbody > tr:not(tr.colhead)";

View File

@@ -142,7 +142,7 @@ namespace Jackett.Common.Indexers
var qRow = row.Cq();
var qDetails = qRow.Find("div > a[href*=\"details.php?id=\"]"); // details link, release name get's shortened if it's to long
var qTitle = qRow.Find("td:eq(1) .tooltip-content div:eq(0)"); // use Title from tooltip
var qTitle = qRow.Find(".tooltip-content > div:eq(0)"); // use Title from tooltip
if (!qTitle.Any()) // fallback to Details link if there's no tooltip
{
qTitle = qDetails;
@@ -153,7 +153,7 @@ namespace Jackett.Common.Indexers
if (qDesciption.Any())
release.Description = qDesciption.Get(1).InnerText.Trim();
var qLink = row.Cq().Find("td:eq(2) a:eq(1)");
var qLink = row.Cq().Find("a[href*=\"download.php\"]");
release.Link = new Uri(qLink.Attr("href"));
release.Guid = release.Link;
release.Comments = new Uri(qDetails.Attr("href"));
@@ -187,7 +187,11 @@ namespace Jackett.Common.Indexers
else
release.DownloadVolumeFactor = 1;
release.UploadVolumeFactor = 1;
if (qRow.Find("img[title^=\"x2 Torrent\"]").Length >= 1)
release.UploadVolumeFactor = 2;
else
release.UploadVolumeFactor = 1;
releases.Add(release);
}

View File

@@ -10,7 +10,7 @@ namespace Jackett.Common.Indexers
public class Psytorrents : GazelleTracker
{
private static readonly string[] certificateHashs = new string[] {
"455333CC651C249E1A91DFF8EFC2A5F8044FE956", // expired
"8375026D07C1EAE2DCE7157ABF255357366AE341", // expired
};
public Psytorrents(IIndexerConfigurationService configService, WebClient webClient, Logger logger, IProtectionService protectionService)

View File

@@ -8,6 +8,7 @@ using System.Threading.Tasks;
using CsQuery;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig;
using Jackett.Common.Models.IndexerConfig.Bespoke;
using Jackett.Common.Services.Interfaces;
using Jackett.Common.Utils;
using Jackett.Common.Utils.Clients;
@@ -23,9 +24,10 @@ namespace Jackett.Common.Indexers
private string SearchUrl { get { return SiteLink + "browse.php"; } }
private string DownloadUrl { get { return SiteLink + "download.php/{0}/download.torrent"; } }
private new ConfigurationDataRecaptchaLogin configData
private new ConfigurationDataSceneTime configData
{
get { return (ConfigurationDataRecaptchaLogin)base.configData; }
get { return (ConfigurationDataSceneTime)base.configData; }
set { base.configData = value; }
}
@@ -38,7 +40,7 @@ namespace Jackett.Common.Indexers
client: w,
logger: l,
p: ps,
configData: new ConfigurationDataRecaptchaLogin("For best results, change the 'Torrents per page' setting to the maximum in your profile on the SceneTime webpage."))
configData: new ConfigurationDataSceneTime())
{
Encoding = Encoding.GetEncoding("iso-8859-1");
Language = "en-us";
@@ -183,6 +185,11 @@ namespace Jackett.Common.Indexers
qParams.Add("search", query.GetQueryString());
}
// If Only Freeleech Enabled
if (configData.Freeleech.Value)
{
qParams.Add("freeleech", "on");
}
var searchUrl = SearchUrl + "?" + qParams.GetQueryString();
var results = await RequestStringWithCookies(searchUrl);

View File

@@ -8,7 +8,7 @@
<ItemGroup>
<PackageReference Include="AngleSharp" Version="0.11.0" />
<PackageReference Include="Autofac" Version="4.9.1" />
<PackageReference Include="Autofac" Version="4.9.2" />
<PackageReference Include="AutoMapper" Version="8.0.0" />
<PackageReference Include="BencodeNET" Version="2.3.0" />
<PackageReference Include="CloudFlareUtilities" Version="1.3.0" />
@@ -20,11 +20,11 @@
<PackageReference Include="Microsoft.CSharp" Version="4.5.0" />
<PackageReference Include="MimeMapping" Version="1.0.1.12" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
<PackageReference Include="NLog" Version="4.5.11" />
<PackageReference Include="NLog" Version="4.6.0" />
<PackageReference Include="SharpZipLib" Version="1.1.0" />
<PackageReference Include="System.IO.FileSystem.AccessControl" Version="4.5.0" />
<PackageReference Include="System.ServiceProcess.ServiceController" Version="4.5.0" />
<PackageReference Include="YamlDotNet" Version="5.4.0" />
<PackageReference Include="YamlDotNet" Version="6.0.0" />
</ItemGroup>
<ItemGroup>

View File

@@ -0,0 +1,21 @@
namespace Jackett.Common.Models.IndexerConfig.Bespoke
{
public class ConfigurationDataSceneTime : ConfigurationData
{
public StringItem Username { get; private set; }
public StringItem Password { get; private set; }
public RecaptchaItem Captcha { get; private set; }
public BoolItem Freeleech { get; private set; }
public DisplayItem Instructions { get; private set; }
public ConfigurationDataSceneTime()
: base()
{
Username = new StringItem { Name = "Username" };
Password = new StringItem { Name = "Password" };
Captcha = new RecaptchaItem() { Name = "Recaptcha" };
Freeleech = new BoolItem() { Name = "Freeleech Only (Optional)", Value = false };
Instructions = new DisplayItem("For best results, change the 'Torrents per page' setting to the maximum in your profile on the SceneTime webpage.") { Name = "" };
}
}
}

View File

@@ -14,6 +14,7 @@ using Jackett.Common.Models.Config;
using Jackett.Common.Services.Interfaces;
using NLog;
using Jackett.Common.Helpers;
using System.Diagnostics;
namespace Jackett.Common.Utils.Clients
{
@@ -23,6 +24,34 @@ namespace Jackett.Common.Utils.Clients
static protected string webProxyUrl;
static protected IWebProxy webProxy;
[DebuggerNonUserCode] // avoid "Exception User-Unhandled" Visual Studio messages
static public bool ValidateCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if (sender.GetType() != typeof(HttpWebRequest))
return sslPolicyErrors == SslPolicyErrors.None;
var request = (HttpWebRequest)sender;
var hash = certificate.GetCertHashString();
ICollection<string> hosts;
trustedCertificates.TryGetValue(hash, out hosts);
if (hosts != null)
{
if (hosts.Contains(request.Host))
return true;
}
if (sslPolicyErrors != SslPolicyErrors.None)
{
// Throw exception with certificate details, this will cause a "Exception User-Unhandled" when running it in the Visual Studio debugger.
// The certificate is only available inside this function, so we can't catch it at the calling method.
throw new Exception("certificate validation failed: " + certificate.ToString());
}
return sslPolicyErrors == SslPolicyErrors.None;
}
static public void InitProxy(ServerConfig serverConfig)
{
// dispose old SocksWebProxy
@@ -100,30 +129,7 @@ namespace Jackett.Common.Utils.Clients
}
// custom handler for our own internal certificates
ServicePointManager.ServerCertificateValidationCallback += delegate (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if (sender.GetType() != typeof(HttpWebRequest))
return sslPolicyErrors == SslPolicyErrors.None;
var request = (HttpWebRequest)sender;
var hash = certificate.GetCertHashString();
ICollection<string> hosts;
trustedCertificates.TryGetValue(hash, out hosts);
if (hosts != null)
{
if (hosts.Contains(request.Host))
return true;
}
if (sslPolicyErrors != SslPolicyErrors.None)
{
throw new Exception("certificate validation failed: " + certificate.ToString());
}
return sslPolicyErrors == SslPolicyErrors.None;
};
ServicePointManager.ServerCertificateValidationCallback += ValidateCertificate;
}
override protected async Task<WebClientByteResult> Run(WebRequest webRequest)

View File

@@ -14,6 +14,7 @@ using Jackett.Common.Models.Config;
using Jackett.Common.Services.Interfaces;
using NLog;
using Jackett.Common.Helpers;
using System.Diagnostics;
namespace Jackett.Common.Utils.Clients
{
@@ -30,6 +31,34 @@ namespace Jackett.Common.Utils.Clients
static protected string webProxyUrl;
static protected IWebProxy webProxy;
[DebuggerNonUserCode] // avoid "Exception User-Unhandled" Visual Studio messages
static public bool ValidateCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if (sender.GetType() != typeof(HttpWebRequest))
return sslPolicyErrors == SslPolicyErrors.None;
var request = (HttpWebRequest)sender;
var hash = certificate.GetCertHashString();
ICollection<string> hosts;
trustedCertificates.TryGetValue(hash, out hosts);
if (hosts != null)
{
if (hosts.Contains(request.Host))
return true;
}
if (sslPolicyErrors != SslPolicyErrors.None)
{
// Throw exception with certificate details, this will cause a "Exception User-Unhandled" when running it in the Visual Studio debugger.
// The certificate is only available inside this function, so we can't catch it at the calling method.
throw new Exception("certificate validation failed: " + certificate.ToString());
}
return sslPolicyErrors == SslPolicyErrors.None;
}
static public void InitProxy(ServerConfig serverConfig)
{
// dispose old SocksWebProxy
@@ -134,30 +163,7 @@ namespace Jackett.Common.Utils.Clients
ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
// custom handler for our own internal certificates
ServicePointManager.ServerCertificateValidationCallback += delegate (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
if (sender.GetType() != typeof(HttpWebRequest))
return sslPolicyErrors == SslPolicyErrors.None;
var request = (HttpWebRequest)sender;
var hash = certificate.GetCertHashString();
ICollection<string> hosts;
trustedCertificates.TryGetValue(hash, out hosts);
if (hosts != null)
{
if (hosts.Contains(request.Host))
return true;
}
if (sslPolicyErrors != SslPolicyErrors.None)
{
throw new Exception("certificate validation failed: " + certificate.ToString());
}
return sslPolicyErrors == SslPolicyErrors.None;
};
ServicePointManager.ServerCertificateValidationCallback += ValidateCertificate;
}
override protected async Task<WebClientByteResult> Run(WebRequest webRequest)

View File

@@ -14,6 +14,7 @@ using Jackett.Common.Models.Config;
using Jackett.Common.Services.Interfaces;
using NLog;
using Jackett.Common.Helpers;
using System.Diagnostics;
namespace Jackett.Common.Utils.Clients
{
@@ -24,6 +25,32 @@ namespace Jackett.Common.Utils.Clients
static protected string webProxyUrl;
static protected IWebProxy webProxy;
[DebuggerNonUserCode] // avoid "Exception User-Unhandled" Visual Studio messages
static public bool ValidateCertificate(HttpRequestMessage request, X509Certificate2 certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
{
var hash = certificate.GetCertHashString();
ICollection<string> hosts;
trustedCertificates.TryGetValue(hash, out hosts);
if (hosts != null)
{
if (hosts.Contains(request.RequestUri.Host))
return true;
}
if (sslPolicyErrors != SslPolicyErrors.None)
{
// Throw exception with certificate details, this will cause a "Exception User-Unhandled" when running it in the Visual Studio debugger.
// The certificate is only available inside this function, so we can't catch it at the calling method.
throw new Exception("certificate validation failed: " + certificate.ToString());
}
return sslPolicyErrors == SslPolicyErrors.None;
}
}
static public void InitProxy(ServerConfig serverConfig)
{
// dispose old SocksWebProxy
@@ -137,26 +164,7 @@ namespace Jackett.Common.Utils.Clients
})
{
// custom certificate validation handler (netcore version)
clientHandlr.ServerCertificateCustomValidationCallback = (request, certificate, chain, sslPolicyErrors) =>
{
var hash = certificate.GetCertHashString();
ICollection<string> hosts;
trustedCertificates.TryGetValue(hash, out hosts);
if (hosts != null)
{
if (hosts.Contains(request.RequestUri.Host))
return true;
}
if (sslPolicyErrors != SslPolicyErrors.None)
{
throw new Exception("certificate validation failed: " + certificate.ToString());
}
return sslPolicyErrors == SslPolicyErrors.None;
};
clientHandlr.ServerCertificateCustomValidationCallback = ValidateCertificate;
clearanceHandlr.InnerHandler = clientHandlr;
using (var client = new HttpClient(clearanceHandlr))

View File

@@ -27,7 +27,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Autofac" Version="4.9.1" />
<PackageReference Include="Autofac" Version="4.9.2" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.4.0" />
<PackageReference Include="AutoMapper" Version="8.0.0" />
<PackageReference Include="CommandLineParser" Version="2.4.3" />
@@ -39,8 +39,8 @@
<PackageReference Include="Microsoft.AspNetCore.Rewrite" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.2.0" />
<PackageReference Include="NLog" Version="4.5.11" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.8.0" />
<PackageReference Include="NLog" Version="4.6.0" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.8.1" />
<PackageReference Include="System.ServiceProcess.ServiceController" Version="4.5.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.5.1" />
</ItemGroup>

View File

@@ -21,14 +21,14 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Autofac" Version="4.9.1" />
<PackageReference Include="Autofac" Version="4.9.2" />
<PackageReference Include="FluentAssertions" Version="5.6.0" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection" Version="2.2.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
<PackageReference Include="MSTest.TestAdapter" Version="1.4.0" />
<PackageReference Include="MSTest.TestFramework" Version="1.4.0" />
<PackageReference Include="NUnit" Version="3.11.0" />
<PackageReference Include="NUnit.ConsoleRunner" Version="3.9.0" />
<PackageReference Include="NUnit.ConsoleRunner" Version="3.10.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.13.0" />
</ItemGroup>

View File

@@ -269,9 +269,6 @@ namespace Jackett.Updater
"appsettings.Development.json",
"CurlSharp.dll",
"CurlSharp.pdb",
"Jackett.dll",
"Jackett.dll.config",
"Jackett.pdb",
"Autofac.Integration.WebApi.dll",
"Microsoft.Owin.dll",
"Microsoft.Owin.FileSystems.dll",