mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-10 13:48:02 +02:00
Compare commits
28 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
f1415f32c6 | ||
![]() |
4e55187bdb | ||
![]() |
967ff6db99 | ||
![]() |
23cff411ed | ||
![]() |
f42b76fb36 | ||
![]() |
28c5c427e8 | ||
![]() |
68205b13ca | ||
![]() |
dcec23434f | ||
![]() |
09dc556140 | ||
![]() |
0d69d7ba1b | ||
![]() |
cc8a980a70 | ||
![]() |
e9f7e4d13f | ||
![]() |
c6180f6860 | ||
![]() |
8c5fb64aec | ||
![]() |
a293346ce8 | ||
![]() |
c0a5e24186 | ||
![]() |
0e043a5792 | ||
![]() |
98f7e720e7 | ||
![]() |
8154acb47b | ||
![]() |
df94aaf930 | ||
![]() |
d8dc0d221a | ||
![]() |
3ba502a378 | ||
![]() |
b9655f1302 | ||
![]() |
422eff86f4 | ||
![]() |
e66d88bbcf | ||
![]() |
669ddae0b0 | ||
![]() |
0b0d08dd7c | ||
![]() |
bf5b24a5a7 |
@@ -300,7 +300,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* CarPT
|
||||
* CartoonChaos (CC)
|
||||
* Cathode-Ray.Tube (CRT)
|
||||
* CCFBits [![(invite needed)][inviteneeded]](#)
|
||||
* Central Torrent
|
||||
* CeskeForum
|
||||
* CGPeers [![(invite needed)][inviteneeded]](#)
|
||||
@@ -340,6 +339,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)
|
||||
@@ -383,7 +383,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* HDRoute [![(invite needed)][inviteneeded]](#)
|
||||
* HDSky [![(invite needed)][inviteneeded]](#)
|
||||
* HDTime
|
||||
* HDTorrents.it [![(invite needed)][inviteneeded]](#)
|
||||
* HDTurk
|
||||
* HDU
|
||||
* HDVIDEO
|
||||
@@ -549,6 +548,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* TheDarkCommunity (TDC)
|
||||
* TheEmpire (TE)
|
||||
* TheLeachZone (TLZ)
|
||||
* TheRebels
|
||||
* TheScenePlace (TSP)
|
||||
* Thor's Land
|
||||
* TJUPT
|
||||
@@ -609,7 +609,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,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:
|
||||
|
@@ -189,4 +189,4 @@ search:
|
||||
description:
|
||||
selector: td:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.8.2 2023-05-08
|
||||
# NexusPHP v1.8.3 2023-05-14
|
||||
|
@@ -139,20 +139,22 @@ search:
|
||||
files:
|
||||
selector: td:nth-last-child(9)
|
||||
date_day:
|
||||
# Yesterday<br/>6:00 AM
|
||||
selector: td:nth-last-child(7):contains("day")
|
||||
# auto adjusted by site account profile
|
||||
# Yesterday, 6:00 AM
|
||||
selector: td:nth-last-child(7) > span[title*="day"]
|
||||
attribute: title
|
||||
optional: true
|
||||
filters:
|
||||
- name: fuzzytime
|
||||
date_year:
|
||||
# Aug 6 2021<br/>7:25 PM
|
||||
selector: td:nth-last-child(7):not(:contains("day"))
|
||||
# auto adjusted by site account profile
|
||||
# Aug 6 2021, 7:25 PM
|
||||
selector: td:nth-last-child(7) > span[title]:not([title*="day"])
|
||||
attribute: title
|
||||
optional: true
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "MMM d yyyy h:mm tt"
|
||||
args: "MMM d yyyy, h:mm tt"
|
||||
date:
|
||||
text: "{{ if or .Result.date_day .Result.date_year }}{{ or .Result.date_day .Result.date_year }}{{ else }}now{{ end }}"
|
||||
size:
|
||||
|
@@ -60,8 +60,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -69,15 +67,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -62,8 +62,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -71,15 +69,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -65,8 +65,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -74,15 +72,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -54,8 +54,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -63,15 +61,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -55,8 +55,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -64,14 +62,16 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
|
||||
|
@@ -123,6 +123,7 @@ caps:
|
||||
- {id: 217, cat: Movies, desc: "Tamil-Movies | Remuxes BluRay"}
|
||||
- {id: 218, cat: TV, desc: "TV-Ishara TV"}
|
||||
- {id: 219, cat: TV, desc: "TV-Bengali Tv"}
|
||||
- {id: 220, cat: TV, desc: "TV-Shemaroo Umang"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
@@ -189,4 +189,4 @@ search:
|
||||
description:
|
||||
selector: td.rowfollow:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.7.37 2023-05-08
|
||||
# NexusPHP v1.7.38 2023-05-14
|
||||
|
@@ -1,152 +0,0 @@
|
||||
---
|
||||
id: ccfbits
|
||||
name: CCFBits
|
||||
description: "CCFBits is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
|
||||
language: zh-CN
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://ccfbits.org/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
# 高清电影
|
||||
- {id: 39, cat: Movies/HD, desc: "HD-DVD原盘"}
|
||||
- {id: 40, cat: Movies/BluRay, desc: "Blu-ray原盘"}
|
||||
- {id: 30, cat: Movies/HD, desc: "高清电影1080p"}
|
||||
- {id: 2, cat: Movies/HD, desc: "高清电影720p"}
|
||||
# 高清电视剧
|
||||
- {id: 7, cat: TV/HD, desc: "高清欧美剧"}
|
||||
- {id: 32, cat: TV/HD, desc: "高清国产剧"}
|
||||
- {id: 34, cat: TV/HD, desc: "高清港台剧"}
|
||||
- {id: 36, cat: TV/HD, desc: "高清日韩剧"}
|
||||
# 其他高清视频
|
||||
- {id: 12, cat: TV/Documentary, desc: "高清纪录片"}
|
||||
- {id: 11, cat: TV/Sport, desc: "高清体育"}
|
||||
- {id: 23, cat: TV/Anime, desc: "高清动漫"}
|
||||
- {id: 4, cat: Audio/Video, desc: "高清MV/综艺"}
|
||||
# 电视剧集包
|
||||
- {id: 38, cat: TV/HD, desc: "欧美剧包"}
|
||||
- {id: 33, cat: TV/HD, desc: "国产剧包"}
|
||||
- {id: 35, cat: TV/HD, desc: "港台剧包"}
|
||||
- {id: 37, cat: TV/HD, desc: "日韩剧包"}
|
||||
# 非高清和其他
|
||||
- {id: 43, cat: TV/SD, desc: "HR_HDTV"}
|
||||
- {id: 20, cat: Movies/DVD, desc: "DVD"}
|
||||
- {id: 42, cat: Movies/SD, desc: "XviD"}
|
||||
- {id: 3, cat: Audio, desc: "无损音乐"}
|
||||
- {id: 22, cat: Other, desc: "杂项"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, imdbid]
|
||||
movie-search: [q, imdbid]
|
||||
music-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: added
|
||||
options:
|
||||
added: created
|
||||
seeders: seeders
|
||||
size: size
|
||||
name: title
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: DESC
|
||||
options:
|
||||
DESC: desc
|
||||
ASC: asc
|
||||
|
||||
login:
|
||||
path: takelogin.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: td.embedded:has(h2:contains("登录失败"))
|
||||
test:
|
||||
path: browse.php
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
|
||||
# 0 active 1 incldead 2 deadonly
|
||||
incldead: 1
|
||||
fullsearch: "{{ if .Query.IMDBID }}1{{ else }}{{ end }}"
|
||||
sort: "{{ .Config.sort }}"
|
||||
d: "{{ .Config.sort }}"
|
||||
|
||||
rows:
|
||||
selector: table[border="1"][cellpadding="5"] > tbody > tr:has(a[href^="details.php?id="])
|
||||
|
||||
fields:
|
||||
title:
|
||||
selector: a[title][href^="details.php?id="]
|
||||
attribute: title
|
||||
filters:
|
||||
- name: split
|
||||
args: ["\n", 0]
|
||||
category:
|
||||
selector: a[href^="browse.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php/"]
|
||||
attribute: href
|
||||
imdbid:
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
attribute: href
|
||||
files:
|
||||
selector: a[href$="&filelist=1"]
|
||||
grabs:
|
||||
selector: a[href^="snatches.php?id"]
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["次", ""]
|
||||
size:
|
||||
selector: td:nth-child(7)
|
||||
remove: a
|
||||
seeders:
|
||||
selector: td:nth-child(8)
|
||||
leechers:
|
||||
selector: td:nth-child(9)
|
||||
date:
|
||||
selector: td:nth-child(5)
|
||||
filters:
|
||||
- name: append
|
||||
args: " +08:00" # CST
|
||||
- name: dateparse
|
||||
args: "yyyy-MM-ddHH:mm:ss zzz"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"font[color=\"#C20603\"]:contains(\"免费\")": 0
|
||||
"font:has([src=\"/pic/arrowdown1.gif\"]):contains(\"0.5x\")": 0.5
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"font:has([src=\"/pic/arrowup1.gif\"]):contains(\"1.5x\")": 1.5
|
||||
"font:has([src=\"/pic/arrowup1.gif\"]):contains(\"2x\")": 2
|
||||
"*": 1
|
||||
description:
|
||||
selector: td:nth-child(2) > table > tbody > tr:nth-child(2)
|
||||
remove: a, img
|
||||
# Discuz! 7.2
|
@@ -68,8 +68,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -81,8 +79,10 @@ search:
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
imdb: "{{ .Query.IMDBIDShort }}"
|
||||
|
@@ -61,8 +61,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -70,15 +68,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -10,12 +10,11 @@ links:
|
||||
- https://www.demonoid.is/
|
||||
- https://www.dnoid.to/
|
||||
- https://www.dnoid.pw/
|
||||
- https://demonoid.unblockit.asia/
|
||||
- https://demonoid.unblockit.mov/
|
||||
- https://demonoid.torrentbay.net/
|
||||
- https://demonoid.mrunblock.life/
|
||||
- https://demonoid.nocensor.click/
|
||||
legacylinks:
|
||||
- https://demonoid.unblockit.cam/
|
||||
- https://demonoid.nocensor.biz/
|
||||
- https://demonoid.unblockit.day/
|
||||
- https://demonoid.unblockit.llc/
|
||||
@@ -42,6 +41,7 @@ legacylinks:
|
||||
- https://demonoid.mrunblock.guru/
|
||||
- https://demonoid.torrentbay.to/
|
||||
- https://demonoid.unblockit.click/
|
||||
- https://demonoid.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -54,8 +54,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -63,15 +61,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -71,6 +71,10 @@ settings:
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: p2p_releases_only
|
||||
type: checkbox
|
||||
label: Search P2P releases only
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
@@ -109,6 +113,7 @@ search:
|
||||
index: 0
|
||||
limit: 100
|
||||
order: "{{ .Config.type }}"
|
||||
p2p: "{{ if .Config.p2p_releases_only }}true{{ else }}{{ end }}"
|
||||
page: search
|
||||
searchText: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }} {{ else }}{{ end }}{{ .Keywords }}"
|
||||
section: all
|
||||
|
@@ -7,12 +7,11 @@ type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://extratorrent.st/
|
||||
- https://extratorrent.unblockit.asia/
|
||||
- https://extratorrent.unblockit.mov/
|
||||
- https://extratorrent.mrunblock.life/
|
||||
- https://extratorrent.nocensor.click/
|
||||
legacylinks:
|
||||
- https://extratorrent.nocensor.work/
|
||||
- https://extratorrent.unblockit.cam/
|
||||
- https://extratorrent.nocensor.biz/
|
||||
- https://extratorrent.unblockit.day/
|
||||
- https://extratorrent.unblockit.llc/
|
||||
@@ -33,6 +32,7 @@ legacylinks:
|
||||
- https://extratorrent.unblockit.boo/
|
||||
- https://extratorrent.mrunblock.guru/
|
||||
- https://extratorrent.unblockit.click/
|
||||
- https://extratorrent.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -13,7 +13,7 @@ links:
|
||||
- https://eztv.yt/
|
||||
- https://eztv1.xyz/
|
||||
- https://eztv.unblockninja.com/
|
||||
- https://eztv.unblockit.asia/
|
||||
- https://eztv.unblockit.mov/
|
||||
- https://eztv.mrunblock.life/
|
||||
- https://eztv.nocensor.click/
|
||||
legacylinks:
|
||||
@@ -41,6 +41,7 @@ legacylinks:
|
||||
- https://eztv.unblockit.boo/
|
||||
- https://eztv.mrunblock.guru/
|
||||
- https://eztv.unblockit.click/
|
||||
- https://eztv.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
|
139
src/Jackett.Common/Definitions/fappaizuri.yml
Normal file
139
src/Jackett.Common/Definitions/fappaizuri.yml
Normal file
@@ -0,0 +1,139 @@
|
||||
---
|
||||
id: fappaizuri
|
||||
name: Fappaizuri
|
||||
description: "Fappaizuri is a Private Torrent Tracker for HENTAI / JAV"
|
||||
language: en-US
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://fappaizuri.me/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 8, cat: TV/Anime, desc: "Hentai"}
|
||||
- {id: 7, cat: Console, desc: "H-games"}
|
||||
- {id: 5, cat: XXX, desc: "JAV"}
|
||||
- {id: 6, cat: Books, desc: "Manga"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: lang
|
||||
type: select
|
||||
label: Language
|
||||
default: 0
|
||||
options:
|
||||
0: All
|
||||
4: Japanese
|
||||
5: Chinese
|
||||
6: Malaysia
|
||||
7: North Korea
|
||||
8: English
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: id
|
||||
options:
|
||||
id: created
|
||||
seeders: seeders
|
||||
size: size
|
||||
name: title
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: desc
|
||||
options:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
method: post
|
||||
path: account-login.php
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: b:contains("The specified username or password was incorrect.")
|
||||
test:
|
||||
path: account.php
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://fappaizuri.me/torrents-search.php?search=&c8=1&c6=1&incldead=1&freeleech=0&lang=0
|
||||
- path: torrents-search.php
|
||||
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}&c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
# 0 active, 1 incldead, 2 onlydead
|
||||
incldead: 1
|
||||
# 0 all, 1 notfree, 2 onlyfree
|
||||
freeleech: "{{ if .Config.freeleech }}{{ .Config.freeleech }}2{{ else }}0{{ end }}"
|
||||
lang: "{{ .Config.lang }}"
|
||||
sort: "{{ .Config.sort }}"
|
||||
order: "{{ .Config.type }}"
|
||||
|
||||
rows:
|
||||
selector: tr.t-row:has(a[href^="download.php?id="])
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="search-torrents.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title:
|
||||
selector: a[href^="torrents-details.php?id="] > b
|
||||
details:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
poster:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: regexp
|
||||
args: src=(.+?)>
|
||||
_language:
|
||||
selector: img[src*="images/languages/"]
|
||||
attribute: alt
|
||||
description:
|
||||
selector: font[color="red"]
|
||||
filters:
|
||||
- name: append
|
||||
args: " - {{ .Result._language }}"
|
||||
size:
|
||||
selector: td:nth-child(4)
|
||||
seeders:
|
||||
selector: td:nth-child(5)
|
||||
leechers:
|
||||
selector: td:nth-child(6)
|
||||
date:
|
||||
text: now
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="images/free.png"]: 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img[src="images/doubleupload.gif"]: 2
|
||||
"*": 1
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
# evolution
|
@@ -84,8 +84,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -93,15 +91,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -10,14 +10,13 @@ links:
|
||||
- https://glodls.to/
|
||||
- https://gtdb.cc/
|
||||
- https://www.gtdb.to/
|
||||
- https://glotorrents.unblockit.asia/
|
||||
- https://glotorrents.unblockit.mov/
|
||||
- https://glotorrents.mrunblock.life/
|
||||
- https://glodls.unblockninja.com/
|
||||
- https://glotorrents.nocensor.click/
|
||||
legacylinks:
|
||||
- https://glodls.rocks/
|
||||
- https://gtdb.to/
|
||||
- https://glotorrents.unblockit.cam/
|
||||
- https://glotorrents.nocensor.biz/
|
||||
- https://glotorrents.unblockit.day/
|
||||
- https://glotorrents.unblockit.llc/
|
||||
@@ -38,6 +37,7 @@ legacylinks:
|
||||
- https://glotorrents.unblockit.boo/
|
||||
- https://glotorrents.mrunblock.guru/
|
||||
- https://glotorrents.unblockit.click/
|
||||
- https://glotorrents.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -50,8 +50,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -59,14 +57,16 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
imdbId: "{{ .Query.IMDBIDShort }}"
|
||||
|
@@ -53,8 +53,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -62,15 +60,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
@@ -148,4 +148,4 @@ search:
|
||||
minimumseedtime:
|
||||
# 3 days (as seconds = 3 x 24 x 60 x 60)
|
||||
text: 259200
|
||||
# json UNIT3D 6.3.0
|
||||
# json UNIT3D 6.4.1
|
||||
|
@@ -146,4 +146,4 @@ search:
|
||||
img.pro_free2up: 2
|
||||
img.pro_2up: 2
|
||||
"*": 1
|
||||
# NexusPHP 2c858e7 (Customised)
|
||||
# NexusPHP 4e16128 (Customised)
|
||||
|
@@ -195,4 +195,4 @@ search:
|
||||
description:
|
||||
selector: td:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.8.2 2023-05-06
|
||||
# NexusPHP v1.8.4 2023-05-27
|
||||
|
@@ -171,4 +171,4 @@ search:
|
||||
description:
|
||||
selector: td.rowfollow:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.7.29 2022-10-12
|
||||
# NexusPHP v1.8.3 2023-05-13
|
||||
|
@@ -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 }}"
|
||||
|
@@ -188,4 +188,4 @@ search:
|
||||
description:
|
||||
selector: td.rowfollow:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.7.37 2023-05-08
|
||||
# NexusPHP v1.8.4 2023-06-04
|
||||
|
@@ -1,161 +0,0 @@
|
||||
---
|
||||
id: hdtorrentsit
|
||||
name: HDTorrents.it
|
||||
description: "HDTorrents.it is an ITALIAN Private site for TV / MOVIES"
|
||||
language: it-IT
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://hdtorrents.xyz/ # Italian IP address filtering
|
||||
legacylinks:
|
||||
- http://hdtorrents.it/
|
||||
- http://hdtorrents.xyz/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 2040, cat: Movies/HD}
|
||||
- {id: 5040, cat: TV/HD}
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: ip_filtering
|
||||
type: info
|
||||
label: "IP Filtering"
|
||||
default: "The <b>404 Not Found</b> error means your IP was not accepted. Check the <a href=\"https://check-host.net/check-report/e5b649bkfa\" target=\"_blank\">Locations report</a>, only those with a Status of <b>OK</b> will be accepted."
|
||||
|
||||
login:
|
||||
path: takelogin.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: div.error
|
||||
- selector: h1:contains("404 Not Found")
|
||||
test:
|
||||
path: browse.php
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
method: post
|
||||
allowEmptyInputs: true
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["[^a-zA-Z0-9]+", "%"]
|
||||
- name: diacritics
|
||||
args: replace
|
||||
- name: re_replace # remove SXXEYY from research
|
||||
args: ["(?i)(S\\d{1,2}E\\d{1,2})", ""]
|
||||
- name: re_replace # remove SXX from research
|
||||
args: ["(?i)(S\\d{1,2})", ""]
|
||||
inputs:
|
||||
ajax: false
|
||||
search: "{{ .Keywords }}"
|
||||
# 0 active 1 incldead 2 onlydead 3 gold 4 no seeders
|
||||
incldead: 0
|
||||
|
||||
rows:
|
||||
selector: tbody#highlighted tr
|
||||
|
||||
fields:
|
||||
year:
|
||||
selector: td:nth-child(2) a:nth-child(1)
|
||||
filters:
|
||||
- name: regexp # find torrent year
|
||||
args: (\d{4})
|
||||
_quality: # (BDRip 1080, BDRip 720p etc)
|
||||
selector: td:nth-child(1) a:nth-child(1) img
|
||||
attribute: alt
|
||||
_audio: # ita audio TAG
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: name
|
||||
- name: regexp
|
||||
args: (DTS AC3 ITA|DTS ITA|AC3 ITA)
|
||||
- name: re_replace
|
||||
args: ["ITA", ""]
|
||||
title:
|
||||
selector: td:nth-child(2) a:nth-child(1)
|
||||
filters:
|
||||
- name: re_replace # separate title
|
||||
args: ["(\\s+\\/\\s+|\\/\\s+|\\s+\\/|\\/)(.*)\\s\\(", " ("]
|
||||
- name: re_replace # remove (yyyy) from the title
|
||||
args: ["(\\(\\d{4}\\)?\\s?)", ""]
|
||||
- name: re_replace # remove |
|
||||
args: ["(\\s\\||\\s\\/)", ""]
|
||||
- name: re_replace # Stagione X --> S0X
|
||||
args: ["(?i)\\bStagion[ei]\\s?(\\d{1})\\b|\\bSeason'?s?\\s?(\\d{1})\\b", "S0$1$2"]
|
||||
- name: re_replace # Stagione XX --> SXX
|
||||
args: ["(?i)\\bStagion[ei]\\s?(\\d{2,})\\b|\\bSeason'?s?\\s?(\\d{2,})\\b", "S$1$2"]
|
||||
- name: re_replace # / Episodio [YY-YY --> EYY-YY
|
||||
args: ["(?i)(\\s\\/?\\s?Episodi[o]?)\\s\\[", "E"]
|
||||
- name: re_replace # Episodio 4 to E4
|
||||
args: ["(?i)\\b(?:[\\s\\/\\|]?Episodi[o]?\\s?(\\d+)|Puntata\\s?(\\d+))", "E$1$2"]
|
||||
- name: re_replace # / Completa [episodi YY-YY --> EYY-YY
|
||||
args: ["(?i)(\\s\\/\\sCompleta\\s\\[episodi\\s)", "E"]
|
||||
- name: re_replace # remove di YY] | remove /YY]
|
||||
args: ["(?i)(\\sdi\\s\\d{1,2}|\\/\\d{1,2})\\]", " "]
|
||||
- name: re_replace # remove various
|
||||
args: ["(?i)(Serie completa|Completa|\\[in pausa\\])", ""]
|
||||
- name: append
|
||||
args: " ({{ .Result.year }}) [{{ .Result._quality }} - {{ .Result._audio }} ITA]"
|
||||
- name: re_replace # replace multiple spaces
|
||||
args: ["[ ]{2,}", " "]
|
||||
details:
|
||||
selector: td:nth-child(2) a:nth-child(1)
|
||||
attribute: href
|
||||
poster:
|
||||
selector: td:nth-child(2)[onmousemove]
|
||||
attribute: onmousemove
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ".*\\(.*,.*,.*,'(.*?)'\\)"
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(3)
|
||||
seeders:
|
||||
selector: td:nth-child(4)
|
||||
optional: true
|
||||
default: 1
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(\\d*) \\(\\+\\d*\\)\n? \\| (\\d*) \\(\\+\\d*\\)", "$1"]
|
||||
leechers:
|
||||
selector: td:nth-child(4)
|
||||
optional: true
|
||||
default: 1
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(\\d*) \\(\\+\\d*\\)\n? \\| (\\d*) \\(\\+\\d*\\)", "$2"]
|
||||
date:
|
||||
selector: td:nth-child(2) i
|
||||
filters:
|
||||
- name: append
|
||||
args: " +02:00" # EET
|
||||
- name: dateparse
|
||||
args: "yyyy-MM-dd HH:mm:ss zzz"
|
||||
category:
|
||||
case:
|
||||
"a[href^=\"details.php\"]:contains(\"Stagione\")": 5040 # TV/HD
|
||||
"*": 2040 # default to Movies/HD
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="pic/freedownload.gif"]: 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
# engine tbd
|
@@ -169,4 +169,4 @@ search:
|
||||
description:
|
||||
selector: td.rowfollow:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.7.34 2023-01-16
|
||||
# NexusPHP v1.7.39 2023-05-15
|
||||
|
@@ -59,8 +59,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -68,15 +66,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -61,8 +61,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -70,15 +68,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -179,4 +179,4 @@ search:
|
||||
description:
|
||||
selector: td.rowfollow:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.7.26 2022-09-15
|
||||
# NexusPHP v1.8.2 2023-05-08
|
||||
|
@@ -65,8 +65,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -74,15 +72,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -6,8 +6,9 @@ language: fr-FR
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://lesaloonv2-0.net/
|
||||
- https://lesaloonv2-0.xyz/
|
||||
legacylinks:
|
||||
- https://lesaloonv2-0.net/
|
||||
- http://lesaloonv2-0.net/ # site forces https
|
||||
|
||||
caps:
|
||||
@@ -121,7 +122,7 @@ settings:
|
||||
default: false
|
||||
|
||||
login:
|
||||
# https://lesaloonv2-0.net/yupy_login.php
|
||||
# https://lesaloonv2-0.xyz/yupy_login.php
|
||||
path: yupy_login.php
|
||||
method: form
|
||||
form: form[action^="login"]
|
||||
@@ -137,7 +138,7 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# http://lesaloonv2-0.net/index.php?page=torrents&search=supernatural+s13e20&parentcategory=0&category=0&genre=0&options=0&active=0
|
||||
# http://lesaloonv2-0.xyz/index.php?page=torrents&search=supernatural+s13e20&parentcategory=0&category=0&genre=0&options=0&active=0
|
||||
- path: index.php
|
||||
inputs:
|
||||
page: torrents
|
||||
|
@@ -9,7 +9,7 @@ followredirect: true
|
||||
# changes to this indexer should also be made to limetorrentsclone
|
||||
links:
|
||||
- https://www.limetorrents.lol/
|
||||
- https://limetorrents.unblockit.asia/
|
||||
- https://limetorrents.unblockit.mov/
|
||||
- https://limetorrents.unblockninja.com/
|
||||
- https://limetorrents.mrunblock.life/
|
||||
- https://limetorrents.nocensor.click/
|
||||
@@ -38,6 +38,7 @@ legacylinks:
|
||||
- https://limetorrents.unblockit.boo/
|
||||
- https://limetorrents.mrunblock.guru/
|
||||
- https://limetorrents.unblockit.click/
|
||||
- https://limetorrents.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -55,8 +55,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -64,15 +62,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -59,8 +59,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -68,15 +66,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -58,8 +58,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -67,15 +65,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -178,4 +178,4 @@ search:
|
||||
filters:
|
||||
- name: replace
|
||||
args: [" 剩余时间:", ""]
|
||||
# NexusPHP v1.7.29 2022-10-13
|
||||
# NexusPHP v1.8.2 2023-05-08
|
||||
|
@@ -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 }}"
|
||||
|
@@ -192,4 +192,4 @@ search:
|
||||
remove: a, img, span
|
||||
description:
|
||||
text: "{{ .Result.genre }}"
|
||||
# NexusPHP v1.7.33 2022-12-19
|
||||
# NexusPHP v1.8.0 2023-04-16
|
||||
|
@@ -188,4 +188,4 @@ search:
|
||||
description:
|
||||
selector: td:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.8.2 2023-05-08
|
||||
# NexusPHP v1.8.3 2023-05-14
|
||||
|
@@ -172,4 +172,4 @@ search:
|
||||
filters:
|
||||
- name: replace
|
||||
args: [" 剩余时间:", ""]
|
||||
# Ourbits 1.1.0 (Based on NexusPHP Standard v1.5 Beta 4) 4691022 2023-05-04
|
||||
# Ourbits 1.1.0 (Based on NexusPHP Standard v1.5 Beta 4) 3feac18 2023-05-30
|
||||
|
@@ -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 }}"
|
||||
|
@@ -185,4 +185,4 @@ search:
|
||||
description:
|
||||
selector: td.rowfollow:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.8.2 2023-04-29
|
||||
# NexusPHP v1.8.4 2023-05-27
|
||||
|
@@ -83,8 +83,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -92,15 +90,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -69,8 +69,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -78,15 +76,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -57,8 +57,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -66,15 +64,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -53,8 +53,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -62,15 +60,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -61,8 +61,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -70,15 +68,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -49,8 +49,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -58,15 +56,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -49,8 +49,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -58,15 +56,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -61,8 +61,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -70,15 +68,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -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 }}"
|
||||
|
@@ -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 }}"
|
||||
@@ -112,7 +112,6 @@ search:
|
||||
sortField: "{{ .Config.sort }}"
|
||||
sortDirection: "{{ .Config.type }}"
|
||||
perPage: 100
|
||||
page: 1
|
||||
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
@@ -211,4 +210,4 @@ search:
|
||||
minimumseedtime:
|
||||
# 2 days (as seconds = 2 x 24 x 60 x 60)
|
||||
text: 172800
|
||||
# json UNIT3D custom edition 1.0.2 (based on 6.5.0)
|
||||
# json UNIT3D custom edition 1.0.1 (based on 6.5.0)
|
||||
|
175
src/Jackett.Common/Definitions/therebels-api.yml
Normal file
175
src/Jackett.Common/Definitions/therebels-api.yml
Normal file
@@ -0,0 +1,175 @@
|
||||
---
|
||||
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://therebels.tv/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {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
|
||||
type: text
|
||||
label: APIKey
|
||||
- name: info_key
|
||||
type: info
|
||||
label: About your API key
|
||||
default: "Find or Generate a new API Token by accessing your <a href=\"https://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
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: created_at
|
||||
options:
|
||||
created_at: created
|
||||
seeders: seeders
|
||||
size: size
|
||||
name: title
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: desc
|
||||
options:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
|
||||
search:
|
||||
paths:
|
||||
# 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
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
episodeNumber: "{{ .Query.Ep }}"
|
||||
imdbId: "{{ .Query.IMDBIDShort }}"
|
||||
tmdbId: "{{ .Query.TMDBID }}"
|
||||
tvdbId: "{{ .Query.TVDBID }}"
|
||||
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
|
||||
sortField: "{{ .Config.sort }}"
|
||||
sortDirection: "{{ .Config.type }}"
|
||||
perPage: 100
|
||||
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["\\.", " "]
|
||||
|
||||
rows:
|
||||
selector: data
|
||||
attribute: attributes
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: category_id
|
||||
title:
|
||||
selector: name
|
||||
details:
|
||||
selector: details_link
|
||||
download:
|
||||
selector: download_link
|
||||
infohash:
|
||||
selector: info_hash
|
||||
poster:
|
||||
selector: meta.poster
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/90x135", ""]
|
||||
imdbid:
|
||||
selector: imdb_id
|
||||
tmdbid:
|
||||
selector: tmdb_id
|
||||
tvdbid:
|
||||
selector: tvdb_id
|
||||
genre:
|
||||
selector: meta.genres
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(?i)(Science Fiction)", "Science_Fiction"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(TV Movie)", "TV_Movie"]
|
||||
- name: replace
|
||||
args: [" & ", "_&_"]
|
||||
description:
|
||||
text: "{{ .Result.genre }}"
|
||||
files:
|
||||
selector: num_file
|
||||
seeders:
|
||||
selector: seeders
|
||||
leechers:
|
||||
selector: leechers
|
||||
grabs:
|
||||
selector: times_completed
|
||||
date:
|
||||
# "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50
|
||||
selector: created_at
|
||||
filters:
|
||||
- name: append
|
||||
args: " +00:00" # GMT
|
||||
- name: dateparse
|
||||
args: "MM/dd/yyyy HH:mm:ss zzz"
|
||||
size:
|
||||
selector: size
|
||||
downloadvolumefactor:
|
||||
# api returns 0%, 25%, 50%, 75%, 100%
|
||||
selector: freeleech
|
||||
case:
|
||||
0%: 1 # not free
|
||||
25%: 0.75
|
||||
50%: 0.5
|
||||
75%: 0.25
|
||||
100%: 0 # freeleech
|
||||
"*": 0 # catch errors
|
||||
uploadvolumefactor:
|
||||
# api returns 0=false, 1=true
|
||||
selector: double_upload
|
||||
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:
|
||||
# 2 days (as seconds = 2 x 24 x 60 x 60)
|
||||
text: 172800
|
||||
# json UNIT3D 6.5.0
|
@@ -63,8 +63,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -72,15 +70,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -10,12 +10,11 @@ requestDelay: 2
|
||||
links:
|
||||
- https://www.torlock2.com/
|
||||
- https://www.torlock.com/
|
||||
- https://torlock.unblockit.asia/
|
||||
- https://torlock.unblockit.mov/
|
||||
- https://torlock.mrunblock.life/
|
||||
- https://torlock.nocensor.click/
|
||||
legacylinks:
|
||||
- https://torlock.com/
|
||||
- https://torlock.unblockit.cam/
|
||||
- https://torlock.nocensor.biz/
|
||||
- https://torlock.unblockit.day/
|
||||
- https://torlock.unblockit.llc/
|
||||
@@ -36,6 +35,7 @@ legacylinks:
|
||||
- https://torlock.unblockit.boo/
|
||||
- https://torlock.mrunblock.guru/
|
||||
- https://torlock.unblockit.click/
|
||||
- https://torlock.unblockit.asia/
|
||||
|
||||
caps:
|
||||
# dont forget to update the search fields category case block
|
||||
|
@@ -8,13 +8,12 @@ encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://www.torrentdownload.info/
|
||||
- https://torrentdownload.unblockit.asia/
|
||||
- https://torrentdownload.unblockit.mov/
|
||||
- https://torrentdownload.mrunblock.life/
|
||||
- https://torrentdownload.nocensor.click/
|
||||
legacylinks:
|
||||
- https://torrentdownload.nocensor.space/
|
||||
- https://torrentdownload.nocensor.work/
|
||||
- https://torrentdownload.unblockit.cam/
|
||||
- https://torrentdownload.nocensor.biz/
|
||||
- https://torrentdownload.unblockit.day/
|
||||
- https://torrentdownload.unblockit.llc/
|
||||
@@ -34,6 +33,7 @@ legacylinks:
|
||||
- https://torrentdownload.unblockit.boo/
|
||||
- https://torrentdownload.mrunblock.guru/
|
||||
- https://torrentdownload.unblockit.click/
|
||||
- https://torrentdownload.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -8,14 +8,13 @@ encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://www.torrentdownloads.pro/
|
||||
- https://torrentdownloads.unblockit.asia/
|
||||
- https://torrentdownloads.unblockit.mov/
|
||||
- https://torrentdownloads.mrunblock.life/
|
||||
- https://torrentdownloads.unblockninja.com/
|
||||
- https://torrentdownloads.nocensor.click/
|
||||
legacylinks:
|
||||
- https://www.torrentdownloads.me/
|
||||
- https://torrentdownloads.nocensor.work/
|
||||
- https://torrentdownloads.unblockit.cam/
|
||||
- https://torrentdownloads.nocensor.biz/
|
||||
- https://torrentdownloads.unblockit.day/
|
||||
- https://torrentdownloads.unblockit.llc/
|
||||
@@ -36,6 +35,7 @@ legacylinks:
|
||||
- https://www.torrentdownloads.info/
|
||||
- https://torrentdownloads.mrunblock.guru/
|
||||
- https://torrentdownloads.unblockit.click/
|
||||
- https://torrentdownloads.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -56,8 +56,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -65,15 +63,17 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: "/api/torrents/filter"
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
|
@@ -9,13 +9,12 @@ followredirect: true
|
||||
links:
|
||||
- https://www.torrentfunk.com/
|
||||
- https://www.torrentfunk2.com/
|
||||
- https://torrentfunk.unblockit.asia/
|
||||
- https://torrentfunk.unblockit.mov/
|
||||
- https://torrentfunk.mrunblock.life/
|
||||
- https://torrentfunk.nocensor.click/
|
||||
legacylinks:
|
||||
- https://torrentfunk.nocensor.space/
|
||||
- https://torrentfunk.nocensor.work/
|
||||
- https://torrentfunk.unblockit.cam/
|
||||
- https://torrentfunk.nocensor.biz/
|
||||
- https://torrentfunk.unblockit.day/
|
||||
- https://torrentfunk.unblockit.llc/
|
||||
@@ -35,6 +34,7 @@ legacylinks:
|
||||
- https://torrentfunk.unblockit.boo/
|
||||
- https://torrentfunk.mrunblock.guru/
|
||||
- https://torrentfunk.unblockit.click/
|
||||
- https://torrentfunk.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -10,7 +10,7 @@ links:
|
||||
- https://torrentgalaxy.to/
|
||||
- https://torrentgalaxy.mx/
|
||||
- https://tgx.rs/
|
||||
- https://torrentgalaxy.unblockit.asia/
|
||||
- https://torrentgalaxy.unblockit.mov/
|
||||
- https://torrentgalaxy.unblockninja.com/
|
||||
legacylinks:
|
||||
- https://torrentgalaxy.org/ # redirects to *.to
|
||||
@@ -18,7 +18,6 @@ legacylinks:
|
||||
- https://tgx.unblocked.monster/
|
||||
- https://torrentgalaxy.nocensor.space/
|
||||
- https://torrentgalaxy.nocensor.work/
|
||||
- https://torrentgalaxy.unblockit.cam/
|
||||
- https://torrentgalaxy.nocensor.biz/
|
||||
- https://torrentgalaxy.unblockit.day/
|
||||
- https://torrentgalaxy.unblockit.llc/
|
||||
@@ -36,6 +35,7 @@ legacylinks:
|
||||
- https://torrentgalaxy.unblockit.bio/
|
||||
- https://torrentgalaxy.su/
|
||||
- https://torrentgalaxy.unblockit.click/
|
||||
- https://torrentgalaxy.unblockit.asia/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -84,6 +84,7 @@ search:
|
||||
# name=&description=&mediainfo=&uploader=&keywords=&tmdbId=&imdbId=&tvdbId=&malId=
|
||||
# &startYear=&endYear=&playlistId=&collectionId=&categories[]=1&perPage=100&free[0]=100
|
||||
- path: torrents
|
||||
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
|
||||
name: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
|
||||
@@ -96,6 +97,7 @@ search:
|
||||
perPage: 100
|
||||
page: 1
|
||||
# supports genre search but you need to know the id, example genres=28 for Acción
|
||||
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["(?i)\\bS(\\d+)", "{{ if .Config.compatOld }}T$1{{ else }}S$1{{ end }}"]
|
||||
@@ -143,24 +145,17 @@ search:
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/90x135", ""]
|
||||
imdbid:
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
attribute: href
|
||||
tmdbid:
|
||||
selector: a[href*="themoviedb.org/"]
|
||||
attribute: href
|
||||
tvdbid:
|
||||
selector: a[href*="thetvdb.com/?tab="]
|
||||
attribute: href
|
||||
selector: div#imdb_id
|
||||
size:
|
||||
selector: td:nth-last-child(5)
|
||||
selector: td.torrent-listings-size
|
||||
seeders:
|
||||
selector: td:nth-last-child(4)
|
||||
selector: td.torrent-listings-seeders
|
||||
leechers:
|
||||
selector: td:nth-last-child(3)
|
||||
selector: td.torrent-listings-leechers
|
||||
grabs:
|
||||
selector: td:nth-last-child(2)
|
||||
selector: td.torrent-listings-completed
|
||||
date:
|
||||
selector: td:nth-last-child(1)
|
||||
selector: td.torrent-listings-age
|
||||
filters:
|
||||
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
|
||||
- name: re_replace
|
||||
|
@@ -122,7 +122,8 @@ settings:
|
||||
|
||||
login:
|
||||
path: user/account/login/
|
||||
method: post
|
||||
method: form
|
||||
form: form[name="login-form"]
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
|
@@ -7,9 +7,8 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentqq259.com/
|
||||
- https://torrentqq260.com/
|
||||
legacylinks:
|
||||
- https://torrentqq244.com/
|
||||
- https://torrentqq245.com/. # typo
|
||||
- https://torrentqq245.com/
|
||||
- https://torrentqq246.com/
|
||||
@@ -25,6 +24,7 @@ legacylinks:
|
||||
- https://torrentqq256.com/
|
||||
- https://torrentqq257.com/
|
||||
- https://torrentqq258.com/
|
||||
- https://torrentqq259.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -63,8 +63,6 @@ settings:
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
@@ -72,14 +70,16 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
|
||||
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
|
||||
- path: api/torrents/filter
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
api_token: "{{ .Config.apikey }}"
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
imdbId: "{{ .Query.IMDBIDShort }}"
|
||||
|
@@ -181,4 +181,4 @@ search:
|
||||
description:
|
||||
selector: td:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.8.2 2023-05-08
|
||||
# NexusPHP v1.8.4 2023-05-27
|
||||
|
@@ -162,4 +162,4 @@ search:
|
||||
description:
|
||||
selector: td:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.8.2 2023-04-30
|
||||
# NexusPHP v1.8.4 2023-06-05
|
||||
|
@@ -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 }}"
|
||||
|
@@ -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:
|
||||
@@ -61,12 +61,13 @@ search:
|
||||
type: json
|
||||
|
||||
inputs:
|
||||
# ignore ' (e.g. search for america's Next Top Model)
|
||||
query_term: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
|
||||
# without this the API sometimes returns nothing
|
||||
limit: 50
|
||||
sort: date_added
|
||||
sort_by: date_added
|
||||
order_by: desc
|
||||
keywordsfilters:
|
||||
# ignore ' (e.g. search for america's Next Top Model)
|
||||
- name: re_replace
|
||||
args: ["[^\\w]+", " "]
|
||||
|
||||
|
@@ -186,4 +186,4 @@ search:
|
||||
description:
|
||||
selector: td.rowfollow:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.8.2 2023-05-08
|
||||
# NexusPHP v1.8.4 2023-05-27
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
@@ -555,10 +556,14 @@ namespace Jackett.Common.Indexers
|
||||
if (Login.Method == "post")
|
||||
{
|
||||
var pairs = new Dictionary<string, string>();
|
||||
foreach (var Input in Definition.Login.Inputs)
|
||||
|
||||
if (Login.Inputs != null && Login.Inputs.Any())
|
||||
{
|
||||
var value = applyGoTemplateText(Input.Value);
|
||||
pairs.Add(Input.Key, value);
|
||||
foreach (var input in Login.Inputs)
|
||||
{
|
||||
var value = applyGoTemplateText(input.Value);
|
||||
pairs.Add(input.Key, value);
|
||||
}
|
||||
}
|
||||
|
||||
var LoginUrl = resolvePath(Login.Path).ToString();
|
||||
@@ -628,18 +633,27 @@ namespace Jackett.Common.Indexers
|
||||
pairs[name] = value;
|
||||
}
|
||||
|
||||
foreach (var Input in Definition.Login.Inputs)
|
||||
if (Login.Inputs != null && Login.Inputs.Any())
|
||||
{
|
||||
var value = applyGoTemplateText(Input.Value);
|
||||
var input = Input.Key;
|
||||
if (Login.Selectors)
|
||||
foreach (var Input in Login.Inputs)
|
||||
{
|
||||
var inputElement = landingResultDocument.QuerySelector(Input.Key);
|
||||
if (inputElement == null)
|
||||
throw new ExceptionWithConfigData(string.Format("Login failed: No input found using selector {0}", Input.Key), configData);
|
||||
input = inputElement.GetAttribute("name");
|
||||
var value = applyGoTemplateText(Input.Value);
|
||||
var input = Input.Key;
|
||||
|
||||
if (Login.Selectors)
|
||||
{
|
||||
var inputElement = landingResultDocument.QuerySelector(Input.Key);
|
||||
|
||||
if (inputElement == null)
|
||||
{
|
||||
throw new ExceptionWithConfigData($"Login failed: No input found using selector {Input.Key}", configData);
|
||||
}
|
||||
|
||||
input = inputElement.GetAttribute("name");
|
||||
}
|
||||
|
||||
pairs[input] = value;
|
||||
}
|
||||
pairs[input] = value;
|
||||
}
|
||||
|
||||
// selector inputs
|
||||
@@ -772,18 +786,22 @@ namespace Jackett.Common.Indexers
|
||||
else if (Login.Method == "get")
|
||||
{
|
||||
var queryCollection = new NameValueCollection();
|
||||
foreach (var Input in Definition.Login.Inputs)
|
||||
|
||||
if (Login.Inputs != null && Login.Inputs.Any())
|
||||
{
|
||||
var value = applyGoTemplateText(Input.Value);
|
||||
queryCollection.Add(Input.Key, value);
|
||||
foreach (var input in Login.Inputs)
|
||||
{
|
||||
var value = applyGoTemplateText(input.Value);
|
||||
queryCollection.Add(input.Key, value);
|
||||
}
|
||||
}
|
||||
|
||||
var LoginUrl = resolvePath(Login.Path + "?" + queryCollection.GetQueryString()).ToString();
|
||||
var loginUrl = resolvePath(Login.Path + "?" + queryCollection.GetQueryString()).ToString();
|
||||
configData.CookieHeader.Value = null;
|
||||
var loginResult = await RequestWithCookiesAsync(LoginUrl, referer: SiteLink, headers: headers);
|
||||
var loginResult = await RequestWithCookiesAsync(loginUrl, referer: SiteLink, headers: headers);
|
||||
configData.CookieHeader.Value = loginResult.Cookies;
|
||||
|
||||
checkForError(loginResult, Definition.Login.Error);
|
||||
checkForError(loginResult, Login.Error);
|
||||
}
|
||||
else if (Login.Method == "oneurl")
|
||||
{
|
||||
@@ -793,11 +811,11 @@ namespace Jackett.Common.Indexers
|
||||
var loginResult = await RequestWithCookiesAsync(LoginUrl, referer: SiteLink, headers: headers);
|
||||
configData.CookieHeader.Value = loginResult.Cookies;
|
||||
|
||||
checkForError(loginResult, Definition.Login.Error);
|
||||
checkForError(loginResult, Login.Error);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new NotImplementedException("Login method " + Definition.Login.Method + " not implemented");
|
||||
throw new NotImplementedException($"Login method {Login.Method} not implemented");
|
||||
}
|
||||
|
||||
logger.Debug($"CardigannIndexer ({Id}): Cookies after login: {CookieHeader}");
|
||||
@@ -1469,7 +1487,18 @@ namespace Jackett.Common.Indexers
|
||||
continue;
|
||||
}
|
||||
|
||||
var parsedJson = JToken.Parse(results);
|
||||
JToken parsedJson;
|
||||
|
||||
try
|
||||
{
|
||||
parsedJson = JToken.Parse(results);
|
||||
}
|
||||
catch (JsonReaderException ex)
|
||||
{
|
||||
logger.Debug("Unexpected response content ({0} bytes): {1}", response.ContentBytes.Length, response.ContentString);
|
||||
|
||||
throw new Exception("Error Parsing Json Response", ex);
|
||||
}
|
||||
|
||||
if (parsedJson == null)
|
||||
{
|
||||
|
@@ -24,7 +24,7 @@ namespace Jackett.Common.Indexers
|
||||
public override string Id => "cinecalidad";
|
||||
public override string Name => "Cinecalidad";
|
||||
public override string Description => "Películas Full HD en Latino Dual.";
|
||||
public override string SiteLink { get; protected set; } = "https://www.cinecalidad.gs/";
|
||||
public override string SiteLink { get; protected set; } = "https://www.cinecalidad.tf/";
|
||||
public override string[] LegacySiteLinks => new[]
|
||||
{
|
||||
"https://cinecalidad.website/",
|
||||
@@ -44,7 +44,8 @@ namespace Jackett.Common.Indexers
|
||||
"https://cinecalidad.dev/",
|
||||
"https://cinecalidad.ms/",
|
||||
"https://www3.cinecalidad.ms/",
|
||||
"https://ww1.cinecalidad.ms/"
|
||||
"https://ww1.cinecalidad.ms/",
|
||||
"https://www.cinecalidad.gs/"
|
||||
};
|
||||
public override string Language => "es-419";
|
||||
public override string Type => "public";
|
||||
|
@@ -26,12 +26,11 @@ namespace Jackett.Common.Indexers
|
||||
public override string[] AlternativeSiteLinks => new[]
|
||||
{
|
||||
"https://www.epublibre.org/",
|
||||
"https://epublibre.unblockit.asia/"
|
||||
"https://epublibre.unblockit.mov/"
|
||||
};
|
||||
public override string[] LegacySiteLinks => new[]
|
||||
{
|
||||
"https://epublibre.org/",
|
||||
"https://epublibre.unblockit.cam/",
|
||||
"https://epublibre.unblockit.day/",
|
||||
"https://epublibre.unblockit.llc/",
|
||||
"https://epublibre.unblockit.blue/",
|
||||
@@ -45,7 +44,8 @@ namespace Jackett.Common.Indexers
|
||||
"https://epublibre.unblockit.ink/",
|
||||
"https://epublibre.unblockit.bio/",
|
||||
"https://epublibre.unblockit.boo/",
|
||||
"https://epublibre.unblockit.click/"
|
||||
"https://epublibre.unblockit.click/",
|
||||
"https://epublibre.unblockit.asia/"
|
||||
};
|
||||
public override string Language => "es-ES";
|
||||
public override string Type => "public";
|
||||
|
@@ -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) ||
|
||||
|
@@ -2,43 +2,43 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils.Logging;
|
||||
using NLog;
|
||||
using NLog.Targets;
|
||||
|
||||
namespace Jackett.Common.Services
|
||||
{
|
||||
|
||||
[Target("LogService")]
|
||||
public class LogCacheService : TargetWithLayout, ILogCacheService
|
||||
{
|
||||
private static List<CachedLog> logs = new List<CachedLog>();
|
||||
|
||||
public void AddLog(LogEventInfo l)
|
||||
{
|
||||
lock (logs)
|
||||
{
|
||||
logs.Insert(0, new CachedLog()
|
||||
{
|
||||
Level = l.Level.Name,
|
||||
Message = l.FormattedMessage,
|
||||
When = l.TimeStamp
|
||||
});
|
||||
logs = logs.Take(200).ToList();
|
||||
}
|
||||
|
||||
}
|
||||
private static List<CachedLog> _Logs = new List<CachedLog>();
|
||||
|
||||
public List<CachedLog> Logs
|
||||
{
|
||||
get
|
||||
{
|
||||
lock (logs)
|
||||
lock (_Logs)
|
||||
{
|
||||
return logs.ToList();
|
||||
return _Logs.ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Write(LogEventInfo logEvent) => AddLog(logEvent);
|
||||
|
||||
private static void AddLog(LogEventInfo logEvent)
|
||||
{
|
||||
lock (_Logs)
|
||||
{
|
||||
_Logs.Insert(0, new CachedLog
|
||||
{
|
||||
Level = logEvent.Level.Name,
|
||||
Message = CleanseLogMessage.Cleanse(logEvent.FormattedMessage),
|
||||
When = logEvent.TimeStamp
|
||||
});
|
||||
|
||||
_Logs = _Logs.Take(200).ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
15
src/Jackett.Common/Utils/Logging/CleanseFileTarget.cs
Normal file
15
src/Jackett.Common/Utils/Logging/CleanseFileTarget.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using System.Text;
|
||||
using NLog;
|
||||
using NLog.Targets;
|
||||
|
||||
namespace Jackett.Common.Utils.Logging
|
||||
{
|
||||
public class CleanseFileTarget : FileTarget
|
||||
{
|
||||
protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
|
||||
{
|
||||
var result = CleanseLogMessage.Cleanse(Layout.Render(logEvent));
|
||||
target.Append(result);
|
||||
}
|
||||
}
|
||||
}
|
74
src/Jackett.Common/Utils/Logging/CleanseLogMessage.cs
Normal file
74
src/Jackett.Common/Utils/Logging/CleanseLogMessage.cs
Normal file
@@ -0,0 +1,74 @@
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using Jackett.Common.Extensions;
|
||||
|
||||
namespace Jackett.Common.Utils.Logging
|
||||
{
|
||||
// See https://github.com/Prowlarr/Prowlarr/blob/develop/src/NzbDrone.Common/Instrumentation/CleanseLogMessage.cs
|
||||
public class CleanseLogMessage
|
||||
{
|
||||
private static readonly Regex[] _CleansingRules =
|
||||
{
|
||||
// Url
|
||||
new Regex(@"(?<=[?&: ;])(apikey|api_key|(?:(?:access|api)[-_]?)?token|pass(?:key|wd)?|auth|authkey|user|u?id|api|[a-z_]*apikey|account|pid|pwd)=(?<secret>[^&=""]+?)(?=[ ""&=]|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"(?<=[?& ;])[^=]*?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"rss\.torrentleech\.org/(?!rss)(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"rss\.torrentleech\.org/rss/download/[0-9]+/(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"iptorrents\.com/[/a-z0-9?&;]*?(?:[?&;](u|tp)=(?<secret>[^&=;]+?))+(?= |;|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"/fetch/[a-z0-9]{32}/(?<secret>[a-z0-9]{32})", RegexOptions.Compiled),
|
||||
new Regex(@"\b(\w*)?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"(?<=authkey = "")(?<secret>[^&=]+?)(?="")", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"(?<=beyond-hd\.[a-z]+/api/torrents/)(?<secret>[^&=][a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"(?<=beyond-hd\.[a-z]+/torrent/download/[\w\d-]+[.]\d+[.])(?<secret>[a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// UNIT3D
|
||||
new Regex(@"(?<=[a-z0-9-]+\.[a-z]+/torrent/download/\d+\.)(?<secret>[^&=][a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// Path
|
||||
new Regex(@"""C:\\Users\\(?<secret>[^\""]+?)(\\|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"""/(home|Users)/(?<secret>[^/""]+?)(/|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// uTorrent
|
||||
new Regex(@"\[""[a-z._]*(username|password)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"\[""(boss_key|boss_key_salt|proxy\.proxy)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// BroadcastheNet (;torrent_pass|torrents_notify_ is for MTV)
|
||||
new Regex(@"""?method""?\s*:\s*""(getTorrents)"",\s*""?params""?\s*:\s*\[\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"getTorrents\(""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"(?<=\?|&|;|=)(authkey|torrent_pass|torrents_notify)[_=](?<secret>[^&=]+?)(?=""|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
|
||||
// Indexer Responses
|
||||
new Regex(@"(?:avistaz|exoticaz|cinemaz|privatehd)\.[a-z]{2,3}/rss/download/(?<secret>[^&=]+?)/(?<secret>[^&=]+?)\.torrent", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"(?:animebytes)\.[a-z]{2,3}/torrent/[0-9]+/download/(?<secret>[^&=]+?)[""]", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@",""info_hash"":""(?<secret>[^&=]+?)"",", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@"""token"":""(?<secret>[^&=]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@",""pass[- _]?key"":""(?<secret>[^&=]+?)"",", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
new Regex(@",""rss[- _]?key"":""(?<secret>[^&=]+?)"",", RegexOptions.Compiled | RegexOptions.IgnoreCase),
|
||||
};
|
||||
|
||||
public static string Cleanse(string message)
|
||||
{
|
||||
if (message.IsNullOrWhiteSpace())
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
foreach (var regex in _CleansingRules)
|
||||
{
|
||||
message = regex.Replace(message, m =>
|
||||
{
|
||||
var value = m.Value;
|
||||
|
||||
foreach (var capture in m.Groups["secret"].Captures.OfType<Capture>().Reverse())
|
||||
{
|
||||
value = value.Replace(capture.Index - m.Index, capture.Length, "(removed)");
|
||||
}
|
||||
|
||||
return value;
|
||||
});
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
}
|
||||
}
|
@@ -3,6 +3,7 @@ using System.IO;
|
||||
using System.Text;
|
||||
using Jackett.Common.Models.Config;
|
||||
using Jackett.Common.Services;
|
||||
using Jackett.Common.Utils.Logging;
|
||||
using NLog;
|
||||
using NLog.Config;
|
||||
using NLog.LayoutRenderers;
|
||||
@@ -21,7 +22,7 @@ namespace Jackett.Common.Utils
|
||||
|
||||
var logConfig = new LoggingConfiguration();
|
||||
|
||||
var logFile = new FileTarget
|
||||
var logFile = new CleanseFileTarget
|
||||
{
|
||||
Layout = "${longdate} ${level} ${message} ${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}",
|
||||
FileName = Path.Combine(settings.DataFolder, logFileName),
|
||||
|
@@ -314,6 +314,7 @@ namespace Jackett.Updater
|
||||
"Definitions/btxpress.yml",
|
||||
"Definitions/casatorrent.yml", // renamed to teamctgame
|
||||
"Definitions/casstudiotv.yml",
|
||||
"Definitions/ccfbits.yml",
|
||||
"Definitions/channelx.yml",
|
||||
"Definitions/cili180.yml", // renamed to liaorencili
|
||||
"Definitions/cilipro.yml",
|
||||
@@ -401,6 +402,7 @@ namespace Jackett.Updater
|
||||
"Definitions/hdreactor.yml", // renamed to hdhouse
|
||||
"Definitions/hdspain.yml",
|
||||
"Definitions/hdstreet.yml",
|
||||
"Definitions/hdtorrentsit.yml",
|
||||
"Definitions/hellashut.yml",
|
||||
"Definitions/hellastz.yml",
|
||||
"Definitions/hidden-palace.yml",
|
||||
|
Reference in New Issue
Block a user