Compare commits

...

55 Commits

Author SHA1 Message Date
Garfield69
2b1d6d7394 carphunter: fix 2125359250 2023-12-13 18:19:07 +13:00
Garfield69
395da2a92f gigatorrents: add verified/unverified to descr 2023-12-13 18:14:08 +13:00
Garfield69
72333deede femdomcult: add verified/unverified to descr 2023-12-13 16:52:49 +13:00
Garfield69
c7e1786123 estone: lint 2023-12-13 16:52:19 +13:00
Garfield69
710b98e43a estone: add verified/unverified to descr 2023-12-13 16:40:26 +13:00
ilike2burnthing
e2f4fd956f torrentproject2: add new download filter 2023-12-13 02:52:42 +00:00
ilike2burnthing
6d4da1fe19 readme: add homebrew install link. resolves #14906 2023-12-13 00:59:10 +00:00
ilike2burnthing
54e36ce621 fsm: add Chinese private tracker. resolves #14887 (#14907) 2023-12-13 00:48:00 +00:00
ilike2burnthing
82a8416ed5 diablotorrent: fix field name format 2023-12-12 20:48:11 +00:00
Garfield69
983f551adf diablotorrent: add verified/unverified to descr 2023-12-13 07:42:15 +13:00
Garfield69
d21dd3970e bithorlo: add verified/unverified to descr 2023-12-13 06:33:13 +13:00
Garfield69
cb95e4541e bestcore: add verified/unverified to descr 2023-12-12 19:51:29 +13:00
Garfield69
2125359250 carphunter: add verified/unverified to descr 2023-12-12 19:17:21 +13:00
Garfield69
16d38dbcc2 beload: add verified/unverified to descr 2023-12-12 19:02:41 +13:00
Garfield69
aa4a5f144d audionews: add verified/unverified to descr 2023-12-12 18:23:42 +13:00
Garfield69
0e8ba61d48 dontorrent: new domain 2023-12-12 17:47:53 +13:00
Garfield69
f491c98bf6 ultrahd: new mst and mr 2023-12-12 06:37:19 +13:00
Bogdan
9cadde6fd5 fix cs 2023-12-11 16:05:44 +02:00
Bogdan
e629e86477 iptorrents: parse size column using index by name 2023-12-11 15:51:44 +02:00
Garfield69
f9a3afcbef assorted: description is auto-optional 2023-12-11 19:44:25 +13:00
Garfield69
26b059a699 xider-torrent: 2mst + add verified/unverified descr 2023-12-11 17:45:05 +13:00
Garfield69
193e338390 cinecalidad: new domain 2023-12-11 17:26:00 +13:00
Garfield69
a0cb8e9b25 asiancinema: support multi-lingual date. resolves #14900 2023-12-11 13:40:55 +13:00
ilike2burnthing
0c54815b22 enthralled: add 2fa indexer 2023-12-10 23:14:32 +00:00
ilike2burnthing
cb7c14e101 Update hellashut.yml 2023-12-10 22:00:08 +00:00
Garfield69
4077c37e7d torrentz2eu: prefix keywords wtth plus. resolves #10959 2023-12-11 07:44:40 +13:00
Garfield69
f11161bfbf Update README.md 2023-12-11 07:43:26 +13:00
Bogdan
5bc872e8be core: migrate Polly to v8 (#14896) 2023-12-10 17:52:12 +02:00
ilike2burnthing
c5088ca09d enthralled: add 3X tracker. resolves #14897 (#14898) 2023-12-10 06:32:15 +00:00
ilike2burnthing
212ab63216 abtorrents: account for 0 seeders 2023-12-10 04:51:22 +00:00
ilike2burnthing
e68e863d91 divteam: account for category=0 2023-12-10 04:41:43 +00:00
Garfield69
c6b210bc55 megapeer: switch to year for keywordless search. resolves #12371 2023-12-10 06:52:15 +13:00
Garfield69
e0c0899f5b solidtorrents: new domain. resolves #4751 2023-12-10 06:15:45 +13:00
Garfield69
07b9586e8b rutracker-ru: allowrawsearch: true resolves #14894 2023-12-09 14:50:45 +13:00
Garfield69
3c6e3300f3 noname-club: allowrawsearch: true resolves #14893 2023-12-09 14:45:08 +13:00
Garfield69
e2cb31ee4c kinozal: allowrawsearch: true resolves #14892 2023-12-09 14:43:54 +13:00
Garfield69
ea4efc9441 fearnopeer: bump engine tag. 2023-12-09 14:43:28 +13:00
Bogdan
69ba8c47f4 hdtorrents: add check if login is needed
Fixes #14891
2023-12-08 20:31:25 +02:00
Garfield69
5e2aa247bb cinecalidad: new subdomain 2023-12-09 06:18:37 +13:00
ilike2burnthing
0aba9f1a4a torrentsir: typo fix 2023-12-08 17:13:39 +00:00
Garfield69
cda27dc8fe hawke-uno; add alternate domain .#14890 2023-12-08 18:58:17 +13:00
Garfield69
71ebadaa4e torrentsir: bump domain 2023-12-08 18:15:41 +13:00
Garfield69
0d7ba16754 assorted: new unblockit domain 2023-12-08 11:00:57 +13:00
Garfield69
0a672407dd assorted unit3d; bump engine tags 2023-12-08 08:27:45 +13:00
Garfield69
42a49785e3 scenelinks: new H&R 2023-12-08 08:27:22 +13:00
Garfield69
ce7f337b18 torrentqq: bump domain 2023-12-08 05:46:32 +13:00
Garfield69
57b9ed80fb xider-torrent: new cats 2023-12-07 06:59:04 +13:00
Garfield69
0f78eaa5cd boxingtorrents: new cat 2023-12-07 06:40:44 +13:00
Bogdan
aaab69e03b bangumi-moe: set requestDelay to 3s 2023-12-06 16:46:12 +02:00
Garfield69
64d2e4b396 dontorrent: new domain 2023-12-06 17:48:32 +13:00
ilike2burnthing
926a71ab4e korsar: update login test path. resolves #14884 2023-12-06 04:37:12 +00:00
ilike2burnthing
6baacfc2e6 twisted-music: add MR & MST 2023-12-06 03:21:57 +00:00
ilike2burnthing
8f132621f2 infire: update login. #14337 2023-12-05 21:05:01 +00:00
Garfield69
16da980de3 happyfappy: add new cat 2023-12-06 06:57:23 +13:00
Garfield69
797ff8e8c7 assorted nexus: bump engine tag 2023-12-06 06:57:07 +13:00
77 changed files with 669 additions and 120 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -124,7 +124,6 @@ search:
attribute: src
description:
selector: div[itemprop="description"]
optional: true
date:
selector: li:has(img#adddate)
filters:

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -176,7 +176,6 @@ search:
uploadvolumefactor:
text: 1
description:
optional: true
selector: font[color="#990000"]
minimumratio:
text: 1.0

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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="]

View File

@@ -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="]

View 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

View 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

View File

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

View File

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

View File

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

View File

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

View File

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

View 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

View File

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

View File

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

View File

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

View File

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

View File

@@ -7,6 +7,7 @@ type: private
encoding: UTF-8
links:
- https://www.hawke.uno/
- https://hawke.uno/
caps:
categorymappings:

View File

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

View File

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

View File

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

View File

@@ -69,6 +69,7 @@ caps:
movie-search: [q]
music-search: [q]
book-search: [q]
allowrawsearch: true
settings:
- name: username

View File

@@ -69,6 +69,7 @@ caps:
movie-search: [q]
music-search: [q]
book-search: [q]
allowrawsearch: true
settings:
- name: username

View File

@@ -468,7 +468,7 @@ login:
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
path: /
selector: a[href*="ucp.php?mode=logout"]
search:

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -721,6 +721,7 @@ caps:
movie-search: [q]
music-search: [q]
book-search: [q]
allowrawsearch: true
settings:
- name: stripcyrillic

View File

@@ -721,6 +721,7 @@ caps:
movie-search: [q]
music-search: [q]
book-search: [q]
allowrawsearch: true
settings:
- name: username

View File

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

View File

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

View File

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

View File

@@ -160,4 +160,4 @@ search:
True: 2 # double
minimumratio:
text: 1.0
# json UNIT3D 7.0.3
# json UNIT3D 7.1.2

View File

@@ -348,6 +348,7 @@ caps:
movie-search: [q]
music-search: [q]
book-search: [q]
allowrawsearch: true
settings:
- name: stripcyrillic

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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