Compare commits

...

40 Commits

Author SHA1 Message Date
ilike2burnthing
4d2ac5b6a9 thedarkcommunity: removed, down for 30 days. resolves #13923 (#14465) 2023-06-16 04:51:44 +01:00
Bogdan
208b0bdb5b core: use debug logging for loaded indexers (#14464) 2023-06-15 23:57:12 +03:00
Bogdan
84ca9a06d8 cardigann: apply template text to switch cases (#14463)
* Revert "cardigann: parse result with template (#14462)"

This reverts commit 6aee6d732a.

* cardigann: apply template text to switch cases
2023-06-15 23:36:47 +03:00
Garfield69
aa16e7424c torrentqq: bump domain 2023-06-16 08:15:51 +12:00
Garfield69
92f582e910 bitsearch: drop mrunblock proxy 2023-06-16 08:15:40 +12:00
ilike2burnthing
e3880b9143 u2: fix custom dlvf & ulvf. resolves #14457 (#14461) 2023-06-16 06:44:12 +12:00
Trim21
6aee6d732a cardigann: parse result with template (#14462) 2023-06-16 06:35:39 +12:00
ilike2burnthing
da80bde7d8 u2: use correct freeleech search value. resolves #14458 2023-06-15 13:40:33 +01:00
Bogdan
5a388b59d0 GazelleTracker: throw exception on HTTP errors 2023-06-15 14:40:48 +03:00
Bogdan
d7404e9cd4 fixup! GazelleTracker: throw exception on empty response 2023-06-15 14:28:30 +03:00
Bogdan
373b15cb8e GazelleTracker: throw exception on empty response
Closes #14459
2023-06-15 14:24:59 +03:00
Garfield69
19de5f46b0 add kufei a privat eChinese site. resolves #14451 2023-06-15 20:50:10 +12:00
Garfield69
e74e7b3cf7 add movieworld a semi-private site. resolves #14454 2023-06-15 20:03:29 +12:00
Garfield69
a3c361fac1 world-of-tomorrow: cats refresh
the wott-filme still has some series loaded from earlier when 109 was not available
2023-06-15 08:21:01 +12:00
Garfield69
03776c5fe1 electro-torrent: new login path, plus site forcing https 2023-06-15 07:17:50 +12:00
Garfield69
43f1fabae0 dontorrent: new domain 2023-06-14 06:41:27 +12:00
Garfield69
3a0c6a75e1 torrentsir: bump domain 2023-06-14 06:40:45 +12:00
Garfield69
7a327230f1 happyfappy: new cats 2023-06-13 07:42:28 +12:00
Bogdan
7e8fdfa2b1 bitsearch: update title selector 2023-06-12 04:47:48 +03:00
Bogdan
35e1218861 common: bump Newtonsoft.Json to 13.0.3 2023-06-11 23:34:42 +03:00
Bogdan
af54a3f9d0 core: use project name as relative path in builds (#14447) 2023-06-11 23:24:19 +03:00
Bogdan
04cc9939a6 add ids to bug report issue template 2023-06-11 22:36:42 +03:00
Bogdan
5640a86838 cardigann: use CheckIfLoginIsNeeded in response type is json (#14444) 2023-06-11 09:54:01 +03:00
ilike2burnthing
bcc00f91bb lostfilm: remove down *.run domain. resolves #14441 2023-06-10 23:18:04 +01:00
Bogdan
6905cdc103 arabafenice: add login test selector 2023-06-10 23:54:05 +03:00
Garfield69
f1415f32c6 mejortorrent: new domain 2023-06-10 05:53:15 +12:00
Bogdan
4e55187bdb cardigann: catch JsonReaderException when parsing JSON
Fixes #14439
2023-06-09 01:47:22 +03:00
Garfield69
967ff6db99 torrentqq: bump domain 2023-06-09 05:46:57 +12:00
Bogdan
23cff411ed logging: cleanse messages in log files (#14433)
Co-authored-by: ilike2burnthing <59480337+ilike2burnthing@users.noreply.github.com>
2023-06-08 18:09:16 +03:00
Garfield69
f42b76fb36 add fappaizuri a private site for hentai/jav resolves #14438
new site, expect changes.
2023-06-08 21:40:30 +12:00
Garfield69
28c5c427e8 mejortorrent: fix cat detection. resolves #14435 2023-06-08 17:30:14 +12:00
Garfield69
68205b13ca torrentland: new layout. resolves #14437 2023-06-08 09:22:06 +12:00
Bogdan
dcec23434f hdolimpo-api: add auth header 2023-06-07 20:59:07 +03:00
Garfield69
09dc556140 assorted: new unblockit domain 2023-06-07 22:04:49 +12:00
Garfield69
0d69d7ba1b add therebels a Brazilian private site. resolves #14434 2023-06-07 21:53:13 +12:00
Bogdan
cc8a980a70 abtorrents: fix publish date 2023-06-07 04:47:27 +03:00
Bogdan
e9f7e4d13f unit3d: move api key auth in headers (#14429) 2023-06-07 02:48:56 +03:00
Bogdan
c6180f6860 lesaloon: update base url (#14431) 2023-06-06 21:56:46 +03:00
Garfield69
8c5fb64aec assorted unit3d: replacement API docs
https://github.com/HDInnovations/UNIT3D-Community-Edition/discussions/2816
2023-06-07 06:01:26 +12:00
Garfield69
a293346ce8 assorted unit3d: update api doc links 2023-06-06 20:43:36 +12:00
77 changed files with 1074 additions and 324 deletions

View File

@@ -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

View File

@@ -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
View 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>

View File

@@ -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:

View File

@@ -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:

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -124,6 +124,7 @@ login:
args: ["');", ""]
test:
path: index.php
selector: a[href="logout.php"]
download:
before:

View File

@@ -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

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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:

View File

@@ -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 }}"

View File

@@ -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:

View File

@@ -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:

View File

@@ -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:

View 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

View File

@@ -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 }}"

View File

@@ -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:

View File

@@ -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"}

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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 }}"

View 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

View File

@@ -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 }}"

View File

@@ -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

View File

@@ -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:

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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 }}"

View 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

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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 }}"

View File

@@ -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

View File

@@ -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 }}"

View File

@@ -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

View File

@@ -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:

View File

@@ -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:

View File

@@ -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 }}"

View File

@@ -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:

View File

@@ -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:

View File

@@ -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

View File

@@ -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:

View File

@@ -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 }}"

View File

@@ -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:

View File

@@ -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)

View File

@@ -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 }}"

View File

@@ -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"}

View File

@@ -9,7 +9,7 @@ requestDelay: 2.5 # 2.5 requests per second (2 causes problems)
links:
# dont forget to update the details, download and poster replace args
- https://yts.mx/
- https://yts.unblockit.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:

View File

@@ -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;
}
}
}

View File

@@ -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

View File

@@ -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();

View File

@@ -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";

View File

@@ -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";

View File

@@ -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";

View File

@@ -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) ||

View File

@@ -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" />

View File

@@ -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)
{

View File

@@ -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();
}
}
}
}

View 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);
}
}
}

View 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;
}
}
}

View File

@@ -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),

View File

@@ -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",