mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-12 15:04:13 +02:00
Compare commits
40 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4d2ac5b6a9 | ||
![]() |
208b0bdb5b | ||
![]() |
84ca9a06d8 | ||
![]() |
aa16e7424c | ||
![]() |
92f582e910 | ||
![]() |
e3880b9143 | ||
![]() |
6aee6d732a | ||
![]() |
da80bde7d8 | ||
![]() |
5a388b59d0 | ||
![]() |
d7404e9cd4 | ||
![]() |
373b15cb8e | ||
![]() |
19de5f46b0 | ||
![]() |
e74e7b3cf7 | ||
![]() |
a3c361fac1 | ||
![]() |
03776c5fe1 | ||
![]() |
43f1fabae0 | ||
![]() |
3a0c6a75e1 | ||
![]() |
7a327230f1 | ||
![]() |
7e8fdfa2b1 | ||
![]() |
35e1218861 | ||
![]() |
af54a3f9d0 | ||
![]() |
04cc9939a6 | ||
![]() |
5640a86838 | ||
![]() |
bcc00f91bb | ||
![]() |
6905cdc103 | ||
![]() |
f1415f32c6 | ||
![]() |
4e55187bdb | ||
![]() |
967ff6db99 | ||
![]() |
23cff411ed | ||
![]() |
f42b76fb36 | ||
![]() |
28c5c427e8 | ||
![]() |
68205b13ca | ||
![]() |
dcec23434f | ||
![]() |
09dc556140 | ||
![]() |
0d69d7ba1b | ||
![]() |
cc8a980a70 | ||
![]() |
e9f7e4d13f | ||
![]() |
c6180f6860 | ||
![]() |
8c5fb64aec | ||
![]() |
a293346ce8 |
7
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
7
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -2,6 +2,7 @@ name: Bug report
|
||||
description: Create a report of your issue
|
||||
body:
|
||||
- type: checkboxes
|
||||
id: troubleshooting
|
||||
attributes:
|
||||
label: Have you checked our Troubleshooting page for your issue?
|
||||
description: Please read the <a href="https://github.com/Jackett/Jackett/wiki/Troubleshooting">Troubleshooting</a> page for steps to resolve common issues.
|
||||
@@ -9,6 +10,7 @@ body:
|
||||
- label: I have checked the Troubleshooting page
|
||||
required: true
|
||||
- type: checkboxes
|
||||
id: already-an-issue
|
||||
attributes:
|
||||
label: Is there already an issue for your problem?
|
||||
description: Please make sure you are not creating an already submitted <a href="https://github.com/Jackett/Jackett/issues">Issue</a>. Check closed issues as well, because your issue may have already been fixed.
|
||||
@@ -16,6 +18,7 @@ body:
|
||||
- label: I have checked older issues, open and closed
|
||||
required: true
|
||||
- type: checkboxes
|
||||
id: contributing-guidelines
|
||||
attributes:
|
||||
label: Have you read our Contributing Guidelines?
|
||||
description: Please read our <a href="https://github.com/Jackett/Jackett/blob/master/CONTRIBUTING.md">Contributing Guidelines</a> before submitting your issue to ensure a prompt response to your bug.
|
||||
@@ -23,6 +26,7 @@ body:
|
||||
- label: I have read the Contributing Guidelines
|
||||
required: true
|
||||
- type: textarea
|
||||
id: environment
|
||||
attributes:
|
||||
label: Environment
|
||||
description: Please provide the details of the system Jackett is running on. The best way to do this is to restart Jackett, access the dashboard, view the log, and copy/paste replacing the example below with the last 10 Info lines at the bottom of the log.
|
||||
@@ -40,12 +44,14 @@ body:
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Description
|
||||
description: List steps to reproduce the error and details on what happens and what you expected to happen.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: error-logs
|
||||
attributes:
|
||||
label: Logged Error Messages
|
||||
description: |
|
||||
@@ -55,6 +61,7 @@ body:
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: screenshots
|
||||
attributes:
|
||||
label: Screenshots
|
||||
description: Place any screenshots of the issue here if needed
|
||||
|
@@ -195,6 +195,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Mazepa
|
||||
* Metal Tracker
|
||||
* Moviesite
|
||||
* MovieWorld (Flicker)
|
||||
* MVGroup Forum
|
||||
* MVGroup Main
|
||||
* NetHD (VietTorrent)
|
||||
@@ -339,6 +340,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* FANO.IN [![(invite needed)][inviteneeded]](#)
|
||||
* Fantastic Heaven
|
||||
* Fantastiko
|
||||
* Fappaizuri
|
||||
* Femdomcult
|
||||
* FileList (FL)
|
||||
* FinElite (FE)
|
||||
@@ -408,6 +410,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Keep Friends [![(invite needed)][inviteneeded]](#)
|
||||
* Korsar
|
||||
* KrazyZone
|
||||
* Kufei (库非)
|
||||
* Kufirc
|
||||
* LastFiles
|
||||
* Le Saloon
|
||||
@@ -544,9 +547,9 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* The Vault [![(invite needed)][inviteneeded]](#)
|
||||
* The-Crazy-Ones
|
||||
* The-New-Fun
|
||||
* TheDarkCommunity (TDC)
|
||||
* TheEmpire (TE)
|
||||
* TheLeachZone (TLZ)
|
||||
* TheRebels
|
||||
* TheScenePlace (TSP)
|
||||
* Thor's Land
|
||||
* TJUPT
|
||||
@@ -607,7 +610,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* ZonaQ
|
||||
</details>
|
||||
|
||||
Trackers marked with [![(invite needed)][inviteneeded]](#) have no active maintainer and may be missing features or be broken. If you have an invite for them please send it to garfieldsixtynine -at- gmail.com to get them fixed/improved.
|
||||
Trackers marked with [![(invite needed)][inviteneeded]](#) have no active maintainer and may be missing features or be broken. If you have an invite for them please send it to garfieldsixtynine -at- gmail.com or jacketttest -at- gmail.com to get them fixed/improved.
|
||||
|
||||
### Aggregate indexers
|
||||
|
||||
|
13
src/Directory.Build.props
Normal file
13
src/Directory.Build.props
Normal file
@@ -0,0 +1,13 @@
|
||||
<Project>
|
||||
<!-- Common to all Jackett Projects -->
|
||||
<PropertyGroup>
|
||||
<!-- Specifies whether it's one of our own libraries -->
|
||||
<JackettProject>false</JackettProject>
|
||||
<JackettProject Condition="$(MSBuildProjectName.StartsWith('Jackett'))">true</JackettProject>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- Set the Product and Version info for our own projects -->
|
||||
<PropertyGroup Condition="'$(JackettProject)'=='true'">
|
||||
<PathMap>$(MSBuildProjectDirectory)=./$(MSBuildProjectName)/</PathMap>
|
||||
</PropertyGroup>
|
||||
</Project>
|
@@ -13,12 +13,11 @@ links:
|
||||
- https://x1337x.ws/
|
||||
- https://x1337x.eu/
|
||||
- https://x1337x.se/
|
||||
- https://1337x.unblockit.asia/
|
||||
- https://1337x.unblockit.mov/
|
||||
- https://1337x.unblockninja.com/
|
||||
legacylinks:
|
||||
- https://1337x.is/
|
||||
- https://1337x.nocensor.work/
|
||||
- https://1337x.unblockit.cam/
|
||||
- https://1337x.nocensor.biz/
|
||||
- https://1337x.gd/
|
||||
- https://1337x.unblockit.day/
|
||||
@@ -41,6 +40,7 @@ legacylinks:
|
||||
- https://1337x.mrunblock.guru/
|
||||
- https://1337x.mrunblock.life/ # cloudflare 403
|
||||
- https://1337x.unblockit.click/
|
||||
- https://1337x.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -139,20 +139,22 @@ search:
|
||||
files:
|
||||
selector: td:nth-last-child(9)
|
||||
date_day:
|
||||
# Yesterday<br/>6:00 AM
|
||||
selector: td:nth-last-child(7):contains("day")
|
||||
# auto adjusted by site account profile
|
||||
# Yesterday, 6:00 AM
|
||||
selector: td:nth-last-child(7) > span[title*="day"]
|
||||
attribute: title
|
||||
optional: true
|
||||
filters:
|
||||
- name: fuzzytime
|
||||
date_year:
|
||||
# Aug 6 2021<br/>7:25 PM
|
||||
selector: td:nth-last-child(7):not(:contains("day"))
|
||||
# auto adjusted by site account profile
|
||||
# Aug 6 2021, 7:25 PM
|
||||
selector: td:nth-last-child(7) > span[title]:not([title*="day"])
|
||||
attribute: title
|
||||
optional: true
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "MMM d yyyy h:mm tt"
|
||||
args: "MMM d yyyy, h:mm tt"
|
||||
date:
|
||||
text: "{{ if or .Result.date_day .Result.date_year }}{{ or .Result.date_day .Result.date_year }}{{ else }}now{{ end }}"
|
||||
size:
|
||||
|
@@ -60,8 +60,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -69,15 +67,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -62,8 +62,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -71,15 +69,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -65,8 +65,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -74,15 +72,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -124,6 +124,7 @@ login:
|
||||
args: ["');", ""]
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
download:
|
||||
before:
|
||||
|
@@ -8,7 +8,6 @@ encoding: UTF-8
|
||||
requestDelay: 2
|
||||
links:
|
||||
- https://bitsearch.to/
|
||||
- https://bitsearch.mrunblock.life/
|
||||
- https://bitsearch.nocensor.click/
|
||||
legacylinks:
|
||||
- https://bitsearch.nocensor.biz/
|
||||
@@ -16,6 +15,7 @@ legacylinks:
|
||||
- https://bitsearch.nocensor.world/
|
||||
- https://bitsearch.nocensor.lol/
|
||||
- https://bitsearch.mrunblock.guru/
|
||||
- https://bitsearch.mrunblock.life/ # This web property is not accessible via this address.
|
||||
|
||||
caps:
|
||||
categories:
|
||||
@@ -93,7 +93,7 @@ search:
|
||||
category:
|
||||
selector: a.category
|
||||
title:
|
||||
selector: h5
|
||||
selector: h5 a
|
||||
details:
|
||||
selector: h5 a
|
||||
attribute: href
|
||||
|
@@ -54,8 +54,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -63,15 +61,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -55,8 +55,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -64,14 +62,16 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
|
||||
|
@@ -68,8 +68,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -81,8 +79,10 @@ search:
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
imdb: "{{ .Query.IMDBIDShort }}"
|
||||
|
@@ -61,8 +61,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -70,15 +68,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -10,12 +10,11 @@ links:
|
||||
- https://www.demonoid.is/
|
||||
- https://www.dnoid.to/
|
||||
- https://www.dnoid.pw/
|
||||
- https://demonoid.unblockit.asia/
|
||||
- https://demonoid.unblockit.mov/
|
||||
- https://demonoid.torrentbay.net/
|
||||
- https://demonoid.mrunblock.life/
|
||||
- https://demonoid.nocensor.click/
|
||||
legacylinks:
|
||||
- https://demonoid.unblockit.cam/
|
||||
- https://demonoid.nocensor.biz/
|
||||
- https://demonoid.unblockit.day/
|
||||
- https://demonoid.unblockit.llc/
|
||||
@@ -42,6 +41,7 @@ legacylinks:
|
||||
- https://demonoid.mrunblock.guru/
|
||||
- https://demonoid.torrentbay.to/
|
||||
- https://demonoid.unblockit.click/
|
||||
- https://demonoid.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -54,8 +54,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -63,15 +61,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -6,6 +6,8 @@ language: pl-PL
|
||||
type: semi-private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://electro-torrent.pl/
|
||||
legacylinks:
|
||||
- http://electro-torrent.pl/
|
||||
|
||||
caps:
|
||||
@@ -68,7 +70,7 @@ settings:
|
||||
MULTi POLISH: MULTi POLISH
|
||||
|
||||
login:
|
||||
path: logowanie
|
||||
path: login.php
|
||||
method: form
|
||||
form: form[action="takelogin.php"]
|
||||
captcha:
|
||||
|
@@ -7,12 +7,11 @@ type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://extratorrent.st/
|
||||
- https://extratorrent.unblockit.asia/
|
||||
- https://extratorrent.unblockit.mov/
|
||||
- https://extratorrent.mrunblock.life/
|
||||
- https://extratorrent.nocensor.click/
|
||||
legacylinks:
|
||||
- https://extratorrent.nocensor.work/
|
||||
- https://extratorrent.unblockit.cam/
|
||||
- https://extratorrent.nocensor.biz/
|
||||
- https://extratorrent.unblockit.day/
|
||||
- https://extratorrent.unblockit.llc/
|
||||
@@ -33,6 +32,7 @@ legacylinks:
|
||||
- https://extratorrent.unblockit.boo/
|
||||
- https://extratorrent.mrunblock.guru/
|
||||
- https://extratorrent.unblockit.click/
|
||||
- https://extratorrent.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -13,7 +13,7 @@ links:
|
||||
- https://eztv.yt/
|
||||
- https://eztv1.xyz/
|
||||
- https://eztv.unblockninja.com/
|
||||
- https://eztv.unblockit.asia/
|
||||
- https://eztv.unblockit.mov/
|
||||
- https://eztv.mrunblock.life/
|
||||
- https://eztv.nocensor.click/
|
||||
legacylinks:
|
||||
@@ -41,6 +41,7 @@ legacylinks:
|
||||
- https://eztv.unblockit.boo/
|
||||
- https://eztv.mrunblock.guru/
|
||||
- https://eztv.unblockit.click/
|
||||
- https://eztv.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
|
139
src/Jackett.Common/Definitions/fappaizuri.yml
Normal file
139
src/Jackett.Common/Definitions/fappaizuri.yml
Normal file
@@ -0,0 +1,139 @@
|
||||
---
|
||||
id: fappaizuri
|
||||
name: Fappaizuri
|
||||
description: "Fappaizuri is a Private Torrent Tracker for HENTAI / JAV"
|
||||
language: en-US
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://fappaizuri.me/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 8, cat: TV/Anime, desc: "Hentai"}
|
||||
- {id: 7, cat: Console, desc: "H-games"}
|
||||
- {id: 5, cat: XXX, desc: "JAV"}
|
||||
- {id: 6, cat: Books, desc: "Manga"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
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: lang
|
||||
type: select
|
||||
label: Language
|
||||
default: 0
|
||||
options:
|
||||
0: All
|
||||
4: Japanese
|
||||
5: Chinese
|
||||
6: Malaysia
|
||||
7: North Korea
|
||||
8: English
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: id
|
||||
options:
|
||||
id: created
|
||||
seeders: seeders
|
||||
size: size
|
||||
name: title
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: desc
|
||||
options:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
method: post
|
||||
path: account-login.php
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: b:contains("The specified username or password was incorrect.")
|
||||
test:
|
||||
path: account.php
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://fappaizuri.me/torrents-search.php?search=&c8=1&c6=1&incldead=1&freeleech=0&lang=0
|
||||
- path: torrents-search.php
|
||||
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}&c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
# 0 active, 1 incldead, 2 onlydead
|
||||
incldead: 1
|
||||
# 0 all, 1 notfree, 2 onlyfree
|
||||
freeleech: "{{ if .Config.freeleech }}{{ .Config.freeleech }}2{{ else }}0{{ end }}"
|
||||
lang: "{{ .Config.lang }}"
|
||||
sort: "{{ .Config.sort }}"
|
||||
order: "{{ .Config.type }}"
|
||||
|
||||
rows:
|
||||
selector: tr.t-row:has(a[href^="download.php?id="])
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="search-torrents.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title:
|
||||
selector: a[href^="torrents-details.php?id="] > b
|
||||
details:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
poster:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: regexp
|
||||
args: src=(.+?)>
|
||||
_language:
|
||||
selector: img[src*="images/languages/"]
|
||||
attribute: alt
|
||||
description:
|
||||
selector: font[color="red"]
|
||||
filters:
|
||||
- name: append
|
||||
args: " - {{ .Result._language }}"
|
||||
size:
|
||||
selector: td:nth-child(4)
|
||||
seeders:
|
||||
selector: td:nth-child(5)
|
||||
leechers:
|
||||
selector: td:nth-child(6)
|
||||
date:
|
||||
text: now
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="images/free.png"]: 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img[src="images/doubleupload.gif"]: 2
|
||||
"*": 1
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
# evolution
|
@@ -84,8 +84,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -93,15 +91,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -10,14 +10,13 @@ links:
|
||||
- https://glodls.to/
|
||||
- https://gtdb.cc/
|
||||
- https://www.gtdb.to/
|
||||
- https://glotorrents.unblockit.asia/
|
||||
- https://glotorrents.unblockit.mov/
|
||||
- https://glotorrents.mrunblock.life/
|
||||
- https://glodls.unblockninja.com/
|
||||
- https://glotorrents.nocensor.click/
|
||||
legacylinks:
|
||||
- https://glodls.rocks/
|
||||
- https://gtdb.to/
|
||||
- https://glotorrents.unblockit.cam/
|
||||
- https://glotorrents.nocensor.biz/
|
||||
- https://glotorrents.unblockit.day/
|
||||
- https://glotorrents.unblockit.llc/
|
||||
@@ -38,6 +37,7 @@ legacylinks:
|
||||
- https://glotorrents.unblockit.boo/
|
||||
- https://glotorrents.mrunblock.guru/
|
||||
- https://glotorrents.unblockit.click/
|
||||
- https://glotorrents.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -10,10 +10,13 @@ links:
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 11, cat: XXX, desc: "Asian"}
|
||||
- {id: 3, cat: XXX, desc: "Gay"}
|
||||
- {id: 4, cat: XXX, desc: "Interracial"}
|
||||
- {id: 5, cat: XXX, desc: "Lesbian"}
|
||||
- {id: 6, cat: XXX, desc: "Onlyfans"}
|
||||
- {id: 9, cat: XXX, desc: "Packs"}
|
||||
- {id: 10, cat: XXX, desc: "Pics"}
|
||||
- {id: 1, cat: XXX, desc: "Pron"}
|
||||
- {id: 8, cat: XXX, desc: "Retro"}
|
||||
- {id: 7, cat: XXX, desc: "VR"}
|
||||
|
@@ -50,8 +50,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -59,14 +57,16 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
imdbId: "{{ .Query.IMDBIDShort }}"
|
||||
|
@@ -53,8 +53,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -62,15 +60,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -56,8 +56,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -65,15 +63,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: api/torrents/filter
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -59,8 +59,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -68,15 +66,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -61,8 +61,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -70,15 +68,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
199
src/Jackett.Common/Definitions/kufei.yml
Normal file
199
src/Jackett.Common/Definitions/kufei.yml
Normal file
@@ -0,0 +1,199 @@
|
||||
---
|
||||
id: kufei
|
||||
name: Kufei
|
||||
description: "Kufei (库非) is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: zh-CN
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://kufei.org/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 410, cat: Console, desc: "Games/游戏"}
|
||||
- {id: 411, cat: Books, desc: "E-Books/电子书"}
|
||||
- {id: 408, cat: Audio, desc: "Music/音乐"}
|
||||
- {id: 412, cat: PC, desc: "Software/软件"}
|
||||
- {id: 415, cat: TV, desc: "Drama/戏剧"}
|
||||
- {id: 416, cat: Audio/Audiobook, desc: "Audio Books/有声读物"}
|
||||
- {id: 409, cat: Other, desc: "Others/其他"}
|
||||
- {id: 412, cat: Other, desc: "Education/教育"}
|
||||
- {id: 414, cat: Audio/Video, desc: "Concert/演唱会"}
|
||||
- {id: 407, cat: TV/Sport, desc: "Sports/体育"}
|
||||
- {id: 406, cat: Audio/Video, desc: "Music Videos/音乐、视频"}
|
||||
- {id: 403, cat: TV, desc: "TV Shows/综艺"}
|
||||
- {id: 402, cat: TV, desc: "TV Series/电视剧"}
|
||||
- {id: 405, cat: TV/Anime, desc: "Animations/动画、动漫"}
|
||||
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
|
||||
- {id: 401, cat: Movies, desc: "Movies/电影"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, imdbid, doubanid]
|
||||
movie-search: [q, imdbid, doubanid]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: 2facode
|
||||
type: text
|
||||
label: 2FA code
|
||||
- name: info_2fa
|
||||
type: info
|
||||
label: "About 2FA code"
|
||||
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> on the Kufei Web Site. Otherwise just leave it empty."
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: 4
|
||||
options:
|
||||
4: created
|
||||
7: seeders
|
||||
5: size
|
||||
1: title
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: desc
|
||||
options:
|
||||
desc: desc
|
||||
asc: asc
|
||||
- name: info_tpp
|
||||
type: info
|
||||
label: Results Per Page
|
||||
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
|
||||
|
||||
login:
|
||||
path: login.php
|
||||
method: form
|
||||
form: form[action="takelogin.php"]
|
||||
captcha:
|
||||
type: image
|
||||
selector: img[alt="CAPTCHA"]
|
||||
input: imagestring
|
||||
inputs:
|
||||
secret: ""
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
two_step_code: "{{ .Config.2facode }}"
|
||||
logout: ""
|
||||
securelogin: ""
|
||||
ssl: yes
|
||||
trackerssl: yes
|
||||
error:
|
||||
- selector: td.embedded:has(h2:contains("失败"))
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: torrents.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
|
||||
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}"
|
||||
# 0 incldead, 1 active, 2 dead
|
||||
incldead: 0
|
||||
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
|
||||
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
|
||||
# 0 title, 1 descr, 3 uploader, 4 imdburl
|
||||
search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
|
||||
# 0 AND, 2 exact
|
||||
search_mode: 0
|
||||
sort: "{{ .Config.sort }}"
|
||||
type: "{{ .Config.type }}"
|
||||
notnewword: 1
|
||||
|
||||
rows:
|
||||
selector: table.torrents > tbody > tr:has(table.torrentname)
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title_default:
|
||||
selector: a[href^="details.php?id="]
|
||||
title:
|
||||
selector: a[title][href^="details.php?id="]
|
||||
attribute: title
|
||||
optional: true
|
||||
default: "{{ .Result.title_default }}"
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
poster:
|
||||
selector: img[data-src]
|
||||
attribute: data-src
|
||||
imdbid:
|
||||
# site currently only has a badge and rating, the id is not present. just in case a future update.
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
attribute: href
|
||||
doubanid:
|
||||
# site currently only has a badge and rating, the id is not present. just in case a future update.
|
||||
selector: a[href*="movie.douban.com/subject/"]
|
||||
attribute: href
|
||||
date_elapsed:
|
||||
# time type: time elapsed (default)
|
||||
selector: td.rowfollow:nth-child(4) > span[title]
|
||||
attribute: title
|
||||
optional: true
|
||||
filters:
|
||||
- name: append
|
||||
args: " +08:00" # CST
|
||||
- name: dateparse
|
||||
args: "yyyy-MM-dd HH:mm:ss zzz"
|
||||
date_added:
|
||||
# time added
|
||||
selector: td.rowfollow:nth-child(4):not(:has(span))
|
||||
optional: true
|
||||
filters:
|
||||
- name: append
|
||||
args: " +08:00" # CST
|
||||
- name: dateparse
|
||||
args: "yyyy-MM-ddHH:mm:ss zzz"
|
||||
date:
|
||||
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
|
||||
size:
|
||||
selector: td.rowfollow:nth-child(5)
|
||||
seeders:
|
||||
selector: td.rowfollow:nth-child(6)
|
||||
leechers:
|
||||
selector: td.rowfollow:nth-child(7)
|
||||
grabs:
|
||||
selector: td.rowfollow:nth-child(8)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img.pro_free: 0
|
||||
img.pro_free2up: 0
|
||||
img.pro_50pctdown: 0.5
|
||||
img.pro_50pctdown2up: 0.5
|
||||
img.pro_30pctdown: 0.3
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img.pro_50pctdown2up: 2
|
||||
img.pro_free2up: 2
|
||||
img.pro_2up: 2
|
||||
"*": 1
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
description:
|
||||
selector: td:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.8.4 2023-06-13
|
@@ -65,8 +65,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -74,15 +72,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -6,8 +6,9 @@ language: fr-FR
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://lesaloonv2-0.net/
|
||||
- https://lesaloonv2-0.xyz/
|
||||
legacylinks:
|
||||
- https://lesaloonv2-0.net/
|
||||
- http://lesaloonv2-0.net/ # site forces https
|
||||
|
||||
caps:
|
||||
@@ -121,7 +122,7 @@ settings:
|
||||
default: false
|
||||
|
||||
login:
|
||||
# https://lesaloonv2-0.net/yupy_login.php
|
||||
# https://lesaloonv2-0.xyz/yupy_login.php
|
||||
path: yupy_login.php
|
||||
method: form
|
||||
form: form[action^="login"]
|
||||
@@ -137,7 +138,7 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# http://lesaloonv2-0.net/index.php?page=torrents&search=supernatural+s13e20&parentcategory=0&category=0&genre=0&options=0&active=0
|
||||
# http://lesaloonv2-0.xyz/index.php?page=torrents&search=supernatural+s13e20&parentcategory=0&category=0&genre=0&options=0&active=0
|
||||
- path: index.php
|
||||
inputs:
|
||||
page: torrents
|
||||
|
@@ -9,7 +9,7 @@ followredirect: true
|
||||
# changes to this indexer should also be made to limetorrentsclone
|
||||
links:
|
||||
- https://www.limetorrents.lol/
|
||||
- https://limetorrents.unblockit.asia/
|
||||
- https://limetorrents.unblockit.mov/
|
||||
- https://limetorrents.unblockninja.com/
|
||||
- https://limetorrents.mrunblock.life/
|
||||
- https://limetorrents.nocensor.click/
|
||||
@@ -38,6 +38,7 @@ legacylinks:
|
||||
- https://limetorrents.unblockit.boo/
|
||||
- https://limetorrents.mrunblock.guru/
|
||||
- https://limetorrents.unblockit.click/
|
||||
- https://limetorrents.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -55,8 +55,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -64,15 +62,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -59,8 +59,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -68,15 +66,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -58,8 +58,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -67,15 +65,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
181
src/Jackett.Common/Definitions/movieworld.yml
Normal file
181
src/Jackett.Common/Definitions/movieworld.yml
Normal file
@@ -0,0 +1,181 @@
|
||||
---
|
||||
id: movieworld
|
||||
name: MovieWorld
|
||||
description: "MovieWorld (Flicker) is a Semi-Private Torrent Tracker for MOVIES / TV / 3X"
|
||||
language: en-US
|
||||
type: semi-private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://movieworld.pics/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies/SD, desc: "Movie/Xvid"}
|
||||
- {id: 14, cat: Movies/WEB-DL, desc: "Movie/WeBRip"}
|
||||
- {id: 2, cat: Movies/3D, desc: "Movie/3D"}
|
||||
- {id: 3, cat: Movies/SD, desc: "Movie/480p"}
|
||||
- {id: 5, cat: Movies/UHD, desc: "Movie/4k"}
|
||||
- {id: 6, cat: Movies/BluRay, desc: "Movie/BD-R"}
|
||||
- {id: 4, cat: Movies/BluRay, desc: "Movie/BD-Rip"}
|
||||
- {id: 7, cat: Movies/BluRay, desc: "Movie/HD/Bluray"}
|
||||
- {id: 8, cat: Movies, desc: "Movie/Kids"}
|
||||
- {id: 9, cat: Movies/HD, desc: "Movie/MP4"}
|
||||
- {id: 12, cat: Movies/Foreign, desc: "Movie/Non-English"}
|
||||
- {id: 15, cat: Movies, desc: "Movie/Packs"}
|
||||
- {id: 16, cat: Movies/HD, desc: "Movie/x265"}
|
||||
- {id: 17, cat: XXX, desc: "Movie/XXX/Packs"}
|
||||
- {id: 18, cat: Movies, desc: "Movie/Freeleech"}
|
||||
- {id: 19, cat: Movies/DVD, desc: "Movie/DVD-R"}
|
||||
- {id: 20, cat: Movies/SD, desc: "Movie/Cam"}
|
||||
- {id: 21, cat: XXX, desc: "Movie/XXX"}
|
||||
- {id: 23, cat: Movies/DVD, desc: "Movie/DvdRip"}
|
||||
- {id: 25, cat: Audio/Video, desc: "Music/Misc"}
|
||||
- {id: 28, cat: TV, desc: "Tv Packs"}
|
||||
- {id: 29, cat: TV/SD, desc: "Tv Episodes SD"}
|
||||
- {id: 30, cat: TV/HD, desc: "Tv Episodes HD"}
|
||||
- {id: 26, cat: TV/Sport, desc: "Tv Sport SD/HD"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
music-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Filter freeleech only
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: 3
|
||||
options:
|
||||
3: created
|
||||
5: seeders
|
||||
4: size
|
||||
2: title
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: 2
|
||||
options:
|
||||
2: desc
|
||||
1: asc
|
||||
- name: info
|
||||
type: info
|
||||
label: Results Per Page
|
||||
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
|
||||
|
||||
login:
|
||||
path: index.php?page=login
|
||||
method: post
|
||||
inputs:
|
||||
uid: "{{ .Config.username }}"
|
||||
pwd: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: tr td span[style="color:#FF0000;"]
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://movieworld.pics/index.php?page=torrents&search=&category=0&active=0
|
||||
- path: index.php
|
||||
inputs:
|
||||
page: torrents
|
||||
search: "{{ .Keywords }}"
|
||||
category: "{{ range .Categories }}{{.}};{{end}}"
|
||||
# 0 filename, 1 file&descr, 2 descr, 3 uploaders, 18 genre, 4 imdb, 8-17 upload multiplier 1x-10x
|
||||
options: 0
|
||||
# 0 all, 1 active only, 2 dead only
|
||||
active: 0
|
||||
order: "{{ .Config.sort }}"
|
||||
by: "{{ .Config.type }}"
|
||||
# does not support imdbid search and does not return imdb link in results, does not support Genre search or return them in results.
|
||||
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["\\.", " "]
|
||||
|
||||
rows:
|
||||
selector: "table.lista > tbody > tr:has(a[href^=\"download.php?id=\"]){{ if .Config.freeleech }}:has(img[src=\"images/freeleech.gif\"]){{ else }}{{ end }}"
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="index.php?page=torrents&category="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: category
|
||||
title_torrent:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: f
|
||||
- name: htmldecode
|
||||
- name: re_replace
|
||||
args: ["(?i)\\.torrent$", ""]
|
||||
title_text:
|
||||
selector: a[href^="index.php?page=torrent-details&id="]
|
||||
title:
|
||||
text: "{{ if .Result.title_torrent }}{{ .Result.title_torrent }}{{ else }}{{ .Result.title_text }}{{ end }}"
|
||||
poster:
|
||||
selector: a[href^="index.php?page=torrent-details&id="]
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "src=(.*?) "
|
||||
- name: replace
|
||||
args: ["torrentimg/nocover.jpg", ""]
|
||||
details:
|
||||
selector: a[href^="index.php?page=torrent-details&id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
_uploader:
|
||||
selector: a[href^="index.php?page=userdetails"]
|
||||
optional: true
|
||||
date:
|
||||
selector: td:has(a[href^="download.php?id="]) ~ td ~ td
|
||||
# auto adjusted by site account profile
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "dd/MM/yyyy"
|
||||
seeders:
|
||||
selector: td:has(a[href^="download.php?id="]) ~ td ~ td ~ td
|
||||
leechers:
|
||||
selector: td:has(a[href^="download.php?id="]) ~ td ~ td ~ td ~ td
|
||||
grabs:
|
||||
selector: td:has(a[href^="download.php?id="]) ~ td ~ td ~ td ~ td ~ td
|
||||
size:
|
||||
selector: "td:has(a[href^=\"download.php?id=\"]) ~ td ~ td ~ td ~ td ~ td ~ td{{ if .Result._uploader }} ~ td{{ else }}{{ end }}"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="images/freeleech.gif"]: 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img[src="images/2x.gif"]: 2
|
||||
img[src="images/3x.gif"]: 3
|
||||
img[src="images/4x.gif"]: 4
|
||||
img[src="images/5x.gif"]: 5
|
||||
img[src="images/6x.gif"]: 6
|
||||
img[src="images/7x.gif"]: 7
|
||||
img[src="images/8x.gif"]: 8
|
||||
img[src="images/9x.gif"]: 9
|
||||
img[src="images/10x.gif"]: 10
|
||||
"*": 1
|
||||
minimumseedtime:
|
||||
# 3 days (as seconds = 3 x 24 x 60 x 60)
|
||||
text: 259200
|
||||
# xbtitFM v4.1.26
|
@@ -60,8 +60,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -69,15 +67,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -59,8 +59,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -68,15 +66,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -83,8 +83,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -92,15 +90,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -69,8 +69,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -78,15 +76,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -57,8 +57,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -66,15 +64,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -53,8 +53,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -62,15 +60,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -61,8 +61,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -70,15 +68,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -49,8 +49,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -58,15 +56,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -49,8 +49,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -58,15 +56,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -61,8 +61,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -70,15 +68,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -83,8 +83,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -92,15 +90,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -1,22 +1,33 @@
|
||||
---
|
||||
id: thedarkcommunity
|
||||
name: TheDarkCommunity (API)
|
||||
description: "TheDarkCommunity (TDC) is a Private Torrent Tracker for MOVIES / TV"
|
||||
language: en-US
|
||||
id: therebels-api
|
||||
name: TheRebels (API)
|
||||
description: "TheRebels is a BRAZILIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: pt-BR
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://thedarkcommunity.cc/
|
||||
- https://therebels.tv/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Movies"}
|
||||
- {id: 2, cat: TV, desc: "TV"}
|
||||
- {id: 10, cat: TV/Anime, desc: "Animes"}
|
||||
- {id: 5, cat: PC, desc: "Aplicativos"}
|
||||
- {id: 12, cat: Audio/Audiobook, desc: "Audiobooks"}
|
||||
- {id: 7, cat: XXX, desc: "Conteúdo Adulto"}
|
||||
- {id: 9, cat: Other, desc: "Cursos"}
|
||||
- {id: 8, cat: Books/EBook, desc: "E-Books"}
|
||||
- {id: 1, cat: Movies, desc: "Filmes"}
|
||||
- {id: 4, cat: Console, desc: "Jogos"}
|
||||
- {id: 3, cat: Audio, desc: "Músicas"}
|
||||
- {id: 11, cat: Books/Mags, desc: "Revistas"}
|
||||
- {id: 2, cat: TV, desc: "Series"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
|
||||
movie-search: [q, imdbid, tmdbid]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: apikey
|
||||
@@ -25,7 +36,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://thedarkcommunity.cc/\" target=\"_blank\">TheDarkCommunity</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://therebels.tv/\" target=\"_blank\">TheRebels</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
@@ -50,8 +61,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -59,15 +68,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
@@ -155,7 +166,10 @@ search:
|
||||
case:
|
||||
0: 1 # normal
|
||||
1: 2 # double
|
||||
# global MR is 1.0 but torrents must be seeded for 2 days regardless of ratio
|
||||
# minimumratio:
|
||||
# text: 1.0
|
||||
minimumseedtime:
|
||||
# 7 day (as seconds = 7 x 24 x 60 x 60)
|
||||
text: 604800
|
||||
# 2 days (as seconds = 2 x 24 x 60 x 60)
|
||||
text: 172800
|
||||
# json UNIT3D 6.5.0
|
@@ -63,8 +63,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -72,15 +70,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -10,12 +10,11 @@ requestDelay: 2
|
||||
links:
|
||||
- https://www.torlock2.com/
|
||||
- https://www.torlock.com/
|
||||
- https://torlock.unblockit.asia/
|
||||
- https://torlock.unblockit.mov/
|
||||
- https://torlock.mrunblock.life/
|
||||
- https://torlock.nocensor.click/
|
||||
legacylinks:
|
||||
- https://torlock.com/
|
||||
- https://torlock.unblockit.cam/
|
||||
- https://torlock.nocensor.biz/
|
||||
- https://torlock.unblockit.day/
|
||||
- https://torlock.unblockit.llc/
|
||||
@@ -36,6 +35,7 @@ legacylinks:
|
||||
- https://torlock.unblockit.boo/
|
||||
- https://torlock.mrunblock.guru/
|
||||
- https://torlock.unblockit.click/
|
||||
- https://torlock.unblockit.asia/
|
||||
|
||||
caps:
|
||||
# dont forget to update the search fields category case block
|
||||
|
@@ -8,13 +8,12 @@ encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://www.torrentdownload.info/
|
||||
- https://torrentdownload.unblockit.asia/
|
||||
- https://torrentdownload.unblockit.mov/
|
||||
- https://torrentdownload.mrunblock.life/
|
||||
- https://torrentdownload.nocensor.click/
|
||||
legacylinks:
|
||||
- https://torrentdownload.nocensor.space/
|
||||
- https://torrentdownload.nocensor.work/
|
||||
- https://torrentdownload.unblockit.cam/
|
||||
- https://torrentdownload.nocensor.biz/
|
||||
- https://torrentdownload.unblockit.day/
|
||||
- https://torrentdownload.unblockit.llc/
|
||||
@@ -34,6 +33,7 @@ legacylinks:
|
||||
- https://torrentdownload.unblockit.boo/
|
||||
- https://torrentdownload.mrunblock.guru/
|
||||
- https://torrentdownload.unblockit.click/
|
||||
- https://torrentdownload.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -8,14 +8,13 @@ encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://www.torrentdownloads.pro/
|
||||
- https://torrentdownloads.unblockit.asia/
|
||||
- https://torrentdownloads.unblockit.mov/
|
||||
- https://torrentdownloads.mrunblock.life/
|
||||
- https://torrentdownloads.unblockninja.com/
|
||||
- https://torrentdownloads.nocensor.click/
|
||||
legacylinks:
|
||||
- https://www.torrentdownloads.me/
|
||||
- https://torrentdownloads.nocensor.work/
|
||||
- https://torrentdownloads.unblockit.cam/
|
||||
- https://torrentdownloads.nocensor.biz/
|
||||
- https://torrentdownloads.unblockit.day/
|
||||
- https://torrentdownloads.unblockit.llc/
|
||||
@@ -36,6 +35,7 @@ legacylinks:
|
||||
- https://www.torrentdownloads.info/
|
||||
- https://torrentdownloads.mrunblock.guru/
|
||||
- https://torrentdownloads.unblockit.click/
|
||||
- https://torrentdownloads.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -56,8 +56,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -65,15 +63,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -9,13 +9,12 @@ followredirect: true
|
||||
links:
|
||||
- https://www.torrentfunk.com/
|
||||
- https://www.torrentfunk2.com/
|
||||
- https://torrentfunk.unblockit.asia/
|
||||
- https://torrentfunk.unblockit.mov/
|
||||
- https://torrentfunk.mrunblock.life/
|
||||
- https://torrentfunk.nocensor.click/
|
||||
legacylinks:
|
||||
- https://torrentfunk.nocensor.space/
|
||||
- https://torrentfunk.nocensor.work/
|
||||
- https://torrentfunk.unblockit.cam/
|
||||
- https://torrentfunk.nocensor.biz/
|
||||
- https://torrentfunk.unblockit.day/
|
||||
- https://torrentfunk.unblockit.llc/
|
||||
@@ -35,6 +34,7 @@ legacylinks:
|
||||
- https://torrentfunk.unblockit.boo/
|
||||
- https://torrentfunk.mrunblock.guru/
|
||||
- https://torrentfunk.unblockit.click/
|
||||
- https://torrentfunk.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -10,7 +10,7 @@ links:
|
||||
- https://torrentgalaxy.to/
|
||||
- https://torrentgalaxy.mx/
|
||||
- https://tgx.rs/
|
||||
- https://torrentgalaxy.unblockit.asia/
|
||||
- https://torrentgalaxy.unblockit.mov/
|
||||
- https://torrentgalaxy.unblockninja.com/
|
||||
legacylinks:
|
||||
- https://torrentgalaxy.org/ # redirects to *.to
|
||||
@@ -18,7 +18,6 @@ legacylinks:
|
||||
- https://tgx.unblocked.monster/
|
||||
- https://torrentgalaxy.nocensor.space/
|
||||
- https://torrentgalaxy.nocensor.work/
|
||||
- https://torrentgalaxy.unblockit.cam/
|
||||
- https://torrentgalaxy.nocensor.biz/
|
||||
- https://torrentgalaxy.unblockit.day/
|
||||
- https://torrentgalaxy.unblockit.llc/
|
||||
@@ -36,6 +35,7 @@ legacylinks:
|
||||
- https://torrentgalaxy.unblockit.bio/
|
||||
- https://torrentgalaxy.su/
|
||||
- https://torrentgalaxy.unblockit.click/
|
||||
- https://torrentgalaxy.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -84,6 +84,7 @@ search:
|
||||
# name=&description=&mediainfo=&uploader=&keywords=&tmdbId=&imdbId=&tvdbId=&malId=
|
||||
# &startYear=&endYear=&playlistId=&collectionId=&categories[]=1&perPage=100&free[0]=100
|
||||
- path: torrents
|
||||
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
|
||||
name: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
|
||||
@@ -96,6 +97,7 @@ search:
|
||||
perPage: 100
|
||||
page: 1
|
||||
# supports genre search but you need to know the id, example genres=28 for Acción
|
||||
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["(?i)\\bS(\\d+)", "{{ if .Config.compatOld }}T$1{{ else }}S$1{{ end }}"]
|
||||
@@ -143,24 +145,17 @@ search:
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/90x135", ""]
|
||||
imdbid:
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
attribute: href
|
||||
tmdbid:
|
||||
selector: a[href*="themoviedb.org/"]
|
||||
attribute: href
|
||||
tvdbid:
|
||||
selector: a[href*="thetvdb.com/?tab="]
|
||||
attribute: href
|
||||
selector: div#imdb_id
|
||||
size:
|
||||
selector: td:nth-last-child(5)
|
||||
selector: td.torrent-listings-size
|
||||
seeders:
|
||||
selector: td:nth-last-child(4)
|
||||
selector: td.torrent-listings-seeders
|
||||
leechers:
|
||||
selector: td:nth-last-child(3)
|
||||
selector: td.torrent-listings-leechers
|
||||
grabs:
|
||||
selector: td:nth-last-child(2)
|
||||
selector: td.torrent-listings-completed
|
||||
date:
|
||||
selector: td:nth-last-child(1)
|
||||
selector: td.torrent-listings-age
|
||||
filters:
|
||||
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
|
||||
- name: re_replace
|
||||
|
@@ -7,11 +7,8 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentqq259.com/
|
||||
- https://torrentqq261.com/
|
||||
legacylinks:
|
||||
- https://torrentqq244.com/
|
||||
- https://torrentqq245.com/. # typo
|
||||
- https://torrentqq245.com/
|
||||
- https://torrentqq246.com/
|
||||
- https://torrentqq247.com/
|
||||
- https://torrentqq248.com/
|
||||
@@ -25,6 +22,8 @@ legacylinks:
|
||||
- https://torrentqq256.com/
|
||||
- https://torrentqq257.com/
|
||||
- https://torrentqq258.com/
|
||||
- https://torrentqq259.com/
|
||||
- https://torrentqq260.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -63,8 +63,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -72,14 +70,16 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: api/torrents/filter
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
imdbId: "{{ .Query.IMDBIDShort }}"
|
||||
|
@@ -7,7 +7,7 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentsir106.com/
|
||||
- https://torrentsir108.com/
|
||||
legacylinks:
|
||||
- http://torrentsir92.com/
|
||||
- https://torrentsir92.com/
|
||||
@@ -32,6 +32,8 @@ legacylinks:
|
||||
- http://torrentsir105.com/
|
||||
- https://torrentsir105.com/
|
||||
- http://torrentsir106.com/
|
||||
- https://torrentsir106.com/
|
||||
- http://torrentsir108.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -95,7 +95,7 @@ search:
|
||||
# 0 incldead, 1 active, 2 dead
|
||||
incldead: 0
|
||||
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%, 8 all promotions
|
||||
spstate: "{{ if .Config.freeleech }}8{{ else }}0{{ end }}"
|
||||
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
|
||||
# 0 title, 1 descr, 3 uploader, 4 AniDB, 5 infohash
|
||||
search_area: 0
|
||||
# 0 AND, 1 OR, 2 exact
|
||||
@@ -156,11 +156,23 @@ search:
|
||||
selector: td:nth-child(7)
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
downloadvolumefactor_custom:
|
||||
selector: td.embedded > img.arrowdown + b
|
||||
optional: true
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (.*)X
|
||||
uploadvolumefactor_custom:
|
||||
selector: td.embedded > img.arrowup + b
|
||||
optional: true
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (.*)X
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img.pro_free: 0
|
||||
img.pro_free2up: 0
|
||||
img.pro_custom: 0
|
||||
img.pro_custom: "{{ .Result.downloadvolumefactor_custom }}"
|
||||
img.pro_50pctdown: 0.5
|
||||
img.pro_50pctdown2up: 0.5
|
||||
img.pro_30pctdown: 0.3
|
||||
@@ -170,7 +182,7 @@ search:
|
||||
img.pro_50pctdown2up: 2
|
||||
img.pro_free2up: 2
|
||||
img.pro_2up: 2
|
||||
img.pro_custom: 3
|
||||
img.pro_custom: "{{ .Result.uploadvolumefactor_custom }}"
|
||||
"*": 1
|
||||
description:
|
||||
selector: td:nth-child(2)
|
||||
|
@@ -50,8 +50,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -59,15 +57,17 @@ 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
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
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 }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -22,23 +22,19 @@ caps:
|
||||
- {id: 70, cat: Audio/Lossless, desc: "Flac"}
|
||||
- {id: 75, cat: TV/Sport, desc: "Formel 1"}
|
||||
- {id: 74, cat: TV/Sport, desc: "Fussball"}
|
||||
- {id: 83, cat: PC/Games, desc: "Games"}
|
||||
- {id: 36, cat: Audio/Audiobook, desc: "Hörbuch"}
|
||||
- {id: 101, cat: TV, desc: "Kids"}
|
||||
- {id: 5, cat: Console, desc: "Konsolen-Games"}
|
||||
- {id: 107, cat: PC/Mac, desc: "MAC-Programme"}
|
||||
- {id: 86, cat: Other, desc: "Misc"}
|
||||
- {id: 91, cat: Movies, desc: "Movie-Packs"}
|
||||
- {id: 66, cat: Movies, desc: "Movies"}
|
||||
- {id: 11, cat: Movies/DVD, desc: "Movies DVD / HD2DVD"}
|
||||
- {id: 104, cat: Movies/UHD, desc: "Movies UHD 8K"}
|
||||
- {id: 89, cat: Movies/UHD, desc: "Movies UHD"}
|
||||
- {id: 49, cat: Movies/HD, desc: "Movies-1080p"}
|
||||
- {id: 90, cat: Movies/3D, desc: "Movies-3-D"}
|
||||
- {id: 48, cat: Movies/HD, desc: "Movies-720p"}
|
||||
- {id: 47, cat: Movies/BluRay, desc: "Movies-Bluray"}
|
||||
- {id: 60, cat: Movies/HD, desc: "Movies-HDTV"}
|
||||
- {id: 62, cat: Movies/SD, desc: "Movies-SD"}
|
||||
- {id: 89, cat: Movies/UHD, desc: "Movies-U-HD"}
|
||||
- {id: 69, cat: Audio, desc: "Musik"}
|
||||
- {id: 72, cat: Audio, desc: "Musik-Packs"}
|
||||
- {id: 93, cat: Audio/Video, desc: "Musik-Videos"}
|
||||
@@ -57,8 +53,10 @@ caps:
|
||||
- {id: 92, cat: Console, desc: "Wimmelbild"}
|
||||
- {id: 28, cat: PC, desc: "Windows-Programme"}
|
||||
- {id: 23, cat: TV/Sport, desc: "Wrestling"}
|
||||
- {id: 108, cat: TV, desc: "WOTT-CREW"}
|
||||
- {id: 108, cat: Movies, desc: "WOTT-CREW"}
|
||||
- {id: 108, cat: Movies, desc: "WOTT-Filme"}
|
||||
- {id: 108, cat: TV, desc: "WOTT-Filme"}
|
||||
- {id: 109, cat: TV, desc: "WOTT-SERIEN"}
|
||||
- {id: 110, cat: Movies, desc: "WOTT-UHD"}
|
||||
- {id: 88, cat: XXX, desc: "XXX"}
|
||||
- {id: 106, cat: XXX/ImageSet, desc: "XXX Bilder"}
|
||||
- {id: 102, cat: XXX, desc: "XXX HENTAI"}
|
||||
|
@@ -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.asia/
|
||||
- https://yts.unblockit.mov/
|
||||
- https://yts.unblockninja.com/
|
||||
- https://yts.mrunblock.life/
|
||||
- https://yts.nocensor.click/
|
||||
@@ -17,7 +17,6 @@ legacylinks:
|
||||
- https://yts.ag/
|
||||
- https://yts.am/
|
||||
- https://yts.lt/
|
||||
- https://yts.unblockit.cam/
|
||||
- https://yts.nocensor.biz/
|
||||
- https://yts.unblockit.day/
|
||||
- https://yts.unblockit.llc/
|
||||
@@ -38,6 +37,7 @@ legacylinks:
|
||||
- https://yts.unblockit.boo/
|
||||
- https://yts.mrunblock.guru/
|
||||
- https://yts.unblockit.click/
|
||||
- https://yts.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -35,5 +35,13 @@ namespace Jackett.Common.Extensions
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static string Replace(this string text, int index, int length, string replacement)
|
||||
{
|
||||
text = text.Remove(index, length);
|
||||
text = text.Insert(index, replacement);
|
||||
|
||||
return text;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -221,10 +221,15 @@ namespace Jackett.Common.Indexers.Abstract
|
||||
var errorReason = (string)jsonError["error"];
|
||||
throw new Exception(errorReason);
|
||||
}
|
||||
else if ((int)response.Status >= 400)
|
||||
{
|
||||
throw new Exception($"Invalid status code {response.Status} received from indexer");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var json = JObject.Parse(response.ContentString);
|
||||
|
||||
foreach (JObject r in json["response"]["results"])
|
||||
{
|
||||
// groupTime may be a unixTime or a datetime string
|
||||
|
@@ -21,6 +21,7 @@ using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using Microsoft.AspNetCore.WebUtilities;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
|
||||
@@ -877,40 +878,52 @@ namespace Jackett.Common.Indexers
|
||||
return true;
|
||||
}
|
||||
|
||||
protected bool CheckIfLoginIsNeeded(WebResult Result, IHtmlDocument document)
|
||||
private bool CheckIfLoginIsNeeded(WebResult response)
|
||||
{
|
||||
if (Result.IsRedirect)
|
||||
if (response.IsRedirect)
|
||||
{
|
||||
var DomainHint = getRedirectDomainHint(Result);
|
||||
if (DomainHint != null)
|
||||
var domainHint = getRedirectDomainHint(response);
|
||||
|
||||
if (domainHint != null)
|
||||
{
|
||||
var errormessage = "Got redirected to another domain. Try changing the indexer URL to " + DomainHint + ".";
|
||||
var errorMessage = "Got redirected to another domain. Try changing the indexer URL to " + domainHint + ".";
|
||||
|
||||
if (Definition.Followredirect)
|
||||
{
|
||||
configData.SiteLink.Value = DomainHint;
|
||||
configData.SiteLink.Value = domainHint;
|
||||
SiteLink = configData.SiteLink.Value;
|
||||
SaveConfig();
|
||||
errormessage += " Updated site link, please try again.";
|
||||
errorMessage += " Updated site link, please try again.";
|
||||
}
|
||||
throw new ExceptionWithConfigData(errormessage, configData);
|
||||
|
||||
throw new ExceptionWithConfigData(errorMessage, configData);
|
||||
}
|
||||
|
||||
logger.Error($"Redirected to: {Result.RedirectingTo}");
|
||||
logger.Error($"Redirected to: {response.RedirectingTo}");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if (Definition.Login == null || Definition.Login.Test == null)
|
||||
return false;
|
||||
|
||||
if (Definition.Login.Test.Selector != null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var contentType = response.Headers.TryGetValue("Content-Type", out var header) ? header.FirstOrDefault() : null;
|
||||
|
||||
if (Definition.Login.Test.Selector != null && (contentType?.Contains("text/html") ?? true))
|
||||
{
|
||||
var parser = new HtmlParser();
|
||||
var document = parser.ParseDocument(response.ContentString);
|
||||
|
||||
var selection = document.QuerySelectorAll(Definition.Login.Test.Selector);
|
||||
|
||||
if (selection.Length == 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1231,18 +1244,22 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
if (Selector.Case != null)
|
||||
{
|
||||
foreach (var Case in Selector.Case)
|
||||
foreach (var switchCase in Selector.Case)
|
||||
{
|
||||
if (selection.Matches(Case.Key) || QuerySelector(selection, Case.Key) != null)
|
||||
if (selection.Matches(switchCase.Key) || QuerySelector(selection, switchCase.Key) != null)
|
||||
{
|
||||
value = Case.Value;
|
||||
value = applyGoTemplateText(switchCase.Value, variables);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (value == null)
|
||||
{
|
||||
if (required)
|
||||
throw new Exception(string.Format("None of the case selectors \"{0}\" matched {1}", string.Join(",", Selector.Case), selection.ToHtmlPretty()));
|
||||
{
|
||||
throw new Exception($"None of the case selectors \"{string.Join(",", Selector.Case)}\" matched {selection.ToHtmlPretty()}");
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1279,15 +1296,22 @@ namespace Jackett.Common.Indexers
|
||||
selectorSelector = JsonParseFieldSelector(parentObj, selectorSelector);
|
||||
|
||||
JToken selection = null;
|
||||
|
||||
if (selectorSelector != null)
|
||||
{
|
||||
selection = parentObj.SelectToken(selectorSelector);
|
||||
}
|
||||
|
||||
if (selection == null)
|
||||
{
|
||||
if (required)
|
||||
throw new Exception(string.Format("Selector \"{0}\" didn't match {1}", selectorSelector, parentObj.ToString()));
|
||||
{
|
||||
throw new Exception($"Selector \"{selectorSelector}\" didn't match {parentObj}");
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
if (selection.Type is JTokenType.Array)
|
||||
{
|
||||
// turn this json array into a comma delimited string
|
||||
@@ -1295,23 +1319,29 @@ namespace Jackett.Common.Indexers
|
||||
value = String.Join(",", valueArray);
|
||||
}
|
||||
else
|
||||
{
|
||||
value = selection.Value<string>();
|
||||
}
|
||||
}
|
||||
|
||||
if (Selector.Case != null)
|
||||
{
|
||||
foreach (var Case in Selector.Case)
|
||||
foreach (var switchCase in Selector.Case)
|
||||
{
|
||||
if (value.Equals(Case.Key) || Case.Key.Equals("*"))
|
||||
if ((value != null && value.Equals(switchCase.Key)) || switchCase.Key.Equals("*"))
|
||||
{
|
||||
value = Case.Value;
|
||||
value = applyGoTemplateText(switchCase.Value, variables);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (value == null)
|
||||
{
|
||||
if (required)
|
||||
throw new Exception(string.Format("None of the case selectors \"{0}\" matched {1}", string.Join(",", Selector.Case), parentObj.ToString()));
|
||||
{
|
||||
throw new Exception($"None of the case selectors \"{string.Join(",", Selector.Case)}\" matched {parentObj}");
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1467,12 +1497,40 @@ namespace Jackett.Common.Indexers
|
||||
searchUrl, method: method, headers: headers, data: queryCollection);
|
||||
|
||||
if (response.IsRedirect && SearchPath.Followredirect)
|
||||
{
|
||||
await FollowIfRedirect(response);
|
||||
}
|
||||
|
||||
var results = response.ContentString;
|
||||
|
||||
if (SearchPath.Response != null && SearchPath.Response.Type.Equals("json"))
|
||||
{
|
||||
// check if we need to login again
|
||||
var loginNeeded = CheckIfLoginIsNeeded(response);
|
||||
|
||||
if (loginNeeded)
|
||||
{
|
||||
logger.Info("CardigannIndexer({0}): Relogin required", Id);
|
||||
|
||||
var loginResult = await DoLogin();
|
||||
|
||||
if (!loginResult)
|
||||
{
|
||||
throw new Exception("Relogin failed");
|
||||
}
|
||||
|
||||
await TestLogin();
|
||||
|
||||
response = await RequestWithCookiesAsync(searchUrl, method: method, data: queryCollection, headers: headers);
|
||||
|
||||
if (response.IsRedirect && SearchPath.Followredirect)
|
||||
{
|
||||
await FollowIfRedirect(response);
|
||||
}
|
||||
|
||||
results = response.ContentString;
|
||||
}
|
||||
|
||||
if (response.Status != HttpStatusCode.OK)
|
||||
{
|
||||
throw new Exception($"Error Parsing Json Response: Status={response.Status} Response={results}");
|
||||
@@ -1486,7 +1544,18 @@ namespace Jackett.Common.Indexers
|
||||
continue;
|
||||
}
|
||||
|
||||
var parsedJson = JToken.Parse(results);
|
||||
JToken parsedJson;
|
||||
|
||||
try
|
||||
{
|
||||
parsedJson = JToken.Parse(results);
|
||||
}
|
||||
catch (JsonReaderException ex)
|
||||
{
|
||||
logger.Warn("Unexpected response content ({0} bytes): {1}", response.ContentBytes.Length, response.ContentString);
|
||||
|
||||
throw new Exception("Error Parsing Json Response", ex);
|
||||
}
|
||||
|
||||
if (parsedJson == null)
|
||||
{
|
||||
@@ -1627,37 +1696,46 @@ namespace Jackett.Common.Indexers
|
||||
}
|
||||
else
|
||||
{
|
||||
var SearchResultParser = new HtmlParser();
|
||||
var SearchResultDocument = SearchResultParser.ParseDocument(results);
|
||||
|
||||
// check if we need to login again
|
||||
var loginNeeded = CheckIfLoginIsNeeded(response, SearchResultDocument);
|
||||
var loginNeeded = CheckIfLoginIsNeeded(response);
|
||||
|
||||
if (loginNeeded)
|
||||
{
|
||||
logger.Info(string.Format("CardigannIndexer ({0}): Relogin required", Id));
|
||||
var LoginResult = await DoLogin();
|
||||
if (!LoginResult)
|
||||
throw new Exception(string.Format("Relogin failed"));
|
||||
logger.Info("CardigannIndexer({0}): Relogin required", Id);
|
||||
|
||||
var loginResult = await DoLogin();
|
||||
|
||||
if (!loginResult)
|
||||
{
|
||||
throw new Exception("Relogin failed");
|
||||
}
|
||||
|
||||
await TestLogin();
|
||||
|
||||
response = await RequestWithCookiesAsync(searchUrl, method: method, data: queryCollection, headers: headers);
|
||||
|
||||
if (response.IsRedirect && SearchPath.Followredirect)
|
||||
{
|
||||
await FollowIfRedirect(response);
|
||||
}
|
||||
|
||||
results = response.ContentString;
|
||||
SearchResultDocument = SearchResultParser.ParseDocument(results);
|
||||
}
|
||||
|
||||
var searchResultParser = new HtmlParser();
|
||||
var searchResultDocument = searchResultParser.ParseDocument(results);
|
||||
|
||||
checkForError(response, Definition.Search.Error);
|
||||
|
||||
if (Search.Preprocessingfilters != null)
|
||||
{
|
||||
results = applyFilters(results, Search.Preprocessingfilters, variables);
|
||||
SearchResultDocument = SearchResultParser.ParseDocument(results);
|
||||
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);
|
||||
rowsDom = searchResultDocument.QuerySelectorAll(rowsSelector);
|
||||
}
|
||||
|
||||
var Rows = rowsDom.ToList();
|
||||
|
@@ -25,11 +25,12 @@ namespace Jackett.Common.Indexers
|
||||
public override string Id => "dontorrent";
|
||||
public override string Name => "DonTorrent";
|
||||
public override string Description => "DonTorrent is a SPANISH public tracker for MOVIES / TV / GENERAL";
|
||||
public override string SiteLink { get; protected set; } = "https://dontorrent.zip/";
|
||||
// in the event the redirect is inactive https://t.me/s/dontorrent should have the latest working domain
|
||||
public override string SiteLink { get; protected set; } = "https://dontorrent.mov/";
|
||||
public override string[] AlternativeSiteLinks => new[]
|
||||
{
|
||||
"https://dontorrent.zip/",
|
||||
"https://todotorrents.net/",
|
||||
"https://dontorrent.mov/",
|
||||
"https://todotorrents.org/",
|
||||
"https://tomadivx.net/",
|
||||
"https://seriesblanco.one/",
|
||||
"https://verdetorrent.com/",
|
||||
@@ -37,8 +38,6 @@ namespace Jackett.Common.Indexers
|
||||
};
|
||||
public override string[] LegacySiteLinks => new[]
|
||||
{
|
||||
"https://dontorrent.how/",
|
||||
"https://dontorrent.casa/",
|
||||
"https://dontorrent.chat/",
|
||||
"https://dontorrent.plus/",
|
||||
"https://dontorrent.ninja/",
|
||||
@@ -53,6 +52,8 @@ namespace Jackett.Common.Indexers
|
||||
"https://dontorrent.company/",
|
||||
"https://dontorrent.discount/",
|
||||
"https://dontorrent.dad/",
|
||||
"https://dontorrent.zip/",
|
||||
"https://todotorrents.net/",
|
||||
};
|
||||
public override string Language => "es-ES";
|
||||
public override string Type => "public";
|
||||
|
@@ -26,12 +26,11 @@ namespace Jackett.Common.Indexers
|
||||
public override string[] AlternativeSiteLinks => new[]
|
||||
{
|
||||
"https://www.epublibre.org/",
|
||||
"https://epublibre.unblockit.asia/"
|
||||
"https://epublibre.unblockit.mov/"
|
||||
};
|
||||
public override string[] LegacySiteLinks => new[]
|
||||
{
|
||||
"https://epublibre.org/",
|
||||
"https://epublibre.unblockit.cam/",
|
||||
"https://epublibre.unblockit.day/",
|
||||
"https://epublibre.unblockit.llc/",
|
||||
"https://epublibre.unblockit.blue/",
|
||||
@@ -45,7 +44,8 @@ namespace Jackett.Common.Indexers
|
||||
"https://epublibre.unblockit.ink/",
|
||||
"https://epublibre.unblockit.bio/",
|
||||
"https://epublibre.unblockit.boo/",
|
||||
"https://epublibre.unblockit.click/"
|
||||
"https://epublibre.unblockit.click/",
|
||||
"https://epublibre.unblockit.asia/"
|
||||
};
|
||||
public override string Language => "es-ES";
|
||||
public override string Type => "public";
|
||||
|
@@ -28,20 +28,20 @@ namespace Jackett.Common.Indexers
|
||||
public override string[] AlternativeSiteLinks => new[]
|
||||
{
|
||||
"https://www.lostfilm.life/",
|
||||
"https://www.lostfilm.run/",
|
||||
"https://www.lostfilmtv.site/",
|
||||
"https://www.lostfilm.tv/",
|
||||
"https://www.lostfilm.win/",
|
||||
"https://www.lostfilm.tw/",
|
||||
"https://www.lostfilm.uno/",
|
||||
"https://www.lostfilmtv2.site/",
|
||||
"https://www.lostfilmtv3.site/",
|
||||
"https://www.lostfilmtv5.site/",
|
||||
"https://www.lostfilm.uno/"
|
||||
"https://www.lostfilmtv5.site/"
|
||||
};
|
||||
public override string[] LegacySiteLinks => new[]
|
||||
{
|
||||
"https://lostfilm.site",
|
||||
"https://lostfilm.tw/"
|
||||
"https://lostfilm.tw/",
|
||||
"https://www.lostfilm.run/"
|
||||
};
|
||||
public override string Language => "ru-RU";
|
||||
public override string Type => "semi-private";
|
||||
|
@@ -26,19 +26,14 @@ namespace Jackett.Common.Indexers
|
||||
public override string Id => "mejortorrent";
|
||||
public override string Name => "MejorTorrent";
|
||||
public override string Description => "MejorTorrent - Hay veces que un torrent viene mejor! :)";
|
||||
public override string SiteLink { get; protected set; } = "https://www2.mejortorrent.rip/";
|
||||
public override string SiteLink { get; protected set; } = "https://www3.mejortorrent.rip/";
|
||||
public override string[] AlternativeSiteLinks => new[]
|
||||
{
|
||||
"https://www2.mejortorrent.rip/",
|
||||
"https://mejortorrent.unblockit.asia/"
|
||||
"https://www3.mejortorrent.rip/",
|
||||
"https://mejortorrent.unblockit.mov/"
|
||||
};
|
||||
public override string[] LegacySiteLinks => new[]
|
||||
{
|
||||
"https://www.mejortorrentt.net/",
|
||||
"http://www.mejortorrent.org/",
|
||||
"http://www.mejortorrent.tv/",
|
||||
"http://www.mejortorrentt.com/",
|
||||
"https://www.mejortorrentt.org/",
|
||||
"http://www.mejortorrentt.org/",
|
||||
"https://www.mejortorrents.net/",
|
||||
"https://www.mejortorrents1.com/",
|
||||
@@ -52,7 +47,6 @@ namespace Jackett.Common.Indexers
|
||||
"https://www.mejortorrento.info/",
|
||||
"https://mejortorrent.nocensor.work/",
|
||||
"https://www.mejortorrentes.net/",
|
||||
"https://mejortorrent.unblockit.cam/",
|
||||
"https://mejortorrent.nocensor.biz/",
|
||||
"https://mejortorrent.unblockit.day/",
|
||||
"https://mejortorrent.unblockit.llc/",
|
||||
@@ -64,7 +58,9 @@ namespace Jackett.Common.Indexers
|
||||
"https://mejortorrent.wtf/",
|
||||
"https://mejortorrent.unblockit.boo/",
|
||||
"https://mejortorrent.unblockit.click/",
|
||||
"https://www1.mejortorrent.rip/"
|
||||
"https://www1.mejortorrent.rip/",
|
||||
"https://mejortorrent.unblockit.asia/",
|
||||
"https://www2.mejortorrent.rip/",
|
||||
};
|
||||
public override string Language => "es-ES";
|
||||
public override string Type => "public";
|
||||
@@ -541,14 +537,12 @@ namespace Jackett.Common.Indexers
|
||||
var cat = MejorTorrentCatType.Otro;
|
||||
if (mejortorrentCat == null)
|
||||
{
|
||||
if (detailsStr.Contains("peliculas_extend"))
|
||||
if (detailsStr.Contains("pelicula"))
|
||||
cat = MejorTorrentCatType.Pelicula;
|
||||
else if (detailsStr.Contains("series_extend"))
|
||||
else if (detailsStr.Contains("serie"))
|
||||
cat = MejorTorrentCatType.Serie;
|
||||
else if (detailsStr.Contains("musica_extend"))
|
||||
else if (detailsStr.Contains("musica"))
|
||||
cat = MejorTorrentCatType.Musica;
|
||||
else if (detailsStr.Contains("pelicula"))
|
||||
cat = MejorTorrentCatType.Pelicula;
|
||||
}
|
||||
else if (mejortorrentCat.Equals(MejorTorrentCatType.Pelicula) ||
|
||||
mejortorrentCat.Equals(MejorTorrentCatType.Serie) ||
|
||||
|
@@ -22,7 +22,7 @@
|
||||
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.2.0" />
|
||||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
|
||||
<PackageReference Include="MimeMapping" Version="1.0.1.50" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="NLog" Version="5.1.2" />
|
||||
<PackageReference Include="polly" Version="7.2.3" />
|
||||
<PackageReference Include="SharpZipLib" Version="1.4.2" />
|
||||
|
@@ -150,7 +150,7 @@ namespace Jackett.Common.Services
|
||||
_configService.Load(indexer);
|
||||
}
|
||||
|
||||
_logger.Info($"Loaded {nativeIndexers.Count} Native indexers: {string.Join(", ", nativeIndexers.Select(i => i.Id))}");
|
||||
_logger.Debug($"Loaded {nativeIndexers.Count} Native indexers: {string.Join(", ", nativeIndexers.Select(i => i.Id))}");
|
||||
}
|
||||
|
||||
private void InitCardigannIndexers(List<string> path)
|
||||
@@ -216,7 +216,7 @@ namespace Jackett.Common.Services
|
||||
cardiganIds.Add(indexer.Id);
|
||||
}
|
||||
|
||||
_logger.Info($"Loaded {cardigannCounter} Cardigann indexers: {string.Join(", ", cardiganIds)}");
|
||||
_logger.Debug($"Loaded {cardigannCounter} Cardigann indexers: {string.Join(", ", cardiganIds)}");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
@@ -2,43 +2,43 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils.Logging;
|
||||
using NLog;
|
||||
using NLog.Targets;
|
||||
|
||||
namespace Jackett.Common.Services
|
||||
{
|
||||
|
||||
[Target("LogService")]
|
||||
public class LogCacheService : TargetWithLayout, ILogCacheService
|
||||
{
|
||||
private static List<CachedLog> logs = new List<CachedLog>();
|
||||
|
||||
public void AddLog(LogEventInfo l)
|
||||
{
|
||||
lock (logs)
|
||||
{
|
||||
logs.Insert(0, new CachedLog()
|
||||
{
|
||||
Level = l.Level.Name,
|
||||
Message = l.FormattedMessage,
|
||||
When = l.TimeStamp
|
||||
});
|
||||
logs = logs.Take(200).ToList();
|
||||
}
|
||||
|
||||
}
|
||||
private static List<CachedLog> _Logs = new List<CachedLog>();
|
||||
|
||||
public List<CachedLog> Logs
|
||||
{
|
||||
get
|
||||
{
|
||||
lock (logs)
|
||||
lock (_Logs)
|
||||
{
|
||||
return logs.ToList();
|
||||
return _Logs.ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Write(LogEventInfo logEvent) => AddLog(logEvent);
|
||||
|
||||
private static void AddLog(LogEventInfo logEvent)
|
||||
{
|
||||
lock (_Logs)
|
||||
{
|
||||
_Logs.Insert(0, new CachedLog
|
||||
{
|
||||
Level = logEvent.Level.Name,
|
||||
Message = CleanseLogMessage.Cleanse(logEvent.FormattedMessage),
|
||||
When = logEvent.TimeStamp
|
||||
});
|
||||
|
||||
_Logs = _Logs.Take(200).ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
15
src/Jackett.Common/Utils/Logging/CleanseFileTarget.cs
Normal file
15
src/Jackett.Common/Utils/Logging/CleanseFileTarget.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using System.Text;
|
||||
using NLog;
|
||||
using NLog.Targets;
|
||||
|
||||
namespace Jackett.Common.Utils.Logging
|
||||
{
|
||||
public class CleanseFileTarget : FileTarget
|
||||
{
|
||||
protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
|
||||
{
|
||||
var result = CleanseLogMessage.Cleanse(Layout.Render(logEvent));
|
||||
target.Append(result);
|
||||
}
|
||||
}
|
||||
}
|
74
src/Jackett.Common/Utils/Logging/CleanseLogMessage.cs
Normal file
74
src/Jackett.Common/Utils/Logging/CleanseLogMessage.cs
Normal file
@@ -0,0 +1,74 @@
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using Jackett.Common.Extensions;
|
||||
|
||||
namespace Jackett.Common.Utils.Logging
|
||||
{
|
||||
// See https://github.com/Prowlarr/Prowlarr/blob/develop/src/NzbDrone.Common/Instrumentation/CleanseLogMessage.cs
|
||||
public class CleanseLogMessage
|
||||
{
|
||||
private static readonly Regex[] _CleansingRules =
|
||||
{
|
||||
// Url
|
||||
new Regex(@"(?<=[?&: ;])(apikey|api_key|(?:(?:access|api)[-_]?)?token|pass(?:key|wd)?|auth|authkey|user|u?id|api|[a-z_]*apikey|account|pid|pwd)=(?<secret>[^&=""]+?)(?=[ ""&=]|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"(?<=[?& ;])[^=]*?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"rss\.torrentleech\.org/(?!rss)(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"rss\.torrentleech\.org/rss/download/[0-9]+/(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"iptorrents\.com/[/a-z0-9?&;]*?(?:[?&;](u|tp)=(?<secret>[^&=;]+?))+(?= |;|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"/fetch/[a-z0-9]{32}/(?<secret>[a-z0-9]{32})", RegexOptions.Compiled),
|
||||
new Regex(@"\b(\w*)?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"(?<=authkey = "")(?<secret>[^&=]+?)(?="")", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"(?<=beyond-hd\.[a-z]+/api/torrents/)(?<secret>[^&=][a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"(?<=beyond-hd\.[a-z]+/torrent/download/[\w\d-]+[.]\d+[.])(?<secret>[a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// UNIT3D
|
||||
new Regex(@"(?<=[a-z0-9-]+\.[a-z]+/torrent/download/\d+\.)(?<secret>[^&=][a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// Path
|
||||
new Regex(@"""C:\\Users\\(?<secret>[^\""]+?)(\\|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"""/(home|Users)/(?<secret>[^/""]+?)(/|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// uTorrent
|
||||
new Regex(@"\[""[a-z._]*(username|password)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"\[""(boss_key|boss_key_salt|proxy\.proxy)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// BroadcastheNet (;torrent_pass|torrents_notify_ is for MTV)
|
||||
new Regex(@"""?method""?\s*:\s*""(getTorrents)"",\s*""?params""?\s*:\s*\[\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"getTorrents\(""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"(?<=\?|&|;|=)(authkey|torrent_pass|torrents_notify)[_=](?<secret>[^&=]+?)(?=""|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// Indexer Responses
|
||||
new Regex(@"(?:avistaz|exoticaz|cinemaz|privatehd)\.[a-z]{2,3}/rss/download/(?<secret>[^&=]+?)/(?<secret>[^&=]+?)\.torrent", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"(?:animebytes)\.[a-z]{2,3}/torrent/[0-9]+/download/(?<secret>[^&=]+?)[""]", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@",""info_hash"":""(?<secret>[^&=]+?)"",", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"""token"":""(?<secret>[^&=]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@",""pass[- _]?key"":""(?<secret>[^&=]+?)"",", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@",""rss[- _]?key"":""(?<secret>[^&=]+?)"",", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
};
|
||||
|
||||
public static string Cleanse(string message)
|
||||
{
|
||||
if (message.IsNullOrWhiteSpace())
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
foreach (var regex in _CleansingRules)
|
||||
{
|
||||
message = regex.Replace(message, m =>
|
||||
{
|
||||
var value = m.Value;
|
||||
|
||||
foreach (var capture in m.Groups["secret"].Captures.OfType<Capture>().Reverse())
|
||||
{
|
||||
value = value.Replace(capture.Index - m.Index, capture.Length, "(removed)");
|
||||
}
|
||||
|
||||
return value;
|
||||
});
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
}
|
||||
}
|
@@ -3,6 +3,7 @@ using System.IO;
|
||||
using System.Text;
|
||||
using Jackett.Common.Models.Config;
|
||||
using Jackett.Common.Services;
|
||||
using Jackett.Common.Utils.Logging;
|
||||
using NLog;
|
||||
using NLog.Config;
|
||||
using NLog.LayoutRenderers;
|
||||
@@ -21,7 +22,7 @@ namespace Jackett.Common.Utils
|
||||
|
||||
var logConfig = new LoggingConfiguration();
|
||||
|
||||
var logFile = new FileTarget
|
||||
var logFile = new CleanseFileTarget
|
||||
{
|
||||
Layout = "${longdate} ${level} ${message} ${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}",
|
||||
FileName = Path.Combine(settings.DataFolder, logFileName),
|
||||
|
@@ -561,6 +561,7 @@ namespace Jackett.Updater
|
||||
"Definitions/tfile.yml",
|
||||
"Definitions/theaudioscene.yml",
|
||||
"Definitions/the-devils-lounge.yml",
|
||||
"Definitions/thedarkcommunity-api.yml",
|
||||
"Definitions/thehorrorcharnel.yml",
|
||||
"Definitions/the-madhouse.yml",
|
||||
"Definitions/themoviecave.yml",
|
||||
|
Reference in New Issue
Block a user