Compare commits

...

99 Commits

Author SHA1 Message Date
Garfield69
d457cd336d cinecalidad:vnew layout #12830 2022-01-16 07:15:26 +13:00
ilike2burnthing
c254acfc46 newpct: bump domain, pt2
follow up to #12812
2022-01-15 16:54:35 +00:00
tomaskazragis
6c5a005e27 torrent.lt: fixed login, added user/password to settings (#12829) 2022-01-15 13:26:58 +00:00
Garfield69
a2b1604052 torrentqq: bump domain 2022-01-15 16:01:44 +13:00
tomaskazragis
562c826cfa torrent.lt: drop cookie method (#12824) 2022-01-15 12:29:36 +13:00
Garfield69
af1002d57e Revert "spidertk: switch to cookie method. resolves #12718"
This reverts commit b17c2482d0.
2022-01-15 06:13:10 +13:00
Garfield69
212e03ec7f trackeors: fix cats. resolves #12808 2022-01-14 14:24:37 +13:00
ilike2burnthing
56a2b7f2a0 issue_template: last fix 2022-01-13 19:37:47 +00:00
ilike2burnthing
a23b6fc673 issue_template: typo fix 2022-01-13 19:35:54 +00:00
ilike2burnthing
b90f15b37f issue_templates: update (#12815) 2022-01-13 19:27:31 +00:00
Garfield69
1299a1aa72 Update TodoTorrents.cs 2022-01-14 07:10:19 +13:00
Lyuu
e524572af3 todotorrents: new indexer (#12813) 2022-01-14 07:06:17 +13:00
ilike2burnthing
533ecae219 contributing: update for vs2022 (#12811) 2022-01-14 06:44:22 +13:00
Lyuu
a3d3456f41 newpct: bump domain (#12812) 2022-01-14 06:43:54 +13:00
Garfield69
e19e3e820b torrentsir: bump domain 2022-01-13 08:16:46 +13:00
Garfield69
e7859b2db5 docspedia: add new cat 2022-01-13 08:14:04 +13:00
Garfield69
98c5c2f149 extremetorrents: try downloadv1.php else download.php resolves #12617 2022-01-12 21:15:15 +13:00
ilike2burnthing
11e4fce764 trackeros: switch to API 2022-01-12 08:14:30 +00:00
Garfield69
fe3dc0f766 trackeros: update. #12808 2022-01-12 19:24:51 +13:00
Garfield69
a7cd5e442e trackeros: switch to unit3d 5.3.0 api. #12808
untested, the categories need to be confirmed.
2022-01-12 19:20:53 +13:00
Garfield69
650cc8bb9a pornorip: removed. resolves #7524 2022-01-12 16:06:00 +13:00
dctorrent1337
5b357e6019 bj-share: Update categories (#12806) 2022-01-12 14:13:10 +13:00
Garfield69
50bdadc18d add hawke-uno a private site. resolves #12804 2022-01-11 20:26:09 +13:00
Garfield69
dfc27a7434 polishsource: fix for error from #11917 resolves #12484 2022-01-11 09:19:46 +13:00
ilike2burnthing
4aec424e0a alleenretail: restore indexer, site back up. #12557 (#12801) 2022-01-10 09:29:44 +00:00
Garfield69
ad86088b3c Update README.md 2022-01-10 18:19:45 +13:00
Garfield69
a101eec991 Update README.md 2022-01-10 15:25:16 +13:00
Garfield69
f1c6dca9bf secretcinema: drop artist from release titles. resolves #12799 2022-01-10 14:56:04 +13:00
Diego Heras
bd13e1256f core: Implement /health endpoint (healthcheck). Resolves #12784 (#12798) 2022-01-09 23:15:50 +01:00
ilike2burnthing
c01b8a3a33 digitalcore: update categories, pt2 #12794 2022-01-09 18:44:00 +00:00
Diego Heras
7ac6c43040 digitalcore: update categories. resolves #12794 (#12796) 2022-01-09 19:38:45 +01:00
Diego Heras
1f0751f634 core: make FlareSolverr Max Timeout configurable. resolves #12750 (#12795) 2022-01-09 19:38:14 +01:00
Garfield69
c6b575b79c cpasbienclone: new search path. resolves #12791 2022-01-10 06:37:16 +13:00
ilike2burnthing
8e4d797d1b assorted: remove unrelated results (#12790) 2022-01-10 06:08:58 +13:00
ilike2burnthing
fa5bf831f6 torrentby: change to http 2022-01-08 11:22:22 +00:00
ilike2burnthing
ae33faa652 hdu: ignore expired certificate 2022-01-08 11:09:30 +00:00
ilike2burnthing
bac28c0302 danishbytes: add official mirror *2.org 2022-01-08 04:20:52 +00:00
Garfield69
271f4d45e5 anime-free: expired CA 2022-01-08 17:17:54 +13:00
Garfield69
53c61453a6 oncesearch: removed. resolves #10539 2022-01-08 17:11:45 +13:00
Garfield69
6a15031197 torrentqq: bump domain 2022-01-08 17:08:36 +13:00
Garfield69
e5c19c246c krazyzone: config info about 0 results 2022-01-08 16:48:35 +13:00
Garfield69
3a184f41a2 moviesite: set to semi-private 2022-01-08 16:36:26 +13:00
Garfield69
ec42b35aba pier720: set to semi-private. resolves #12785 2022-01-08 15:37:41 +13:00
Garfield69
d4bd5d747d animeworld: alter order to prevent false match. #12022 2022-01-08 08:48:03 +13:00
Garfield69
ef40af260b animeworld: update categories. resolves #12022 2022-01-08 08:43:51 +13:00
Garfield69
b17c2482d0 spidertk: switch to cookie method. resolves #12718 2022-01-07 17:21:17 +13:00
Garfield69
67db83ac07 Update README.md 2022-01-07 16:14:00 +13:00
Garfield69
6e9ed2973f SkipTheCommercials: replaced by SkipTheCommercials(API) #8682 2022-01-07 13:32:48 +13:00
Garfield69
23a01eb8d2 TellyTorrent: replaced by TellyTorrent(API) #8682 2022-01-07 13:31:31 +13:00
Garfield69
23891d5cba Shareisland: replaced by Shareisland(API) #8682 2022-01-07 13:30:08 +13:00
Garfield69
03df949e4f Aither: replaced by Aither(API) #8682 2022-01-07 13:28:42 +13:00
Garfield69
82d97331c9 DataScene: replaced by DataScene(API) #8682 2022-01-07 13:27:41 +13:00
Garfield69
1265a6aa53 ReelFLiX: replaced by ReelFLiX(API) #8682 2022-01-07 13:26:40 +13:00
Garfield69
73aea6f5ff BrSociety: replaced by BrSociety(API) #8682 2022-01-07 13:24:04 +13:00
Garfield69
aaf7b7d9e0 AnimeWorld: replaced by AnimeWorld(API) #8682 2022-01-07 13:22:15 +13:00
Garfield69
af5c32e3aa DesiTorrents: replaced by DesiTorrents (API) #8682 2022-01-07 13:19:29 +13:00
Garfield69
41f66b15b4 blutopia: replaced by Blutopia (API) #8682 2022-01-07 13:16:37 +13:00
Garfield69
9b67eef230 blutopia: new torrents page html. resolves #12775 2022-01-07 09:07:02 +13:00
ilike2burnthing
caeeb8cde2 assorted: change unblockit proxy domain *.how (#12773) 2022-01-06 05:27:51 +00:00
Maxim Grishin
5d99a7c90b Make select style applied to all (#12772) 2022-01-06 09:26:44 +13:00
Garfield69
de6949f303 demonoid: new layout
now includes posters and imdb
2022-01-05 18:36:01 +13:00
ilike2burnthing
c95b34953d piratbit: change domain pb.wtf & top.*.fun. resolves #4537 (#12771) 2022-01-05 04:21:14 +00:00
Garfield69
8f2d24a4fd add mediamaatjes a Dutch private site. resolves #12767 2022-01-05 07:07:36 +13:00
Garfield69
7572fb10db extremetorrents: revert downloadv1 #12617 2022-01-05 06:32:34 +13:00
ilike2burnthing
ffdedd4d03 chilebt: add MST 2022-01-04 08:42:05 +00:00
Garfield69
788e512443 tvroad: lint fix #12760 2022-01-03 20:53:22 +13:00
Garfield69
e1a8d33465 add tvroad a French private site. resolves #12760 2022-01-03 20:41:42 +13:00
Garfield69
fee79f5997 freshmeat: ca expired. resolves #12698 2022-01-03 17:10:24 +13:00
Garfield69
d90b339f9c bitbasiz: add new cat 2022-01-03 12:51:08 +13:00
ilike2burnthing
678145d372 mircrew: don't search in subforums 2022-01-02 08:17:24 +00:00
ilike2burnthing
8b15b76941 bitbazis: update layout and login 2022-01-02 04:26:24 +00:00
ilike2burnthing
40da709e0a ilcorsaroverde: lint fix 2022-01-02 04:16:02 +00:00
ilike2burnthing
dc7ce8fd3e mircrew: typo fix 2022-01-02 04:11:15 +00:00
ilike2burnthing
f295f75c2b torrent9: use Windows UA, unix UA is blocked 2022-01-02 03:58:41 +00:00
ilike2burnthing
88d401fcc8 mircrew: update categories
Basically the same as ilcorsaroverde. Also the same, there can be multiple magnets for a single result, but they're behind the thanks button, so unless you thank every result there is no way of resolving this.
2022-01-02 03:31:55 +00:00
ilike2burnthing
a968966938 hdturk: update categories 2022-01-02 02:38:42 +00:00
ilike2burnthing
cd0e959351 torrentwhiz: change domain *36.com 2022-01-02 02:22:04 +00:00
ilike2burnthing
2e1c50ec92 torrentqq: change domain *123.com 2022-01-02 02:20:49 +00:00
ilike2burnthing
471618a6b9 tests: update reference year 2022-01-02 01:18:01 +00:00
Tom Homewood
1df455826a SceneHD: new certificate thumbprint (#12762) 2022-01-02 13:54:02 +13:00
Garfield69
f3048ad71c asiandvdclub: removed. resolves #11994 2022-01-01 12:27:33 +13:00
Garfield69
a211ae9af8 alleenretail: removed. resolves #12557 2022-01-01 08:24:14 +13:00
Uilton Oliveira
434d574867 bjshare: use cookie login method. resolves #12756 (#12757)
should also resolve #12746
2021-12-31 17:35:30 +00:00
ilike2burnthing
627864111f tests: update expected year 2021-12-31 17:23:08 +00:00
ilike2burnthing
2bf3526033 torrentseeds-api: minor edits 2021-12-30 03:06:07 +00:00
Mouton99
d8a48b2e50 TorrentSeeds now uses UNIT3D (#12752) 2021-12-30 14:33:23 +13:00
ilike2burnthing
3cd1b44896 Revert "New .in Url for ilcorsaronero (#12744)" pt3
would help if I actually paid attention...
2021-12-29 19:58:23 +00:00
ilike2burnthing
21850bf6a1 Revert "New .in Url for ilcorsaronero (#12744)" pt2 2021-12-29 19:18:04 +00:00
AlexR00T
82eeb1e4d3 Revert "New .in Url for ilcorsaronero (#12744)" (#12748) 2021-12-29 16:52:17 +00:00
diemade
1766de2a76 pornbay.org; Strings from site (#12741) 2021-12-29 09:04:24 +13:00
AlexR00T
d1b14e45ff New .in Url for ilcorsaronero (#12744) 2021-12-29 09:03:16 +13:00
diemade
27d88b4f49 readme: synocommunity package link added (#12740) 2021-12-28 14:24:31 +00:00
Garfield69
6d3903235a torrentz2eu: new domain 2021-12-27 14:16:16 +13:00
Garfield69
905f751a6f torrentview: bump domain 2021-12-27 14:16:01 +13:00
Garfield69
bad0076248 torrentqq: bump domain 2021-12-27 14:15:50 +13:00
Garfield69
cbea57b22a whiteangel: add new cat 2021-12-27 08:46:28 +13:00
ilike2burnthing
3b00646ac9 newpct: change domain *.net. resolves #12736
*.one isn't providing download links anymore
2021-12-26 06:22:22 +00:00
Garfield69
f61a2b4740 pornolab: add new cats resolves #12731 2021-12-24 07:12:52 +13:00
Garfield69
f890ddd119 danishbytes: new domain resolves #10758 2021-12-24 06:52:07 +13:00
107 changed files with 2092 additions and 3480 deletions

View File

@@ -51,6 +51,7 @@ body:
description: |
Place any relevant error messages you noticed from the logs here.
Make sure you attach the full logs with your personal information removed in case we need more information.
render: text
validations:
required: true
- type: textarea

View File

@@ -32,11 +32,11 @@ body:
- Minimum Seeding Time and Minimum Ratio (if Private): MST 24hrs, MR 1.0
- Additional Comments: IMDB search has to be enabled in account settings, often has hcaptcha at login
value: |
- Name:
- URL:
- Description:
- Minimum Seeding Time and Minimum Ratio (if Private):
- Additional Comments:
- Name:
- URL:
- Description:
- Minimum Seeding Time and Minimum Ratio (if Private):
- Additional Comments:
render: markdown
validations:
required: true

View File

@@ -104,24 +104,31 @@ We've developed the guide below to make sure we're all on the same page because
The following guide assumes you've never worked with a Visual Studio project with GitHub before.
This will give you the minimum necessary tools to get started. There are plenty of optional tools that may help you, but we won't cover those here.
- The guide is currently only geared towards developing on Windows using Visual Studio Community 2019.
- The guide is currently only geared towards developing on Windows using Visual Studio Community 2022.
If you use something else, please add it here for others.
<details open=true> <summary> Windows </summary>
<details open=true> <summary> Visual Studio 2019 </summary>
<details open=true> <summary> Visual Studio 2022 </summary>
- Install [Visual Studio Community 2019](http://visualstudio.com) for free.
- Install [Visual Studio Community 2022](https://visualstudio.microsoft.com/vs/) for free.
- About 2GB download. 8GB installed.
- Make sure it includes the following Workloads/Components:
- .Net Desktop Development
- .Net Core Cross-Platform Development
- GitHub extension for Visual Studio
- [Connect and synchronize your forked repository to Visual Studio](https://doc.fireflymigration.com/working-with-github-fork-in-visual-studio.html)
- Open `Tools -> NuGet Package Manager -> Package Manager Console`
- From the PMC, run `dotnet tool install -g dotnet-format` and `dotnet restore`
- Run `Build -> Rebuild Solution` to restore NuGet packages
- Ensure `Jackett.Server` is the Startup Project (instead of `Jackett.Service`), and the Run Target (instead of `IIS Express`)
- Make sure it includes the following Workload and Individual Components:
- .NET desktop development
- .Net Framework 4.6.1 SDK
- .Net Framework 4.6.1 targeting pack
- From the `Get Started` screen:
- `Clone a repository -> Browse a repository -> GitHub -> Sign in -> clone your forked repository`
- Double-click `Jackett.sln` in `Solution Explorer` to load your project
- Ensure `Jackett.Server` is the Startup Project (instead of `Jackett.Service`) and the Run Target (instead of `IIS Express`)
- Open `Tools -> NuGet Package Manager -> Package Manager Console`
- From the PMC, with `Jackett.Service` as the default project, run:
- `dotnet tool install -g dotnet-format`
- `dotnet msbuild /restore`
- `dotnet restore`
- `dotnet build`
- [For more information on working with your forked GitHub repository in Visual Studio](https://doc.fireflymigration.com/working-with-github-fork-in-visual-studio.html)
- UPDATE: changes are now made in `Git Changes` and `Git Repository` (instead of `Team Explorer`)
</details>

View File

@@ -104,7 +104,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* NNTT
* NoNaMe Club (NNM-Club)
* Nyaa.si
* OnceSearch
* OneJAV
* OpenSharing
* OxTorrent
@@ -115,7 +114,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* Pornforall
* PornLeech
* PornoLive
* PornoRip
* PornosLab
* PornoTor
* PornoTorrent
@@ -138,6 +136,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* sosulki
* SubsPlease
* sukebei.Nyaa.si
* TodoTorrents
* The Pirate Bay (TPB)
* Tokyo Tosho
* Torlock
@@ -181,6 +180,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
<details> <summary> <b> Supported Semi-Private Trackers </b> </summary>
* 720pier
* AniDUB
* Anime-Free
* AnimeLayer
@@ -246,7 +246,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* 3D Torrents (3DT) [![(invite needed)][inviteneeded]](#)
* 4thD (4th Dimension)
* 52PT
* 720pier
* Abnormal
* ABtorrents (ABT + RNS)
* Acid Lounge (A-L)
@@ -265,7 +264,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* Araba Fenice (Phoenix) [![(invite needed)][inviteneeded]](#)
* ArabP2P
* AsianCinema
* AsianDVDClub
* AudioNews (AN)
* Aussierul.es [![(invite needed)][inviteneeded]](#)
* AvistaZ (AsiaTorrents)
@@ -370,6 +368,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* HaiDan
* Haitang
* HappyFappy
* Hawke-uno
* HD Dolby
* HD-Bits.com [![(invite needed)][inviteneeded]](#)
* HD-Forever (HDF)
@@ -403,7 +402,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* Il Corsaro Verde
* Indietorrents [![(invite needed)][inviteneeded]](#)
* IPTorrents (IPT)
* ImmortalSeed (iS) [![(invite needed)][inviteneeded]](#)
* ImmortalSeed (iS)
* Immortuos [![(invite needed)][inviteneeded]](#)
* Insane Tracker
* IPTorrents (IPT)
@@ -429,6 +428,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* magic-heaven
* Magico (Trellas) [![(invite needed)][inviteneeded]](#)
* Majomparádé (TurkDepo)
* MediaMaatjes
* MegamixTracker
* MeseVilág (Fairytale World)
* MicroBit (µBit)
@@ -491,7 +491,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* RacingForMe (RFM)
* RedBits
* Red Star Torrent (RST) [![(invite needed)][inviteneeded]](#)
* Redacted (PassTheHeadphones) [![(invite needed)][inviteneeded]](#)
* Redacted (PassTheHeadphones)
* Resurrect The Net
* RetroFlix
* RevolutionTT
@@ -575,6 +575,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* TurkSeed
* TurkTorrent (TT)
* TV Chaos UK (TVCUK)
* TvRoad
* TVstore
* Twilight Torrents
* Twilights Zoom
@@ -734,7 +735,7 @@ Detailed instructions are available at [LinuxServer.io Jackett Docker](https://h
## Installation on Synology
Jackett is available as a beta package from [SynoCommunity](https://synocommunity.com/)
Jackett is available as a [beta package](https://synocommunity.com/package/jackett) from [SynoCommunity](https://synocommunity.com/)
## Running Jackett behind a reverse proxy
@@ -778,6 +779,7 @@ For these cases, [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr) ha
Setting up this service is optional, most indexers don't need it.
* Install FlareSolverr service (following their instructions)
* Configure **FlareSolverr API URL** in Jackett. For example: http://172.17.0.2:8191
* It is recommended to keep the default value in **FlareSolverr Max Timeout (ms)**
## Configuring OMDb
This feature is used as a fallback (when using the aggregate Indexer) to get the movie/series title if only the IMDB ID is provided in the request.

View File

@@ -247,7 +247,7 @@ pre {
white-space: nowrap;
}
.dataTables_length select, .dataTables_filter input, .dataTable.compact tfoot td select {
.dataTables_filter input, select {
display: inline-block;
height: 26px;
padding: 0 8px;

View File

@@ -130,6 +130,7 @@ function loadJackettSettings() {
}
$("#jackett-flaresolverrurl").val(data.flaresolverrurl);
$("#jackett-flaresolverr-maxtimeout").val(data.flaresolverr_maxtimeout);
$("#jackett-omdbkey").val(data.omdbkey);
$("#jackett-omdburl").val(data.omdburl);
var password = data.password;
@@ -1500,6 +1501,7 @@ function bindUIButtons() {
var jackett_cache_ttl = $("#jackett-cache-ttl").val();
var jackett_cache_max_results_per_indexer = $("#jackett-cache-max-results-per-indexer").val();
var jackett_flaresolverr_url = $("#jackett-flaresolverrurl").val();
var jackett_flaresolverr_maxtimeout = $("#jackett-flaresolverr-maxtimeout").val();
var jackett_omdb_key = $("#jackett-omdbkey").val();
var jackett_omdb_url = $("#jackett-omdburl").val();
@@ -1522,6 +1524,7 @@ function bindUIButtons() {
cache_ttl: jackett_cache_ttl,
cache_max_results_per_indexer: jackett_cache_max_results_per_indexer,
flaresolverrurl: jackett_flaresolverr_url,
flaresolverr_maxtimeout: jackett_flaresolverr_maxtimeout,
omdbkey: jackett_omdb_key,
omdburl: jackett_omdb_url,
proxy_type: jackett_proxy_type,

View File

@@ -231,7 +231,7 @@ pre {
white-space: nowrap;
}
.dataTables_length select, .dataTables_filter input, .dataTable.compact tfoot td select {
.dataTables_filter input, select {
display: inline-block;
height: 26px;
padding: 0 8px;

View File

@@ -28,8 +28,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="../css/tagify.css?changed=11662">
<link rel="stylesheet" type="text/css" href="../custom.css?changed=PR12083" media="only screen and (min-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom_mobile.css?changed=11662" media="only screen and (max-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom.css?changed=PR12772" media="only screen and (min-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom_mobile.css?changed=PR12772" 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">
@@ -191,16 +191,20 @@
</div>
<div class="input-area">
<span class="input-header">Cache TTL (seconds): </span>
<input id="jackett-cache-ttl" class="form-control input-right" type="text" value="" placeholder="">
<input id="jackett-cache-ttl" class="form-control input-right" type="text" value="" placeholder="2100">
</div>
<div class="input-area">
<span class="input-header">Cache max results per indexer: </span>
<input id="jackett-cache-max-results-per-indexer" class="form-control input-right" type="text" value="" placeholder="">
<input id="jackett-cache-max-results-per-indexer" class="form-control input-right" type="text" value="" placeholder="1000">
</div>
<div class="input-area">
<span class="input-header">FlareSolverr API URL: </span>
<input id="jackett-flaresolverrurl" class="form-control input-right" type="text" value="" placeholder="Blank for default">
</div>
<div class="input-area">
<span class="input-header">FlareSolverr Max Timeout (ms): </span>
<input id="jackett-flaresolverr-maxtimeout" class="form-control input-right" type="text" value="" placeholder="55000">
</div>
<div class="input-area">
<span class="input-header">OMDB API key: </span>
<input id="jackett-omdbkey" class="form-control input-right" type="text" value="" placeholder="">
@@ -732,6 +736,6 @@
</script>
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></script>
<script type="text/javascript" src="../custom.js?changed=2021103101"></script>
<script type="text/javascript" src="../custom.js?changed=2022010901"></script>
</body>
</html>

View File

@@ -13,27 +13,9 @@ links:
- https://x1337x.ws/
- https://x1337x.eu/
- https://x1337x.se/
- https://1337x.unblockit.tv/
- https://1337x.unblockit.how/
- https://1337x.nocensor.biz/
legacylinks:
- https://1337x.unblocked.earth/
- https://1337x.unblockit.pro/
- https://1337x.unblockit.one/
- https://1337x.black-mirror.xyz/
- https://1337x.unblocked.casa/
- https://1337x.proxyportal.fun/
- https://1337x.uk-unblock.xyz/
- https://1337x.ind-unblock.xyz/
- https://1337x.unblockninja.com/ # 403 Forbidden
- https://1337x.unblockit.me/
- https://1337x.unblockit.pw/
- https://1337x.unblockit.id/
- https://1337x.unblockit.win/
- https://1337x.unblocked.bar/
- https://1337x.proxyportal.pw/
- https://1337x.uk-unblock.pro/
- https://1337x.unblockit.top/
- https://1337x.unblockit.lat/
- https://1337x.unblockit.app/
- https://1337.root.yt/
- https://1337x.unblocked.rest/
@@ -53,6 +35,7 @@ legacylinks:
- https://1337x.nocensor.work/
- https://1337x.unblockit.kim/
- https://1337x.unblockit.bz/
- https://1337x.unblockit.tv/
caps:
categorymappings:

View File

@@ -1,196 +0,0 @@
---
id: aither
name: Aither
description: "Aither is a Private Torrent Tracker for HD MOVIES / TV"
language: en-US
type: private
encoding: UTF-8
links:
- https://aither.cc/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movie"}
- {id: 9, cat: TV/Sport, desc: "Sport"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Music"}
- {id: 4, cat: Console, desc: "Games"}
- {id: 10, cat: PC, desc: "Software & Apps"}
- {id: 11, cat: Books, desc: "Ebooks & Magazines"}
- {id: 14, cat: Audio/Audiobook, desc: "Audiobooks"}
- {id: 15, cat: Other, desc: "Education"}
- {id: 6, cat: XXX, desc: "XXX"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: login
method: form
form: form[action$="/login"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: on
selectorinputs:
_token:
selector: input[name="_token"]
attribute: value
error:
- selector: div#ERROR_COPY
# test:
# path: /
# selector: a[href$="/logout"]
search:
paths:
- path: torrents
inputs:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
name: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
description: ""
mediainfo: ""
keywords: ""
uploader: ""
tmdbId: "{{ .Query.TMDBID }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tvdbId: "{{ .Query.TVDBID }}"
malId: ""
startYear: ""
endYear: ""
playlistId: ""
collectionId: ""
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
page: 1
free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/(\\d+)"
title:
selector: a.view-torrent
download:
selector: a[href*="/download/"]
attribute: href
details:
selector: a.view-torrent
attribute: href
poster:
selector: div.torrent-poster img
attribute: src
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
- name: replace
args: ["https://via.placeholder.com/400x600", ""]
size:
selector: td:nth-last-child(5)
seeders:
selector: td:nth-last-child(4)
leechers:
selector: td:nth-last-child(3)
grabs:
selector: td:nth-last-child(2)
date:
selector: td:nth-last-child(1)
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
- name: re_replace
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前|sedan)", " ago"]
- name: re_replace
args: ["(?i)(saniye|sekundit|sekunder|secondi|sekund|segundos|sekundami|секунд|secunde|secondes|Sekunden|секунди|seconden|秒前)", "seconds"]
- name: re_replace
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten|minuter)", "minutes"]
- name: re_replace
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟|分)", " minute"]
- name: re_replace
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden|timmar)", "hours"]
- name: re_replace
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間|timme)", " hour"]
- name: re_replace
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen|dagar)", "days"]
- 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)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken|veckor)", "weeks"]
- name: re_replace
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間|vecka)", " week"]
- name: re_replace
args: ["(?i) (ay)", "month"]
- name: re_replace
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden|månader)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月|månad)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
- name: re_replace
args: ["(?i)(För |und)", ""] # Misc removals
- name: timeago
downloadvolumefactor:
case:
i[class*="fa-id-badge text-orange"]: 0 # 24 Hour FreeLeech From BON Store
i[class*="fa-trophy text-purple"]: 0 # Special FreeLeech For Certain User Groups
i[class*="fa-star text-bold"]: 0 # Freeleech From Token
i[class*="fa-coins text-bold"]: 0 # Freeleech From Token
i[class*="fa-globe text-blue"]: 0 # Global Freeleech
i[class*="fa-star text-gold"]: 0 # Freeleech
i[class*="fa-certificate text-pink"]: 0 # Featured Torrent
"*": 1
uploadvolumefactor:
case:
i[class*="fa-gem text-green"]: 2 # Single Torrent Double Upload
i[class*="fa-globe text-green"]: 2 # Global Double Upload
i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
"*": 1
# global MR is 0.4 but torrents must be seeded for 3 days regardless of ratio
# minimumratio:
# text: 0.4
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# UNIT3D 5.3.0

View File

@@ -6,6 +6,8 @@ language: ru-RU
type: semi-private
encoding: windows-1251
testlinktorrent: false
certificates:
- 2b49b401259cb893f37de9eff343f7d356b1c2f2 # expired 8 January 2022
links:
- https://anime-free.biz/
legacylinks:

View File

@@ -11,18 +11,21 @@ links:
caps:
# dont forget to update the case block in the search fields category
categorymappings:
- {id: 1, cat: Movies/Other, desc: "Anime Movie"}
- {id: 2, cat: TV/Anime, desc: "Anime Serie"}
- {id: 3, cat: Audio, desc: "Anime Musik/OST"}
- {id: 1, cat: Movies/Other, desc: "Anime Filme"}
- {id: 2, cat: TV/Anime, desc: "Anime Serien"}
- {id: 3, cat: Audio, desc: "Anime Musik / OSTs"}
- {id: 4, cat: PC/Games, desc: "Anime Spiele"}
- {id: 5, cat: XXX, desc: "Hentai"}
- {id: 6, cat: PC, desc: "Spiele Linux"}
- {id: 5, cat: XXX, desc: "Anime Hentai"}
- {id: 6, cat: PC, desc: "Software"}
- {id: 7, cat: Other, desc: "Sonstiges"}
- {id: 8, cat: Movies, desc: "Filme"}
- {id: 9, cat: TV, desc: "Serien"}
- {id: 10, cat: PC/Games, desc: "Spiele"}
- {id: 11, cat: Audio, desc: "Musik"}
- {id: 12, cat: Books, desc: "Mangas"}
- {id: 12, cat: Books, desc: "Manga"}
- {id: 13, cat: Movies, desc: "Cartoon Filme"}
- {id: 14, cat: TV, desc: "Cartoon Serie"}
- {id: 15, cat: XXX, desc: "H-Manga / Doujinshi"}
modes:
search: [q]
@@ -78,18 +81,21 @@ search:
category:
selector: category
case:
"Anime Movie": 1
"Anime Serie": 2
"Anime Musik/OST": 3
"Anime Filme": 1
"Anime Serien": 2
"Anime Musik / OSTs": 3
"Anime Spiele": 4
"Hentai": 5
"Spiele Linux": 6
"Anime Hentai": 5
"Software": 6
"Sonstiges": 7
"Filme": 8
"Serien": 9
"Spiele": 10
"Musik": 11
"Mangas": 12
"Manga": 12
"Cartoon Filme": 13
"Cartoon Serie": 14
"H-Manga / Doujinshi": 15
"Filme": 8
title:
selector: name
details:

View File

@@ -1,193 +0,0 @@
---
id: animeworld
name: AnimeWorld
description: "AnimeWorld (AW) is a GERMAN Private site for ANIME / MANGA / HENTAI"
language: de-DE
type: private
encoding: UTF-8
links:
- https://animeworld.cx/
caps:
categorymappings:
- {id: 1, cat: Movies/Other, desc: "Anime Movie"}
- {id: 2, cat: TV/Anime, desc: "Anime Serie"}
- {id: 3, cat: Audio, desc: "Anime Musik/OST"}
- {id: 4, cat: PC/Games, desc: "Anime Spiele"}
- {id: 5, cat: XXX, desc: "Hentai"}
- {id: 6, cat: PC, desc: "Spiele Linux"}
- {id: 7, cat: Other, desc: "Sonstiges"}
- {id: 8, cat: Movies, desc: "Filme"}
- {id: 9, cat: TV, desc: "Serien"}
- {id: 10, cat: PC/Games, desc: "Spiele"}
- {id: 11, cat: Audio, desc: "Musik"}
- {id: 12, cat: Books, desc: "Mangas"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: login
method: form
form: form[action$="/login"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: on
selectorinputs:
_token:
selector: input[name="_token"]
attribute: value
error:
- selector: div#ERROR_COPY
# test:
# path: /
# selector: a[href$="/logout"]
search:
paths:
- path: torrents
inputs:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
name: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
description: ""
mediainfo: ""
keywords: ""
uploader: ""
tmdbId: "{{ .Query.TMDBID }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tvdbId: "{{ .Query.TVDBID }}"
malId: ""
startYear: ""
endYear: ""
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
page: 1
free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/(\\d+)"
title:
selector: a.view-torrent
download:
selector: a[href*="/download/"]
attribute: href
details:
selector: a.view-torrent
attribute: href
poster:
selector: div.torrent-poster img
attribute: src
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
- name: replace
args: ["https://via.placeholder.com/400x600", ""]
size:
selector: td:nth-last-child(5)
seeders:
selector: td:nth-last-child(4)
leechers:
selector: td:nth-last-child(3)
grabs:
selector: td:nth-last-child(2)
date:
selector: td:nth-last-child(1)
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
- name: re_replace
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前|sedan)", " ago"]
- name: re_replace
args: ["(?i)(saniye|sekundit|sekunder|secondi|sekund|segundos|sekundami|секунд|secunde|secondes|Sekunden|секунди|seconden|秒前)", "seconds"]
- name: re_replace
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten|minuter)", "minutes"]
- name: re_replace
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟|分)", " minute"]
- name: re_replace
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden|timmar)", "hours"]
- name: re_replace
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間|timme)", " hour"]
- name: re_replace
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen|dagar)", "days"]
- 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)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken|veckor)", "weeks"]
- name: re_replace
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間|vecka)", " week"]
- name: re_replace
args: ["(?i) (ay)", "month"]
- name: re_replace
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden|månader)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月|månad)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
- name: re_replace
args: ["(?i)(För |und)", ""] # Misc removals
- name: timeago
downloadvolumefactor:
case:
i[class*="fa-id-badge text-orange"]: 0 # 24 Hour FreeLeech From BON Store
i[class*="fa-trophy text-purple"]: 0 # Special FreeLeech For Certain User Groups
i[class*="fa-star text-bold"]: 0 # Freeleech From Token
i[class*="fa-coins text-bold"]: 0 # Freeleech From Token
i[class*="fa-globe text-blue"]: 0 # Global Freeleech
i[class*="fa-star text-gold"]: 0 # Freeleech
i[class*="fa-certificate text-pink"]: 0 # Featured Torrent
"*": 1
uploadvolumefactor:
case:
i[class*="fa-gem text-green"]: 2 # Single Torrent Double Upload
i[class*="fa-globe text-green"]: 2 # Global Double Upload
i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
"*": 1
minimumseedtime:
# 7 day (as seconds = 7 x 24 x 60 x 60)
text: 604800
# UNIT3D 5.3.0

View File

@@ -126,6 +126,8 @@ search:
rows:
selector: table.torrent tr.torrent
filters:
- name: andmatch
fields:
category:

View File

@@ -1,125 +0,0 @@
---
id: asiandvdclub
name: AsianDVDClub
description: "AsianDVDClub (ADC) is a Private Torrent Tracker for Asian DVD and BluRay"
language: en-US
type: private
encoding: UTF-8
links:
- https://asiandvdclub.org/
caps:
categorymappings:
- {id: 1, cat: TV/Anime, desc: "Anime"}
- {id: 3, cat: Movies, desc: "Japan"}
- {id: 5, cat: Movies, desc: "China"}
- {id: 4, cat: Movies, desc: "Korea"}
- {id: 2, cat: Movies, desc: "Hong Kong"}
- {id: 6, cat: Movies, desc: "Philippines"}
- {id: 7, cat: Movies, desc: "Taiwan"}
- {id: 8, cat: Movies, desc: "Thailand"}
- {id: 9, cat: Movies, desc: "Vietnam"}
- {id: 10, cat: Movies, desc: "Malaysia"}
- {id: 11, cat: Movies, desc: "Other Asian"}
- {id: 12, cat: Other, desc: "Miscellaneous"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
path: login
method: post
inputs:
apple: evil
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: p:contains("Error")
test:
path: index
selector: a[href="/logout"]
search:
paths:
- path: torrents/
inputs:
$raw: "{{ range .Categories }}countries[]={{.}}&{{end}}"
searchbox: "{{ .Keywords }}"
search: Search
golden: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
rows:
selector: table.torrenttable_helper > tbody > tr:has(img)
fields:
category:
selector: img[class^="cat-"]
attribute: class
case:
img.cat-anime: 1
img.cat-hk: 2
img.cat-japan: 3
img.cat-korea: 4
img.cat-china: 5
img.cat-phil: 6
img.cat-taiwan: 7
img.cat-thai: 8
img.cat-viet: 9
img.cat-malaysia: 10
img.cat-rest: 11
img.cat-misc: 12 # unconfirmed as there are currently no torrents for cat[12]
title:
selector: a[href^="/torrent/"]
details:
selector: a[href^="/torrent/"]
attribute: href
download:
selector: a[href^="/torrent/"]
attribute: href
filters:
- name: replace
args: ["torrent", "download"]
size:
selector: td:nth-last-child(6)
seeders:
selector: td:nth-last-child(5)
leechers:
selector: td:nth-last-child(4)
date:
selector: td:nth-last-child(3)
remove: p
filters:
- name: timeago
grabs:
selector: td:nth-last-child(2)
downloadvolumefactor:
case:
img[src="../images/golden.gif"]: 0
img[src="../images/silver.gif"]: 0.5 # unconfirmed as there are currently no silver torrents
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.5
minimumseedtime:
# 45 days (as seconds = 45 x 24 x 60 x 60)
text: 3888000
# Engine n/a

View File

@@ -9,7 +9,7 @@ links:
- http://audiobookbay.nl/ # site forces http, does not support https
- http://audiobookbay.ws/
- http://audiobookbayabb.com/
- https://audiobookbay.unblockit.tv/
- https://audiobookbay.unblockit.how/
legacylinks:
- https://audiobookbay.la/
- https://audiobookbay.unblockit.lat/
@@ -27,6 +27,7 @@ legacylinks:
- http://audiobookbay.net/
- https://audiobookbay.unblockit.kim/
- https://audiobookbay.unblockit.bz/
- https://audiobookbay.unblockit.tv/
caps:
categorymappings:

View File

@@ -101,6 +101,8 @@ search:
rows:
selector: table > tbody#highlighted > tr:has(a[href^="browse.php?cat="])
filters:
- name: andmatch
fields:
category:

View File

@@ -26,6 +26,7 @@ caps:
- {id: 69, cat: TV/Anime, desc: "Mese/XviD"}
- {id: 58, cat: TV, desc: "Sorozat/Eng"}
- {id: 68, cat: TV/Anime, desc: "Mese/DVD"}
- {id: 91, cat: TV/Anime, desc: "Mese/HD"}
- {id: 25, cat: Audio/MP3, desc: "Mp3/Hun"}
- {id: 26, cat: Audio/MP3, desc: "Mp3/Eng"}
- {id: 71, cat: Audio/Lossless, desc: "Lossless/Eng"}
@@ -53,12 +54,13 @@ caps:
music-search: [q]
settings:
- name: username
- name: cookie
type: text
label: Username
- name: password
type: password
label: Password
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
- name: sort
type: select
label: Sort requested from site
@@ -67,7 +69,6 @@ settings:
1: title
4: added
5: size
7: seeders
- name: type
type: select
label: Order requested from site
@@ -81,13 +82,9 @@ settings:
default: For best results, change the <b>Torrentek száma egy oldalon:</b> setting to <b>100</b> on your account profile.
login:
path: login.php
method: post
method: cookie
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: table[width="920"]:contains("Hiba")
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href^="logout.php?k="]
@@ -129,29 +126,27 @@ search:
- name: replace
args: ["details.php?id=", "download.php?torrent="]
size:
selector: td:last-child
selector: td:nth-last-child(2)
date:
# 2021-11-09 16:51:24
selector: td:nth-last-child(2)
selector: td:last-child
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "2006-01-02 15:04:05 -07:00"
files:
selector: td:nth-last-child(4)
grabs:
selector: td:nth-child(2)
selector: td:nth-child(6)
filters:
- name: regexp
args: "D:(\\d+)x"
args: "D:(\\d+)"
seeders:
selector: td:nth-child(2)
selector: td:nth-child(4)
filters:
- name: regexp
args: "S:(\\d+)"
leechers:
selector: td:nth-child(2)
selector: td:nth-child(5)
filters:
- name: regexp
args: "L:(\\d+)"

View File

@@ -119,8 +119,14 @@ search:
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
keywordsfilters:
- name: re_replace
args: ["(\\w+)", " +$1"] # prepend + to each word
rows:
selector: div.torrentrow:has(a[href^="download.php?torrent="])
filters:
- name: andmatch
fields:
category:

View File

@@ -119,6 +119,8 @@ search:
rows:
selector: table.table-bordered tr:has(a[href^="download.php?torrent="])
filters:
- name: andmatch
fields:
category:

View File

@@ -1,195 +0,0 @@
---
id: blutopia
name: Blutopia
description: "Blutopia (BLU) is a Private Torrent Tracker for HD MOVIES / TV"
language: en-US
type: private
encoding: UTF-8
links:
- https://blutopia.xyz/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movie"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Movies/Other, desc: "FANRES"}
- {id: 5, cat: Movies/Other, desc: "Trailer"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
movie-search: [q, imdbid, tmdbid]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: login
method: form
form: form[action$="/login"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: on
selectorinputs:
_token:
selector: input[name="_token"]
attribute: value
error:
- selector: div#ERROR_COPY
# test:
# path: /
# selector: a[href$="/logout"]
search:
paths:
- path: torrents
inputs:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
name: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
description: ""
mediainfo: ""
keywords: ""
uploader: ""
tmdbId: "{{ .Query.TMDBID }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tvdbId: "{{ .Query.TVDBID }}"
malId: ""
startYear: ""
endYear: ""
playlistId: ""
collectionId: ""
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
page: 1
free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/(\\d+)"
title:
selector: a.view-torrent
download:
selector: a[href*="/download/"]
attribute: href
details:
selector: a.view-torrent
attribute: href
poster:
selector: div.torrent-poster img
attribute: src
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
- name: replace
args: ["https://via.placeholder.com/400x600", ""]
size:
selector: td:nth-last-child(5)
seeders:
selector: td:nth-last-child(4)
leechers:
selector: td:nth-last-child(3)
grabs:
selector: td:nth-last-child(2)
date:
selector: td:nth-last-child(1)
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
- name: re_replace
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前|sedan)", " ago"]
- name: re_replace
args: ["(?i)(saniye|sekundit|sekunder|secondi|sekund|segundos|sekundami|секунд|secunde|secondes|Sekunden|секунди|seconden|秒前)", "seconds"]
- name: re_replace
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten|minuter)", "minutes"]
- name: re_replace
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟|分)", " minute"]
- name: re_replace
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden|timmar)", "hours"]
- name: re_replace
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間|timme)", " hour"]
- name: re_replace
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen|dagar)", "days"]
- 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)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken|veckor)", "weeks"]
- name: re_replace
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間|vecka)", " week"]
- name: re_replace
args: ["(?i) (ay)", "month"]
- name: re_replace
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden|månader)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月|månad)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
- name: re_replace
args: ["(?i)(För |und)", ""] # Misc removals
- name: timeago
downloadvolumefactor:
case:
span.torrent-listings-global-freeleech: 0
span.torrent-listings-personal-freeleech: 0
span.torrent-listings-freeleech-token: 0
span.torrent-listings-featured: 0
span.torrent-listings-freeleech[data-original-title*="25%"]: 0.75
span.torrent-listings-freeleech[data-original-title*="50%"]: 0.5
span.torrent-listings-freeleech[data-original-title*="75%"]: 0.25
span.torrent-listings-freeleech[data-original-title*="100%"]: 0
span.torrent-listings-special-freeleech: 0
"*": 1
uploadvolumefactor:
case:
span.torrent-listings-global-double-upload: 2
span.torrent-listings-double-upload: 2
span.torrent-listings-featured: 2
span.torrent-listings-special-double-upload: 2
"*": 1
# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
# minimumratio:
# text: 0.4
minimumseedtime:
# 7 day (as seconds = 7 x 24 x 60 x 60)
text: 604800
# UNIT3D 5.3.1b

View File

@@ -1,183 +0,0 @@
---
id: brsociety
name: BrSociety
description: "BrSociety (SemeandoCC) is a BRAZILIAN Private Torrent Tracker for E-LEARNING"
language: pt-BR
type: private
encoding: UTF-8
links:
- https://brsociety.club/
caps:
categorymappings:
- {id: 1, cat: TV, desc: "Cursos (courses)"}
- {id: 2, cat: Books/EBook, desc: "eBooks"}
- {id: 5, cat: Books/Mags, desc: "Revistas (Magazines)"}
- {id: 3, cat: Audio/Audiobook, desc: "Audiobooks"}
- {id: 4, cat: Other, desc: "Arquivos de Auxilio (Help Files)"}
modes:
search: [q]
tv-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: login
method: form
form: form[action$="/login"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: on
selectorinputs:
_token:
selector: input[name="_token"]
attribute: value
error:
- selector: div#ERROR_COPY
# test:
# path: /
# selector: a[href$="/logout"]
search:
paths:
- path: torrents
inputs:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
name: "{{ .Keywords }}"
description: ""
mediainfo: ""
keywords: ""
uploader: ""
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
page: 1
free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/(\\d+)"
title:
selector: a.view-torrent
download:
selector: a[href*="/download_check/"]
attribute: href
filters:
- name: replace
args: ["download_check", "download"]
details:
selector: a.view-torrent
attribute: href
poster:
selector: div.torrent-poster img
attribute: src
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
- name: replace
args: ["https://via.placeholder.com/400x600", ""]
size:
selector: td:nth-last-child(5)
seeders:
selector: td:nth-last-child(4)
leechers:
selector: td:nth-last-child(3)
grabs:
selector: td:nth-last-child(2)
date:
selector: td:nth-last-child(1)
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
- name: re_replace
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前|sedan)", " ago"]
- name: re_replace
args: ["(?i)(saniye|sekundit|sekunder|secondi|sekund|segundos|sekundami|секунд|secunde|secondes|Sekunden|секунди|seconden|秒前)", "seconds"]
- name: re_replace
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten|minuter)", "minutes"]
- name: re_replace
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟|分)", " minute"]
- name: re_replace
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden|timmar)", "hours"]
- name: re_replace
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間|timme)", " hour"]
- name: re_replace
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen|dagar)", "days"]
- 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)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken|veckor)", "weeks"]
- name: re_replace
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間|vecka)", " week"]
- name: re_replace
args: ["(?i) (ay)", "month"]
- name: re_replace
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden|månader)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月|månad)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
- name: re_replace
args: ["(?i)(För |und)", ""] # Misc removals
- name: timeago
downloadvolumefactor:
case:
i[class*="fa-id-badge text-orange"]: 0 # 24 Hour FreeLeech From BON Store
i[class*="fa-trophy text-purple"]: 0 # Special FreeLeech For Certain User Groups
i[class*="fa-star text-bold"]: 0 # Freeleech From Token
i[class*="fa-coins text-bold"]: 0 # Freeleech From Token
i[class*="fa-globe text-blue"]: 0 # Global Freeleech
i[class*="fa-star text-gold"]: 0 # Freeleech
i[class*="fa-certificate text-pink"]: 0 # Featured Torrent
"*": 1
uploadvolumefactor:
case:
i[class*="fa-gem text-green"]: 2 # Single Torrent Double Upload
i[class*="fa-globe text-green"]: 2 # Global Double Upload
i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 5 days (as seconds = 5 x 24 x 60 x 60)
text: 432000
# UNIT3D 5.3.0

View File

@@ -193,4 +193,10 @@ search:
i[class*="fa-globe text-green"]: 2 # Global Double Upload
i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
"*": 1
# global MR is 0.5 but torrents must be seeded for 7 days regardless of ratio
# minimumratio:
# text: 0.5
minimumseedtime:
# 7 day (as seconds = 7 x 24 x 60 x 60)
text: 604800
# UNIT3D 1.9.3

View File

@@ -55,17 +55,17 @@ settings:
default: false
- name: sort
type: select
label: Sort requested from site (Only works for searches with Keywords)
default: ?trie-date-d
label: Sort requested from site (Works only for searches with Keywords)
default: trie-date-d
options:
?trie-date-d: created desc
?trie-date-a: created asc
?trie-seeds-d: seeders desc
?trie-seeds-a: seeders asc
?trie-poid-d: size desc
?trie-poid-a: size asc
?trie-nom-d: title desc
?trie-nom-a: title asc
trie-date-d: created desc
trie-date-a: created asc
trie-seeds-d: seeders desc
trie-seeds-a: seeders asc
trie-poid-d: size desc
trie-poid-a: size asc
trie-nom-d: title desc
trie-nom-a: title asc
download:
selectors:
@@ -74,7 +74,7 @@ download:
search:
paths:
- path: "{{ if .Keywords }}search_torrent/{{ .Keywords }}{{ .Config.sort }}{{ else }}home/{{ end }}"
- path: "{{ if .Keywords }}search_torrent/{{ .Keywords }}.html,{{ .Config.sort }}{{ else }}home/{{ end }}"
rows:
selector: table.table-corps > tbody > tr:has(a)

View File

@@ -1,197 +0,0 @@
---
id: datascene
name: DataScene
description: "DataScene (DS) is a ROMANIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: en-US
type: private
encoding: UTF-8
links:
- https://datascene.xyz/
legacylinks:
- http://datascene.net/
- https://datascene.net/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Music"}
- {id: 4, cat: PC/Games, desc: "Game"}
- {id: 5, cat: PC/0day, desc: "Application"}
- {id: 6, cat: XXX, desc: "XXX"}
- {id: 7, cat: PC/Mobile-Other, desc: "Mobile"}
- {id: 8, cat: Books/EBook, desc: "E-Book"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: login
method: form
form: form[action$="/login"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: on
selectorinputs:
_token:
selector: input[name="_token"]
attribute: value
error:
- selector: div#ERROR_COPY
# test:
# path: /
# selector: a[href$="/logout"]
search:
paths:
- path: torrents
inputs:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
name: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
description: ""
mediainfo: ""
keywords: ""
uploader: ""
tmdbId: "{{ .Query.TMDBID }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tvdbId: "{{ .Query.TVDBID }}"
malId: ""
startYear: ""
endYear: ""
playlistId: ""
collectionId: ""
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
page: 1
free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/(\\d+)"
title:
selector: a.view-torrent
download:
selector: a[href*="/download/"]
attribute: href
details:
selector: a.view-torrent
attribute: href
poster:
selector: div.torrent-poster img
attribute: src
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
- name: replace
args: ["https://via.placeholder.com/400x600", ""]
size:
selector: td:nth-last-child(4)
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
grabs:
selector: td:nth-last-child(1)
date:
selector: td:has(a.view-torrent) spam:last-child span:last-child
remove: a
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
- name: re_replace
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前|sedan)", " ago"]
- name: re_replace
args: ["(?i)(saniye|sekundit|sekunder|secondi|sekund|segundos|sekundami|секунд|secunde|secondes|Sekunden|секунди|seconden|秒前)", "seconds"]
- name: re_replace
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten|minuter)", "minutes"]
- name: re_replace
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟|分)", " minute"]
- name: re_replace
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden|timmar)", "hours"]
- name: re_replace
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間|timme)", " hour"]
- name: re_replace
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen|dagar)", "days"]
- 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)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken|veckor)", "weeks"]
- name: re_replace
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間|vecka)", " week"]
- name: re_replace
args: ["(?i) (ay)", "month"]
- name: re_replace
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden|månader)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月|månad)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
- name: re_replace
args: ["(?i)(För |und)", ""] # Misc removals
- name: timeago
downloadvolumefactor:
case:
# i[class*="fa-id-badge text-orange"]: 0 # 24 Hour FreeLeech From BON Store
# i[class*="fa-trophy text-purple"]: 0 # Special FreeLeech For Certain User Groups
# i[class*="fa-star text-bold"]: 0 # Freeleech From Token
# i[class*="fa-coins text-bold"]: 0 # Freeleech From Token
i[class*="fa-trophy data-toggle"]: 0 # Global Freeleech
# i[class*="fa-star text-gold"]: 0 # Freeleech
# i[class*="fa-certificate text-pink"]: 0 # Featured Torrent
"*": 1
uploadvolumefactor:
case:
i[class*="fa-angle-double-up"]: 2 # Single Torrent Double Upload
# i[class*="fa-globe text-green"]: 2 # Global Double Upload
# i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# UNIT3D 5.3.0 (custom)

View File

@@ -1,7 +1,7 @@
---
id: demonoid
name: Demonoid
description: "Demonoid is a Public torrent site for MOVIES / TV / GENERAL"
description: "Demonoid is a Semi-Private torrent site for MOVIES / TV / GENERAL"
language: en-US
type: semi-private
encoding: UTF-8
@@ -11,19 +11,10 @@ links:
- https://www.dnoid.to/
- https://www.dnoid.pw/
- https://demonoidevmsgasmojajlhikwetsr4pxzw6xkjt3dgdv6nr5yxvsamid.onion.ly/
- https://demonoid.unblockit.tv/
- https://demonoid.unblockit.how/
- https://demonoid.torrentbay.to/
- https://demonoid.nocensor.biz/
legacylinks:
- https://demonoid.unblockit.pro/
- https://demonoid.unblockit.one/
- https://demonoid.unblockit.me/
- https://dnoid.black-mirror.xyz/
- https://dnoid.unblocked.casa/
- https://dnoid.proxyportal.fun/
- https://dnoid.uk-unblock.xyz/
- https://dnoid.ind-unblock.xyz/
- https://demonoid.unblockit.pw/
- https://demonoid.unblockit.id/
- https://demonoid.unblockit.win/
- https://demonoid.unblockit.top/
@@ -43,6 +34,7 @@ legacylinks:
- https://demonoid.nocensor.work/
- https://demonoid.unblockit.kim/
- https://demonoid.unblockit.bz/
- https://demonoid.unblockit.tv/
caps:
categorymappings:
@@ -357,10 +349,10 @@ search:
rows:
# only the default theme "Demonoid - v5" is supported
selector: table.table:has(td.torrent__table-today) > tbody > tr:has(td[class^="tone_"])
selector: table.table tbody tr.table__row:has(td[class*="tone_"])
after: 1
dateheaders:
selector: tr td.torrent__table-today:not(:contains("Sponsored links"))
selector: tr td.table__separator:not(:contains("Sponsored links"))
filters:
- name: replace
args: ["Added ", ""]
@@ -368,27 +360,30 @@ search:
args: ["on ", ""]
fields:
title_default:
selector: a[href^="/files/details/"]
title_optional:
selector: a[href^="/files/details/"]
optional: true
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
category:
selector: span.torrent__table-info > a:nth-child(2)
selector: span.table__column__subtext > a:nth-child(2)
attribute: href
optional: true
filters:
- name: querystring
args: subcategory
title:
selector: a[href^="/files/details/"]
details:
selector: a[href^="/files/details/"]
attribute: href
download:
selector: a[href^="/files/details/"]
attribute: href
poster:
selector: div[title]
attribute: data-bs-content
filters:
- name: regexp
args: src='(.+?)'
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
description:
selector: td:nth-last-child(7)
size:

View File

@@ -1,187 +0,0 @@
---
id: desitorrents
name: DesiTorrents
description: "Desitorrents is a Private Torrent Tracker for BOLLYWOOD / TOLLYWOOD / MUSIC"
language: en-US
type: private
encoding: UTF-8
links:
- https://desitorrents.tv/
- https://desitorrents.rocks/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Music"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: login
method: form
form: form[action$="/login"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: on
selectorinputs:
_token:
selector: input[name="_token"]
attribute: value
error:
- selector: div#ERROR_COPY
# test:
# path: /
# selector: a[href$="/logout"]
search:
paths:
- path: torrents
inputs:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
name: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
description: ""
mediainfo: ""
keywords: ""
uploader: ""
tmdbId: "{{ .Query.TMDBID }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tvdbId: "{{ .Query.TVDBID }}"
malId: ""
startYear: ""
endYear: ""
playlistId: ""
collectionId: ""
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
page: 1
free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
rows:
selector: table > tbody > tr:has(a[href*="/download/"])
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/(\\d+)"
title:
selector: td div a
download:
selector: a[href*="/download/"]
attribute: href
details:
selector: td div a
attribute: href
poster:
selector: div img
attribute: src
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
- name: replace
args: ["https://via.placeholder.com/400x600", ""]
size:
selector: td:nth-last-child(6)
seeders:
selector: td:nth-last-child(5)
leechers:
selector: td:nth-last-child(4)
grabs:
selector: td:nth-last-child(3)
date:
selector: td:nth-last-child(2)
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
- name: re_replace
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前|sedan)", " ago"]
- name: re_replace
args: ["(?i)(saniye|sekundit|sekunder|secondi|sekund|segundos|sekundami|секунд|secunde|secondes|Sekunden|секунди|seconden|秒前)", "seconds"]
- name: re_replace
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten|minuter)", "minutes"]
- name: re_replace
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟|分)", " minute"]
- name: re_replace
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden|timmar)", "hours"]
- name: re_replace
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間|timme)", " hour"]
- name: re_replace
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen|dagar)", "days"]
- 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)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken|veckor)", "weeks"]
- name: re_replace
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間|vecka)", " week"]
- name: re_replace
args: ["(?i) (ay)", "month"]
- name: re_replace
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden|månader)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月|månad)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
- name: re_replace
args: ["(?i)(För |und)", ""] # Misc removals
- name: timeago
downloadvolumefactor:
case:
i[class*="fa-id-badge"]: 0 # 24 Hour FreeLeech From BON Store
i[class*="fa-trophy"]: 0 # Special FreeLeech For Certain User Groups
i[class*="fa-coins"]: 0 # Freeleech From Token
i[class*="fa-globe"]: 0 # Global Freeleech
i[class*="fa-star"]: 0 # Freeleech
i[class*="fa-certificate"]: 0 # Featured Torrent
"*": 1
uploadvolumefactor:
case:
i[class*="fa-gem"]: 2 # Single Torrent Double Upload
i[class*="fa-globe"]: 2 # Global Double Upload
i[class*="fa-certificate"]: 2 # Featured Torrent
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 7 day (as seconds = 7 x 24 x 60 x 60)
text: 604800
# UNIT3D 5.3.0 (custom)

View File

@@ -14,6 +14,7 @@ caps:
- {id: 2, cat: Movies/SD, desc: Movies/SD}
- {id: 3, cat: Movies/BluRay, desc: Movies/BluRay}
- {id: 4, cat: Movies/UHD, desc: Movies/4K}
- {id: 38, cat: Movies/UHD, desc: Movies/UHD}
- {id: 5, cat: Movies/HD, desc: Movies/720p}
- {id: 6, cat: Movies/HD, desc: Movies/1080p}
- {id: 7, cat: Movies/HD, desc: Movies/PACKS}
@@ -33,6 +34,8 @@ caps:
- {id: 23, cat: Audio/Lossless, desc: Music/FLAC}
- {id: 24, cat: Audio/Video, desc: Music/MTV}
- {id: 29, cat: Audio, desc: Music/PACKS}
- {id: 39, cat: Audio/Video, desc: Music/DVD}
- {id: 40, cat: Audio/Video, desc: Music/Bluray}
- {id: 25, cat: PC/Games, desc: Games/PC}
- {id: 26, cat: Console, desc: Games/NSW}
- {id: 27, cat: PC/Mac, desc: Games/Mac}
@@ -44,6 +47,7 @@ caps:
- {id: 36, cat: XXX, desc: XXX/Movies/HD}
- {id: 37, cat: XXX/UHD, desc: XXX/Movies/4K}
- {id: 34, cat: XXX/ImageSet, desc: XXX/Imagesets}
- {id: 41, cat: XXX, desc: XXX/PACKS}
modes:
search: [q]

View File

@@ -17,6 +17,7 @@ caps:
- {id: 68, cat: Books/Comics, desc: "Comics"}
- {id: 59, cat: TV/Documentary, desc: "Docs/Movies"}
- {id: 60, cat: TV/Documentary, desc: "Docs/TV"}
- {id: 79, cat: TV, desc: "Educational"}
- {id: 71, cat: Other, desc: "Fonts"}
- {id: 72, cat: Books, desc: "IT Books"}
- {id: 57, cat: Books/Mags, desc: "Magazine"}

View File

@@ -155,6 +155,8 @@ search:
rows:
selector: tr[id^="tor_"]:has(a[href^="./dl.php?id="])
filters:
- name: andmatch
fields:
title:

View File

@@ -9,32 +9,13 @@ followredirect: true
links:
- https://www.ettvcentral.com/
- https://ettv.unblockninja.com/
- https://ettv.unblockit.tv/
- https://ettv.unblockit.how/
- https://ettv.nocensor.biz/
legacylinks:
- https://www.ettv.tv/
- https://www.ettv.to/
- https://ettv.unblockit.pro/
- https://ettv.unblockit.one/
- https://ettv.black-mirror.xyz/
- https://ettv.unblocked.casa/
- https://ettv.proxyportal.fun/
- https://ettv.uk-unblock.xyz/
- https://ettv.ind-unblock.xyz/
- https://ettv.unblockit.me/
- https://ettv.unblockit.pw/
- https://ettv.unblockit.id/
- https://ettv.unblockit.win/
- https://www.ettvdl.com/
- https://ettv.unblocked.bar/
- https://ettv.proxyportal.pw/
- https://ettv.uk-unblock.pro/
- https://ettv.root.yt/
- https://www.ettv.be/
- https://ettv.unblockit.top/
- https://ettv.unblockit.lat/
- https://ettv.unblockit.app/
- https://ettv.unblocked.rest/
- https://ettv.unblockit.dev/
- https://ettv.unblockit.ltd/
- https://ettv.unblockit.link/
@@ -50,6 +31,7 @@ legacylinks:
- https://ettv.nocensor.work/
- https://ettv.unblockit.kim/
- https://ettv.unblockit.bz/
- https://ettv.unblockit.tv/
caps:
categorymappings:

View File

@@ -7,12 +7,13 @@ type: public
encoding: UTF-8
links:
- https://extratorrent.st/
- https://extratorrent.unblockit.tv/
- https://extratorrent.unblockit.how/
- https://extratorrent.nocensor.biz/
legacylinks:
- https://extratorrent.nocensor.work/
- https://extratorrent.unblockit.kim/
- https://extratorrent.unblockit.bz/
- https://extratorrent.unblockit.tv/
caps:
categorymappings:

View File

@@ -80,6 +80,8 @@ download:
selectors:
- selector: a[href^="downloadv1.php?id="]
attribute: href
- selector: a[href^="download.php?id="]
attribute: href
search:
paths:

View File

@@ -12,32 +12,13 @@ links:
- https://eztv.tf/
- https://eztv.yt/
- https://eztv.unblockninja.com/
- https://eztv.unblockit.tv/
- https://eztv.unblockit.how/
- https://eztv.nocensor.biz/
legacylinks:
- https://eztv.ag/ # redirects to .re
- https://eztv.it/ # redirects to .re
- https://eztv.ch/ # redirects to .re
- https://eztv.unblockit.pro/
- https://eztv.unblockit.one/
- https://eztv.black-mirror.xyz/
- https://eztv.unblocked.casa/
- https://eztv.proxyportal.fun/
- https://eztv.uk-unblock.xyz/
- https://eztv.ind-unblock.xyz/
- https://eztv.unblockit.me/
- https://eztv.unblockit.pw/
- https://eztv.unblockit.id/
- https://eztv.unblockit.win/
- https://eztv.unblocked.bar/
- https://eztv.proxyportal.pw/
- https://eztv.uk-unblock.pro/
- https://eztv.unblockit.top/
- https://eztv.unblockit.lat/
- https://eztv.io/
- https://eztv.unblockit.app/
- https://eztv.root.yt/
- https://eztv.unblocked.rest/
- https://eztv.unblockit.dev/
- https://eztv.unblockit.ltd/
- https://eztv.unblockit.link/
@@ -53,6 +34,7 @@ legacylinks:
- https://eztv.nocensor.work/
- https://eztv.unblockit.kim/
- https://eztv.unblockit.bz/
- https://eztv.unblockit.tv/
caps:
categories:

View File

@@ -98,6 +98,8 @@ search:
rows:
selector: table.main > tbody > tr:has(a[href^="/lataa.php/"])
filters:
- name: andmatch
fields:
category:

View File

@@ -5,6 +5,8 @@ description: "freshMeat is a Public torrent meta-search engine"
language: en-US
type: public
encoding: UTF-8
certificates:
- 9aa995b06d86a22074c90faf5a9836e8a0fe6327 # expired 03/Jan/2022
links:
- https://freshmeat.io/

View File

@@ -9,27 +9,11 @@ followredirect: true
links:
- https://glodls.to/
- https://www.gtdb.to/
- https://glotorrents.unblockit.tv/
- https://glotorrents.unblockit.how/
- https://glotorrents.nocensor.biz/
legacylinks:
- https://glodls.rocks/
- https://glotorrents.unblockit.pro/
- https://glotorrents.unblockit.one/
- https://glodls.black-mirror.xyz/
- https://glodls.unblocked.casa/
- https://glodls.proxyportal.fun/
- https://glodls.uk-unblock.xyz/
- https://glodls.ind-unblock.xyz/
- https://glotorrents.unblockit.me/
- https://glotorrents.unblockit.pw/
- https://glotorrents.unblockit.id/
- https://glotorrents.unblockit.win/
- https://glodls.unblocked.bar/
- https://glodls.proxyportal.pw/
- https://glodls.uk-unblock.pro/
- https://gtdb.to/
- https://glotorrents.unblockit.top/
- https://glotorrents.unblockit.lat/
- https://glotorrents.unblockit.app/
- https://glodls.unblocked.rest/
- https://glotorrents.unblockit.dev/
@@ -47,6 +31,7 @@ legacylinks:
- https://glotorrents.nocensor.work/
- https://glotorrents.unblockit.kim/
- https://glotorrents.unblockit.bz/
- https://glotorrents.unblockit.tv/
caps:
categorymappings:

View File

@@ -0,0 +1,118 @@
---
id: hawke-uno
name: hawke-uno
description: "hawke-uno is a Private Torrent Tracker for (X265 / HEVC) MOVIES / TV"
language: en-US
type: private
encoding: UTF-8
links:
- https://www.hawke.uno/
caps:
# dont forget to update the case block in the search fields category
categorymappings:
- {id: 1, cat: Movies, desc: "Movie"}
- {id: 2, cat: TV, desc: "TV"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
movie-search: [q, imdbid, tmdbid]
settings:
- name: apikey
type: text
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://www.hawke.uno/\" target =_blank>hawke-uno</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
- path: "/api/torrents/filter?api_token={{ .Config.apikey }}&name={{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}&sortField={{ .Config.sort }}&sortDirection={{ .Config.type }}&perPage=100&page=1{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ else }}{{ end }}"
response:
type: json
attribute: attributes
rows:
selector: data
count:
selector: meta.total
fields:
category:
selector: category
case:
Movie: 1
TV: 2
title:
selector: name
details:
selector: details_link
download:
selector: download_link
poster:
selector: poster
imdbid:
selector: imdb_id
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
files:
selector: num_file
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: times_completed
date:
# 2021-10-18T00:34:50.000000Z"
selector: created_at
size:
selector: size
downloadvolumefactor:
# api returns 0=false, 1=true
selector: freeleech
case:
0: 1 # not free
1: 0 # freeleech
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
case:
0: 1 # normal
1: 2 # double
# minimumratio:
# text: 0.4
# minimumseedtime:
# 5 days (as seconds = 5 x 24 x 60 x 60)
# text: 432000
# json UNIT3D 5.3.0

View File

@@ -25,18 +25,21 @@ caps:
- {id: 16, cat: TV, desc: "TV Yerli"}
- {id: 19, cat: TV/HD, desc: "TV Yerli HD"}
- {id: 170, cat: Movies/HD, desc: "Movies HD"}
- {id: 175, cat: Movies/HD, desc: "Movies 1080p Remux DUAL"}
- {id: 226, cat: Movies/HD, desc: "Movies 1080p Remux TR"}
- {id: 183, cat: Movies/HD, desc: "Movies 1080p Remux Yabancı"}
- {id: 174, cat: Movies/3D, desc: "Movies 3D DUAL"}
- {id: 180, cat: Movies/3D, desc: "Movies 3D TR"}
- {id: 181, cat: Movies/3D, desc: "Movies 3D Yabancı"}
- {id: 217, cat: Movies/UHD, desc: "Movies 4K DUAL"}
- {id: 224, cat: Movies/UHD, desc: "Movies 4K Remux DUAL"}
- {id: 225, cat: Movies/UHD, desc: "Movies 4K Remux Yabanci"}
- {id: 218, cat: Movies/UHD, desc: "Movies 4K TR"}
- {id: 216, cat: Movies/UHD, desc: "Movies 4K Yabancı"}
- {id: 205, cat: Movies/DVD, desc: "Movies DVD DUAL"}
- {id: 206, cat: Movies/DVD, desc: "Movies DVD TR/Yerli"}
- {id: 219, cat: Movies/DVD, desc: "Movies DVD Yabancı"}
- {id: 173, cat: Movies/BluRay, desc: "Movies Full BD"}
- {id: 175, cat: Movies/HD, desc: "Movies Remux DUAL"}
- {id: 183, cat: Movies/HD, desc: "Movies Remux Yabancı"}
- {id: 171, cat: Movies/HD, desc: "Movies x264 DUAL"}
- {id: 176, cat: Movies/HD, desc: "Movies x264 TR"}
- {id: 177, cat: Movies/HD, desc: "Movies x264 Yabancı"}
@@ -73,6 +76,7 @@ caps:
- {id: 221, cat: Other, desc: "VIP"}
- {id: 85, cat: XXX, desc: "XXX"}
- {id: 92, cat: XXX/Other, desc: "XXX E-Magazin"}
- {id: 220, cat: XXX/Other, desc: "XXX Hentai"}
- {id: 93, cat: XXX, desc: "XXX Movie"}
- {id: 95, cat: XXX/Pack, desc: "XXX Packs"}
- {id: 96, cat: XXX/ImageSet, desc: "XXX Pics"}

View File

@@ -9,6 +9,8 @@ links:
- https://pt.upxin.net/
legacylinks:
- http://pt.upxin.net/
certificates:
- d52ca3e97d730541d8f81452185e4481225f3a2d # expired 06/Jan/2022
caps:
categorymappings:

View File

@@ -68,7 +68,8 @@ search:
search: "{{ .Keywords }}"
incldead: 1
polish: 0
blah: 0
# 0 both, 1 name, 2 desc
blah: 1
rows:
selector: table#line > tbody > tr:has(a[href^="details.php?id="])

View File

@@ -12,25 +12,25 @@ caps:
# commented out categories are discussion-only forums
categorymappings:
# CIURMA
# - {id: "150", cat: Other, desc: "Regole per Postare"}
# - {id: "150", cat: Other, desc: "Regole per Postare"}
- {id: "140", cat: Other/Misc, desc: "Bozze - Sezione fruibile a tutti i nuovi Releaser", default: true}
# INFORMAZIONI E REGOLE DEL FORUM
# - {id: "108", cat: Other, desc: "Manifesto Generale"}
# - {id: "30", cat: Other, desc: "Disclaimer"}
# - {id: "76", cat: Other, desc: "Statuto"}
# - {id: "31", cat: Other, desc: "Comunicazioni dello STAFF"}
# - {id: "32", cat: Other, desc: "Guide sull'uso del Forum"}
# - {id: "124", cat: Other, desc: "iCV Community"}
# - {id: "108", cat: Other, desc: "Manifesto Generale"}
# - {id: "30", cat: Other, desc: "Disclaimer"}
# - {id: "76", cat: Other, desc: "Statuto"}
# - {id: "31", cat: Other, desc: "Comunicazioni dello STAFF"}
# - {id: "32", cat: Other, desc: "Guide sull'uso del Forum"}
# - {id: "124", cat: Other, desc: "iCV Community"}
# PROGETTI
# - {id: "172", cat: Audio, desc: "Progetto - Discografie"}
# - {id: "109", cat: Movies, desc: "Progetto - Filmografie"}
# - {id: "110", cat: Books, desc: "Progetto - Biblico"}
# - {id: "137", cat: Other, desc: "Progetto - Releaser/Crew"}
# - {id: "126", cat: Movies, desc: "Progetto - Cine Vintage "}
# - {id: "172", cat: Audio, desc: "Progetto - Discografie"}
# - {id: "109", cat: Movies, desc: "Progetto - Filmografie"}
# - {id: "110", cat: Books, desc: "Progetto - Biblico"}
# - {id: "137", cat: Other, desc: "Progetto - Releaser/Crew"}
# - {id: "126", cat: Movies, desc: "Progetto - Cine Vintage "}
# MUSICA
- {id: "19", cat: Audio, desc: "Musica Audio - Tutti i formati", default: true}
- {id: "20", cat: Audio/Video, desc: "Musica Video - Standard Definition - High Definition", default: true}
# - {id: "135", cat: Audio, desc: "Richieste Titoli Musica"}
# - {id: "135", cat: Audio, desc: "Richieste Titoli Musica"}
# VIDEO
- {id: "6", cat: Movies/SD, desc: "Video - Screener", default: true}
- {id: "7", cat: Movies/SD, desc: "Video - Standard Definition", default: true}
@@ -41,66 +41,66 @@ caps:
- {id: "95", cat: Movies, desc: "Video - Dispositivi Mobili (Portable)", default: true}
- {id: "79", cat: Movies, desc: "Video - TVRip - Standard Definition - High Definition", default: true}
- {id: "14", cat: TV/Other, desc: "Video - Documentari - Sportivi - Spettacoli - Lirica - Standard Definition - High Definition", default: true}
# - {id: "134", cat: Movies, desc: "Richieste Titoli Video"}
# - {id: "134", cat: Movies, desc: "Richieste Titoli Video"}
# SERIE TV
- {id: "12", cat: TV/SD, desc: "Serie TV - Standard Definition", default: true}
- {id: "102", cat: TV/HD, desc: "Serie TV - High definition H.264", default: true}
- {id: "161", cat: TV/HD, desc: "Serie TV - High definition HEVC/H.265", default: true}
# - {id: "103", cat: TV, desc: "L'angolo di Giuseppe-iCV & littlelinx"}
# - {id: "160", cat: TV, desc: "L'angolo di Pir8"}
# - {id: "169", cat: TV, desc: "L'angolo di TV-P2P"}
# - {id: "133", cat: TV, desc: "Richieste Titoli Serie TV"}
# - {id: "103", cat: TV, desc: "L'angolo di Giuseppe-iCV & littlelinx"}
# - {id: "160", cat: TV, desc: "L'angolo di Pir8"}
# - {id: "169", cat: TV, desc: "L'angolo di TV-P2P"}
# - {id: "133", cat: TV, desc: "Richieste Titoli Serie TV"}
# CARTONI ANIMATI - ANIME
- {id: "17", cat: Movies/SD, desc: "Cartoni Animati - Standard Definition - High Definition", default: true}
- {id: "18", cat: TV/HD, desc: "Cartoni Animati - Serie TV Standard Definition - High Definition", default: true}
- {id: "15", cat: TV/Anime, desc: "Anime - Standard Definition - High Definition", default: true}
- {id: "16", cat: TV/Anime, desc: "Anime - Serie TV Standard Definition - High Definition", default: true}
- {id: "89", cat: Movies/HD, desc: "Cartoni Animati - Anime - Serie Tv e Non - High Definition - HEVC/H.265", default: true}
# - {id: "132", cat: TV/Anime, desc: "Richieste Titoli Cartoni Animati - Anime"}
# - {id: "132", cat: TV/Anime, desc: "Richieste Titoli Cartoni Animati - Anime"}
# EBOOK - FUMETTI - RIVISTE - QUOTIDIANI
- {id: "25", cat: Books/EBook, desc: "Ebook", default: true}
- {id: "26", cat: Audio/Audiobook, desc: "Ebook Audio", default: true}
- {id: "170", cat: Books/Comics, desc: "Fumetti", default: true}
- {id: "28", cat: Books/Mags, desc: "Riviste - Quotidiani", default: true}
- {id: "47", cat: Other, desc: "Wallpapers - Poster - Calendari", default: true}
# - {id: "131", cat: Movies, desc: "Richieste Titoli Ebook - Fumetti - Riviste"}
# - {id: "131", cat: Movies, desc: "Richieste Titoli Ebook - Fumetti - Riviste"}
# SOFTWARE
- {id: "21", cat: PC/0day, desc: "Windows Software", default: true}
# - {id: "22", cat: PC, desc: "Windows Guide e altre in generale"}
# - {id: "92", cat: PC, desc: "Windows Supporto "}
# - {id: "22", cat: PC, desc: "Windows Guide e altre in generale"}
# - {id: "92", cat: PC, desc: "Windows Supporto "}
- {id: "138", cat: PC/Mac, desc: "macOS Software", default: true}
# - {id: "162", cat: PC/Mac, desc: "macOS Guide"}
# - {id: "163", cat: PC/Mac, desc: "macOS Supporto"}
# - {id: "164", cat: PC/Mac, desc: "Hackintosh Guide"}
# - {id: "165", cat: PC/Mac, desc: "Hackintosh Supporto"}
# - {id: "162", cat: PC/Mac, desc: "macOS Guide"}
# - {id: "163", cat: PC/Mac, desc: "macOS Supporto"}
# - {id: "164", cat: PC/Mac, desc: "Hackintosh Guide"}
# - {id: "165", cat: PC/Mac, desc: "Hackintosh Supporto"}
- {id: "23", cat: PC, desc: "Linux Software", default: true}
# - {id: "168", cat: PC, desc: "Linux Guide"}
# - {id: "93", cat: PC, desc: "Linux Supporto"}
# - {id: "168", cat: PC, desc: "Linux Guide"}
# - {id: "93", cat: PC, desc: "Linux Supporto"}
- {id: "24", cat: PC, desc: "Guide & Tutorial Video", default: true}
# - {id: "129", cat: PC, desc: "Richieste Titoli Software"}
# - {id: "129", cat: PC, desc: "Richieste Titoli Software"}
# GAMES
- {id: "36", cat: PC/Games, desc: "Games - Pc Windows", default: true}
- {id: "158", cat: PC/Mac, desc: "Games - macOS", default: true}
- {id: "37", cat: Console/XBox 360, desc: "Games - Console Microsoft Xbox 360", default: true}
- {id: "38", cat: Console/PS3, desc: "Games - Console Sony PS3", default: true}
- {id: "152", cat: Console/PS4, desc: "Games - Console Sony PS4", default: true}
# - {id: "99", cat: PC/Games, desc: "Games - Supporto"}
# - {id: "123", cat: PC/Games, desc: "Games - Guide"}
# - {id: "130", cat: PC/Games, desc: "Richieste Titoli Games"}
# - {id: "99", cat: PC/Games, desc: "Games - Supporto"}
# - {id: "123", cat: PC/Games, desc: "Games - Guide"}
# - {id: "130", cat: PC/Games, desc: "Richieste Titoli Games"}
# ANDROID
- {id: "58", cat: PC/Mobile-Android, desc: "Android Apps", default: true}
# - {id: "144", cat: PC/Mobile-Android, desc: "Android Guide"}
# - {id: "128", cat: PC/Mobile-Android, desc: "Richieste Titoli Android"}
# - {id: "144", cat: PC/Mobile-Android, desc: "Android Guide"}
# - {id: "128", cat: PC/Mobile-Android, desc: "Richieste Titoli Android"}
# TEAM GRAFICO
# - {id: "88", cat: Other, desc: "Vetrina Grafica"}
# - {id: "100", cat: Other, desc: "Tutorial Photoshop CC"}
# - {id: "88", cat: Other, desc: "Vetrina Grafica"}
# - {id: "100", cat: Other, desc: "Tutorial Photoshop CC"}
# TAVERNA DEI CORSARI
# - {id: "39", cat: Other, desc: "Presentati alla Community"}
# - {id: "112", cat: Other, desc: "Assistenza Forum"}
# - {id: "33", cat: Other, desc: "Chiacchiere in generale"}
# - {id: "83", cat: Other, desc: "Commenti Titoli "}
# - {id: "136", cat: Other, desc: "Sondaggi"}
# - {id: "145", cat: Other, desc: "il CorSaRo VeRde App"}
# - {id: "39", cat: Other, desc: "Presentati alla Community"}
# - {id: "112", cat: Other, desc: "Assistenza Forum"}
# - {id: "33", cat: Other, desc: "Chiacchiere in generale"}
# - {id: "83", cat: Other, desc: "Commenti Titoli "}
# - {id: "136", cat: Other, desc: "Sondaggi"}
# - {id: "145", cat: Other, desc: "il CorSaRo VeRde App"}
# ARCHIVIO FORUM
- {id: "171", cat: PC/0day, desc: "Windows Software obsoleto", default: true}

View File

@@ -143,6 +143,10 @@ settings:
options:
desc: desc
asc: asc
- name: info_results
type: info
label: Search results
default: "If you are getting <b>0 results</b> then access the site with your browser and <b>mark as read</b> all PMs."
login:
path: takelogin.php

View File

@@ -9,7 +9,7 @@ followredirect: true
# changes to this indexer should also be made to limetorrentsclone
links:
- https://www.limetorrents.pro/
- https://limetorrents.unblockit.tv/
- https://limetorrents.unblockit.how/
- https://limetorrents.unblockninja.com/
- https://limetorrents.nocensor.biz/
legacylinks:
@@ -17,27 +17,6 @@ legacylinks:
- https://www.limetorrents.cc/
- https://www.limetorrents.me/
- https://www.limetorrents.zone/ # redirects to .info
- https://limetorrents.unblockit.pro/
- https://limetorrents.unblockit.one/
- https://limetorrents.black-mirror.xyz/
- https://limetorrents.unblocked.casa/
- https://limetorrents.proxyportal.fun/
- https://limetorrents.uk-unblock.xyz/
- https://limetorrents.ind-unblock.xyz/
- https://limetorrents.unblocked.bar/
- https://limetorrents.proxyportal.pw/
- https://limetorrents.uk-unblock.pro/
- https://limetorrents.unblockit.me/
- https://limetorrents.unblockit.pw/
- https://limetorrents.unblockit.id/
- https://limetorrents.unblockit.win/
- https://limetorrents.unblockit.top/
- https://limetorrents.unblockit.lat/
- https://limetorrents.unblockit.app/
- https://limetorrents.unblockit.dev/
- https://limetorrents.unblockit.ltd/
- https://limetorrents.unblockit.link/
- https://limetorrents.unblockit.buzz/
- https://limetorrents.unblockit.club/
- https://limetorrents.unblockit.onl/
- https://www.limetorrents.info/
@@ -53,6 +32,7 @@ legacylinks:
- https://limetorrents.nocensor.work/
- https://limetorrents.unblockit.kim/
- https://limetorrents.unblockit.bz/
- https://limetorrents.unblockit.tv/
caps:
categorymappings:

View File

@@ -0,0 +1,195 @@
---
id: mediamaatjes
name: MediaMaatjes
description: "MediaMaatjes is a DUTCH Private Torrent Tracker for MOVIES / TV / GENERAL"
language: nl-NL
type: private
encoding: UTF-8
links:
- https://www.mediamaatjes.org/
caps:
categorymappings:
- {id: 43, cat: Movies/UHD, desc: "4k Films"}
- {id: 41, cat: TV/Documentary, desc: "Documentaire"}
- {id: 40, cat: Other, desc: "kerst"}
- {id: 15, cat: Other, desc: "Overige"}
- {id: 1, cat: Other, desc: "Afbeeldingen"}
- {id: 19, cat: TV, desc: "TV Series"}
- {id: 21, cat: TV/HD, desc: "Series/MKV"}
- {id: 23, cat: Audio/Video, desc: "Cabaret"}
- {id: 24, cat: Books/EBook, desc: "E-Books"}
- {id: 30, cat: Movies, desc: "Classic"}
- {id: 31, cat: Audio/Audiobook, desc: "Luisterboek"}
- {id: 32, cat: Movies/HD, desc: "Films/HD 720p"}
- {id: 33, cat: Audio, desc: "NL Muziek"}
- {id: 34, cat: Books/Comics, desc: "Stripboeken"}
- {id: 36, cat: Books/Mags, desc: "E Magazine"}
- {id: 18, cat: TV/SD, desc: "Series/XVID"}
- {id: 17, cat: PC/Games, desc: "PC Spellen"}
- {id: 16, cat: PC, desc: "PC Software"}
- {id: 2, cat: Movies/HD, desc: "Films/HD 1080p"}
- {id: 4, cat: Audio/Video, desc: "DVD Muziek"}
- {id: 3, cat: Movies/DVD, desc: "DVD Kids"}
- {id: 5, cat: Movies/DVD, desc: "DVD Films"}
- {id: 7, cat: Movies/SD, desc: "DVD Promo/R5"}
- {id: 8, cat: XXX, desc: "Erotiek"}
- {id: 9, cat: PC/Mobile-Other, desc: "GSM/Navigatie"}
- {id: 10, cat: Audio, desc: "Muziek Album"}
- {id: 11, cat: Audio, desc: "Muziek Diverse"}
- {id: 13, cat: Console/Wii, desc: "Wii"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Filter freeleech only
default: false
- name: thankyou
type: text
label: Thank You Comment
- name: info
type: info
label: Thank you comment
default: This site requires you to leave a Thank You comment before you can download. Enter your personalised comment above.
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: table.main:contains("Aanmelden mislukt")
test:
path: /
selector: a[href="logout.php"]
download:
before:
# https://www.mediamaatjes.org/comment.php?action=add&tid=166386
path: comment.php
method: post
inputs:
action: add
tid: "{{ .DownloadUri.Query.id }}"
text: "{{ .Config.thankyou }}"
selectors:
- selector: a[href^="download.php?id="]
attribute: href
search:
paths:
# https://www.mediamaatjes.org/browse.php?search=&cat=43&incldead=1
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
incldead: 1
# does not support imdbid search and does not return imdb link in results
rows:
selector: "table.mainouter{{ if .Config.freeleech }}:has(img[src=\"pic/freedlfsu.gif\"]){{ else }}{{ end }}"
filters:
- name: andmatch
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="]
filters:
- name: re_replace
args: ["(?i)seizoen\\s*(\\d{1,2})\\s*(tot|t\/m)\\s*(\\d{1,2})", "S$1-$3"]
- name: re_replace
args: ["(?i)(seizoen\\s*)(\\d{1,2})", "S$2"]
- name: re_replace
args: ["(?i)(afl.\\s*|aflevering\\s*)(\\d{1,2})", "E$2"]
- name: re_replace
args: ["(?i)compleet", "Complete"]
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="details.php?id="]
attribute: href
size:
selector: a[href^="details_bestanden.php?torrent_id="]
filters:
- name: regexp
args: "(.+?) in"
files:
selector: a[href^="details_bestanden.php?torrent_id="]
filters:
- name: regexp
args: "in (\\d+) bestan"
grabs:
selector: table table tr:nth-child(2) td:nth-child(1)
date:
selector: table table tr:nth-child(2) td:nth-child(2)
filters:
- name: replace
args: ["januari", "January"]
- name: replace
args: ["februari", "February"]
- name: replace
args: ["maart", "March"]
- name: replace
args: ["april", "April"]
- name: replace
args: ["mei", "May"]
- name: replace
args: ["juni", "June"]
- name: replace
args: ["juli", "July"]
- name: replace
args: ["augustus", "August"]
- name: replace
args: ["september", "September"]
- name: replace
args: ["oktober", "October"]
- name: replace
args: ["november", "November"]
- name: replace
args: ["december", "December"]
- name: re_replace
args: ["\\s*om\\s*", " "]
- name: append
args: " +01:00" # CET
- name: dateparse
args: "2 January 2006 15:04:05 -07:00"
seeders_optional:
optional: true
selector: table tr:nth-child(3) td:nth-child(5) font b
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
optional: true
selector: table tr:nth-child(3) td:nth-child(5) font b:nth-child(2)
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
downloadvolumefactor:
case:
img[src="pic/freedlfsu.gif"]: 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
# engine n/a

View File

@@ -9,54 +9,68 @@ links:
- https://mircrew-releases.org/
caps:
# commented out categories are discussion-only forums
categorymappings:
- {id: 1, cat: Other, desc: "MIRCrew Sharing Community"}
- {id: 2, cat: Other, desc: "Piazza Grande"}
- {id: 3, cat: Other, desc: "Comunicazioni, Annunci & Guide"}
- {id: 11, cat: Other, desc: "CAG Progetti & Collezioni"}
- {id: 12, cat: Other, desc: "CAG Pir8 Channel"}
- {id: 13, cat: Other, desc: "CAG Progetti"}
- {id: 61, cat: Other, desc: "CAG Video"}
- {id: 62, cat: Other, desc: "CAG Animazione"}
- {id: 63, cat: Other, desc: "CAG Libreria"}
- {id: 64, cat: Other, desc: "CAG Musica"}
- {id: 14, cat: Other, desc: "CAG Collezioni"}
- {id: 50, cat: Other, desc: "CAG Proposte & Richieste"}
- {id: 60, cat: Other, desc: "CAG Abbandonati"}
- {id: 15, cat: Other, desc: "Area Grafica"}
- {id: 16, cat: Other, desc: "Vetrina MIRCrew"}
- {id: 17, cat: Other, desc: "Vetrina Utenti"}
- {id: 19, cat: Other, desc: "Area Staff"}
- {id: 23, cat: Other, desc: "Archivio"}
- {id: 25, cat: Movies, desc: "Video Releases"}
- {id: 26, cat: Movies, desc: "Releases Film"}
- {id: 28, cat: TV, desc: "Releases Serie TV"}
- {id: 51, cat: TV, desc: "Releases TV Stagioni in corso"}
- {id: 52, cat: TV, desc: "Releases TV Stagioni complete"}
- {id: 29, cat: TV/Documentary, desc: "Documentari"}
- {id: 30, cat: TV, desc: "TV Show"}
- {id: 31, cat: TV, desc: "Teatro"}
- {id: 32, cat: Movies, desc: "Richieste Video"}
- {id: 53, cat: Movies, desc: "Richieste Film"}
- {id: 54, cat: TV, desc: "Richieste Serie TV"}
- {id: 55, cat: Movies, desc: "Richieste Video diverse"}
- {id: 57, cat: Movies, desc: "Richieste Video Soddisfatte"}
- {id: 33, cat: TV/Anime, desc: "Animazione Releases"}
- {id: 34, cat: TV/Anime, desc: "Anime - Movies"}
- {id: 35, cat: TV/Anime, desc: "Anime - Serie"}
- {id: 36, cat: TV/Anime, desc: "Cartoon - Movies"}
- {id: 37, cat: TV/Anime, desc: "Cartoon - Serie"}
- {id: 38, cat: TV/Anime, desc: "Richieste Animazione"}
- {id: 39, cat: Books, desc: "Libreria Releases"}
- {id: 40, cat: Books/EBook, desc: "E-Books"}
- {id: 41, cat: Audio/Audiobook, desc: "A-Books"}
- {id: 42, cat: Books/Comics, desc: "Comics"}
- {id: 43, cat: Books/Mags, desc: "Edicola"}
- {id: 44, cat: Books, desc: "Richieste Libreria"}
- {id: 45, cat: Audio, desc: "Music Releases"}
- {id: 46, cat: Audio, desc: "Musica - Audio"}
- {id: 47, cat: Audio/Video, desc: "Musica - Video"}
- {id: 48, cat: Audio, desc: "Richieste Musica"}
# - {id: 1, cat: Other, desc: "MIRCrew Sharing Community"}
# - {id: 2, cat: Other, desc: "Piazza Grande"}
# - {id: 4, cat: Other, desc: "PG Statuto & Regole"}
# - {id: 5, cat: Other, desc: "PG Info Point"}
# - {id: 6, cat: Other, desc: "PG Presentazioni"}
# - {id: 7, cat: Other, desc: "PG Off Topic"}
# - {id: 49, cat: Other, desc: "PG Segnalazioni allo Staff"}
# - {id: 3, cat: Other, desc: "Comunicazioni, Annunci & Guide"}
# - {id: 8, cat: Other, desc: "CAG Comunicazioni da MIRCrew"}
# - {id: 9, cat: Other, desc: "CAG Guide & Tutorial"}
# - {id: 11, cat: Other, desc: "Progetti & Collezioni"}
# - {id: 12, cat: Other, desc: "P&C Pir8 Channel"}
# - {id: 13, cat: Other, desc: "P&C Progetti"}
# - {id: 61, cat: Other, desc: "P&C Video"}
# - {id: 62, cat: Other, desc: "P&C Animazione"}
# - {id: 63, cat: Other, desc: "P&C Libreria"}
# - {id: 64, cat: Other, desc: "P&C Musica"}
# - {id: 14, cat: Other, desc: "P&C Collezioni"}
# - {id: 50, cat: Other, desc: "P&C Proposte & Richieste"}
# - {id: 60, cat: Other, desc: "P&C Abbandonati"}
# - {id: 15, cat: Other, desc: "Area Grafica"}
# - {id: 16, cat: Other, desc: "AG Vetrina MIRCrew"}
# - {id: 17, cat: Other, desc: "AG Vetrina Utenti"}
# - {id: 18, cat: Other, desc: "AG Richieste Grafica"}
# - {id: 19, cat: Other, desc: "Area Staff"}
# - {id: 20, cat: Other, desc: "AS Membri MIRCrew"}
# - {id: 21, cat: Other, desc: "AS Reclutamento MIRCrew"}
# - {id: 23, cat: Other, desc: "AS Archivio"}
- {id: 25, cat: Movies, desc: "Video Releases", default: true}
- {id: 26, cat: Movies, desc: "Releases Film", default: true}
# - {id: 28, cat: TV, desc: "Releases Serie TV"}
- {id: 51, cat: TV, desc: "Releases TV Stagioni in corso", default: true}
- {id: 52, cat: TV, desc: "Releases TV Stagioni complete", default: true}
- {id: 29, cat: TV/Documentary, desc: "Documentari", default: true}
- {id: 30, cat: TV, desc: "TV Show", default: true}
- {id: 31, cat: TV, desc: "Teatro", default: true}
# - {id: 32, cat: Movies, desc: "Richieste Video"}
# - {id: 53, cat: Movies, desc: "Richieste Film"}
# - {id: 54, cat: TV, desc: "Richieste Serie TV"}
# - {id: 55, cat: Movies, desc: "Richieste Video diverse"}
# - {id: 57, cat: Movies, desc: "Richieste Video Soddisfatte"}
- {id: 33, cat: TV/Anime, desc: "Animazione Releases", default: true}
- {id: 34, cat: TV/Anime, desc: "Anime - Movies", default: true}
- {id: 35, cat: TV/Anime, desc: "Anime - Serie", default: true}
- {id: 36, cat: TV/Anime, desc: "Cartoon - Movies", default: true}
- {id: 37, cat: TV/Anime, desc: "Cartoon - Serie", default: true}
# - {id: 38, cat: TV/Anime, desc: "Richieste Animazione", default: true}
# - {id: 58, cat: TV/Anime, desc: "Richieste Animazione Soddisfatte", default: true}
- {id: 39, cat: Books, desc: "Libreria Releases", default: true}
- {id: 40, cat: Books/EBook, desc: "E-Books", default: true}
- {id: 41, cat: Audio/Audiobook, desc: "A-Books", default: true}
- {id: 42, cat: Books/Comics, desc: "Comics", default: true}
- {id: 43, cat: Books/Mags, desc: "Edicola", default: true}
# - {id: 44, cat: Books, desc: "Richieste Libreria"}
# - {id: 59, cat: Books, desc: "Richieste Libreria Soddisfatte"}
- {id: 45, cat: Audio, desc: "Music Releases", default: true}
- {id: 46, cat: Audio, desc: "Musica - Audio", default: true}
- {id: 47, cat: Audio/Video, desc: "Musica - Video", default: true}
# - {id: 48, cat: Audio, desc: "Richieste Musica"}
# - {id: 56, cat: Audio, desc: "Richieste Musica Soddisfatte"}
modes:
search: [q]
@@ -114,7 +128,7 @@ search:
# Search by Author
author: ""
# Search in subforums: yes 1, no 0
sc: 1
sc: 0
# Search For: all, msgonly, titleonly, firstpost
sf: titleonly
# Show Results as: posts, topics

View File

@@ -1,9 +1,9 @@
---
id: moviesite
name: Moviesite
description: "Moviesite is a HUNGARIAN private tracker for MOVIES / TV / GENERAL"
description: "Moviesite is a HUNGARIAN Semi-Private tracker for MOVIES / TV / GENERAL"
language: hu-HU
type: private
type: semi-private
encoding: ISO-8859-2
links:
- http://moviesite.info.hu/ # does not support https ERR_CONNECTION_REFUSED

View File

@@ -1,142 +0,0 @@
---
id: oncesearch
name: OnceSearch
description: "OnceSearch is a Public Torrent Tracker for 3X"
language: en-US
type: public
encoding: UTF-8
links:
- http://oncesearch.com/ # https is not supported
caps:
categories:
Amateur: XXX
Anal: XXX
Anime: XXX
Asian: XXX
Ass Lick: XXX
BBW: XXX
BDSM: XXX
Bi-Sexual: XXX
Big Ass: XXX
Big Butts: XXX
Big Dick: XXX
Big Tits: XXX
Blonde: XXX
Blowjob: XXX
Brunette: XXX
Busty: XXX
Classic: XXX
Comics: XXX
Creampie: XXX
Cumshot: XXX
Deepthroat: XXX
Ebony: XXX
Erotic: XXX
Facial: XXX
Fetish: XXX
Fishnets: XXX
Fisting: XXX
Foot: XXX
Foreign: XXX
Gangbang: XXX
Gay: XXX
Glamour Girls: XXX
Gonzo: XXX
Group Sex: XXX
Hairy: XXX
Handjob: XXX
Hardcore: XXX
Homemade: XXX
Interracial: XXX
Latin: XXX
Lesbian: XXX
Lingerie: XXX
Massage: XXX
Masturbation: XXX
Mature: XXX
MILF: XXX
Nude Photography: XXX
Nylons: XXX
Oiled: XXX
Oral: XXX
Orgy: XXX
Outdoor: XXX
Pissing: XXX
Pregnant: XXX
Public: XXX
Redhead: XXX
Retro: XXX
Sex Toys: XXX
Shemale: XXX
Solo: XXX
Squirt: XXX
Tattoo: XXX
Teen: XXX
Threesome: XXX
Uncensored: XXX
XXX: XXX
Porno Clips: XXX
Porno HD Movies: XXX
Porno Other: XXX
Porno Pics: XXX
modes:
search: [q]
settings: []
search:
paths:
# http://oncesearch.com/search/advanced/-/Olivia%20Sin%20Deep/0/any
# http://oncesearch.com/category/latest-torrents
# site supports only single cat search so we default to all
- path: "{{ if .Keywords }}search/advanced/-/{{ .Keywords }}/0/any{{ else }}category/latest-torrents{{ end }}"
rows:
selector: table.table-striped > tbody > tr
filters:
- name: andmatch
fields:
category:
text: XXX
category|noappend:
optional: true
selector: p > a:last-of-type
title:
selector: span
details:
selector: a[href^="/details/"]
attribute: href
download:
selector: a[href^="/file/"][title="Download Torrent"]
attribute: href
optional: true
magnet:
selector: a[href^="magnet:?xt="]
attribute: href
optional: true
date:
selector: td:nth-child(3)
filters:
- name: timeago
files_optional:
selector: td:nth-child(4)
optional: true
files:
text: "{{ if .Result.files_optional }}{{ .Result.files_optional }}{{ else }}1{{ end }}"
size_optional:
selector: td:nth-child(5)
optional: true
size:
text: "{{ if .Result.size_optional }}{{ .Result.size_optional }}{{ else }}256 MB{{ end }}"
seeders:
text: 1
leechers:
text: 0
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -8,30 +8,13 @@ encoding: UTF-8
followredirect: true
links:
- https://www.oxtorrent.be/
- https://oxtorrent.unblockit.tv/
- https://oxtorrent.unblockit.how/
- https://oxtorrent.nocensor.biz/
legacylinks:
- https://wwv.oxtorrent.com/
- https://www.smartorrent.tv/
- https://oxtorrent.black-mirror.xyz/
- https://oxtorrent.unblocked.casa/
- https://oxtrorrent.proxyportal.fun/
- https://oxtorrent.uk-unblock.xyz/
- https://oxtorrent.ind-unblock.xyz/
- https://www.oxtorrent.com/
- https://www.oxtorrent.pw/
- https://oxtorrent.unblocked.bar/
- https://oxtorrent.proxyportal.pw/
- https://oxtorrent.uk-unblock.pro/
- https://oxtorrent.unblocked.rest/
- https://www.oxtorrent.cc/
- https://www.oxtorrent.bz/
- https://www.oxtorrent.ws/
- https://wvw.oxtorrent.ws/
- https://oxtorrent.unblocked.monster/
- https://www.oxtorrent.tv/
- https://www.oxtorrent.ph/
- https://wvw.oxtorrent.pe/
- https://www.oxtorrent.pe/
- https://www.oxtorrent.co/
- https://oxtorrent.unblockit.uno/
@@ -47,6 +30,7 @@ legacylinks:
- https://www.oxtorrent.pl/
- https://oxtorrent.unblockit.bz/
- https://www.oxtorrent.vc/
- https://oxtorrent.unblockit.tv/
caps:
categorymappings:

View File

@@ -1,9 +1,9 @@
---
id: pier720
name: 720pier
description: "720pier is a RUSSIAN Private Torrent Tracker for HD SPORTS"
description: "720pier is a RUSSIAN Semi-Private Torrent Tracker for HD SPORTS"
language: ru-RU
type: private
type: semi-private
encoding: UTF-8
links:
- https://720pier.ru/

View File

@@ -6,12 +6,15 @@ language: ru-RU
type: public
encoding: UTF-8
links:
- https://piratbit.top/ # site forces https, http is not supported
legacylinks:
- https://pb.wtf/
- http://top.piratbit.fun/
legacylinks:
- https://piratbit.pw/
- https://piratbit.ml/
- http://piratbit.top/
- https://piratbit.top/
certificates:
- 8531af678cf197593ff4d6a4e6ce30088d719509 # expired 13th Nov 2016
caps:
categorymappings:

View File

@@ -6,12 +6,15 @@ language: ru-RU
type: semi-private
encoding: UTF-8
links:
- https://piratbit.top/ # site forces https, http is not supported
legacylinks:
- https://pb.wtf/
- http://top.piratbit.fun/
legacylinks:
- https://piratbit.pw/
- https://piratbit.ml/
- http://piratbit.top/
- https://piratbit.top/
certificates:
- 8531af678cf197593ff4d6a4e6ce30088d719509 # expired 13th Nov 2016
caps:
categorymappings:

View File

@@ -9,12 +9,9 @@ followredirect: true
links:
- https://pirateiro.com/
- https://pirateiro.eu/
- https://pirateiro.unblockit.tv/
- https://pirateiro.unblockit.how/
legacylinks:
- http://pirateiro.com/
- https://pirateiro.unblockit.pro/
- https://pirateiro.unblockit.one/
- https://pirateiro.unblockit.me/
- https://pirateiro.unblockit.pw/
- https://pirateiro.unblockit.id/
- https://pirateiro.unblockit.win/
@@ -33,6 +30,7 @@ legacylinks:
- https://pirateiro.unblockit.ws/
- https://pirateiro.unblockit.kim/
- https://pirateiro.unblockit.bz/
- https://pirateiro.unblockit.tv/
caps:
categorymappings:

View File

@@ -145,16 +145,12 @@ search:
filters:
- name: append
args: "Language: polish\n<br>"
- name: prepend
args: "{{ .Result.description }}"
subbed:
optional: true
selector: img[src="pic/napisy.png"]
filters:
- name: append
args: "Subbed\n<br>"
- name: prepend
args: "{{ .Result.description }}"
description:
text: "{{ .Result.genre }}{{ .Result.language }}{{ .Result.subbed }}"
imdbid:

View File

@@ -66,11 +66,11 @@ settings:
- name: info_grid
type: info
label: GRID view
default: This indexer does not support the GRID view on the torrent search page. Change the <b>GRID</b> setting to <b>OFF</b> on your account profile. If set to <i>ON</i> will cause no results to be returned.
default: This indexer does not support the GRID view on the torrent search page. Change the <b>Grid View</b> setting to <b>OFF</b> on your User Settings. If set to <i>ON</i> will cause no results to be returned.
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile. The default is <i>25</i>.
default: For best results, change the <b>Torrents per page</b> setting to <b>100</b> on your User Settings. The default is <i>25</i>.
login:
path: login.php

View File

@@ -1,224 +0,0 @@
---
id: pornorip
name: PornoRip
description: "PornoRip is a RUSSIAN Public Torrent Tracker for 3X"
language: ru-RU
type: public
encoding: UTF-8
links:
- https://www.pornorip.biz/
caps:
categorymappings:
- {id: 1, cat: XXX, desc: "Порно Трекер / XXX Torrent Tracker"}
- {id: 2, cat: XXX, desc: "Зарубежные порнофильмы / Pornofilms"}
- {id: 29, cat: XXX, desc: "Зарубежные порнофильмы / Pornofilms Гонзо-фильмы / Gonzo & All Sex"}
- {id: 30, cat: XXX, desc: "Зарубежные порнофильмы / Pornofilms Фильмы с сюжетом / Feature"}
- {id: 31, cat: XXX, desc: "Зарубежные порнофильмы / Pornofilms Лесбо-фильмы / Lesbo"}
- {id: 32, cat: XXX, desc: "Зарубежные порнофильмы / Pornofilms Этнические фильмы / Ethnic"}
- {id: 35, cat: XXX, desc: "Зарубежные порнофильмы / Pornofilms Эротические фильмы / Erotic & Documentary"}
- {id: 70, cat: XXX, desc: "Зарубежные порнофильмы / Pornofilms Классика / Classic Porn"}
- {id: 33, cat: XXX, desc: "Зарубежные порнофильмы / Pornofilms HD порнофильмы / HD Porn Movies"}
- {id: 10, cat: XXX, desc: "Порноролики / Porn Clips"}
- {id: 42, cat: XXX, desc: "Порноролики / Porn Clips Сайтрипы / SiteRip's"}
- {id: 43, cat: XXX, desc: "Порноролики / Porn Clips Сайтрипы HD / SiteRip's HD Video"}
- {id: 73, cat: XXX, desc: "Порноролики / Porn Clips Сайтрипы UHD / 4K UHD (2160p) Porn Video"}
- {id: 78, cat: XXX, desc: "Порноролики / Porn Clips 3D & Virtual Reality Porn Videos (VR)"}
- {id: 44, cat: XXX, desc: "Порноролики / Porn Clips Сцены из фильмов / Movie Scenes"}
- {id: 45, cat: XXX, desc: "Порноролики / Porn Clips Порноролики Разное / Various Clips"}
- {id: 40, cat: XXX, desc: "Порноролики / Porn Clips Паки сайтрипов / SiteRip's Packs"}
- {id: 41, cat: XXX, desc: "Порноролики / Porn Clips Паки по актрисам / Actresses Clips Packs"}
- {id: 3, cat: XXX, desc: "Японское порно / Japan Porn"}
- {id: 79, cat: XXX, desc: "Chinese Movies"}
- {id: 80, cat: XXX, desc: "Japanese Movies"}
- {id: 18, cat: XXX, desc: "Русское порно / Russian Porn"}
- {id: 36, cat: XXX, desc: "Русское порно / Russian Porn Русские порнофильмы / Russian Porn Films"}
- {id: 37, cat: XXX, desc: "Русское порно / Russian Porn Паки русских порнороликов / Russian Clips Packs"}
- {id: 39, cat: XXX, desc: "Русское порно / Russian Porn Русское любительское порно видео / Russian Amateur Porn Video"}
- {id: 4, cat: XXX, desc: "Эротические студии и Фотосеты, Комиксы, Журналы / Erotic, Pictures, Magazines & Comix"}
- {id: 46, cat: XXX, desc: "Эротические студии и Фотосеты, Комиксы, Журналы / Erotic, Pictures, Magazines & Comix Эротические студии видео / Erotic Video Library"}
- {id: 47, cat: XXX, desc: "Эротические студии и Фотосеты, Комиксы, Журналы / Erotic, Pictures, Magazines & Comix Эротические студии Фото / Erotic Picture Gallery"}
- {id: 48, cat: XXX, desc: "Эротические студии и Фотосеты, Комиксы, Журналы / Erotic, Pictures, Magazines & Comix Паки сайтрипов эротических студий / Erotic Picture SiteRip's"}
- {id: 49, cat: XXX, desc: "Эротические студии и Фотосеты, Комиксы, Журналы / Erotic, Pictures, Magazines & Comix Любительское фото / Amateur Picture"}
- {id: 50, cat: XXX, desc: "Эротические студии и Фотосеты, Комиксы, Журналы / Erotic, Pictures, Magazines & Comix Подборки по актрисам / Actresses Picture Packs"}
- {id: 51, cat: XXX, desc: "Эротические студии и Фотосеты, Комиксы, Журналы / Erotic, Pictures, Magazines & Comix Подборки сайтрипов / SiteRip's Picture Packs"}
- {id: 52, cat: XXX, desc: "Эротические студии и Фотосеты, Комиксы, Журналы / Erotic, Pictures, Magazines & Comix Подборки сетов / Picture Sets"}
- {id: 53, cat: XXX, desc: "Эротические студии и Фотосеты, Комиксы, Журналы / Erotic, Pictures, Magazines & Comix Нетрадиционное порно фото"}
- {id: 76, cat: XXX, desc: "Эротические студии и Фотосеты, Комиксы, Журналы / Erotic, Pictures, Magazines & Comix Комиксы и рисунки, Журналы / Magazines & Comix"}
- {id: 6, cat: XXX, desc: "Нетрадиционное порно / Special Interest Porn"}
- {id: 56, cat: XXX, desc: "Нетрадиционное порно / Special Interest Porn Бисексуалы / Bisexual"}
- {id: 57, cat: XXX, desc: "Нетрадиционное порно / Special Interest Porn Транссексуалы / Shemale Transsexual"}
- {id: 58, cat: XXX, desc: "Нетрадиционное порно / Special Interest Porn БДСМ / BDSM"}
- {id: 59, cat: XXX, desc: "Нетрадиционное порно / Special Interest Porn Женское доминирование и страпон / Femdom & Strapon"}
- {id: 60, cat: XXX, desc: "Нетрадиционное порно / Special Interest Porn Подглядывание / Voyeur"}
- {id: 61, cat: XXX, desc: "Нетрадиционное порно / Special Interest Porn Фистинг и дилдо / Fisting & Dildo"}
- {id: 62, cat: XXX, desc: "Нетрадиционное порно / Special Interest Porn Беременные / Pregnant Preggo"}
- {id: 63, cat: XXX, desc: "Нетрадиционное порно / Special Interest Porn Буккаке / Bukkake"}
- {id: 64, cat: XXX, desc: "Нетрадиционное порно / Special Interest Porn Мочеиспускание / Peeing"}
- {id: 65, cat: XXX, desc: "Нетрадиционное порно / Special Interest Porn Фетиш / Fetish"}
- {id: 66, cat: XXX, desc: "Нетрадиционное порно / Special Interest Porn Копро / Scat"}
- {id: 5, cat: XXX, desc: "Мультфильмы, Хентай и игры / Сartoons, Hentai & Games"}
- {id: 54, cat: XXX, desc: "Мультфильмы, Хентай и игры / Сartoons, Hentai & Games Хентай"}
- {id: 55, cat: XXX, desc: "Мультфильмы, Хентай и игры / Сartoons, Hentai & Games Игры"}
- {id: 74, cat: XXX, desc: "Мультфильмы, Хентай и игры / Сartoons, Hentai & GamesПорно Мультики"}
- {id: 7, cat: XXX, desc: "Гей-порно / Gay porn"}
- {id: 67, cat: XXX, desc: "Гей-порно / Gay porn Полнометражные гей-фильмы / Full Length Gay Movies"}
- {id: 68, cat: XXX, desc: "Гей-порно / Gay porn Ролики, SiteRip'ы и сцены из гей-фильмов / Gay Clips & Movie Scenes"}
- {id: 16, cat: XXX, desc: "Форум PornoRip.biz"}
- {id: 17, cat: XXX, desc: "Форум PornoRip.biz Новости Порно Индустрии"}
- {id: 69, cat: XXX, desc: "Форум PornoRip.biz Правила, инструкции, FAQ"}
- {id: 71, cat: XXX, desc: "Форум PornoRip.biz Новости трекера!"}
- {id: 72, cat: XXX, desc: "Форум PornoRip.biz Общение"}
- {id: 77, cat: XXX, desc: "Форум PornoRip.biz ОбщениеАрхив"}
modes:
search: [q]
settings:
- name: sort
type: select
label: Sort requested from site
default: t
options:
t: created
ts: seeders
sz: size
i: title
- name: type
type: select
label: Order requested from site
default: d
options:
d: desc
a: asc
search:
paths:
# https://www.pornorip.biz/search.php?tracker_search=torrent&keywords=slut&terms=all&fp=1&author=&sc=1&sf=titleonly&sr=topics&sk=t&sd=d&st=0&ch=300&t=0&submit=Search
- path: search.php
inputs:
tracker_search: torrent
keywords: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}"
terms: all
author: ""
sc: 1
sf: titleonly
sr: topics
sk: "{{ .Config.sort }}"
sd: "{{ .Config.type }}"
st: 0
ch: 300
t: 0
submit: Search
$raw: "{{ range .Categories }}&fid[]={{.}}{{end}}"
rows:
selector: div.forumbg > div.inner > ul.topiclist > li.row > dl.icon:has(a[href^="./download/file.php?id="])
filters:
- name: andmatch
fields:
title:
selector: a.topictitle
filters:
- name: re_replace
args: ["^\\[[\\w ]*\\]\\s?", ""]
details:
selector: a.topictitle
attribute: href
category:
selector: dt a:last-of-type
attribute: href
filters:
- name: regexp
args: "-f(\\d+).html$"
download:
selector: a[href^="./download/file.php?id="]
attribute: href
size:
selector: dt b:nth-of-type(2)
filters:
- name: replace
args: ["ТБ", "TB"]
- name: replace
args: ["ГБ", "GB"]
- name: replace
args: ["МБ", "MB"]
- name: replace
args: ["КБ", "KB"]
seeders:
selector: span.seed
leechers:
selector: span.leech
grabs:
selector: span.complet
date_day:
# Сегодня, 12:35
selector: dt:contains("Сегодня"), dt:contains("Вчера")
optional: true
filters:
- name: regexp
args: "»\\s+(.+?)\\s+в"
- name: replace
args: ["Сегодня", "Today"]
- name: replace
args: ["Вчера", "Yesterday"]
- name: fuzzytime
date_ago:
# 46 минут назад
selector: dt:contains("назад")
optional: true
filters:
- name: regexp
args: "»\\s+(.+?)\\s+в"
- name: replace
args: ["назад", "ago"]
- name: replace
args: ["секунд", "seconds"]
- name: replace
args: ["минут", "minutes"]
- name: replace
args: ["часов", "hours"]
- name: timeago
date_year:
# 12 янв 2019, 11:26
selector: dt:not(:contains("Сегодня")):not(:contains("Вчера")):not(:contains("назад"))
optional: true
filters:
- name: regexp
args: "»\\s+(.+?)\\s+в"
- 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: append
args: " +03:00" # MSK
- name: dateparse
args: "02 Jan 2006, 15:04 -07:00"
date:
text: "{{ if or .Result.date_year .Result.date_ago .Result.date_day }}{{ or .Result.date_year .Result.date_ago .Result.date_day }}{{ else }}now{{ end }}"
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# phpBB

View File

@@ -1,191 +0,0 @@
---
id: reelflix
name: ReelFLiX
description: "ReelFLiX (HD4Free,LegacyHD) is a Private Torrent Tracker for HD MOVIES"
language: en-US
type: private
encoding: UTF-8
links:
- https://reelflix.xyz/
legacylinks:
- https://legacyhd.org/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: login
method: form
form: form[action$="/login"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: on
selectorinputs:
_token:
selector: input[name="_token"]
attribute: value
error:
- selector: div#ERROR_COPY
# test:
# path: /
# selector: a[href$="/logout"]
search:
paths:
- path: torrents
inputs:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
name: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
description: ""
mediainfo: ""
keywords: ""
uploader: ""
tmdbId: "{{ .Query.TMDBID }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tvdbId: "{{ .Query.TVDBID }}"
malId: ""
startYear: ""
endYear: ""
playlistId: ""
collectionId: ""
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
page: 1
free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/(\\d+)"
title:
selector: a.view-torrent
download:
selector: a[href*="/download/"]
attribute: href
details:
selector: a.view-torrent
attribute: href
poster:
selector: div.torrent-poster img
attribute: src
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
- name: replace
args: ["https://via.placeholder.com/400x600", ""]
size:
selector: td:nth-last-child(5)
seeders:
selector: td:nth-last-child(4)
leechers:
selector: td:nth-last-child(3)
grabs:
selector: td:nth-last-child(2)
date:
selector: td:nth-last-child(1)
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
- name: re_replace
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前|sedan)", " ago"]
- name: re_replace
args: ["(?i)(saniye|sekundit|sekunder|secondi|sekund|segundos|sekundami|секунд|secunde|secondes|Sekunden|секунди|seconden|秒前)", "seconds"]
- name: re_replace
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten|minuter)", "minutes"]
- name: re_replace
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟|分)", " minute"]
- name: re_replace
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden|timmar)", "hours"]
- name: re_replace
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間|timme)", " hour"]
- name: re_replace
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen|dagar)", "days"]
- 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)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken|veckor)", "weeks"]
- name: re_replace
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間|vecka)", " week"]
- name: re_replace
args: ["(?i) (ay)", "month"]
- name: re_replace
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden|månader)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月|månad)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
- name: re_replace
args: ["(?i)(För |und)", ""] # Misc removals
- name: timeago
downloadvolumefactor:
case:
span.torrent-listings-global-freeleech: 0
span.torrent-listings-personal-freeleech: 0
span.torrent-listings-freeleech-token: 0
span.torrent-listings-featured: 0
span.torrent-listings-freeleech i[data-original-title*="25%"]: 0.75
span.torrent-listings-freeleech i[data-original-title*="50%"]: 0.5
span.torrent-listings-freeleech i[data-original-title*="75%"]: 0.25
span.torrent-listings-freeleech i[data-original-title*="100%"]: 0
span.torrent-listings-special-freeleech: 0
"*": 1
uploadvolumefactor:
case:
span.torrent-listings-global-double-upload: 2
span.torrent-listings-double-upload: 2
span.torrent-listings-featured: 2
span.torrent-listings-special-double-upload: 2
"*": 1
minimumratio:
text: 0.4
minimumseedtime:
# 5 days (as seconds = 5 x 24 x 60 x 60)
text: 432000
# UNIT3D 5.3.0

View File

@@ -150,6 +150,8 @@ search:
rows:
selector: tr[id^="tor_"]
filters:
- name: andmatch
fields:
category:

View File

@@ -1,228 +0,0 @@
---
id: shareisland
name: Shareisland
description: "A general italian tracker"
language: it-IT
type: private
encoding: UTF-8
links:
- https://shareisland.org/
legacylinks:
- http://shareisland.org/
- http://www.shareisland.org/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movie"}
- {id: 2, cat: TV, desc: "Serie TV"}
- {id: 15, cat: Books/EBook, desc: "Ebook"}
- {id: 17, cat: Books/Mags, desc: "Riviste e Giornali"}
- {id: 19, cat: XXX, desc: "XXX"}
- {id: 3, cat: Audio, desc: "Music"}
- {id: 7, cat: PC/Games, desc: "Games"}
- {id: 23, cat: PC, desc: "Software"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: login
method: form
form: form[action$="/login"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: on
selectorinputs:
_token:
selector: input[name="_token"]
attribute: value
error:
- selector: div#ERROR_COPY
# test:
# path: /
# selector: a[href$="/logout"]
search:
paths:
- path: torrents
inputs:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
name: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
description: ""
mediainfo: ""
keywords: ""
uploader: ""
tmdbId: "{{ .Query.TMDBID }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tvdbId: "{{ .Query.TVDBID }}"
malId: ""
startYear: ""
endYear: ""
playlistId: ""
collectionId: ""
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
page: 1
free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
keywordsfilters:
- name: diacritics
args: replace
- name: re_replace # S01 to 1
args: ["(?i)\\bS0*(\\d+)\\b", "$1"]
- name: re_replace # S01E01 to 1 1
args: ["(?i)\\bS0*(\\d+)E0*(\\d+)\\b", "$1 $2"]
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/(\\d+)"
title:
selector: a.view-torrent
filters:
- name: re_replace # replace special characters with " " (space)
args: ["[\\[!\"#$%&'()*+,\\-.\\/:;<=>?@[\\]^_`{|}~]", " "]
- name: diacritics
args: replace
- name: re_replace # replace multiple spaces
args: ["[ ]{2,}", " "]
# normalize to SXXEYY format
- name: re_replace # S01 E01 to S01E01
args: ["(?i)\\bS(\\d+)\\sE(\\d+)\\b", "S$1E$2"]
- name: re_replace # 01x01 to S01E01
args: ["(?i)(\\d{2})x(\\d+)", "S$1E$2"]
- name: re_replace # 1x01 to S01E01
args: ["(?i)\\b(\\d{1})x(\\d+)", "S0$1E$2"]
- name: re_replace # Stagione X --> S0X
args: ["(?i)\\bStagion[ei]\\s?(\\d{1})\\b|\\bSeason'?s?\\s?(\\d{1})\\b", "S0$1$2"]
- name: re_replace # Stagione XX --> SXX
args: ["(?i)\\bStagion[ei]\\s?(\\d{2,})\\b|\\bSeason'?s?\\s?(\\d{2,})\\b", "S$1$2"]
- name: re_replace # Episodio 4 to E4
args: ["(?i)\\b(?:[\\/\\|]?Episodio\\s?(\\d+)|Puntata\\s?(\\d+))", "E$1$2"]
- name: re_replace # Episodi 4 5 to E04-05
args: ["(?i)\\b(?:Puntate\\s*)(\\d+)\\s?(\\d+)", "E0$1-0$2"]
- name: re_replace # rimozioni varie
args: ["(?i)(Serie completa|Completat?a?|in pausa)", ""]
download:
selector: a[href*="/download/"]
attribute: href
details:
selector: a.view-torrent
attribute: href
poster:
selector: div.torrent-poster img
attribute: src
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
- name: replace
args: ["https://via.placeholder.com/400x600", ""]
size:
selector: td:nth-last-child(5)
seeders:
selector: td:nth-last-child(4)
leechers:
selector: td:nth-last-child(3)
grabs:
selector: td:nth-last-child(2)
date:
selector: td:nth-last-child(1)
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
- name: re_replace
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前|sedan)", " ago"]
- name: re_replace
args: ["(?i)(saniye|sekundit|sekunder|secondi|sekund|segundos|sekundami|секунд|secunde|secondes|Sekunden|секунди|seconden|秒前)", "seconds"]
- name: re_replace
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten|minuter)", "minutes"]
- name: re_replace
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟|分)", " minute"]
- name: re_replace
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden|timmar)", "hours"]
- name: re_replace
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間|timme)", " hour"]
- name: re_replace
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen|dagar)", "days"]
- 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)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken|veckor)", "weeks"]
- name: re_replace
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間|vecka)", " week"]
- name: re_replace
args: ["(?i) (ay)", "month"]
- name: re_replace
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden|månader)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月|månad)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
- name: re_replace
args: ["(?i)(För |und)", ""] # Misc removals
- name: timeago
downloadvolumefactor:
case:
i[class*="fa-id-badge text-orange"]: 0 # 24 Hour FreeLeech From BON Store
i[class*="fa-trophy text-purple"]: 0 # Special FreeLeech For Certain User Groups
i[class*="fa-star text-bold"]: 0 # Freeleech From Token
i[class*="fa-coins text-bold"]: 0 # Freeleech From Token
i[class*="fa-globe text-blue"]: 0 # Global Freeleech
i[class*="fa-star text-gold"]: 0 # Freeleech
i[class*="fa-certificate text-pink"]: 0 # Featured Torrent
"*": 1
uploadvolumefactor:
case:
i[class*="fa-gem text-green"]: 2 # Single Torrent Double Upload
i[class*="fa-globe text-green"]: 2 # Global Double Upload
i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
"*": 1
# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
# minimumratio:
# text: 0.4
minimumseedtime:
# 7 day (as seconds = 7 x 24 x 60 x 60)
text: 604800
# UNIT3D 5.3.0

View File

@@ -1,183 +0,0 @@
---
id: skipthecommercials
name: SkipTheCommercials
description: "SkipTheCommercials (STC) is a Private Torrent Tracker for TV"
language: en-US
type: private
encoding: UTF-8
links:
- https://skipthecommericals.xyz/
caps:
categorymappings:
- {id: 2, cat: TV, desc: "TV Show"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
movie-search: [q, imdbid, tmdbid]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: login
method: form
form: form[action$="/login"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: on
selectorinputs:
_token:
selector: input[name="_token"]
attribute: value
error:
- selector: div#ERROR_COPY
# test:
# path: /
# selector: a[href$="/logout"]
search:
paths:
- path: torrents
inputs:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
name: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
description: ""
mediainfo: ""
keywords: ""
uploader: ""
tmdbId: "{{ .Query.TMDBID }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tvdbId: "{{ .Query.TVDBID }}"
malId: ""
startYear: ""
endYear: ""
playlistId: ""
collectionId: ""
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
page: 1
free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/(\\d+)"
title:
selector: a.view-torrent
download:
selector: a[href*="/download/"]
attribute: href
details:
selector: a.view-torrent
attribute: href
poster:
selector: div.torrent-poster img
attribute: src
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
- name: replace
args: ["https://via.placeholder.com/400x600", ""]
size:
selector: td:nth-last-child(5)
seeders:
selector: td:nth-last-child(4)
leechers:
selector: td:nth-last-child(3)
grabs:
selector: td:nth-last-child(2)
date:
selector: td:nth-last-child(1)
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
- name: re_replace
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前|sedan)", " ago"]
- name: re_replace
args: ["(?i)(saniye|sekundit|sekunder|secondi|sekund|segundos|sekundami|секунд|secunde|secondes|Sekunden|секунди|seconden|秒前)", "seconds"]
- name: re_replace
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten|minuter)", "minutes"]
- name: re_replace
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟|分)", " minute"]
- name: re_replace
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden|timmar)", "hours"]
- name: re_replace
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間|timme)", " hour"]
- name: re_replace
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen|dagar)", "days"]
- 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)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken|veckor)", "weeks"]
- name: re_replace
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間|vecka)", " week"]
- name: re_replace
args: ["(?i) (ay)", "month"]
- name: re_replace
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden|månader)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月|månad)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
- name: re_replace
args: ["(?i)(För |und)", ""] # Misc removals
- name: timeago
downloadvolumefactor:
case:
i[class*="fa-id-badge text-orange"]: 0 # 24 Hour FreeLeech From BON Store
i[class*="fa-trophy text-purple"]: 0 # Special FreeLeech For Certain User Groups
i[class*="fa-star text-bold"]: 0 # Freeleech From Token
i[class*="fa-coins text-bold"]: 0 # Freeleech From Token
i[class*="fa-globe text-blue"]: 0 # Global Freeleech
i[class*="fa-star text-gold"]: 0 # Freeleech
i[class*="fa-certificate text-pink"]: 0 # Featured Torrent
"*": 1
uploadvolumefactor:
case:
i[class*="fa-gem text-green"]: 2 # Single Torrent Double Upload
i[class*="fa-globe text-green"]: 2 # Global Double Upload
i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
"*": 1
# UNIT3D 5.3.0

View File

@@ -119,6 +119,8 @@ search:
rows:
selector: tr.t-row
filters:
- name: andmatch
fields:
category:

View File

@@ -1,197 +0,0 @@
---
id: tellytorrent
name: TellyTorrent
description: "TellyTorrent is an INDIAN Private Tracker for MOVIES / TV"
language: en-US
type: private
encoding: UTF-8
links:
- https://telly.wtf/
legacylinks:
- https://tellytorrent.net/
- https://telly.cc/
- https://telly.to/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movie"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Music"}
- {id: 4, cat: Movies/WEB-DL, desc: "Web Originals"}
- {id: 5, cat: PC/Games, desc: "Games"}
- {id: 6, cat: PC/0day, desc: "Application"}
- {id: 7, cat: PC/Mobile-Other, desc: "Mobile App"}
- {id: 8, cat: Movies, desc: "Movies"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: login
method: form
form: form[action$="/login"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: on
selectorinputs:
_token:
selector: input[name="_token"]
attribute: value
error:
- selector: div#ERROR_COPY
# test:
# path: /
# selector: a[href$="/logout"]
search:
paths:
- path: torrents
inputs:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
name: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
description: ""
mediainfo: ""
keywords: ""
uploader: ""
tmdbId: "{{ .Query.TMDBID }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tvdbId: "{{ .Query.TVDBID }}"
malId: ""
startYear: ""
endYear: ""
playlistId: ""
collectionId: ""
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
page: 1
free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/(\\d+)"
title:
selector: a.view-torrent
download:
selector: a[href*="/download/"]
attribute: href
details:
selector: a.view-torrent
attribute: href
poster:
selector: div.torrent-poster img
attribute: src
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
- name: replace
args: ["https://via.placeholder.com/400x600", ""]
size:
selector: td:nth-last-child(5)
seeders:
selector: td:nth-last-child(4)
leechers:
selector: td:nth-last-child(3)
grabs:
selector: td:nth-last-child(2)
date:
selector: td:nth-last-child(1)
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
- name: re_replace
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前|sedan)", " ago"]
- name: re_replace
args: ["(?i)(saniye|sekundit|sekunder|secondi|sekund|segundos|sekundami|секунд|secunde|secondes|Sekunden|секунди|seconden|秒前)", "seconds"]
- name: re_replace
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten|minuter)", "minutes"]
- name: re_replace
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟|分)", " minute"]
- name: re_replace
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden|timmar)", "hours"]
- name: re_replace
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間|timme)", " hour"]
- name: re_replace
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen|dagar)", "days"]
- 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)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken|veckor)", "weeks"]
- name: re_replace
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間|vecka)", " week"]
- name: re_replace
args: ["(?i) (ay)", "month"]
- name: re_replace
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden|månader)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月|månad)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
- name: re_replace
args: ["(?i)(För |und)", ""] # Misc removals
- name: timeago
downloadvolumefactor:
case:
i[class*="fa-id-badge text-orange"]: 0 # 24 Hour FreeLeech From BON Store
i[class*="fa-trophy text-purple"]: 0 # Special FreeLeech For Certain User Groups
i[class*="fa-star text-bold"]: 0 # Freeleech From Token
i[class*="fa-coins text-bold"]: 0 # Freeleech From Token
i[class*="fa-globe text-blue"]: 0 # Global Freeleech
i[class*="fa-star text-gold"]: 0 # Freeleech
i[class*="fa-certificate text-pink"]: 0 # Featured Torrent
"*": 1
uploadvolumefactor:
case:
i[class*="fa-gem text-green"]: 2 # Single Torrent Double Upload
i[class*="fa-globe text-green"]: 2 # Global Double Upload
i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
"*": 1
# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
# minimumratio:
# text: 0.4
minimumseedtime:
# 7 day (as seconds = 7 x 24 x 60 x 60)
text: 604800
# UNIT3D 5.3.0

View File

@@ -111,6 +111,8 @@ search:
rows:
selector: table.table-bordered tr:has(a[href^="download.php?torrent="])
filters:
- name: andmatch
fields:
category:

View File

@@ -10,15 +10,10 @@ links:
- https://www.torlock.com/
- https://www.torlock2.com/
- https://www.torlock.icu/
- https://torlock.unblockit.tv/
- https://torlock.unblockit.how/
- https://torlock.nocensor.biz/
legacylinks:
- https://torlock.com/
- https://torlock.unblockit.pro/
- https://torlock.unblockit.one/
- https://torlock.unblockit.me/
- https://torlock.unblockit.pw/
- https://torlock.unblockit.id/
- https://torlock.unblockit.win/
- https://torlock.unblockit.top/
- https://torlock.unblockit.lat/
@@ -37,6 +32,7 @@ legacylinks:
- https://torlock.nocensor.work/
- https://torlock.unblockit.kim/
- https://torlock.unblockit.bz/
- https://torlock.unblockit.tv/
caps:
# dont forget to update the search fields category case block

View File

@@ -53,6 +53,8 @@ search:
rows:
selector: div.webResult:has(a.magneto[data-src])
filters:
- name: andmatch
fields:
category:

View File

@@ -114,6 +114,10 @@ search:
- name: replace
args: [" ", "-"]
headers:
# site blocks Jackett's Linux User-Agent, so use Jackett's Windows User-Agent instead
User-Agent: ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"]
rows:
selector: table.table-striped > tbody > tr
filters:

View File

@@ -6,9 +6,9 @@ language: ru-RU
type: public
encoding: UTF-8
links:
- https://torrent.by/
certificates:
- 7536f57e6640c3fce3784736994be95585a85dfb
- http://torrent.by/
legacylinks:
- https://torrent.by/ # ERR_CONNECTION_REFUSED
caps:
categories:

View File

@@ -8,23 +8,9 @@ encoding: UTF-8
followredirect: true
links:
- https://www.torrentdownload.info/
- https://torrentdownload.unblockit.tv/
- https://torrentdownload.unblockit.how/
- https://torrentdownload.nocensor.biz/
legacylinks:
- https://torrentdownload.unblockit.pro/
- https://torrentdownload.unblockit.one/
- https://torrentdownload.black-mirror.xyz/
- https://torrentdownload.unblocked.casa/
- https://torrentdownload.proxyportal.fun/
- https://torrentdownload.uk-unblock.xyz/
- https://torrentdownload.ind-unblock.xyz/
- https://torrentdownload.unblockit.me/
- https://torrentdownload.unblockit.pw/
- https://torrentdownload.unblockit.id/
- https://torrentdownload.unblockit.win/
- https://torrentdownload.unblocked.bar/
- https://torrentdownload.proxyportal.pw/
- https://torrentdownload.uk-unblock.pro/
- https://torrentdownload.unblockit.top/
- https://torrentdownload.unblockit.lat/
- https://torrentdownload.unblockit.app/
@@ -44,6 +30,7 @@ legacylinks:
- https://torrentdownload.nocensor.work/
- https://torrentdownload.unblockit.kim/
- https://torrentdownload.unblockit.bz/
- https://torrentdownload.unblockit.tv/
caps:
categorymappings:

View File

@@ -9,24 +9,9 @@ followredirect: true
links:
- https://www.torrentdownloads.info/
- https://www.torrentdownloads.pro/
- https://torrentdownloads.unblockit.tv/
- https://torrentdownloads.unblockit.how/
- https://torrentdownloads.nocensor.biz/
legacylinks:
- https://torrentdownloads.unblockit.pro/
- https://torrentdownloads.unblockit.one/
- https://torrentdownloads.black-mirror.xyz/
- https://torrentdownloads.unblocked.casa/
- https://torrentdownloads.proxyportal.fun/
- https://torrentdownloads.uk-unblock.xyz/
- https://torrentdownloads.ind-unblock.xyz/
- https://torrentdownloads.unblockit.me/
- https://torrentdownloads.unblockit.pw/
- https://torrentdownloads.unblockit.id/
- https://torrentdownloads.unblockit.win/
- https://torrentdownloads.unblocked.bar/
- https://torrentdownloads.proxyportal.pw/
- https://torrentdownloads.uk-unblock.pro/
- https://torrentdownloads.unblockit.top/
- https://torrentdownloads.unblockit.lat/
- https://torrentdownloads.unblockit.app/
- https://torrentdownloads.unblocked.rest/
@@ -46,6 +31,7 @@ legacylinks:
- https://torrentdownloads.nocensor.work/
- https://torrentdownloads.unblockit.kim/
- https://torrentdownloads.unblockit.bz/
- https://torrentdownloads.unblockit.tv/
caps:
categorymappings:

View File

@@ -9,13 +9,9 @@ followredirect: true
links:
- https://www.torrentfunk.com/
- https://www.torrentfunk2.com/
- https://torrentfunk.unblockit.tv/
- https://torrentfunk.unblockit.how/
- https://torrentfunk.nocensor.biz/
legacylinks:
- https://torrentfunk.unblockit.pro/
- https://torrentfunk.unblockit.one/
- https://torrentfunk.unblockit.me/
- https://torrentfunk.unblockit.pw/
- https://torrentfunk.unblockit.id/
- https://torrentfunk.unblockit.win/
- https://torrentfunk.unblockit.top/
@@ -35,6 +31,7 @@ legacylinks:
- https://torrentfunk.nocensor.work/
- https://torrentfunk.unblockit.kim/
- https://torrentfunk.unblockit.bz/
- https://torrentfunk.unblockit.tv/
caps:
categorymappings:

View File

@@ -11,28 +11,11 @@ links:
- https://torrentgalaxy.mx/
- https://torrentgalaxy.su/
- https://torrentgalaxy.unblockninja.com/
- https://torrentgalaxy.unblockit.tv/
- https://torrentgalaxy.unblockit.how/
- https://torrentgalaxy.nocensor.biz/
legacylinks:
- https://torrentgalaxy.org/ # redirects to *.to
- https://torrentgalaxy.unblockit.pro/
- https://torrentgalaxy.unblockit.one/
- https://tgx.black-mirror.xyz/
- https://tgx.unblocked.casa/
- https://tgx.proxyportal.fun/
- https://tgx.uk-unblock.xyz/
- https://tgx.ind-unblock.xyz/
- https://torrentgalaxy.unblockit.me/
- https://torrentgalaxy.unblockit.pw/
- https://torrentgalaxy.unblockit.id/
- https://torrentgalaxy.unblockit.win/
- https://torrentgalaxy.pw/ # proxy list only
- https://tgx.unblocked.bar/
- https://tgx.proxyportal.pw/
- https://tgx.uk-unblock.pro/
- https://torrentgalaxy.unblockit.top/
- https://torrentgalaxy.unblockit.lat/
- https://torrentgalaxy.unblockit.app/
- https://torrentgalaxy.root.yt/
- https://tgx.unblocked.rest/
- https://torrentgalaxy.unblockit.dev/
@@ -50,6 +33,7 @@ legacylinks:
- https://torrentgalaxy.nocensor.work/
- https://torrentgalaxy.unblockit.kim/
- https://torrentgalaxy.unblockit.bz/
- https://torrentgalaxy.unblockit.tv/
caps:
categorymappings:

View File

@@ -87,13 +87,12 @@ caps:
book-search: [q]
settings:
- name: cookie
- name: username
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker in your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Select the <b>Headers</b> tab<li>Find 'cookie:' in the <b>Request Headers</b> section<li>Copy & paste the whole cookie string to here</ol>"
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -119,15 +118,20 @@ settings:
asc: asc
login:
method: cookie
path: lt/account-login.php
method: post
inputs:
cookie: "{{ .Config.cookie }}"
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: div.klaida
- selector: p.error_text
test:
path: lt/torrents.php
path: lt/torrents
search:
paths:
- path: lt/torrents.php
- path: lt/torrents
inputs:
$raw: "{{ range .Categories }}cats[]={{.}}&{{end}}"
search: "{{ .Keywords }}"

View File

@@ -28,6 +28,8 @@ search:
rows:
selector: div.moviefilm
filters:
- name: andmatch
fields:
category:

View File

@@ -7,12 +7,8 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentqq121.com/
- https://torrentqq126.com/
legacylinks:
- https://torrentqq101.com/
- https://torrentqq102.com/
- https://torrentqq103.com/
- https://torrentqq104.com/
- https://torrentqq105.com/
- https://torrentqq106.com/
- https://torrentqq107.com/
@@ -28,6 +24,10 @@ legacylinks:
- https://torrentqq118.com/
- https://torrentqq119.com/
- https://torrentqq120.com/
- https://torrentqq121.com/
- https://torrentqq122.com/
- https://torrentqq123.com/
- https://torrentqq125.com/
caps:
categorymappings:

View File

@@ -0,0 +1,140 @@
---
id: torrentseeds-api
name: TorrentSeeds (API)
description: "TorrentSeeds is a Private Torrent Tracker for MOVIES / TV / MUSIC / GENERAL"
language: en-US
type: private
encoding: UTF-8
links:
- https://torrentseeds.org/
caps:
# dont forget to update the case block in the search fields category
categorymappings:
- {id: 1, cat: PC/0day, desc: "Apps"}
- {id: 5, cat: TV/Anime, desc: "Anime"}
- {id: 2, cat: PC/Games, desc: "Games"}
- {id: 3, cat: Movies, desc: "Movies"}
- {id: 4, cat: Audio, desc: "Music"}
- {id: 6, cat: XXX, desc: "Porn"}
- {id: 7, cat: TV/Sport, desc: "Sport"}
- {id: 3205, cat: TV, desc: "TV"}
- {id: 8, cat: TV, desc: "Packs"}
- {id: 3206, cat: TV/Foreign, desc: "TV/Foreign"}
- {id: 3207, cat: Movies/Foreign, desc: "Movies/Foreign"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
settings:
- name: apikey
type: text
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://torrentseeds.org/\" target =_blank>TorrentSeeds</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
- path: "/api/torrents/filter?api_token={{ .Config.apikey }}&name={{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}&sortField={{ .Config.sort }}&sortDirection={{ .Config.type }}&perPage=100&page=1{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ else }}{{ end }}"
response:
type: json
attribute: attributes
rows:
selector: data
count:
selector: meta.total
fields:
category:
selector: category
case:
"Apps": 1
"Games": 2
"Movies": 3
"Music": 4
"Anime": 5
"Porn": 6
"Sport": 7
"Packs": 8
"TV": 3205
"TV/Foreign": 3206
"Movies/Foreign": 3207
title:
selector: name
details:
selector: details_link
download:
selector: download_link
poster:
selector: poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
- name: replace
args: ["https://via.placeholder.com/400x600", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
files:
selector: num_file
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: times_completed
date:
# 2021-10-18T00:34:50.000000Z"
selector: created_at
size:
selector: size
downloadvolumefactor:
# api returns 0=false, 1=true
selector: freeleech
case:
0: 1 # not free
1: 0 # freeleech
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
case:
0: 1 # normal
1: 2 # double
# global MR is 0.5 but torrents must be seeded for 5 days regardless of ratio
# minimumratio:
# text: 0.5
minimumseedtime:
# 5 days (as seconds = 5 x 24 x 60 x 60)
text: 432000
# json UNIT3D 5.3.0

View File

@@ -7,7 +7,7 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentsir45.com/
- https://torrentsir46.com/
legacylinks:
- https://torrentsir31.com/
- https://torrentsir33.com/
@@ -22,6 +22,7 @@ legacylinks:
- https://torrentsir42.com/
- https://torrentsir43.com/
- https://torrentsir44.com/
- https://torrentsir45.com/
caps:
categorymappings:

View File

@@ -7,10 +7,9 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentview47.com/
- https://torrentview49.com/
legacylinks:
- https://torrentview.net/
- https://torrentview26.com/
- https://torrentview27.com/
- https://torrentview28.com/
- https://torrentview29.com/
@@ -30,6 +29,7 @@ legacylinks:
- https://torrentview44.com/
- https://torrentview45.com/
- https://torrentview46.com/
- https://torrentview47.com/
caps:
categorymappings:

View File

@@ -7,7 +7,7 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentwiz35.com/
- https://torrentwiz36.com/
legacylinks:
- https://torrentwiz22.me/
- https://torrentwiz23.me/
@@ -22,6 +22,7 @@ legacylinks:
- https://torrentwiz32.com/
- https://torrentwiz33.com/
- https://torrentwiz34.com/
- https://torrentwiz35.com/
caps:
categorymappings:

View File

@@ -7,10 +7,12 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentz2.club/
- https://torrentz2eu.me/ # often rotates between *.me and *.org
- https://torrentzeu.org/
- https://torrentz2.org.in/
- https://torrentz2.unblockninja.com/
legacylinks:
- https://torrentz2.club/
- https://torrentz2eu.me/
- https://torrentzeu.org/
caps:
# unfortunately torrentz2eu does not display categories anywhere in its search results page :-(

View File

@@ -0,0 +1,173 @@
---
id: trackeros-api
name: Trackeros (API)
description: "Trackeros is a Private SPANISH Tracker for HD MOVIES / TV / GENERAL"
language: es-ES
type: private
encoding: UTF-8
links:
- https://trackeros.tk/
caps:
# dont forget to update the case block in the search fields category
categorymappings:
- {id: 1, cat: Movies, desc: "Películas"}
- {id: 2, cat: TV, desc: "Series"}
- {id: 3, cat: Audio, desc: "Musica"}
- {id: 7, cat: Audio/Video, desc: "Espectáculos"}
- {id: 8, cat: TV/Documentary, desc: "Documentales"}
- {id: 4, cat: Console, desc: "Consolas"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
book-search: [q]
settings:
- name: apikey
type: text
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://trackeros.tk/\" target =_blank>Trackeros</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
- path: "/api/torrents/filter?api_token={{ .Config.apikey }}&name={{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}&sortField={{ .Config.sort }}&sortDirection={{ .Config.type }}&perPage=100&page=1{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ else }}{{ end }}"
response:
type: json
attribute: attributes
rows:
selector: data
count:
selector: meta.total
fields:
category:
selector: category
case:
Películas: 1
Series: 2
Musica: 3
Espectáculos: 7
Documentales: 8
Consolas: 4
title:
selector: name
filters:
- name: re_replace
args: ["[\\[\\]]", " "] # remove [ and ]
- name: re_replace
args: [" +", " "] # remove duplicate spaces
- name: re_replace
args: ["(?i)microhd", "BDRip MicroHD"]
- name: re_replace
args: ["(?i)(m1080p|mhd1080p)", "1080p MicroHD"]
- name: re_replace
args: ["(?i)(m720p|mhd720p)", "720p MicroHD"]
- name: re_replace
args: ["(?i)brrip", "BDRip"]
- name: re_replace # Temporada 1 to S01
args: ["(?i)\\btemporada *(\\d{1,2})\\b", "S$1"]
- name: re_replace # T1 to S01
args: ["\\bT(\\d{1,2})\\b", "S$1"]
- name: re_replace # S1 to S01 / E1 to E01
args: ["\\b([SE])(\\d)\\b", "${1}0$2"]
- name: re_replace # S01 E01 to S01E01 / T01E01 to S01E01
args: ["\\b[ST](\\d{1,2}) *E(\\d{1,2})\\b", "S$1E$2"]
- name: re_replace # S1 a S2 to S1-2
args: ["(S\\d{1,2})( a S*| A S*| a la S*| A LA S*)(\\d{1,2})", "$1-$3"]
- name: re_replace # S01E01 E02 E03 to S01E01-02-03 (2 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # continuation (3 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # continuation (4 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # continuation (5 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # continuation (6 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # continuation (7 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # continuation (8 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # continuation (9 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # continuation (10 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # 2x6 to S02E06
args: ["\\b(\\d{1,2})x(\\d{1,2})\\b", "S$1E$2"]
- name: append
args: " MULTi/SPANiSH" # Add language for Sonarr/Radarr
details:
selector: details_link
download:
selector: download_link
poster:
selector: poster
imdbid:
selector: imdb_id
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
files:
selector: num_file
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: times_completed
date:
# 2021-10-18T00:34:50.000000Z"
selector: created_at
size:
selector: size
downloadvolumefactor:
# api returns 0=false, 1=true
selector: freeleech
case:
0: 1 # not free
1: 0 # freeleech
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
case:
0: 1 # normal
1: 2 # double
minimumratio:
text: 0.4
minimumseedtime:
# 32 hours => 32 * 60 * 60 seconds
text: 115200
# json UNIT3D 5.3.0

View File

@@ -1,236 +0,0 @@
---
id: trackeros
name: Trackeros
description: "Trackeros is a Private SPANISH Tracker for HD MOVIES / TV / GENERAL"
language: es-ES
type: private
encoding: UTF-8
links:
- https://trackeros.tk
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Películas"}
- {id: 2, cat: TV, desc: "Series"}
- {id: 3, cat: Audio, desc: "Música"}
- {id: 4, cat: Console, desc: "Juegos"}
- {id: 8, cat: TV/Documentary, desc: "Documentales"}
- {id: 7, cat: Audio/Video, desc: "Conciertos"}
- {id: 5, cat: PC, desc: "Aplicaciones"}
- {id: 6, cat: Other, desc: "Otros"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: login
method: form
form: form[action$="/login"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: on
selectorinputs:
_token:
selector: input[name="_token"]
attribute: value
error:
- selector: div#ERROR_COPY
# test:
# path: /
# selector: a[href$="/logout"]
search:
paths:
- path: torrents/filter
inputs:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
search: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
description: ""
uploader: ""
imdb: "{{ .Query.IMDBIDShort }}"
tvdb: "{{ .Query.TVDBID }}"
tmdb: "{{ .Query.TMDBID }}"
mal: ""
igdb: ""
start_year: ""
end_year: ""
sorting: "{{ .Config.sort }}"
direction: "{{ .Config.type }}"
qty: 100
page: 0
view: list
freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/(\\d+)"
title:
selector: a.view-torrent
filters:
- name: re_replace
args: ["[\\[\\]]", " "] # remove [ and ]
- name: re_replace
args: [" +", " "] # remove duplicate spaces
- name: re_replace
args: ["(?i)microhd", "BDRip MicroHD"]
- name: re_replace
args: ["(?i)(m1080p|mhd1080p)", "1080p MicroHD"]
- name: re_replace
args: ["(?i)(m720p|mhd720p)", "720p MicroHD"]
- name: re_replace
args: ["(?i)brrip", "BDRip"]
- name: re_replace # Temporada 1 to S01
args: ["(?i)\\btemporada *(\\d{1,2})\\b", "S$1"]
- name: re_replace # T1 to S01
args: ["\\bT(\\d{1,2})\\b", "S$1"]
- name: re_replace # S1 to S01 / E1 to E01
args: ["\\b([SE])(\\d)\\b", "${1}0$2"]
- name: re_replace # S01 E01 to S01E01 / T01E01 to S01E01
args: ["\\b[ST](\\d{1,2}) *E(\\d{1,2})\\b", "S$1E$2"]
- name: re_replace # S1 a S2 to S1-2
args: ["(S\\d{1,2})( a S*| A S*| a la S*| A LA S*)(\\d{1,2})", "$1-$3"]
- name: re_replace # S01E01 E02 E03 to S01E01-02-03 (2 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # continuation (3 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # continuation (4 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # continuation (5 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # continuation (6 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # continuation (7 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # continuation (8 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # continuation (9 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # continuation (10 episodes)
args: ["([E-]\\d{1,2})( E| a E*| A E*| al E*| AL E*)(\\d{1,2})", "$1-$3"]
- name: re_replace # 2x6 to S02E06
args: ["\\b(\\d{1,2})x(\\d{1,2})\\b", "S$1E$2"]
- name: append
args: " MULTi/SPANiSH" # Add language for Sonarr/Radarr
download:
selector: a[href*="/download/"]
attribute: href
details:
selector: a.view-torrent
attribute: href
poster:
selector: div.torrent-poster img
attribute: src
filters:
- name: replace
args: ["&w=52&h=80", "&w=180&h=270"] # for display on dashboard
- name: replace
args: ["https://images.weserv.nl/?url=https://via.placeholder.com/52x80&w=180&h=270", ""]
size:
selector: td:nth-last-child(4)
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
grabs:
selector: td:nth-last-child(1)
date:
selector: time
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
- name: re_replace
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前|sedan)", " ago"]
- name: re_replace
args: ["(?i)(saniye|sekundit|sekunder|secondi|sekund|segundos|sekundami|секунд|secunde|secondes|Sekunden|секунди|seconden|秒前)", "seconds"]
- name: re_replace
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten|minuter)", "minutes"]
- name: re_replace
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟|分)", " minute"]
- name: re_replace
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden|timmar)", "hours"]
- name: re_replace
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間|timme)", " hour"]
- name: re_replace
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen|dagar)", "days"]
- 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)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken|veckor)", "weeks"]
- name: re_replace
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間|vecka)", " week"]
- name: re_replace
args: ["(?i) (ay)", "month"]
- name: re_replace
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden|månader)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月|månad)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
- name: re_replace
args: ["(?i)(För |und)", ""] # Misc removals
- name: timeago
downloadvolumefactor:
case:
i[class*="fa-id-badge text-orange"]: 0 # 24 Hour FreeLeech From BON Store
i[class*="fa-trophy text-purple"]: 0 # Special FreeLeech For Certain User Groups
i[class*="fa-star text-bold"]: 0 # Freeleech From Token
i[class*="fa-coins text-bold"]: 0 # Freeleech From Token
i[class*="fa-globe text-blue"]: 0 # Global Freeleech
i[class*="fa-star text-gold"]: 0 # Freeleech
i[class*="fa-certificate text-pink"]: 0 # Featured Torrent
"*": 1
uploadvolumefactor:
case:
i[class*="fa-gem text-green"]: 2 # Single Torrent Double Upload
i[class*="fa-globe text-green"]: 2 # Global Double Upload
i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
"*": 1
minimumratio:
text: 0.4
minimumseedtime:
# 32 hours => 32 * 60 * 60 seconds
text: 115200
# UNIT3D 4.x.x

View File

@@ -0,0 +1,236 @@
---
id: tvroad
name: TvRoad
description: "TvRoad is a FRENCH Private Torrent Tracker for TV"
language: fr-FR
type: private
encoding: UTF-8
links:
- https://tvroad.info/
caps:
categorymappings:
- {id: anime-fr-720-non-non, cat: TV/Anime, desc: "Anime FR 720p"}
- {id: anime-fr-720-non-pack, cat: TV/Anime, desc: "Anime FR 720p Pack"}
- {id: anime-fr-720-web-non, cat: TV/Anime, desc: "Anime FR 720p"}
- {id: anime-fr-720-web-pack, cat: TV/Anime, desc: "Anime FR 720p Pack"}
- {id: anime-fr-1080-non-non, cat: TV/Anime, desc: "Anime FR 1080p"}
- {id: anime-fr-1080-non-pack, cat: TV/Anime, desc: "Anime FR 1080p Pack"}
- {id: anime-fr-1080-web-non, cat: TV/Anime, desc: "Anime FR 1080p WEB-DL"}
- {id: anime-fr-1080-web-pack, cat: TV/Anime, desc: "Anime FR 1080p Pack WEB-DL"}
- {id: anime-fr-sd-non-non, cat: TV/Anime, desc: "Anime FR SD"}
- {id: anime-fr-sd-non-pack, cat: TV/Anime, desc: "Anime FR SD Pack"}
- {id: anime-fr-sd-web-non, cat: TV/Anime, desc: "Anime FR SD WEB-DL"}
- {id: anime-fr-sd-web-pack, cat: TV/Anime, desc: "Anime FR SD Pack WEB-DL"}
- {id: anime-vostf-720-non-non, cat: TV/Anime, desc: "Anime VOSTFR 720p"}
- {id: anime-vostf-720-non-pack, cat: TV/Anime, desc: "Anime VOSTFR 720p Pack"}
- {id: anime-vostf-720-web-non, cat: TV/Anime, desc: "Anime VOSTFR 720p WEB-DL"}
- {id: anime-vostf-720-web-pack, cat: TV/Anime, desc: "Anime VOSTFR 720p Pack WEB-DL"}
- {id: anime-vostf-1080-non-non, cat: TV/Anime, desc: "Anime VOSTFR 1080p"}
- {id: anime-vostf-1080-non-pack, cat: TV/Anime, desc: "Anime VOSTFR 1080p Pack"}
- {id: anime-vostf-1080-web-non, cat: TV/Anime, desc: "Anime VOSTFR 1080p WEB-DL"}
- {id: anime-vostf-1080-web-pack, cat: TV/Anime, desc: "Anime VOSTFR 1080p Pack WEB-DL"}
- {id: anime-vostf-sd-non-non, cat: TV/Anime, desc: "Anime VOSTFR SD"}
- {id: anime-vostf-sd-non-pack, cat: TV/Anime, desc: "Anime VOSTFR SD Pack"}
- {id: anime-vostf-sd-web-non, cat: TV/Anime, desc: "Anime VOSTFR SD WEB-DL"}
- {id: anime-vostf-sd-web-pack, cat: TV/Anime, desc: "Anime VOSTFR SD Pack WEB-DL"}
- {id: anime-fr-2160-non-non, cat: TV/Anime, desc: "Anime FR 2160p"}
- {id: anime-fr-2160-non-pack, cat: TV/Anime, desc: "Anime FR 2160p Pack"}
- {id: anime-fr-2160-web-non, cat: TV/Anime, desc: "Anime FR 2160p WEB-DL"}
- {id: anime-fr-2160-web-pack, cat: TV/Anime, desc: "Anime FR 2160p Pack WEB-DL"}
- {id: anime-vostf-2160-non-non, cat: TV/Anime, desc: "Anime VOSTFR 2160p"}
- {id: anime-vostf-2160-non-pack, cat: TV/Anime, desc: "Anime VOSTFR 2160p Pack"}
- {id: anime-vostf-2160-web-non, cat: TV/Anime, desc: "Anime VOSTFR 2160p WEB-DL"}
- {id: anime-vostf-2160-web-pack, cat: TV/Anime, desc: "Anime VOSTFR 2160p Pack WEB-DL"}
- {id: docs-fr-720-non-non, cat: TV/Documentary, desc: "Docs FR 720p"}
- {id: docs-fr-720-non-pack, cat: TV/Documentary, desc: "Docs FR 720p Pack"}
- {id: docs-fr-720-web-non, cat: TV/Documentary, desc: "Docs FR 720p WEB-DL"}
- {id: docs-fr-720-web-pack, cat: TV/Documentary, desc: "Docs FR 720p Pack WEB-DL"}
- {id: docs-fr-1080-non-non, cat: TV/Documentary, desc: "Docs FR 1080p"}
- {id: docs-fr-1080-non-pack, cat: TV/Documentary, desc: "Docs FR 1080p Pack"}
- {id: docs-fr-1080-web-non, cat: TV/Documentary, desc: "Docs FR 1080p WEB-DL"}
- {id: docs-fr-1080-web-pack, cat: TV/Documentary, desc: "Docs FR 1080p Pack WEB-DL"}
- {id: docs-fr-sd-non-non, cat: TV/Documentary, desc: "Docs FR SD"}
- {id: docs-fr-sd-non-pack, cat: TV/Documentary, desc: "Docs FR SD Pack"}
- {id: docs-fr-sd-web-non, cat: TV/Documentary, desc: "Docs FR SD WEB-DL"}
- {id: docs-fr-sd-web-pack, cat: TV/Documentary, desc: "Docs FR SD Pack WEB-DL"}
- {id: docs-vostf-720-non-non, cat: TV/Documentary, desc: "Docs VOSTFR 720p"}
- {id: docs-vostf-720-non-pack, cat: TV/Documentary, desc: "Docs VOSTFR 720p Pack"}
- {id: docs-vostf-720-web-non, cat: TV/Documentary, desc: "Docs VOSTFR 720p WEB-DL"}
- {id: docs-vostf-720-web-pack, cat: TV/Documentary, desc: "Docs VOSTFR 720p Pack WEB-DL"}
- {id: docs-vostf-1080-non-non, cat: TV/Documentary, desc: "Docs VOSTFR 1080p"}
- {id: docs-vostf-1080-non-pack, cat: TV/Documentary, desc: "Docs VOSTFR 1080p Pack"}
- {id: docs-vostf-1080-web-non, cat: TV/Documentary, desc: "Docs VOSTFR 1080p WEB-DL"}
- {id: docs-vostf-1080-web-pack, cat: TV/Documentary, desc: "Docs VOSTFR 1080p Pack WEB-DL"}
- {id: docs-vostf-sd-non-non, cat: TV/Documentary, desc: "Docs VOSTFR SD"}
- {id: docs-vostf-sd-non-pack, cat: TV/Documentary, desc: "Docs VOSTFR SD Pack"}
- {id: docs-vostf-sd-web-non, cat: TV/Documentary, desc: "Docs VOSTFR SD WEB-DL"}
- {id: docs-vostf-sd-web-pack, cat: TV/Documentary, desc: "Docs VOSTFR SD Pack WEB-DL"}
- {id: docs-vostf-2160-non-non, cat: TV/Documentary, desc: "Docs VOSTFR 2160p"}
- {id: docs-vostf-2160-non-pack, cat: TV/Documentary, desc: "Docs VOSTFR 2160p Pack"}
- {id: docs-vostf-2160-web-non, cat: TV/Documentary, desc: "Docs VOSTFR 2160p WEB-DL"}
- {id: docs-vostf-2160-web-pack, cat: TV/Documentary, desc: "Docs VOSTFR 2160p Pack WEB-DL"}
- {id: docs-fr-2160-non-non, cat: TV/Documentary, desc: "Docs FR 2160p"}
- {id: docs-fr-2160-non-pack, cat: TV/Documentary, desc: "Docs FR 2160p Pack"}
- {id: docs-fr-2160-web-non, cat: TV/Documentary, desc: "Docs FR 2160p WEB-DL"}
- {id: docs-fr-2160-web-pack, cat: TV/Documentary, desc: "Docs FR 2160p Pack WEB-DL"}
- {id: serie-fr-720-non-non, cat: TV/HD, desc: "Serie FR 720p"}
- {id: serie-fr-720-non-pack, cat: TV/HD, desc: "Serie FR 720p Pack"}
- {id: serie-fr-720-web-non, cat: TV/HD, desc: "Serie FR 720p WEB-DL"}
- {id: serie-fr-720-web-pack, cat: TV/HD, desc: "Serie FR 720p Pack WEB-DL"}
- {id: serie-fr-1080-non-non, cat: TV/HD, desc: "Serie FR 1080p"}
- {id: serie-fr-1080-non-pack, cat: TV/HD, desc: "Serie FR 1080p Pack"}
- {id: serie-fr-1080-web-non, cat: TV/HD, desc: "Serie FR 1080p WEB-DL"}
- {id: serie-fr-1080-web-pack, cat: TV/HD, desc: "Serie FR 1080p Pack WEB-DL"}
- {id: serie-fr-sd-non-non, cat: TV/SD, desc: "Serie FR SD"}
- {id: serie-fr-sd-non-pack, cat: TV/SD, desc: "Serie FR SD Pack"}
- {id: serie-fr-sd-web-non, cat: TV/SD, desc: "Serie FR SD WEB-DL"}
- {id: serie-fr-sd-web-pack, cat: TV/SD, desc: "Serie FR SD Pack WEB-DL"}
- {id: serie-vostf-720-non-non, cat: TV/HD, desc: "Serie VOSTFR 720p"}
- {id: serie-vostf-720-non-pack, cat: TV/HD, desc: "Serie VOSTFR 720p Pack"}
- {id: serie-vostf-720-web-non, cat: TV/HD, desc: "Serie VOSTFR 720p WEB-DL"}
- {id: serie-vostf-720-web-pack, cat: TV/HD, desc: "Serie VOSTFR 720p Pack WEB-DL"}
- {id: serie-vostf-1080-non-non, cat: TV/HD, desc: "Serie VOSTFR 1080p"}
- {id: serie-vostf-1080-non-pack, cat: TV/HD, desc: "Serie VOSTFR 1080p Pack"}
- {id: serie-vostf-1080-web-non, cat: TV/HD, desc: "Serie VOSTFR 1080p WEB-DL"}
- {id: serie-vostf-1080-web-pack, cat: TV/HD, desc: "Serie VOSTFR 1080p Pack WEB-DL"}
- {id: serie-vostf-sd-non-non, cat: TV/SD, desc: "Serie VOSTFR SD"}
- {id: serie-vostf-sd-non-pack, cat: TV/SD, desc: "Serie VOSTFR SD Pack"}
- {id: serie-vostf-sd-web-non, cat: TV/SD, desc: "Serie VOSTFR SD WEB-DL"}
- {id: serie-vostf-sd-web-pack, cat: TV/SD, desc: "Serie VOSTFR SD Pack WEB-DL"}
- {id: serie-fr-2160-non-non, cat: TV/UHD, desc: "Serie FR 2160p"}
- {id: serie-fr-2160-non-pack, cat: TV/UHD, desc: "Serie FR 2160p Pack"}
- {id: serie-fr-2160-web-non, cat: TV/UHD, desc: "Serie FR 2160p WEB-DL"}
- {id: serie-fr-2160-web-pack, cat: TV/UHD, desc: "Serie FR 2160p Pack WEB-DL"}
- {id: serie-vostf-2160-non-non, cat: TV/UHD, desc: "Serie VOSTFR 2160p"}
- {id: serie-vostf-2160-non-pack, cat: TV/UHD, desc: "Serie VOSTFR 2160p Pack"}
- {id: serie-vostf-2160-web-non, cat: TV/UHD, desc: "Serie VOSTFR 2160p WEB-DL"}
- {id: serie-vostf-2160-web-pack, cat: TV/UHD, desc: "Serie VOSTFR 2160p Pack WEB-DL"}
- {id: tvreal-fr-720-non-non, cat: TV/HD, desc: "TvReal FR 720p"}
- {id: tvreal-fr-720-non-pack, cat: TV/HD, desc: "TvReal FR 720p Pack"}
- {id: tvreal-fr-720-web-non, cat: TV/HD, desc: "TvReal FR 720p WEB-DL"}
- {id: tvreal-fr-720-web-pack, cat: TV/HD, desc: "TvReal FR 720p Pack WEB-DL"}
- {id: tvreal-fr-1080-non-non, cat: TV/HD, desc: "TvReal FR 1080p"}
- {id: tvreal-fr-1080-non-pack, cat: TV/HD, desc: "TvReal FR 1080p"}
- {id: tvreal-fr-1080-web-non, cat: TV/HD, desc: "TvReal FR 1080p WEB-DL"}
- {id: tvreal-fr-1080-web-pack, cat: TV/HD, desc: "TvReal FR 1080p WEB-DL"}
- {id: tvreal-fr-sd-non-non, cat: TV/SD, desc: "TvReal FR SD"}
- {id: tvreal-fr-sd-non-pack, cat: TV/SD, desc: "TvReal FR SD Pack"}
- {id: tvreal-fr-sd-web-non, cat: TV/SD, desc: "TvReal FR SD WEB-DL"}
- {id: tvreal-fr-sd-web-pack, cat: TV/SD, desc: "TvReal FR SD Pack WEB-DL"}
- {id: tvreal-fr-2160-web-pack, cat: TV/UHD, desc: "TvReal FR 2160p Pack WEB-DL"}
modes:
search: [q]
tv-search: [q, season, ep]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: multilang
type: checkbox
label: Replace MULTI by another language in release name
default: false
- name: multilanguage
type: select
label: Replace MULTI by this language
default: FRENCH
options:
FRENCH: FRENCH
MULTI.FRENCH: MULTI.FRENCH
ENGLISH: ENGLISH
MULTI.ENGLISH: MULTI.ENGLISH
VOSTFR: VOSTFR
MULTI.VOSTFR: MULTI.VOSTFR
- name: vostfr
type: checkbox
label: Replace VOSTFR with ENGLISH
default: false
login:
path: TvRoad/Connexion
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: font[color="red"]
test:
path: TvRoad/Bienvenue
selector: a[href$="/TvRoad/Deconnexion"]
search:
paths:
# https://tvroad.info/TvRoad/Torrents/Recherche?recherche=
- path: TvRoad/Torrents/Recherche
inputs:
recherche: "{{ .Keywords }}"
# type of search: un one of the words), tout (all of the words), exacte (exact match)
type: tout
# search location: nomtorrent (name), desctorrent (descr)
endroit: nomtorrent
# seeded: non (no), oui (yes), peuimporte (either)
tl: peuimporte
# does not support imdbid searches and does not return imdb link in results
rows:
selector: tr:has(a[href*="/Torrents/Telechargement/"])
fields:
category:
selector: a[href*="/SousCategories/"]
attribute: href
filters:
- name: split
args: ["/", -1]
title_phase1:
selector: a.infobulletorrent
attribute: title
title_multilang:
text: "{{ .Result.title_phase1 }}"
filters:
- name: re_replace
args: ["(?i)(\\smulti\\s)", " {{ .Config.multilanguage }} "]
title_phase2:
text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase1 }}{{ end }}"
title_vostfr:
text: "{{ .Result.title_phase2 }}"
filters:
- name: re_replace
args: ["(?i)(\\svostfr\\s)", " ENGLISH "]
- name: re_replace
args: ["(?i)(\\ssubfrench\\s)", " ENGLISH "]
title:
text: "{{ if .Config.vostfr }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_phase2 }}{{ end }}"
details:
selector: a.infobulletorrent
attribute: href
download:
selector: a[href*="/Torrents/Telechargement/"]
attribute: href
poster:
selector: a.infobulletorrent img
attribute: src
date:
text: now
size:
selector: td.taillejour
grabs:
selector: td:nth-last-child(3)
seeders:
selector: b.seed
leechers:
selector: b.leech
downloadvolumefactor:
case:
text: 1
uploadvolumefactor:
text: 1
minimumseedtime:
# 4 days (as seconds = 4 x 24 x 60 x 60)
text: 345600
# TT3.0 FRENCH custom

View File

@@ -123,8 +123,14 @@ search:
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
keywordsfilters:
- name: re_replace
args: ["(\\w+)", " +$1"] # prepend + to each word
rows:
selector: table.table-bordered tr:has(a[href^="download.php?torrent="])
filters:
- name: andmatch
fields:
category:

View File

@@ -12,6 +12,7 @@ caps:
categorymappings:
- {id: 39, cat: Books/EBook, desc: "E-book"}
- {id: 53, cat: XXX, desc: "Film (XXX)"}
- {id: 74, cat: TV/Anime, desc: "Film (Animáció cam)"}
- {id: 72, cat: TV/Anime, desc: "Film (Animáció)"}
- {id: 44, cat: Movies/SD, desc: "Film (Cam Hun)"}
- {id: 40, cat: Movies/DVD, desc: "Film (DVD Eng)"}

View File

@@ -9,7 +9,7 @@ requestDelay: 2.5 # 2.5 requests per second (2 causes problems)
links:
# dont forget to update the details, download and poster replace args
- https://yts.mx/
- https://yts.unblockit.tv/
- https://yts.unblockit.how/
- https://yts.unblockninja.com/
- https://yts.nocensor.biz/
legacylinks:
@@ -31,6 +31,7 @@ legacylinks:
- https://yts.nocensor.work/
- https://yts.unblockit.kim/
- https://yts.unblockit.bz/
- https://yts.unblockit.tv/
caps:
categorymappings:

View File

@@ -81,6 +81,8 @@ search:
rows:
selector: "table[style=\"border: solid #000000 1px;\"] > tbody > tr:has(a[href^=\"takedownload.php?id=\"])"
filters:
- name: andmatch
fields:
category:

View File

@@ -9,23 +9,9 @@ followredirect: true
links:
- https://zooqle.com/
- https://zooqle.unblockninja.com/
- https://zooqle.unblockit.tv/
- https://zooqle.unblockit.how/
- https://zooqle.nocensor.biz/
legacylinks:
- https://zooqle.unblockit.pro/
- https://zooqle.unblockit.one/
- https://zooqle.black-mirror.xyz/
- https://zooqle.unblocked.casa/
- https://zooqle.proxyportal.fun/
- https://zooqle.uk-unblock.xyz/
- https://zooqle.ind-unblock.xyz/
- https://zooqle.unblockit.me/
- https://zooqle.unblockit.pw/
- https://zooqle.unblockit.id/
- https://zooqle.unblockit.win/
- https://zooqle.unblocked.bar/
- https://zooqle.proxyportal.pw/
- https://zooqle.uk-unblock.pro/
- https://zooqle.unblockit.top/
- https://zooqle.unblockit.lat/
- https://zooqle.unblockit.app/
@@ -45,6 +31,7 @@ legacylinks:
- https://zooqle.nocensor.work/
- https://zooqle.unblockit.kim/
- https://zooqle.unblockit.bz/
- https://zooqle.unblockit.tv/
caps:
categorymappings:

View File

@@ -22,7 +22,6 @@ namespace Jackett.Common.Indexers
[ExcludeFromCodeCoverage]
public class BJShare : BaseWebIndexer
{
private string LoginUrl => SiteLink + "login.php";
private string BrowseUrl => SiteLink + "torrents.php";
private string TodayUrl => SiteLink + "torrents.php?action=today";
private static readonly Regex _EpisodeRegex = new Regex(@"(?:[SsEe]\d{2,4}){1,2}");
@@ -32,7 +31,7 @@ namespace Jackett.Common.Indexers
"https://bj-share.me/"
};
private ConfigurationDataBasicLoginWithRSSAndDisplay ConfigData => (ConfigurationDataBasicLoginWithRSSAndDisplay)configData;
private new ConfigurationDataCookie configData => (ConfigurationDataCookie)base.configData;
@@ -90,53 +89,55 @@ namespace Jackett.Common.Indexers
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay())
configData: new ConfigurationDataCookie())
{
Encoding = Encoding.UTF8;
Language = "pt-BR";
Type = "private";
AddCategoryMapping(14, TorznabCatType.TVAnime, "Anime");
AddCategoryMapping(3, TorznabCatType.PC0day, "Aplicativos");
AddCategoryMapping(8, TorznabCatType.Other, "Apostilas/Tutoriais");
AddCategoryMapping(19, TorznabCatType.AudioAudiobook, "Audiobook");
AddCategoryMapping(16, TorznabCatType.TVOther, "Desenho Animado");
AddCategoryMapping(18, TorznabCatType.TVDocumentary, "Documentários");
AddCategoryMapping(10, TorznabCatType.Books, "E-Books");
AddCategoryMapping(20, TorznabCatType.TVSport, "Esportes");
AddCategoryMapping(1, TorznabCatType.Movies, "Filmes");
AddCategoryMapping(12, TorznabCatType.MoviesOther, "Histórias em Quadrinhos");
AddCategoryMapping(5, TorznabCatType.Audio, "Músicas");
AddCategoryMapping(7, TorznabCatType.Other, "Outros");
AddCategoryMapping(9, TorznabCatType.BooksMags, "Revistas");
AddCategoryMapping(2, TorznabCatType.TV, "Seriados");
AddCategoryMapping(17, TorznabCatType.TV, "Shows");
AddCategoryMapping(13, TorznabCatType.TV, "Stand Up Comedy");
AddCategoryMapping(11, TorznabCatType.Other, "Video-Aula");
AddCategoryMapping(6, TorznabCatType.TV, "Vídeos de TV");
AddCategoryMapping(3, TorznabCatType.PC, "Aplicativos");
AddCategoryMapping(4, TorznabCatType.PCGames, "Jogos");
AddCategoryMapping(199, TorznabCatType.XXX, "Filmes Adultos");
AddCategoryMapping(200, TorznabCatType.XXX, "Jogos Adultos");
AddCategoryMapping(201, TorznabCatType.XXXImageSet, "Fotos Adultas");
AddCategoryMapping(5, TorznabCatType.BooksComics, "Mangás");
AddCategoryMapping(6, TorznabCatType.TV, "Vídeos de TV");
AddCategoryMapping(7, TorznabCatType.Other, "Outros");
AddCategoryMapping(8, TorznabCatType.TVSport, "Esportes");
AddCategoryMapping(9, TorznabCatType.BooksMags, "Revistas");
AddCategoryMapping(10, TorznabCatType.BooksEBook, "E-Books");
AddCategoryMapping(11, TorznabCatType.AudioAudiobook, "Audiobook");
AddCategoryMapping(12, TorznabCatType.BooksComics, "HQs");
AddCategoryMapping(13, TorznabCatType.TVOther, "Stand Up Comedy");
AddCategoryMapping(14, TorznabCatType.TVAnime, "Animes");
AddCategoryMapping(15, TorznabCatType.XXXImageSet, "Fotos Adultas");
AddCategoryMapping(16, TorznabCatType.TVOther, "Desenhos Animado");
AddCategoryMapping(17, TorznabCatType.TVDocumentary, "Documentários");
AddCategoryMapping(18, TorznabCatType.Other, "Cursos");
AddCategoryMapping(19, TorznabCatType.XXX, "Filmes Adultos");
AddCategoryMapping(20, TorznabCatType.XXXOther, "Jogos Adultos");
AddCategoryMapping(21, TorznabCatType.XXXOther, "Mangás Adultos");
AddCategoryMapping(22, TorznabCatType.XXXOther, "Animes Adultos");
AddCategoryMapping(23, TorznabCatType.XXXOther, "HQs Adultos");
}
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
{
LoadValuesFromJson(configJson);
var pairs = new Dictionary<string, string>
CookieHeader = configData.Cookie.Value;
try
{
{"username", ConfigData.Username.Value},
{"password", ConfigData.Password.Value},
{"keeplogged", "1"}
};
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl, true);
await ConfigureIfOK(
result.Cookies, result.ContentString?.Contains("logout.php") == true, () =>
{
var errorMessage = result.ContentString;
throw new ExceptionWithConfigData(errorMessage, ConfigData);
});
return IndexerConfigurationStatus.RequiresTesting;
var results = await PerformQuery(new TorznabQuery());
if (!results.Any())
throw new Exception("Found 0 results in the tracker");
IsConfigured = true;
SaveConfig();
return IndexerConfigurationStatus.Completed;
}
catch (Exception e)
{
IsConfigured = false;
throw new Exception("Your cookie did not work: " + e.Message);
}
}
private static string InternationalTitle(string title)
@@ -222,17 +223,14 @@ namespace Jackett.Common.Indexers
// until they or the source from where they get that info fix it...
if (IsAbsoluteNumbering(title))
{
title = Regex.Replace(title, @"(Ep[\.]?[ ]?)|([S]\d\d[Ee])", "");
title = Regex.Replace(title, @"(Ep[\.]?[ ]?)|([S]\d\d[Ee])", "E");
return title;
}
return title;
}
private bool IsSessionIsClosed(WebResult result)
{
return result.IsRedirect && result.RedirectingTo.Contains("login.php");
}
private bool IsSessionIsClosed(WebResult result) => result.IsRedirect && result.RedirectingTo.Contains("login.php");
private string FixSearchTerm(TorznabQuery query)
{
@@ -265,14 +263,16 @@ namespace Jackett.Common.Indexers
{"searchsubmit", "1"}
};
foreach (var cat in MapTorznabCapsToTrackers(query))
{
queryCollection.Add("filter_cat[" + cat + "]", "1");
}
searchUrl += "?" + queryCollection.GetQueryString();
var results = await RequestWithCookiesAsync(searchUrl);
if (IsSessionIsClosed(results))
{
// re-login
await ApplyConfiguration(null);
results = await RequestWithCookiesAsync(searchUrl);
throw new Exception("The user is not logged in. It is possible that the cookie has expired or you " +
"made a mistake when copying it. Please check the settings.");
}
try
@@ -436,9 +436,8 @@ namespace Jackett.Common.Indexers
var results = await RequestWithCookiesAsync(TodayUrl);
if (IsSessionIsClosed(results))
{
// re-login
await ApplyConfiguration(null);
results = await RequestWithCookiesAsync(TodayUrl);
throw new Exception("The user is not logged in. It is possible that the cookie has expired or you " +
"made a mistake when copying it. Please check the settings.");
}
try

View File

@@ -176,20 +176,20 @@ namespace Jackett.Common.Indexers
var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString);
var rows = dom.QuerySelectorAll("div.postItem");
var rows = dom.QuerySelectorAll("article");
foreach (var row in rows)
{
var qImg = row.QuerySelector("img");
if (qImg == null)
continue; // skip results without image
var title = qImg.GetAttribute("title");
var title = qImg.GetAttribute("alt");
if (!CheckTitleMatchWords(query.GetQueryString(), title))
continue; // skip if it doesn't contain all words
title += _language.Equals("castellano") ? " MULTi/SPANiSH" : " MULTi/LATiN SPANiSH";
title += " 1080p BDRip x264";
var poster = new Uri(GetAbsoluteUrl(qImg.GetAttribute("data-src")));
var link = new Uri(row.QuerySelector("a.postItem__back-link").GetAttribute("href"));
var poster = new Uri(GetAbsoluteUrl(qImg.GetAttribute("src")));
var link = new Uri(row.QuerySelector("a").GetAttribute("href"));
var release = new ReleaseInfo
{

View File

@@ -23,12 +23,21 @@ namespace Jackett.Common.Indexers
private new ConfigurationDataAPIKey configData => (ConfigurationDataAPIKey)base.configData;
public override string[] AlternativeSiteLinks { get; protected set; } = {
"https://danishbytes.club/",
"https://danishbytes2.org/"
};
public override string[] LegacySiteLinks { get; protected set; } = {
"https://danishbytes.org/"
};
public DanishBytes(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "danishbytes",
name: "DanishBytes",
description: "DanishBytes is a Private Danish Tracker",
link: "https://danishbytes.org/",
link: "https://danishbytes.club/",
caps: new TorznabCapabilities
{
LimitsDefault = 25,

View File

@@ -45,7 +45,7 @@ namespace Jackett.Common.Indexers
public override string[] AlternativeSiteLinks { get; protected set; } = {
"https://www.epublibre.org/",
"https://epublibre.unblockit.tv/"
"https://epublibre.unblockit.how/"
};
public override string[] LegacySiteLinks { get; protected set; } = {
@@ -63,7 +63,8 @@ namespace Jackett.Common.Indexers
"https://epublibre.unblockit.ws/",
"https://epublibre.unblockit.li/",
"https://epublibre.unblockit.kim/",
"https://epublibre.unblockit.bz/"
"https://epublibre.unblockit.bz/",
"https://epublibre.unblockit.tv/"
};
public EpubLibre(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,

View File

@@ -38,7 +38,7 @@ namespace Jackett.Common.Indexers
public override string[] AlternativeSiteLinks { get; protected set; } = {
"https://www.mejortorrentes.net/",
"https://mejortorrent.nocensor.biz/",
"https://mejortorrent.unblockit.tv/"
"https://mejortorrent.unblockit.how/"
};
public override string[] LegacySiteLinks { get; protected set; } = {
@@ -58,7 +58,8 @@ namespace Jackett.Common.Indexers
"https://mejortorrent.nocensor.space/",
"https://www.mejortorrentes.com/",
"https://www.mejortorrento.info/",
"https://mejortorrent.nocensor.work/"
"https://mejortorrent.nocensor.work/",
"https://mejortorrent.unblockit.tv/"
};
public MejorTorrent(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,

View File

@@ -99,14 +99,11 @@ namespace Jackett.Common.Indexers
private readonly string[] _voUrls = { "serie-vo", "serievo" };
public override string[] AlternativeSiteLinks { get; protected set; } = {
"https://atomixhq.one/",
"https://pctmix1.unblockit.tv/"
"https://atomixhq.top/",
"https://pctmix1.unblockit.how/"
};
public override string[] LegacySiteLinks { get; protected set; } = {
"http://descargas2020.com/",
"http://www.tvsinpagar.com/",
"http://torrentlocura.com/",
"https://pctnew.site",
"https://descargas2020.site",
"http://torrentrapid.com/",
@@ -115,7 +112,6 @@ namespace Jackett.Common.Indexers
"https://descargas2020.org/",
"https://pctnew.org/",
"https://pctreload.com/",
"https://pctmix1.unblockit.uno/",
"https://pctmix1.unblockit.ch/",
"https://pctmix1.unblockit.ws/",
"https://pctmix1.unblockit.li/",
@@ -125,7 +121,10 @@ namespace Jackett.Common.Indexers
"https://maxitorrent.com",
"https://pctmix1.unblockit.kim/",
"https://atomixhq.com/",
"https://pctmix1.unblockit.bz/"
"https://pctmix1.unblockit.bz/",
"https://atomixhq.one/",
"https://pctmix1.unblockit.tv/",
"https://atomixhq.net/"
};
public NewPCT(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps,
@@ -133,7 +132,7 @@ namespace Jackett.Common.Indexers
: base(id: "newpct",
name: "NewPCT",
description: "NewPCT - Descargar peliculas, series y estrenos torrent gratis",
link: "https://atomixhq.one/",
link: "https://atomixhq.top/",
caps: new TorznabCapabilities
{
TvSearchParams = new List<TvSearchParam>

View File

@@ -102,6 +102,7 @@ namespace Jackett.Common.Indexers
AddCategoryMapping(1836, TorznabCatType.XXX, "Сайтрипы 2019 (HD Video) / SiteRip's 2019 (HD Video)");
AddCategoryMapping(1842, TorznabCatType.XXX, "Сайтрипы 2020 (HD Video) / SiteRip's 2020 (HD Video)");
AddCategoryMapping(1846, TorznabCatType.XXX, "Сайтрипы 2021 (HD Video) / SiteRip's 2021 (HD Video)");
AddCategoryMapping(1857, TorznabCatType.XXX, "Сайтрипы 2022 (HD Video) / SiteRip's 2022 (HD Video)");
AddCategoryMapping(1451, TorznabCatType.XXX, "Сайтрипы 1991-2010 / SiteRip's 1991-2010");
AddCategoryMapping(1788, TorznabCatType.XXX, "Сайтрипы 2011-2012 / SiteRip's 2011-2012");
AddCategoryMapping(1789, TorznabCatType.XXX, "Сайтрипы 2013 / SiteRip's 2013");
@@ -113,6 +114,7 @@ namespace Jackett.Common.Indexers
AddCategoryMapping(1837, TorznabCatType.XXX, "Сайтрипы 2019 / SiteRip's 2019");
AddCategoryMapping(1843, TorznabCatType.XXX, "Сайтрипы 2020 / SiteRip's 2020");
AddCategoryMapping(1847, TorznabCatType.XXX, "Сайтрипы 2021 / SiteRip's 2021");
AddCategoryMapping(1856, TorznabCatType.XXX, "Сайтрипы 2022 / SiteRip's 2022");
AddCategoryMapping(1707, TorznabCatType.XXX, "Сцены из фильмов / Movie Scenes (кроме SiteRip)");
AddCategoryMapping(284, TorznabCatType.XXX, "Порноролики Разное / Clips (various)");
AddCategoryMapping(1853, TorznabCatType.XXX, "Компиляции и Музыкальные порно клипы / Compilations & Porn Music Video (PMV)");

View File

@@ -58,7 +58,7 @@ namespace Jackett.Common.Indexers
Language = "en-US";
Type = "private";
webclient.AddTrustedCertificate(new Uri(SiteLink).Host, "D948487DD52462F2D1E62B990D608051E3DE5AA6");
webclient.AddTrustedCertificate(new Uri(SiteLink).Host, "C360EEF4D9B288112E038E4BF3AD0064FDA478F1");
AddCategoryMapping(2, TorznabCatType.MoviesUHD, "Movie/2160");
AddCategoryMapping(1, TorznabCatType.MoviesHD, "Movie/1080");

View File

@@ -52,6 +52,17 @@ namespace Jackett.Common.Indexers
var results = await base.PerformQuery(query);
// results must contain search terms
results = results.Where(release => query.MatchQueryStringAND(release.Title));
foreach (var release in results)
{
// SecretCinema loads artist with the movie director and the gazelleTracker abstract
// places it in front of the movie separated with a dash.
// We need to strip it or Radarr will not get a title match for automatic DL
var artistEndsAt = release.Title.IndexOf(" - ");
if (artistEndsAt > -1)
{
release.Title = release.Title.Substring(artistEndsAt + 3);
}
}
return results;
}

View File

@@ -0,0 +1,727 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using AngleSharp.Html.Parser;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig;
using Jackett.Common.Services.Interfaces;
using Jackett.Common.Utils;
using Newtonsoft.Json.Linq;
using NLog;
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
using WebClient = Jackett.Common.Utils.Clients.WebClient;
namespace Jackett.Common.Indexers
{
[ExcludeFromCodeCoverage]
public class TodoTorrents : BaseWebIndexer
{
private static class TodoTorrentsCatType
{
public static string Pelicula => "pelicula";
public static string Pelicula4K => "pelicula4k";
public static string Serie => "serie";
public static string SerieHD => "seriehd";
public static string Documental => "documental";
public static string Musica => "musica";
public static string Variado => "variado";
public static string Juego => "juego";
}
private const string NewTorrentsUrl = "/ultimos";
private const string SearchUrl = "/buscar/";
public override string[] AlternativeSiteLinks { get; protected set; } = {
};
public override string[] LegacySiteLinks { get; protected set; } = {
"https://todotorrents.net"
};
private static Dictionary<string, string> CategoriesMap => new Dictionary<string, string>
{
{ "/pelicula/", TodoTorrentsCatType.Pelicula },
{ "/serie/", TodoTorrentsCatType.Serie },
{ "/documental", TodoTorrentsCatType.Documental },
{ "/musica/", TodoTorrentsCatType.Musica },
{ "/variado/", TodoTorrentsCatType.Variado },
{ "/juego/", TodoTorrentsCatType.Juego } //games, it can be pc or console
};
public TodoTorrents(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "todotorrents",
name: "TodoTorrents",
description: "TodoTorrents is a SPANISH public tracker for MOVIES / TV / GENERAL",
link: "https://todotorrents.net/",
caps: new TorznabCapabilities
{
TvSearchParams = new List<TvSearchParam>
{
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep
},
MovieSearchParams = new List<MovieSearchParam>
{
MovieSearchParam.Q
},
MusicSearchParams = new List<MusicSearchParam>
{
MusicSearchParam.Q,
}
},
configService: configService,
client: w,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationData())
{
Encoding = Encoding.UTF8;
Language = "es-ES";
Type = "public";
var matchWords = new BoolConfigurationItem("Match words in title") { Value = true };
configData.AddDynamic("MatchWords", matchWords);
//configData.AddDynamic("flaresolverr", new DisplayInfoConfigurationItem("FlareSolverr", "This site may use Cloudflare DDoS Protection, therefore Jackett requires <a href=\"https://github.com/Jackett/Jackett#configuring-flaresolverr\" target=\"_blank\">FlareSolver</a> to access it."));
AddCategoryMapping(TodoTorrentsCatType.Pelicula, TorznabCatType.Movies, "Pelicula");
AddCategoryMapping(TodoTorrentsCatType.Pelicula4K, TorznabCatType.MoviesUHD, "Peliculas 4K");
AddCategoryMapping(TodoTorrentsCatType.Serie, TorznabCatType.TVSD, "Serie");
AddCategoryMapping(TodoTorrentsCatType.SerieHD, TorznabCatType.TVHD, "Serie HD");
AddCategoryMapping(TodoTorrentsCatType.Musica, TorznabCatType.Audio, "Música");
}
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
{
LoadValuesFromJson(configJson);
var releases = await PerformQuery(new TorznabQuery());
await ConfigureIfOK(string.Empty, releases.Any(), () =>
throw new Exception("Could not find releases from this URL"));
return IndexerConfigurationStatus.Completed;
}
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{
var matchWords = ((BoolConfigurationItem)configData.GetDynamic("MatchWords")).Value;
matchWords = query.SearchTerm != "" && matchWords;
// we remove parts from the original query
query = ParseQuery(query);
var releases = string.IsNullOrEmpty(query.SearchTerm) ?
await PerformQueryNewest(query) :
await PerformQuerySearch(query, matchWords);
return releases;
}
public override async Task<byte[]> Download(Uri link)
{
var downloadUrl = link.ToString();
if (downloadUrl.Contains("cdn.pizza"))
{
return await base.Download(link);
}
var parser = new HtmlParser();
// Eg https://todotorrents.net/pelicula/24797/Halloween-Kills
var result = await RequestWithCookiesAsync(downloadUrl);
if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData);
var dom = parser.ParseDocument(result.ContentString);
//var info = dom.QuerySelectorAll("div.descargar > div.card > div.card-body").First();
//var title = info.QuerySelector("h2.descargarTitulo").TextContent;
var dlStr = dom.QuerySelector("div.text-center > p > a");
//dl site starts with "//cdn.pizza" and they accept https so use it
downloadUrl = dlStr != null ? string.Format("https:{0}", dlStr.GetAttribute("href")) : "";
var content = await base.Download(new Uri(downloadUrl));
return content;
}
private async Task<List<ReleaseInfo>> PerformQueryNewest(TorznabQuery query)
{
var releases = new List<ReleaseInfo>();
var url = SiteLink + NewTorrentsUrl;
var result = await RequestWithCookiesAsync(url);
if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData);
logger.Debug("\naaa");
try
{
var searchResultParser = new HtmlParser();
var doc = searchResultParser.ParseDocument(result.ContentString);
var rows = doc.QuerySelector("div.seccion#ultimos_torrents > div.card > div.card-body > div");
var parsedDetailsLink = new List<string>();
string rowTitle = null;
string rowDetailsLink = null;
string rowPublishDate = null;
string rowQuality = null;
foreach (var row in rows.Children)
{
if (row.TagName.Equals("DIV"))
{
//div class="h5 text-dark">PELÍCULAS:</div>
continue;
}
//<span class="text-muted">2022-01-12</span>
//<a href='pelicula/24797/Halloween-Kills' class="text-primary">Halloween Kills</a>
//<span class="text-muted">(MicroHD-1080p)</span>
if (row.TagName.Equals("A"))
{
rowTitle = row.TextContent;
rowDetailsLink = SiteLink + row.GetAttribute("href");
}
if (row.TagName.Equals("SPAN"))
{
if (DateTime.TryParse(row.TextContent, out var publishDate))
{
rowPublishDate = publishDate.ToString();
}
//quality
if (Regex.IsMatch(row.TextContent, "([()])"))
{
rowQuality = row.TextContent;
}
}
if (row.TagName.Equals("BR"))
{
// we add parsed items to rowDetailsLink to avoid duplicates in newest torrents
// list results
if (!parsedDetailsLink.Contains(rowDetailsLink) && rowTitle != null)
{
var cat = GetCategoryFromURL(rowDetailsLink);
switch (cat)
{
case "pelicula":
case "serie":
case "musica":
await ParseRelease(releases, rowDetailsLink, rowTitle, cat, rowQuality, query, false);
parsedDetailsLink.Add(rowDetailsLink);
break;
default:
break;
}
// clean the current row
rowTitle = null;
rowDetailsLink = null;
rowPublishDate = null;
rowQuality = null;
}
}
}
}
catch (Exception ex)
{
OnParseError(result.ContentString, ex);
}
return releases;
}
private async Task<List<ReleaseInfo>> PerformQuerySearch(TorznabQuery query, bool matchWords)
{
var releases = new List<ReleaseInfo>();
// search only the longest word, we filter the results later
var searchTerm = GetLongestWord(query.SearchTerm);
var url = SiteLink + SearchUrl + searchTerm;
var result = await RequestWithCookiesAsync(url);
if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData);
try
{
var searchResultParser = new HtmlParser();
var doc = searchResultParser.ParseDocument(result.ContentString);
var rows = doc.QuerySelectorAll("div.seccion#buscador > div.card > div.card-body > p");
if (rows.First().TextContent.Contains("Introduce alguna palabra para buscar con al menos 2 letras."))
{
return releases; //no enough search terms
}
foreach (var row in rows.Skip(2))
{
//href=/pelicula/6981/Saga-Spiderman
var link = string.Format("{0}{1}", SiteLink.TrimEnd('/'), row.QuerySelector("p > span > a").GetAttribute("href"));
var title = row.QuerySelector("p > span > a").TextContent;
var cat = GetCategory(title, link);
var quality = "";
switch (GetCategoryFromURL(link))
{
case "pelicula":
case "serie":
quality = Regex.Replace(row.QuerySelector("p > span > span").TextContent, "([()])", "");
break;
}
switch (cat)
{
case "pelicula":
case "pelicula4k":
case "serie":
case "seriehd":
case "musica":
await ParseRelease(releases, link, title, cat, quality, query, matchWords);
break;
default: //ignore different categories
break;
}
}
}
catch (Exception ex)
{
OnParseError(result.ContentString, ex);
}
return releases;
}
private async Task ParseRelease(ICollection<ReleaseInfo> releases, string link, string title, string category, string quality, TorznabQuery query, bool matchWords)
{
// Remove trailing dot if there's one.
title = title.Trim();
if (title.EndsWith("."))
title = title.Remove(title.Length - 1).Trim();
//There's no public publishDate
//var publishDate = TryToParseDate(publishStr, DateTime.Now);
// return results only for requested categories
if (query.Categories.Any() && !query.Categories.Contains(MapTrackerCatToNewznab(category).First()))
return;
// match the words in the query with the titles
if (matchWords && !CheckTitleMatchWords(query.SearchTerm, title))
return;
switch (category)
{
case "pelicula":
case "pelicula4k":
await ParseMovieRelease(releases, link, query, title, quality);
break;
case "serie":
case "seriehd":
await ParseSeriesRelease(releases, link, query, title, quality);
break;
case "musica":
await ParseMusicRelease(releases, link, query, title);
break;
default:
break;
}
}
private async Task ParseMusicRelease(ICollection<ReleaseInfo> releases, string link, TorznabQuery query, string title)
{
var result = await RequestWithCookiesAsync(link);
if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData);
var searchResultParser = new HtmlParser();
var doc = searchResultParser.ParseDocument(result.ContentString);
var data = doc.QuerySelector("div.descargar > div.card > div.card-body");
//var _title = data.QuerySelector("h2.descargarTitulo").TextContent;
//var data2 = data.QuerySelectorAll("div.d-inline-block > p");
//var yearStr = data2[0].TextContent;
var data3 = data.QuerySelectorAll("div.text-center > div.d-inline-block");
var publishStr = data3[0].TextContent; //"Fecha: {0}" -- needs trimming
var sizeStr = data3[1].TextContent; //"Tamaño: {0}" -- needs trimming, contains number of episodes available
var publishDate = TryToParseDate(publishStr, DateTime.Now);
var size = ReleaseInfo.GetBytes(sizeStr);
var release = GenerateRelease(title, link, link, GetCategory(title, link), publishDate, size);
releases.Add(release);
}
private async Task ParseSeriesRelease(ICollection<ReleaseInfo> releases, string link, TorznabQuery query, string title, string quality)
{
var result = await RequestWithCookiesAsync(link);
if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData);
var searchResultParser = new HtmlParser();
var doc = searchResultParser.ParseDocument(result.ContentString);
var data = doc.QuerySelector("div.descargar > div.card > div.card-body");
//var _title = data.QuerySelector("h2.descargarTitulo").TextContent;
//var data2 = data.QuerySelectorAll("div.d-inline-block > p");
//var quality = data2[0].TextContent; //"Formato: {0}" -- needs trimming
//var episodes = data2[1].TextContent; //"Episodios: {0}" -- needs trimming, contains number of episodes available
var data3 = data.QuerySelectorAll("div.d-inline-block > table.table > tbody > tr");
foreach (var row in data3)
{
var episodeData = row.QuerySelectorAll("td");
var episodeTitle = episodeData[0].TextContent; //it may contain two episodes divided by '&', eg '1x01 & 1x02'
var downloadLink = "https:" + episodeData[1].QuerySelector("a").GetAttribute("href"); // URL like "//cdn.pizza/"
var episodePublishStr = episodeData[2].TextContent;
var episodePublish = TryToParseDate(episodePublishStr, DateTime.Now);
// Convert the title to Scene format
episodeTitle = ParseSeriesTitle(title, episodeTitle, query);
// if the original query was in scene format, we filter the results to match episode
// query.Episode != null means scene title
if (query.Episode != null && !episodeTitle.Contains(query.GetEpisodeSearchString()))
continue;
// guess size
var size = 536870912L; // 512 MB
if (episodeTitle.ToLower().Contains("720p"))
size = 1073741824L; // 1 GB
if (episodeTitle.ToLower().Contains("1080p"))
size = 4294967296L; // 4 GB
size *= GetEpisodeCountFromTitle(episodeTitle);
var release = GenerateRelease(episodeTitle, link, downloadLink, GetCategory(title, link), episodePublish, size);
releases.Add(release);
}
}
private async Task ParseMovieRelease(ICollection<ReleaseInfo> releases, string link, TorznabQuery query, string title, string quality)
{
title = title.Trim();
var result = await RequestWithCookiesAsync(link);
if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData);
var searchResultParser = new HtmlParser();
var doc = searchResultParser.ParseDocument(result.ContentString);
// parse tags in title, we need to put the year after the real title (before the tags)
// Harry Potter And The Deathly Hallows: Part 1 [subs. Integrados]
var tags = "";
var queryMatches = Regex.Matches(title, @"[\[\(]([^\]\)]+)[\]\)]", RegexOptions.IgnoreCase);
foreach (Match m in queryMatches)
{
var tag = m.Groups[1].Value.Trim().ToUpper();
if (tag.Equals("4K")) // Fix 4K quality. Eg Harry Potter Y La Orden Del Fénix [4k]
quality = "(UHD 4K 2160p)";
else if (tag.Equals("FULLBLURAY")) // Fix 4K quality. Eg Harry Potter Y El Cáliz De Fuego (fullbluray)
quality = "(COMPLETE BLURAY)";
else // Add the tag to the title
tags += " " + tag;
title = title.Replace(m.Groups[0].Value, "");
}
title = title.Trim();
// clean quality
if (quality != null)
{
var queryMatch = Regex.Match(quality, @"[\[\(]([^\]\)]+)[\]\)]", RegexOptions.IgnoreCase);
if (queryMatch.Success)
quality = queryMatch.Groups[1].Value;
quality = quality.Trim().Replace("-", " ");
quality = Regex.Replace(quality, "HDRip", "BDRip", RegexOptions.IgnoreCase); // fix for Radarr
}
// add the year
title = query.Year != null ? title + " " + query.Year : title;
// add the tags
title += tags;
// add spanish
title += " SPANISH";
// add quality
if (quality != null)
title += " " + quality;
var info = doc.QuerySelectorAll("div.descargar > div.card > div.card-body").First();
var moreinfo = info.QuerySelectorAll("div.text-center > div.d-inline-block");
long size = 0;
if (moreinfo.Length == 2)
{
size = ReleaseInfo.GetBytes(moreinfo[1].QuerySelector("p").TextContent);
}
var release = GenerateRelease(title, link, link, GetCategory(title, link), DateTime.Now, size);
releases.Add(release);
}
private ReleaseInfo GenerateRelease(string title, string link, string downloadLink, string cat,
DateTime publishDate, long size)
{
var dl = new Uri(downloadLink);
var _link = new Uri(link);
var release = new ReleaseInfo
{
Title = title,
Details = _link,
Link = dl,
Guid = dl,
Category = MapTrackerCatToNewznab(cat),
PublishDate = publishDate,
Size = size,
Files = 1,
Seeders = 1,
Peers = 2,
DownloadVolumeFactor = 0,
UploadVolumeFactor = 1
};
return release;
}
private static bool CheckTitleMatchWords(string queryStr, string title)
{
// this code split the words, remove words with 2 letters or less, remove accents and lowercase
var queryMatches = Regex.Matches(queryStr, @"\b[\w']*\b");
var queryWords = from m in queryMatches.Cast<Match>()
where !string.IsNullOrEmpty(m.Value) && m.Value.Length > 2
select Encoding.UTF8.GetString(Encoding.GetEncoding("ISO-8859-8").GetBytes(m.Value.ToLower()));
var titleMatches = Regex.Matches(title, @"\b[\w']*\b");
var titleWords = from m in titleMatches.Cast<Match>()
where !string.IsNullOrEmpty(m.Value) && m.Value.Length > 2
select Encoding.UTF8.GetString(Encoding.GetEncoding("ISO-8859-8").GetBytes(m.Value.ToLower()));
titleWords = titleWords.ToArray();
return queryWords.All(word => titleWords.Contains(word));
}
private static TorznabQuery ParseQuery(TorznabQuery query)
{
// Eg. Marco.Polo.2014.S02E08
// the season/episode part is already parsed by Jackett
// query.SanitizedSearchTerm = Marco.Polo.2014.
// query.Season = 2
// query.Episode = 8
var searchTerm = query.SanitizedSearchTerm;
// replace punctuation symbols with spaces
// searchTerm = Marco Polo 2014
searchTerm = Regex.Replace(searchTerm, @"[-._\(\)@/\\\[\]\+\%]", " ");
searchTerm = Regex.Replace(searchTerm, @"\s+", " ");
searchTerm = searchTerm.Trim();
// we parse the year and remove it from search
// searchTerm = Marco Polo
// query.Year = 2014
var r = new Regex("([ ]+([0-9]{4}))$", RegexOptions.IgnoreCase);
var m = r.Match(searchTerm);
if (m.Success)
{
query.Year = int.Parse(m.Groups[2].Value);
searchTerm = searchTerm.Replace(m.Groups[1].Value, "");
}
// remove some words
searchTerm = Regex.Replace(searchTerm, @"\b(espa[ñn]ol|spanish|castellano|spa)\b", "", RegexOptions.IgnoreCase);
query.SearchTerm = searchTerm;
return query;
}
private static string ParseSeriesTitle(string title, string episodeTitle, TorznabQuery query)
{
// parse title
// title = The Mandalorian - 1ª Temporada
// title = The Mandalorian - 1ª Temporada [720p]
// title = Grace and Frankie - 5ª Temporada [720p]: 5x08 al 5x13.
var newTitle = title.Split(new[] { " - " }, StringSplitOptions.RemoveEmptyEntries)[0].Trim();
// newTitle = The Mandalorian
// parse episode title
var newEpisodeTitle = episodeTitle.Trim();
// episodeTitle = 5x08 al 5x13.
// episodeTitle = 2x01 - 2x02 - 2x03.
var matches = Regex.Matches(newEpisodeTitle, "([0-9]+)x([0-9]+)", RegexOptions.IgnoreCase);
if (matches.Count > 1)
{
newEpisodeTitle = "";
foreach (Match m in matches)
if (newEpisodeTitle.Equals(""))
newEpisodeTitle += "S" + m.Groups[1].Value.PadLeft(2, '0')
+ "E" + m.Groups[2].Value.PadLeft(2, '0');
else
newEpisodeTitle += "-E" + m.Groups[2].Value.PadLeft(2, '0');
// newEpisodeTitle = S05E08-E13
// newEpisodeTitle = S02E01-E02-E03
}
else
{
// episodeTitle = 1x04 - 05.
var m = Regex.Match(newEpisodeTitle, "^([0-9]+)x([0-9]+)[^0-9]+([0-9]+)[.]?$", RegexOptions.IgnoreCase);
if (m.Success)
newEpisodeTitle = "S" + m.Groups[1].Value.PadLeft(2, '0')
+ "E" + m.Groups[2].Value.PadLeft(2, '0') + "-"
+ "E" + m.Groups[3].Value.PadLeft(2, '0');
// newEpisodeTitle = S01E04-E05
else
{
// episodeTitle = 1x02
// episodeTitle = 1x02 -
// episodeTitle = 1x08 - CONTRASEÑA: WWW.PCTNEW ORG bebe
m = Regex.Match(newEpisodeTitle, "^([0-9]+)x([0-9]+)(.*)$", RegexOptions.IgnoreCase);
if (m.Success)
{
newEpisodeTitle = "S" + m.Groups[1].Value.PadLeft(2, '0')
+ "E" + m.Groups[2].Value.PadLeft(2, '0');
// newEpisodeTitle = S01E02
if (!m.Groups[3].Value.Equals(""))
newEpisodeTitle += " " + m.Groups[3].Value.Replace(" -", "").Trim();
// newEpisodeTitle = S01E08 CONTRASEÑA: WWW.PCTNEW ORG bebe
}
}
}
// if the original query was in scene format, we have to put the year back
// query.Episode != null means scene title
var year = query.Episode != null && query.Year != null ? " " + query.Year : "";
newTitle += year + " " + newEpisodeTitle;
newTitle += " SPANISH";
// multilanguage
if (title.ToLower().Contains("ES-EN"))
newTitle += " ENGLISH";
//quality
if (title.ToLower().Contains("720p"))
newTitle += " 720p";
else if (title.ToLower().Contains("1080p"))
newTitle += " 1080p";
else
newTitle += " SDTV";
if (title.ToLower().Contains("HDTV"))
newTitle += " HDTV";
if (title.ToLower().Contains("x265"))
newTitle += " x265";
else
newTitle += " x264";
// return The Mandalorian S01E04 SPANISH 720p HDTV x264
return newTitle;
}
public static int GetEpisodeCountFromTitle(string title)
{
var matches = Regex.Matches(title, "E[0-9+]");
var count = matches.Count;
if (count == 0)
return 0; //no episodes in title
//eg E1-E9
if (count == 2)
{
var first = title.Substring(matches[0].Index, matches[1].Index - matches[0].Index - 1);
var last = title.Substring(matches[1].Index, 3); //"Exx"
if (first.StartsWith("E") && last.StartsWith("E"))
{
var first_ep = int.Parse(first.Substring(1, 2));
var last_ep = int.Parse(last.Substring(1, 2));
return last_ep - first_ep + 1; //E01-E03 -> 3 episodes
}
}
return count;
}
public static string GetCategory(string title, string url)
{
var cat = GetCategoryFromURL(url);
switch (cat)
{
case "pelicula":
case "pelicula4k":
if (title.Contains("4K"))
{
cat = TodoTorrentsCatType.Pelicula4K;
}
break;
case "serie":
case "seriehd":
if (title.Contains("720p") || title.Contains("1080p"))
{
cat = TodoTorrentsCatType.SerieHD;
}
break;
default:
break;
}
return cat;
}
public static string GetCategoryFromURL(string url)
{
return CategoriesMap
.Where(categoryMap => url.Contains(categoryMap.Key))
.Select(categoryMap => categoryMap.Value)
.FirstOrDefault();
}
private static string GetLongestWord(string text)
{
var words = text.Split(' ');
if (!words.Any())
return null;
var longestWord = words.First();
foreach (var word in words)
if (word.Length >= longestWord.Length)
longestWord = word;
return longestWord;
}
private static DateTime TryToParseDate(string dateToParse, DateTime dateDefault)
{
try
{
return DateTime.ParseExact(dateToParse, "yyyy-MM-dd", CultureInfo.InvariantCulture);
}
catch
{
// ignored
}
return dateDefault;
}
}
}

View File

@@ -1,307 +0,0 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using AngleSharp.Html.Parser;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig;
using Jackett.Common.Services.Interfaces;
using Jackett.Common.Utils;
using Jackett.Common.Utils.Clients;
using Newtonsoft.Json.Linq;
using NLog;
namespace Jackett.Common.Indexers
{
[ExcludeFromCodeCoverage]
public class TorrentSeeds : BaseWebIndexer
{
private string LoginUrl => SiteLink + "takelogin.php";
private string CaptchaUrl => SiteLink + "simpleCaptcha.php?numImages=1";
private string SearchUrl => SiteLink + "browse_elastic.php";
private new ConfigurationDataBasicLoginWithRSSAndDisplay configData => (ConfigurationDataBasicLoginWithRSSAndDisplay)base.configData;
public TorrentSeeds(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l,
IProtectionService ps, ICacheService cs)
: base(id: "torrentseeds",
name: "TorrentSeeds",
description: "TorrentSeeds is a Private site for MOVIES / TV / GENERAL",
link: "https://torrentseeds.org/",
caps: new TorznabCapabilities
{
TvSearchParams = new List<TvSearchParam>
{
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep
},
MovieSearchParams = new List<MovieSearchParam>
{
MovieSearchParam.Q
},
MusicSearchParams = new List<MusicSearchParam>
{
MusicSearchParam.Q
},
BookSearchParams = new List<BookSearchParam>
{
BookSearchParam.Q
}
},
configService: configService,
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLoginWithRSSAndDisplay("For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile."))
{
Encoding = Encoding.UTF8;
Language = "en-US";
Type = "private";
// NOTE: Tracker Category Description must match Type/Category in details page!
AddCategoryMapping(37, TorznabCatType.TVAnime, "Anime/HD");
AddCategoryMapping(9, TorznabCatType.TVAnime, "Anime/SD");
AddCategoryMapping(72, TorznabCatType.TVAnime, "Anime/UHD");
AddCategoryMapping(13, TorznabCatType.PC0day, "Apps/0DAY");
AddCategoryMapping(27, TorznabCatType.Books, "Apps/Bookware");
AddCategoryMapping(1, TorznabCatType.PCISO, "Apps/ISO");
AddCategoryMapping(73, TorznabCatType.AudioAudiobook, "Music/Audiobooks");
AddCategoryMapping(47, TorznabCatType.ConsoleOther, "Console/NSW");
AddCategoryMapping(8, TorznabCatType.ConsolePS3, "Console/PS3");
AddCategoryMapping(30, TorznabCatType.ConsolePS4, "Console/PS4");
AddCategoryMapping(71, TorznabCatType.ConsolePS4, "Console/PS5");
AddCategoryMapping(7, TorznabCatType.ConsolePSP, "Console/PSP");
AddCategoryMapping(70, TorznabCatType.ConsolePSVita, "Console/PSV");
AddCategoryMapping(16, TorznabCatType.ConsoleWii, "Console/WII");
AddCategoryMapping(29, TorznabCatType.ConsoleWiiU, "Console/WIIU");
AddCategoryMapping(17, TorznabCatType.ConsoleXBox360, "Console/XBOX360");
AddCategoryMapping(32, TorznabCatType.BooksEBook, "E-books");
AddCategoryMapping(63, TorznabCatType.ConsoleOther, "Games/DOX");
AddCategoryMapping(2, TorznabCatType.PCGames, "Games/ISO");
AddCategoryMapping(12, TorznabCatType.PCGames, "Games/PC Rips");
AddCategoryMapping(31, TorznabCatType.MoviesBluRay, "Movies/Bluray");
AddCategoryMapping(50, TorznabCatType.MoviesBluRay, "Movies/Bluray-UHD");
AddCategoryMapping(3, TorznabCatType.MoviesDVD, "Movies/DVDR");
AddCategoryMapping(69, TorznabCatType.MoviesForeign, "Movies/DVDR-Foreign");
AddCategoryMapping(19, TorznabCatType.MoviesHD, "Movies/HD");
AddCategoryMapping(39, TorznabCatType.MoviesForeign, "Movies/HD-Foreign");
AddCategoryMapping(74, TorznabCatType.MoviesHD, "Movies/Remuxes");
AddCategoryMapping(25, TorznabCatType.MoviesSD, "Movies/SD");
AddCategoryMapping(62, TorznabCatType.MoviesForeign, "Movies/SD-Foreign");
AddCategoryMapping(49, TorznabCatType.MoviesUHD, "Movies/UHD");
AddCategoryMapping(76, TorznabCatType.MoviesForeign, "Movies/UHD-Foreign");
AddCategoryMapping(33, TorznabCatType.AudioLossless, "Music/FLAC");
AddCategoryMapping(89, TorznabCatType.AudioVideo, "Music/MBluRay");
AddCategoryMapping(28, TorznabCatType.AudioVideo, "Music/MBluRay-Rips");
AddCategoryMapping(34, TorznabCatType.AudioVideo, "Music/MDVDR");
AddCategoryMapping(4, TorznabCatType.AudioMP3, "Music/MP3");
AddCategoryMapping(20, TorznabCatType.AudioVideo, "Music/MVID");
AddCategoryMapping(77, TorznabCatType.TVAnime, "Anime/Packs");
AddCategoryMapping(78, TorznabCatType.BooksEBook, "Books/Packs");
AddCategoryMapping(80, TorznabCatType.MoviesHD, "Movies/HD-Packs");
AddCategoryMapping(81, TorznabCatType.MoviesHD, "Movies/Remux-Packs");
AddCategoryMapping(79, TorznabCatType.MoviesSD, "Movies/SD-Packs");
AddCategoryMapping(68, TorznabCatType.Audio, "Music/Packs");
AddCategoryMapping(67, TorznabCatType.TVHD, "TV/HD-Packs");
AddCategoryMapping(82, TorznabCatType.TVHD, "TV/Remux-Packs");
AddCategoryMapping(65, TorznabCatType.TVSD, "TV/SD-Packs");
AddCategoryMapping(84, TorznabCatType.TVUHD, "TV/UHD-Packs");
AddCategoryMapping(85, TorznabCatType.XXX, "XXX/Packs");
AddCategoryMapping(23, TorznabCatType.TVSD, "TV/DVDR");
AddCategoryMapping(26, TorznabCatType.TVHD, "TV/HD");
AddCategoryMapping(64, TorznabCatType.TVForeign, "TV/HD-Foreign");
AddCategoryMapping(11, TorznabCatType.TVHD, "TV/HD-Retail");
AddCategoryMapping(36, TorznabCatType.TVSport, "TV/HD-Sport");
AddCategoryMapping(18, TorznabCatType.TVSD, "TV/SD");
AddCategoryMapping(86, TorznabCatType.TVForeign, "TV/SD-Foreign");
AddCategoryMapping(24, TorznabCatType.TVSD, "TV/SD-Retail");
AddCategoryMapping(35, TorznabCatType.TVSport, "TV/SD-Sport");
AddCategoryMapping(61, TorznabCatType.TVUHD, "TV/UHD");
AddCategoryMapping(87, TorznabCatType.TVForeign, "TV/UHD-Foreign");
AddCategoryMapping(53, TorznabCatType.XXX, "XXX/HD");
AddCategoryMapping(88, TorznabCatType.XXXImageSet, "XXX/Image-Sets");
AddCategoryMapping(57, TorznabCatType.XXX, "XXX/Paysite");
AddCategoryMapping(6, TorznabCatType.XXXSD, "XXX/SD");
}
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
{
LoadValuesFromJson(configJson);
CookieHeader = ""; // clear old cookies
var result1 = await RequestWithCookiesAsync(CaptchaUrl);
var json1 = JObject.Parse(result1.ContentString);
var captchaSelection = json1["images"][0]["hash"];
var pairs = new Dictionary<string, string> {
{ "username", configData.Username.Value },
{ "password", configData.Password.Value },
{ "submitme", "X" },
{ "captchaSelection", (string)captchaSelection }
};
var result2 = await RequestLoginAndFollowRedirect(LoginUrl, pairs, result1.Cookies, true, null, null, true);
await ConfigureIfOK(result2.Cookies, result2.ContentString.Contains("logout.php"), () =>
throw new ExceptionWithConfigData("Login Failed", configData));
return IndexerConfigurationStatus.RequiresTesting;
}
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{
// remove operator characters
var cleanSearchString = Regex.Replace(query.GetQueryString().Trim(), "[ _.+-]+", " ", RegexOptions.Compiled);
var searchUrl = SearchUrl;
var queryCollection = new NameValueCollection
{
{ "search_in", "name" },
{ "search_mode", "all" },
{ "order_by", "added" },
{ "order_way", "desc" }
};
if (!string.IsNullOrWhiteSpace(cleanSearchString))
queryCollection.Add("query", cleanSearchString);
foreach (var cat in MapTorznabCapsToTrackers(query))
queryCollection.Add($"cat[{cat}]", "1");
searchUrl += "?" + queryCollection.GetQueryString();
var response = await RequestWithCookiesAndRetryAsync(searchUrl);
// handle cookie expiration
var results = response.ContentString;
if ((response.IsRedirect && response.RedirectingTo.Contains("/login.php?")) ||
(!response.IsRedirect && !results.Contains("/logout.php?")))
{
await ApplyConfiguration(null); // re-login
response = await RequestWithCookiesAndRetryAsync(searchUrl);
}
// handle single entries
if (response.IsRedirect)
{
var detailsLink = new Uri(response.RedirectingTo);
await FollowIfRedirect(response, accumulateCookies: true);
return ParseSingleResult(response, detailsLink);
}
return ParseMultiResult(response);
}
private List<ReleaseInfo> ParseSingleResult(WebResult response, Uri detailsLink)
{
var releases = new List<ReleaseInfo>();
var results = response.ContentString;
try
{
var parser = new HtmlParser();
var dom = parser.ParseDocument(results);
var content = dom.QuerySelector("tbody:has(script)");
if (content == null)
return releases; // no results
var release = new ReleaseInfo();
release.MinimumRatio = 1;
release.MinimumSeedTime = 72 * 60 * 60;
var catStr = content.QuerySelector("tr:has(td.heading:contains(\"Type\"))").Children[1].TextContent;
release.Category = MapTrackerCatDescToNewznab(catStr);
var qLink = content.QuerySelector("tr:has(td.heading:contains(\"Download\"))")
.QuerySelector("a[href*=\"download.php?torrent=\"]");
release.Link = new Uri(SiteLink + qLink.GetAttribute("href"));
release.Title = dom.QuerySelector("h1").TextContent.Trim();
release.Details = detailsLink;
release.Guid = detailsLink;
var qSize = content.QuerySelector("tr:has(td.heading:contains(\"Size\"))").Children[1].TextContent
.Split('(')[0].Trim();
release.Size = ReleaseInfo.GetBytes(qSize);
var peerStats = content.QuerySelector("tr:has(td:has(a[href^=\"./peerlist_xbt.php?id=\"]))").Children[1]
.TextContent.Split(',');
var qSeeders = peerStats[0].Replace(" seeder(s)", "").Trim();
var qLeechers = peerStats[1].Split('=')[0].Replace(" leecher(s) ", "").Trim();
release.Seeders = ParseUtil.CoerceInt(qSeeders);
release.Peers = ParseUtil.CoerceInt(qLeechers) + release.Seeders;
var rawDateStr = content.QuerySelector("tr:has(td.heading:contains(\"Added\"))").Children[1].TextContent;
var dateUpped = DateTimeUtil.FromUnknown(rawDateStr.Replace(",", string.Empty));
// Mar 4 2020, 05:47 AM
release.PublishDate = dateUpped.ToLocalTime();
var qGrabs = content.QuerySelector("tr:has(td.heading:contains(\"Snatched\"))").Children[1];
release.Grabs = ParseUtil.CoerceInt(qGrabs.TextContent.Replace(" time(s)", ""));
var qFiles = content.QuerySelector("tr:has(td.heading:has(a[href^=\"./filelist.php?id=\"]))").Children[1];
release.Files = ParseUtil.CoerceInt(qFiles.TextContent.Replace(" files", ""));
var qRatio = content.QuerySelector("tr:has(td.heading:contains(\"Ratio After Download\"))").Children[1];
release.DownloadVolumeFactor = qRatio.QuerySelector("del") != null ? 0 : 1;
release.UploadVolumeFactor = 1;
releases.Add(release);
}
catch (Exception ex)
{
OnParseError(results, ex);
}
return releases;
}
private List<ReleaseInfo> ParseMultiResult(WebResult response)
{
var releases = new List<ReleaseInfo>();
var results = response.ContentString;
try
{
var parser = new HtmlParser();
var dom = parser.ParseDocument(results);
var rows = dom.QuerySelectorAll("table.table-bordered > tbody > tr[class*=\"torrent_row_\"]");
foreach (var row in rows)
{
var release = new ReleaseInfo();
release.MinimumRatio = 1;
release.MinimumSeedTime = 72 * 60 * 60;
var qCatLink = row.QuerySelector("a[href^=\"/browse_elastic.php?cat=\"]");
var catStr = qCatLink.GetAttribute("href").Split('=')[1];
release.Category = MapTrackerCatToNewznab(catStr);
var qDetailsLink = row.QuerySelector("a[href^=\"/details.php?id=\"]");
var qDetailsTitle = row.QuerySelector("td:has(a[href^=\"/details.php?id=\"]) b");
release.Title = qDetailsTitle.TextContent.Trim();
var qDlLink = row.QuerySelector("a[href^=\"/download.php?torrent=\"]");
release.Link = new Uri(SiteLink + qDlLink.GetAttribute("href").TrimStart('/'));
release.Details = new Uri(SiteLink + qDetailsLink.GetAttribute("href").TrimStart('/'));
release.Guid = release.Details;
var qColumns = row.QuerySelectorAll("td");
release.Files = ParseUtil.CoerceInt(qColumns[3].TextContent);
release.PublishDate = DateTimeUtil.FromUnknown(qColumns[5].TextContent);
release.Size = ReleaseInfo.GetBytes(qColumns[6].TextContent);
release.Grabs = ParseUtil.CoerceInt(qColumns[7].TextContent.Replace("Times", ""));
release.Seeders = ParseUtil.CoerceInt(qColumns[8].TextContent);
release.Peers = ParseUtil.CoerceInt(qColumns[9].TextContent) + release.Seeders;
var qImdb = row.QuerySelector("a[href*=\"www.imdb.com\"]");
if (qImdb != null)
{
var deRefUrl = qImdb.GetAttribute("href");
release.Imdb = ParseUtil.GetImdbID(WebUtility.UrlDecode(deRefUrl).Split('/').Last());
}
release.DownloadVolumeFactor = row.QuerySelector("span.freeleech") != null ? 0 : 1;
release.UploadVolumeFactor = 1;
releases.Add(release);
}
}
catch (Exception ex)
{
OnParseError(results, ex);
}
return releases;
}
}
}

View File

@@ -20,6 +20,7 @@ namespace Jackett.Common.Models.Config
// Sonarr 15min, Radarr 60min, LazyLibrarian 20min, Readarr 15min, Lidarr = 15min
CacheTtl = 2100; // 35 minutes is a reasonable value for all of them and to avoid race conditions
CacheMaxResultsPerIndexer = 1000;
FlareSolverrMaxTimeout = 55000;
RuntimeSettings = runtimeSettings;
}
@@ -43,6 +44,7 @@ namespace Jackett.Common.Models.Config
public long CacheTtl { get; set; }
public long CacheMaxResultsPerIndexer { get; set; }
public string FlareSolverrUrl { get; set; }
public int FlareSolverrMaxTimeout { get; set; }
public string OmdbApiKey { get; set; }
public string OmdbApiUrl { get; set; }

View File

@@ -36,6 +36,8 @@ namespace Jackett.Common.Models.DTO
[DataMember]
public string flaresolverrurl { get; set; }
[DataMember]
public int flaresolverr_maxtimeout { get; set; }
[DataMember]
public string omdbkey { get; set; }
[DataMember]
public string omdburl { get; set; }
@@ -73,6 +75,7 @@ namespace Jackett.Common.Models.DTO
cache_ttl = config.CacheTtl;
cache_max_results_per_indexer = config.CacheMaxResultsPerIndexer;
flaresolverrurl = config.FlareSolverrUrl;
flaresolverr_maxtimeout = config.FlareSolverrMaxTimeout;
omdbkey = config.OmdbApiKey;
omdburl = config.OmdbApiUrl;
app_version = version;

Some files were not shown because too many files have changed in this diff Show More