mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-14 16:04:11 +02:00
Compare commits
64 Commits
v0.20.2113
...
v0.20.2186
Author | SHA1 | Date | |
---|---|---|---|
![]() |
f5a39988cc | ||
![]() |
cab5c22735 | ||
![]() |
d896d80133 | ||
![]() |
a344956492 | ||
![]() |
8929747480 | ||
![]() |
03e03a1d34 | ||
![]() |
540af2eb31 | ||
![]() |
c62c1a2e57 | ||
![]() |
9d27c791d3 | ||
![]() |
ca1eb7ff7f | ||
![]() |
c5b604c709 | ||
![]() |
befa49ea80 | ||
![]() |
d056a8e054 | ||
![]() |
2a7878f487 | ||
![]() |
360e18f1d5 | ||
![]() |
42bc31c324 | ||
![]() |
d740d478da | ||
![]() |
aca9162c70 | ||
![]() |
1b0ec029c9 | ||
![]() |
8c33e64605 | ||
![]() |
54b56a4be6 | ||
![]() |
bf581f690e | ||
![]() |
0a9ef3d586 | ||
![]() |
9851993b23 | ||
![]() |
3da72a6411 | ||
![]() |
948c84cad5 | ||
![]() |
b9170c83d9 | ||
![]() |
ae46abdc67 | ||
![]() |
e2b6cea9b4 | ||
![]() |
db0f8a9a4b | ||
![]() |
00c94fd05b | ||
![]() |
64e0913e07 | ||
![]() |
9c6a73f611 | ||
![]() |
b9add2b927 | ||
![]() |
b8c39a90cc | ||
![]() |
b0ba1ea226 | ||
![]() |
55af1cf046 | ||
![]() |
4cb2642139 | ||
![]() |
cd47e95087 | ||
![]() |
788c8e53f1 | ||
![]() |
f53db2f016 | ||
![]() |
6d4958c796 | ||
![]() |
c507dc255a | ||
![]() |
e42c149979 | ||
![]() |
85585c2c02 | ||
![]() |
0f0822f52e | ||
![]() |
00dc9f5dcc | ||
![]() |
4502f5f771 | ||
![]() |
878460d509 | ||
![]() |
628fd32385 | ||
![]() |
924861c96a | ||
![]() |
933f33aa4e | ||
![]() |
ab7e42ec84 | ||
![]() |
9709db9aac | ||
![]() |
4179392d52 | ||
![]() |
6194160d17 | ||
![]() |
f347e9560c | ||
![]() |
88242ba999 | ||
![]() |
a6032c46da | ||
![]() |
10499c6919 | ||
![]() |
fd5a765d98 | ||
![]() |
3c81760067 | ||
![]() |
24b472d8e1 | ||
![]() |
6663bea1f5 |
14
README.md
14
README.md
@@ -46,7 +46,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* BT4G
|
||||
* BTDIGG
|
||||
* BTMET
|
||||
* BTmirror
|
||||
* BTSOW
|
||||
* Byrutor
|
||||
* CloudTorrents
|
||||
@@ -159,6 +158,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* TorrentWhiz ( 토렌트위즈)
|
||||
* Torrentz2eu
|
||||
* Torrentz2nz
|
||||
* TrahT
|
||||
* truPornolabs
|
||||
* Underverse
|
||||
* UnionDHT
|
||||
@@ -223,7 +223,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Sharewood
|
||||
* SkTorrent
|
||||
* SkTorrent-org
|
||||
* SoundPark
|
||||
* themixingbowl (TMB)
|
||||
* Toloka.to
|
||||
* Torrent-Explosiv
|
||||
@@ -256,7 +255,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Aither
|
||||
* AlphaRatio (AR)
|
||||
* AmigosShareClub
|
||||
* anasch.cc
|
||||
* AnimeBytes (AB)
|
||||
* AnimeTracker
|
||||
* AnimeTorrents (AnT) [![(invite needed)][inviteneeded]](#)
|
||||
@@ -288,7 +286,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* BiTTuRK
|
||||
* BJ-Share (BJ)
|
||||
* BlueBird [![(invite needed)][inviteneeded]](#)
|
||||
* Blues-Brothers
|
||||
* Blutopia (BLU)
|
||||
* Borgzelle [![(invite needed)][inviteneeded]](#)
|
||||
* Boxing Torrents
|
||||
@@ -296,7 +293,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* BroadcasTheNet (BTN)
|
||||
* BroadCity
|
||||
* BrokenStones [![(invite needed)][inviteneeded]](#)
|
||||
* BreizhPeers
|
||||
* BrSociety
|
||||
* BTNext (BTNT) [![(invite needed)][inviteneeded]](#)
|
||||
* BTSCHOOL
|
||||
@@ -336,7 +332,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* DivTeam
|
||||
* DocsPedia
|
||||
* Dream Tracker
|
||||
* EbookParadijs
|
||||
* Ebooks-Shares
|
||||
* Empornium (EMP) [![(invite needed)][inviteneeded]](#)
|
||||
* eShareNet
|
||||
@@ -350,7 +345,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Fantastiko
|
||||
* Femdomcult
|
||||
* FileList (FL)
|
||||
* Film-Paleis
|
||||
* FinElite (FE)
|
||||
* FinVip
|
||||
* FunFile (FF)
|
||||
@@ -399,7 +393,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Hebits
|
||||
* HHanClub
|
||||
* House of Devil
|
||||
* HQSource (HQS)
|
||||
* iHDBits
|
||||
* ImmortalSeed (iS)
|
||||
* Immortuos
|
||||
* Indietorrents [![(invite needed)][inviteneeded]](#)
|
||||
@@ -432,7 +426,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* magic-heaven
|
||||
* Magico (Trellas) [![(invite needed)][inviteneeded]](#)
|
||||
* Majomparádé (TurkDepo)
|
||||
* MediaMaatjes
|
||||
* MegamixTracker
|
||||
* MeseVilág (Fairytale World)
|
||||
* Milkie
|
||||
@@ -536,6 +529,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* The Geeks
|
||||
* The New Retro
|
||||
* The Occult [![(invite needed)][inviteneeded]](#)
|
||||
* The Old School
|
||||
* The Place [![(invite needed)][inviteneeded]](#)
|
||||
* The Shinning (TsH)
|
||||
* The Show
|
||||
@@ -830,7 +824,7 @@ To use it, please just request a free API key on [OMDb](http://www.omdbapi.com/a
|
||||
|
||||
- `-d, --DataFolder` Specify the location of the data folder (Must be an admin on Windows)
|
||||
- e.g. --DataFolder="D:\Your Data\Jackett\".
|
||||
- Don't use this on Unix (mono) systems. On Unix just adjust the HOME directory of the user to the datadir or set the XDG_CONFIG_HOME environment variable.
|
||||
- Don't use this on Unix (mono) systems. On Unix just adjust the HOME directory of the user to the data folder or set the XDG_CONFIG_HOME environment variable.
|
||||
|
||||
- `--NoRestart` Don't restart after update
|
||||
|
||||
|
@@ -1,161 +0,0 @@
|
||||
---
|
||||
id: anaschcc
|
||||
name: anasch.cc
|
||||
description: "anasch.cc is a Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: en-US
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://anasch.cc/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: Movies}
|
||||
- {id: 2, cat: TV, desc: TV}
|
||||
- {id: 3, cat: TV, desc: Animation}
|
||||
- {id: 5, cat: Audio, desc: Music}
|
||||
- {id: 12, cat: XXX, desc: Porn}
|
||||
- {id: 29, cat: TV/Sport, desc: Sports}
|
||||
- {id: 37, cat: PC, desc: Software}
|
||||
- {id: 38, cat: Console, desc: Games}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
music-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: info_tpp
|
||||
type: info
|
||||
label: Results Per Page
|
||||
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: 3
|
||||
options:
|
||||
3: created
|
||||
5: seeders
|
||||
4: size
|
||||
2: title
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: 2
|
||||
options:
|
||||
2: desc
|
||||
1: asc
|
||||
|
||||
login:
|
||||
path: index.php?page=login
|
||||
method: form
|
||||
form: form[action^="index.php?page=login"]
|
||||
inputs:
|
||||
uid: "{{ .Config.username }}"
|
||||
pwd: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: div[data-validate^="Valid"]
|
||||
message:
|
||||
selector: div[data-validate^="Valid"]
|
||||
attribute: data-validate
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: index.php
|
||||
inputs:
|
||||
page: torrents
|
||||
active: 0
|
||||
search: "{{ .Keywords }}"
|
||||
$raw: "{{ range .Categories }}category[]={{.}}&{{end}}"
|
||||
# 1 freeleech, 2 2x upload, 3 featured
|
||||
discount[]: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||||
order: "{{ .Config.sort }}"
|
||||
by: "{{ .Config.type }}"
|
||||
|
||||
rows:
|
||||
selector: "table.lista tbody tr:has(a[href^=\"index.php?page=torrent-details\"])"
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: td a[href^="index.php?page=torrents&category[]="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: category[]
|
||||
title:
|
||||
selector: td a[href^="index.php?page=torrent-details"]
|
||||
details:
|
||||
selector: td a[href^="index.php?page=torrent-details"]
|
||||
attribute: href
|
||||
download:
|
||||
selector: td a[href^="download.php"]
|
||||
attribute: href
|
||||
imdbid:
|
||||
selector: a[href^="index.php?page=torrent-details"]
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["javascript:ShowImage('/images/imdb/tt0000000.jpg')", ""]
|
||||
poster:
|
||||
selector: td a[href^="index.php?page=torrent-details"]
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["javascript:ShowImage('", ""]
|
||||
- name: replace
|
||||
args: ["')", ""]
|
||||
- name: replace
|
||||
args: ["/images/imdb/0000000.jpg", ""]
|
||||
genre:
|
||||
selector: td.lista.p-2
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "Genre: (.+?)$"
|
||||
- name: replace
|
||||
args: [" & ", "_&_"]
|
||||
description:
|
||||
text: "{{ .Result.genre }}"
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
date:
|
||||
# 22/01/21 01:28
|
||||
selector: td:nth-child(6)
|
||||
filters:
|
||||
- name: append
|
||||
args: " +00:00" # auto adjusted by site account profile - doesn't adjust for DST
|
||||
- name: dateparse
|
||||
args: "02/01/06 15:04 -07:00"
|
||||
seeders:
|
||||
selector: td:nth-child(7)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
grabs:
|
||||
selector: td:nth-child(9)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src*="freeleech.png"]: 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img[src*="x2u.png"]: 2
|
||||
"*": 1
|
||||
minimumratio:
|
||||
text: 3.0
|
||||
minimumseedtime:
|
||||
# 5 days (as seconds = 5 x 24 x 60 x 60)
|
||||
text: 432000
|
||||
# xbtit
|
@@ -51,8 +51,9 @@ search:
|
||||
selector: quality.string
|
||||
_series:
|
||||
selector: series.string
|
||||
optional: true
|
||||
title:
|
||||
text: "{{ .Result.title_ru }} / {{ .Result.title_en }}{{ if .Result.title_alternative }} / {{ .Result.title_alternative }}{{ else }}{{ end }} ({{ .Result.year }}) [{{ .Result._quality }}] - {{ .Result._series }}"
|
||||
text: "{{ .Result.title_ru }} / {{ .Result.title_en }}{{ if .Result.title_alternative }} / {{ .Result.title_alternative }}{{ else }}{{ end }} ({{ .Result.year }}) [{{ .Result._quality }}]{{ if .Result._series }} - {{ .Result._series }}{{ else }}{{ end }}"
|
||||
_code:
|
||||
selector: ..code
|
||||
details:
|
||||
|
@@ -12,10 +12,10 @@ caps:
|
||||
categorymappings:
|
||||
- {id: 85, cat: Movies/SD, desc: "Film/Cam/Hun"}
|
||||
- {id: 86, cat: Movies/SD, desc: "Film/Cam/Eng"}
|
||||
- {id: 15, cat: Movies/SD, desc: "Film/XviD/Hun"}
|
||||
- {id: 16, cat: Movies/SD, desc: "Film/XviD/Eng"}
|
||||
- {id: 34, cat: Movies/HD, desc: "Film/x264/Hun"}
|
||||
- {id: 48, cat: Movies/HD, desc: "Film/x264/Eng"}
|
||||
- {id: 15, cat: Movies/SD, desc: "Film/SD/Hun"}
|
||||
- {id: 16, cat: Movies/SD, desc: "Film/SD/Eng"}
|
||||
- {id: 17, cat: Movies/DVD, desc: "Film/DVD/Hun"}
|
||||
- {id: 19, cat: Movies/DVD, desc: "Film/DVD/Eng"}
|
||||
- {id: 83, cat: Movies/HD, desc: "Film/HD/Hun"}
|
||||
- {id: 82, cat: Movies/HD, desc: "Film/HD/Eng"}
|
||||
- {id: 94, cat: Movies/HD, desc: "Film/FHD/Hun"}
|
||||
@@ -37,18 +37,16 @@ caps:
|
||||
- {id: 49, cat: PC/0day, desc: "Program/Rip"}
|
||||
- {id: 14, cat: PC, desc: "Program/Egyéb"}
|
||||
- {id: 64, cat: Movies, desc: "Film/Pack"}
|
||||
- {id: 24, cat: Audio/Video, desc: "Videóklip"}
|
||||
- {id: 70, cat: Audio/Audiobook, desc: "Hangoskönyv"}
|
||||
- {id: 27, cat: Books/EBook, desc: "Könyv/Hun"}
|
||||
- {id: 50, cat: Books/EBook, desc: "Könyv/Eng"}
|
||||
- {id: 65, cat: Other, desc: "Egyéb"}
|
||||
# the following are no longer in the cat list in the search page, but are still in the profile cat list
|
||||
- {id: 67, cat: PC/Mobile-Android, desc: "Program/Android"}
|
||||
- {id: 17, cat: Movies/DVD, desc: "Film/DVD/Hun"}
|
||||
- {id: 19, cat: Movies/DVD, desc: "Film/DVD/Eng"}
|
||||
- {id: 24, cat: Audio/Video, desc: "Videóklipp"}
|
||||
- {id: 33, cat: XXX/SD, desc: "Film/SD/XXX"}
|
||||
- {id: 89, cat: XXX/x264, desc: "Film/HD/XXX"}
|
||||
- {id: 66, cat: XXX/ImageSet, desc: "Képek/XXX"}
|
||||
# the following are no longer in the cat list in the search page, but are still in the profile cat list
|
||||
- {id: 67, cat: PC/Mobile-Android, desc: "Program/Mobil"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
@@ -95,7 +93,7 @@ login:
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
test:
|
||||
path: index.php
|
||||
selector: span[onclick^="window.open('logout.php?k="]
|
||||
selector: i[onclick^="window.open('logout.php?k="]
|
||||
|
||||
search:
|
||||
paths:
|
||||
@@ -121,12 +119,9 @@ search:
|
||||
selector: "table[width=\"100%\"][align=\"center\"]:first-child tbody tr:has(div.tooltip){{ if .Config.freeleech }}:has(i:contains(\"(Free)\")){{ else }}{{ end }}"
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href*=".php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
categorydesc:
|
||||
selector: img[src^="pic/kategoria/"]
|
||||
attribute: title
|
||||
genre:
|
||||
selector: span.tooltiptext
|
||||
description:
|
||||
|
@@ -1,192 +0,0 @@
|
||||
---
|
||||
id: bluesbrothers
|
||||
name: Blues-Brothers
|
||||
description: "Blues-Brothers is a Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: en-US
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://blues-brothers.biz/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 9, cat: TV/Anime, desc: "Anime"}
|
||||
- {id: 1, cat: PC/0day, desc: "Apps"}
|
||||
- {id: 17, cat: Audio/Audiobook, desc: "AudioBooks"}
|
||||
- {id: 16, cat: Books/EBook, desc: "Ebooks"}
|
||||
- {id: 12, cat: PC/Games, desc: "Games PC"}
|
||||
- {id: 7, cat: Console/PS3, desc: "Games PS3"}
|
||||
- {id: 19, cat: Console/Wii, desc: "Games Wii"}
|
||||
- {id: 8, cat: Console/XBox 360, desc: "Games XBOX360"}
|
||||
- {id: 18, cat: PC/Mac, desc: "MAC"}
|
||||
- {id: 41, cat: PC/Mobile-Android, desc: "Mobile"}
|
||||
- {id: 26, cat: Movies, desc: "Movie BDRip"}
|
||||
- {id: 29, cat: Movies/HD, desc: "Movie BluRay 1080p"}
|
||||
- {id: 28, cat: Movies/HD, desc: "Movie BluRay 720p"}
|
||||
- {id: 27, cat: Movies/SD, desc: "Movie BRRip"}
|
||||
- {id: 24, cat: Movies/SD, desc: "Movie CAM/TS"}
|
||||
- {id: 23, cat: Movies/DVD, desc: "Movie DVD-R"}
|
||||
- {id: 11, cat: Movies/SD, desc: "Movie DVDRip"}
|
||||
- {id: 25, cat: Movies/SD, desc: "Movie DVDSCR/R5"}
|
||||
- {id: 30, cat: Movies, desc: "Movie Packs"}
|
||||
- {id: 10, cat: Movies/HD, desc: "Movie XviD x264"}
|
||||
- {id: 6, cat: XXX, desc: "Movie XXX"}
|
||||
- {id: 22, cat: Audio/Lossless, desc: "Music Flac"}
|
||||
- {id: 21, cat: Audio/MP3, desc: "Music MP3"}
|
||||
- {id: 14, cat: Audio, desc: "Music Packs"}
|
||||
- {id: 20, cat: Audio/Video, desc: "Music Videos"}
|
||||
- {id: 34, cat: TV, desc: "TV Packs"}
|
||||
- {id: 36, cat: TV/HD, desc: "TV X264 HD"}
|
||||
- {id: 37, cat: TV/SD, desc: "TV X264 SD"}
|
||||
- {id: 35, cat: TV/SD, desc: "TV XviD"}
|
||||
- {id: 38, cat: Other, desc: "VIP"}
|
||||
- {id: 40, cat: Other, desc: "VIP ONLY"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, genre]
|
||||
movie-search: [q, genre]
|
||||
music-search: [q, genre]
|
||||
book-search: [q, genre]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: 4
|
||||
options:
|
||||
4: created
|
||||
7: seeders
|
||||
5: size
|
||||
1: title
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: desc
|
||||
options:
|
||||
desc: desc
|
||||
asc: asc
|
||||
- name: info_tpp
|
||||
type: info
|
||||
label: Results Per Page
|
||||
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
|
||||
|
||||
login:
|
||||
path: login.php
|
||||
method: form
|
||||
form: form[action="takelogin.php"]
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
use_ssl: 1
|
||||
perm_ssl: ""
|
||||
returnto: /
|
||||
error:
|
||||
- selector: table.main:contains("Login failed!")
|
||||
message:
|
||||
selector: table tr td.colhead2
|
||||
test:
|
||||
path: /
|
||||
selector: a[href*="logout.php?hash_please="]
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://blues-brothers.biz/browse.php?c27=1&c28=1&c29=1&search=&searchin=title&incldead=1&sort=4&type=desc
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
search: "{{ if .Query.Genre }}{{ .Query.Genre }} {{ else }}{{ end }}{{ .Keywords }}"
|
||||
# title, descr, genre, all
|
||||
searchin: "{{ if .Query.Genre }}all{{ else }}title{{ end }}"
|
||||
# 0 active, 1 incldead, 2 onlydead
|
||||
incldead: 1
|
||||
only_free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||||
sort: "{{ .Config.sort }}"
|
||||
type: "{{ .Config.type }}"
|
||||
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["(\\w+)", " +$1"] # prepend + to each word
|
||||
|
||||
rows:
|
||||
selector: table.table-bordered tr:has(a[href^="download.php?torrent="])
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="browse.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "Tip\\('<b>(.+?)</b>"
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?torrent="]
|
||||
attribute: href
|
||||
poster:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: regexp
|
||||
args: src=\\'(.+?)\\'
|
||||
- name: replace
|
||||
args: ["./pic/noposter.png", ""]
|
||||
genre:
|
||||
selector: i
|
||||
description:
|
||||
text: "{{ .Result.genre }}"
|
||||
files:
|
||||
selector: td:nth-child(5)
|
||||
date_day:
|
||||
selector: td:nth-child(7):contains("day")
|
||||
optional: true
|
||||
filters:
|
||||
- name: fuzzytime
|
||||
date_year:
|
||||
selector: td:nth-child(7):not(:contains("day"))
|
||||
optional: true
|
||||
filters:
|
||||
- name: append
|
||||
args: " +00:00" # auto adjusted by site account profile
|
||||
- name: dateparse
|
||||
args: "Jan 2 2006 03:04 PM -07:00"
|
||||
date:
|
||||
text: "{{ if or .Result.date_year .Result.date_day }}{{ or .Result.date_year .Result.date_day }}{{ else }}now{{ end }}"
|
||||
size:
|
||||
selector: td:nth-child(8)
|
||||
grabs:
|
||||
selector: td:nth-child(9)
|
||||
seeders:
|
||||
selector: td:nth-child(10)
|
||||
leechers:
|
||||
selector: td:nth-child(11)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"a.info:contains(\"[FREE]\")": 0
|
||||
"a.info:contains(\"[SILVER]\")": 0.5
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
minimumseedtime:
|
||||
# 2 days (as seconds = 2 x 24 x 60 x 60)
|
||||
text: 172800
|
||||
# U-232 V5
|
@@ -16,6 +16,7 @@ caps:
|
||||
- {id: 3, cat: Audio/Audiobook, desc: "Audiobooks"}
|
||||
- {id: 4, cat: Other, desc: "Arquivos de Auxilio"}
|
||||
- {id: 6, cat: Other, desc: "Graduação"}
|
||||
- {id: 7, cat: TV/Documentary, desc: "Documentários"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
@@ -1,102 +0,0 @@
|
||||
---
|
||||
id: btmirror
|
||||
name: BTmirror
|
||||
description: "BTmirror is a Public BitTorrent DHT search engine."
|
||||
language: en-US
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://btsao.com/
|
||||
- https://btmirror.unblockit.nz/
|
||||
legacylinks:
|
||||
- https://btmirror.unblockit.blue/
|
||||
- https://btmirror.unblockit.name/
|
||||
- https://btmirror.unblockit.ist/
|
||||
- https://btmirror.unblockit.bet/
|
||||
- https://btmirror.unblockit.cat/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
Other: Other
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: info_8000
|
||||
type: info
|
||||
label: About BTmirror Categories
|
||||
default: BTmirror does not return categories in its search results.</br>To add to your Apps' Torznab indexer, replace all categories with 8000(Other).
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: create_time
|
||||
options:
|
||||
relavance: relevance
|
||||
create_time: created
|
||||
length: size
|
||||
|
||||
download:
|
||||
infohash:
|
||||
hash:
|
||||
selector: p.magnet a
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([A-F|a-f|0-9]{40})
|
||||
title:
|
||||
selector: p.magnet a
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "&dn=(.+?)$"
|
||||
- name: validfilename
|
||||
|
||||
search:
|
||||
# https://btsao.com/en/search/2022/?c=&s=create_time
|
||||
# returns 10 results per page
|
||||
paths:
|
||||
- path: "en/search/{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}/"
|
||||
- path: "en/search/{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}/2"
|
||||
inputs:
|
||||
c: ""
|
||||
s: "{{ .Config.sort }}"
|
||||
|
||||
rows:
|
||||
selector: div.ssbox
|
||||
|
||||
fields:
|
||||
category:
|
||||
text: Other
|
||||
title:
|
||||
selector: h3
|
||||
details:
|
||||
selector: h3 a
|
||||
attribute: href
|
||||
download:
|
||||
selector: h3 a
|
||||
attribute: href
|
||||
date:
|
||||
selector: span:contains("date:") b
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "2006-01-02"
|
||||
size:
|
||||
selector: span:contains("size:") b
|
||||
files:
|
||||
selector: span:contains("files:") b
|
||||
grabs:
|
||||
selector: span:contains("人气:") b
|
||||
seeders:
|
||||
text: 1
|
||||
leechers:
|
||||
text: 1
|
||||
downloadvolumefactor:
|
||||
text: 0
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
# engine: n/a
|
@@ -7,9 +7,8 @@ type: public
|
||||
encoding: UTF-8
|
||||
# use https://tellme.pw/btsow to find the new domain
|
||||
links:
|
||||
- https://btsow.sbs/
|
||||
- https://btsow.quest/
|
||||
legacylinks:
|
||||
- https://btsow.website/
|
||||
- https://btsow.online/
|
||||
- https://btsow.work/
|
||||
- https://btsow.store/
|
||||
@@ -24,6 +23,7 @@ legacylinks:
|
||||
- https://btsow.bar/
|
||||
- https://btsow.click/
|
||||
- https://btsow.cfd/
|
||||
- https://btsow.sbs/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
|
@@ -26,6 +26,7 @@ caps:
|
||||
- {id: 61, cat: Movies/HD, desc: "HD Mesano"}
|
||||
- {id: 50, cat: PC/Games, desc: "Igre"}
|
||||
- {id: 44, cat: Books, desc: "Knjige"}
|
||||
- {id: 80, cat: TV, desc: "Paketi"}
|
||||
- {id: 46, cat: Audio, desc: "Koncerti"}
|
||||
- {id: 58, cat: Audio/Lossless, desc: "Lossless/Domaće"}
|
||||
- {id: 59, cat: Audio/Lossless, desc: "Lossless/Strano"}
|
||||
|
@@ -1,190 +0,0 @@
|
||||
---
|
||||
id: ebookparadijs
|
||||
name: EbookParadijs
|
||||
description: "EbookParadijs is a DUTCH Private Tracker for EBOOKS"
|
||||
language: nl-NL
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.ebookparadijs.org/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 2, cat: Books/EBook, desc: "Roman"}
|
||||
- {id: 3, cat: Books/EBook, desc: "Thriller"}
|
||||
- {id: 4, cat: Books/EBook, desc: "Diverse"}
|
||||
- {id: 7, cat: Books/EBook, desc: "Jeugd"}
|
||||
- {id: 8, cat: Books/EBook, desc: "Oorlog"}
|
||||
- {id: 9, cat: Books/EBook, desc: "Luisterboeken"}
|
||||
- {id: 10, cat: Books/EBook, desc: "Stripboeken"}
|
||||
- {id: 11, cat: Books/EBook, desc: "Crime"}
|
||||
- {id: 13, cat: Books/EBook, desc: "Detective"}
|
||||
- {id: 15, cat: Books/EBook, desc: "Erothiek"}
|
||||
- {id: 16, cat: Books/EBook, desc: "Tijdschriften"}
|
||||
- {id: 17, cat: Books/EBook, desc: "Hobby"}
|
||||
- {id: 19, cat: Books/EBook, desc: "Medisch"}
|
||||
- {id: 21, cat: Books/EBook, desc: "Sport"}
|
||||
- {id: 50, cat: Books/EBook, desc: "Kookboeken"}
|
||||
- {id: 51, cat: Books/EBook, desc: "Fantasy"}
|
||||
- {id: 52, cat: Books/EBook, desc: "Kerst"}
|
||||
- {id: 53, cat: Books/EBook, desc: "Waargebeurd"}
|
||||
- {id: 56, cat: Books/EBook, desc: "Engels"}
|
||||
- {id: 57, cat: Books/EBook, desc: "Maatschappij"}
|
||||
- {id: 58, cat: Books/EBook, desc: "Biografie"}
|
||||
- {id: 61, cat: Books/EBook, desc: "Geschiedenis"}
|
||||
- {id: 60, cat: Books/EBook, desc: "Sci-Fi"}
|
||||
- {id: 64, cat: Books/EBook, desc: "Literatuur"}
|
||||
- {id: 65, cat: Books/EBook, desc: "Non-Fiction"}
|
||||
- {id: 66, cat: Books/EBook, desc: "Bladmuziek"}
|
||||
- {id: 67, cat: Books/EBook, desc: "young Adult"}
|
||||
- {id: 68, cat: Books/EBook, desc: "feelgood romans"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: flaresolverr
|
||||
type: info
|
||||
label: FlareSolverr
|
||||
default: This site may use DDoS-Guard Protection, therefore Jackett requires <a href="https://github.com/Jackett/Jackett#configuring-flaresolverr" target="_blank">FlareSolverr</a> to access it.
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Filter freeleech only
|
||||
default: false
|
||||
- name: thankyou
|
||||
type: text
|
||||
label: Thank You Comment
|
||||
- name: info_comment
|
||||
type: info
|
||||
label: Thank you comment
|
||||
default: This site requires you to leave a Thank You comment before you can download. Enter your personalised comment above.
|
||||
|
||||
login:
|
||||
path: login.php
|
||||
method: form
|
||||
form: form[action="takelogin.php"]
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
returnto: "/"
|
||||
error:
|
||||
- selector: td.embedded:contains("fout")
|
||||
test:
|
||||
path: /
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
download:
|
||||
before:
|
||||
# https://www.ebookparadijs.org/comment.php?action=add&tid=23079
|
||||
path: comment.php
|
||||
method: post
|
||||
inputs:
|
||||
action: add
|
||||
tid: "{{ .DownloadUri.Query.id }}"
|
||||
text: "{{ .Config.thankyou }}"
|
||||
submit: Opslaan
|
||||
selectors:
|
||||
- selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
incldead: 1
|
||||
|
||||
rows:
|
||||
selector: "table.mainouter{{ if .Config.freeleech }}:has(img[src=\"pic/freedlfsu.gif\"]){{ else }}{{ end }}"
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="browse.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
poster:
|
||||
selector: img[src*="/covers/"]
|
||||
attribute: src
|
||||
title:
|
||||
selector: a[href^="details.php?id="]
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(4) table tr td:nth-child(2)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "(.+?) in"
|
||||
files:
|
||||
selector: td:nth-child(4) table tr td:nth-child(2)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "in (\\d+) bestan"
|
||||
grabs:
|
||||
selector: td:nth-child(4) table tr:nth-child(2) td:nth-child(1)
|
||||
date:
|
||||
selector: td:nth-child(4) table tr:nth-child(2) td:last-child
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["januari", "January"]
|
||||
- name: replace
|
||||
args: ["februari", "February"]
|
||||
- name: replace
|
||||
args: ["maart", "March"]
|
||||
- name: replace
|
||||
args: ["april", "April"]
|
||||
- name: replace
|
||||
args: ["mei", "May"]
|
||||
- name: replace
|
||||
args: ["juni", "June"]
|
||||
- name: replace
|
||||
args: ["juli", "July"]
|
||||
- name: replace
|
||||
args: ["augustus", "August"]
|
||||
- name: replace
|
||||
args: ["september", "September"]
|
||||
- name: replace
|
||||
args: ["oktober", "October"]
|
||||
- name: replace
|
||||
args: ["november", "November"]
|
||||
- name: replace
|
||||
args: ["december", "December"]
|
||||
- name: re_replace
|
||||
args: ["\\s*om\\s*", " "]
|
||||
- name: append
|
||||
args: " +01:00" # CET
|
||||
- name: dateparse
|
||||
args: "2 January 2006 15:04:05 -07:00"
|
||||
seeders_optional:
|
||||
optional: true
|
||||
selector: td:nth-child(4) table tr:nth-child(3) td:nth-child(5) font b
|
||||
seeders:
|
||||
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
|
||||
leechers_optional:
|
||||
optional: true
|
||||
selector: td:nth-child(4) table tr:nth-child(3) td:nth-child(5) font font b
|
||||
leechers:
|
||||
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="pic/freedlfsu.gif"]: 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
# minimumratio: ratioless site, uses credit points instead.
|
||||
# engine n/a
|
@@ -71,6 +71,7 @@ caps:
|
||||
- {id: Comics, cat: Books/Comics, desc: Books Comics}
|
||||
- {id: Ebooks, cat: Books/EBook, desc: Books Ebook}
|
||||
- {id: Other, cat: Other/Misc, desc: Other}
|
||||
- {id: Other Applications, cat: PC, desc: Other Applications}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
@@ -5,6 +5,7 @@ description: "EXT Torrents is a Public torrent site for MOVIES / TV / GENERAL"
|
||||
language: en-US
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
requestDelay: 2.5
|
||||
links:
|
||||
- https://ext.to/
|
||||
- https://site.extto.com/
|
||||
|
@@ -1,199 +0,0 @@
|
||||
---
|
||||
id: film-paleis
|
||||
name: Film-Paleis
|
||||
description: "Film-Paleis is a DUTCH Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: nl-NL
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.film-paleis.me/
|
||||
legacylinks:
|
||||
- http://www.film-paleis.me/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 2, cat: Movies/BluRay, desc: "Bluray/HD"}
|
||||
- {id: 3, cat: Movies/DVD, desc: "DVD Kids"}
|
||||
- {id: 4, cat: Audio/Video, desc: "DVD Muziek"}
|
||||
- {id: 5, cat: Movies/DVD, desc: "DVD Films"}
|
||||
- {id: 7, cat: Movies/UHD, desc: "4K films"}
|
||||
- {id: 8, cat: XXX, desc: "Erotiek"}
|
||||
- {id: 9, cat: PC/Mobile-Other, desc: "GSM/Navigatie"}
|
||||
- {id: 10, cat: Audio, desc: "Muziek Album"}
|
||||
- {id: 11, cat: Audio/Other, desc: "Muziek Diverse"}
|
||||
- {id: 12, cat: Console/NDS, desc: "Nintendo"}
|
||||
- {id: 13, cat: Movies, desc: "Classic"}
|
||||
- {id: 15, cat: Other, desc: "Overige"}
|
||||
- {id: 16, cat: PC/0day, desc: "PC Software"}
|
||||
- {id: 17, cat: PC, desc: "PC Spellen"}
|
||||
- {id: 19, cat: TV, desc: "TV Series"}
|
||||
- {id: 21, cat: Movies/SD, desc: "Divx/Xvid"}
|
||||
- {id: 24, cat: Books/EBook, desc: "E-Books"}
|
||||
- {id: 26, cat: Audio/Other, desc: "Cabaret"}
|
||||
- {id: 27, cat: TV/Documentary, desc: "Documentaire"}
|
||||
- {id: 31, cat: Movies/HD, desc: "FP-release"}
|
||||
- {id: 32, cat: Audio/Audiobook, desc: "Luister Boeken"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, imdbid]
|
||||
movie-search: [q, imdbid]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: flaresolverr
|
||||
type: info
|
||||
label: FlareSolverr
|
||||
default: This site may use DDoS-Guard Protection, therefore Jackett requires <a href="https://github.com/Jackett/Jackett#configuring-flaresolverr" target="_blank">FlareSolverr</a> to access it.
|
||||
- name: thankyou
|
||||
type: text
|
||||
label: Thank You Comment
|
||||
- name: info
|
||||
type: info
|
||||
label: Thank you comment
|
||||
default: This site requires you to leave a Thank You comment before you can download. Enter your personalised comment above. Minimum of at least 10 characters.
|
||||
|
||||
login:
|
||||
path: login.php
|
||||
method: form
|
||||
form: form[action="takelogin.php"]
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
returnto: "/"
|
||||
error:
|
||||
- selector: td.embedded:contains("fout")
|
||||
test:
|
||||
path: /
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
download:
|
||||
before:
|
||||
path: comment.php
|
||||
method: post
|
||||
inputs:
|
||||
action: add
|
||||
tid: "{{ .DownloadUri.Query.id }}"
|
||||
text: "{{ .Config.thankyou }}"
|
||||
submit: Opslaan
|
||||
selectors:
|
||||
- selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
|
||||
incldead: 1
|
||||
# does not return imdb link in results
|
||||
keywordsfilters:
|
||||
- name: re_replace # S01E02 to 1 2
|
||||
args: ["(?i)\\bS0*(\\d{1,2})\\s*E0*(\\d{1,2})\\b", "$1 $2"]
|
||||
- name: re_replace # S01 to 1
|
||||
args: ["(?i)\\bS0*(\\d{1,2})\\b", "$1"]
|
||||
|
||||
rows:
|
||||
selector: table.mainouter
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
title:
|
||||
selector: a[href^="details.php?id="]
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(?i)(seizoen\\s*)(\\d{1,2})\\s*(tot|t\/m|&|\\+)\\s*(\\d{1,2})", "S$2-$4"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(seizoen\\s*)(\\d{1,2})", "S$2"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(afl.\\s*|aflevering\\s*|ep.\\s*)(\\d{1,2})\\s*(tot|t\/m|&|\\+)\\s*(\\d{1,2})", "E$2-$4"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(afl.\\s*|aflevering\\s*|ep.\\s*)(\\d{1,2})", "E$2"]
|
||||
- name: re_replace
|
||||
args: ["(?i)compleet", "Complete"]
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
category:
|
||||
selector: a[href^="browse.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
download:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
poster:
|
||||
selector: img[src*="/covers/"]
|
||||
attribute: src
|
||||
size:
|
||||
selector: td:nth-child(4) table tr td:nth-child(2)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "(.+?) in"
|
||||
files:
|
||||
selector: td:nth-child(4) table tr td:nth-child(2)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "in (\\d+) bestan"
|
||||
grabs:
|
||||
selector: td:nth-child(4) table tr:nth-child(2) td:nth-child(1)
|
||||
date:
|
||||
selector: td:nth-child(4) table tr:nth-child(2) td:nth-child(2)
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["januari", "January"]
|
||||
- name: replace
|
||||
args: ["februari", "February"]
|
||||
- name: replace
|
||||
args: ["maart", "March"]
|
||||
- name: replace
|
||||
args: ["april", "April"]
|
||||
- name: replace
|
||||
args: ["mei", "May"]
|
||||
- name: replace
|
||||
args: ["juni", "June"]
|
||||
- name: replace
|
||||
args: ["juli", "July"]
|
||||
- name: replace
|
||||
args: ["augustus", "August"]
|
||||
- name: replace
|
||||
args: ["september", "September"]
|
||||
- name: replace
|
||||
args: ["oktober", "October"]
|
||||
- name: replace
|
||||
args: ["november", "November"]
|
||||
- name: replace
|
||||
args: ["december", "December"]
|
||||
- name: re_replace
|
||||
args: ["\\s*om\\s*", " "]
|
||||
- name: append
|
||||
args: " +01:00" # CET
|
||||
- name: dateparse
|
||||
args: "2 January 2006 15:04:05 -07:00"
|
||||
seeders_optional:
|
||||
optional: true
|
||||
selector: td:nth-child(4) table tr:nth-child(3) td:nth-child(5) font b
|
||||
seeders:
|
||||
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
|
||||
leechers_optional:
|
||||
optional: true
|
||||
selector: td:nth-child(4) table tr:nth-child(3) td:nth-child(5) font font b
|
||||
leechers:
|
||||
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="pic/freedlfsu.gif"]: 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
# engine n/a
|
@@ -108,7 +108,6 @@ search:
|
||||
args: cat
|
||||
title:
|
||||
selector: a[href^="julkaisu.php?id="]
|
||||
attribute: title
|
||||
details:
|
||||
selector: a[href^="julkaisu.php?id="]
|
||||
attribute: href
|
||||
|
@@ -221,18 +221,18 @@ search:
|
||||
- name: regexp
|
||||
args: "src=(.+?) "
|
||||
date:
|
||||
selector: td:nth-last-child(8)
|
||||
selector: td:nth-last-child(9)
|
||||
filters:
|
||||
- name: append
|
||||
args: " +00:00" # auto adjusted by site account profile
|
||||
- name: dateparse
|
||||
args: "02/01/2006 -07:00"
|
||||
seeders:
|
||||
selector: td:nth-last-child(7)
|
||||
selector: td:nth-last-child(8)
|
||||
leechers:
|
||||
selector: td:nth-last-child(6)
|
||||
selector: td:nth-last-child(7)
|
||||
grabs:
|
||||
selector: td:nth-last-child(5)
|
||||
selector: td:nth-last-child(6)
|
||||
size:
|
||||
selector: td:nth-last-child(4)
|
||||
downloadvolumefactor:
|
||||
|
@@ -105,6 +105,16 @@ login:
|
||||
path: index.php
|
||||
selector: a[href*="/logout.php?logouthash="]
|
||||
|
||||
download:
|
||||
before:
|
||||
path: takethanks.php
|
||||
method: post
|
||||
inputs:
|
||||
torrentid: "{{ .DownloadUri.Query.id }}"
|
||||
selectors:
|
||||
- selector: a[href*="download.php?id="]
|
||||
attribute: href
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
@@ -150,7 +160,7 @@ search:
|
||||
- name: dateparse
|
||||
args: "02-01-2006 15:04 -07:00"
|
||||
download:
|
||||
selector: a[href*="download.php?id="]
|
||||
selector: div[id^="port-target-"] a
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
|
@@ -1,138 +0,0 @@
|
||||
---
|
||||
id: hqsource
|
||||
name: HQSource
|
||||
description: "HQSource (HQS) is a POLISH Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: pl-PL
|
||||
type: private
|
||||
encoding: ISO-8859-2
|
||||
links:
|
||||
- https://hqsource.org/
|
||||
legacylinks:
|
||||
- http://hqsource.org/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 36, cat: Movies/3D, desc: "3D"}
|
||||
- {id: 3, cat: Movies/UHD, desc: "4K/UHD"}
|
||||
- {id: 2, cat: Movies/HD, desc: "BDRip"}
|
||||
- {id: 1, cat: Movies/HD, desc: "BRRip"}
|
||||
- {id: 49, cat: Movies/BluRay, desc: "BluRay"}
|
||||
- {id: 8, cat: Movies/SD, desc: "DVD"}
|
||||
- {id: 4, cat: TV/HD, desc: "HDTV"}
|
||||
- {id: 7, cat: Movies/SD, desc: "HQDVDRip"}
|
||||
- {id: 45, cat: Movies/HD, desc: "MKV"}
|
||||
- {id: 11, cat: Audio, desc: "Music"}
|
||||
- {id: 6, cat: Other, desc: "Special"}
|
||||
- {id: 46, cat: PC, desc: "Tools"}
|
||||
- {id: 9, cat: TV, desc: "TV-Series"}
|
||||
- {id: 5, cat: Movies, desc: "WEB-DL"}
|
||||
- {id: 35, cat: XXX, desc: "XXX"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
music-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: pin
|
||||
type: text
|
||||
label: Pin
|
||||
|
||||
login:
|
||||
path: takelogin.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
pin: "{{ .Config.pin }}"
|
||||
returnto: /
|
||||
error:
|
||||
- selector: td.embedded:has(h2:contains("failed"))
|
||||
- selector: td.embedded:has(h2:contains("Error"))
|
||||
test:
|
||||
selector: a[href^="logout.php"]
|
||||
path: browse.php
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
incldead: 1
|
||||
polish: 0
|
||||
# 0 both, 1 name, 2 desc
|
||||
blah: 1
|
||||
|
||||
rows:
|
||||
selector: table#line > tbody > tr:has(a[href^="details.php?id="])
|
||||
|
||||
fields:
|
||||
title:
|
||||
selector: a[href^="details.php?id="]
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
category:
|
||||
selector: a[href^="browse.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
download:
|
||||
selector: a[href^="download.php/"]
|
||||
attribute: href
|
||||
_language:
|
||||
optional: true
|
||||
selector: img[src="pic/pl.png"]
|
||||
filters:
|
||||
- name: append
|
||||
args: "Language: polish\n<br>"
|
||||
_subbed:
|
||||
optional: true
|
||||
selector: img[src="pic/napisy.png"]
|
||||
filters:
|
||||
- name: append
|
||||
args: "Subbed\n<br>"
|
||||
description:
|
||||
text: "{{ .Result._language }}{{ .Result._subbed }}"
|
||||
imdbid:
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
grabs:
|
||||
selector: td:nth-child(6)
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
date:
|
||||
selector: td:nth-child(2)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})
|
||||
- name: append
|
||||
args: " +01:00" # CET
|
||||
- name: dateparse
|
||||
args: "2006-01-02 15:04:05 -07:00"
|
||||
seeders:
|
||||
selector: td:nth-child(7)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"img[src=\"pic/download2.gif\"]": 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"img[src=\"pic/double.png\"]": 2
|
||||
"*": 1
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
minimumseedtime:
|
||||
# 3 days (as seconds = 3 x 24 x 60 x 60)
|
||||
text: 259200
|
||||
# engine tbd
|
192
src/Jackett.Common/Definitions/ihdbits.yml
Normal file
192
src/Jackett.Common/Definitions/ihdbits.yml
Normal file
@@ -0,0 +1,192 @@
|
||||
---
|
||||
id: ihdbits
|
||||
name: iHDBits
|
||||
description: "iHDBits is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
|
||||
language: zh-CN
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://ihdbits.me/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 401, cat: Movies, desc: "Movies/电影"}
|
||||
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
|
||||
- {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
|
||||
- {id: 402, cat: TV, desc: "TV Series/连续剧"}
|
||||
- {id: 403, cat: TV, desc: "TV Shows/综艺"}
|
||||
- {id: 406, cat: Audio/Video, desc: "Music Videos/MV"}
|
||||
- {id: 407, cat: TV/Sport, desc: "Sports/体育"}
|
||||
- {id: 409, cat: Other, desc: "Misc/其他"}
|
||||
- {id: 408, cat: Audio, desc: "Music/音乐"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, imdbid, doubanid]
|
||||
movie-search: [q, imdbid, doubanid]
|
||||
music-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: 2facode
|
||||
type: text
|
||||
label: 2FA code
|
||||
- name: info_2fa
|
||||
type: info
|
||||
label: "About 2FA code"
|
||||
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> on the iHDBits Web Site. Otherwise just leave it empty."
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: 4
|
||||
options:
|
||||
4: created
|
||||
7: seeders
|
||||
5: size
|
||||
1: title
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: desc
|
||||
options:
|
||||
desc: desc
|
||||
asc: asc
|
||||
- name: info_tpp
|
||||
type: info
|
||||
label: Results Per Page
|
||||
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
|
||||
|
||||
login:
|
||||
path: login.php
|
||||
method: form
|
||||
form: form[action="takelogin.php"]
|
||||
captcha:
|
||||
type: image
|
||||
selector: img[alt="CAPTCHA"]
|
||||
input: imagestring
|
||||
inputs:
|
||||
secret: ""
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
two_step_code: "{{ .Config.2facode }}"
|
||||
logout: ""
|
||||
securelogin: ""
|
||||
ssl: yes
|
||||
trackerssl: yes
|
||||
error:
|
||||
- selector: td.embedded:has(h2:contains("失败"))
|
||||
- selector: td.embedded:has(h2:contains("Failed"))
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: torrents.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
|
||||
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}{{ .Keywords }}{{ end }}"
|
||||
# 0 incldead, 1 active, 2 dead
|
||||
incldead: 0
|
||||
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
|
||||
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
|
||||
# 0 title, 1 descr, 3 uploader, 4 imdburl (not working)
|
||||
search_area: "{{ if .Query.IMDBID }}1{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
|
||||
# 0 AND, 1 OR, 2 exact
|
||||
search_mode: 0
|
||||
sort: "{{ .Config.sort }}"
|
||||
type: "{{ .Config.type }}"
|
||||
|
||||
rows:
|
||||
selector: table.torrents > tbody > tr:has(a[href^="details.php?id="])
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title_default:
|
||||
selector: a[href^="details.php?id="]
|
||||
title_optional:
|
||||
optional: true
|
||||
selector: a[title][href^="details.php?id="]
|
||||
attribute: title
|
||||
title:
|
||||
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
imdbid:
|
||||
# site currently only has a badge and rating, the id is not present. just in case a future update.
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
attribute: href
|
||||
doubanid:
|
||||
# site currently only has a badge and rating, the id is not present. just in case a future update.
|
||||
selector: a[href*="movie.douban.com/subject/"]
|
||||
attribute: href
|
||||
date_elapsed:
|
||||
# time type: time elapsed (default)
|
||||
selector: td.rowfollow:nth-child(4) > span[title]
|
||||
attribute: title
|
||||
optional: true
|
||||
filters:
|
||||
- name: append
|
||||
args: " +08:00" # CST
|
||||
- name: dateparse
|
||||
args: "2006-01-02 15:04:05 -07:00"
|
||||
date_added:
|
||||
# time added
|
||||
selector: td.rowfollow:nth-child(4):not(:has(span))
|
||||
optional: true
|
||||
filters:
|
||||
- name: append
|
||||
args: " +08:00" # CST
|
||||
- name: dateparse
|
||||
args: "2006-01-0215:04:05 -07:00"
|
||||
date:
|
||||
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
|
||||
size:
|
||||
selector: td.rowfollow:nth-child(5)
|
||||
seeders:
|
||||
selector: td.rowfollow:nth-child(6)
|
||||
leechers:
|
||||
selector: td.rowfollow:nth-child(7)
|
||||
grabs:
|
||||
selector: td.rowfollow:nth-child(8)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img.pro_free: 0
|
||||
img.pro_free2up: 0
|
||||
img.pro_50pctdown: 0.5
|
||||
img.pro_50pctdown2up: 0.5
|
||||
img.pro_30pctdown: 0.3
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img.pro_50pctdown2up: 2
|
||||
img.pro_free2up: 2
|
||||
img.pro_2up: 2
|
||||
"*": 1
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
minimumseedtime:
|
||||
# 5 day (as seconds = 5 x 24 x 60 x 60)
|
||||
text: 432000
|
||||
description:
|
||||
selector: td.rowfollow:nth-child(2)
|
||||
remove: a, img
|
||||
# NexusPHP 1.7.29 2022-10-13
|
@@ -5,6 +5,8 @@ description: "Kufirc is a HUNGARIAN Private tracker for 3X"
|
||||
language: hu-HU
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
certificates:
|
||||
- 1a528cffb19a5306daa44f99e6cce5d2a3c657c1 # Expired 24 Oct 2022
|
||||
links:
|
||||
- https://kufirc.com/
|
||||
|
||||
|
@@ -1,196 +0,0 @@
|
||||
---
|
||||
id: mediamaatjes
|
||||
name: MediaMaatjes
|
||||
description: "MediaMaatjes is a DUTCH Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: nl-NL
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.mediamaatjes.org/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 46, cat: Movies/SD, desc: "avi/xvideo"}
|
||||
- {id: 43, cat: Movies/UHD, desc: "4k Films"}
|
||||
- {id: 41, cat: TV/Documentary, desc: "Documentaire"}
|
||||
- {id: 40, cat: Other, desc: "kerst"}
|
||||
- {id: 15, cat: Other, desc: "Overige"}
|
||||
- {id: 1, cat: Other, desc: "Afbeeldingen"}
|
||||
- {id: 19, cat: TV, desc: "TV Series"}
|
||||
- {id: 21, cat: TV/HD, desc: "Series/MKV"}
|
||||
- {id: 23, cat: Audio/Video, desc: "Cabaret"}
|
||||
- {id: 24, cat: Books/EBook, desc: "E-Books"}
|
||||
- {id: 30, cat: Movies, desc: "Classic"}
|
||||
- {id: 31, cat: Audio/Audiobook, desc: "Luisterboek"}
|
||||
- {id: 32, cat: Movies/HD, desc: "Films/HD 720p"}
|
||||
- {id: 33, cat: Audio, desc: "NL Muziek"}
|
||||
- {id: 34, cat: Books/Comics, desc: "Stripboeken"}
|
||||
- {id: 36, cat: Books/Mags, desc: "E Magazine"}
|
||||
- {id: 18, cat: TV/SD, desc: "Series/XVID"}
|
||||
- {id: 17, cat: PC/Games, desc: "PC Spellen"}
|
||||
- {id: 16, cat: PC, desc: "PC Software"}
|
||||
- {id: 2, cat: Movies/HD, desc: "Films/HD 1080p"}
|
||||
- {id: 4, cat: Audio/Video, desc: "DVD Muziek"}
|
||||
- {id: 3, cat: Movies/DVD, desc: "DVD Kids"}
|
||||
- {id: 5, cat: Movies/DVD, desc: "DVD Films"}
|
||||
- {id: 7, cat: Movies/SD, desc: "DVD Promo/R5"}
|
||||
- {id: 8, cat: XXX, desc: "Erotiek"}
|
||||
- {id: 9, cat: PC/Mobile-Other, desc: "GSM/Navigatie"}
|
||||
- {id: 10, cat: Audio, desc: "Muziek Album"}
|
||||
- {id: 11, cat: Audio, desc: "Muziek Diverse"}
|
||||
- {id: 13, cat: Console/Wii, desc: "Wii"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Filter freeleech only
|
||||
default: false
|
||||
- name: thankyou
|
||||
type: text
|
||||
label: Thank You Comment
|
||||
- name: info
|
||||
type: info
|
||||
label: Thank you comment
|
||||
default: This site requires you to leave a Thank You comment before you can download. Enter your personalised comment above.
|
||||
|
||||
login:
|
||||
path: takelogin.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: table.main:contains("Aanmelden mislukt")
|
||||
test:
|
||||
path: /
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
download:
|
||||
before:
|
||||
# https://www.mediamaatjes.org/comment.php?action=add&tid=166386
|
||||
path: comment.php
|
||||
method: post
|
||||
inputs:
|
||||
action: add
|
||||
tid: "{{ .DownloadUri.Query.id }}"
|
||||
text: "{{ .Config.thankyou }}"
|
||||
selectors:
|
||||
- selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://www.mediamaatjes.org/browse.php?search=&cat=43&incldead=1
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
incldead: 1
|
||||
# does not support imdbid search and does not return imdb link in results
|
||||
|
||||
rows:
|
||||
selector: "table.mainouter{{ if .Config.freeleech }}:has(img[src=\"pic/freedlfsu.gif\"]){{ else }}{{ end }}"
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="browse.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title:
|
||||
selector: a[href^="details.php?id="]
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(?i)seizoen\\s*(\\d{1,2})\\s*(tot|t\/m)\\s*(\\d{1,2})", "S$1-$3"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(seizoen\\s*)(\\d{1,2})", "S$2"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(afl.\\s*|aflevering\\s*)(\\d{1,2})", "E$2"]
|
||||
- name: re_replace
|
||||
args: ["(?i)compleet", "Complete"]
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
size:
|
||||
selector: a[href^="details_bestanden.php?torrent_id="]
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "(.+?) in"
|
||||
files:
|
||||
selector: a[href^="details_bestanden.php?torrent_id="]
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "in (\\d+) bestan"
|
||||
grabs:
|
||||
selector: table table tr:nth-child(2) td:nth-child(1)
|
||||
date:
|
||||
selector: table table tr:nth-child(2) td:nth-child(2)
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["januari", "January"]
|
||||
- name: replace
|
||||
args: ["februari", "February"]
|
||||
- name: replace
|
||||
args: ["maart", "March"]
|
||||
- name: replace
|
||||
args: ["april", "April"]
|
||||
- name: replace
|
||||
args: ["mei", "May"]
|
||||
- name: replace
|
||||
args: ["juni", "June"]
|
||||
- name: replace
|
||||
args: ["juli", "July"]
|
||||
- name: replace
|
||||
args: ["augustus", "August"]
|
||||
- name: replace
|
||||
args: ["september", "September"]
|
||||
- name: replace
|
||||
args: ["oktober", "October"]
|
||||
- name: replace
|
||||
args: ["november", "November"]
|
||||
- name: replace
|
||||
args: ["december", "December"]
|
||||
- name: re_replace
|
||||
args: ["\\s*om\\s*", " "]
|
||||
- name: append
|
||||
args: " +01:00" # CET
|
||||
- name: dateparse
|
||||
args: "2 January 2006 15:04:05 -07:00"
|
||||
seeders_optional:
|
||||
optional: true
|
||||
selector: table tr:nth-child(3) td:nth-child(5) font b
|
||||
seeders:
|
||||
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
|
||||
leechers_optional:
|
||||
optional: true
|
||||
selector: table tr:nth-child(3) td:nth-child(5) font b:nth-child(2)
|
||||
leechers:
|
||||
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="pic/freedlfsu.gif"]: 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
# engine n/a
|
@@ -64,6 +64,7 @@ download:
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: redirect_unlock.php?avx=120
|
||||
- path: tags.php
|
||||
inputs:
|
||||
search: "{{ .Keywords }}"
|
||||
|
173
src/Jackett.Common/Definitions/pixelcove2fa.yml
Normal file
173
src/Jackett.Common/Definitions/pixelcove2fa.yml
Normal file
@@ -0,0 +1,173 @@
|
||||
---
|
||||
id: pixelcove2fa
|
||||
name: PixelCove2FA
|
||||
description: "PixelCove2FA (Ultimate Gamer) is a Private Torrent Tracker for GAMES. Cookie Login for 2FA use."
|
||||
language: en-US
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.pixelcove.me/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
# Computer
|
||||
- {id: 10, cat: PC/Games, desc: "Windows"}
|
||||
- {id: 11, cat: PC/Mac, desc: "Macintosh"}
|
||||
- {id: 47, cat: PC, desc: "Linux"}
|
||||
- {id: 56, cat: PC, desc: "VR"}
|
||||
# Microsoft
|
||||
- {id: 14, cat: Console/XBox, desc: "Xbox"}
|
||||
- {id: 61, cat: Console/XBox 360, desc: "Xbox 360"}
|
||||
- {id: 62, cat: Console/XBox One, desc: "Xbox One"}
|
||||
# Sony
|
||||
- {id: 43, cat: Console/PS3, desc: "Playstation "}
|
||||
- {id: 63, cat: Console/PS3, desc: "Playstation 2"}
|
||||
- {id: 64, cat: Console/PS3, desc: "Playstation 3"}
|
||||
- {id: 67, cat: Console/PS4, desc: "Playstation 4"}
|
||||
- {id: 12, cat: Console/Other, desc: "PSN"}
|
||||
# Nintendo
|
||||
- {id: 57, cat: Console/Other, desc: "Gamecube"}
|
||||
- {id: 44, cat: Console/Wii, desc: "Wii"}
|
||||
- {id: 46, cat: Console/Wii, desc: "Wii U"}
|
||||
- {id: 76, cat: Console/Other, desc: "Switch"}
|
||||
# Handheld
|
||||
- {id: 15, cat: Console/NDS, desc: "DS"}
|
||||
- {id: 68, cat: Console/NDS, desc: "3DS"}
|
||||
- {id: 69, cat: Console/PSP, desc: "PSP"}
|
||||
- {id: 70, cat: Console/PS Vita, desc: "PSVita"}
|
||||
# Mobile
|
||||
- {id: 65, cat: PC/Mobile-iOS, desc: "iOS"}
|
||||
- {id: 49, cat: PC/Mobile-Android, desc: "Android"}
|
||||
- {id: 66, cat: PC/Mobile-Other, desc: "Windows Mobile"}
|
||||
# Reading
|
||||
- {id: 53, cat: Books, desc: "Books/Mags"}
|
||||
- {id: 60, cat: Books, desc: "Comics"}
|
||||
- {id: 17, cat: Books, desc: "Guides"}
|
||||
# Media
|
||||
- {id: 58, cat: Audio/Video, desc: "Gaming Videos"}
|
||||
- {id: 52, cat: Audio, desc: "OST"}
|
||||
- {id: 55, cat: Other, desc: "Time for a Break"}
|
||||
- {id: 81, cat: Audio/Video, desc: "Videos"}
|
||||
# Various
|
||||
- {id: 59, cat: Other, desc: "Mods"}
|
||||
- {id: 54, cat: Other, desc: "Updates/Fixes"}
|
||||
- {id: 71, cat: PC/0day, desc: "Applications/Tools"}
|
||||
- {id: 48, cat: Other, desc: "Retro"}
|
||||
- {id: 72, cat: Other, desc: "Board Games"}
|
||||
- {id: 75, cat: Other, desc: "Paper Crafting"}
|
||||
- {id: 77, cat: Other, desc: "Arcade"}
|
||||
- {id: 78, cat: Other, desc: "Other"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: cookie
|
||||
type: text
|
||||
label: Cookie
|
||||
- name: info_cookie
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: time
|
||||
options:
|
||||
time: created
|
||||
seeders: seeders
|
||||
size: size
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: desc
|
||||
options:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
method: cookie
|
||||
inputs:
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
test:
|
||||
path: torrents.php
|
||||
selector: a.username
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://www.pixelcove.me/torrents.php?order_by=time&order_way=desc&filter_freeleech=1&searchtext=&action=advanced&title=&sizeall=&sizetype=gb&sizerange=0.01&filelist=&taglist=&autocomplete_toggle=1
|
||||
- path: torrents.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
|
||||
order_by: "{{ .Config.sort }}"
|
||||
order_way: "{{ .Config.type }}"
|
||||
action: advanced
|
||||
filter_freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||||
searchtext: ""
|
||||
title: "{{ .Keywords }}"
|
||||
filelist: ""
|
||||
taglist: ""
|
||||
|
||||
rows:
|
||||
# exclude redbar torrents
|
||||
selector: table#torrent_table > tbody > tr[class^="torrent row"]
|
||||
|
||||
fields:
|
||||
download:
|
||||
selector: a[href^="torrents.php?action=download&id="]
|
||||
attribute: href
|
||||
description:
|
||||
selector: div.tags
|
||||
title:
|
||||
selector: a[href^="/torrents.php?id="]
|
||||
category:
|
||||
selector: a[href*="filter_cat"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "\\[(\\d+?)\\]"
|
||||
details:
|
||||
selector: a[href^="/torrents.php?id="]
|
||||
attribute: href
|
||||
poster:
|
||||
selector: td:nth-child(2) > script
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "src=\\\\\"(.*?)\\\\\""
|
||||
- name: re_replace
|
||||
args: ["\\\\(.)", "$1"]
|
||||
- name: replace
|
||||
args: ["/static/common/noartwork/noimage.png", ""]
|
||||
files:
|
||||
selector: td:nth-child(3)
|
||||
date:
|
||||
selector: td:nth-child(5) > span
|
||||
attribute: title
|
||||
filters:
|
||||
- name: append
|
||||
args: " +00:00" # auto adjusted by site account profile
|
||||
- name: dateparse
|
||||
args: "Jan 02 2006, 15:04 -07:00"
|
||||
size:
|
||||
selector: td:nth-child(6)
|
||||
grabs:
|
||||
selector: td:nth-child(7)
|
||||
seeders:
|
||||
selector: td:nth-child(8)
|
||||
leechers:
|
||||
selector: td:nth-child(9)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src$="/freedownload.gif"]: 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
minimumratio:
|
||||
text: 0.5
|
||||
# luminance
|
@@ -121,15 +121,15 @@ search:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title_default:
|
||||
selector: a[href^="details.php?id="]
|
||||
selector: a[href^="details.php?id="], a[href^="detailsgame.php?"]
|
||||
title_optional:
|
||||
optional: true
|
||||
selector: a[title][href^="details.php?id="],a[title][href^="detailsgame.php?id="]
|
||||
selector: a[title][href^="details.php?id="], a[title][href^="detailsgame.php?id="]
|
||||
attribute: title
|
||||
title:
|
||||
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
selector: a[href^="details.php?id="], a[href^="detailsgame.php?"]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
|
@@ -12,6 +12,7 @@ caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Películas"}
|
||||
- {id: 2, cat: TV, desc: "Series"}
|
||||
- {id: 10, cat: TV, desc: "Series Completas"}
|
||||
- {id: 6, cat: TV/Documentary, desc: "Documentales"}
|
||||
- {id: 7, cat: TV/Sport, desc: "Deportes"}
|
||||
- {id: 8, cat: Movies, desc: "Hagbard"}
|
||||
|
@@ -1,91 +0,0 @@
|
||||
---
|
||||
id: soundpark
|
||||
name: SoundPark
|
||||
description: "SoundPark is a Semi-Private RUSSIAN site for MUSIC compilations and albums"
|
||||
language: ru-RU
|
||||
type: semi-private
|
||||
encoding: UTF-8
|
||||
testlinktorrent: false
|
||||
links:
|
||||
- https://sound-park.world/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Audio, desc: "Music"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
music-search: [q, album, artist]
|
||||
|
||||
settings:
|
||||
- name: cookie
|
||||
type: text
|
||||
label: Cookie
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
login:
|
||||
method: cookie
|
||||
inputs:
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
test:
|
||||
path: personal/
|
||||
|
||||
download:
|
||||
before:
|
||||
pathselector:
|
||||
selector: a.torrent_download
|
||||
attribute: href
|
||||
selectors:
|
||||
- selector: p.attachment a
|
||||
attribute: href
|
||||
usebeforeresponse: true
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://sound-park.world/filter/?sort_method=1&sorting_type=undefined&genres=&qualities=&country_keyword=&countries=&releases=&start_year=&end_year=&search_keyword=
|
||||
- path: filter/
|
||||
inputs:
|
||||
sort_method: 1
|
||||
sorting_type: undefined
|
||||
genres: ""
|
||||
qualities: ""
|
||||
country_keyword: ""
|
||||
countries: ""
|
||||
releases: ""
|
||||
start_year: ""
|
||||
end_year: ""
|
||||
search_keyword: "{{ if or (.Query.Artist) (.Query.Album) }}{{ or (.Query.Artist) (.Query.Album) }}{{ else }}{{ .Keywords }}{{ end }}"
|
||||
|
||||
rows:
|
||||
selector: div.album
|
||||
|
||||
fields:
|
||||
category:
|
||||
text: 1
|
||||
title:
|
||||
selector: h3
|
||||
details:
|
||||
selector: h3 > a
|
||||
attribute: href
|
||||
download:
|
||||
selector: h3 > a
|
||||
attribute: href
|
||||
poster:
|
||||
selector: picture img
|
||||
attribute: src
|
||||
date:
|
||||
text: now
|
||||
size:
|
||||
text: "128 MB"
|
||||
seeders:
|
||||
text: 1
|
||||
leechers:
|
||||
text: 1
|
||||
downloadvolumefactor:
|
||||
text: 0
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
# engine wordpress 5.8
|
@@ -57,6 +57,7 @@ caps:
|
||||
- {id: 447, cat: Books/Comics, desc: "Livres / Bande Dessinée"}
|
||||
- {id: 448, cat: Books/Comics, desc: "Livres / Comic"}
|
||||
- {id: 449, cat: Books/Comics, desc: "Livres / Manga"}
|
||||
- {id: 468, cat: Books/Other, desc: "Livres / Divers"}
|
||||
- {id: 450, cat: PC/Games, desc: "Logiciels / Jeu PC"}
|
||||
- {id: 451, cat: PC/Games, desc: "Logiciels / Jeu Mac"}
|
||||
- {id: 452, cat: PC/Games, desc: "Logiciels / Jeu Linux"}
|
||||
|
@@ -240,4 +240,4 @@ search:
|
||||
"*": 1
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
# NexusPHP Standard v1.6 Beta 12
|
||||
# NexusPHP v1.7.30 2022-10-21
|
||||
|
@@ -6,6 +6,8 @@ language: de-DE
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://the-new-fun.com/
|
||||
legacylinks:
|
||||
- https://the-new-fun.spdns.eu/
|
||||
|
||||
caps:
|
||||
|
@@ -1,28 +1,32 @@
|
||||
---
|
||||
id: breizhpeers
|
||||
name: BreizhPeers
|
||||
description: "BreizhPeers is a FRENCH Private Torrent Tracker for MOVIES / TV"
|
||||
id: theoldschool-api
|
||||
name: The Old School (API)
|
||||
description: "The Old School is a FRENCH Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: fr-FR
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://breizhpeers.tk/
|
||||
- https://theoldschool.cc/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Films"}
|
||||
- {id: 2, cat: TV, desc: "Séries"}
|
||||
- {id: 3, cat: TV, desc: "TV"}
|
||||
- {id: 4, cat: TV/Anime, desc: "Animes"}
|
||||
- {id: 5, cat: Audio/Video, desc: "Concerts"}
|
||||
- {id: 10, cat: PC, desc: "Applications"}
|
||||
- {id: 9, cat: Console, desc: "Jeux"}
|
||||
- {id: 6, cat: TV/Sport, desc: "Sport"}
|
||||
- {id: 6, cat: Movies, desc: "Films VOSTFR"}
|
||||
- {id: 2, cat: TV, desc: "Series"}
|
||||
- {id: 7, cat: TV, desc: "Series VOSTFR"}
|
||||
- {id: 8, cat: TV, desc: "Series Pack"}
|
||||
- {id: 9, cat: TV, desc: "Series Pack vostfr"}
|
||||
- {id: 3, cat: Books, desc: "Ebooks"}
|
||||
- {id: 4, cat: Console, desc: "Jeux"}
|
||||
- {id: 5, cat: PC, desc: "Logiciel"}
|
||||
- {id: 10, cat: TV/Sport, desc: "Sports"}
|
||||
|
||||
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
|
||||
@@ -31,7 +35,7 @@ settings:
|
||||
- name: info_key
|
||||
type: info
|
||||
label: About your API key
|
||||
default: "Find or Generate a new API Token by accessing your <a href=\"https://breizhpeers.tk/\" target =_blank>BreizhPeers</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
|
||||
default: "Find or Generate a new API Token by accessing your <a href=\"https://theoldschool.cc/\" target =_blank>The Old School</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
@@ -186,6 +190,6 @@ search:
|
||||
0: 1 # normal
|
||||
1: 2 # double
|
||||
minimumseedtime:
|
||||
# 7 days (as seconds = 7 x 24 x 60 x 60)
|
||||
text: 604800
|
||||
# json UNIT3D 6.3.0 (custom)
|
||||
# 2 days (as seconds = 2 x 24 x 60 x 60)
|
||||
text: 172800
|
||||
# json UNIT3D 6.4.1 custom
|
@@ -5,6 +5,8 @@ description: "Torlook is a Russian Public torrent meta-search engine combining r
|
||||
language: en-US
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
certificates:
|
||||
- aeca58c91a901bf1b6449a97828e379e61bdf4ff # expired 21 Oct 2022
|
||||
links:
|
||||
- https://gw1.torlook.info/
|
||||
- https://torlook.nocensor.world/
|
||||
|
@@ -7,10 +7,8 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentqq226.com/
|
||||
- https://torrentqq228.com/
|
||||
legacylinks:
|
||||
- https://torrentqq211.com/
|
||||
- https://torrentqq212.com/
|
||||
- https://torrentqq213.com/
|
||||
- https://torrentqq214.com/
|
||||
- https://torrentqq215.com/
|
||||
@@ -24,6 +22,8 @@ legacylinks:
|
||||
- https://torrentqq223.com/
|
||||
- https://torrentqq224.com/
|
||||
- https://torrentqq225.com/
|
||||
- https://torrentqq226.com/
|
||||
- https://torrentqq227.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -7,12 +7,8 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentsir77.com/
|
||||
- https://torrentsir78.com/
|
||||
legacylinks:
|
||||
- http://torrentsir60.com/
|
||||
- https://torrentsir60.com/
|
||||
- http://torrentsir61.com/
|
||||
- https://torrentsir61.com/
|
||||
- http://torrentsir62.com/
|
||||
- https://torrentsir62.com/
|
||||
- http://torrentsir63.com/
|
||||
@@ -32,6 +28,8 @@ legacylinks:
|
||||
- http://torrentsir76.com/
|
||||
- https://torrentsir76.com/
|
||||
- http://torrentsir77.com/
|
||||
- https://torrentsir77.com/
|
||||
- http://torrentsir78.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -7,11 +7,10 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentview68.com/
|
||||
- https://viewtorrent1.com/
|
||||
legacylinks:
|
||||
- https://torrentview.net/
|
||||
- https://torrentview.co/
|
||||
- https://torrentview45.com/
|
||||
- https://torrentview46.com/
|
||||
- https://torrentview47.com/
|
||||
- https://torrentview49.com/
|
||||
@@ -25,6 +24,7 @@ legacylinks:
|
||||
- https://torrentview65.com/
|
||||
- https://torrentview66.com/
|
||||
- https://torrentview67.com/
|
||||
- https://torrentview68.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -7,10 +7,9 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentwiz49.com/
|
||||
- https://torrentwiz50.com/
|
||||
legacylinks:
|
||||
- https://torrentwiz29.me/
|
||||
- https://torrentwiz33.com/
|
||||
- https://torrentwiz34.com/
|
||||
- https://torrentwiz35.com/
|
||||
- https://torrentwiz36.com/
|
||||
@@ -25,6 +24,7 @@ legacylinks:
|
||||
- https://torrentwiz47.com/
|
||||
- https://torrentwiz48.com/.
|
||||
- https://torrentwiz48.com/
|
||||
- https://torrentwiz49.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
68
src/Jackett.Common/Definitions/traht.yml
Normal file
68
src/Jackett.Common/Definitions/traht.yml
Normal file
@@ -0,0 +1,68 @@
|
||||
---
|
||||
id: traht
|
||||
name: TrahT
|
||||
description: "TrahT is a RUSSIAN Public Torrent Tracker for 3X"
|
||||
language: ru-RU
|
||||
type: public
|
||||
encoding: windows-1251
|
||||
links:
|
||||
- http://traht.org/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
xxx: XXX
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
||||
settings: []
|
||||
|
||||
search:
|
||||
paths:
|
||||
# http://traht.org/browse.php?search=&cat=0&year=0&format=0
|
||||
- path: browse.php
|
||||
inputs:
|
||||
search: "{{ .Keywords }}"
|
||||
cat: 0
|
||||
year: 0
|
||||
format: 0
|
||||
|
||||
rows:
|
||||
selector: div[id^="releases-table"] table.embedded tbody tr:has(a[href^="download.php?id="])
|
||||
|
||||
fields:
|
||||
category:
|
||||
text: xxx
|
||||
title:
|
||||
selector: a[href^="details.php?id="]
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: append
|
||||
args: "&ok="
|
||||
date:
|
||||
text: now
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
seeders:
|
||||
selector: td:nth-child(6)
|
||||
filters:
|
||||
- name: split
|
||||
args: ["|", 0]
|
||||
leechers:
|
||||
selector: td:nth-child(6)
|
||||
filters:
|
||||
- name: split
|
||||
args: ["|", 1]
|
||||
description:
|
||||
selector: img
|
||||
attribute: title
|
||||
downloadvolumefactor:
|
||||
text: 0
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
# Kinokpk 3.00
|
@@ -129,11 +129,10 @@ search:
|
||||
selector: td:nth-child(2)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "(\\d{2}-\\d{2}-\\d{2} \\d{2}:\\d{2})"
|
||||
args: "(\\d{1,2}(st|nd|rd|th) [A-Za-z]{3,} \\d{4} \\d{2}:\\d{2}:\\d{2})"
|
||||
- name: append
|
||||
args: " +00:00" # auto adjusted by site account profile
|
||||
- name: dateparse
|
||||
args: "02-01-06 15:04 -07:00"
|
||||
- name: fuzzytime
|
||||
size:
|
||||
selector: td:nth-last-child(5)
|
||||
grabs:
|
||||
|
@@ -1,7 +1,7 @@
|
||||
---
|
||||
id: uhdbits
|
||||
name: UHDBits
|
||||
description: "A vietnamese general tracker"
|
||||
description: "UHDBits is a Private Torrent Tracker for UHD Movies / TV"
|
||||
language: en-US
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
|
@@ -32,7 +32,7 @@ search:
|
||||
s: "{{ .Keywords }}"
|
||||
|
||||
rows:
|
||||
selector: article:has(h4)
|
||||
selector: article:has(.entry-title)
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
@@ -40,21 +40,15 @@ search:
|
||||
category:
|
||||
text: Audio
|
||||
title:
|
||||
selector: h4
|
||||
selector: .entry-title
|
||||
details:
|
||||
selector: h4 > a
|
||||
selector: .entry-title > a
|
||||
attribute: href
|
||||
download:
|
||||
selector: h4 > a
|
||||
selector: .entry-title > a
|
||||
attribute: href
|
||||
poster:
|
||||
selector: div.back-img
|
||||
attribute: style
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "\\'(.+?)\\'"
|
||||
description:
|
||||
selector: div.mg-blog-category
|
||||
selector: .entry-excerpt
|
||||
date:
|
||||
text: now
|
||||
size:
|
||||
@@ -67,4 +61,4 @@ search:
|
||||
text: 0
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
# wordpress 6.0.2
|
||||
# wordpress 6.0.3
|
||||
|
@@ -12,6 +12,7 @@ caps:
|
||||
categorymappings:
|
||||
- {id: 14, cat: Audio/MP3, desc: "Alben / Sampler / Singles"}
|
||||
- {id: 87, cat: TV/Anime, desc: "Anime"}
|
||||
- {id: 105, cat: TV/Anime, desc: "Anime Serien"}
|
||||
- {id: 18, cat: PC, desc: "Appz-Sonstige"}
|
||||
- {id: 64, cat: TV/Documentary, desc: "Dokumentation"}
|
||||
- {id: 19, cat: Books/EBook, desc: "Ebooks"}
|
||||
|
@@ -1,12 +1,12 @@
|
||||
---
|
||||
id: torrentsurf
|
||||
name: Torrent Surf
|
||||
description: "Torrent Surf is a Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
id: xtremebytes
|
||||
name: Xtreme Bytes
|
||||
description: "Xtreme Bytes (TorrentSurf) is a Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: en-US
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://torrentsurf.net/
|
||||
- https://xtremebytes.net/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
@@ -23,10 +23,14 @@ caps:
|
||||
- {id: 14, cat: Movies/DVD, desc: "Movies/DVD-R"}
|
||||
- {id: 18, cat: Movies/HD, desc: "Movies/HD"}
|
||||
- {id: 19, cat: Movies/SD, desc: "Movies/SD"}
|
||||
- {id: 42, cat: Movies/HD, desc: "Movies/x264"}
|
||||
- {id: 41, cat: Movies/SD, desc: "Movies/Xvid"}
|
||||
- {id: 29, cat: Audio, desc: "Music"}
|
||||
- {id: 30, cat: TV, desc: "Packs"}
|
||||
- {id: 24, cat: TV/HD, desc: "TV/HD"}
|
||||
- {id: 25, cat: TV/SD, desc: "TV/SD"}
|
||||
- {id: 44, cat: TV/HD, desc: "TV/x264"}
|
||||
- {id: 43, cat: TV/SD, desc: "TV/Xvid"}
|
||||
- {id: 36, cat: XXX, desc: "XXX"}
|
||||
|
||||
modes:
|
||||
@@ -85,14 +89,11 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://torrentsurf.net/browse.php?search=&cat=0&blah=0&incldead=1
|
||||
# https://torrentsurf.net/browse.php?c37=1&c14=1&c18=1&c19=1&incldead=1
|
||||
# https://xtremebytes.net/browse.php?search=&cat=0&incldead=1&c18=1&c42=1
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
# 0 name, 1 descr, 2 both
|
||||
blah: 0
|
||||
# 0 active, 1 incldead, 2 onlydead, 3 freeleech
|
||||
# 0 active, 1 incldead, 2 onlydead, 3 freeleech, 4 descr
|
||||
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
|
||||
search: "{{ .Keywords }}"
|
||||
sort: "{{ .Config.sort }}"
|
||||
@@ -100,7 +101,7 @@ search:
|
||||
# site does not support imdbid searching or display imdb links in results.
|
||||
|
||||
rows:
|
||||
selector: table[background="tablebg.png"] tbody tr:has(a[href^="download.php?id="])
|
||||
selector: table[border="0"][cellspacing="0"][cellpadding="5"] tr:has(a[href^="download.php?id="])
|
||||
|
||||
fields:
|
||||
category:
|
||||
@@ -123,21 +124,23 @@ search:
|
||||
attribute: href
|
||||
download:
|
||||
text: "{{ if .Config.seedbox }}{{ .Result.download_2 }}{{ else }}{{ .Result.download_1 }}{{ end }}"
|
||||
date:
|
||||
selector: td:nth-child(4)
|
||||
filters:
|
||||
- name: append
|
||||
args: " -07:00" # PDT
|
||||
- name: dateparse
|
||||
args: "2006-01-0215:04:05 -07:00"
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
files:
|
||||
selector: td:nth-child(3)
|
||||
grabs:
|
||||
selector: td:nth-child(7)
|
||||
size:
|
||||
selector: td:nth-child(6)
|
||||
seeders:
|
||||
selector: td:nth-last-child(3)
|
||||
leechers:
|
||||
selector: td:nth-last-child(2)
|
||||
date:
|
||||
selector: td:nth-child(5)
|
||||
filters:
|
||||
- name: append
|
||||
args: " -07:00" # PDT
|
||||
- name: dateparse
|
||||
args: "2006-01-0215:04:05 -07:00"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="pic/freeleech.png"]: 0
|
@@ -61,7 +61,9 @@ namespace Jackett.Common.Indexers
|
||||
"https://www.divxtotal.nl/",
|
||||
"https://www.divxtotal.ac/",
|
||||
"https://www.divxtotal.dev/",
|
||||
"https://www.divxtotal.ms/"
|
||||
"https://www.divxtotal.ms/",
|
||||
"https://www.divxtotal.fi/",
|
||||
"https://www.divxtotal.cat/"
|
||||
};
|
||||
|
||||
public DivxTotal(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,
|
||||
@@ -69,7 +71,7 @@ namespace Jackett.Common.Indexers
|
||||
: base(id: "divxtotal",
|
||||
name: "DivxTotal",
|
||||
description: "DivxTotal is a SPANISH site for Movies, TV series and Software",
|
||||
link: "https://www.divxtotal.fi/",
|
||||
link: "https://www.divxtotal.pl/",
|
||||
caps: new TorznabCapabilities
|
||||
{
|
||||
TvSearchParams = new List<TvSearchParam>
|
||||
|
@@ -39,7 +39,7 @@ namespace Jackett.Common.Indexers
|
||||
private const string SearchUrl = "buscar/";
|
||||
|
||||
public override string[] AlternativeSiteLinks { get; protected set; } = {
|
||||
"https://dontorrent.fans/",
|
||||
"https://dontorrent.gs/",
|
||||
"https://todotorrents.net/",
|
||||
"https://tomadivx.net/",
|
||||
"https://seriesblanco.one/",
|
||||
@@ -48,10 +48,6 @@ namespace Jackett.Common.Indexers
|
||||
};
|
||||
|
||||
public override string[] LegacySiteLinks { get; protected set; } = {
|
||||
"https://dontorrent.yt/",
|
||||
"https://dontorrent.vg/",
|
||||
"https://dontorrent.eu/",
|
||||
"https://dontorrent.ch/",
|
||||
"https://dontorrent.vet/",
|
||||
"https://dontorrent.dog/",
|
||||
"https://dontorrent.dev/",
|
||||
@@ -63,7 +59,10 @@ namespace Jackett.Common.Indexers
|
||||
"https://dontorrent.tf/",
|
||||
"https://dontorrent.vin/",
|
||||
"https://dontorrent.ist/",
|
||||
"https://dontorrent.uno/"
|
||||
"https://dontorrent.uno/",
|
||||
"https://dontorrent.fans/",
|
||||
"https://dontorrent.ltd/",
|
||||
"https://dontorrent.me/"
|
||||
};
|
||||
|
||||
private static Dictionary<string, string> CategoriesMap => new Dictionary<string, string>
|
||||
@@ -81,7 +80,7 @@ namespace Jackett.Common.Indexers
|
||||
: base(id: "dontorrent",
|
||||
name: "DonTorrent",
|
||||
description: "DonTorrent is a SPANISH public tracker for MOVIES / TV / GENERAL",
|
||||
link: "https://dontorrent.fans/",
|
||||
link: "https://dontorrent.gs/",
|
||||
caps: new TorznabCapabilities
|
||||
{
|
||||
TvSearchParams = new List<TvSearchParam>
|
||||
|
@@ -68,8 +68,6 @@ namespace Jackett.Common.Indexers
|
||||
var groupYear = (string)result["groupYear"];
|
||||
var title = new StringBuilder();
|
||||
title.Append(groupName);
|
||||
if (!string.IsNullOrEmpty(groupSubName))
|
||||
title.Append(" " + groupSubName + " ");
|
||||
|
||||
if (!string.IsNullOrEmpty(groupYear) && groupYear != "0")
|
||||
title.Append(" [" + groupYear + "]");
|
||||
@@ -135,6 +133,8 @@ namespace Jackett.Common.Indexers
|
||||
release.MinimumSeedTime = 172800; // 48 hours
|
||||
// tag each results with Movie cats.
|
||||
release.Category = new List<int> { TorznabCatType.Movies.ID };
|
||||
if (!string.IsNullOrEmpty(groupSubName))
|
||||
release.Description = groupSubName;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
248
src/Jackett.Common/Indexers/NebulanceAPI.cs
Normal file
248
src/Jackett.Common/Indexers/NebulanceAPI.cs
Normal file
@@ -0,0 +1,248 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Models.IndexerConfig;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using Microsoft.AspNetCore.Http.Internal;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
[ExcludeFromCodeCoverage]
|
||||
public class NebulanceAPI : BaseWebIndexer
|
||||
{
|
||||
// Docs at https://nebulance.io/articles.php?topic=api_key
|
||||
protected virtual string APIUrl => SiteLink + "api.php";
|
||||
protected virtual int KeyLength => 32;
|
||||
|
||||
// TODO: remove ConfigurationDataAPIKey class and use ConfigurationDataPasskey instead
|
||||
private new ConfigurationDataAPIKey configData
|
||||
{
|
||||
get => (ConfigurationDataAPIKey)base.configData;
|
||||
set => base.configData = value;
|
||||
}
|
||||
|
||||
public NebulanceAPI(IIndexerConfigurationService configService, WebClient wc, Logger l,
|
||||
IProtectionService ps, ICacheService cs)
|
||||
: base(id: "nebulanceapi",
|
||||
name: "NebulanceAPI",
|
||||
description: "At Nebulance we will change the way you think about TV. Using API.",
|
||||
link: "https://nebulance.io/",
|
||||
caps: new TorznabCapabilities
|
||||
{
|
||||
LimitsDefault = 100,
|
||||
LimitsMax = 1000,
|
||||
TvSearchParams = new List<TvSearchParam>
|
||||
{
|
||||
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep, TvSearchParam.Genre
|
||||
}
|
||||
},
|
||||
configService: configService,
|
||||
client: wc,
|
||||
logger: l,
|
||||
p: ps,
|
||||
cacheService: cs,
|
||||
configData: new ConfigurationDataAPIKey())
|
||||
{
|
||||
Encoding = Encoding.UTF8;
|
||||
Language = "en-US";
|
||||
Type = "private";
|
||||
|
||||
AddCategoryMapping("tv", TorznabCatType.TV, "tv");
|
||||
AddCategoryMapping("sd", TorznabCatType.TVSD, "sd");
|
||||
AddCategoryMapping("hd", TorznabCatType.TVHD, "hd");
|
||||
AddCategoryMapping("uhd", TorznabCatType.TVUHD, "uhd");
|
||||
AddCategoryMapping("4k", TorznabCatType.TVUHD, "4k");
|
||||
AddCategoryMapping("480p", TorznabCatType.TVSD, "480p");
|
||||
AddCategoryMapping("720p", TorznabCatType.TVHD, "720p");
|
||||
AddCategoryMapping("1080p", TorznabCatType.TVHD, "1080p");
|
||||
AddCategoryMapping("1080i", TorznabCatType.TVHD, "1080i");
|
||||
AddCategoryMapping("2160p", TorznabCatType.TVUHD, "2160p");
|
||||
|
||||
configData.AddDynamic("keyInfo", new DisplayInfoConfigurationItem(String.Empty, "Generate a new key by accessing your account profile settings at <a href=\"https://nebulance.io/\" target=_blank>Nebulance</a>, scroll down to the <b>API Keys</b> section, tick the <i>New Key</i>, <i>list</i> and <i>download</i> checkboxes and save."));
|
||||
|
||||
}
|
||||
|
||||
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
|
||||
{
|
||||
LoadValuesFromJson(configJson);
|
||||
|
||||
IsConfigured = false;
|
||||
var apiKey = configData.Key;
|
||||
if (apiKey.Value.Length != KeyLength)
|
||||
throw new Exception($"Invalid API Key configured: expected length: {KeyLength}, got {apiKey.Value.Length}");
|
||||
|
||||
try
|
||||
{
|
||||
var results = await PerformQuery(new TorznabQuery());
|
||||
if (!results.Any())
|
||||
throw new Exception("Testing returned no results!");
|
||||
IsConfigured = true;
|
||||
SaveConfig();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new ExceptionWithConfigData(e.Message, configData);
|
||||
}
|
||||
|
||||
return IndexerConfigurationStatus.Completed;
|
||||
}
|
||||
|
||||
private string JsonRPCRequest(string method, JArray parameters)
|
||||
{
|
||||
dynamic request = new JObject();
|
||||
request["jsonrpc"] = "2.0";
|
||||
request["method"] = method;
|
||||
request["params"] = parameters;
|
||||
request["id"] = Guid.NewGuid().ToString().Substring(0, 8);
|
||||
return request.ToString();
|
||||
}
|
||||
|
||||
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
|
||||
{
|
||||
var ValidList = new List<string>() {
|
||||
"action",
|
||||
"adventure",
|
||||
"children",
|
||||
"biography",
|
||||
"comedy",
|
||||
"crime",
|
||||
"documentary",
|
||||
"drama",
|
||||
"family",
|
||||
"fantasy",
|
||||
"game-show",
|
||||
"history",
|
||||
"horror",
|
||||
"medical",
|
||||
"music",
|
||||
"musical",
|
||||
"mystery",
|
||||
"news",
|
||||
"reality-tv",
|
||||
"romance",
|
||||
"sci-fi",
|
||||
"sitcom",
|
||||
"sport",
|
||||
"talk-show",
|
||||
"thriller",
|
||||
"travel",
|
||||
"war",
|
||||
"western"
|
||||
};
|
||||
var ValidCats = new List<string>() {
|
||||
"sd",
|
||||
"hd",
|
||||
"uhd",
|
||||
"4k",
|
||||
"480p",
|
||||
"720p",
|
||||
"1080i",
|
||||
"1080p",
|
||||
"2160p"
|
||||
};
|
||||
|
||||
var searchParam = new JObject();
|
||||
var searchString = query.GetQueryString();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(searchString))
|
||||
{
|
||||
searchParam["name"] = "%" + Regex.Replace(searchString, @"[ -._]", "%").Trim() + "%";
|
||||
}
|
||||
else
|
||||
{
|
||||
searchParam["name"] = "%";
|
||||
}
|
||||
if (query.IsGenreQuery)
|
||||
{
|
||||
var genre = new JArray
|
||||
{
|
||||
new JValue(query.Genre)
|
||||
};
|
||||
searchParam["tags"] = genre;
|
||||
}
|
||||
var limit = query.Limit;
|
||||
if (limit == 0)
|
||||
limit = (int)TorznabCaps.LimitsDefault;
|
||||
var offset = query.Offset;
|
||||
var releases = new List<ReleaseInfo>();
|
||||
|
||||
var parameters = new JArray
|
||||
{
|
||||
new JValue(configData.Key.Value),
|
||||
JObject.FromObject(searchParam),
|
||||
new JValue(limit),
|
||||
new JValue(offset)
|
||||
};
|
||||
|
||||
var response = await RequestWithCookiesAndRetryAsync(
|
||||
APIUrl, method: RequestType.POST,
|
||||
headers: new Dictionary<string, string>
|
||||
{
|
||||
{"Accept", "application/json-rpc, application/json"},
|
||||
{"Content-Type", "application/json-rpc"}
|
||||
}, rawbody: JsonRPCRequest("getTorrents", parameters), emulateBrowser: false);
|
||||
|
||||
if (response.ContentString != null && response.ContentString.Contains("Invalid params"))
|
||||
throw new Exception($"Invalid API Key configured");
|
||||
try
|
||||
{
|
||||
var json = JObject.Parse(response.ContentString);
|
||||
foreach (var r in json["result"]["items"].Cast<JObject>())
|
||||
{
|
||||
var descriptions = new List<string>();
|
||||
if (!string.IsNullOrWhiteSpace((string)r["group_name"]))
|
||||
descriptions.Add("Group Name: " + (string)r["group_name"]);
|
||||
var link = new Uri((string)r["download"]);
|
||||
var details = new Uri($"{SiteLink}torrents.php?id={(string)r["group_id"]}");
|
||||
var publishDate = DateTime.ParseExact((string)r["rls_utc"] + " +00:00", "yyyy-MM-dd HH:mm:ss zzz", CultureInfo.InvariantCulture);
|
||||
var tags = string.Join(",", r["tags"]);
|
||||
char[] delimiters = { ',', ' ', '/', ')', '(', '.', ';', '[', ']', '"', '|', ':' };
|
||||
var releaseGenres = ValidList.Intersect(tags.ToLower().Split(delimiters, System.StringSplitOptions.RemoveEmptyEntries)).ToList();
|
||||
descriptions.Add("Tags: " + string.Join(",", releaseGenres));
|
||||
var releaseCats = ValidCats.Intersect(tags.ToLower().Split(delimiters, System.StringSplitOptions.RemoveEmptyEntries)).ToList();
|
||||
var release = new ReleaseInfo
|
||||
{
|
||||
Title = (string)r["rls_name"],
|
||||
Category = MapTrackerCatToNewznab(releaseCats.Any() ? releaseCats.First() : "TV"),
|
||||
Details = details,
|
||||
Guid = link,
|
||||
Link = link,
|
||||
PublishDate = publishDate,
|
||||
Seeders = (int)r["seed"],
|
||||
Peers = (int)r["seed"] + (int)r["leech"],
|
||||
Size = (long)r["size"],
|
||||
Grabs = (int)r["snatch"],
|
||||
UploadVolumeFactor = 1,
|
||||
DownloadVolumeFactor = 0, // ratioless
|
||||
MinimumRatio = 0, // ratioless
|
||||
MinimumSeedTime = 86400, // 24 hours
|
||||
Description = string.Join("<br />\n", descriptions)
|
||||
};
|
||||
if (release.Genres == null)
|
||||
release.Genres = new List<string>();
|
||||
release.Genres = releaseGenres;
|
||||
if (!string.IsNullOrEmpty((string)r["series_banner"]))
|
||||
release.Poster = new Uri((string)r["series_banner"]);
|
||||
|
||||
releases.Add(release);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
OnParseError(response.ContentString, ex);
|
||||
}
|
||||
return releases;
|
||||
}
|
||||
}
|
||||
}
|
@@ -106,9 +106,7 @@ namespace Jackett.Common.Indexers
|
||||
AddCategoryMapping(53, TorznabCatType.ConsolePS4, "Games/PS4");
|
||||
AddCategoryMapping(54, TorznabCatType.MoviesHD, "Movies/x265/1080");
|
||||
|
||||
_appId = "jackett_" + EnvironmentUtil.JackettVersion();
|
||||
|
||||
EnableConfigurableRetryAttempts();
|
||||
_appId = "ttekcaJ_" + EnvironmentUtil.JackettVersion();
|
||||
}
|
||||
|
||||
public override void LoadValuesFromJson(JToken jsonConfig, bool useProtectionService = false)
|
||||
@@ -140,9 +138,24 @@ namespace Jackett.Common.Indexers
|
||||
// check the token and renewal if necessary
|
||||
await RenewalTokenAsync();
|
||||
|
||||
var response = await RequestWithCookiesAndRetryAsync(BuildSearchUrl(query));
|
||||
Thread.Sleep(2500); // enforce 2.5s delay
|
||||
var response = await RequestWithCookiesAsync(BuildSearchUrl(query));
|
||||
if (response != null && response.ContentString.StartsWith("<"))
|
||||
{
|
||||
if (response.ContentString.Contains("torrentapi.org | 520:"))
|
||||
{
|
||||
if (retry)
|
||||
{
|
||||
logger.Warn("torrentapi.org returned Error 520, retrying after 5 secs");
|
||||
Thread.Sleep(2500); // 2500 + 2500 enforced at front of query = 5s
|
||||
return await PerformQueryWithRetry(query, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.Warn("torrentapi.org returned Error 520");
|
||||
return releases;
|
||||
}
|
||||
}
|
||||
// the response was not JSON, likely a HTML page for a server outage
|
||||
logger.Warn(response.ContentString);
|
||||
throw new Exception("The response was not JSON");
|
||||
@@ -156,21 +169,42 @@ namespace Jackett.Common.Indexers
|
||||
case 2:
|
||||
case 4: // invalid token
|
||||
await RenewalTokenAsync(true); // force renewal token
|
||||
response = await RequestWithCookiesAndRetryAsync(BuildSearchUrl(query));
|
||||
Thread.Sleep(2500); // 2500 + 2500 enforced at front of query = 5s
|
||||
response = await RequestWithCookiesAsync(BuildSearchUrl(query));
|
||||
jsonContent = JObject.Parse(response.ContentString);
|
||||
break;
|
||||
case 5: // Too many requests per second. Maximum requests allowed are 1req/2sec Please try again later!
|
||||
return await PerformQueryWithRetry(query, false);
|
||||
if (retry)
|
||||
{
|
||||
logger.Warn("torrentapi.org returned code 5 Too many requests per second, retrying after 5 secs");
|
||||
Thread.Sleep(2500); // 2500 + 2500 enforced at front of query = 5s
|
||||
return await PerformQueryWithRetry(query, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.Warn("torrentapi.org returned code 5 Too many requests per second");
|
||||
return releases;
|
||||
}
|
||||
case 8: // search_imdb not found, see issue #12466 (no longer used, has been replaced with error 10)
|
||||
case 9: // invalid imdb, see Radarr #1845
|
||||
case 10: // imdb not found, see issue #1486
|
||||
case 13: // invalid tmdb, invalid tvdb
|
||||
return releases;
|
||||
case 10: // imdb not found, see issue #1486
|
||||
case 14: // tmdb not found (see Radarr #7625), thetvdb not found
|
||||
case 20: // no results found
|
||||
if (jsonContent.ContainsKey("rate_limit"))
|
||||
{
|
||||
logger.Warn("Rate Limit exceeded. Retry will be performed.");
|
||||
return await PerformQueryWithRetry(query, false);
|
||||
if (retry)
|
||||
{
|
||||
logger.Warn("torrentapi.org returned code 20 with Rate Limit exceeded. Retrying after 5 secs.");
|
||||
Thread.Sleep(2500); // 2500 + 2500 enforced at front of query = 5s
|
||||
return await PerformQueryWithRetry(query, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.Warn("torrentapi.org returned code 20 with Rate Limit exceeded.");
|
||||
return releases;
|
||||
}
|
||||
}
|
||||
// the api returns "no results" in some valid queries. we do one retry on this case but we can't do more
|
||||
// because we can't distinguish between search without results and api malfunction
|
||||
@@ -312,8 +346,8 @@ namespace Jackett.Common.Indexers
|
||||
var json = JObject.Parse(result.ContentString);
|
||||
_token = json.Value<string>("token");
|
||||
_lastTokenFetch = DateTime.Now;
|
||||
// sleep 5 seconds to make sure the token is valid in the next request
|
||||
Thread.Sleep(5000);
|
||||
// sleep 2.5 seconds to make sure the token is valid in the next request
|
||||
Thread.Sleep(2500);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1481,10 +1481,11 @@ namespace Jackett.Common.Indexers
|
||||
{
|
||||
var queryCollection = new NameValueCollection();
|
||||
|
||||
var searchString = query.GetQueryString();
|
||||
var searchString = query.SearchTerm;
|
||||
// replace any space, special char, etc. with % (wildcard)
|
||||
var ReplaceRegex = new Regex("[^a-zA-Zа-яА-Я0-9]+");
|
||||
searchString = ReplaceRegex.Replace(searchString, "%");
|
||||
if (!string.IsNullOrWhiteSpace(searchString))
|
||||
searchString = ReplaceRegex.Replace(searchString, "%");
|
||||
|
||||
// if the search string is empty use the getnew view
|
||||
if (string.IsNullOrWhiteSpace(searchString))
|
||||
@@ -1495,7 +1496,13 @@ namespace Jackett.Common.Indexers
|
||||
{
|
||||
searchString = searchString.Replace("-", " ");
|
||||
if (query.Season != 0)
|
||||
{
|
||||
searchString += " Сезон: " + query.Season;
|
||||
}
|
||||
if (query.Episode != null)
|
||||
{
|
||||
searchString += " Серии: " + query.Episode;
|
||||
}
|
||||
queryCollection.Add("nm", searchString);
|
||||
}
|
||||
|
||||
|
@@ -60,6 +60,7 @@ namespace Jackett.Common.Services
|
||||
{"tehconnectionme", "anthelion"},
|
||||
{"todotorrents", "dontorrent"},
|
||||
{"torrentgalaxyorg", "torrentgalaxy"},
|
||||
{"torrentsurf", "xtremebytes"},
|
||||
{"transmithenet", "nebulance"},
|
||||
{"xtremezone", "speedapp"},
|
||||
{"yourexotic", "exoticaz"}
|
||||
|
@@ -100,7 +100,8 @@ namespace Jackett.Server.Controllers
|
||||
if (string.IsNullOrWhiteSpace(baseUrlOverride))
|
||||
baseUrlOverride = "";
|
||||
else if (!Uri.TryCreate(baseUrlOverride, UriKind.Absolute, out var uri)
|
||||
|| !(uri.Scheme == Uri.UriSchemeHttp || uri.Scheme == Uri.UriSchemeHttps))
|
||||
|| !(uri.Scheme == Uri.UriSchemeHttp || uri.Scheme == Uri.UriSchemeHttps)
|
||||
|| !Uri.IsWellFormedUriString(baseUrlOverride, UriKind.Absolute))
|
||||
throw new Exception("Base URL Override is invalid. Example: http://jackett:9117");
|
||||
|
||||
serverConfig.BaseUrlOverride = baseUrlOverride;
|
||||
@@ -137,7 +138,8 @@ namespace Jackett.Server.Controllers
|
||||
if (string.IsNullOrWhiteSpace(config.flaresolverrurl))
|
||||
config.flaresolverrurl = "";
|
||||
else if (!Uri.TryCreate(config.flaresolverrurl, UriKind.Absolute, out var uri)
|
||||
|| !(uri.Scheme == Uri.UriSchemeHttp || uri.Scheme == Uri.UriSchemeHttps))
|
||||
|| !(uri.Scheme == Uri.UriSchemeHttp || uri.Scheme == Uri.UriSchemeHttps)
|
||||
|| !Uri.IsWellFormedUriString(config.flaresolverrurl, UriKind.Absolute))
|
||||
throw new Exception("FlareSolverr API URL is invalid. Example: http://127.0.0.1:8191");
|
||||
|
||||
if (config.flaresolverr_maxtimeout < 5000)
|
||||
|
@@ -369,6 +369,9 @@ namespace Jackett.Server.Services
|
||||
|
||||
public string GetServerUrl(HttpRequest request)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(config.BaseUrlOverride))
|
||||
return $"{config.BaseUrlOverride}{BasePath()}/";
|
||||
|
||||
var scheme = request.Scheme;
|
||||
var port = request.HttpContext.Request.Host.Port;
|
||||
|
||||
|
@@ -58,6 +58,7 @@ namespace Jackett.Tray
|
||||
toolStripMenuItemAutoStart.Checked = AutoStart;
|
||||
toolStripMenuItemAutoStart.CheckedChanged += toolStripMenuItemAutoStart_CheckedChanged;
|
||||
|
||||
notifyIcon1.DoubleClick += toolStripMenuItemWebUI_Click;
|
||||
toolStripMenuItemWebUI.Click += toolStripMenuItemWebUI_Click;
|
||||
toolStripMenuItemShutdown.Click += toolStripMenuItemShutdown_Click;
|
||||
|
||||
|
@@ -266,6 +266,7 @@ namespace Jackett.Updater
|
||||
"Definitions/alein.yml",
|
||||
"Definitions/alexfilm.yml",
|
||||
"Definitions/alleenretail.yml",
|
||||
"Definitions/anaschcc.yml",
|
||||
"Definitions/angietorrents.yml",
|
||||
"Definitions/anidex.yml", // migrated to C#
|
||||
"Definitions/animeitalia.yml",
|
||||
@@ -291,8 +292,10 @@ namespace Jackett.Updater
|
||||
"Definitions/bitme.yml",
|
||||
"Definitions/bittorrentam.yml",
|
||||
"Definitions/blubits.yml",
|
||||
"Definitions/bluesbrothers.yml",
|
||||
"Definitions/blutopia.yml", // switch to *-API #8682
|
||||
"Definitions/brasiltracker.yml", // migrated to C#
|
||||
"Definitions/breizhpeers.yml",
|
||||
"Definitions/brobits.yml",
|
||||
"Definitions/brsociety.yml", // switch to *-API #8682
|
||||
"Definitions/bt-scene.yml",
|
||||
@@ -301,6 +304,7 @@ namespace Jackett.Updater
|
||||
"Definitions/bteye.yml",
|
||||
"Definitions/btgigs.yml",
|
||||
"Definitions/btkitty.yml",
|
||||
"Definitions/btmirror.yml",
|
||||
"Definitions/btstornet.yml",
|
||||
"Definitions/btworld.yml",
|
||||
"Definitions/btxpress.yml",
|
||||
@@ -330,6 +334,7 @@ namespace Jackett.Updater
|
||||
"Definitions/dragonworldreloaded.yml",
|
||||
"Definitions/dreamteam.yml",
|
||||
"Definitions/dxdhd.yml",
|
||||
"Definitions/ebookparadijs.yml",
|
||||
"Definitions/efectodoppler.yml",
|
||||
"Definitions/eggmeon.yml",
|
||||
"Definitions/elitehd.yml",
|
||||
@@ -350,6 +355,7 @@ namespace Jackett.Updater
|
||||
"Definitions/extratorrentclone.yml",
|
||||
"Definitions/feedurneed.yml", // merged with devilsplayground #6872
|
||||
"Definitions/filebase.yml",
|
||||
"Definitions/film-paleis.yml",
|
||||
"Definitions/filmsclub.yml",
|
||||
"Definitions/focusx.yml",
|
||||
"Definitions/freakstrackingsystem.yml",
|
||||
@@ -387,6 +393,7 @@ namespace Jackett.Updater
|
||||
"Definitions/hon3yhd.yml",
|
||||
"Definitions/horriblesubs.yml",
|
||||
"Definitions/horrorsite.yml",
|
||||
"Definitions/hqsource.yml",
|
||||
"Definitions/hush.yml",
|
||||
"Definitions/hyperay.yml",
|
||||
"Definitions/icetorrent.yml", // migrated to C# XtremeZone base tracker
|
||||
@@ -420,6 +427,7 @@ namespace Jackett.Updater
|
||||
"Definitions/magnetdl.yml",
|
||||
"Definitions/maniatorrent.yml",
|
||||
"Definitions/manicomioshare.yml",
|
||||
"Definitions/mediamaatjes.yml",
|
||||
"Definitions/megabliz.yml",
|
||||
"Definitions/metal-iplay-ro.yml", // renamed to romanianmetaltorrents
|
||||
"Definitions/microbit.yml",
|
||||
@@ -499,6 +507,7 @@ namespace Jackett.Updater
|
||||
"Definitions/skytorrents.yml",
|
||||
"Definitions/skytorrentsclone.yml", // renamed to skytorrents-lol
|
||||
"Definitions/skytorrentsclone2.yml", // renamed to skytorrents-to
|
||||
"Definitions/soundpark.yml",
|
||||
"Definitions/spacetorrent.yml",
|
||||
"Definitions/speed-share.yml",
|
||||
"Definitions/sukebei-pantsu.yml",
|
||||
@@ -542,6 +551,7 @@ namespace Jackett.Updater
|
||||
"Definitions/torrentseed.yml", // renamed to latinop2p #9065
|
||||
"Definitions/torrentseeds.yml", // migrated to c#
|
||||
"Definitions/torrentsmd.yml",
|
||||
"Definitions/torrentsurf.yml", // renamed xtremebytes #9951
|
||||
"Definitions/torrentvault.yml",
|
||||
"Definitions/torrentwal.yml",
|
||||
"Definitions/torrentwtf.yml",
|
||||
|
Reference in New Issue
Block a user