mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-15 08:24:14 +02:00
Compare commits
55 Commits
v0.21.1310
...
v0.21.1366
Author | SHA1 | Date | |
---|---|---|---|
![]() |
2b1d6d7394 | ||
![]() |
395da2a92f | ||
![]() |
72333deede | ||
![]() |
c7e1786123 | ||
![]() |
710b98e43a | ||
![]() |
e2f4fd956f | ||
![]() |
6d4da1fe19 | ||
![]() |
54e36ce621 | ||
![]() |
82a8416ed5 | ||
![]() |
983f551adf | ||
![]() |
d21dd3970e | ||
![]() |
cb95e4541e | ||
![]() |
2125359250 | ||
![]() |
16d38dbcc2 | ||
![]() |
aa4a5f144d | ||
![]() |
0e8ba61d48 | ||
![]() |
f491c98bf6 | ||
![]() |
9cadde6fd5 | ||
![]() |
e629e86477 | ||
![]() |
f9a3afcbef | ||
![]() |
26b059a699 | ||
![]() |
193e338390 | ||
![]() |
a0cb8e9b25 | ||
![]() |
0c54815b22 | ||
![]() |
cb7c14e101 | ||
![]() |
4077c37e7d | ||
![]() |
f11161bfbf | ||
![]() |
5bc872e8be | ||
![]() |
c5088ca09d | ||
![]() |
212ab63216 | ||
![]() |
e68e863d91 | ||
![]() |
c6b210bc55 | ||
![]() |
e0c0899f5b | ||
![]() |
07b9586e8b | ||
![]() |
3c6e3300f3 | ||
![]() |
e2cb31ee4c | ||
![]() |
ea4efc9441 | ||
![]() |
69ba8c47f4 | ||
![]() |
5e2aa247bb | ||
![]() |
0aba9f1a4a | ||
![]() |
cda27dc8fe | ||
![]() |
71ebadaa4e | ||
![]() |
0d7ba16754 | ||
![]() |
0a672407dd | ||
![]() |
42a49785e3 | ||
![]() |
ce7f337b18 | ||
![]() |
57b9ed80fb | ||
![]() |
0f78eaa5cd | ||
![]() |
aaab69e03b | ||
![]() |
64d2e4b396 | ||
![]() |
926a71ab4e | ||
![]() |
6baacfc2e6 | ||
![]() |
8f132621f2 | ||
![]() |
16da980de3 | ||
![]() |
797ff8e8c7 |
@@ -330,6 +330,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Drugari
|
||||
* Ebooks-Shares
|
||||
* Empornium (EMP) [![(invite needed)][inviteneeded]](#)
|
||||
* Enthralled
|
||||
* eShareNet
|
||||
* eStone (BigTorrent)
|
||||
* Exitorrent.org [![(invite needed)][inviteneeded]](#)
|
||||
@@ -347,6 +348,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* FinVip
|
||||
* Flux-Zone
|
||||
* Free Farm (自由农场)
|
||||
* FSM
|
||||
* FunFile (FF)
|
||||
* FunkyTorrents (FT)
|
||||
* FutureTorrent [![(invite needed)][inviteneeded]](#)
|
||||
@@ -506,7 +508,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* RedBits
|
||||
* Red Leaves [![(invite needed)][inviteneeded]](#)
|
||||
* ReelFlix
|
||||
* Resurrect The Net
|
||||
* Resurrect The Net [![(invite needed)][inviteneeded]](#)
|
||||
* RetroFlix
|
||||
* RevolutionTT
|
||||
* Romanian Metal Torrents (RMT)
|
||||
@@ -778,6 +780,11 @@ On a CentOS/RedHat 7 system: [jewflix.jackett](https://galaxy.ansible.com/jewfli
|
||||
On an Ubuntu 16 system: [chrisjohnson00.jackett](https://galaxy.ansible.com/chrisjohnson00/jackett)
|
||||
|
||||
|
||||
### Installation on Linux or macOS via Homebrew
|
||||
|
||||
[Homebrew Formulae - Jackett](https://formulae.brew.sh/formula/jackett)
|
||||
|
||||
|
||||
## Installation on macOS
|
||||
|
||||
### Prerequisites
|
||||
|
@@ -13,7 +13,7 @@ links:
|
||||
- https://x1337x.eu/
|
||||
- https://x1337x.se/
|
||||
- https://1337x.so/
|
||||
- https://1337x.unblockit.foo/
|
||||
- https://1337x.unblockit.ing/
|
||||
- https://1337x.ninjaproxy1.com/
|
||||
- https://1337x.mrunblock.bond/
|
||||
legacylinks:
|
||||
@@ -22,7 +22,6 @@ legacylinks:
|
||||
- https://1337x.nocensor.biz/
|
||||
- https://1337x.gd/
|
||||
- https://1337x.nocensor.sbs/
|
||||
- https://1337x.unblockit.bet/
|
||||
- https://1337x.unblockit.cat/
|
||||
- https://1337x.unblockit.nz/
|
||||
- https://1337x.nocensor.world/
|
||||
@@ -43,6 +42,7 @@ legacylinks:
|
||||
- https://1337x.unblockit.vegas/
|
||||
- https://1337x.unblockit.esq/
|
||||
- https://1337x.unblockit.zip/
|
||||
- https://1337x.unblockit.foo/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -189,4 +189,4 @@ search:
|
||||
description:
|
||||
selector: td:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.8.8 2023-09-25
|
||||
# NexusPHP v1.8.9 2023-11-15
|
||||
|
@@ -163,7 +163,7 @@ search:
|
||||
grabs:
|
||||
selector: a[href^="snatches.php?id="]
|
||||
seeders:
|
||||
selector: a[href^="peerlist_xbt.php?id="]
|
||||
selector: td:nth-last-child(3) div:nth-last-child(2)
|
||||
leechers:
|
||||
selector: td:nth-last-child(3) div:last-child
|
||||
downloadvolumefactor:
|
||||
|
@@ -143,7 +143,6 @@ search:
|
||||
selector: a[href^="download.php?"]
|
||||
attribute: href
|
||||
description:
|
||||
optional: true
|
||||
selector: span.torrent_small_desc
|
||||
genre:
|
||||
selector: span.torrent_small_desc
|
||||
|
@@ -165,4 +165,4 @@ search:
|
||||
minimumseedtime:
|
||||
# 5 days (as seconds = 3 x 24 x 60 x 60)
|
||||
text: 432000
|
||||
# json UNIT3D 7.1.0b
|
||||
# json UNIT3D 7.1.2
|
||||
|
@@ -124,7 +124,6 @@ search:
|
||||
attribute: src
|
||||
description:
|
||||
selector: div[itemprop="description"]
|
||||
optional: true
|
||||
date:
|
||||
selector: li:has(img#adddate)
|
||||
filters:
|
||||
|
@@ -127,8 +127,42 @@ search:
|
||||
date:
|
||||
selector: time
|
||||
filters:
|
||||
- name: append
|
||||
args: " ago"
|
||||
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
|
||||
- name: re_replace
|
||||
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前|sedan)", " ago"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(saniye|sekundit|sekunder|secondi|sekund|segundos|sekundami|секунд|secunde|secondes|Sekunden|секунди|seconden|秒前)", "seconds"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten|minuter)", "minutes"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟|分)", " minute"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden|timmar)", "hours"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間|timme)", " hour"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen|dagar)", "days"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(gün|päev|dag|giorno|dzień|dia|den|день|zi|día|jour|Tag|ден|天|日)", " day"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken|veckor)", "weeks"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間|vecka)", " week"]
|
||||
- name: re_replace
|
||||
args: ["(?i) (ay)", "month"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden|månader)", "months"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月|månad)", " month"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
|
||||
- name: re_replace
|
||||
args: ["(?i) (an)", "year"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(För |und)", ""] # Misc removals
|
||||
- name: timeago
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
i[class*="fa-id-badge text-orange"]: 0 # 24 Hour FreeLeech From BON Store
|
||||
|
@@ -317,6 +317,10 @@ search:
|
||||
selector: td[title^="Replies:"]
|
||||
optional: true
|
||||
default: 0
|
||||
description:
|
||||
case:
|
||||
span.tor-approved: Verified
|
||||
span.tor-not-approved: Unverified
|
||||
downloadvolumefactor:
|
||||
text: 1
|
||||
uploadvolumefactor:
|
||||
|
@@ -5,6 +5,7 @@ description: "Bangumi Moe is a Public torrent site for ANIME"
|
||||
language: en-US
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
requestDelay: 3
|
||||
links:
|
||||
- https://bangumi.moe/
|
||||
|
||||
@@ -60,7 +61,6 @@ search:
|
||||
args: "src=\\\"(.+?)\\\""
|
||||
description:
|
||||
selector: category_tag.locale.en
|
||||
optional: true
|
||||
date:
|
||||
# 2021-10-19T06:10:15.772Z
|
||||
selector: publish_time
|
||||
|
@@ -142,6 +142,10 @@ search:
|
||||
selector: td:nth-last-child(2)
|
||||
leechers:
|
||||
selector: td:nth-last-child(1)
|
||||
description:
|
||||
case:
|
||||
i.fa-check: Verified
|
||||
i.fa-question: Unverified
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
font:contains("x0"): 0
|
||||
|
@@ -181,6 +181,10 @@ search:
|
||||
selector: td:nth-child(8)
|
||||
leechers:
|
||||
selector: td:nth-child(9)
|
||||
description:
|
||||
case:
|
||||
img[src="pic/yes.png"]: Verified
|
||||
img[src="pic/nincs.png"]: Unverified
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="pic/free.png"]: 0
|
||||
|
@@ -151,6 +151,10 @@ search:
|
||||
args: " +01:00" # CET
|
||||
- name: dateparse
|
||||
args: "yyyy-MM-dd HH:mm:ss zzz"
|
||||
description:
|
||||
case:
|
||||
img[src="./themes/Born/nemlatta.png"]: Unverified
|
||||
"*": Verified
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[title="Ingyenes letöltés"]: 0
|
||||
|
@@ -176,7 +176,6 @@ search:
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
description:
|
||||
optional: true
|
||||
selector: font[color="#990000"]
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
|
@@ -165,4 +165,4 @@ search:
|
||||
minimumseedtime:
|
||||
# 7 day (as seconds = 7 x 24 x 60 x 60)
|
||||
text: 604800
|
||||
# json UNIT3D 7.1.0b
|
||||
# json UNIT3D 7.1.2
|
||||
|
@@ -27,6 +27,7 @@ caps:
|
||||
- {id: 14, cat: TV/Sport, desc: "HD"}
|
||||
- {id: 7, cat: TV/Sport, desc: "Misc"}
|
||||
- {id: 18, cat: TV/Sport, desc: "Instructional"}
|
||||
- {id: 19, cat: TV/Documentary, desc: "Documentary"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
@@ -137,7 +137,9 @@ search:
|
||||
selector: small[title]
|
||||
attribute: title
|
||||
description:
|
||||
text: "{{ .Result.genre }}"
|
||||
case:
|
||||
img[src="/pic/yes.png"]: "Verified: {{ .Result.genre }}"
|
||||
img[src="/pic/nincs.png"]: "Unverified: {{ .Result.genre }}"
|
||||
poster:
|
||||
selector: a[onmouseover]
|
||||
attribute: onmouseover
|
||||
|
@@ -9,14 +9,13 @@ links:
|
||||
- https://www.demonoid.is/
|
||||
- https://www.dnoid.to/
|
||||
- https://www.dnoid.pw/
|
||||
- https://demonoid.unblockit.foo/
|
||||
- https://demonoid.unblockit.ing/
|
||||
- https://demonoid.torrentbay.net/
|
||||
- https://demonoid.mrunblock.bond/
|
||||
- https://demonoid.nocensor.cloud/
|
||||
legacylinks:
|
||||
- https://demonoid.nocensor.biz/
|
||||
- https://demonoid.nocensor.sbs/
|
||||
- https://demonoid.unblockit.bet/
|
||||
- https://demonoid.unblockit.cat/
|
||||
- https://demonoid.unblockit.nz/
|
||||
- https://demonoid.nocensor.world/
|
||||
@@ -43,6 +42,7 @@ legacylinks:
|
||||
- https://demonoid.unblockit.vegas/
|
||||
- https://demonoid.unblockit.esq/
|
||||
- https://demonoid.unblockit.zip/
|
||||
- https://demonoid.unblockit.foo/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -1,7 +1,7 @@
|
||||
---
|
||||
id: diablotorrent
|
||||
name: Diablo Torrent
|
||||
description: " Diablo Torrent is a Hungarian Private site for TV / MOVIES / GENERAL"
|
||||
description: "Diablo Torrent is a Hungarian Private site for TV / MOVIES / GENERAL"
|
||||
language: hu-HU
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
@@ -162,9 +162,13 @@ search:
|
||||
imdbid:
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
attribute: href
|
||||
description:
|
||||
description_text:
|
||||
selector: div.torrent_row_magyarcim
|
||||
remove: span.torrent_row_new
|
||||
description:
|
||||
case:
|
||||
img[src="/pic/browse/yes.png"]: "Verified: {{ .Result.description_text}}"
|
||||
"*": "Unverified: {{ .Result.description_text}}"
|
||||
downloadvolumefactor:
|
||||
text: 1
|
||||
uploadvolumefactor:
|
||||
|
@@ -184,4 +184,4 @@ search:
|
||||
args: "cat={{ .Result._cat }} - "
|
||||
minimumratio:
|
||||
text: 0.9
|
||||
# NexusPHP v1.8.6 2023-08-18
|
||||
# NexusPHP v1.8.8 2023-09-25
|
||||
|
@@ -45,6 +45,7 @@ caps:
|
||||
- {id: 49, cat: Books/Technical, desc: "eLearning"}
|
||||
- {id: 68, cat: Books/Technical, desc: "eLearning Multimedia"}
|
||||
- {id: 87, cat: Audio/Audiobook, desc: "Audiolibros"}
|
||||
- {id: 0, cat: Other, desc: "Otros"} # results can have a category of 0, but searching by category 0 returns all results
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
@@ -114,7 +114,6 @@ search:
|
||||
selector: a[href^="/torrents.php?action=download&id="]
|
||||
attribute: href
|
||||
description:
|
||||
optional: true
|
||||
selector: div.tags
|
||||
title:
|
||||
selector: a[href^="/torrents.php?id="]
|
||||
|
@@ -109,7 +109,6 @@ search:
|
||||
selector: a[href^="/torrents.php?action=download&id="]
|
||||
attribute: href
|
||||
description:
|
||||
optional: true
|
||||
selector: div.tags
|
||||
title:
|
||||
selector: a[href^="/torrents.php?id="]
|
||||
|
133
src/Jackett.Common/Definitions/enthralled.yml
Normal file
133
src/Jackett.Common/Definitions/enthralled.yml
Normal file
@@ -0,0 +1,133 @@
|
||||
---
|
||||
id: enthralled
|
||||
name: Enthralled
|
||||
description: "Enthralled is a Private Torrent Tracker for FETISH 3X"
|
||||
language: en-US
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.enthralled.me/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: XXX, desc: "FemDom"}
|
||||
- {id: 2, cat: XXX, desc: "LezDom"}
|
||||
- {id: 4, cat: XXX, desc: "POV"}
|
||||
- {id: 5, cat: XXX, desc: "Scat"}
|
||||
- {id: 3, cat: XXX, desc: "TransDom"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: time
|
||||
options:
|
||||
time: created
|
||||
seeders: seeders
|
||||
size: size
|
||||
- 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
|
||||
method: form
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
cinfo: "2550|1350|24|-60"
|
||||
keeploggedin: 1
|
||||
error:
|
||||
- selector: div.error
|
||||
test:
|
||||
path: index.php
|
||||
selector: "#nav_userinfo"
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: torrents.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
|
||||
title: "{{ .Keywords }}"
|
||||
order_by: "{{ .Config.sort }}"
|
||||
order_way: "{{ .Config.type }}"
|
||||
action: advanced
|
||||
filter_freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||||
|
||||
rows:
|
||||
selector: table#torrent_table > tbody > tr[class^="torrent row"]
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href*="filter_cat"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "(\\d+)]=1"
|
||||
title:
|
||||
selector: a[href^="/torrents.php?id="]
|
||||
details:
|
||||
selector: a[href^="/torrents.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="/torrents.php?action=download&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
|
||||
# auto adjusted by site account profile
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "MMM dd yyyy, HH:mm"
|
||||
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:
|
||||
span.icon[title*="Freeleech"]: 0
|
||||
"img[alt=\"Freeleech\"]": 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
minimumratio:
|
||||
text: 0.5
|
||||
description:
|
||||
selector: div.tags
|
||||
# Luminance
|
128
src/Jackett.Common/Definitions/enthralled2fa.yml
Normal file
128
src/Jackett.Common/Definitions/enthralled2fa.yml
Normal file
@@ -0,0 +1,128 @@
|
||||
---
|
||||
id: enthralled2fa
|
||||
name: Enthralled2FA
|
||||
description: "Enthralled is a Private Torrent Tracker for FETISH 3X. Cookie Login for 2FA use."
|
||||
language: en-US
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.enthralled.me/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: XXX, desc: "FemDom"}
|
||||
- {id: 2, cat: XXX, desc: "LezDom"}
|
||||
- {id: 4, cat: XXX, desc: "POV"}
|
||||
- {id: 5, cat: XXX, desc: "Scat"}
|
||||
- {id: 3, cat: XXX, desc: "TransDom"}
|
||||
|
||||
modes:
|
||||
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><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></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
|
||||
- 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:
|
||||
method: cookie
|
||||
inputs:
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
test:
|
||||
path: index.php
|
||||
selector: "#nav_userinfo"
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: torrents.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
|
||||
title: "{{ .Keywords }}"
|
||||
order_by: "{{ .Config.sort }}"
|
||||
order_way: "{{ .Config.type }}"
|
||||
action: advanced
|
||||
filter_freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||||
|
||||
rows:
|
||||
selector: table#torrent_table > tbody > tr[class^="torrent row"]
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href*="filter_cat"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "(\\d+)]=1"
|
||||
title:
|
||||
selector: a[href^="/torrents.php?id="]
|
||||
details:
|
||||
selector: a[href^="/torrents.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="/torrents.php?action=download&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
|
||||
# auto adjusted by site account profile
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "MMM dd yyyy, HH:mm"
|
||||
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:
|
||||
span.icon[title*="Freeleech"]: 0
|
||||
"img[alt=\"Freeleech\"]": 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
minimumratio:
|
||||
text: 0.5
|
||||
description:
|
||||
selector: div.tags
|
||||
# Luminance
|
@@ -160,7 +160,9 @@ search:
|
||||
- name: regexp
|
||||
args: "\\((.+?)\\)"
|
||||
description:
|
||||
text: "{{ .Result.genre }}"
|
||||
case:
|
||||
img[src="pic/yes.png"]: "Verified: {{ .Result.genre }}"
|
||||
img[src="pic/nincs.png"]: "Unverified: {{ .Result.genre }}"
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
minimumseedtime:
|
||||
|
@@ -7,14 +7,13 @@ type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://extratorrent.st/
|
||||
- https://extratorrent.unblockit.foo/
|
||||
- https://extratorrent.unblockit.ing/
|
||||
- https://extratorrent.mrunblock.bond/
|
||||
- https://extratorrent.nocensor.cloud/
|
||||
legacylinks:
|
||||
- https://extratorrent.nocensor.work/
|
||||
- https://extratorrent.nocensor.biz/
|
||||
- https://extratorrent.nocensor.sbs/
|
||||
- https://extratorrent.unblockit.bet/
|
||||
- https://extratorrent.unblockit.cat/
|
||||
- https://extratorrent.unblockit.nz/
|
||||
- https://extratorrent.nocensor.world/
|
||||
@@ -35,6 +34,7 @@ legacylinks:
|
||||
- https://extratorrent.unblockit.vegas/
|
||||
- https://extratorrent.unblockit.esq/
|
||||
- https://extratorrent.unblockit.zip/
|
||||
- https://extratorrent.unblockit.foo/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -11,10 +11,10 @@ links:
|
||||
- https://eztv.tf/
|
||||
- https://eztv.yt/
|
||||
- https://eztv1.xyz/
|
||||
- https://eztv.unblockit.ing/
|
||||
- https://eztv.unblockninja.com/
|
||||
- https://eztv.mrunblock.bond/
|
||||
- https://eztv.nocensor.cloud/
|
||||
- https://eztv.unblockit.foo/
|
||||
legacylinks:
|
||||
- https://eztv.ag/ # redirects to .re
|
||||
- https://eztv.it/ # redirects to .re
|
||||
@@ -22,7 +22,6 @@ legacylinks:
|
||||
- https://eztv.io/
|
||||
- https://eztv.nocensor.biz/
|
||||
- https://eztv.nocensor.sbs/
|
||||
- https://eztv.unblockit.bet/
|
||||
- https://eztv.unblockit.cat/
|
||||
- https://eztv.unblockit.nz/
|
||||
- https://eztv.nocensor.world/
|
||||
@@ -45,6 +44,7 @@ legacylinks:
|
||||
- https://eztv.unblockit.zip/
|
||||
- https://eztv.re/
|
||||
- https://eztv.li/
|
||||
- https://eztv.unblockit.foo/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
|
@@ -166,4 +166,4 @@ search:
|
||||
# Maintain global ratio above 0.5 or downloads will get disabled. No MST.
|
||||
minimumratio:
|
||||
text: 0.51
|
||||
# json UNIT3D 7.0.3
|
||||
# json UNIT3D 7.1.2
|
||||
|
@@ -97,8 +97,12 @@ search:
|
||||
download:
|
||||
selector: a[href^="torrents.php?action=download&id="]
|
||||
attribute: href
|
||||
description:
|
||||
description_tags:
|
||||
selector: div.tags
|
||||
description:
|
||||
case:
|
||||
span.icon_okay: "Verified: {{ .Result.description_tags }}"
|
||||
"*": "Unverified: {{ .Result.description_tags }}"
|
||||
title:
|
||||
selector: a[href^="torrents.php?id="]
|
||||
category:
|
||||
|
118
src/Jackett.Common/Definitions/fsm.yml
Normal file
118
src/Jackett.Common/Definitions/fsm.yml
Normal file
@@ -0,0 +1,118 @@
|
||||
---
|
||||
id: fsm
|
||||
name: FSM
|
||||
description: "FSM is a CHINESE Private Torrent Tracker for 3X"
|
||||
language: zh-CN
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://fsm.name/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: XXX, desc: "日本AV"}
|
||||
- {id: 2, cat: XXX, desc: "国产视频"}
|
||||
- {id: 3, cat: XXX/ImageSet, desc: "写真"}
|
||||
- {id: 4, cat: XXX/Other, desc: "黄油"}
|
||||
- {id: 5, cat: XXX, desc: "里番"}
|
||||
- {id: 6, cat: XXX/Other, desc: "黄色漫画"}
|
||||
- {id: 7, cat: XXX, desc: "欧美视频"}
|
||||
- {id: 8, cat: XXX, desc: "其他"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
||||
settings:
|
||||
- name: apitoken
|
||||
type: text
|
||||
label: API Token
|
||||
- name: info_token
|
||||
type: info
|
||||
label: About your API Token
|
||||
default: "Request a new API Token in the <a href=\"https://fsm.name/Forums/details?tid=296\" target=\"_blank\">FSM Forum</a> and checking your <a href=\"https://fsm.name/Mail\" target=\"_blank\">Mail</a> after."
|
||||
- name: passkey
|
||||
type: text
|
||||
label: Passkey
|
||||
- name: info_passkey
|
||||
type: info
|
||||
label: About your Passkey
|
||||
default: "Find your Passkey by accessing the <a href=\"https://fsm.name/Rss\" target=\"_blank\">FSM RSS</a> page."
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
|
||||
login:
|
||||
path: https://api.fsm.name/Torrents/listTorrents
|
||||
method: get
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: https://api.fsm.name/Torrents/listTorrents
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
APITOKEN: ["{{ .Config.apitoken }}"]
|
||||
|
||||
inputs:
|
||||
type: 0
|
||||
keyword: "{{ .Keywords }}"
|
||||
# 0 all, 1 2xfree, 2 free
|
||||
systematics: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
|
||||
|
||||
rows:
|
||||
selector: data.list
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: type.id
|
||||
title:
|
||||
selector: title
|
||||
_id:
|
||||
selector: tid
|
||||
details:
|
||||
text: "{{ .Config.sitelink }}Torrents/details?tid={{ .Result._id }}"
|
||||
download:
|
||||
text: "/Torrents/download?tid={{ .Result._id }}&passkey={{ .Config.passkey }}"
|
||||
infohash:
|
||||
selector: fileHash
|
||||
poster:
|
||||
selector: cover
|
||||
genre:
|
||||
selector: tags
|
||||
description:
|
||||
text: "{{ .Result.genre }}"
|
||||
files:
|
||||
selector: fileCount
|
||||
seeders:
|
||||
selector: peers.upload
|
||||
leechers:
|
||||
selector: peers.download
|
||||
grabs:
|
||||
selector: finish
|
||||
date:
|
||||
selector: createdAt
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["年", "years"]
|
||||
- name: replace
|
||||
args: ["月", "months"]
|
||||
- name: replace
|
||||
args: ["天", "days"]
|
||||
- name: re_replace
|
||||
args: ["小?时", "hours"]
|
||||
- name: replace
|
||||
args: ["分", "minutes"]
|
||||
- name: replace
|
||||
args: ["前", " ago"]
|
||||
- name: timeago
|
||||
size:
|
||||
selector: fileSize
|
||||
downloadvolumefactor:
|
||||
selector: status.downCoefficient
|
||||
uploadvolumefactor:
|
||||
selector: status.upCoefficient
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
# json TNode
|
@@ -151,6 +151,10 @@ search:
|
||||
selector: td:nth-child(7)
|
||||
files:
|
||||
selector: td:nth-child(4)
|
||||
description:
|
||||
case:
|
||||
img[src="pic/staff/yes.png"]: Verified
|
||||
"*": Unverified
|
||||
downloadvolumefactor:
|
||||
selector: td:nth-child(6) > span:nth-last-child(2)
|
||||
optional: true
|
||||
|
@@ -8,7 +8,7 @@ encoding: UTF-8
|
||||
links:
|
||||
- https://glodls.to/
|
||||
- https://www.gtdb.to/
|
||||
- https://glotorrents.unblockit.foo/
|
||||
- https://glotorrents.unblockit.ing/
|
||||
- https://glotorrents.mrunblock.bond/
|
||||
- https://glodls.unblockninja.com/
|
||||
- https://glotorrents.nocensor.cloud/
|
||||
@@ -17,7 +17,6 @@ legacylinks:
|
||||
- https://gtdb.to/
|
||||
- https://glotorrents.nocensor.biz/
|
||||
- https://glotorrents.nocensor.sbs/
|
||||
- https://glotorrents.unblockit.bet/
|
||||
- https://glotorrents.unblockit.cat/
|
||||
- https://glotorrents.unblockit.nz/
|
||||
- https://glotorrents.nocensor.world/
|
||||
@@ -39,6 +38,7 @@ legacylinks:
|
||||
- https://glotorrents.unblockit.vegas/
|
||||
- https://glotorrents.unblockit.esq/
|
||||
- https://glotorrents.unblockit.zip/
|
||||
- https://glotorrents.unblockit.foo/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -131,7 +131,6 @@ search:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
description:
|
||||
optional: true
|
||||
selector: div.torrent_name_col > a
|
||||
poster:
|
||||
selector: img#poster
|
||||
|
@@ -19,6 +19,7 @@ caps:
|
||||
- {id: 10, cat: XXX, desc: "Pics"}
|
||||
- {id: 1, cat: XXX, desc: "Pron"}
|
||||
- {id: 8, cat: XXX, desc: "Retro"}
|
||||
- {id: 12, cat: XXX, desc: "Transsexual"}
|
||||
- {id: 7, cat: XXX, desc: "VR"}
|
||||
|
||||
modes:
|
||||
@@ -100,7 +101,6 @@ search:
|
||||
selector: a[href^="torrents.php?action=download&id="]
|
||||
attribute: href
|
||||
description:
|
||||
optional: true
|
||||
selector: div.tags
|
||||
poster:
|
||||
selector: td:nth-child(2) > script
|
||||
|
@@ -7,6 +7,7 @@ type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.hawke.uno/
|
||||
- https://hawke.uno/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -195,4 +195,4 @@ search:
|
||||
description:
|
||||
selector: td:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.8.4 2023-05-27
|
||||
# NexusPHP v1.8.9 2023-11-15
|
||||
|
@@ -108,10 +108,11 @@ login:
|
||||
captcha:
|
||||
type: image
|
||||
selector: img[src="captcha.php?ext=.gif"]
|
||||
input: captcha
|
||||
input: input[name^="captcha"]
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
input[name="username"]: "{{ .Config.username }}"
|
||||
input[name="password"]: "{{ .Config.password }}"
|
||||
selectors: true
|
||||
error:
|
||||
- selector: td.embedded:contains("Access Denied")
|
||||
test:
|
||||
|
@@ -123,16 +123,22 @@ settings:
|
||||
ASC: asc
|
||||
|
||||
login:
|
||||
method: post
|
||||
path: login.php
|
||||
method: form
|
||||
form: form[action^="login.php"]
|
||||
inputs:
|
||||
uid: "{{ .Config.username }}"
|
||||
pwd: "{{ .Config.password }}"
|
||||
login: "Prijavi se"
|
||||
selectorinputs:
|
||||
csrf_token:
|
||||
selector: input[name="csrf_token"]
|
||||
attribute: value
|
||||
error:
|
||||
- selector: font[color="#FF0000"]
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href^="logout.php"]
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
|
@@ -69,6 +69,7 @@ caps:
|
||||
movie-search: [q]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
allowrawsearch: true
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
|
@@ -69,6 +69,7 @@ caps:
|
||||
movie-search: [q]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
allowrawsearch: true
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
|
@@ -468,7 +468,7 @@ login:
|
||||
inputs:
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
test:
|
||||
path: index.php
|
||||
path: /
|
||||
selector: a[href*="ucp.php?mode=logout"]
|
||||
|
||||
search:
|
||||
|
@@ -196,4 +196,4 @@ search:
|
||||
description:
|
||||
selector: td:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.8.8 2023-09-25
|
||||
# NexusPHP v1.8.9 2023-11-15
|
||||
|
@@ -149,7 +149,6 @@ search:
|
||||
selector: a[href^="torrents.php?action=download&id="]
|
||||
attribute: href
|
||||
description:
|
||||
optional: true
|
||||
selector: div.tags
|
||||
poster:
|
||||
selector: td:nth-child(2) > script
|
||||
|
@@ -8,7 +8,7 @@ encoding: UTF-8
|
||||
# changes to this indexer should also be made to limetorrentsclone
|
||||
links:
|
||||
- https://www.limetorrents.lol/
|
||||
- https://limetorrents.unblockit.foo/
|
||||
- https://limetorrents.unblockit.ing/
|
||||
- https://limetorrents.ninjaproxy1.com/
|
||||
- https://limetorrents.mrunblock.bond/
|
||||
- https://limetorrents.nocensor.cloud/
|
||||
@@ -23,7 +23,6 @@ legacylinks:
|
||||
- https://limetor.com/
|
||||
- https://www.limetor.pro/
|
||||
- https://www.limetorrents.pro/
|
||||
- https://limetorrents.unblockit.bet/
|
||||
- https://limetorrents.unblockit.cat/
|
||||
- https://limetorrents.unblockit.nz/
|
||||
- https://limetorrents.nocensor.world/
|
||||
@@ -45,6 +44,7 @@ legacylinks:
|
||||
- https://limetorrents.unblockit.vegas/
|
||||
- https://limetorrents.unblockit.esq/
|
||||
- https://limetorrents.unblockit.zip/
|
||||
- https://limetorrents.unblockit.foo/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -169,4 +169,4 @@ search:
|
||||
minimumseedtime:
|
||||
# 7 days (as seconds = 7 x 24 x 60 x 60)
|
||||
text: 604800
|
||||
# json UNIT3D 7.0.3
|
||||
# json UNIT3D 7.1.2
|
||||
|
@@ -69,7 +69,7 @@ search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
inputs:
|
||||
search: "{{ if .Keywords }}{{ .Keywords }}{{ else }}%%{{ end }}"
|
||||
search: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}"
|
||||
# does not support multi category searches
|
||||
cat: 0
|
||||
# 0 title, 1 descr, 2 phrase, 3 infohash
|
||||
|
@@ -721,6 +721,7 @@ caps:
|
||||
movie-search: [q]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
allowrawsearch: true
|
||||
|
||||
settings:
|
||||
- name: stripcyrillic
|
||||
|
@@ -721,6 +721,7 @@ caps:
|
||||
movie-search: [q]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
allowrawsearch: true
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
|
@@ -161,4 +161,4 @@ search:
|
||||
minimumseedtime:
|
||||
# 2 days (as seconds = 2 x 24 x 60 x 60)
|
||||
text: 172800
|
||||
# json UNIT3D 7.0.0
|
||||
# json UNIT3D 7.1.2
|
||||
|
@@ -188,4 +188,4 @@ search:
|
||||
description:
|
||||
selector: td:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.8.8 2023-09-25
|
||||
# NexusPHP v1.8.9 2023-11-15
|
||||
|
@@ -185,4 +185,4 @@ search:
|
||||
description:
|
||||
selector: td.rowfollow:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.8.4 2023-05-27
|
||||
# NexusPHP v1.8.9 2023-11-15
|
||||
|
@@ -160,4 +160,4 @@ search:
|
||||
True: 2 # double
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
# json UNIT3D 7.0.3
|
||||
# json UNIT3D 7.1.2
|
||||
|
@@ -348,6 +348,7 @@ caps:
|
||||
movie-search: [q]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
allowrawsearch: true
|
||||
|
||||
settings:
|
||||
- name: stripcyrillic
|
||||
|
@@ -179,10 +179,10 @@ search:
|
||||
case:
|
||||
False: 1 # normal
|
||||
True: 2 # double
|
||||
# global MR is 0.4 but torrents must be seeded for 3 days regardless of ratio
|
||||
# global MR is 0.4 but torrents must be seeded for 1 day regardless of ratio
|
||||
# minimumratio:
|
||||
# text: 0.4
|
||||
minimumseedtime:
|
||||
# 3 days (as seconds = 3 x 24 x 60 x 60)
|
||||
text: 259200
|
||||
# 1 day (as seconds = 1 x 24 x 60 x 60)
|
||||
text: 86400
|
||||
# json UNIT3D 7.0.3
|
||||
|
@@ -7,11 +7,12 @@ type: public
|
||||
encoding: UTF-8
|
||||
requestDelay: 2
|
||||
links:
|
||||
- https://solidtorrents.to/
|
||||
- https://solidtorrents.eu/
|
||||
- https://solidtorrents.nocensor.cloud/
|
||||
legacylinks:
|
||||
- https://solidtorrents.net/
|
||||
- https://solidtorrents.nocensor.click/
|
||||
- https://solidtorrents.to/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
|
@@ -9,7 +9,7 @@ requestDelay: 2
|
||||
links:
|
||||
- https://www.torlock2.com/
|
||||
- https://www.torlock.com/
|
||||
- https://torlock.unblockit.foo/
|
||||
- https://torlock.unblockit.ing/
|
||||
- https://torlock.nocensor.cloud/
|
||||
- https://torlock.mrunblock.bond/
|
||||
legacylinks:
|
||||
@@ -17,7 +17,6 @@ legacylinks:
|
||||
- https://torlock.nocensor.biz/
|
||||
- https://www.torlock.icu/
|
||||
- https://torlock.nocensor.sbs/
|
||||
- https://torlock.unblockit.bet/
|
||||
- https://torlock.unblockit.cat/
|
||||
- https://torlock.unblockit.nz/
|
||||
- https://torlock.nocensor.world/
|
||||
@@ -37,6 +36,7 @@ legacylinks:
|
||||
- https://torlock.unblockit.vegas/
|
||||
- https://torlock.unblockit.esq/
|
||||
- https://torlock.unblockit.zip/
|
||||
- https://torlock.unblockit.foo/
|
||||
|
||||
caps:
|
||||
# dont forget to update the search fields category case block
|
||||
|
@@ -7,7 +7,7 @@ type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.torrentdownload.info/
|
||||
- https://torrentdownload.unblockit.foo/
|
||||
- https://torrentdownload.unblockit.ing/
|
||||
- https://torrentdownload.mrunblock.bond/
|
||||
- https://torrentdownload.nocensor.cloud/
|
||||
legacylinks:
|
||||
@@ -15,7 +15,6 @@ legacylinks:
|
||||
- https://torrentdownload.nocensor.work/
|
||||
- https://torrentdownload.nocensor.biz/
|
||||
- https://torrentdownload.nocensor.sbs/
|
||||
- https://torrentdownload.unblockit.bet/
|
||||
- https://torrentdownload.unblockit.cat/
|
||||
- https://torrentdownload.unblockit.nz/
|
||||
- https://torrentdownload.nocensor.world/
|
||||
@@ -35,6 +34,7 @@ legacylinks:
|
||||
- https://torrentdownload.unblockit.vegas/
|
||||
- https://torrentdownload.unblockit.esq/
|
||||
- https://torrentdownload.unblockit.zip/
|
||||
- https://torrentdownload.unblockit.foo/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -7,7 +7,7 @@ type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.torrentdownloads.pro/
|
||||
- https://torrentdownloads.unblockit.foo/
|
||||
- https://torrentdownloads.unblockit.ing/
|
||||
- https://torrentdownloads.mrunblock.bond/
|
||||
- https://torrentdownloads.unblockninja.com/
|
||||
- https://torrentdownloads.nocensor.cloud/
|
||||
@@ -16,7 +16,6 @@ legacylinks:
|
||||
- https://torrentdownloads.nocensor.work/
|
||||
- https://torrentdownloads.nocensor.biz/
|
||||
- https://torrentdownloads.nocensor.sbs/
|
||||
- https://torrentdownloads.unblockit.bet/
|
||||
- https://torrentdownloads.unblockit.cat/
|
||||
- https://torrentdownloads.unblockit.nz/
|
||||
- https://torrentdownloads.nocensor.world/
|
||||
@@ -37,6 +36,7 @@ legacylinks:
|
||||
- https://torrentdownloads.unblockit.vegas/
|
||||
- https://torrentdownloads.unblockit.esq/
|
||||
- https://torrentdownloads.unblockit.zip/
|
||||
- https://torrentdownloads.unblockit.foo/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -8,7 +8,7 @@ encoding: UTF-8
|
||||
links:
|
||||
- https://www.torrentfunk.com/
|
||||
- https://www.torrentfunk2.com/
|
||||
- https://torrentfunk.unblockit.foo/
|
||||
- https://torrentfunk.unblockit.ing/
|
||||
- https://torrentfunk.nocensor.cloud/
|
||||
- https://torrentfunk.mrunblock.bond/
|
||||
- https://torrentfunk.ninjaproxy1.com/
|
||||
@@ -17,7 +17,6 @@ legacylinks:
|
||||
- https://torrentfunk.nocensor.work/
|
||||
- https://torrentfunk.nocensor.biz/
|
||||
- https://torrentfunk.nocensor.sbs/
|
||||
- https://torrentfunk.unblockit.bet/
|
||||
- https://torrentfunk.unblockit.cat/
|
||||
- https://torrentfunk.unblockit.nz/
|
||||
- https://torrentfunk.nocensor.world/
|
||||
@@ -37,6 +36,7 @@ legacylinks:
|
||||
- https://torrentfunk.unblockit.vegas/
|
||||
- https://torrentfunk.unblockit.esq/
|
||||
- https://torrentfunk.unblockit.zip/
|
||||
- https://torrentfunk.unblockit.foo/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -19,7 +19,6 @@ legacylinks:
|
||||
- https://torrentgalaxy.nocensor.work/
|
||||
- https://torrentgalaxy.nocensor.biz/
|
||||
- https://torrentgalaxy.nocensor.sbs/
|
||||
- https://torrentgalaxy.unblockit.bet/
|
||||
- https://torrentgalaxy.nocensor.world/ # banned
|
||||
- https://torrentgalaxy.unblockit.cat/
|
||||
- https://torrentgalaxy.unblockit.nz/
|
||||
@@ -36,6 +35,7 @@ legacylinks:
|
||||
- https://torrentgalaxy.unblockit.esq/
|
||||
- https://torrentgalaxy.unblockit.zip/
|
||||
- https://torrentgalaxy.unblockit.foo/ # 504
|
||||
- https://torrentgalaxy.unblockit.ing/ # 504
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -56,6 +56,8 @@ download:
|
||||
args: ["https://mylink.me.uk/?url=", ""]
|
||||
- name: replace
|
||||
args: ["https://mylink.cx/?url=", ""]
|
||||
- name: replace
|
||||
args: ["https://mylink.cloud/?url=", ""]
|
||||
- name: urldecode
|
||||
|
||||
search:
|
||||
|
@@ -7,9 +7,8 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentqq285.com/
|
||||
- https://torrentqq286.com/
|
||||
legacylinks:
|
||||
- https://torrentqq270.com/
|
||||
- https://torrentqq271.com/
|
||||
- https://torrentqq272.com/
|
||||
- https://torrentqq273.com/
|
||||
@@ -24,6 +23,7 @@ legacylinks:
|
||||
- https://torrentqq282.com/
|
||||
- https://torrentqq283.com/
|
||||
- https://torrentqq284.com/
|
||||
- https://torrentqq285.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -7,10 +7,8 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentsir126.com/
|
||||
- https://torrentsir127.com/
|
||||
legacylinks:
|
||||
- http://torrentsir117.com/
|
||||
- https://torrentsir117.com/
|
||||
- http://torrentsir118.com/
|
||||
- https://torrentsir118.com/
|
||||
- http://torrentsir119.com/
|
||||
@@ -28,6 +26,9 @@ legacylinks:
|
||||
- http://torrentsir125.com/
|
||||
- https://torrentsir125.com/
|
||||
- http://torrentsir126.com/
|
||||
- https://torrentsir126.com/
|
||||
- http://torrentsir127.com/
|
||||
- httsp://torrentsir127.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -80,6 +80,9 @@ search:
|
||||
page: 2
|
||||
inputs:
|
||||
q: "{{ if .Keywords }}{{ .Keywords }}{{ else }}+{{ end }}"
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["(\\w+)", "+$1"] # prepend + to each word
|
||||
|
||||
rows:
|
||||
selector: table.table-responsive > tbody > tr
|
||||
|
@@ -186,4 +186,9 @@ search:
|
||||
case:
|
||||
img[src$="/x2.gif"]: 2
|
||||
"*": 1
|
||||
minimumratio:
|
||||
text: 0.5
|
||||
minimumseedtime:
|
||||
# 1 day (as seconds = 24 x 60 x 60)
|
||||
text: 86400
|
||||
# TS Special Edition v.8.0
|
||||
|
@@ -158,10 +158,13 @@ search:
|
||||
img.pro_2up: 2
|
||||
"*": 1
|
||||
minimumseedtime:
|
||||
# 7 days (as seconds = 7 x 24 x 60 x 60)
|
||||
text: 604800
|
||||
case:
|
||||
img.hitandrun: 1209600 # 14 days (as seconds = 14 x 24 x 60 x 60)
|
||||
"*": 604800 # 7 days (as seconds = 7 x 24 x 60 x 60)
|
||||
minimumratio:
|
||||
text: 2.0
|
||||
case:
|
||||
img.hitandrun: 3.0
|
||||
"*": 2.0
|
||||
description:
|
||||
selector: td:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
|
@@ -26,9 +26,15 @@ caps:
|
||||
- {id: 23, cat: Books, desc: "Könyv/Eng"}
|
||||
- {id: 22, cat: Books, desc: "Könyv/Hun"}
|
||||
- {id: 20, cat: Console, desc: "Konzol"}
|
||||
- {id: 32, cat: Audio/Lossless, desc: "Lossless/Eng"}
|
||||
- {id: 31, cat: Audio/Lossless, desc: "Lossless/Hun"}
|
||||
- {id: 30, cat: TV/Anime, desc: "Mese/HD/Eng"}
|
||||
- {id: 29, cat: TV/Anime, desc: "Mese/HD/Hun"}
|
||||
- {id: 28, cat: TV/Anime, desc: "Mese/SD/Eng"}
|
||||
- {id: 27, cat: TV/Anime, desc: "Mese/SD/Hun"}
|
||||
- {id: 21, cat: PC/Mobile-Other, desc: "Mobil"}
|
||||
- {id: 16, cat: Audio, desc: "Mp3/Eng"}
|
||||
- {id: 15, cat: Audio, desc: "Mp3/Hun"}
|
||||
- {id: 16, cat: Audio/MP3, desc: "Mp3/Eng"}
|
||||
- {id: 15, cat: Audio/MP3, desc: "Mp3/Hun"}
|
||||
- {id: 17, cat: PC, desc: "Program"}
|
||||
- {id: 14, cat: TV, desc: "Sorozat/Eng"}
|
||||
- {id: 13, cat: TV, desc: "Sorozat/Hun"}
|
||||
@@ -144,6 +150,10 @@ search:
|
||||
selector: td:nth-child(10)
|
||||
leechers:
|
||||
selector: td:nth-child(11)
|
||||
description:
|
||||
case:
|
||||
i.fa-check: Verified
|
||||
i.fa-question: Unverified
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"span[style^=\"font\"]:contains(\"0x\")": 0
|
||||
@@ -153,6 +163,6 @@ search:
|
||||
"span[style^=\"font\"]:last-child:contains(\"2x\")": 2
|
||||
"*": 1
|
||||
minimumseedtime:
|
||||
# 3 days (as seconds = 3 x 24 x 60 x 60)
|
||||
text: 259200
|
||||
# 2 days (as seconds = 2 x 24 x 60 x 60)
|
||||
text: 172800
|
||||
# Engine n/a
|
||||
|
@@ -9,7 +9,7 @@ requestDelay: 2.5 # 2.5 requests per second (2 causes problems)
|
||||
links:
|
||||
# dont forget to update the details, download and poster replace args
|
||||
- https://yts.mx/
|
||||
- https://yts.unblockit.foo/
|
||||
- https://yts.unblockit.ing/
|
||||
- https://yts.ninjaproxy1.com/
|
||||
- https://yts.mrunblock.bond/
|
||||
- https://yts.nocensor.cloud/
|
||||
@@ -19,7 +19,6 @@ legacylinks:
|
||||
- https://yts.lt/
|
||||
- https://yts.nocensor.biz/
|
||||
- https://yts.nocensor.sbs/
|
||||
- https://yts.unblockit.bet/
|
||||
- https://yts.unblockit.cat/
|
||||
- https://yts.unblockit.nz/
|
||||
- https://yts.nocensor.world/
|
||||
@@ -41,6 +40,7 @@ legacylinks:
|
||||
- https://yts.unblockit.vegas/
|
||||
- https://yts.unblockit.esq/
|
||||
- https://yts.unblockit.zip/
|
||||
- https://yts.unblockit.foo/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -14,6 +14,7 @@ using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using Polly;
|
||||
using Polly.Retry;
|
||||
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
@@ -416,31 +417,41 @@ namespace Jackett.Common.Indexers
|
||||
}
|
||||
}
|
||||
|
||||
private AsyncPolicy<WebResult> RetryPolicy
|
||||
private ResiliencePipeline<WebResult> RetryStrategy
|
||||
{
|
||||
get
|
||||
{
|
||||
// Configure the retry policy
|
||||
int attemptNumber = 1;
|
||||
var retryPolicy = Policy
|
||||
.HandleResult<WebResult>(r => (int)r.Status >= 500)
|
||||
.Or<Exception>()
|
||||
.WaitAndRetryAsync(
|
||||
NumberOfRetryAttempts,
|
||||
retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt) / 4),
|
||||
onRetry: (exception, timeSpan, context) =>
|
||||
var retryPipeline = new ResiliencePipelineBuilder<WebResult>()
|
||||
.AddRetry(new RetryStrategyOptions<WebResult>
|
||||
{
|
||||
ShouldHandle = args => args.Outcome switch
|
||||
{
|
||||
if (exception.Result == null)
|
||||
{ Result: { HasHttpServerError: true } } => PredicateResult.True(),
|
||||
{ Result: { Status: System.Net.HttpStatusCode.RequestTimeout } } => PredicateResult.True(),
|
||||
{ Exception: { } } => PredicateResult.True(),
|
||||
_ => PredicateResult.False()
|
||||
},
|
||||
Delay = TimeSpan.FromSeconds(2),
|
||||
MaxRetryAttempts = NumberOfRetryAttempts,
|
||||
BackoffType = DelayBackoffType.Exponential,
|
||||
UseJitter = true,
|
||||
OnRetry = args =>
|
||||
{
|
||||
if (args.Outcome.Exception != null)
|
||||
{
|
||||
logger.Warn($"Request to {Name} failed with exception '{exception.Exception.Message}'. Retrying in {timeSpan.TotalSeconds}s... (Attempt {attemptNumber} of {NumberOfRetryAttempts}).");
|
||||
logger.Warn("Request to {0} failed with exception '{1}'. Retrying in {2}s.", Name, args.Outcome.Exception.Message, args.RetryDelay.TotalSeconds);
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.Warn($"Request to {Name} failed with status {exception.Result.Status}. Retrying in {timeSpan.TotalSeconds}s... (Attempt {attemptNumber} of {NumberOfRetryAttempts}).");
|
||||
logger.Warn("Request to {0} failed with status {1}. Retrying in {2}s.", Name, args.Outcome.Result?.Status, args.RetryDelay.TotalSeconds);
|
||||
}
|
||||
attemptNumber++;
|
||||
});
|
||||
return retryPolicy;
|
||||
|
||||
return default;
|
||||
}
|
||||
})
|
||||
.Build();
|
||||
|
||||
return retryPipeline;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -531,9 +542,9 @@ namespace Jackett.Common.Indexers
|
||||
string referer = null, IEnumerable<KeyValuePair<string, string>> data = null,
|
||||
Dictionary<string, string> headers = null, string rawbody = null, bool? emulateBrowser = null)
|
||||
{
|
||||
return await RetryPolicy.ExecuteAsync(async () =>
|
||||
await RequestWithCookiesAsync(url, cookieOverride, method, referer, data, headers, rawbody, emulateBrowser)
|
||||
);
|
||||
return await RetryStrategy
|
||||
.ExecuteAsync(async _ => await RequestWithCookiesAsync(url, cookieOverride, method, referer, data, headers, rawbody, emulateBrowser))
|
||||
.ConfigureAwait(false);
|
||||
}
|
||||
|
||||
protected virtual async Task<WebResult> RequestWithCookiesAsync(
|
||||
|
@@ -24,11 +24,9 @@ namespace Jackett.Common.Indexers
|
||||
public override string Id => "cinecalidad";
|
||||
public override string Name => "Cinecalidad";
|
||||
public override string Description => "Películas Full UHD/HD en Latino Dual.";
|
||||
public override string SiteLink { get; protected set; } = "https://vvvv.cinecalidad.so/";
|
||||
public override string SiteLink { get; protected set; } = "https://cinecalidad.fi/";
|
||||
public override string[] LegacySiteLinks => new[]
|
||||
{
|
||||
"https://v1.cinecalidad.foo/",
|
||||
"https://w.cinecalidad.foo/",
|
||||
"https://wwv.cinecalidad.foo/",
|
||||
"https://wv.cinecalidad.foo/",
|
||||
"https://vwv.cinecalidad.foo/",
|
||||
@@ -42,6 +40,8 @@ namespace Jackett.Common.Indexers
|
||||
"https://ww.cinecalidad.so/",
|
||||
"https://w.cinecalidad.so/",
|
||||
"https://wv.cinecalidad.so/",
|
||||
"https://vvvv.cinecalidad.so/",
|
||||
"https://wvvv.cinecalidad.so/",
|
||||
};
|
||||
public override string Language => "es-419";
|
||||
public override string Type => "public";
|
||||
|
@@ -26,10 +26,10 @@ namespace Jackett.Common.Indexers
|
||||
public override string Name => "DonTorrent";
|
||||
public override string Description => "DonTorrent is a SPANISH public tracker for MOVIES / TV / GENERAL";
|
||||
// in the event the redirect is inactive https://t.me/s/dontorrent should have the latest working domain
|
||||
public override string SiteLink { get; protected set; } = "https://dontorrent.nagoya/";
|
||||
public override string SiteLink { get; protected set; } = "https://dontorrent.cymru/";
|
||||
public override string[] AlternativeSiteLinks => new[]
|
||||
{
|
||||
"https://dontorrent.nagoya/",
|
||||
"https://dontorrent.cymru/",
|
||||
"https://todotorrents.org/",
|
||||
"https://tomadivx.net/",
|
||||
"https://seriesblanco.one/",
|
||||
@@ -38,8 +38,6 @@ namespace Jackett.Common.Indexers
|
||||
};
|
||||
public override string[] LegacySiteLinks => new[]
|
||||
{
|
||||
"https://dontorrent.day/",
|
||||
"https://dontorrent.boo/",
|
||||
"https://dontorrent.foo/",
|
||||
"https://dontorrent.hair/",
|
||||
"https://dontorrent.rsvp/",
|
||||
@@ -53,6 +51,8 @@ namespace Jackett.Common.Indexers
|
||||
"https://dontorrent.party/",
|
||||
"https://dontorrent.joburg/",
|
||||
"https://dontorrent.wales/",
|
||||
"https://dontorrent.nagoya/",
|
||||
"https://dontorrent.contact/",
|
||||
};
|
||||
public override string Language => "es-ES";
|
||||
public override string Type => "public";
|
||||
|
@@ -26,12 +26,11 @@ namespace Jackett.Common.Indexers
|
||||
public override string[] AlternativeSiteLinks => new[]
|
||||
{
|
||||
"https://www.epublibre.org/",
|
||||
"https://epublibre.unblockit.foo/"
|
||||
"https://epublibre.unblockit.ing/"
|
||||
};
|
||||
public override string[] LegacySiteLinks => new[]
|
||||
{
|
||||
"https://epublibre.org/",
|
||||
"https://epublibre.unblockit.bet/",
|
||||
"https://epublibre.unblockit.cat/",
|
||||
"https://epublibre.unblockit.nz/",
|
||||
"https://epublibre.unblockit.page/",
|
||||
@@ -46,6 +45,7 @@ namespace Jackett.Common.Indexers
|
||||
"https://epublibre.unblockit.vegas/",
|
||||
"https://epublibre.unblockit.esq/",
|
||||
"https://epublibre.unblockit.zip/",
|
||||
"https://epublibre.unblockit.foo/",
|
||||
};
|
||||
public override string Language => "es-ES";
|
||||
public override string Type => "public";
|
||||
|
@@ -164,6 +164,13 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
var results = await RequestWithCookiesAndRetryAsync(searchUrl);
|
||||
|
||||
// Occasionally the cookies become invalid, login again if that happens
|
||||
if (results.ContentString.Contains("Error:You're not authorized"))
|
||||
{
|
||||
await ApplyConfiguration(null);
|
||||
results = await RequestWithCookiesAndRetryAsync(searchUrl);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var parser = new HtmlParser();
|
||||
|
@@ -200,7 +200,9 @@ namespace Jackett.Common.Indexers
|
||||
{
|
||||
var results = await PerformQuery(new TorznabQuery());
|
||||
if (!results.Any())
|
||||
{
|
||||
throw new Exception("Found 0 results in the tracker");
|
||||
}
|
||||
|
||||
IsConfigured = true;
|
||||
SaveConfig();
|
||||
@@ -261,29 +263,43 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
var headers = new Dictionary<string, string>();
|
||||
if (!string.IsNullOrEmpty(configData.UserAgent.Value))
|
||||
{
|
||||
headers.Add("User-Agent", configData.UserAgent.Value);
|
||||
}
|
||||
|
||||
var qc = new NameValueCollection();
|
||||
|
||||
foreach (var cat in MapTorznabCapsToTrackers(query))
|
||||
{
|
||||
qc.Set(cat, string.Empty);
|
||||
}
|
||||
|
||||
if (((BoolConfigurationItem)configData.GetDynamic("freeleech")).Value)
|
||||
{
|
||||
qc.Set("free", "on");
|
||||
}
|
||||
|
||||
var searchQuery = new List<string>();
|
||||
|
||||
// IPT uses sphinx, which supports boolean operators and grouping
|
||||
if (query.IsImdbQuery)
|
||||
{
|
||||
searchQuery.Add($"+({query.ImdbID})");
|
||||
}
|
||||
else if (query.IsGenreQuery)
|
||||
{
|
||||
searchQuery.Add($"+({query.Genre})");
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(query.GetQueryString()))
|
||||
{
|
||||
searchQuery.Add($"+({query.GetQueryString()})");
|
||||
}
|
||||
|
||||
if (searchQuery.Any())
|
||||
{
|
||||
qc.Set("q", $"{string.Join(" ", searchQuery)}");
|
||||
}
|
||||
|
||||
qc.Set("o", ((SingleSelectConfigurationItem)configData.GetDynamic("sort")).Value);
|
||||
|
||||
@@ -298,10 +314,14 @@ namespace Jackett.Common.Indexers
|
||||
var results = response.ContentString;
|
||||
|
||||
if (results == null || !results.Contains("/lout.php"))
|
||||
{
|
||||
throw new Exception("The user is not logged in. It is possible that the cookie has expired or you made a mistake when copying it. Please check the settings.");
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(query.ImdbID) && string.IsNullOrWhiteSpace(query.SearchTerm) && results.Contains("No Torrents Found!"))
|
||||
{
|
||||
throw new Exception("Got No Torrents Found! Make sure your IPTorrents profile config contain proper default category settings.");
|
||||
}
|
||||
|
||||
char[] delimiters = { ',', ' ', '/', ')', '(', '.', ';', '[', ']', '"', '|', ':' };
|
||||
|
||||
@@ -310,12 +330,18 @@ namespace Jackett.Common.Indexers
|
||||
var parser = new HtmlParser();
|
||||
using var doc = parser.ParseDocument(results);
|
||||
|
||||
var headerColumns = doc.QuerySelectorAll("table[id=\"torrents\"] > thead > tr > th").Select(x => x.TextContent.Trim()).ToList();
|
||||
var sizeIndex = FindColumnIndexOrDefault(headerColumns, "Sort by size", 5);
|
||||
var filesIndex = FindColumnIndexOrDefault(headerColumns, "Sort by files");
|
||||
|
||||
var rows = doc.QuerySelectorAll("table[id=\"torrents\"] > tbody > tr");
|
||||
foreach (var row in rows)
|
||||
{
|
||||
var qTitleLink = row.QuerySelector("a.hv");
|
||||
if (qTitleLink == null) // no results
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var title = CleanTitle(qTitleLink.TextContent);
|
||||
var details = new Uri(SiteLink + qTitleLink.GetAttribute("href").TrimStart('/'));
|
||||
@@ -330,35 +356,43 @@ namespace Jackett.Common.Indexers
|
||||
description += dateSplit.Length > 1 ? " Uploaded by: " + dateSplit.Last().Trim() : "";
|
||||
var releaseGenres = validTagList.Intersect(description.ToLower().Split(delimiters, StringSplitOptions.RemoveEmptyEntries)).ToList();
|
||||
|
||||
// Torrents - Category column == Text or Code
|
||||
// release.Category = MapTrackerCatDescToNewznab(row.Cq().Find("td:eq(0)").Text()); // Works for "Text" but only contains the parent category
|
||||
var catIcon = row.QuerySelector("td:nth-of-type(1) a");
|
||||
if (catIcon == null)
|
||||
// Torrents - Category column == Text or Code
|
||||
// release.Category = MapTrackerCatDescToNewznab(row.Cq().Find("td:eq(0)").Text()); // Works for "Text" but only contains the parent category
|
||||
{
|
||||
throw new Exception("Please, change the 'Torrents - Category column' option to 'Icons' in the website Settings. Wait a minute (cache) and then try again.");
|
||||
}
|
||||
|
||||
// Torrents - Category column == Icons
|
||||
var cat = MapTrackerCatToNewznab(catIcon.GetAttribute("href").Substring(1));
|
||||
|
||||
var size = ParseUtil.GetBytes(row.Children[5].TextContent);
|
||||
var size = ParseUtil.GetBytes(row.Children[sizeIndex].TextContent);
|
||||
|
||||
var colIndex = 6;
|
||||
int? files = null;
|
||||
if (row.Children.Length == 10) // files column is enabled in the site settings
|
||||
|
||||
if (filesIndex != -1)
|
||||
{
|
||||
files = ParseUtil.CoerceInt(row.Children[colIndex].TextContent.Replace("Go to files", ""));
|
||||
colIndex++;
|
||||
// files column is enabled in the site settings
|
||||
files = ParseUtil.CoerceInt(row.Children[filesIndex].TextContent.Replace("Go to files", ""));
|
||||
}
|
||||
var grabs = ParseUtil.CoerceInt(row.Children[colIndex++].TextContent);
|
||||
var seeders = ParseUtil.CoerceInt(row.Children[colIndex++].TextContent);
|
||||
var leechers = ParseUtil.CoerceInt(row.Children[colIndex].TextContent);
|
||||
var dlVolumeFactor = row.QuerySelector("span.free") != null ? 0 : 1;
|
||||
|
||||
var colIndex = row.Children.Length == 10 ? 7 : 6;
|
||||
|
||||
var grabsIndex = FindColumnIndexOrDefault(headerColumns, "Sort by snatches", colIndex++);
|
||||
var seedersIndex = FindColumnIndexOrDefault(headerColumns, "Sort by seeders", colIndex++);
|
||||
var leechersIndex = FindColumnIndexOrDefault(headerColumns, "Sort by leechers", colIndex);
|
||||
|
||||
var grabs = ParseUtil.CoerceInt(row.Children[grabsIndex].TextContent);
|
||||
var seeders = ParseUtil.CoerceInt(row.Children[seedersIndex].TextContent);
|
||||
var leechers = ParseUtil.CoerceInt(row.Children[leechersIndex].TextContent);
|
||||
|
||||
var release = new ReleaseInfo
|
||||
{
|
||||
Title = title,
|
||||
Details = details,
|
||||
Guid = details,
|
||||
Link = link,
|
||||
PublishDate = publishDate,
|
||||
Details = details,
|
||||
Title = title,
|
||||
Category = cat,
|
||||
Description = description,
|
||||
Genres = releaseGenres,
|
||||
@@ -367,7 +401,8 @@ namespace Jackett.Common.Indexers
|
||||
Grabs = grabs,
|
||||
Seeders = seeders,
|
||||
Peers = seeders + leechers,
|
||||
DownloadVolumeFactor = dlVolumeFactor,
|
||||
PublishDate = publishDate,
|
||||
DownloadVolumeFactor = row.QuerySelector("span.free") != null ? 0 : 1,
|
||||
UploadVolumeFactor = 1,
|
||||
MinimumRatio = 1,
|
||||
MinimumSeedTime = 1209600 // 336 hours
|
||||
@@ -384,6 +419,13 @@ namespace Jackett.Common.Indexers
|
||||
return releases;
|
||||
}
|
||||
|
||||
private static int FindColumnIndexOrDefault(List<string> columns, string name, int defaultIndex = -1)
|
||||
{
|
||||
var index = columns.FindIndex(x => x.Equals(name, StringComparison.Ordinal));
|
||||
|
||||
return index != -1 ? index : defaultIndex;
|
||||
}
|
||||
|
||||
private static string CleanTitle(string title)
|
||||
{
|
||||
// drop invalid chars that seems to have cropped up in some titles. #6582
|
||||
|
@@ -24,7 +24,7 @@
|
||||
<PackageReference Include="MimeMapping" Version="1.0.1.50" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="NLog" Version="5.1.2" />
|
||||
<PackageReference Include="polly" Version="7.2.3" />
|
||||
<PackageReference Include="Polly" Version="8.2.0" />
|
||||
<PackageReference Include="SharpZipLib" Version="1.4.2" />
|
||||
<PackageReference Include="System.IO.FileSystem.AccessControl" Version="5.0.0" />
|
||||
<PackageReference Include="System.ServiceProcess.ServiceController" Version="6.0.0" />
|
||||
|
@@ -66,6 +66,10 @@ namespace Jackett.Common.Utils.Clients
|
||||
set => _contentString = value;
|
||||
}
|
||||
|
||||
public bool HasHttpError => (int)Status >= 400;
|
||||
|
||||
public bool HasHttpServerError => (int)Status >= 500;
|
||||
|
||||
public bool IsRedirect => Status == HttpStatusCode.Redirect ||
|
||||
Status == HttpStatusCode.RedirectKeepVerb ||
|
||||
Status == HttpStatusCode.RedirectMethod ||
|
||||
|
Reference in New Issue
Block a user