mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-14 07:54:08 +02:00
Compare commits
102 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d43ac08372 | ||
![]() |
cfff7e4c1d | ||
![]() |
22ebc5170c | ||
![]() |
76c8dd45e3 | ||
![]() |
c8dfa99b28 | ||
![]() |
67e054468d | ||
![]() |
3afd31ea1c | ||
![]() |
ec8e141ac9 | ||
![]() |
0cd4eb2b69 | ||
![]() |
c9b4c988d7 | ||
![]() |
be4cf5e2c9 | ||
![]() |
c46cb2d8bb | ||
![]() |
d34f1558b7 | ||
![]() |
2936a1c824 | ||
![]() |
8ecace57e8 | ||
![]() |
baddd7bcff | ||
![]() |
9fa99e6ac4 | ||
![]() |
98374d4055 | ||
![]() |
d99fd72269 | ||
![]() |
cd2198bfe1 | ||
![]() |
96fef53dae | ||
![]() |
5b4df4a6d9 | ||
![]() |
5b962958ff | ||
![]() |
3c4a2adbae | ||
![]() |
af6f85fc81 | ||
![]() |
cb7a4861a0 | ||
![]() |
28db1b63f2 | ||
![]() |
928864afb2 | ||
![]() |
f19f753dd1 | ||
![]() |
2a0eb6fac7 | ||
![]() |
d0413d4acc | ||
![]() |
1a9d0fc206 | ||
![]() |
2a23f98682 | ||
![]() |
a5b7e58d26 | ||
![]() |
f2d21899e6 | ||
![]() |
60d2c425e1 | ||
![]() |
02e43bd6a9 | ||
![]() |
4a6d630076 | ||
![]() |
f11bea6429 | ||
![]() |
09e81da34c | ||
![]() |
42ca019942 | ||
![]() |
d457cd336d | ||
![]() |
c254acfc46 | ||
![]() |
6c5a005e27 | ||
![]() |
a2b1604052 | ||
![]() |
562c826cfa | ||
![]() |
af1002d57e | ||
![]() |
212e03ec7f | ||
![]() |
56a2b7f2a0 | ||
![]() |
a23b6fc673 | ||
![]() |
b90f15b37f | ||
![]() |
1299a1aa72 | ||
![]() |
e524572af3 | ||
![]() |
533ecae219 | ||
![]() |
a3d3456f41 | ||
![]() |
e19e3e820b | ||
![]() |
e7859b2db5 | ||
![]() |
98c5c2f149 | ||
![]() |
11e4fce764 | ||
![]() |
fe3dc0f766 | ||
![]() |
a7cd5e442e | ||
![]() |
650cc8bb9a | ||
![]() |
5b357e6019 | ||
![]() |
50bdadc18d | ||
![]() |
dfc27a7434 | ||
![]() |
4aec424e0a | ||
![]() |
ad86088b3c | ||
![]() |
a101eec991 | ||
![]() |
f1c6dca9bf | ||
![]() |
bd13e1256f | ||
![]() |
c01b8a3a33 | ||
![]() |
7ac6c43040 | ||
![]() |
1f0751f634 | ||
![]() |
c6b575b79c | ||
![]() |
8e4d797d1b | ||
![]() |
fa5bf831f6 | ||
![]() |
ae33faa652 | ||
![]() |
bac28c0302 | ||
![]() |
271f4d45e5 | ||
![]() |
53c61453a6 | ||
![]() |
6a15031197 | ||
![]() |
e5c19c246c | ||
![]() |
3a184f41a2 | ||
![]() |
ec42b35aba | ||
![]() |
d4bd5d747d | ||
![]() |
ef40af260b | ||
![]() |
b17c2482d0 | ||
![]() |
67db83ac07 | ||
![]() |
6e9ed2973f | ||
![]() |
23a01eb8d2 | ||
![]() |
23891d5cba | ||
![]() |
03df949e4f | ||
![]() |
82d97331c9 | ||
![]() |
1265a6aa53 | ||
![]() |
73aea6f5ff | ||
![]() |
aaf7b7d9e0 | ||
![]() |
af5c32e3aa | ||
![]() |
41f66b15b4 | ||
![]() |
9b67eef230 | ||
![]() |
caeeb8cde2 | ||
![]() |
5d99a7c90b | ||
![]() |
de6949f303 |
1
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
1
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -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
|
||||
|
10
.github/ISSUE_TEMPLATE/indexer-request.yml
vendored
10
.github/ISSUE_TEMPLATE/indexer-request.yml
vendored
@@ -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
|
||||
|
@@ -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>
|
||||
|
||||
|
@@ -30,6 +30,7 @@ UninstallDisplayName={#MyAppName}
|
||||
Compression=lzma
|
||||
SolidCompression=yes
|
||||
DisableDirPage=yes
|
||||
WizardStyle=modern
|
||||
|
||||
[Languages]
|
||||
Name: "english"; MessagesFile: "compiler:Default.isl"
|
||||
@@ -47,6 +48,15 @@ Name: "{group}\{#MyAppName}"; Filename: "{commonappdata}\Jackett\{#MyAppExeName}
|
||||
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
|
||||
Name: "{commondesktop}\{#MyAppName}"; Filename: "{commonappdata}\Jackett\{#MyAppExeName}"; Tasks: desktopicon
|
||||
|
||||
[Code]
|
||||
function PrepareToInstall(var NeedsRestart: Boolean): String;
|
||||
var
|
||||
ErrorCode: Integer;
|
||||
begin
|
||||
ShellExec('open', 'taskkill.exe', '/f /im {#MyAppExeName}', '', SW_HIDE, ewNoWait, ErrorCode);
|
||||
ShellExec('open', 'taskkill.exe', '/f /im JackettConsole.exe', '', SW_HIDE, ewNoWait, ErrorCode);
|
||||
end;
|
||||
|
||||
[Run]
|
||||
Filename: "{commonappdata}\Jackett\JackettConsole.exe"; Parameters: "--Uninstall"; Flags: waituntilterminated runhidden;
|
||||
Filename: "{commonappdata}\Jackett\JackettConsole.exe"; Parameters: "--ReserveUrls"; Flags: waituntilterminated runhidden;
|
||||
|
13
README.md
13
README.md
@@ -56,6 +56,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Demonoid
|
||||
* DivxTotal
|
||||
* dmhy
|
||||
* DonTorrent
|
||||
* E-Hentai
|
||||
* elitetorrent
|
||||
* EpubLibre
|
||||
@@ -104,7 +105,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 +115,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Pornforall
|
||||
* PornLeech
|
||||
* PornoLive
|
||||
* PornoRip
|
||||
* PornosLab
|
||||
* PornoTor
|
||||
* PornoTorrent
|
||||
@@ -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)
|
||||
@@ -254,6 +253,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Aftershock
|
||||
* Aidoru!Online
|
||||
* Aither
|
||||
* Alleen Retail
|
||||
* AlphaRatio (AR)
|
||||
* AmigosShareClub
|
||||
* anasch.cc
|
||||
@@ -368,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)
|
||||
@@ -401,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)
|
||||
@@ -490,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
|
||||
@@ -580,6 +581,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Twilights Zoom
|
||||
* U2 (U2分享園@動漫花園) [![(invite needed)][inviteneeded]](#)
|
||||
* UHDBits
|
||||
* UHD-HEAVEN
|
||||
* UnionGang [![(invite needed)][inviteneeded]](#)
|
||||
* UnlimitZ
|
||||
* Vizuk
|
||||
@@ -778,6 +780,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.
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
@@ -287,6 +288,12 @@ function displayConfiguredIndexersList(indexers) {
|
||||
"visible": true,
|
||||
"searchable": true,
|
||||
"orderable": true
|
||||
},
|
||||
{
|
||||
"targets": 2,
|
||||
"visible": false,
|
||||
"searchable": true,
|
||||
"orderable": false
|
||||
}
|
||||
]
|
||||
});
|
||||
@@ -429,6 +436,13 @@ function displayUnconfiguredIndexersList() {
|
||||
"visible": true,
|
||||
"searchable": false,
|
||||
"orderable": false
|
||||
},
|
||||
{
|
||||
"name": "url",
|
||||
"targets": 7,
|
||||
"visible": false,
|
||||
"searchable": true,
|
||||
"orderable": false
|
||||
}
|
||||
]
|
||||
});
|
||||
@@ -1500,6 +1514,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 +1537,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,
|
||||
|
@@ -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;
|
||||
|
@@ -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="">
|
||||
@@ -302,11 +306,12 @@
|
||||
|
||||
<script id="configured-indexer-table" type="text/x-handlebars-template">
|
||||
<div class="tab-content configured-indexer-div">
|
||||
<table id="configured-indexer-datatable" class="indexer-table dataTable compact cell-border hover stripe table table-responsive">
|
||||
<table id="configured-indexer-datatable" class="indexer-table dataTable compact cell-border hover stripe table table-responsive" style="width: 100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Indexer</th>
|
||||
<th>Actions</th>
|
||||
<th data-type="hiddendata">URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -334,12 +339,15 @@
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
<td data-type="hiddendata">{{site_link}}</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<tr>
|
||||
<td colspan="2"></td>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th data-type="hiddendata"></th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
@@ -348,7 +356,7 @@
|
||||
|
||||
<script id="unconfigured-indexer-table" type="text/x-handlebars-template">
|
||||
<div class="unconfigured-indexer-div">
|
||||
<table id="unconfigured-indexer-datatable" class="indexer-table dataTable compact cell-border hover stripe table table-responsive">
|
||||
<table id="unconfigured-indexer-datatable" class="indexer-table dataTable compact cell-border hover stripe table table-responsive" style="width: 100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
@@ -358,6 +366,7 @@
|
||||
<th data-type="hiddendata">Type string</th>
|
||||
<th>Language</th>
|
||||
<th></th>
|
||||
<th data-type="hiddendata">URL</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -385,6 +394,7 @@
|
||||
{{/if_eq}}
|
||||
</div>
|
||||
</td>
|
||||
<td data-type="hiddendata">{{site_link}}</td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
@@ -397,6 +407,7 @@
|
||||
<th data-type="hiddendata">Type string</th>
|
||||
<th>Language</th>
|
||||
<th></th>
|
||||
<th data-type="hiddendata">URL</th>
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
@@ -732,6 +743,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=2022011001"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -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:
|
||||
|
@@ -9,7 +9,6 @@ links:
|
||||
- https://aither.cc/
|
||||
|
||||
caps:
|
||||
# dont forget to update the case block in the search fields category
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Movie"}
|
||||
- {id: 9, cat: TV/Sport, desc: "Sport"}
|
||||
@@ -58,6 +57,16 @@ settings:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
@@ -73,19 +82,8 @@ search:
|
||||
selector: meta.total
|
||||
|
||||
fields:
|
||||
category:
|
||||
categorydesc:
|
||||
selector: category
|
||||
case:
|
||||
"Movie": 1
|
||||
"Sport": 9
|
||||
"TV": 2
|
||||
"Music": 3
|
||||
"Games": 4
|
||||
"Software & Apps": 10
|
||||
"Ebooks & Magazines": 11
|
||||
"Audiobooks": 14
|
||||
"Education": 15
|
||||
"XXX": 6
|
||||
title:
|
||||
selector: name
|
||||
details:
|
||||
|
@@ -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
|
186
src/Jackett.Common/Definitions/alleenretail.yml
Normal file
186
src/Jackett.Common/Definitions/alleenretail.yml
Normal file
@@ -0,0 +1,186 @@
|
||||
---
|
||||
id: alleenretail
|
||||
name: Alleen Retail
|
||||
description: "Alleen Retail is a DUTCH Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: nl-NL
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- http://www.alleenretail.org/ # does not support https ERR_CONNECTION_REFUSED
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 2, cat: Movies/DVD, desc: "Films DVD"}
|
||||
- {id: 17, cat: Movies, desc: "Films Promo"}
|
||||
- {id: 3, cat: Audio/Video, desc: "Muziek Video"}
|
||||
- {id: 4, cat: Audio/Video, desc: "Cabaret"}
|
||||
- {id: 18, cat: Movies, desc: "Films Kids"}
|
||||
- {id: 6, cat: TV, desc: "TV Series"}
|
||||
- {id: 19, cat: Other, desc: "Overigen"}
|
||||
- {id: 20, cat: TV/Documentary, desc: "Documentaire"}
|
||||
- {id: 9, cat: PC/Games, desc: "Games PC"}
|
||||
- {id: 10, cat: Books/Mags, desc: "Magazines"}
|
||||
- {id: 11, cat: Movies/SD, desc: "Films AVI/DivX"}
|
||||
- {id: 22, cat: Movies, desc: "Films Classics"}
|
||||
- {id: 8, cat: Audio, desc: "Muziek"}
|
||||
- {id: 23, cat: PC/Mac, desc: "Software Mac"}
|
||||
- {id: 1, cat: Books/Comics, desc: "Stripboeken"}
|
||||
- {id: 13, cat: PC/Mobile-Android, desc: "Android"}
|
||||
- {id: 14, cat: PC/Mobile-Other, desc: "Navigatie"}
|
||||
- {id: 7, cat: PC/0day, desc: "Software PC"}
|
||||
- {id: 12, cat: PC/Mobile-iOS, desc: "iOS"}
|
||||
- {id: 21, cat: Movies/HD, desc: "Films HD"}
|
||||
- {id: 5, cat: Audio/Audiobook, desc: "Luisterboeken"}
|
||||
- {id: 15, cat: XXX, desc: "18+"}
|
||||
- {id: 24, cat: Movies/UHD, desc: "Films Blu-ray/3D/4K"}
|
||||
- {id: 16, cat: Books/EBook, desc: "Ebooks"}
|
||||
|
||||
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: 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:
|
||||
# # /comment.php?action=add&tid=166386
|
||||
# path: comment.php
|
||||
# method: post
|
||||
# inputs:
|
||||
# action: add
|
||||
# tid: "{{ .DownloadUri.Query.id }}"
|
||||
# text: "{{ .Config.thankyou }}"
|
||||
# submit: Opslaan
|
||||
# selectors:
|
||||
# - selector: a[href^="download.php?id="]
|
||||
# attribute: href
|
||||
|
||||
search:
|
||||
paths:
|
||||
- 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
|
||||
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^="download.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 tr:nth-child(2) td:nth-child(1)
|
||||
date:
|
||||
selector: table tr:nth-child(2) td:nth-child(3)
|
||||
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(6) 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(6) font b:nth-child(2)
|
||||
leechers:
|
||||
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
|
||||
downloadvolumefactor:
|
||||
text: 0
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
minimumratio:
|
||||
# between 1.00 and 1.50 is required, and above 1.50 prohibited
|
||||
text: 1.25
|
||||
# engine n/a
|
@@ -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:
|
||||
|
@@ -9,20 +9,22 @@ links:
|
||||
- https://animeworld.cx/
|
||||
|
||||
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]
|
||||
@@ -60,6 +62,16 @@ settings:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
@@ -75,21 +87,8 @@ search:
|
||||
selector: meta.total
|
||||
|
||||
fields:
|
||||
category:
|
||||
categorydesc:
|
||||
selector: category
|
||||
case:
|
||||
"Anime Movie": 1
|
||||
"Anime Serie": 2
|
||||
"Anime Musik/OST": 3
|
||||
"Anime Spiele": 4
|
||||
"Hentai": 5
|
||||
"Spiele Linux": 6
|
||||
"Sonstiges": 7
|
||||
"Filme": 8
|
||||
"Serien": 9
|
||||
"Spiele": 10
|
||||
"Musik": 11
|
||||
"Mangas": 12
|
||||
title:
|
||||
selector: name
|
||||
details:
|
||||
|
@@ -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
|
@@ -126,6 +126,8 @@ search:
|
||||
|
||||
rows:
|
||||
selector: table.torrent tr.torrent
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
category:
|
||||
|
@@ -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:
|
||||
|
@@ -101,6 +101,8 @@ search:
|
||||
|
||||
rows:
|
||||
selector: table > tbody#highlighted > tr:has(a[href^="browse.php?cat="])
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
category:
|
||||
|
@@ -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:
|
||||
|
@@ -119,6 +119,8 @@ search:
|
||||
|
||||
rows:
|
||||
selector: table.table-bordered tr:has(a[href^="download.php?torrent="])
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
category:
|
||||
|
@@ -9,7 +9,6 @@ links:
|
||||
- https://blutopia.xyz/
|
||||
|
||||
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 Show"}
|
||||
@@ -50,14 +49,33 @@ settings:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
|
||||
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 }}"
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
attribute: attributes
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
name: "{{ .Keywords }}"
|
||||
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ 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 }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ else }}{{ end }}"
|
||||
sortField: "{{ .Config.sort }}"
|
||||
sortDirection: "{{ .Config.type }}"
|
||||
perPage: 100
|
||||
page: 1
|
||||
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
@@ -69,13 +87,8 @@ search:
|
||||
selector: meta.total
|
||||
|
||||
fields:
|
||||
category:
|
||||
categorydesc:
|
||||
selector: category
|
||||
case:
|
||||
Movie: 1
|
||||
TV Show: 2
|
||||
FANRES: 3
|
||||
Trailer: 5
|
||||
title:
|
||||
selector: name
|
||||
details:
|
||||
@@ -130,4 +143,4 @@ search:
|
||||
minimumseedtime:
|
||||
# 7 day (as seconds = 7 x 24 x 60 x 60)
|
||||
text: 604800
|
||||
# json UNIT3D 5.3.1b
|
||||
# json UNIT3D 6.0.0 beta
|
||||
|
@@ -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
|
@@ -9,13 +9,12 @@ links:
|
||||
- https://brsociety.club/
|
||||
|
||||
caps:
|
||||
# dont forget to update the case block in the search fields category
|
||||
categorymappings:
|
||||
- {id: 1, cat: TV, desc: "Cursos (courses)"}
|
||||
- {id: 1, cat: TV, desc: "Cursos"}
|
||||
- {id: 2, cat: Books/EBook, desc: "eBooks"}
|
||||
- {id: 5, cat: Books/Mags, desc: "Revistas (Magazines)"}
|
||||
- {id: 5, cat: Books/Mags, desc: "Revistas"}
|
||||
- {id: 3, cat: Audio/Audiobook, desc: "Audiobooks"}
|
||||
- {id: 4, cat: Other, desc: "Arquivos de Auxilio (Help Files)"}
|
||||
- {id: 4, cat: Other, desc: "Arquivos de Auxilio"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
@@ -51,6 +50,16 @@ settings:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
@@ -66,14 +75,8 @@ search:
|
||||
selector: meta.total
|
||||
|
||||
fields:
|
||||
category:
|
||||
categorydesc:
|
||||
selector: category
|
||||
case:
|
||||
"Cursos": 1
|
||||
"eBooks": 2
|
||||
"Revistas": 5
|
||||
"Audiobooks": 3
|
||||
"Arquivos de Auxilio": 4
|
||||
title:
|
||||
selector: name
|
||||
details:
|
||||
|
@@ -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
|
@@ -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)
|
||||
|
@@ -12,9 +12,8 @@ legacylinks:
|
||||
- https://datascene.net/
|
||||
|
||||
caps:
|
||||
# dont forget to update the case block in the search fields category
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Movies"}
|
||||
- {id: 1, cat: Movies, desc: "Movie"}
|
||||
- {id: 2, cat: TV, desc: "TV"}
|
||||
- {id: 3, cat: Audio, desc: "Music"}
|
||||
- {id: 4, cat: PC/Games, desc: "Game"}
|
||||
@@ -59,6 +58,16 @@ settings:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
@@ -74,17 +83,8 @@ search:
|
||||
selector: meta.total
|
||||
|
||||
fields:
|
||||
category:
|
||||
categorydesc:
|
||||
selector: category
|
||||
case:
|
||||
"Movie": 1
|
||||
"TV": 2
|
||||
"Music": 3
|
||||
"Game": 4
|
||||
"Application": 5
|
||||
"XXX": 6
|
||||
"Mobile": 7
|
||||
"E-Book": 8
|
||||
title:
|
||||
selector: name
|
||||
details:
|
||||
|
@@ -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)
|
@@ -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:
|
||||
|
@@ -10,7 +10,6 @@ links:
|
||||
- https://desitorrents.rocks/
|
||||
|
||||
caps:
|
||||
# dont forget to update the case block in the search fields category
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Movies"}
|
||||
- {id: 2, cat: TV, desc: "TV"}
|
||||
@@ -51,6 +50,16 @@ settings:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
@@ -70,12 +79,8 @@ search:
|
||||
selector: meta.total
|
||||
|
||||
fields:
|
||||
category:
|
||||
categorydesc:
|
||||
selector: category
|
||||
case:
|
||||
Movies: 1
|
||||
TV: 2
|
||||
Music: 3
|
||||
title:
|
||||
selector: name
|
||||
details:
|
||||
|
@@ -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)
|
@@ -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]
|
||||
|
@@ -15,8 +15,10 @@ caps:
|
||||
- {id: 64, cat: Books/EBook, desc: "Books"}
|
||||
- {id: 66, cat: Books, desc: "Business"}
|
||||
- {id: 68, cat: Books/Comics, desc: "Comics"}
|
||||
- {id: 80, cat: Books, desc: "Coooking"}
|
||||
- {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"}
|
||||
|
@@ -242,8 +242,8 @@ caps:
|
||||
- {id: 307, cat: Books/Other, desc: "VIP: Thriller"}
|
||||
- {id: 306, cat: Books/Other, desc: "VIP: Mystery"}
|
||||
- {id: 308, cat: Books/Other, desc: "VIP: Crime"}
|
||||
- {id: 309, cat: Books/Other, desc: "VIP: Fantasy "}
|
||||
- {id: 204, cat: Books/Other, desc: "VIP: Collections "}
|
||||
- {id: 309, cat: Books/Other, desc: "VIP: Fantasy"}
|
||||
- {id: 204, cat: Books/Other, desc: "VIP: Collections"}
|
||||
- {id: 205, cat: Books/Other, desc: "VIP: Audiobooks"}
|
||||
- {id: 206, cat: Books/Other, desc: "VIP: Comics"}
|
||||
- {id: 207, cat: Books/Other, desc: "VIP: Computers"}
|
||||
@@ -274,6 +274,10 @@ settings:
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: vip
|
||||
type: checkbox
|
||||
label: Include VIP results
|
||||
default: true
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
@@ -316,10 +320,9 @@ search:
|
||||
paths:
|
||||
- path: torrents-search.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
|
||||
search: "{{ if .Keywords }}\"{{ .Keywords }}\"{{ else }}{{ end }}"
|
||||
# 0 only active 1 incl dead 2 only dead
|
||||
incldead: 0
|
||||
incldead: 1
|
||||
# 0 all 1 not freeleech 2 only freeleech
|
||||
freeleech: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
|
||||
# 0 all 1 english 2 french 3 german 4 italian 5 japanese 6 spanish 7 russian 8 other
|
||||
@@ -328,7 +331,7 @@ search:
|
||||
order: "{{ .Config.type }}"
|
||||
|
||||
rows:
|
||||
selector: tr.t-row
|
||||
selector: "tr.t-row{{ if .Config.vip }}{{ else }}:not(:has(a[href^=\"torrents.php?cat=\"]):contains(\"VIP\")){{ end }}"
|
||||
|
||||
fields:
|
||||
category:
|
||||
|
@@ -155,6 +155,8 @@ search:
|
||||
|
||||
rows:
|
||||
selector: tr[id^="tor_"]:has(a[href^="./dl.php?id="])
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
title:
|
||||
|
@@ -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:
|
||||
|
@@ -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:
|
||||
|
@@ -78,6 +78,8 @@ download:
|
||||
text: "{{ .Config.thankyou }}"
|
||||
submit: Opslaan
|
||||
selectors:
|
||||
- selector: a[href^="downloadv1.php?id="]
|
||||
attribute: href
|
||||
- selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
|
||||
|
@@ -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:
|
||||
|
@@ -98,6 +98,8 @@ search:
|
||||
|
||||
rows:
|
||||
selector: table.main > tbody > tr:has(a[href^="/lataa.php/"])
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
category:
|
||||
|
@@ -18,10 +18,11 @@ caps:
|
||||
- {id: 20, cat: TV/SD, desc: "Lasten DVD (kids)"}
|
||||
- {id: 33, cat: TV/SD, desc: "Lasten XviD (kids)"}
|
||||
- {id: 11, cat: Movies/DVD, desc: "Leffat DVD (movies)"}
|
||||
- {id: 13, cat: Movies/SD, desc: "Leffat XviD (movies)"}
|
||||
- {id: 21, cat: Movies/HD, desc: "Leffat HD (movies)"}
|
||||
- {id: 32, cat: Movies/DVD, desc: "Custom DVD (movies)"}
|
||||
- {id: 13, cat: Movies/SD, desc: "Leffat XviD (movies)"}
|
||||
- {id: 21, cat: Movies/HD, desc: "Leffat HD (movies)"}
|
||||
- {id: 32, cat: Movies/DVD, desc: "Custom DVD (movies)"}
|
||||
- {id: 42, cat: Movies, desc: "FVC"}
|
||||
- {id: 48, cat: Movies/UHD, desc: "Leffat 4K (movies)"}
|
||||
- {id: 15, cat: Audio, desc: "Musiikki (music)"}
|
||||
- {id: 12, cat: Audio/Video, desc: "Musavideot (clips)"}
|
||||
- {id: 7, cat: PC/0day, desc: "Ohjelmat Windows (apps)"}
|
||||
|
@@ -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:
|
||||
|
124
src/Jackett.Common/Definitions/hawke-uno.yml
Normal file
124
src/Jackett.Common/Definitions/hawke-uno.yml
Normal file
@@ -0,0 +1,124 @@
|
||||
---
|
||||
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:
|
||||
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
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
|
||||
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:
|
||||
categorydesc:
|
||||
selector: category
|
||||
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
|
173
src/Jackett.Common/Definitions/hdolimpo-api.yml
Normal file
173
src/Jackett.Common/Definitions/hdolimpo-api.yml
Normal file
@@ -0,0 +1,173 @@
|
||||
---
|
||||
id: hdolimpo-api
|
||||
name: HD-Olimpo (API)
|
||||
description: "HD-Olimpo is a SPANISH site for HD content"
|
||||
language: es-ES
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://hd-olimpo.club/
|
||||
legacylinks:
|
||||
- https://hdolimpo.co/
|
||||
|
||||
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: TV/Documentary, desc: "Documentales"}
|
||||
|
||||
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 account <i>My configuration / Mi configuración => Secutiy / Seguridad</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
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
|
||||
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:
|
||||
categorydesc:
|
||||
selector: category
|
||||
title:
|
||||
selector: name
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["\\[", " "]
|
||||
- name: re_replace
|
||||
args: ["\\]", " "]
|
||||
- name: re_replace
|
||||
args: ["(?i)(full(bluray)?)", "BRDISK"] # FULL(BR/UHD) -> BRDISK
|
||||
- name: replace
|
||||
args: ["HDOlimpo", ""] # Delete HDOlimpo
|
||||
- name: replace
|
||||
args: ["HD-Olimpo", ""] # Delete HD-Olimpo
|
||||
- name: replace
|
||||
args: ["E-AC-3", "EAC3"]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)español[ -]", " SPANiSH "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)castellano[ -]", " SPANiSH "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)spa[ -]", " SPANiSH "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)esp[ -]", " SPANiSH "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)ingl[eé]s[ -]", " English "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)[ei]ng[ -]", " English "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)cat[ -]", " Catalan "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)vas[ -]", " Basque "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)fr[ae][ -]", " French "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)jap[ -]", " Japanese "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)ita[ -]", " Italian "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)rus[ -]", " Russian "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)ger[ -]", " German "]
|
||||
- name: re_replace
|
||||
args: ["(?i)(triaudio)", "MULTi/SPANiSH/English"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(dual)", " MULTi/SPANiSH "]
|
||||
- name: re_replace
|
||||
args: ["\\.+", "."] # More than 1 dot -> .
|
||||
- name: re_replace
|
||||
args: ["^\\.", ""] # Delete first dot
|
||||
- name: re_replace
|
||||
args: ["\\s+", " "] # More than 1 space to 1 space
|
||||
|
||||
details:
|
||||
selector: details_link
|
||||
download:
|
||||
selector: download_link
|
||||
poster:
|
||||
selector: poster
|
||||
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
|
||||
minimumseedtime:
|
||||
# 4 days (as seconds = 4 x 24 x 60 x 60)
|
||||
text: 345600
|
||||
# json UNIT3D ???
|
@@ -1,244 +0,0 @@
|
||||
---
|
||||
id: hdolimpo
|
||||
name: HD-Olimpo
|
||||
description: "HD-Olimpo is a SPANISH site for HD content"
|
||||
language: es-ES
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://hd-olimpo.club/
|
||||
legacylinks:
|
||||
- https://hdolimpo.co/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Movies"}
|
||||
- {id: 2, cat: TV, desc: "TV"}
|
||||
- {id: 3, cat: Audio, desc: "Music"}
|
||||
- {id: 4, cat: TV/Documentary, desc: "Documentaries"}
|
||||
|
||||
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/filter
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
|
||||
search: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
|
||||
description: ""
|
||||
keywords: ""
|
||||
uploader: ""
|
||||
imdb: "{{ .Query.IMDBIDShort }}"
|
||||
tvdb: "{{ .Query.TVDBID }}"
|
||||
tmdb: "{{ .Query.TMDBID }}"
|
||||
mal: ""
|
||||
igdb: ""
|
||||
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: ["\\[", " "]
|
||||
- name: re_replace
|
||||
args: ["\\]", " "]
|
||||
- name: re_replace
|
||||
args: ["(?i)(full(bluray)?)", "BRDISK"] # FULL(BR/UHD) -> BRDISK
|
||||
- name: replace
|
||||
args: ["HDOlimpo", ""] # Delete HDOlimpo
|
||||
- name: replace
|
||||
args: ["HD-Olimpo", ""] # Delete HD-Olimpo
|
||||
- name: replace
|
||||
args: ["E-AC-3", "EAC3"]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)español[ -]", " SPANiSH "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)castellano[ -]", " SPANiSH "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)spa[ -]", " SPANiSH "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)esp[ -]", " SPANiSH "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)ingl[eé]s[ -]", " English "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)[ei]ng[ -]", " English "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)cat[ -]", " Catalan "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)vas[ -]", " Basque "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)fr[ae][ -]", " French "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)jap[ -]", " Japanese "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)ita[ -]", " Italian "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)rus[ -]", " Russian "]
|
||||
- name: re_replace
|
||||
args: ["[ -](?i)ger[ -]", " German "]
|
||||
- name: re_replace
|
||||
args: ["(?i)(triaudio)", "MULTi/SPANiSH/English"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(dual)", " MULTi/SPANiSH "]
|
||||
- name: re_replace
|
||||
args: ["\\.+", "."] # More than 1 dot -> .
|
||||
- name: re_replace
|
||||
args: ["^\\.", ""] # Delete first dot
|
||||
- name: re_replace
|
||||
args: ["\\s+", " "] # More than 1 space to 1 space
|
||||
|
||||
download:
|
||||
selector: a[href*="/download/"]
|
||||
attribute: href
|
||||
details:
|
||||
selector: a.view-torrent
|
||||
attribute: href
|
||||
poster:
|
||||
selector: div.torrent-poster img
|
||||
attribute: src
|
||||
filters:
|
||||
- name: prepend
|
||||
args: "https://images.weserv.nl/?url=" # for display on dashboard
|
||||
- name: append
|
||||
args: "&w=180&h=270" # for display on dashboard
|
||||
- name: replace
|
||||
args: ["https://images.weserv.nl/?url=https://via.placeholder.com/600x900&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)
|
||||
imdbid:
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
attribute: href
|
||||
tmdbid:
|
||||
selector: a[href*="themoviedb.org/movie/"]
|
||||
attribute: href
|
||||
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*="fas fa-star text-gold"]: 0 # Freeleech
|
||||
i[class*="fal fa-star text-gold"]: 0.5 # 50% 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:
|
||||
# 4 days (as seconds = 4 x 24 x 60 x 60)
|
||||
text: 345600
|
||||
# UNIT3D 2.4.0
|
@@ -9,6 +9,8 @@ links:
|
||||
- https://pt.upxin.net/
|
||||
legacylinks:
|
||||
- http://pt.upxin.net/
|
||||
certificates:
|
||||
- d52ca3e97d730541d8f81452185e4481225f3a2d # expired 06/Jan/2022
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -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="])
|
||||
|
@@ -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
|
||||
|
@@ -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:
|
||||
|
@@ -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
|
||||
|
@@ -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
|
@@ -30,12 +30,13 @@ caps:
|
||||
music-search: [q, artist]
|
||||
|
||||
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: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
@@ -62,23 +63,9 @@ settings:
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
path: login.php
|
||||
method: form
|
||||
form: form[action="takelogin.php"]
|
||||
captcha:
|
||||
type: image
|
||||
selector: img[alt="CAPTCHA"]
|
||||
input: imagestring
|
||||
method: cookie
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
logout: ""
|
||||
securelogin: ""
|
||||
ssl: yes
|
||||
trackerssl: yes
|
||||
error:
|
||||
- selector: td.embedded:has(h2:contains("失敗"))
|
||||
- selector: td.embedded:has(h2:contains("failed!"))
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="logout.php"]
|
||||
|
@@ -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:
|
||||
|
@@ -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/
|
||||
|
@@ -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:
|
||||
|
@@ -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:
|
||||
|
@@ -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
|
@@ -11,9 +11,8 @@ legacylinks:
|
||||
- https://legacyhd.org/
|
||||
|
||||
caps:
|
||||
# dont forget to update the case block in the search fields category
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Movies"}
|
||||
- {id: 1, cat: Movies, desc: "Movie"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
@@ -51,6 +50,16 @@ settings:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
@@ -66,10 +75,8 @@ search:
|
||||
selector: meta.total
|
||||
|
||||
fields:
|
||||
category:
|
||||
categorydesc:
|
||||
selector: category
|
||||
case:
|
||||
Movie: 1
|
||||
title:
|
||||
selector: name
|
||||
details:
|
||||
|
@@ -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
|
@@ -150,6 +150,8 @@ search:
|
||||
|
||||
rows:
|
||||
selector: tr[id^="tor_"]
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
category:
|
||||
|
@@ -9,7 +9,6 @@ links:
|
||||
- https://www.rintor.net/
|
||||
|
||||
caps:
|
||||
# dont forget to update the search fields category case block
|
||||
categorymappings:
|
||||
- {id: 27, cat: XXX, desc: "Фильмы 2160 4K | Movies 2160p 4K"}
|
||||
- {id: 20, cat: XXX, desc: "Сайтрипы 2160 4K | Porn Video 2160p 4K"}
|
||||
@@ -20,8 +19,8 @@ caps:
|
||||
- {id: 24, cat: XXX, desc: "Инцест (Инсценировка) | Incest (Simulation)"}
|
||||
- {id: 22, cat: XXX, desc: "Лесбиянки | Lesbians"}
|
||||
- {id: 26, cat: XXX, desc: "Порно Кастинг | Porno Casting"}
|
||||
- {id: 29, cat: XXX, desc: "Японское Порно | Japanese Porn (Uncen)"}
|
||||
- {id: 23, cat: XXX, desc: "Ретро Порно, Классика | Classic Porn, Retro"}
|
||||
- {id: 29, cat: XXX, desc: "Японское (Без Цензуры) | Japanese Porn (Uncen)"}
|
||||
- {id: 23, cat: XXX, desc: "Ретро Порно, Классика | Retro Porn, Classic"}
|
||||
- {id: 21, cat: XXX, desc: "Женское Доминирование, Страпон | Femdom, StrapOn"}
|
||||
- {id: 17, cat: XXX, desc: "БДСМ, Фистинг, Дилдо | BDSM, Fisting, Dildo"}
|
||||
- {id: 19, cat: XXX, desc: "Беременные | Pregnant"}
|
||||
@@ -60,30 +59,8 @@ search:
|
||||
selector: div.entry:has(div.entry__title)
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: div.entry__info
|
||||
case:
|
||||
"a:last-of-type:contains(\"Movies 2160p\")": 27
|
||||
"a:last-of-type:contains(\"Video 2160p\")": 20
|
||||
"a:last-of-type:contains(\"Movies HD\")": 1
|
||||
"a:last-of-type:contains(\"SiteRips\")": 9
|
||||
"a:last-of-type:contains(\"WEBRip\")": 12
|
||||
"a:last-of-type:contains(\"Amateur\")": 10
|
||||
"a:last-of-type:contains(\"Incest\")": 24
|
||||
"a:last-of-type:contains(\"Lesbians\")": 22
|
||||
"a:last-of-type:contains(\"Casting\")": 26
|
||||
"a:last-of-type:contains(\"Japanese\")": 29
|
||||
"a:last-of-type:contains(\"Classic\")": 23
|
||||
"a:last-of-type:contains(\"Femdom\")": 21
|
||||
"a:last-of-type:contains(\"BDSM\")": 17
|
||||
"a:last-of-type:contains(\"Pregnant\")": 19
|
||||
"a:last-of-type:contains(\"Bukkake\")": 28
|
||||
"a:last-of-type:contains(\"Peeing\")": 25
|
||||
"a:last-of-type:contains(\"Shemale\")": 16
|
||||
"a:last-of-type:contains(\"Picture\")": 11
|
||||
"a:last-of-type:contains(\"Cartoons\")": 14
|
||||
"a:last-of-type:contains(\"Games\")": 13
|
||||
"a:last-of-type:contains(\"Gay\")": 15
|
||||
categorydesc:
|
||||
selector: div.entry__info > span > a
|
||||
title:
|
||||
selector: div.entry__title > h3 > a
|
||||
details:
|
||||
|
@@ -12,7 +12,6 @@ legacylinks:
|
||||
- http://www.shareisland.org/
|
||||
|
||||
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: "Serie TV"}
|
||||
@@ -59,6 +58,16 @@ settings:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
@@ -82,17 +91,8 @@ search:
|
||||
selector: meta.total
|
||||
|
||||
fields:
|
||||
category:
|
||||
categorydesc:
|
||||
selector: category
|
||||
case:
|
||||
"Movie": 1
|
||||
"Serie TV": 2
|
||||
"Ebook": 15
|
||||
"Riviste e Giornali": 17
|
||||
"XXX": 19
|
||||
"Music": 3
|
||||
"Games": 7
|
||||
"Software": 23
|
||||
title:
|
||||
selector: name
|
||||
filters:
|
||||
|
@@ -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
|
60
src/Jackett.Common/Definitions/showrss.yml
Normal file
60
src/Jackett.Common/Definitions/showrss.yml
Normal file
@@ -0,0 +1,60 @@
|
||||
---
|
||||
id: showrss
|
||||
name: showRSS
|
||||
description: "showRSS is a service that allows you to keep track of your favorite TV shows"
|
||||
language: en-US
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://showrss.info/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: TV/SD}
|
||||
- {id: 2, cat: TV/HD}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
|
||||
settings: []
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: /other/all.rss
|
||||
response:
|
||||
type: xml
|
||||
attribute: attributes
|
||||
|
||||
rows:
|
||||
selector: rss > channel > item
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: raw_title
|
||||
filters:
|
||||
case:
|
||||
":contains(\"720p\")": 2
|
||||
":contains(\"1080p\")": 2
|
||||
"*": 1
|
||||
title:
|
||||
selector: raw_title
|
||||
details:
|
||||
text: "{{ .Config.sitelink }}"
|
||||
date:
|
||||
selector: pubDate
|
||||
download:
|
||||
selector: link
|
||||
size:
|
||||
text: "512 MB"
|
||||
seeders:
|
||||
text: 1
|
||||
leechers:
|
||||
text: 1
|
||||
downloadvolumefactor:
|
||||
text: 0
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
# engine n/a
|
@@ -9,7 +9,6 @@ links:
|
||||
- https://skipthecommericals.xyz/
|
||||
|
||||
caps:
|
||||
# dont forget to update the case block in the search fields category
|
||||
categorymappings:
|
||||
- {id: 2, cat: TV, desc: "TV Show"}
|
||||
|
||||
@@ -25,7 +24,7 @@ settings:
|
||||
- name: info_key
|
||||
type: info
|
||||
label: About your API key
|
||||
default: "Find or Generate a new API Token by accessing your <a href=\"https://datascene.xyz/\" target =_blank>DataScene</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
|
||||
default: "Find or Generate a new API Token by accessing your <a href=\"https://skipthecommericals.xyz/\" target =_blank>SkipTheCommercials</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
@@ -47,6 +46,16 @@ settings:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
@@ -66,10 +75,8 @@ search:
|
||||
selector: meta.total
|
||||
|
||||
fields:
|
||||
category:
|
||||
categorydesc:
|
||||
selector: category
|
||||
case:
|
||||
"TV Show": 2
|
||||
title:
|
||||
selector: name
|
||||
details:
|
||||
|
@@ -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
|
@@ -119,6 +119,8 @@ search:
|
||||
|
||||
rows:
|
||||
selector: tr.t-row
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
category:
|
||||
|
@@ -9,7 +9,6 @@ links:
|
||||
- https://swarmazon.club/
|
||||
|
||||
caps:
|
||||
# dont forget to update the search fields category case block
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Movies"}
|
||||
- {id: 2, cat: TV, desc: "Television"}
|
||||
@@ -56,7 +55,7 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: "{{ if .Keywords }}en/search/search.php?category=all&query={{ .Keywords }}&limit=50{{ else }}index.php?date_range=14{{ end }}"
|
||||
- path: "{{ if .Keywords }}en/search/search.php?category=all&query={{ .Keywords }}{{ else }}latest.php?date_range=14{{ end }}"
|
||||
|
||||
rows:
|
||||
selector: table.table-striped > tbody > tr
|
||||
@@ -64,19 +63,14 @@ search:
|
||||
- name: andmatch
|
||||
|
||||
fields: # some users (rank specific?) have an extra column (td:nth-child(4)) with bookmark features
|
||||
category:
|
||||
selector: td.Name
|
||||
case:
|
||||
"small:contains(\"in Movies\")": 1
|
||||
"small:contains(\"in Television\")": 2
|
||||
"small:contains(\"in Video Courses\")": 3
|
||||
"small:contains(\"in Music\")": 4
|
||||
"small:contains(\"in Games\")": 5
|
||||
"small:contains(\"in Software\")": 6
|
||||
"small:contains(\"in Anime\")": 7
|
||||
"small:contains(\"in E-Books\")": 8
|
||||
"small:contains(\"in Audio Books\")": 9
|
||||
"small:contains(\"in Comics\")": 10
|
||||
categorydesc:
|
||||
selector: td.Name small
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(.+?)in\\s(.+?)", "$2"]
|
||||
- name: replace
|
||||
args: ["Freeleech", ""]
|
||||
- name: trim
|
||||
title:
|
||||
selector: a[href*="/view/torrent.php?hash="]
|
||||
details:
|
||||
|
@@ -13,7 +13,6 @@ legacylinks:
|
||||
- https://telly.to/
|
||||
|
||||
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"}
|
||||
@@ -59,6 +58,16 @@ settings:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
@@ -74,17 +83,8 @@ search:
|
||||
selector: meta.total
|
||||
|
||||
fields:
|
||||
category:
|
||||
categorydesc:
|
||||
selector: category
|
||||
case:
|
||||
"Movie": 1
|
||||
"TV": 2
|
||||
"Music": 3
|
||||
"Web Originals": 4
|
||||
"Games": 5
|
||||
"Application": 6
|
||||
"Mobile App": 7
|
||||
"Movies": 8
|
||||
title:
|
||||
selector: name
|
||||
details:
|
||||
|
@@ -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
|
@@ -111,6 +111,8 @@ search:
|
||||
|
||||
rows:
|
||||
selector: table.table-bordered tr:has(a[href^="download.php?torrent="])
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
category:
|
||||
|
@@ -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
|
||||
|
@@ -53,6 +53,8 @@ search:
|
||||
|
||||
rows:
|
||||
selector: div.webResult:has(a.magneto[data-src])
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
category:
|
||||
|
@@ -35,10 +35,10 @@ caps:
|
||||
- {id: 169, cat: TV/Other, desc: "TV/Boxset"}
|
||||
- {id: 191, cat: TV, desc: "TV/BluTv"}
|
||||
- {id: 192, cat: TV, desc: "TV/BluTv Series"}
|
||||
- {id: 193, cat: Movies, desc: "TV/BluTv Film"}
|
||||
- {id: 193, cat: Movies, desc: "Movies/BluTv Film"}
|
||||
- {id: 188, cat: TV, desc: "TV/Netflix"}
|
||||
- {id: 189, cat: TV, desc: "TV/Netflix Series"}
|
||||
- {id: 190, cat: Movies, desc: "TV/Netflix Film"}
|
||||
- {id: 190, cat: Movies, desc: "Movies/Netflix Film"}
|
||||
- {id: 195, cat: TV, desc: "TV/Exxen"}
|
||||
- {id: 171, cat: Audio, desc: "Music"}
|
||||
- {id: 172, cat: Audio, desc: "Music/Turkish"}
|
||||
@@ -53,6 +53,7 @@ caps:
|
||||
- {id: 179, cat: PC, desc: "OS"}
|
||||
- {id: 180, cat: PC/Games, desc: "PC/Games"}
|
||||
- {id: 181, cat: Console, desc: "Playstation"}
|
||||
- {id: 198, cat: Movies, desc: "Movies/Amazon Prime"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
@@ -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:
|
||||
|
@@ -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:
|
||||
|
@@ -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:
|
||||
|
@@ -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:
|
||||
@@ -62,7 +59,7 @@ settings: []
|
||||
search:
|
||||
paths:
|
||||
# https://www.torrentfunk.com/all/torrents/morty-402-castellano.html
|
||||
- path: "all/torrents/{{ .Keywords }}.html"
|
||||
- path: "all/torrents/{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}.html"
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["[\\s]+", "-"]
|
||||
|
@@ -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:
|
||||
|
@@ -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 }}"
|
||||
|
@@ -28,6 +28,8 @@ search:
|
||||
|
||||
rows:
|
||||
selector: div.moviefilm
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
category:
|
||||
|
@@ -7,10 +7,8 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentqq123.com/
|
||||
- https://torrentqq127.com/
|
||||
legacylinks:
|
||||
- https://torrentqq103.com/
|
||||
- https://torrentqq104.com/
|
||||
- https://torrentqq105.com/
|
||||
- https://torrentqq106.com/
|
||||
- https://torrentqq107.com/
|
||||
@@ -28,6 +26,9 @@ legacylinks:
|
||||
- https://torrentqq120.com/
|
||||
- https://torrentqq121.com/
|
||||
- https://torrentqq122.com/
|
||||
- https://torrentqq123.com/
|
||||
- https://torrentqq125.com/
|
||||
- https://torrentqq126.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -9,7 +9,6 @@ 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"}
|
||||
@@ -22,12 +21,14 @@ caps:
|
||||
- {id: 8, cat: TV, desc: "Packs"}
|
||||
- {id: 3206, cat: TV/Foreign, desc: "TV/Foreign"}
|
||||
- {id: 3207, cat: Movies/Foreign, desc: "Movies/Foreign"}
|
||||
- {id: 3208, cat: Books/EBook, desc: "E-Books"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, imdbid, tvdbid]
|
||||
movie-search: [q, imdbid, tmdbid]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: apikey
|
||||
@@ -58,6 +59,16 @@ settings:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
@@ -73,20 +84,8 @@ search:
|
||||
selector: meta.total
|
||||
|
||||
fields:
|
||||
category:
|
||||
categorydesc:
|
||||
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:
|
||||
|
@@ -7,7 +7,7 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentsir45.com/
|
||||
- https://torrentsir47.com/
|
||||
legacylinks:
|
||||
- https://torrentsir31.com/
|
||||
- https://torrentsir33.com/
|
||||
@@ -22,6 +22,8 @@ legacylinks:
|
||||
- https://torrentsir42.com/
|
||||
- https://torrentsir43.com/
|
||||
- https://torrentsir44.com/
|
||||
- https://torrentsir45.com/
|
||||
- https://torrentsir46.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -7,10 +7,9 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentview49.com/
|
||||
- https://torrentview50.com/
|
||||
legacylinks:
|
||||
- https://torrentview.net/
|
||||
- https://torrentview27.com/
|
||||
- https://torrentview28.com/
|
||||
- https://torrentview29.com/
|
||||
- https://torrentview30.com/
|
||||
@@ -30,6 +29,7 @@ legacylinks:
|
||||
- https://torrentview45.com/
|
||||
- https://torrentview46.com/
|
||||
- https://torrentview47.com/
|
||||
- https://torrentview49.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -7,7 +7,7 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentwiz36.com/
|
||||
- https://torrentwiz37.com/
|
||||
legacylinks:
|
||||
- https://torrentwiz22.me/
|
||||
- https://torrentwiz23.me/
|
||||
@@ -23,6 +23,7 @@ legacylinks:
|
||||
- https://torrentwiz33.com/
|
||||
- https://torrentwiz34.com/
|
||||
- https://torrentwiz35.com/
|
||||
- https://torrentwiz36.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
175
src/Jackett.Common/Definitions/trackeros-api.yml
Normal file
175
src/Jackett.Common/Definitions/trackeros-api.yml
Normal file
@@ -0,0 +1,175 @@
|
||||
---
|
||||
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:
|
||||
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
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
|
||||
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:
|
||||
categorydesc:
|
||||
selector: category
|
||||
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
|
@@ -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
|
125
src/Jackett.Common/Definitions/uhd-heaven.yml
Normal file
125
src/Jackett.Common/Definitions/uhd-heaven.yml
Normal file
@@ -0,0 +1,125 @@
|
||||
---
|
||||
id: uhd-heaven
|
||||
name: UHD-HEAVEN
|
||||
description: "UHD-HEAVEN is a Private Torrent Tracker for UHD MOVIES / TV"
|
||||
language: en-US
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://uhd-heaven.xyz/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Movies"}
|
||||
- {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://uhd-heaven.xyz/\" target =_blank>UHD-HEAVEN</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
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
|
||||
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:
|
||||
categorydesc:
|
||||
selector: category
|
||||
title:
|
||||
selector: name
|
||||
details:
|
||||
selector: details_link
|
||||
download:
|
||||
selector: download_link
|
||||
poster:
|
||||
selector: poster
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/90x135", ""]
|
||||
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.4 but torrents must be seeded for 3 days regardless of ratio
|
||||
# minimumratio:
|
||||
# text: 0.4
|
||||
minimumseedtime:
|
||||
# 7 days (as seconds = 7 x 24 x 60 x 60)
|
||||
text: 604800
|
||||
# json UNIT3D 5.3.0
|
@@ -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:
|
||||
|
@@ -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:
|
||||
|
@@ -6,7 +6,7 @@ language: fr-FR
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.zetorrents.tv/
|
||||
- https://www.zetorrents.bz/
|
||||
legacylinks:
|
||||
- https://www.zetorrents.co/
|
||||
- https://www.zetorrents.io/
|
||||
@@ -17,6 +17,7 @@ legacylinks:
|
||||
- https://www.zetorrents.org/
|
||||
- https://wvw.zetorrents.org/
|
||||
- https://www.zetorrents.cc/
|
||||
- https://www.zetorrents.tv/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
|
@@ -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:
|
||||
|
@@ -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:
|
||||
|
@@ -132,8 +132,10 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
foreach (var searchString in searchStrings)
|
||||
{
|
||||
var queryCollection = new NameValueCollection();
|
||||
queryCollection.Add("action", "basic");
|
||||
var queryCollection = new NameValueCollection
|
||||
{
|
||||
{ "action", "basic" }
|
||||
};
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(searchString))
|
||||
{
|
||||
@@ -169,10 +171,11 @@ namespace Jackett.Common.Indexers
|
||||
var rows = dom.QuerySelectorAll("#torrent_table > tbody > tr.torrent");
|
||||
foreach (var row in rows)
|
||||
{
|
||||
var release = new ReleaseInfo();
|
||||
|
||||
release.MinimumRatio = 1;
|
||||
release.MinimumSeedTime = 172800; // 48 hours
|
||||
var release = new ReleaseInfo
|
||||
{
|
||||
MinimumRatio = 1,
|
||||
MinimumSeedTime = 172800 // 48 hours
|
||||
};
|
||||
|
||||
var catStr = row.Children[0].FirstElementChild.GetAttribute("href").Split(new[] { '[', ']' })[1];
|
||||
release.Category = MapTrackerCatToNewznab(catStr);
|
||||
|
@@ -95,28 +95,29 @@ namespace Jackett.Common.Indexers
|
||||
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)
|
||||
|
@@ -173,9 +173,10 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
foreach (var name in titles)
|
||||
{
|
||||
var release = new ReleaseInfo();
|
||||
|
||||
release.Title = (name + releaseInfo).Trim();
|
||||
var release = new ReleaseInfo
|
||||
{
|
||||
Title = (name + releaseInfo).Trim()
|
||||
};
|
||||
// Ensure the season is defined as this tracker only deals with full seasons
|
||||
if (release.Title.IndexOf("Season") == -1 && AppendSeason)
|
||||
{
|
||||
|
@@ -558,6 +558,19 @@ namespace Jackett.Common.Indexers
|
||||
return response.ContentBytes;
|
||||
}
|
||||
|
||||
public virtual async Task<WebResult> DownloadImage(Uri link)
|
||||
{
|
||||
var uncleanLink = UncleanLink(link);
|
||||
var requestLink = uncleanLink.ToString();
|
||||
var referer = SiteLink;
|
||||
|
||||
var response = await RequestWithCookiesAsync(requestLink, null, RequestType.GET, referer);
|
||||
if (response.IsRedirect)
|
||||
await FollowIfRedirect(response);
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
protected async Task<WebResult> RequestWithCookiesAndRetryAsync(
|
||||
string url, string cookieOverride = null, RequestType method = RequestType.GET,
|
||||
string referer = null, IEnumerable<KeyValuePair<string, string>> data = null,
|
||||
|
@@ -130,13 +130,15 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
var searchString = query.GetQueryString();
|
||||
var searchUrl = BrowseUrl;
|
||||
var queryCollection = new NameValueCollection();
|
||||
queryCollection.Add("showsearch", "0");
|
||||
queryCollection.Add("incldead", "1");
|
||||
queryCollection.Add("blah", "0");
|
||||
queryCollection.Add("team", "0");
|
||||
queryCollection.Add("orderby", "added");
|
||||
queryCollection.Add("sort", "desc");
|
||||
var queryCollection = new NameValueCollection
|
||||
{
|
||||
{ "showsearch", "0" },
|
||||
{ "incldead", "1" },
|
||||
{ "blah", "0" },
|
||||
{ "team", "0" },
|
||||
{ "orderby", "added" },
|
||||
{ "sort", "desc" }
|
||||
};
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(searchString))
|
||||
queryCollection.Add("search", searchString);
|
||||
@@ -156,11 +158,13 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
foreach (var row in rows)
|
||||
{
|
||||
var release = new ReleaseInfo();
|
||||
release.MinimumRatio = 0.7;
|
||||
release.MinimumSeedTime = 172800; // 48 hours
|
||||
release.DownloadVolumeFactor = 1;
|
||||
release.UploadVolumeFactor = 1;
|
||||
var release = new ReleaseInfo
|
||||
{
|
||||
MinimumRatio = 0.7,
|
||||
MinimumSeedTime = 172800, // 48 hours
|
||||
DownloadVolumeFactor = 1,
|
||||
UploadVolumeFactor = 1
|
||||
};
|
||||
|
||||
var flagImgs = row.QuerySelectorAll("table tbody tr:nth-of-type(1) td > img");
|
||||
var flags = new List<string>();
|
||||
|
@@ -10,6 +10,7 @@ using System.Threading.Tasks;
|
||||
using AngleSharp.Dom;
|
||||
using AngleSharp.Html.Dom;
|
||||
using AngleSharp.Html.Parser;
|
||||
using AngleSharp.Xml.Parser;
|
||||
using Jackett.Common.Helpers;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Models.IndexerConfig;
|
||||
@@ -1258,19 +1259,19 @@ namespace Jackett.Common.Indexers
|
||||
variables[".Query.Q"] = query.SearchTerm;
|
||||
variables[".Query.Series"] = null;
|
||||
variables[".Query.Ep"] = query.Episode;
|
||||
variables[".Query.Season"] = query.Season;
|
||||
variables[".Query.Season"] = query.Season > 0 ? query.Season.ToString() : null;
|
||||
variables[".Query.Movie"] = null;
|
||||
variables[".Query.Year"] = query.Year.ToString();
|
||||
variables[".Query.Limit"] = query.Limit.ToString();
|
||||
variables[".Query.Offset"] = query.Offset.ToString();
|
||||
variables[".Query.Year"] = query.Year?.ToString() ?? null;
|
||||
variables[".Query.Limit"] = query.Limit.ToString() ?? null;
|
||||
variables[".Query.Offset"] = query.Offset.ToString() ?? null;
|
||||
variables[".Query.Extended"] = query.Extended.ToString();
|
||||
variables[".Query.Categories"] = query.Categories;
|
||||
variables[".Query.APIKey"] = query.ApiKey;
|
||||
variables[".Query.TVDBID"] = query.TvdbID.ToString();
|
||||
variables[".Query.TVRageID"] = query.RageID;
|
||||
variables[".Query.TVDBID"] = query.TvdbID?.ToString() ?? null;
|
||||
variables[".Query.TVRageID"] = query.RageID?.ToString() ?? null;
|
||||
variables[".Query.IMDBID"] = query.ImdbID;
|
||||
variables[".Query.IMDBIDShort"] = query.ImdbIDShort;
|
||||
variables[".Query.TMDBID"] = query.TmdbID.ToString();
|
||||
variables[".Query.TMDBID"] = query.TmdbID?.ToString() ?? null;
|
||||
variables[".Query.TVMazeID"] = null;
|
||||
variables[".Query.TraktID"] = null;
|
||||
variables[".Query.Album"] = query.Album;
|
||||
@@ -1463,39 +1464,61 @@ namespace Jackett.Common.Indexers
|
||||
{
|
||||
try
|
||||
{
|
||||
var SearchResultParser = new HtmlParser();
|
||||
var SearchResultDocument = SearchResultParser.ParseDocument(results);
|
||||
IHtmlCollection<IElement> rowsDom;
|
||||
|
||||
// check if we need to login again
|
||||
var loginNeeded = CheckIfLoginIsNeeded(response, SearchResultDocument);
|
||||
if (loginNeeded)
|
||||
if (SearchPath.Response != null && SearchPath.Response.Type.Equals("xml"))
|
||||
{
|
||||
logger.Info(string.Format("CardigannIndexer ({0}): Relogin required", Id));
|
||||
var LoginResult = await DoLogin();
|
||||
if (!LoginResult)
|
||||
throw new Exception(string.Format("Relogin failed"));
|
||||
await TestLogin();
|
||||
response = await RequestWithCookiesAsync(searchUrl, method: method, data: queryCollection);
|
||||
if (response.IsRedirect && SearchPath.Followredirect)
|
||||
await FollowIfRedirect(response);
|
||||
var SearchResultParser = new XmlParser();
|
||||
var SearchResultDocument = SearchResultParser.ParseDocument(results);
|
||||
|
||||
if (Search.Preprocessingfilters != null)
|
||||
{
|
||||
results = applyFilters(results, Search.Preprocessingfilters, variables);
|
||||
SearchResultDocument = SearchResultParser.ParseDocument(results);
|
||||
logger.Debug(string.Format("CardigannIndexer ({0}): result after preprocessingfilters: {1}", Definition.Id, results));
|
||||
}
|
||||
|
||||
var rowsSelector = applyGoTemplateText(Search.Rows.Selector, variables);
|
||||
rowsDom = SearchResultDocument.QuerySelectorAll(rowsSelector);
|
||||
}
|
||||
else
|
||||
{
|
||||
var SearchResultParser = new HtmlParser();
|
||||
var SearchResultDocument = SearchResultParser.ParseDocument(results);
|
||||
|
||||
// check if we need to login again
|
||||
var loginNeeded = CheckIfLoginIsNeeded(response, SearchResultDocument);
|
||||
if (loginNeeded)
|
||||
{
|
||||
logger.Info(string.Format("CardigannIndexer ({0}): Relogin required", Id));
|
||||
var LoginResult = await DoLogin();
|
||||
if (!LoginResult)
|
||||
throw new Exception(string.Format("Relogin failed"));
|
||||
await TestLogin();
|
||||
response = await RequestWithCookiesAsync(searchUrl, method: method, data: queryCollection);
|
||||
if (response.IsRedirect && SearchPath.Followredirect)
|
||||
await FollowIfRedirect(response);
|
||||
|
||||
results = response.ContentString;
|
||||
SearchResultDocument = SearchResultParser.ParseDocument(results);
|
||||
}
|
||||
|
||||
checkForError(response, Definition.Search.Error);
|
||||
|
||||
if (Search.Preprocessingfilters != null)
|
||||
{
|
||||
results = applyFilters(results, Search.Preprocessingfilters, variables);
|
||||
SearchResultDocument = SearchResultParser.ParseDocument(results);
|
||||
logger.Debug(string.Format("CardigannIndexer ({0}): result after preprocessingfilters: {1}", Id, results));
|
||||
}
|
||||
|
||||
var rowsSelector = applyGoTemplateText(Search.Rows.Selector, variables);
|
||||
rowsDom = SearchResultDocument.QuerySelectorAll(rowsSelector);
|
||||
|
||||
results = response.ContentString;
|
||||
SearchResultDocument = SearchResultParser.ParseDocument(results);
|
||||
}
|
||||
|
||||
checkForError(response, Definition.Search.Error);
|
||||
|
||||
if (Search.Preprocessingfilters != null)
|
||||
{
|
||||
results = applyFilters(results, Search.Preprocessingfilters, variables);
|
||||
SearchResultDocument = SearchResultParser.ParseDocument(results);
|
||||
logger.Debug(string.Format("CardigannIndexer ({0}): result after preprocessingfilters: {1}", Id, results));
|
||||
}
|
||||
|
||||
var rowsSelector = applyGoTemplateText(Search.Rows.Selector, variables);
|
||||
var RowsDom = SearchResultDocument.QuerySelectorAll(rowsSelector);
|
||||
var Rows = new List<IElement>();
|
||||
foreach (var RowDom in RowsDom)
|
||||
foreach (var RowDom in rowsDom)
|
||||
{
|
||||
Rows.Add(RowDom);
|
||||
}
|
||||
@@ -1914,6 +1937,17 @@ namespace Jackett.Common.Indexers
|
||||
}
|
||||
value = release.Category.ToString();
|
||||
break;
|
||||
case "categorydesc":
|
||||
var catsDesc = MapTrackerCatDescToNewznab(value);
|
||||
if (catsDesc.Any())
|
||||
{
|
||||
if (release.Category == null || FieldModifiers.Contains("noappend"))
|
||||
release.Category = catsDesc;
|
||||
else
|
||||
release.Category = release.Category.Union(catsDesc).ToList();
|
||||
}
|
||||
value = release.Category.ToString();
|
||||
break;
|
||||
case "size":
|
||||
release.Size = ReleaseInfo.GetBytes(value);
|
||||
value = release.Size.ToString();
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user