mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-14 07:54:08 +02:00
Compare commits
85 Commits
v0.20.3670
...
v0.20.3772
Author | SHA1 | Date | |
---|---|---|---|
![]() |
7de0f550cc | ||
![]() |
0ec324dd34 | ||
![]() |
03f6d7651b | ||
![]() |
0910422976 | ||
![]() |
7ee3453e46 | ||
![]() |
7822044eae | ||
![]() |
74a4f306cb | ||
![]() |
799f32c9f9 | ||
![]() |
1119f10c22 | ||
![]() |
97c4a976c7 | ||
![]() |
37f68715f9 | ||
![]() |
68d76e6864 | ||
![]() |
eb17132fbd | ||
![]() |
b7ef6fc29a | ||
![]() |
285c108d87 | ||
![]() |
99417492ba | ||
![]() |
33de0c5c1d | ||
![]() |
6581d2c5ba | ||
![]() |
5b01c12f3a | ||
![]() |
7e845b9d75 | ||
![]() |
93cb60b641 | ||
![]() |
7a297ad9c2 | ||
![]() |
9e849c03ce | ||
![]() |
19ca962177 | ||
![]() |
97cf19bb66 | ||
![]() |
bdb4f05321 | ||
![]() |
a139cec2e5 | ||
![]() |
bdf6212ec3 | ||
![]() |
242dcee190 | ||
![]() |
7480740f1e | ||
![]() |
395aa6862c | ||
![]() |
ca03e49631 | ||
![]() |
83b432370a | ||
![]() |
bb3c8f59e8 | ||
![]() |
d216162d4f | ||
![]() |
f5a36e98c8 | ||
![]() |
cc064beb43 | ||
![]() |
e4d5764724 | ||
![]() |
30ed4b72de | ||
![]() |
2239ff5bec | ||
![]() |
59a0315883 | ||
![]() |
04e87c40df | ||
![]() |
35aed5efec | ||
![]() |
f2be351af9 | ||
![]() |
fe525ce581 | ||
![]() |
78a665223f | ||
![]() |
26b38d5d55 | ||
![]() |
7a3453ef4a | ||
![]() |
41b3723445 | ||
![]() |
10e4d8b0e3 | ||
![]() |
307412a64e | ||
![]() |
1ac3c5fa65 | ||
![]() |
8d674cdf2e | ||
![]() |
d31121fa77 | ||
![]() |
3c692a8dfb | ||
![]() |
26ea351dc5 | ||
![]() |
1dc7fa1233 | ||
![]() |
5146d51906 | ||
![]() |
d52fe7ecc4 | ||
![]() |
1932e3c749 | ||
![]() |
0c9e031e79 | ||
![]() |
241b84ee4f | ||
![]() |
96227f6af1 | ||
![]() |
fdb9b52a43 | ||
![]() |
a0ea02e4f6 | ||
![]() |
a8083062ad | ||
![]() |
4acb6536a2 | ||
![]() |
2e235d98bd | ||
![]() |
1264907b46 | ||
![]() |
ad78ce32d5 | ||
![]() |
afedbadd9b | ||
![]() |
874452e32c | ||
![]() |
fcb0eb5551 | ||
![]() |
740da7f726 | ||
![]() |
871a1af512 | ||
![]() |
4f3c754fd0 | ||
![]() |
db39ec3229 | ||
![]() |
fc4f4eaf23 | ||
![]() |
510168e43c | ||
![]() |
2f821ae413 | ||
![]() |
30a0cc7afb | ||
![]() |
018bff2cc8 | ||
![]() |
a701234a57 | ||
![]() |
94ae0cad43 | ||
![]() |
300852a417 |
49
README.md
49
README.md
@@ -47,6 +47,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* BTSOW
|
||||
* BullTorrent
|
||||
* Byrutor
|
||||
* Cinecalidad
|
||||
* comicat
|
||||
* ConCen
|
||||
* cpasbien
|
||||
@@ -55,10 +56,9 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Demonoid
|
||||
* DivxTotal
|
||||
* dmhy
|
||||
* Dodder (菟丝子资源社区)
|
||||
* DonTorrent
|
||||
* EBook Bay (EBB)
|
||||
* E-Hentai
|
||||
* EBook Bay (EBB)
|
||||
* EpubLibre
|
||||
* EXT Torrents
|
||||
* ExtraTorrent.st
|
||||
@@ -73,7 +73,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* GloDLS
|
||||
* GTorrent.pro
|
||||
* Idope
|
||||
* Il CorSaRo Blu
|
||||
* Il Corsaro Nero
|
||||
* Internet Archive (archive.org)
|
||||
* Isohunt2
|
||||
@@ -106,17 +105,14 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* PiratBit
|
||||
* PornosLab
|
||||
* PornoTorrent
|
||||
* Portugas
|
||||
* ProPorn
|
||||
* Rapidzona
|
||||
* RARBG
|
||||
* RinTor
|
||||
* RinTorNeT
|
||||
* Rus-media
|
||||
* RuTor
|
||||
* RuTracker.RU
|
||||
* Seedoff
|
||||
* seleZen
|
||||
* Sexy-Pics
|
||||
* Shana Project
|
||||
* ShowRSS
|
||||
@@ -135,7 +131,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Torrent9
|
||||
* Torrent9 clone
|
||||
* Torrent911
|
||||
* TorrentDownload
|
||||
* TorrentFunk
|
||||
* TorrentGalaxy (TGx)
|
||||
* TorrentKitty
|
||||
@@ -154,6 +149,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* VSTHouse
|
||||
* VST Torrents
|
||||
* xxxAdultTorrent
|
||||
* XXXClub
|
||||
* xxxtor
|
||||
* xxxtorrents
|
||||
* YourBittorrent
|
||||
@@ -163,7 +159,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
|
||||
<details> <summary> <b> Supported Semi-Private Trackers </b> </summary>
|
||||
|
||||
* 720pier
|
||||
* AniDUB
|
||||
* Anime-Free
|
||||
* AnimeLayer
|
||||
@@ -172,9 +167,10 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* BookTracker
|
||||
* BootyTape
|
||||
* Catorrent
|
||||
* Devil-Torrents
|
||||
* Darmowe torrenty
|
||||
* Deildu
|
||||
* Demonoid
|
||||
* Devil-Torrents
|
||||
* DimeADozen (EzTorrent)
|
||||
* DXP (Deaf Experts)
|
||||
* Electro-Torrent
|
||||
@@ -189,9 +185,10 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Gay-Torrents.net
|
||||
* Genesis-Movement
|
||||
* HD-CzTorrent
|
||||
* HellTorrents
|
||||
* HDGalaKtik
|
||||
* HellTorrents
|
||||
* HunTorrent
|
||||
* Il CorSaRo Blu
|
||||
* Kinorun
|
||||
* Kinozal
|
||||
* Lightning-Tor
|
||||
@@ -200,27 +197,32 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Marine Tracker
|
||||
* Mazepa
|
||||
* Metal Tracker
|
||||
* MuziekFrabriek
|
||||
* Moviesite
|
||||
* MVGroup Forum
|
||||
* MVGroup Main
|
||||
* NetHD (VietTorrent)
|
||||
* Newstudio (login)
|
||||
* NoNaMe Club (NNM-Club) (login)
|
||||
* PiratBit (login)
|
||||
* PornoLab
|
||||
* PussyTorrents
|
||||
* Rainbow Tracker
|
||||
* RGFootball
|
||||
* RinTor
|
||||
* RiperAM
|
||||
* RockBox
|
||||
* RUDUB (ex-BaibaKoTV)
|
||||
* Rustorka
|
||||
* RuTracker
|
||||
* SATClubbing
|
||||
* seleZen
|
||||
* Sharewood
|
||||
* SkTorrent
|
||||
* SkTorrent-org
|
||||
* themixingbowl (TMB)
|
||||
* Toloka.to
|
||||
* Torrent-Explosiv
|
||||
* Torrents-Local
|
||||
* TorrentDownload
|
||||
* TribalMixes
|
||||
* Union Fansub
|
||||
* UniOtaku
|
||||
@@ -241,6 +243,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* 3D Torrents (3DT)
|
||||
* 4thD (4th Dimension)
|
||||
* 52PT
|
||||
* 720pier
|
||||
* Abnormal
|
||||
* ABtorrents (ABT + RNS)
|
||||
* Acervos [![(invite needed)][inviteneeded]](#)
|
||||
@@ -252,8 +255,8 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* AlphaRatio (AR)
|
||||
* AmigosShareClub
|
||||
* AnimeBytes (AB)
|
||||
* AnimeTracker
|
||||
* AnimeTorrents (AnT)
|
||||
* AnimeTracker
|
||||
* AnimeWorld
|
||||
* Anthelion
|
||||
* Araba Fenice (Phoenix) [![(invite needed)][inviteneeded]](#)
|
||||
@@ -306,7 +309,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* CGPeers [![(invite needed)][inviteneeded]](#)
|
||||
* CHDBits [![(invite needed)][inviteneeded]](#)
|
||||
* ChileBT
|
||||
* Cinecalidad
|
||||
* Cinemageddon [![(invite needed)][inviteneeded]](#)
|
||||
* CinemaMovieS_ZT
|
||||
* Cinematik [![(invite needed)][inviteneeded]](#)
|
||||
@@ -318,7 +320,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* CrazySpirits
|
||||
* CrnaBerza
|
||||
* DANISH BYTES
|
||||
* Darius Tracker
|
||||
* DataScene (DS)
|
||||
* DataTalli
|
||||
* DesiTorrents
|
||||
@@ -358,7 +359,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* GiroTorrent
|
||||
* GreatPosterWall (GPW)
|
||||
* GreekDiamond
|
||||
* Greek Team
|
||||
* Greek Team [![(invite needed)][inviteneeded]](#)
|
||||
* HaiDan
|
||||
* Haitang
|
||||
* HappyFappy
|
||||
@@ -374,8 +375,8 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* HDArea (HDA)
|
||||
* HDAtmos
|
||||
* HDBits [![(invite needed)][inviteneeded]](#)
|
||||
* HDC (HDCiTY) [![(invite needed)][inviteneeded]](#)
|
||||
* HDChina (HDWing) [![(invite needed)][inviteneeded]](#)
|
||||
* HDCity [![(invite needed)][inviteneeded]](#)
|
||||
* HDFans
|
||||
* HDHome (HDBigger) [![(invite needed)][inviteneeded]](#)
|
||||
* HDMaYi
|
||||
@@ -390,10 +391,9 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Hebits
|
||||
* HellasHut
|
||||
* HHanClub
|
||||
* HQMusic
|
||||
* House of Devil
|
||||
* HQMusic
|
||||
* ICC2022
|
||||
* iHDBits
|
||||
* ImmortalSeed (iS)
|
||||
* Immortuos
|
||||
* Indietorrents [![(invite needed)][inviteneeded]](#)
|
||||
@@ -410,12 +410,11 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* KrazyZone
|
||||
* Kufirc
|
||||
* LastFiles
|
||||
* Lat-Team [![(invite needed)][inviteneeded]](#)
|
||||
* Le Saloon
|
||||
* Lat-Team [![(invite needed)][inviteneeded]](#)
|
||||
* LearnBits
|
||||
* LearnFlakes
|
||||
* leech24
|
||||
* LegacyHD (HD4Free)
|
||||
* LemonHD
|
||||
* Les-Cinephiles
|
||||
* Libble
|
||||
@@ -439,7 +438,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* MoreThanTV (MTV)
|
||||
* MouseBits
|
||||
* Movie-Torrentz
|
||||
* Moviesite
|
||||
* MuziekFabriek
|
||||
* MyAnonamouse (MAM)
|
||||
* MySpleen [![(invite needed)][inviteneeded]](#)
|
||||
* NCore
|
||||
@@ -463,6 +462,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* PolishSource (PS)
|
||||
* PolishTracker
|
||||
* Pornbay [![(invite needed)][inviteneeded]](#)
|
||||
* Portugas
|
||||
* PotUK
|
||||
* Pretome
|
||||
* PrivateHD (PHD)
|
||||
@@ -484,6 +484,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* Red Star Torrent (RST) [![(invite needed)][inviteneeded]](#)
|
||||
* Redacted (PassTheHeadphones)
|
||||
* RedBits
|
||||
* ReelFlix
|
||||
* Resurrect The Net
|
||||
* RetroFlix
|
||||
* RevolutionTT
|
||||
@@ -539,13 +540,14 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* TheEmpire (TE)
|
||||
* TheLeachZone (TLZ)
|
||||
* TheScenePlace (TSP)
|
||||
* Thor's Land
|
||||
* TJUPT
|
||||
* TLFBits [![(invite needed)][inviteneeded]](#)
|
||||
* TmGHuB
|
||||
* Tornado
|
||||
* Torrent Network (TN)
|
||||
* Torrent Sector Crew (TSC)
|
||||
* Torrent Surf
|
||||
* Torrent-Explosiv
|
||||
* Torrent-Syndikat [![(invite needed)][inviteneeded]](#)
|
||||
* TOrrent-tuRK (TORK)
|
||||
* Torrent.LT
|
||||
@@ -583,6 +585,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
|
||||
* xBytesV2
|
||||
* XSpeeds (XS)
|
||||
* Xthor
|
||||
* XtremeBytes
|
||||
* XWT-Classics
|
||||
* XWTorrents (XWT)
|
||||
* YDYPT
|
||||
|
@@ -5,6 +5,8 @@ description: "52PT is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
|
||||
language: zh-CN
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
certificates:
|
||||
- a66dce17f30d8b03be18502265e3dc09ec50b83b # expired 26-Mar-2023
|
||||
links:
|
||||
- https://52pt.site/
|
||||
|
||||
|
@@ -22,6 +22,7 @@ caps:
|
||||
- {id: 65, cat: Console, desc: "CoinOps Unofficial"}
|
||||
- {id: 63, cat: Books/Comics, desc: "Comics"}
|
||||
- {id: 60, cat: Console, desc: "Core"}
|
||||
- {id: 72, cat: Console, desc: "CORE Community"}
|
||||
- {id: 44, cat: Console, desc: "CP78"}
|
||||
- {id: 16, cat: TV/Documentary, desc: "Docu"}
|
||||
- {id: 41, cat: Console, desc: "Dragon"}
|
||||
|
@@ -5,6 +5,7 @@ description: "BitSearch is a Public torrent meta-search engine"
|
||||
language: en-US
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
requestDelay: 2
|
||||
links:
|
||||
- https://bitsearch.to/
|
||||
- https://bitsearch.mrunblock.guru/
|
||||
@@ -77,6 +78,7 @@ search:
|
||||
q: "{{ .Keywords }}"
|
||||
sort: "{{ .Config.sort }}"
|
||||
order: "{{ .Config.type }}"
|
||||
limit: 100
|
||||
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
|
@@ -50,6 +50,10 @@ settings:
|
||||
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: Filter freeleech only
|
||||
default: false
|
||||
|
||||
login:
|
||||
method: cookie
|
||||
@@ -81,7 +85,7 @@ search:
|
||||
include_dead_torrents: yes
|
||||
|
||||
rows:
|
||||
selector: table#sortabletable tbody tr:has(div[id^="port-target-"])
|
||||
selector: "table#sortabletable tbody tr:has(div[id^=\"port-target-\"]){{ if .Config.freeleech }}:has(img[src$=\"/freedownload.gif\"]){{ else }}{{ end }}"
|
||||
|
||||
fields:
|
||||
category:
|
||||
|
@@ -1,101 +0,0 @@
|
||||
---
|
||||
id: cpasbiensi
|
||||
name: cpasbien.si
|
||||
description: "cpasbien.si is a FRENCH Public site for TV / MOVIES / GENERAL"
|
||||
language: fr-FR
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.cpasbien.si/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
Other: Other
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings:
|
||||
- name: info_8000
|
||||
type: info
|
||||
label: About cpasbiensi Categories
|
||||
default: cpasbiensi does not return categories in its search results.</br>To add to your Apps' Torznab indexer, replace all categories with 8000(Other).
|
||||
- name: multilang
|
||||
type: checkbox
|
||||
label: Replace MULTi by another language in release name
|
||||
default: false
|
||||
- name: multilanguage
|
||||
type: select
|
||||
label: Replace MULTi by this language
|
||||
default: FRENCH
|
||||
options:
|
||||
FRENCH: FRENCH
|
||||
MULTi FRENCH: MULTi FRENCH
|
||||
ENGLISH: ENGLISH
|
||||
MULTi ENGLISH: MULTi ENGLISH
|
||||
VOSTFR: VOSTFR
|
||||
MULTi VOSTFR: MULTi VOSTFR
|
||||
- name: vostfr
|
||||
type: checkbox
|
||||
label: Replace VOSTFR and SUBFRENCH with ENGLISH
|
||||
default: false
|
||||
|
||||
download:
|
||||
selectors:
|
||||
- selector: a[href^="/get_torrents/"]
|
||||
attribute: href
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: "{{ if .Keywords }}recherche/{{ .Keywords }}{{ else }}{{ end }}"
|
||||
|
||||
rows:
|
||||
selector: table.table-corps > tbody > tr:has(a)
|
||||
|
||||
fields:
|
||||
category:
|
||||
text: Other
|
||||
title_phase1:
|
||||
selector: a
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b(19|20\\d{2})\\b)$", "$3 $1$2"]
|
||||
title_vostfr:
|
||||
text: "{{ .Result.title_phase1 }}"
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(?i)\\b(vostfr|subfrench)\\b", "ENGLISH"]
|
||||
title_phase2:
|
||||
text: "{{ if .Config.vostfr }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_phase1 }}{{ end }}"
|
||||
title_multilang:
|
||||
text: "{{ .Result.title_phase2 }}"
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(?i)\\b(MULTI(?!.*(?:FRENCH|ENGLISH|VOSTFR)))\\b", "{{ .Config.multilanguage }}"]
|
||||
title:
|
||||
text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase2 }}{{ end }}"
|
||||
details:
|
||||
selector: a
|
||||
attribute: href
|
||||
download:
|
||||
selector: a
|
||||
attribute: href
|
||||
size:
|
||||
selector: div.poid
|
||||
date:
|
||||
text: now
|
||||
seeders:
|
||||
selector: div.up
|
||||
optional: true
|
||||
default: 0
|
||||
leechers:
|
||||
selector: div.down
|
||||
optional: true
|
||||
default: 0
|
||||
downloadvolumefactor:
|
||||
text: 0
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
# engine n/a
|
@@ -1,170 +0,0 @@
|
||||
---
|
||||
id: dariustracker
|
||||
name: Darius Tracker
|
||||
description: "Darius Tracker is a HUNGARIAN Private Tracker for MOVIES / TV / GENERAL"
|
||||
language: hu-HU
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://dariustracker.hu/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 86, cat: Movies/SD, desc: "Film/Cam/XviD/Eng"}
|
||||
- {id: 85, cat: Movies/SD, desc: "Film/Cam/XviD/Hun"}
|
||||
- {id: 19, cat: Movies/DVD, desc: "Film/DVD-R/Eng"}
|
||||
- {id: 17, cat: Movies/DVD, desc: "Film/DVD-R/Hun"}
|
||||
- {id: 88, cat: XXX, desc: "Film/DVD/XXX"}
|
||||
- {id: 62, cat: Movies/DVD, desc: "Film/DVD9/Hun"}
|
||||
- {id: 82, cat: Movies/HD, desc: "Film/HD/Eng"}
|
||||
- {id: 83, cat: Movies/HD, desc: "Film/HD/Hun"}
|
||||
- {id: 89, cat: XXX, desc: "Film/HD/XXX"}
|
||||
- {id: 48, cat: Movies/HD, desc: "Film/x264/Eng"}
|
||||
- {id: 34, cat: Movies/HD, desc: "Film/x264/Hun"}
|
||||
- {id: 16, cat: Movies/SD, desc: "Film/XviD/Eng"}
|
||||
- {id: 15, cat: Movies/SD, desc: "Film/XviD/Hun"}
|
||||
- {id: 64, cat: Movies/SD, desc: "Film/XviD/Pack"}
|
||||
- {id: 70, cat: TV/Sport, desc: "Film/XviD/Sport"}
|
||||
- {id: 33, cat: XXX, desc: "Film/XviD/XXX"}
|
||||
- {id: 90, cat: Audio/Audiobook, desc: "Hangoskönyv"}
|
||||
- {id: 31, cat: PC/Games, desc: "Játék/Pc/Iso"}
|
||||
- {id: 29, cat: PC/Games, desc: "Játék/Pc/Rip"}
|
||||
- {id: 54, cat: Console/PS3, desc: "Játék/PS2/PS3"}
|
||||
- {id: 32, cat: Console/XBox, desc: "Játék/XBOX"}
|
||||
- {id: 50, cat: Books, desc: "Könyv/Eng"}
|
||||
- {id: 27, cat: Books, desc: "Könyv/Hun"}
|
||||
- {id: 65, cat: Other, desc: "Képek"}
|
||||
- {id: 66, cat: XXX, desc: "Képek/XXX"}
|
||||
- {id: 71, cat: Audio/Lossless, desc: "Lossless/Eng"}
|
||||
- {id: 84, cat: Audio/Lossless, desc: "Lossless/Hun"}
|
||||
- {id: 68, cat: Movies/DVD, desc: "Mese/DVD"}
|
||||
- {id: 69, cat: Movies/SD, desc: "Mese/XviD"}
|
||||
- {id: 67, cat: PC/Mobile-Other, desc: "Mobiltelefon"}
|
||||
- {id: 26, cat: Audio/MP3, desc: "Mp3/Eng"}
|
||||
- {id: 25, cat: Audio/MP3, desc: "Mp3/Hun"}
|
||||
- {id: 14, cat: PC, desc: "Program/Egyéb"}
|
||||
- {id: 81, cat: PC/ISO, desc: "Program/Iso"}
|
||||
- {id: 49, cat: PC, desc: "Program/Rip"}
|
||||
- {id: 58, cat: TV, desc: "Sorozat/Eng"}
|
||||
- {id: 22, cat: TV, desc: "Sorozat/Hun"}
|
||||
- {id: 24, cat: Audio/Video, desc: "Videóklipp"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: info_tpp
|
||||
type: info
|
||||
label: Results Per Page
|
||||
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: 4
|
||||
options:
|
||||
1: name
|
||||
5: size
|
||||
4: added
|
||||
7: seeders
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: desc
|
||||
options:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
path: login.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: table[cellpadding="5"]:contains("Hiba")
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href^="logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://dariustracker.hu/browse.php?viewMode=&c68=1&c69=1&search=&incldead=1&sort=4&type=desc
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}c[{{.}}]=1&{{end}}"
|
||||
viewMode: ""
|
||||
search: "{{ .Keywords }}"
|
||||
# 0 active, 1 active and dead, 2 deadonly, 3 my torrents, 4 seedless
|
||||
incldead: 1
|
||||
sort: "{{ .Config.sort }}"
|
||||
type: "{{ .Config.type }}"
|
||||
# does not support imdbid searches
|
||||
|
||||
rows:
|
||||
selector: table[cellpadding="5"] > tbody > tr > td > table[cellpadding="5"] > tbody > tr:has(a[href^="download.php?torrent="])
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="browse.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: title
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?torrent="]
|
||||
attribute: href
|
||||
poster:
|
||||
selector: a.preview
|
||||
attribute: href
|
||||
imdbid:
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
attribute: href
|
||||
files:
|
||||
selector: td:nth-last-child(7)
|
||||
date:
|
||||
selector: td:nth-last-child(5)
|
||||
filters:
|
||||
- name: append
|
||||
args: " +01:00" # CET
|
||||
- name: dateparse
|
||||
args: "yyyy-MM-dd HH:mm:ss zzz"
|
||||
size:
|
||||
selector: td:nth-last-child(4) b
|
||||
grabs:
|
||||
selector: td:nth-last-child(3)
|
||||
seeders:
|
||||
selector: td:nth-last-child(2)
|
||||
leechers:
|
||||
selector: td:nth-last-child(1)
|
||||
downloadvolumefactor:
|
||||
selector: img[src$="/arrowdown.png"] ~ span
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
uploadvolumefactor:
|
||||
selector: img[src$="/arrowup.png"] ~ span
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
minimumseedtime:
|
||||
# 3 days (as seconds = 3 x 24 x 60 x 60)
|
||||
text: 259200
|
||||
# engine n/a
|
@@ -118,7 +118,7 @@ search:
|
||||
- name: dateparse
|
||||
args: "yyyy-MM-ddHH:mm:ss zzz"
|
||||
downloadvolumefactor:
|
||||
text: 1
|
||||
text: 0
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
# engine n/a
|
||||
|
@@ -1,75 +0,0 @@
|
||||
---
|
||||
id: dodder
|
||||
name: Dodder
|
||||
description: "Dodder (菟丝子资源社区) is a CHINESE Public BitTorrent DHT search engine"
|
||||
language: zh-CN
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://dodder.top/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
Other: Other
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
||||
settings: []
|
||||
|
||||
download:
|
||||
infohash:
|
||||
hash:
|
||||
selector: a[href^="magnet:?xt"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([A-F|a-f|0-9]{40})
|
||||
title:
|
||||
selector: b
|
||||
attribute: title
|
||||
filters:
|
||||
- name: validfilename
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: /
|
||||
inputs:
|
||||
fileName: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}"
|
||||
|
||||
rows:
|
||||
selector: table.dodder-torrent-list > tbody > tr
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
category:
|
||||
text: Other
|
||||
title:
|
||||
selector: a[href^="/info/"]
|
||||
attribute: title
|
||||
details:
|
||||
selector: a[href^="/info/"]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="/info/"]
|
||||
attribute: href
|
||||
date:
|
||||
selector: div.layui-hide-xs
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "yyyy-MM-dd HH:mm:ss"
|
||||
size:
|
||||
selector: span.layui-bg-gray
|
||||
seeders:
|
||||
text: 1
|
||||
leechers:
|
||||
text: 1
|
||||
description:
|
||||
selector: span.layui-row
|
||||
remove: span.layui-badge
|
||||
downloadvolumefactor:
|
||||
text: 0
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
# engine n/a
|
@@ -66,6 +66,10 @@ settings:
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: striprussian
|
||||
type: checkbox
|
||||
label: Strip Russian Letters
|
||||
@@ -147,10 +151,9 @@ search:
|
||||
srg: -1
|
||||
# title search
|
||||
nm: "{{ .Keywords }}"
|
||||
# find a username
|
||||
pn: ""
|
||||
# search by partial word
|
||||
allw: 0
|
||||
tor_type: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||||
|
||||
rows:
|
||||
selector: tr[id^="tor_"]:has(a[href^="./dl.php?id="])
|
||||
@@ -206,7 +209,15 @@ search:
|
||||
# unix
|
||||
selector: td:last-child > u
|
||||
downloadvolumefactor:
|
||||
text: 1
|
||||
case:
|
||||
img[src$="/tor_gold.gif"]: 0
|
||||
img[src$="/tor_silver.gif"]: 0.5
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
minimumseedtime:
|
||||
# 100 hours (as seconds = 100 x 60 x 60)
|
||||
text: 360000
|
||||
# TorrentPier
|
||||
|
@@ -44,6 +44,10 @@ settings:
|
||||
- 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
|
||||
@@ -83,6 +87,7 @@ search:
|
||||
order_by: "{{ .Config.sort }}"
|
||||
order_way: "{{ .Config.type }}"
|
||||
action: advanced
|
||||
filter_freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||||
|
||||
rows:
|
||||
# exclude redbar torrents
|
||||
|
@@ -513,6 +513,10 @@ settings:
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Filter freeleech only
|
||||
default: false
|
||||
- name: striprussian
|
||||
type: checkbox
|
||||
label: Strip Russian Letters
|
||||
@@ -598,13 +602,11 @@ search:
|
||||
# seed not seen -1=disregard
|
||||
sns: -1
|
||||
nm: "{{ .Keywords }}"
|
||||
# find a username
|
||||
pn: ""
|
||||
# search all words
|
||||
allw: 1
|
||||
|
||||
rows:
|
||||
selector: tr[id^="tor_"]:has(a[href^="/download.php?id="])
|
||||
selector: "tr[id^=\"tor_\"]:has(a[href^=\"/download.php?id=\"]){{ if .Config.freeleech }}:has(img[src=\"images/tor_gold.gif\"]){{ else }}{{ end }}"
|
||||
|
||||
fields:
|
||||
category:
|
||||
|
@@ -57,6 +57,18 @@ caps:
|
||||
music-search: [q, artist]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
|
||||
login:
|
||||
path: takelogin.php
|
||||
method: post
|
||||
@@ -72,9 +84,14 @@ search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
inputs:
|
||||
# cat search doesn't work if our custom MP3 and Lossless cats are selected
|
||||
# $raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
cat: 0
|
||||
search: "{{ if .Query.Artist }}{{ .Query.Artist }}{{ else }}{{ .Keywords }}{{ end }}"
|
||||
# 0 active, 1 incldead, 2 dead
|
||||
incldead: 1
|
||||
# 0 all, 1 not documented, 2 free
|
||||
free: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
|
||||
|
||||
rows:
|
||||
selector: table.mainouter > tbody > tr > td.outer > table > tbody > tr.mouse_out
|
||||
|
@@ -58,6 +58,10 @@ settings:
|
||||
- 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
|
||||
@@ -97,7 +101,8 @@ search:
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
incldead: 1
|
||||
# 0 active, 1 incldead, 2 onlydead, 5 freeleech, 6 2x upload, 7 highlighted
|
||||
incldead: "{{ if .Config.freeleech }}5{{ else }}1{{ end }}"
|
||||
blah: 0
|
||||
order: "{{ .Config.sort }}"
|
||||
by: "{{ .Config.type }}"
|
||||
|
@@ -10,7 +10,13 @@ links:
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: XXX, desc: "PRON"}
|
||||
- {id: 3, cat: XXX, desc: "Gay"}
|
||||
- {id: 4, cat: XXX, desc: "Interracial"}
|
||||
- {id: 5, cat: XXX, desc: "Lesbian"}
|
||||
- {id: 6, cat: XXX, desc: "Onlyfans"}
|
||||
- {id: 1, cat: XXX, desc: "Pron"}
|
||||
- {id: 8, cat: XXX, desc: "Retro"}
|
||||
- {id: 7, cat: XXX, desc: "VR"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
@@ -66,21 +72,22 @@ search:
|
||||
- path: torrents.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
|
||||
searchtext: ""
|
||||
title: "{{ .Keywords }}"
|
||||
order_by: "{{ .Config.sort }}"
|
||||
order_way: "{{ .Config.type }}"
|
||||
action: advanced
|
||||
filter_freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||||
filelist: ""
|
||||
taglist: ""
|
||||
|
||||
rows:
|
||||
selector: table#torrent_table > tbody > tr[class^="torrent row"]
|
||||
|
||||
fields:
|
||||
category:
|
||||
text: 1
|
||||
selector: a[href^="/torrents.php?filter_cat["]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: \[(\d+)\]
|
||||
title:
|
||||
selector: a[href^="/torrents.php?id="]
|
||||
details:
|
||||
|
@@ -12,34 +12,41 @@ legacylinks:
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
# Film
|
||||
# Filmy
|
||||
- {id: 117, cat: Movies/DVD, desc: "DvD 5"}
|
||||
- {id: 118, cat: Movies/DVD, desc: "DvD 9"}
|
||||
- {id: 119, cat: Movies/BluRay, desc: "Blu-Ray "}
|
||||
- {id: 120, cat: Movies/HD, desc: "H265"}
|
||||
- {id: 121, cat: Movies/HD, desc: "HD 720"}
|
||||
- {id: 122, cat: Movies/HD, desc: "1080 HD"}
|
||||
- {id: 123, cat: Movies/UHD, desc: "4K"}
|
||||
- {id: 124, cat: TV, desc: "Seriály"}
|
||||
- {id: 125, cat: Movies/3D, desc: "3D Filmy"}
|
||||
- {id: 126, cat: TV/Anime, desc: "Animované"}
|
||||
- {id: 127, cat: Movies/SD, desc: "Avi"}
|
||||
- {id: 128, cat: TV/Documentary, desc: "Dokument"}
|
||||
- {id: 129, cat: TV/Sport, desc: "Sportovní Filmy"}
|
||||
# Filmy that are not in category pull down
|
||||
- {id: 37, cat: Movies/DVD, desc: "DVD"}
|
||||
- {id: 92, cat: TV, desc: "TV Serial ENG"}
|
||||
- {id: 39, cat: Audio/Video, desc: "Hudba Video"}
|
||||
- {id: 41, cat: Movies/SD, desc: "DivX / AVI"}
|
||||
- {id: 90, cat: Movies/SD, desc: "DivX / AVI Titulky"}
|
||||
- {id: 43, cat: Movies/Other, desc: "FILM dokument"}
|
||||
- {id: 44, cat: Movies/Other, desc: "FILM sport"}
|
||||
- {id: 45, cat: TV, desc: "SERIALY CZ"}
|
||||
- {id: 47, cat: Movies, desc: "Animované"}
|
||||
- {id: 91, cat: TV, desc: "Serial titulky"}
|
||||
- {id: 50, cat: Movies/BluRay, desc: "FILMY Blu-ray"}
|
||||
- {id: 109, cat: Movies/BluRay, desc: "BLURAY orig JAZYK"}
|
||||
- {id: 52, cat: Movies/HD, desc: "HD 1080 "}
|
||||
- {id: 53, cat: Movies/HD, desc: "HD 720"}
|
||||
- {id: 55, cat: Movies/3D, desc: "3D Filmy"}
|
||||
- {id: 110, cat: Movies/3D, desc: "3D ORIGINÁL"}
|
||||
- {id: 111, cat: Movies, desc: "FILMY CZ TVORBA"}
|
||||
- {id: 98, cat: Movies/UHD, desc: "ORIGINAL JAZYK 4K"}
|
||||
- {id: 77, cat: Movies/UHD, desc: "ULTRA HD 4K"}
|
||||
- {id: 89, cat: Movies/HD, desc: "HD720 titulky "}
|
||||
- {id: 93, cat: Movies/HD, desc: "HD 1080 titulky"}
|
||||
- {id: 107, cat: Movies, desc: "CAMERA RIP "}
|
||||
- {id: 94, cat: Movies, desc: "h 265"}
|
||||
- {id: 81, cat: Movies, desc: "ORIGINAL JAZYK"}
|
||||
- {id: 95, cat: Movies/Other, desc: "FILM RETRO"}
|
||||
#
|
||||
- {id: 115, cat: Movies/Other, desc: "RLS-HD"}
|
||||
- {id: 81, cat: Movies, desc: "ORIGINAL JAZYK"}
|
||||
# HUDBA
|
||||
- {id: 57, cat: Audio/Lossless, desc: "Hudba flac"}
|
||||
- {id: 58, cat: Audio/MP3, desc: "Hudba mp3"}
|
||||
|
@@ -48,6 +48,7 @@ search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
method: post
|
||||
allowEmptyInputs: true
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["[^a-zA-Z0-9]+", "%"]
|
||||
@@ -60,6 +61,7 @@ search:
|
||||
inputs:
|
||||
ajax: false
|
||||
search: "{{ .Keywords }}"
|
||||
# 0 active 1 incldead 2 onlydead 3 gold 4 no seeders
|
||||
incldead: 0
|
||||
|
||||
rows:
|
||||
|
@@ -96,6 +96,10 @@ settings:
|
||||
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: Filter freeleech only
|
||||
default: false
|
||||
|
||||
login:
|
||||
method: cookie
|
||||
@@ -132,7 +136,7 @@ search:
|
||||
# does not return imdb link in results
|
||||
|
||||
rows:
|
||||
selector: table#sortabletable tbody tr:has(div[id^="port-target-"])
|
||||
selector: "table#sortabletable tbody tr:has(div[id^=\"port-target-\"]){{ if .Config.freeleech }}:has(img[src$=\"/freedownload.gif\"]){{ else }}{{ end }}"
|
||||
|
||||
fields:
|
||||
title:
|
||||
|
@@ -1,195 +0,0 @@
|
||||
---
|
||||
id: ihdbits
|
||||
name: iHDBits
|
||||
description: "iHDBits is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
|
||||
language: zh-CN
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://ihdbits.me/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 401, cat: Movies, desc: "Movies/电影"}
|
||||
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
|
||||
- {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
|
||||
- {id: 402, cat: TV, desc: "TV Series/连续剧"}
|
||||
- {id: 403, cat: TV, desc: "TV Shows/综艺"}
|
||||
- {id: 406, cat: Audio/Video, desc: "Music Videos/MV"}
|
||||
- {id: 407, cat: TV/Sport, desc: "Sports/体育"}
|
||||
- {id: 409, cat: Other, desc: "Misc/其他"}
|
||||
- {id: 408, cat: Audio, desc: "Music/音乐"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, imdbid, doubanid]
|
||||
movie-search: [q, imdbid, doubanid]
|
||||
music-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: 2facode
|
||||
type: text
|
||||
label: 2FA code
|
||||
- name: info_2fa
|
||||
type: info
|
||||
label: "About 2FA code"
|
||||
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> on the iHDBits Web Site. Otherwise just leave it empty."
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: 4
|
||||
options:
|
||||
4: created
|
||||
7: seeders
|
||||
5: size
|
||||
1: title
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: desc
|
||||
options:
|
||||
desc: desc
|
||||
asc: asc
|
||||
- name: info_tpp
|
||||
type: info
|
||||
label: Results Per Page
|
||||
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
|
||||
|
||||
login:
|
||||
path: login.php
|
||||
method: form
|
||||
form: form[action="takelogin.php"]
|
||||
captcha:
|
||||
type: image
|
||||
selector: img[alt="CAPTCHA"]
|
||||
input: imagestring
|
||||
inputs:
|
||||
secret: ""
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
two_step_code: "{{ .Config.2facode }}"
|
||||
logout: ""
|
||||
securelogin: ""
|
||||
ssl: yes
|
||||
trackerssl: yes
|
||||
error:
|
||||
- selector: td.embedded:has(h2:contains("失败"))
|
||||
- selector: td.embedded:has(h2:contains("Failed"))
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: torrents.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
|
||||
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}"
|
||||
# 0 incldead, 1 active, 2 dead
|
||||
incldead: 0
|
||||
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
|
||||
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
|
||||
# 0 title, 1 descr, 3 uploader, 4 imdburl (not working)
|
||||
search_area: "{{ if or .Query.IMDBID .Query.DoubanID }}1{{ else }}0{{ end }}"
|
||||
# 0 AND, 1 OR, 2 exact
|
||||
search_mode: 0
|
||||
sort: "{{ .Config.sort }}"
|
||||
type: "{{ .Config.type }}"
|
||||
notnewword: 1
|
||||
|
||||
rows:
|
||||
selector: table.torrents > tbody > tr:has(a[href^="details.php?id="])
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title_default:
|
||||
selector: a[href^="details.php?id="]
|
||||
title:
|
||||
selector: a[title][href^="details.php?id="]
|
||||
attribute: title
|
||||
optional: true
|
||||
default: "{{ .Result.title_default }}"
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
poster:
|
||||
selector: img[data-src]
|
||||
attribute: data-src
|
||||
imdbid:
|
||||
# site currently only has a badge and rating, the id is not present. just in case a future update.
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
attribute: href
|
||||
doubanid:
|
||||
# site currently only has a badge and rating, the id is not present. just in case a future update.
|
||||
selector: a[href*="movie.douban.com/subject/"]
|
||||
attribute: href
|
||||
date_elapsed:
|
||||
# time type: time elapsed (default)
|
||||
selector: td.rowfollow:nth-child(4) > span[title]
|
||||
attribute: title
|
||||
optional: true
|
||||
filters:
|
||||
- name: append
|
||||
args: " +08:00" # CST
|
||||
- name: dateparse
|
||||
args: "yyyy-MM-dd HH:mm:ss zzz"
|
||||
date_added:
|
||||
# time added
|
||||
selector: td.rowfollow:nth-child(4):not(:has(span))
|
||||
optional: true
|
||||
filters:
|
||||
- name: append
|
||||
args: " +08:00" # CST
|
||||
- name: dateparse
|
||||
args: "yyyy-MM-ddHH:mm:ss zzz"
|
||||
date:
|
||||
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
|
||||
size:
|
||||
selector: td.rowfollow:nth-child(5)
|
||||
seeders:
|
||||
selector: td.rowfollow:nth-child(6)
|
||||
leechers:
|
||||
selector: td.rowfollow:nth-child(7)
|
||||
grabs:
|
||||
selector: td.rowfollow:nth-child(8)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img.pro_free: 0
|
||||
img.pro_free2up: 0
|
||||
img.pro_50pctdown: 0.5
|
||||
img.pro_50pctdown2up: 0.5
|
||||
img.pro_30pctdown: 0.3
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img.pro_50pctdown2up: 2
|
||||
img.pro_free2up: 2
|
||||
img.pro_2up: 2
|
||||
"*": 1
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
minimumseedtime:
|
||||
# 5 day (as seconds = 5 x 24 x 60 x 60)
|
||||
text: 432000
|
||||
description:
|
||||
selector: td.rowfollow:nth-child(2)
|
||||
remove: a, img
|
||||
# NexusPHP v1.7.30 2022-11-05
|
@@ -198,8 +198,9 @@ search:
|
||||
i[class*="fa-globe text-green"]: 2 # Global Double Upload
|
||||
i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
|
||||
"*": 1
|
||||
minimumratio:
|
||||
text: 0.4
|
||||
# overall ratio of 0.4 but must seed for 7 days regardless of ratio
|
||||
# minimumratio:
|
||||
# text: 0.4
|
||||
minimumseedtime:
|
||||
# 7 days (as seconds = 7 x 24 x 60 x 60)
|
||||
text: 604800
|
||||
|
@@ -110,8 +110,14 @@ login:
|
||||
path: index.php
|
||||
selector: a[href="account-logout.php"]
|
||||
|
||||
download:
|
||||
selectors:
|
||||
- selector: td a[href^="download.php?id="]
|
||||
attribute: href
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://krazyzone.net/torrents-search.php?incldead=1&freeleech=0&inclrosub=0&sort=id&order=desc
|
||||
- path: torrents-search.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
@@ -125,12 +131,11 @@ search:
|
||||
# 0 both, 1 local, 2 external
|
||||
sort: "{{ .Config.sort }}"
|
||||
order: "{{ .Config.type }}"
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["(\\w+)", "+$1"] # prepend + to each word
|
||||
|
||||
rows:
|
||||
selector: table.ttable_headinner > tbody > tr:has(a[href^="download.php?id="])
|
||||
selector: table.ttable_headinner > tbody > tr
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
category:
|
||||
@@ -149,7 +154,7 @@ search:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: td a[href^="download.php?id="]
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: href
|
||||
poster:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
@@ -178,20 +183,20 @@ search:
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(4)
|
||||
selector: td:nth-child(3)
|
||||
date:
|
||||
# 24.Jul<br>2022<br>07:47
|
||||
selector: td:nth-child(5)
|
||||
selector: td:nth-child(4)
|
||||
# auto adjusted by site account profile
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "d.MMMyyyyHH:mm"
|
||||
seeders:
|
||||
selector: td:nth-child(7)
|
||||
selector: td:nth-child(6)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
selector: td:nth-child(7)
|
||||
grabs:
|
||||
selector: td:nth-child(9)
|
||||
selector: td:nth-child(8)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="images/free.png"]: 0
|
||||
|
@@ -100,6 +100,10 @@ settings:
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Filter freeleech only
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
@@ -151,7 +155,7 @@ search:
|
||||
orderby: "{{ .Config.type }}"
|
||||
|
||||
rows:
|
||||
selector: div#showcontents > table > tbody > tr:has(a[href])
|
||||
selector: "div#showcontents > table > tbody > tr:has(a[href]){{ if .Config.freeleech }}:has(img[src$=\"freedownload.gif\"]){{ else }}{{ end }}"
|
||||
|
||||
fields:
|
||||
category:
|
||||
|
@@ -198,6 +198,10 @@ settings:
|
||||
- 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
|
||||
@@ -259,7 +263,7 @@ search:
|
||||
df: 1
|
||||
da: 1
|
||||
dl: 1
|
||||
pn: ""
|
||||
tor_type: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||||
submit: "%C2%A0%C2%A0Search%C2%A0%C2%A0"
|
||||
|
||||
rows:
|
||||
|
@@ -44,6 +44,10 @@ settings:
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Filter freeleech only
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
@@ -99,7 +103,7 @@ search:
|
||||
args: ["(\\w+)", "+$1"] # prepend + to each word
|
||||
|
||||
rows:
|
||||
selector: table tbody tr:has(a[href*="download.php?id="]:has(img[src="../pic/yes.png"]))
|
||||
selector: "table tbody tr:has(a[href*=\"download.php?id=\"]:has(img[src=\"../pic/yes.png\"])){{ if .Config.freeleech }}:has(img[src$=\"freedownload.gif\"]){{ else }}{{ end }}"
|
||||
|
||||
fields:
|
||||
category:
|
||||
|
@@ -24,6 +24,10 @@ settings:
|
||||
- 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
|
||||
@@ -64,6 +68,7 @@ search:
|
||||
nm: "{{ .Keywords }}"
|
||||
o: "{{ .Config.sort }}"
|
||||
s: "{{ .Config.type }}"
|
||||
tor_type: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||||
|
||||
rows:
|
||||
selector: table.well > tbody > tr:has(a[href^="./viewtopic.php?t="])
|
||||
@@ -152,6 +157,7 @@ search:
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="images/tor_gold.gif"]: 0
|
||||
img[src="images/tor_silver.gif"]: 0.5
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
|
@@ -27,6 +27,10 @@ settings:
|
||||
type: checkbox
|
||||
label: Add RUSSIAN to end of all titles to improve language detection by Sonarr and Radarr. Will cause English-only results to be misidentified.
|
||||
default: false
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
@@ -786,9 +790,8 @@ search:
|
||||
sha: 1
|
||||
ta: -1
|
||||
sns: -1
|
||||
sds: -1
|
||||
sds: "{{ if .Config.freeleech }}1{{ else }}-1{{ end }}"
|
||||
nm: "{{ .Keywords }}"
|
||||
pn: ""
|
||||
submit: "Поиск"
|
||||
keywordsfilters:
|
||||
- name: re_replace # S01 to сезон 1
|
||||
|
@@ -93,11 +93,6 @@ settings:
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
# broken on website
|
||||
# - name: freeleech
|
||||
# type: checkbox
|
||||
# label: Search freeleech only
|
||||
# default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort results
|
||||
|
@@ -605,6 +605,12 @@ caps:
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: striprussian
|
||||
type: checkbox
|
||||
label: Strip Russian Letters
|
||||
@@ -613,12 +619,10 @@ settings:
|
||||
type: checkbox
|
||||
label: Add RUSSIAN to end of all titles to improve language detection by Sonarr and Radarr. Will cause English-only results to be misidentified.
|
||||
default: true
|
||||
- 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
|
||||
@@ -682,7 +686,7 @@ search:
|
||||
df: 1
|
||||
da: 1
|
||||
ss: "{{ .Keywords }}"
|
||||
pn: ""
|
||||
gold: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||||
submit: "Поиск"
|
||||
|
||||
rows:
|
||||
@@ -756,8 +760,8 @@ search:
|
||||
selector: td.leechmed
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
span.isgold: 0
|
||||
span.issilver: 0.5
|
||||
img[src="/images/gold.png"]: 0
|
||||
img[src="/images/silver.png"]: 0.5
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
|
@@ -86,6 +86,10 @@ settings:
|
||||
- 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
|
||||
@@ -104,9 +108,13 @@ settings:
|
||||
1: asc
|
||||
|
||||
login:
|
||||
path: forum/profile.php?mode=register
|
||||
path: forum/login.php
|
||||
method: form
|
||||
form: form[action="./login.php"]
|
||||
form: div.mrg_16 > table > tbody
|
||||
captcha:
|
||||
type: image
|
||||
selector: img[src^="includes/usercp_confirm.php?"]
|
||||
input: login_code
|
||||
inputs:
|
||||
login_username: "{{ .Config.username }}"
|
||||
login_password: "{{ .Config.password }}"
|
||||
@@ -154,10 +162,9 @@ search:
|
||||
sns: -1
|
||||
# title search
|
||||
nm: "{{ .Keywords }}"
|
||||
# find a username
|
||||
pn: ""
|
||||
# search by partial word
|
||||
allw: 1
|
||||
gold: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||||
|
||||
rows:
|
||||
selector: tbody[id^="tor_"]:has(a[href^="./download.php?id="])
|
||||
|
@@ -505,6 +505,10 @@ settings:
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Filter freeleech only
|
||||
default: false
|
||||
- name: ignorevip
|
||||
type: checkbox
|
||||
label: Ignore VIP torrents
|
||||
@@ -575,11 +579,9 @@ search:
|
||||
# -1=all time
|
||||
tm: -1
|
||||
nm: "{{ .Keywords }}"
|
||||
# find a username
|
||||
pn: ""
|
||||
|
||||
rows:
|
||||
selector: "tr[id^=\"tor_\"]:has(a[href^=\"./download.php?id=\"]){{ if .Config.ignorevip }}:not(:has(a.gen:contains(\"VIP\"))){{ else }}{{ end }}"
|
||||
selector: "tr[id^=\"tor_\"]:has(a[href^=\"./download.php?id=\"]){{ if .Config.ignorevip }}:not(:has(a.gen:contains(\"VIP\"))){{ else }}{{ end }}{{ if .Config.freeleech }}:has(img[src=\"images/tor_gold.gif\"]){{ else }}{{ end }}"
|
||||
|
||||
fields:
|
||||
category:
|
||||
|
@@ -6,12 +6,12 @@ language: ru-RU
|
||||
type: semi-private
|
||||
encoding: windows-1251
|
||||
links:
|
||||
- http://rudub.tv/ # https is unsupported ERR_CONNECTION_REFUSED
|
||||
- http://rudub.co/ # https is unsupported ERR_CONNECTION_REFUSED
|
||||
legacylinks:
|
||||
- http://baibako.tv/
|
||||
- https://baibako.tv/
|
||||
- http://bko.baibako.tv/
|
||||
- http://rudub.tv/ # redirects to *.co
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -783,6 +783,10 @@ settings:
|
||||
type: checkbox
|
||||
label: Strip Russian Letters
|
||||
default: false
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
@@ -865,10 +869,9 @@ search:
|
||||
# group releases -1=not selected
|
||||
srg: -1
|
||||
nm: "{{ .Keywords }}"
|
||||
# find a username
|
||||
pn: ""
|
||||
# search by partial word
|
||||
allw: 0
|
||||
gold: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||||
|
||||
rows:
|
||||
selector: tr[id^="tor_"]:has(a[href^="./download.php?id="])
|
||||
|
@@ -103,6 +103,7 @@ caps:
|
||||
- {id: 1085, cat: TV/HD, desc: " |- BDRip 1080p , HDTV 1080 , WEB-DL 1080р"}
|
||||
- {id: 1086, cat: TV/HD, desc: " |- BDRip 720p , WEB-DL 720p , HDTVRip 720p"}
|
||||
- {id: 1087, cat: TV/SD, desc: " |- DVD5 , DVD9"}
|
||||
- {id: 1703, cat: TV/WEB-DL, desc: " |- WEBRip, WEB-DLRip, SATRip"}
|
||||
- {id: 16, cat: TV, desc: "Отечественные сериалы"}
|
||||
- {id: 1082, cat: TV/HD, desc: " |- BDRip 1080p , HDTV 1080 , WEB-DL 1080р"}
|
||||
- {id: 1083, cat: TV/HD, desc: " |- BDRip 720p , WEB-DL 720p , HDTVRip 720p"}
|
||||
|
@@ -16,6 +16,18 @@ caps:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Filter freeleech only
|
||||
default: false
|
||||
|
||||
login:
|
||||
path: login.php
|
||||
method: form
|
||||
@@ -42,7 +54,7 @@ search:
|
||||
search: "{{ .Keywords }}"
|
||||
|
||||
rows:
|
||||
selector: table.torrents > tbody > tr:has(a[href^="/download.php?id="])
|
||||
selector: "table.torrents > tbody > tr:has(a[href^=\"/download.php?id=\"]){{ if .Config.freeleech }}:has(img.sp_4){{ else }}{{ end }}"
|
||||
|
||||
fields:
|
||||
category:
|
||||
|
@@ -5,6 +5,7 @@ description: "Solid Torrents is a Public torrent meta-search engine"
|
||||
language: en-US
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
requestDelay: 2
|
||||
links:
|
||||
- https://solidtorrents.to/
|
||||
legacylinks:
|
||||
@@ -73,6 +74,7 @@ search:
|
||||
q: "{{ .Keywords }}"
|
||||
sort: "{{ .Config.sort }}"
|
||||
order: "{{ .Config.type }}"
|
||||
limit: 100
|
||||
|
||||
rows:
|
||||
selector: li.search-result:has(a[class="dl-torrent"])
|
||||
|
@@ -72,6 +72,10 @@ settings:
|
||||
- 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
|
||||
@@ -92,17 +96,22 @@ settings:
|
||||
type: info
|
||||
label: Results Per Page
|
||||
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
|
||||
- name: flaresolverr
|
||||
type: info
|
||||
label: FlareSolverr
|
||||
default: This site may use Cloudflare DDoS Protection, therefore Jackett requires <a href="https://github.com/Jackett/Jackett#configuring-flaresolverr" target="_blank">FlareSolverr</a> to access it.
|
||||
|
||||
login:
|
||||
path: ?page=login
|
||||
path: index.php?page=login
|
||||
method: form
|
||||
form: form
|
||||
form: "#bodyarea form"
|
||||
inputs:
|
||||
uid: "{{ .Config.username }}"
|
||||
pwd: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: span:contains("Password Incorrect")
|
||||
- selector: span:contains("Username Incorrect")
|
||||
- selector: td.lista span:contains("Username Incorrect")
|
||||
- selector: td.lista span:contains("Password Incorrect")
|
||||
- selector: td.lista span[style="color:#FF0000;"]
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="logout.php"]
|
||||
@@ -112,12 +121,12 @@ search:
|
||||
# https://sportscult.org/index.php?search=&page=torrents&category=0&active=0&order=3&by=2
|
||||
- path: index.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
page: torrents
|
||||
category: 0
|
||||
search: "{{ .Keywords }}"
|
||||
category: "{{ if .Categories }}{{ join .Categories \";\" }}{{ else }}0{{ end }}"
|
||||
# 0 all, 1 active, 2 dead
|
||||
active: 0
|
||||
gold: "{{ if .Config.freeleech }}3{{ else }}0{{ end }}"
|
||||
order: "{{ .Config.sort }}"
|
||||
by: "{{ .Config.type }}"
|
||||
|
||||
|
@@ -103,7 +103,7 @@ search:
|
||||
nosub: false
|
||||
order: "{{ .Config.type }}"
|
||||
page: search
|
||||
searchText: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
|
||||
searchText: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }} {{ else }}{{ end }}{{ .Keywords }}"
|
||||
section: all
|
||||
sort: "{{ .Config.sort }}"
|
||||
stereoscopic: false
|
||||
|
@@ -86,7 +86,7 @@ search:
|
||||
imdbId: "{{ .Query.IMDBIDShort }}"
|
||||
tmdbId: "{{ .Query.TMDBID }}"
|
||||
tvdbId: "{{ .Query.TVDBID }}"
|
||||
free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||||
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
|
||||
sortField: "{{ .Config.sort }}"
|
||||
sortDirection: "{{ .Config.type }}"
|
||||
perPage: 100
|
||||
@@ -111,8 +111,10 @@ search:
|
||||
selector: details_link
|
||||
download:
|
||||
selector: download_link
|
||||
infohash:
|
||||
selector: info_hash
|
||||
poster:
|
||||
selector: poster
|
||||
selector: meta.poster
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/90x135", ""]
|
||||
@@ -122,6 +124,17 @@ search:
|
||||
selector: tmdb_id
|
||||
tvdbid:
|
||||
selector: tvdb_id
|
||||
genre:
|
||||
selector: meta.genres
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(?i)(Science Fiction)", "Science_Fiction"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(TV Movie)", "TV_Movie"]
|
||||
- name: replace
|
||||
args: [" & ", "_&_"]
|
||||
description:
|
||||
text: "{{ .Result.genre }}"
|
||||
files:
|
||||
selector: num_file
|
||||
seeders:
|
||||
@@ -162,4 +175,4 @@ search:
|
||||
minimumseedtime:
|
||||
# 7 day (as seconds = 7 x 24 x 60 x 60)
|
||||
text: 604800
|
||||
# json UNIT3D 6.3.0
|
||||
# json UNIT3D 6.5.0
|
||||
|
@@ -91,6 +91,10 @@ settings:
|
||||
- name: pin
|
||||
type: text
|
||||
label: Pin
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Filter freeleech only
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
@@ -135,7 +139,7 @@ search:
|
||||
sort: "{{ .Config.type }}"
|
||||
|
||||
rows:
|
||||
selector: div.selection_wrap
|
||||
selector: "div.selection_wrap{{ if .Config.freeleech }}:has(div[onmouseover=\"return overlib('OnlyUp: Ja');\"]){{ else }}{{ end }}"
|
||||
|
||||
fields:
|
||||
category_p1:
|
||||
|
309
src/Jackett.Common/Definitions/thorsland.yml
Normal file
309
src/Jackett.Common/Definitions/thorsland.yml
Normal file
@@ -0,0 +1,309 @@
|
||||
---
|
||||
id: thorsland
|
||||
name: Thor's Land
|
||||
description: "Thor's Land is a FRENCH Private site for TV / MOVIES / GENERAL"
|
||||
language: fr-FR
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://ethor.tk/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
# APPLICATIONS
|
||||
- {id: 66, cat: PC/Mobile-Android, desc: "ANDROID"}
|
||||
- {id: 68, cat: PC/Mobile-Other, desc: "HarmonyOS"}
|
||||
- {id: 67, cat: PC/Mac, desc: "iOS"}
|
||||
# AUTRES
|
||||
- {id: 104, cat: Other, desc: "AUTRES"}
|
||||
# DOCUMENTAIRES
|
||||
- {id: 72, cat: TV/Documentary, desc: "4K UHD"}
|
||||
- {id: 70, cat: TV/Documentary, desc: "HD 1080p"}
|
||||
- {id: 71, cat: TV/Documentary, desc: "HD 720p"}
|
||||
- {id: 81, cat: TV/Documentary, desc: "PACK 4K"}
|
||||
- {id: 80, cat: TV/Documentary, desc: "PACK HD"}
|
||||
- {id: 79, cat: TV/Documentary, desc: "PACK SD"}
|
||||
- {id: 69, cat: TV/Documentary, desc: "SD"}
|
||||
- {id: 75, cat: TV/Documentary, desc: "SÉRIES 4K"}
|
||||
- {id: 74, cat: TV/Documentary, desc: "SÉRIES HD"}
|
||||
- {id: 73, cat: TV/Documentary, desc: "SÉRIES SD"}
|
||||
- {id: 78, cat: TV/Documentary, desc: "V.O.S.T. 4K"}
|
||||
- {id: 77, cat: TV/Documentary, desc: "V.O.S.T. HD"}
|
||||
- {id: 76, cat: TV/Documentary, desc: "V.O.S.T. SD"}
|
||||
# FILMS
|
||||
- {id: 11, cat: Movies/3D, desc: "3D"}
|
||||
- {id: 12, cat: Movies/UHD, desc: "4K UHD"}
|
||||
- {id: 2, cat: Movies/BluRay, desc: "BD-Rip"}
|
||||
- {id: 10, cat: Movies/BluRay, desc: "Blu-Ray"}
|
||||
- {id: 16, cat: Movies/DVD, desc: "DVD-R"}
|
||||
- {id: 3, cat: Movies/DVD, desc: "DVD-Rip"}
|
||||
- {id: 5, cat: Movies/HD, desc: "HD 1080p"}
|
||||
- {id: 4, cat: Movies/HD, desc: "HD 720p"}
|
||||
- {id: 7, cat: Movies/HD, desc: "mHD 1080p"}
|
||||
- {id: 6, cat: Movies/HD, desc: "mHD 720p"}
|
||||
- {id: 15, cat: Movies/UHD, desc: "Québec 4K"}
|
||||
- {id: 14, cat: Movies/HD, desc: "Québec HD"}
|
||||
- {id: 13, cat: Movies/SD, desc: "Québec SD"}
|
||||
- {id: 9, cat: Movies, desc: "Remux"}
|
||||
- {id: 22, cat: Movies/UHD, desc: "V.O. 4K"}
|
||||
- {id: 21, cat: Movies/HD, desc: "V.O. HD"}
|
||||
- {id: 20, cat: Movies/SD, desc: "V.O. SD"}
|
||||
- {id: 19, cat: Movies/UHD, desc: "V.O.S.T. 4K"}
|
||||
- {id: 18, cat: Movies/HD, desc: "V.O.S.T. HD"}
|
||||
- {id: 17, cat: Movies/SD, desc: "V.O.S.T. SD"}
|
||||
- {id: 1, cat: Movies/WEB-DL, desc: "WEB-DL"}
|
||||
- {id: 8, cat: Movies/HD, desc: "x265"}
|
||||
# JEUX VIDÉO
|
||||
- {id: 55, cat: PC/Games, desc: "ÉMULATEURS"}
|
||||
- {id: 40, cat: PC/Games, desc: "LINUX"}
|
||||
- {id: 39, cat: PC/Mac, desc: "MAC"}
|
||||
- {id: 45, cat: Console/3DS, desc: "3DS"}
|
||||
- {id: 44, cat: Console/NDS, desc: "NDS"}
|
||||
- {id: 42, cat: Console/Other, desc: "NES"}
|
||||
- {id: 41, cat: Movies/Other, desc: "SWITCH"}
|
||||
- {id: 38, cat: PC/Games, desc: "PC"}
|
||||
- {id: 46, cat: Console/PS3, desc: "PSX"}
|
||||
- {id: 47, cat: Console/PS3, desc: "PS2"}
|
||||
- {id: 48, cat: Console/PS3, desc: "PS3"}
|
||||
- {id: 49, cat: Console/PS4, desc: "PS4"}
|
||||
- {id: 50, cat: Console/PS4, desc: "PS5"}
|
||||
- {id: 56, cat: Console/Other, desc: "ROMS"}
|
||||
- {id: 43, cat: Console/Other, desc: "SNES"}
|
||||
- {id: 51, cat: Console/XBox, desc: "XBOX"}
|
||||
- {id: 52, cat: Console/XBox 360, desc: "XBOX 360"}
|
||||
- {id: 53, cat: Console/XBox One, desc: "XBOX ONE"}
|
||||
- {id: 54, cat: Console/XBox, desc: "XBOX SERIES"}
|
||||
# LIVRES
|
||||
- {id: 96, cat: Audio/Audiobook, desc: "AUDIO"}
|
||||
- {id: 98, cat: Books, desc: "B.D."}
|
||||
- {id: 100, cat: Books/Comics, desc: "COMICS"}
|
||||
- {id: 97, cat: Books/Mags, desc: "MAGAZINES"}
|
||||
- {id: 101, cat: Books, desc: "MANGAS"}
|
||||
- {id: 95, cat: Books, desc: "ROMANS"}
|
||||
- {id: 99, cat: Books, desc: "JEUNESSE"}
|
||||
# LOGICIELS
|
||||
- {id: 65, cat: PC, desc: "LINUX"}
|
||||
- {id: 64, cat: PC/Mac, desc: "MAC"}
|
||||
- {id: 63, cat: PC/0day, desc: "WINDOWS"}
|
||||
# MUSIQUE
|
||||
- {id: 59, cat: Audio, desc: "AAC"}
|
||||
- {id: 61, cat: Audio, desc: "DSD"}
|
||||
- {id: 58, cat: Audio/Lossless, desc: "FLAC"}
|
||||
- {id: 57, cat: Audio/MP3, desc: "MP3"}
|
||||
- {id: 60, cat: Audio, desc: "OGG"}
|
||||
- {id: 62, cat: Audio, desc: "WAV"}
|
||||
# SÉRIES ANIMÉES
|
||||
- {id: 89, cat: TV/Anime, desc: "HD 1080p"}
|
||||
- {id: 90, cat: TV/Anime, desc: "HD 720p"}
|
||||
- {id: 94, cat: TV/Anime, desc: "PACK HD"}
|
||||
- {id: 93, cat: TV/Anime, desc: "PACK SD"}
|
||||
- {id: 88, cat: TV/Anime, desc: "Québec HD"}
|
||||
- {id: 87, cat: TV/Anime, desc: "Québec SD"}
|
||||
- {id: 92, cat: TV/Anime, desc: "V.O.S.T. HD"}
|
||||
- {id: 91, cat: TV/Anime, desc: "V.O.S.T. SD"}
|
||||
# SÉRIES TV
|
||||
- {id: 112, cat: TV/UHD, desc: "4K UHD"}
|
||||
- {id: 32, cat: TV/HD, desc: "Blu-Ray"}
|
||||
- {id: 35, cat: TV, desc: "DVD-R"}
|
||||
- {id: 31, cat: TV/HD, desc: "Émissions HD"}
|
||||
- {id: 30, cat: TV/SD, desc: "Émissions SD"}
|
||||
- {id: 25, cat: TV/HD, desc: "HD 1080p"}
|
||||
- {id: 24, cat: TV/HD, desc: "HD 720p"}
|
||||
- {id: 27, cat: TV/HD, desc: "PACK HD"}
|
||||
- {id: 34, cat: TV/HD, desc: "PACK HD QC"}
|
||||
- {id: 26, cat: TV/SD, desc: "PACK SD"}
|
||||
- {id: 33, cat: TV/SD, desc: "PACK SD QC"}
|
||||
- {id: 29, cat: TV/HD, desc: "Québec HD"}
|
||||
- {id: 28, cat: TV/SD, desc: "Québec SD"}
|
||||
- {id: 23, cat: TV/SD, desc: "SD"}
|
||||
- {id: 37, cat: TV/HD, desc: "V.O.S.T. HD"}
|
||||
- {id: 36, cat: TV/SD, desc: "V.O.S.T. SD"}
|
||||
# SPECTACLES
|
||||
- {id: 85, cat: Audio/Video, desc: "ART/MAGIE"}
|
||||
- {id: 83, cat: Audio/Video, desc: "HUMOUR"}
|
||||
- {id: 86, cat: Audio/Video, desc: "LIVE"}
|
||||
- {id: 82, cat: Audio/Video, desc: "MUSIQUE"}
|
||||
- {id: 84, cat: Audio/Video, desc: "THÉATRE"}
|
||||
# SPORTS
|
||||
- {id: 103, cat: TV/Sport, desc: "ANGLAIS"}
|
||||
- {id: 102, cat: TV/Sport, desc: "FRANÇAIS"}
|
||||
# XXX
|
||||
- {id: 105, cat: XXX, desc: "FILMS"}
|
||||
- {id: 108, cat: XXX, desc: "GAYS"}
|
||||
- {id: 110, cat: XXX, desc: "HENTAI"}
|
||||
- {id: 109, cat: XXX, desc: "LESBIENNES"}
|
||||
- {id: 111, cat: XXX, desc: "MAGAZINES"}
|
||||
- {id: 106, cat: XXX, desc: "SÉRIES"}
|
||||
- {id: 107, cat: XXX, desc: "VR"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: cookie
|
||||
type: text
|
||||
label: Cookie
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser</li><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: multilang
|
||||
type: checkbox
|
||||
label: Replace MULTi by another language in release name
|
||||
default: false
|
||||
- name: multilanguage
|
||||
type: select
|
||||
label: Replace MULTi by this language
|
||||
default: FRENCH
|
||||
options:
|
||||
FRENCH: FRENCH
|
||||
MULTi FRENCH: MULTi FRENCH
|
||||
ENGLISH: ENGLISH
|
||||
MULTi ENGLISH: MULTi ENGLISH
|
||||
VOSTFR: VOSTFR
|
||||
MULTi VOSTFR: MULTi VOSTFR
|
||||
- name: vostfr
|
||||
type: checkbox
|
||||
label: Replace VOSTFR and SUBFRENCH with ENGLISH
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: id
|
||||
options:
|
||||
id: created
|
||||
seeders: seeders
|
||||
size: size
|
||||
name: title
|
||||
- name: order
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: desc
|
||||
options:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
method: cookie
|
||||
inputs:
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
test:
|
||||
path: /
|
||||
selector: a[href="account-logout"]
|
||||
|
||||
download:
|
||||
before:
|
||||
path: thanks
|
||||
inputs:
|
||||
id: "{{ .DownloadUri.Query.id }}"
|
||||
to: give
|
||||
torrent: "{{ .DownloadUri.Query.id }}"
|
||||
selectors:
|
||||
- selector: a[href^="download?id="]
|
||||
attribute: href
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: torrents-search
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
# 0 active, 1 incldead, 2 onlydead
|
||||
incldead: 1
|
||||
# 0 all, 1 notfree, 2 onlyfree
|
||||
freeleech: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
|
||||
# 0 any etc
|
||||
lang: 0
|
||||
sort: "{{ .Config.sort}}"
|
||||
order: "{{ .Config.order}}"
|
||||
|
||||
rows:
|
||||
selector: table.ttable_headinner > tbody > tr[class^="t-row"]
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="/torrents?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title_phase1:
|
||||
selector: a[href^="/download?id="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: name=(.+?)\.torrent
|
||||
- name: urldecode
|
||||
title_vostfr:
|
||||
text: "{{ .Result.title_phase1 }}"
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(?i)\\b(vostfr|subfrench)\\b", "ENGLISH"]
|
||||
title_phase2:
|
||||
text: "{{ if .Config.vostfr }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_phase1 }}{{ end }}"
|
||||
title_multilang:
|
||||
text: "{{ .Result.title_phase2 }}"
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(?i)\\b(MULTI(?!.*(?:FRENCH|ENGLISH|VOSTFR)))\\b", "{{ .Config.multilanguage }}"]
|
||||
title:
|
||||
text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase2 }}{{ end }}"
|
||||
details:
|
||||
selector: a[href^="/torrents-details?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="/torrents-details?id="]
|
||||
attribute: href
|
||||
magnet:
|
||||
selector: a[href^="magnet:?xt="]
|
||||
attribute: href
|
||||
poster:
|
||||
selector: img[src^="uploads/images/"]
|
||||
attribute: src
|
||||
size:
|
||||
selector: td:nth-child(10)
|
||||
remove: div.bottom
|
||||
grabs:
|
||||
selector: td:nth-child(9)
|
||||
remove: div.bottom
|
||||
seeders:
|
||||
selector: td:nth-child(11)
|
||||
remove: div.bottom
|
||||
leechers:
|
||||
selector: td:nth-child(12)
|
||||
remove: div.bottom
|
||||
date:
|
||||
selector: td.tor_name_outline > font
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["il y a ", ""]
|
||||
- name: replace
|
||||
args: ["seconde", "second"]
|
||||
- name: replace
|
||||
args: ["heure", "hour"]
|
||||
- name: replace
|
||||
args: ["jour", "day"]
|
||||
- name: replace
|
||||
args: ["mois", "month"]
|
||||
- name: replace
|
||||
args: ["an", "year"]
|
||||
- name: append
|
||||
args: " ago"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"button:contains(\"FREELEECH\")": 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
minimumseedtime:
|
||||
# 2 days (as seconds = 2 x 24 x 60 x 60)
|
||||
text: 172800
|
||||
# engine n/a
|
@@ -101,6 +101,10 @@ settings:
|
||||
- name: pin
|
||||
type: text
|
||||
label: Pin
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Filter freeleech only
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
@@ -144,7 +148,7 @@ search:
|
||||
sort: "{{ .Config.type }}"
|
||||
|
||||
rows:
|
||||
selector: div.selection_wrap
|
||||
selector: "div.selection_wrap{{ if .Config.freeleech }}:has(:root:has(div.onlyup)){{ else }}{{ end }}"
|
||||
|
||||
fields:
|
||||
download:
|
||||
|
@@ -53,6 +53,10 @@ settings:
|
||||
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: drop_polish_prefix
|
||||
type: checkbox
|
||||
label: Drop the Polish title prefix
|
||||
@@ -74,7 +78,7 @@ search:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
|
||||
# 0 onlyactive, 1 all, 2 onlydead, 3 free
|
||||
incldead: 1
|
||||
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
|
||||
# 0 title, 1 descr, 2 both
|
||||
titlesearch: "{{ if .Query.IMDBID }}1{{ else }}0{{ end }}"
|
||||
# 0 all, 1 polish, 2 not polish
|
||||
|
@@ -7,10 +7,8 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentqq248.com/
|
||||
- https://torrentqq250.com/
|
||||
legacylinks:
|
||||
- https://torrentqq233.com/
|
||||
- https://torrentqq234.com/
|
||||
- https://torrentqq235.com/
|
||||
- https://torrentqq236.com/
|
||||
- https://torrentqq237.com/
|
||||
@@ -25,6 +23,8 @@ legacylinks:
|
||||
- https://torrentqq245.com/
|
||||
- https://torrentqq246.com/
|
||||
- https://torrentqq247.com/
|
||||
- https://torrentqq248.com/
|
||||
- https://torrentqq249.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -7,7 +7,7 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentsir95.com/
|
||||
- https://torrentsir96.com/
|
||||
legacylinks:
|
||||
- http://torrentsir80.com/
|
||||
- https://torrentsir80.com/
|
||||
@@ -38,6 +38,8 @@ legacylinks:
|
||||
- http://torrentsir94.com/
|
||||
- https://torrentsir94.com/
|
||||
- http://torrentsir95.com/
|
||||
- https://torrentsir95.com/
|
||||
- http://torrentsir96.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -308,6 +308,10 @@ settings:
|
||||
type: info
|
||||
label: Layout
|
||||
default: "<b>Only the Classic forum style is supported.</b><br/><li>On the TorrentsLocal web site navigate to the <b>Личные настройки (Preferences)</b> section and set the <b>Стиль форума (Forum Style)</b> option to <b>Классическая тема (Classic Theme)</b></li>"
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
@@ -376,10 +380,9 @@ search:
|
||||
# group releases -1=not selected
|
||||
srg: -1
|
||||
nm: "{{ .Keywords }}"
|
||||
# find a username
|
||||
pn: ""
|
||||
# all words
|
||||
allw: 1
|
||||
tor_type: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["(\\w+)", "+$1"] # prepend + to each word
|
||||
|
@@ -7,11 +7,10 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://viewtorrent6.com/
|
||||
- https://viewtorrent7.com/
|
||||
legacylinks:
|
||||
- https://torrentview.net/
|
||||
- https://torrentview.co/
|
||||
- https://torrentview52.com/
|
||||
- https://torrentview53.com/
|
||||
- https://torrentview57.com/
|
||||
- https://torrentview60.com/
|
||||
@@ -25,6 +24,7 @@ legacylinks:
|
||||
- https://viewtorrent2.com/
|
||||
- https://viewtorrent4.com/
|
||||
- https://viewtorrent5.com/
|
||||
- https://viewtorrent6.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -7,9 +7,8 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentwiz55.com/
|
||||
- https://torrentwiz56.com/
|
||||
legacylinks:
|
||||
- https://torrentwiz37.com/
|
||||
- https://torrentwiz38.com/
|
||||
- https://torrentwiz39.com/
|
||||
- https://torrentwiz40.com/
|
||||
@@ -25,6 +24,7 @@ legacylinks:
|
||||
- https://torrentwiz51.com/
|
||||
- https://torrentwiz52.com/
|
||||
- https://torrentwiz54.com/
|
||||
- https://torrentwiz55.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -49,6 +49,10 @@ settings:
|
||||
type: checkbox
|
||||
label: Strip Russian Letters
|
||||
default: false
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
|
||||
login:
|
||||
path: takelogin.php
|
||||
@@ -68,8 +72,8 @@ search:
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
incldead: 1
|
||||
dsearch: ""
|
||||
# 0 active, 1 incldead, 2 onlydead, 3 goldtorrents, 5 silvertorrents, 4 noseeds
|
||||
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
|
||||
|
||||
rows:
|
||||
selector: table.embedded > tbody > tr:has(a[href^="download.php?id="])
|
||||
|
@@ -8,14 +8,6 @@ encoding: UTF-8
|
||||
links:
|
||||
- https://x-ite.me/
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 6700, cat: TV/Anime, desc: "Animations - Adult"}
|
||||
@@ -88,6 +80,18 @@ caps:
|
||||
movie-search: [q]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Filter freeleech only
|
||||
default: false
|
||||
|
||||
login:
|
||||
method: post
|
||||
path: account-login.php
|
||||
@@ -112,7 +116,7 @@ search:
|
||||
incldead: 1
|
||||
|
||||
rows:
|
||||
selector: tr.t-row
|
||||
selector: "tr.t-row{{ if .Config.freeleech }}:has(td:nth-child(2) > a:nth-child(1) > span:nth-child(2)){{ else }}{{ end }}"
|
||||
|
||||
fields:
|
||||
title:
|
||||
|
74
src/Jackett.Common/Definitions/xxxclub.yml
Normal file
74
src/Jackett.Common/Definitions/xxxclub.yml
Normal file
@@ -0,0 +1,74 @@
|
||||
---
|
||||
id: xxxclub
|
||||
name: XXXClub
|
||||
description: "XXXClub is a Public torrent site for 3X"
|
||||
language: en-US
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://xxxclub.to/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: XXX, cat: XXX, desc: XXX}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
||||
settings:
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: uploaded
|
||||
options:
|
||||
uploaded: created
|
||||
size: size
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: desc
|
||||
options:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://xxxclub.to/torrents/browse/all/tushyraw%20grays?sort=size&order=asc
|
||||
- path: "torrents/browse/all/{{ .Keywords }}?sort={{ .Config.sort }}&order={{ .Config.type }}"
|
||||
|
||||
rows:
|
||||
selector: table.table-striped > tbody > tr
|
||||
|
||||
fields:
|
||||
category:
|
||||
text: XXX
|
||||
title:
|
||||
selector: td:nth-child(2)
|
||||
details:
|
||||
selector: td:nth-child(2) a
|
||||
attribute: href
|
||||
download:
|
||||
selector: td:nth-child(3) a
|
||||
attribute: href
|
||||
poster:
|
||||
selector: td:nth-child(2) a
|
||||
attribute: title
|
||||
filters:
|
||||
- name: regexp
|
||||
args: src='(.+?)'
|
||||
date:
|
||||
selector: td:nth-child(4)
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "dd MMM yyyy HH:mm:ss"
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
seeders:
|
||||
selector: td:nth-child(6)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
||||
downloadvolumefactor:
|
||||
text: 0
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
# engine n/a
|
@@ -214,19 +214,9 @@ search:
|
||||
- name: re_replace # episode number at the end "123" to "E123"
|
||||
args: ["(.*)(\\.|\\s|\\-)(\\d{2,3})(\\.|\\s|\\-*)(.*)", "{{ if .Config.enhancedAnime }}$1 E$3 $5{{ else }}$1$2$3$4$5{{ end }}"]
|
||||
# END ANIME HACK
|
||||
- name: replace
|
||||
args: ["\"", ""]
|
||||
# Replace - with space due to internal YGG Issues
|
||||
- name: replace
|
||||
args: ["-", " "]
|
||||
# Replace / with space due to internal YGG Issues
|
||||
- name: replace
|
||||
args: ["/", " "]
|
||||
# Replace ! with nothing for searches due to internal YGG issues reported on Radarr Discord
|
||||
- name: replace
|
||||
args: ["!", ""]
|
||||
- name: replace
|
||||
args: [" ", " "]
|
||||
# fix date search and workaround for internal YGG Issues
|
||||
- name: re_replace
|
||||
args: ["[\\\\\\-\\.\\/!\\s]+", " "]
|
||||
- name: trim
|
||||
# put each word in quotations to prevent exact phrase search
|
||||
- name: re_replace
|
||||
@@ -271,6 +261,9 @@ search:
|
||||
args: ["(?i)\\b(saison\\s*)\\b([1-9])", "S0$2"]
|
||||
- name: re_replace
|
||||
args: ["(?i)\\b(saison\\s*)\\b(\\d{1,4})", "S$2"]
|
||||
# Replace French date dd-mm-yyyy to yyyy.mm.dd
|
||||
- name: re_replace
|
||||
args: ["(\\d{2})[\\-_\\.](\\d{2})[\\-_\\.](\\d{4})", "$3.$2.$1"]
|
||||
title_filtered:
|
||||
text: "{{ .Result.title_normal }}"
|
||||
filters:
|
||||
|
@@ -224,19 +224,9 @@ search:
|
||||
- name: re_replace # episode number at the end "123" to "E123"
|
||||
args: ["(.*)(\\.|\\s|\\-)(\\d{2,3})(\\.|\\s|\\-*)(.*)", "{{ if .Config.enhancedAnime }}$1 E$3 $5{{ else }}$1$2$3$4$5{{ end }}"]
|
||||
# END ANIME HACK
|
||||
- name: replace
|
||||
args: ["\"", ""]
|
||||
# Replace - with space due to internal YGG Issues
|
||||
- name: replace
|
||||
args: ["-", " "]
|
||||
# Replace / with space due to internal YGG Issues
|
||||
- name: replace
|
||||
args: ["/", " "]
|
||||
# Replace ! with nothing for searches due to internal YGG issues reported on Radarr Discord
|
||||
- name: replace
|
||||
args: ["!", ""]
|
||||
- name: replace
|
||||
args: [" ", " "]
|
||||
# fix date search and workaround for internal YGG Issues
|
||||
- name: re_replace
|
||||
args: ["[\\\\\\-\\.\\/!\\s]+", " "]
|
||||
- name: trim
|
||||
# put each word in quotations to prevent exact phrase search
|
||||
- name: re_replace
|
||||
@@ -278,6 +268,9 @@ search:
|
||||
args: ["(?i)\\b(saison\\s*)\\b([1-9])", "S0$2"]
|
||||
- name: re_replace
|
||||
args: ["(?i)\\b(saison\\s*)\\b(\\d{1,4})", "S$2"]
|
||||
# Replace French date dd-mm-yyyy to yyyy.mm.dd
|
||||
- name: re_replace
|
||||
args: ["(\\d{2})[\\-_\\.](\\d{2})[\\-_\\.](\\d{4})", "$3.$2.$1"]
|
||||
title_filtered:
|
||||
text: "{{ .Result.title_normal }}"
|
||||
filters:
|
||||
|
@@ -67,10 +67,30 @@ settings:
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Filter freeleech only
|
||||
default: false
|
||||
- name: ip_filtering
|
||||
type: info
|
||||
label: "IP Filtering"
|
||||
default: "Zelka (Zamunda) allows only Bulgarian IP addressess. The <b>connection attempt failed</b> error means your IP was not accepted."
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: 6
|
||||
options:
|
||||
6: created
|
||||
9: seeders
|
||||
7: size
|
||||
2: title
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: desc
|
||||
options:
|
||||
desc: desc
|
||||
asc: asc
|
||||
|
||||
login:
|
||||
path: takelogin.php
|
||||
@@ -89,10 +109,13 @@ search:
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
# 0 active, 1 all, 2 dead
|
||||
incldead: 1
|
||||
sort: "{{ .Config.sort }}"
|
||||
type: "{{ .Config.type }}"
|
||||
|
||||
rows:
|
||||
selector: .test > tbody > tr:has(a[href^="browse.php"])
|
||||
selector: ".test > tbody > tr:has(a[href^=\"browse.php\"]){{ if .Config.freeleech }}:has(a[style=\"color: #b9a100;\"]){{ else }}{{ end }}"
|
||||
|
||||
fields:
|
||||
title:
|
||||
|
@@ -63,12 +63,18 @@ settings:
|
||||
default: false
|
||||
|
||||
download:
|
||||
selectors:
|
||||
- selector: script:contains("magnet:?")
|
||||
infohash:
|
||||
hash:
|
||||
selector: a[href^="/get_torrent/"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "\\s'(magnet:\\?.+?)';"
|
||||
|
||||
args: ([A-F|a-f|0-9]{40})
|
||||
title:
|
||||
selector: ul#breadcrumbs > li:nth-child(3) > h2
|
||||
filters:
|
||||
- name: trim
|
||||
- name: validfilename
|
||||
search:
|
||||
paths:
|
||||
- path: "{{ if .Keywords }}recherche/{{ .Keywords }}{{ else }}{{ end }}"
|
||||
|
@@ -1,7 +1,7 @@
|
||||
---
|
||||
id: ztracker
|
||||
name: Ztracker
|
||||
description: "Ztracker is a HUNGARIAN Private Torrent Tracker for 0DAY / GENERAL"
|
||||
description: "Ztracker is a HUNGARIAN Semi-Private Torrent Tracker for 0DAY / GENERAL"
|
||||
language: hu-HU
|
||||
type: semi-private
|
||||
encoding: ISO-8859-2
|
||||
@@ -61,6 +61,10 @@ settings:
|
||||
- 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
|
||||
@@ -108,7 +112,7 @@ search:
|
||||
# t_name, t_description, t_both, t_uploader
|
||||
search_type: "{{ if .Query.IMDBID }}t_description{{ else }}t_name{{ end }}"
|
||||
# 0 active, 1 both, 2 inactive, 3 free, 19 bluray, 4 silver, 10 doubleup, 5 today, 6 yesterday, 7 week, 8 month, 9 last ten, external
|
||||
ts_type: 1
|
||||
ts_type: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
|
||||
sort: "{{ .Config.sort }}"
|
||||
type: "{{ .Config.type }}"
|
||||
# does not return imdb link in results
|
||||
|
@@ -145,6 +145,7 @@ namespace Jackett.Common.Indexers
|
||||
caps.Categories.AddCategoryMapping("novel", TorznabCatType.AudioAudiobook, "Novel");
|
||||
caps.Categories.AddCategoryMapping("short-story", TorznabCatType.AudioAudiobook, "Short Story");
|
||||
|
||||
caps.Categories.AddCategoryMapping("other", TorznabCatType.AudioAudiobook, "Other");
|
||||
return caps;
|
||||
}
|
||||
|
||||
|
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Jackett.Common.Extensions;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Models.IndexerConfig.Bespoke;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
@@ -71,12 +72,21 @@ namespace Jackett.Common.Indexers
|
||||
{
|
||||
LoadValuesFromJson(configJson);
|
||||
|
||||
if (configData.ApiKey.Value.IsNullOrWhiteSpace())
|
||||
{
|
||||
throw new Exception("Missing API Key.");
|
||||
}
|
||||
|
||||
IsConfigured = false;
|
||||
try
|
||||
{
|
||||
var results = await PerformQuery(new TorznabQuery());
|
||||
if (results.Count() == 0)
|
||||
|
||||
if (!results.Any())
|
||||
{
|
||||
throw new Exception("Testing returned no results!");
|
||||
}
|
||||
|
||||
IsConfigured = true;
|
||||
SaveConfig();
|
||||
}
|
||||
@@ -93,7 +103,7 @@ namespace Jackett.Common.Indexers
|
||||
var apiKey = configData.ApiKey.Value;
|
||||
var apiUrl = $"{APIBASE}{apiKey}";
|
||||
|
||||
Dictionary<string, string> postData = new Dictionary<string, string>
|
||||
var postData = new Dictionary<string, string>
|
||||
{
|
||||
{ BHDParams.action, "search" },
|
||||
{ BHDParams.rsskey, configData.RSSKey.Value },
|
||||
@@ -167,24 +177,37 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
private string getTitle(BHDResult bhdResult)
|
||||
{
|
||||
var title = bhdResult.name;
|
||||
var title = bhdResult.name.Trim();
|
||||
|
||||
if (!configData.AddHybridFeaturesToTitle.Value)
|
||||
return title;
|
||||
|
||||
var featureCount = bhdResult.dv + bhdResult.hdr10 + bhdResult.hdr10plus + bhdResult.hlg;
|
||||
if (featureCount > 1)
|
||||
{
|
||||
var features = new List<string>();
|
||||
return title;
|
||||
}
|
||||
|
||||
if (bhdResult.dv == 1)
|
||||
features.Add("Dolby Vision");
|
||||
if (bhdResult.hdr10 == 1)
|
||||
features.Add("HDR10");
|
||||
if (bhdResult.hdr10plus == 1)
|
||||
features.Add("HDR10+");
|
||||
if (bhdResult.hlg == 1)
|
||||
features.Add("HLG");
|
||||
var features = new List<string>();
|
||||
|
||||
if (bhdResult.dv == 1)
|
||||
{
|
||||
features.Add("Dolby Vision");
|
||||
}
|
||||
|
||||
if (bhdResult.hdr10 == 1)
|
||||
{
|
||||
features.Add("HDR10");
|
||||
}
|
||||
|
||||
if (bhdResult.hdr10plus == 1)
|
||||
{
|
||||
features.Add("HDR10+");
|
||||
}
|
||||
|
||||
if (bhdResult.hlg == 1)
|
||||
{
|
||||
features.Add("HLG");
|
||||
}
|
||||
|
||||
if (features.Count > 1)
|
||||
{
|
||||
title += $" ({string.Join(" / ", features)})";
|
||||
}
|
||||
|
||||
|
@@ -15,6 +15,7 @@ using Jackett.Common.Utils;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
@@ -44,6 +45,7 @@ namespace Jackett.Common.Indexers
|
||||
cacheService: cs,
|
||||
configData: new ConfigurationDataCookie("For best results, change the 'Torrents per page' setting to 100 in your profile."))
|
||||
{
|
||||
configData.AddDynamic("freeleech", new BoolConfigurationItem("Search freeleech only") { Value = false });
|
||||
}
|
||||
|
||||
private TorznabCapabilities SetCapabilities()
|
||||
@@ -100,6 +102,15 @@ namespace Jackett.Common.Indexers
|
||||
{
|
||||
{"cat", MapTorznabCapsToTrackers(query, true).FirstIfSingleOrDefault("0")}
|
||||
};
|
||||
|
||||
// free=4 green: (DL won't be counted, and UL will be counted double.)
|
||||
// free=3 grey: (DL will be counted as normal, and UL will be counted double.)
|
||||
// free=2 yellow: (DL won't be counted, and UL will be counted as normal.)
|
||||
// free=1 normal: (DL and UL counted as normal.)
|
||||
// free=0 (any)
|
||||
if (((BoolConfigurationItem)configData.GetDynamic("freeleech")).Value)
|
||||
qc.Add("free", "2");
|
||||
|
||||
var results = new List<WebResult>();
|
||||
var search = new UriBuilder(SearchUrl);
|
||||
if (query.IsGenreQuery)
|
||||
@@ -177,19 +188,19 @@ namespace Jackett.Common.Indexers
|
||||
release.Peers = ParseUtil.CoerceInt(row.Children[9].TextContent.Trim()) + release.Seeders;
|
||||
switch (row.GetAttribute("bgcolor"))
|
||||
{
|
||||
case "#DDDDDD":
|
||||
case "#DDDDDD": // grey
|
||||
release.DownloadVolumeFactor = 1;
|
||||
release.UploadVolumeFactor = 2;
|
||||
break;
|
||||
case "#FFFF99":
|
||||
case "#FFFF99": // yellow
|
||||
release.DownloadVolumeFactor = 0;
|
||||
release.UploadVolumeFactor = 1;
|
||||
break;
|
||||
case "#CCFF99":
|
||||
case "#CCFF99": // green
|
||||
release.DownloadVolumeFactor = 0;
|
||||
release.UploadVolumeFactor = 2;
|
||||
break;
|
||||
default:
|
||||
default: // normal
|
||||
release.DownloadVolumeFactor = 1;
|
||||
release.UploadVolumeFactor = 1;
|
||||
break;
|
||||
|
@@ -13,6 +13,7 @@ using Jackett.Common.Utils;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
@@ -43,6 +44,7 @@ namespace Jackett.Common.Indexers
|
||||
cacheService: cs,
|
||||
configData: new ConfigurationDataBasicLogin("BrasilTracker does not return categories in its search results.</br>To add to your Apps' Torznab indexer, replace all categories with 8000(Other).</br>For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile."))
|
||||
{
|
||||
configData.AddDynamic("freeleech", new BoolConfigurationItem("Search freeleech only") { Value = false });
|
||||
}
|
||||
|
||||
private TorznabCapabilities SetCapabilities()
|
||||
@@ -148,6 +150,9 @@ namespace Jackett.Common.Indexers
|
||||
if (query.IsGenreQuery)
|
||||
queryCollection.Add("taglist", query.Genre);
|
||||
|
||||
if (((BoolConfigurationItem)configData.GetDynamic("freeleech")).Value)
|
||||
queryCollection.Add("freetorrent", "1");
|
||||
|
||||
searchUrl += "?" + queryCollection.GetQueryString();
|
||||
var results = await RequestWithCookiesAsync(searchUrl);
|
||||
try
|
||||
|
@@ -2023,7 +2023,7 @@ namespace Jackett.Common.Indexers
|
||||
else
|
||||
release.Category = release.Category.Union(cats).ToList();
|
||||
}
|
||||
value = release.Category.ToString();
|
||||
value = release.Category.ToString() ?? string.Empty;
|
||||
break;
|
||||
case "categorydesc":
|
||||
var catsDesc = MapTrackerCatDescToNewznab(value);
|
||||
@@ -2034,7 +2034,7 @@ namespace Jackett.Common.Indexers
|
||||
else
|
||||
release.Category = release.Category.Union(catsDesc).ToList();
|
||||
}
|
||||
value = release.Category.ToString();
|
||||
value = release.Category.ToString() ?? string.Empty;
|
||||
break;
|
||||
case "size":
|
||||
release.Size = ParseUtil.GetBytes(value);
|
||||
|
@@ -23,7 +23,7 @@ namespace Jackett.Common.Indexers
|
||||
public override string Id => "cinecalidad";
|
||||
public override string Name => "Cinecalidad";
|
||||
public override string Description => "Películas Full HD en Latino Dual.";
|
||||
public override string SiteLink { get; protected set; } = "https://cinecalidad.ms/";
|
||||
public override string SiteLink { get; protected set; } = "https://www3.cinecalidad.ms/";
|
||||
public override string[] LegacySiteLinks => new[]
|
||||
{
|
||||
"https://cinecalidad.website/",
|
||||
@@ -40,7 +40,8 @@ namespace Jackett.Common.Indexers
|
||||
"https://v3.cine-calidad.com/",
|
||||
"https://www.cine-calidad.com/",
|
||||
"https://www.cinecalidad.lat/",
|
||||
"https://cinecalidad.dev/"
|
||||
"https://cinecalidad.dev/",
|
||||
"https://cinecalidad.ms/"
|
||||
};
|
||||
public override string Language => "es-419";
|
||||
public override string Type => "public";
|
||||
|
@@ -25,10 +25,10 @@ namespace Jackett.Common.Indexers
|
||||
public override string Id => "dontorrent";
|
||||
public override string Name => "DonTorrent";
|
||||
public override string Description => "DonTorrent is a SPANISH public tracker for MOVIES / TV / GENERAL";
|
||||
public override string SiteLink { get; protected set; } = "https://dontorrent.pictures/";
|
||||
public override string SiteLink { get; protected set; } = "https://dontorrent.ms/";
|
||||
public override string[] AlternativeSiteLinks => new[]
|
||||
{
|
||||
"https://dontorrent.pictures/",
|
||||
"https://dontorrent.ms/",
|
||||
"https://todotorrents.net/",
|
||||
"https://tomadivx.net/",
|
||||
"https://seriesblanco.one/",
|
||||
@@ -55,7 +55,8 @@ namespace Jackett.Common.Indexers
|
||||
"https://dontorrent.ninja/",
|
||||
"https://dontorrent.love/",
|
||||
"https://dontorrent.cloud/",
|
||||
"https://dontorrent.africa/"
|
||||
"https://dontorrent.africa/",
|
||||
"https://dontorrent.pictures/"
|
||||
};
|
||||
public override string Language => "es-ES";
|
||||
public override string Type => "public";
|
||||
|
@@ -60,11 +60,11 @@ namespace Jackett.Common.Indexers.Feeds
|
||||
protected override ReleaseInfo ResultFromFeedItem(XElement item)
|
||||
{
|
||||
var release = base.ResultFromFeedItem(item);
|
||||
var enclosures = item.Descendants("enclosure").Where(e => e.Attribute("type").Value == "application/x-bittorrent");
|
||||
if (enclosures.Any())
|
||||
var enclosure = item.Descendants("enclosure").FirstOrDefault(e => e.Attribute("type").Value == "application/x-bittorrent");
|
||||
if (enclosure != null)
|
||||
{
|
||||
var enclosure = enclosures.First().Attribute("url").Value;
|
||||
release.Link = new Uri(enclosure);
|
||||
var enclosureUrl = enclosure.Attribute("url").Value;
|
||||
release.Link = new Uri(enclosureUrl);
|
||||
}
|
||||
// add some default values if none returned by feed
|
||||
release.Seeders = release.Seeders > 0 ? release.Seeders : 0;
|
||||
|
@@ -132,11 +132,11 @@ namespace Jackett.Common.Indexers.Feeds
|
||||
protected override ReleaseInfo ResultFromFeedItem(XElement item)
|
||||
{
|
||||
var release = base.ResultFromFeedItem(item);
|
||||
var enclosures = item.Descendants("enclosure").Where(e => e.Attribute("type").Value == "application/x-bittorrent");
|
||||
if (enclosures.Any())
|
||||
var enclosure = item.Descendants("enclosure").FirstOrDefault(e => e.Attribute("type").Value == "application/x-bittorrent");
|
||||
if (enclosure != null)
|
||||
{
|
||||
var enclosure = enclosures.First().Attribute("url").Value;
|
||||
release.Link = new Uri(enclosure);
|
||||
var enclosureUrl = enclosure.Attribute("url").Value;
|
||||
release.Link = new Uri(enclosureUrl);
|
||||
}
|
||||
// add some default values if none returned by feed
|
||||
release.Seeders = release.Seeders > 0 ? release.Seeders : 0;
|
||||
|
@@ -13,6 +13,7 @@ using Jackett.Common.Utils;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
@@ -43,6 +44,7 @@ namespace Jackett.Common.Indexers
|
||||
cacheService: cs,
|
||||
configData: new ConfigurationDataBasicLogin("For best results, change the 'Torrents per page' setting to 100 in your profile."))
|
||||
{
|
||||
configData.AddDynamic("freeleech", new BoolConfigurationItem("Search freeleech only") { Value = false });
|
||||
}
|
||||
|
||||
private TorznabCapabilities SetCapabilities()
|
||||
@@ -159,7 +161,8 @@ namespace Jackett.Common.Indexers
|
||||
var qc = new NameValueCollection
|
||||
{
|
||||
{ "cat", "0" },
|
||||
{ "incldead", "1" },
|
||||
// incldead= 0 active, 1 incldead, 2 deadonly, 3 freeleech, 4 sceneonly, 5 requestsonly, 8 packsonly
|
||||
{ "incldead", ((BoolConfigurationItem)configData.GetDynamic("freeleech")).Value ? "3" : "1" },
|
||||
{ "showspam", "1" },
|
||||
{ "s_title", "1" }
|
||||
};
|
||||
|
@@ -44,6 +44,7 @@ namespace Jackett.Common.Indexers
|
||||
cacheService: cs,
|
||||
configData: new ConfigurationDataBasicLogin())
|
||||
{
|
||||
configData.AddDynamic("freeleech", new BoolConfigurationItem("Filter freeleech only") { Value = false });
|
||||
configData.AddDynamic("flaresolverr", new DisplayInfoConfigurationItem("FlareSolverr", "This site may use Cloudflare DDoS Protection, therefore Jackett requires <a href=\"https://github.com/Jackett/Jackett#configuring-flaresolverr\" target=\"_blank\">FlareSolverr</a> to access it."));
|
||||
}
|
||||
|
||||
@@ -164,6 +165,19 @@ namespace Jackett.Common.Indexers
|
||||
MinimumSeedTime = 86400 // 24 hours
|
||||
};
|
||||
|
||||
if (row.QuerySelector("img[title=\"FreeLeech\"]") != null)
|
||||
release.DownloadVolumeFactor = 0;
|
||||
else if (row.QuerySelector("img[src=\"images/sf.png\"]") != null) // side freeleech
|
||||
release.DownloadVolumeFactor = 0;
|
||||
else if (row.QuerySelector("img[title=\"Half FreeLeech\"]") != null)
|
||||
release.DownloadVolumeFactor = 0.5;
|
||||
else
|
||||
release.DownloadVolumeFactor = 1;
|
||||
if (((BoolConfigurationItem)configData.GetDynamic("freeleech")).Value &&
|
||||
release.DownloadVolumeFactor != 0)
|
||||
continue;
|
||||
release.UploadVolumeFactor = 1;
|
||||
|
||||
var qLink = row.Children[1].FirstElementChild;
|
||||
release.Title = qLink.TextContent.Trim();
|
||||
release.Details = new Uri(SiteLink + qLink.GetAttribute("href"));
|
||||
@@ -193,15 +207,6 @@ namespace Jackett.Common.Indexers
|
||||
var grabs = row.QuerySelector("td:nth-child(10)").TextContent;
|
||||
grabs = grabs.Replace("---", "0");
|
||||
release.Grabs = ParseUtil.CoerceInt(grabs);
|
||||
if (row.QuerySelector("img[title=\"FreeLeech\"]") != null)
|
||||
release.DownloadVolumeFactor = 0;
|
||||
else if (row.QuerySelector("img[src=\"images/sf.png\"]") != null) // side freeleech
|
||||
release.DownloadVolumeFactor = 0;
|
||||
else if (row.QuerySelector("img[title=\"Half FreeLeech\"]") != null)
|
||||
release.DownloadVolumeFactor = 0.5;
|
||||
else
|
||||
release.DownloadVolumeFactor = 1;
|
||||
release.UploadVolumeFactor = 1;
|
||||
|
||||
var categoryLink = row.QuerySelector("a[href^=\"index.php?page=torrents&category=\"]").GetAttribute("href");
|
||||
var cat = ParseUtil.GetArgumentFromQueryString(categoryLink, "category");
|
||||
|
@@ -14,6 +14,7 @@ using Jackett.Common.Utils;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
@@ -60,6 +61,7 @@ namespace Jackett.Common.Indexers
|
||||
cacheService: cs,
|
||||
configData: new ConfigurationDataBasicLogin("For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile."))
|
||||
{
|
||||
configData.AddDynamic("freeleech", new BoolConfigurationItem("Search freeleech only") { Value = false });
|
||||
}
|
||||
|
||||
private TorznabCapabilities SetCapabilities()
|
||||
@@ -144,7 +146,7 @@ namespace Jackett.Common.Indexers
|
||||
var queryCollection = new NameValueCollection
|
||||
{
|
||||
{"search", query.ImdbID ?? query.GetQueryString()},
|
||||
{"active", "0"},
|
||||
{"active", ((BoolConfigurationItem)configData.GetDynamic("freeleech")).Value ? "5" : "0"},
|
||||
{"options", "0"}
|
||||
};
|
||||
|
||||
|
@@ -51,6 +51,7 @@ namespace Jackett.Common.Indexers
|
||||
cacheService: cs,
|
||||
configData: new ConfigurationDataBasicLogin())
|
||||
{
|
||||
configData.AddDynamic("freeleech", new BoolConfigurationItem("Filter freeleech only") { Value = false });
|
||||
// Configure the sort selects
|
||||
var sortBySelect = new SingleSelectConfigurationItem(
|
||||
"Sort by",
|
||||
@@ -218,6 +219,16 @@ namespace Jackett.Common.Indexers
|
||||
foreach (var row in rows)
|
||||
{
|
||||
var release = new ReleaseInfo();
|
||||
if (row.QuerySelector("img[title^=\"Free Torrent\"], img[title^=\"Sitewide Free Torrent\"]") != null)
|
||||
release.DownloadVolumeFactor = 0;
|
||||
else if (row.QuerySelector("img[title^=\"Silver Torrent\"]") != null)
|
||||
release.DownloadVolumeFactor = 0.5;
|
||||
else
|
||||
release.DownloadVolumeFactor = 1;
|
||||
if (((BoolConfigurationItem)configData.GetDynamic("freeleech")).Value &&
|
||||
release.DownloadVolumeFactor != 0)
|
||||
continue;
|
||||
release.UploadVolumeFactor = row.QuerySelector("img[title^=\"x2 Torrent\"]") != null ? 2 : 1;
|
||||
|
||||
var qDetails = row.QuerySelector("div > a[href*=\"details.php?id=\"]"); // details link, release name get's shortened if it's to long
|
||||
// use Title from tooltip or fallback to Details link if there's no tooltip
|
||||
@@ -258,15 +269,6 @@ namespace Jackett.Common.Indexers
|
||||
var cover = row.QuerySelector("td:nth-of-type(2) > div > img[src]")?.GetAttribute("src")?.Trim();
|
||||
release.Poster = !string.IsNullOrEmpty(cover) && cover.StartsWith("/") ? new Uri(SiteLink + cover.TrimStart('/')) : null;
|
||||
|
||||
if (row.QuerySelector("img[title^=\"Free Torrent\"], img[title^=\"Sitewide Free Torrent\"]") != null)
|
||||
release.DownloadVolumeFactor = 0;
|
||||
else if (row.QuerySelector("img[title^=\"Silver Torrent\"]") != null)
|
||||
release.DownloadVolumeFactor = 0.5;
|
||||
else
|
||||
release.DownloadVolumeFactor = 1;
|
||||
|
||||
release.UploadVolumeFactor = row.QuerySelector("img[title^=\"x2 Torrent\"]") != null ? 2 : 1;
|
||||
|
||||
releases.Add(release);
|
||||
}
|
||||
}
|
||||
|
@@ -4,7 +4,6 @@ using System.Collections.Specialized;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using AngleSharp.Html.Parser;
|
||||
@@ -16,6 +15,7 @@ using Jackett.Common.Utils;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
@@ -76,6 +76,7 @@ namespace Jackett.Common.Indexers
|
||||
cacheService: cs,
|
||||
configData: new ConfigurationDataBasicLoginWith2FA())
|
||||
{
|
||||
configData.AddDynamic("freeleech", new BoolConfigurationItem("Search freeleech only") { Value = false });
|
||||
}
|
||||
|
||||
private TorznabCapabilities SetCapabilities()
|
||||
@@ -141,6 +142,9 @@ namespace Jackett.Common.Indexers
|
||||
{ "order_way", "desc" }
|
||||
};
|
||||
|
||||
if (((BoolConfigurationItem)configData.GetDynamic("freeleech")).Value)
|
||||
queryCollection.Set("freetorrent", "1");
|
||||
|
||||
// Search String
|
||||
if (!string.IsNullOrWhiteSpace(query.ImdbID))
|
||||
queryCollection.Set("cataloguenumber", query.ImdbID);
|
||||
|
@@ -4,7 +4,6 @@ using System.Collections.Specialized;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using AngleSharp.Dom;
|
||||
@@ -162,7 +161,7 @@ namespace Jackett.Common.Indexers
|
||||
}
|
||||
else
|
||||
{
|
||||
configData.CaptchaImage.Value = new byte[0];
|
||||
configData.CaptchaImage.Value = Array.Empty<byte>();
|
||||
}
|
||||
configData.CaptchaCookie.Value = loginPage.Cookies;
|
||||
UpdateCookieHeader(loginPage.Cookies);
|
||||
@@ -657,7 +656,7 @@ namespace Jackett.Common.Indexers
|
||||
#endregion
|
||||
#region Tracker parsing
|
||||
|
||||
private async Task<List<ReleaseInfo>> FetchTrackerReleases(TrackerUrlDetails details)
|
||||
private async Task<IReadOnlyList<ReleaseInfo>> FetchTrackerReleases(TrackerUrlDetails details)
|
||||
{
|
||||
var queryCollection = new NameValueCollection
|
||||
{
|
||||
@@ -697,7 +696,7 @@ namespace Jackett.Common.Indexers
|
||||
}
|
||||
|
||||
// Failure path
|
||||
return new List<ReleaseInfo>();
|
||||
return Array.Empty<ReleaseInfo>();
|
||||
}
|
||||
|
||||
private async Task<List<ReleaseInfo>> FollowTrackerRedirection(string url, TrackerUrlDetails details)
|
||||
|
@@ -71,7 +71,7 @@ namespace Jackett.Common.Indexers.Meta
|
||||
var fallbackStrategies = fallbackStrategyProvider.FallbackStrategiesForQuery(query);
|
||||
var fallbackQueries = fallbackStrategies.Select(async f => await f.FallbackQueries()).SelectMany(t => t.Result);
|
||||
var fallbackTasks = fallbackQueries.SelectMany(q => indexers.Where(i => !i.CanHandleQuery(query) && i.CanHandleQuery(q)).Select(i => i.ResultsForQuery(q, true)));
|
||||
var tasks = supportedTasks.Concat(fallbackTasks.ToList()); // explicit conversion to List to execute LINQ query
|
||||
var tasks = supportedTasks.Concat(fallbackTasks).ToList(); // explicit conversion to List to execute LINQ query
|
||||
|
||||
// When there are many indexers used by a metaindexer querying each and every one of them can take very very
|
||||
// long. This may result in a problem especially with Sonarr, which does consecutive searches when searching
|
||||
|
@@ -49,8 +49,8 @@ namespace Jackett.Common.Indexers.Meta
|
||||
}
|
||||
else
|
||||
{
|
||||
wrongResults = new ReleaseInfo[] { };
|
||||
perfectResults = new ReleaseInfo[] { };
|
||||
wrongResults = Array.Empty<ReleaseInfo>();
|
||||
perfectResults = Array.Empty<ReleaseInfo>();
|
||||
}
|
||||
|
||||
var remainingResults = results.Except(wrongResults).Except(perfectResults);
|
||||
|
@@ -4,7 +4,6 @@ using System.Collections.Specialized;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using AngleSharp.Html.Parser;
|
||||
|
@@ -3,7 +3,6 @@ using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using Jackett.Common.Models;
|
||||
|
@@ -18,6 +18,7 @@ using Jackett.Common.Utils;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
@@ -49,6 +50,7 @@ namespace Jackett.Common.Indexers
|
||||
cacheService: cs,
|
||||
configData: new ConfigurationDataNorbits())
|
||||
{
|
||||
configData.AddDynamic("freeleech", new BoolConfigurationItem("Search freeleech only") { Value = false });
|
||||
}
|
||||
|
||||
private TorznabCapabilities SetCapabilities()
|
||||
@@ -366,6 +368,9 @@ namespace Jackett.Common.Indexers
|
||||
term = "all";
|
||||
}
|
||||
|
||||
if (((BoolConfigurationItem)configData.GetDynamic("freeleech")).Value)
|
||||
parameters.Add("FL", "1");
|
||||
|
||||
// Building our query
|
||||
searchUrl += "?" + searchterm + "&" + parameters.GetQueryString();
|
||||
|
||||
|
@@ -4,7 +4,6 @@ using System.Collections.Specialized;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Models.IndexerConfig;
|
||||
|
@@ -4,10 +4,8 @@ using System.Collections.Specialized;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using AngleSharp.Text;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Models.IndexerConfig;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
|
@@ -219,7 +219,7 @@ namespace Jackett.Common.Indexers
|
||||
Description = description,
|
||||
MinimumRatio = 1,
|
||||
MinimumSeedTime = 172800, // 48 hours
|
||||
DownloadVolumeFactor = 1,
|
||||
DownloadVolumeFactor = 0,
|
||||
UploadVolumeFactor = UploadFactorCalculator(publishDate, isSeasonPack),
|
||||
Imdb = imdbId
|
||||
};
|
||||
|
@@ -2,7 +2,6 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using AngleSharp.Html.Parser;
|
||||
@@ -12,6 +11,7 @@ using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
|
||||
using WebClient = Jackett.Common.Utils.Clients.WebClient;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
@@ -46,6 +46,7 @@ namespace Jackett.Common.Indexers
|
||||
cacheService: cs,
|
||||
configData: new ConfigurationDataToloka())
|
||||
{
|
||||
configData.AddDynamic("freeleech", new BoolConfigurationItem("Search freeleech only") { Value = false });
|
||||
}
|
||||
|
||||
private TorznabCapabilities SetCapabilities()
|
||||
@@ -245,6 +246,9 @@ namespace Jackett.Common.Indexers
|
||||
{"s", "2"}
|
||||
};
|
||||
|
||||
if (((BoolConfigurationItem)configData.GetDynamic("freeleech")).Value)
|
||||
qc.Add("sds", "1");
|
||||
|
||||
// if the search string is empty use the getnew view
|
||||
if (string.IsNullOrWhiteSpace(searchString))
|
||||
qc.Add("nm", searchString);
|
||||
@@ -312,6 +316,14 @@ namespace Jackett.Common.Indexers
|
||||
MinimumRatio = 1,
|
||||
MinimumSeedTime = 0
|
||||
};
|
||||
if (row.QuerySelector("img[src=\"images/gold.gif\"]") != null)
|
||||
release.DownloadVolumeFactor = 0;
|
||||
else if (row.QuerySelector("img[src=\"images/silver.gif\"]") != null)
|
||||
release.DownloadVolumeFactor = 0.5;
|
||||
else if (row.QuerySelector("img[src=\"images/bronze.gif\"]") != null)
|
||||
release.DownloadVolumeFactor = 0.75;
|
||||
else
|
||||
release.DownloadVolumeFactor = 1;
|
||||
|
||||
releases.Add(release);
|
||||
}
|
||||
|
@@ -3,7 +3,6 @@ using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Models.IndexerConfig;
|
||||
@@ -53,6 +52,7 @@ namespace Jackett.Common.Indexers
|
||||
{
|
||||
configData.AddDynamic("token", new HiddenStringConfigurationItem("token"));
|
||||
configData.AddDynamic("passkey", new HiddenStringConfigurationItem("passkey"));
|
||||
configData.AddDynamic("freeleech", new BoolConfigurationItem("Filter freeleech only") { Value = false });
|
||||
}
|
||||
|
||||
private TorznabCapabilities SetCapabilities()
|
||||
@@ -236,6 +236,18 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
foreach (JArray torrent in data)
|
||||
{
|
||||
var downloadVolumeFactor = (long)torrent[10] switch
|
||||
{
|
||||
// Only Up
|
||||
2 => 0,
|
||||
// 50 % Down
|
||||
1 => 0.5,
|
||||
// All others 100% down
|
||||
_ => 1
|
||||
};
|
||||
if (((BoolConfigurationItem)configData.GetDynamic("freeleech")).Value &&
|
||||
downloadVolumeFactor != 0)
|
||||
continue;
|
||||
var torrentID = (long)torrent[2];
|
||||
var details = new Uri(SiteLink + "torrent/" + torrentID);
|
||||
//var preDelaySeconds = (long)torrent[4];
|
||||
@@ -251,15 +263,6 @@ namespace Jackett.Common.Indexers
|
||||
//var row14 = (long)torrent[14];
|
||||
var link = new Uri(SiteLink + "sdownload/" + torrentID + "/" + passkey);
|
||||
var publishDate = DateTimeUtil.UnixTimestampToDateTime((double)torrent[3]);
|
||||
var downloadVolumeFactor = (long)torrent[10] switch
|
||||
{
|
||||
// Only Up
|
||||
2 => 0,
|
||||
// 50 % Down
|
||||
1 => 0.5,
|
||||
// All others 100% down
|
||||
_ => 1
|
||||
};
|
||||
var release = new ReleaseInfo
|
||||
{
|
||||
MinimumRatio = 0.8,
|
||||
|
@@ -4,7 +4,6 @@ using System.Collections.Specialized;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using Jackett.Common.Models;
|
||||
|
@@ -3,7 +3,6 @@ using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Models.IndexerConfig;
|
||||
|
@@ -2,7 +2,6 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using AngleSharp.Html.Parser;
|
||||
|
@@ -67,6 +67,8 @@ namespace Jackett.Common.Indexers
|
||||
})
|
||||
{ Value = "desc" };
|
||||
configData.AddDynamic("orderrequestedfromsite", orderSelect);
|
||||
|
||||
configData.AddDynamic("freeleech", new BoolConfigurationItem("Filter freeleech only") { Value = false });
|
||||
}
|
||||
|
||||
private TorznabCapabilities SetCapabilities()
|
||||
@@ -260,11 +262,20 @@ namespace Jackett.Common.Indexers
|
||||
{
|
||||
{ "do", "search" },
|
||||
{ "category", categoryMapping.FirstIfSingleOrDefault("0") }, // multi category search not supported
|
||||
{ "include_dead_torrents", "yes" },
|
||||
{ "sort", GetSortBy },
|
||||
{ "order", GetOrder }
|
||||
{ "include_dead_torrents", "yes" }
|
||||
};
|
||||
|
||||
if (((BoolConfigurationItem)configData.GetDynamic("freeleech")).Value)
|
||||
{
|
||||
searchParams.Add("sort", "free");
|
||||
searchParams.Add("order", "desc");
|
||||
}
|
||||
else
|
||||
{
|
||||
searchParams.Add("sort", GetSortBy);
|
||||
searchParams.Add("order", GetOrder);
|
||||
}
|
||||
|
||||
var searchString = Regex.Replace(query.GetQueryString(), @"[ -._]+", " ").Trim();
|
||||
|
||||
if (query.IsImdbQuery)
|
||||
@@ -297,6 +308,17 @@ namespace Jackett.Common.Indexers
|
||||
{
|
||||
var release = new ReleaseInfo();
|
||||
|
||||
if (row.QuerySelector("img[alt^=\"Free Torrent\"], img[alt^=\"Sitewide Free Torrent\"]") != null)
|
||||
release.DownloadVolumeFactor = 0;
|
||||
else if (row.QuerySelector("img[alt^=\"Silver Torrent\"]") != null)
|
||||
release.DownloadVolumeFactor = 0.5;
|
||||
else
|
||||
release.DownloadVolumeFactor = 1;
|
||||
if (((BoolConfigurationItem)configData.GetDynamic("freeleech")).Value &&
|
||||
release.DownloadVolumeFactor != 0)
|
||||
continue;
|
||||
release.UploadVolumeFactor = row.QuerySelector("img[alt^=\"x2 Torrent\"]") != null ? 2 : 1;
|
||||
|
||||
var qDetails = row.QuerySelector("div > a[href*=\"details.php?id=\"]");
|
||||
var qTitle = qDetails; // #7975
|
||||
|
||||
@@ -330,15 +352,6 @@ namespace Jackett.Common.Indexers
|
||||
var cover = row.QuerySelector("td:nth-of-type(2) > div > img[src]")?.GetAttribute("src")?.Trim();
|
||||
release.Poster = !string.IsNullOrEmpty(cover) && cover.StartsWith("http") ? new Uri(cover) : null;
|
||||
|
||||
if (row.QuerySelector("img[alt^=\"Free Torrent\"], img[alt^=\"Sitewide Free Torrent\"]") != null)
|
||||
release.DownloadVolumeFactor = 0;
|
||||
else if (row.QuerySelector("img[alt^=\"Silver Torrent\"]") != null)
|
||||
release.DownloadVolumeFactor = 0.5;
|
||||
else
|
||||
release.DownloadVolumeFactor = 1;
|
||||
|
||||
release.UploadVolumeFactor = row.QuerySelector("img[alt^=\"x2 Torrent\"]") != null ? 2 : 1;
|
||||
|
||||
release.MinimumRatio = 0.8;
|
||||
|
||||
releases.Add(release);
|
||||
|
@@ -1,6 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Jackett.Common.Models.IndexerConfig.Bespoke
|
||||
{
|
||||
|
@@ -1,8 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Jackett.Common.Indexers;
|
||||
using Jackett.Common.Utils;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Jackett.Common.Models
|
||||
|
@@ -85,7 +85,7 @@ namespace Jackett.Common.Models
|
||||
public ICollection<int> MapTrackerCatToNewznab(string trackerCategory)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(trackerCategory))
|
||||
return new List<int>();
|
||||
return Array.Empty<int>();
|
||||
var cats = _categoryMapping
|
||||
.Where(m =>
|
||||
!string.IsNullOrWhiteSpace(m.TrackerCategory) &&
|
||||
@@ -97,7 +97,7 @@ namespace Jackett.Common.Models
|
||||
public ICollection<int> MapTrackerCatDescToNewznab(string trackerCategoryDesc)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(trackerCategoryDesc))
|
||||
return new List<int>();
|
||||
return Array.Empty<int>();
|
||||
var cats = _categoryMapping
|
||||
.Where(m =>
|
||||
!string.IsNullOrWhiteSpace(m.TrackerCategoryDesc) &&
|
||||
@@ -109,7 +109,7 @@ namespace Jackett.Common.Models
|
||||
public int[] SupportedCategories(int[] categories)
|
||||
{
|
||||
if (categories == null || categories.Length == 0)
|
||||
return new int[0];
|
||||
return Array.Empty<int>();
|
||||
var subCategories = _torznabCategoryTree.SelectMany(c => c.SubCategories);
|
||||
var allCategories = _torznabCategoryTree.Concat(subCategories);
|
||||
return allCategories.Where(c => categories.Contains(c.ID)).Select(c => c.ID).ToArray();
|
||||
|
@@ -114,12 +114,12 @@ namespace Jackett.Common.Services
|
||||
}
|
||||
}
|
||||
|
||||
public List<TrackerCacheResult> GetCachedResults()
|
||||
public IReadOnlyList<TrackerCacheResult> GetCachedResults()
|
||||
{
|
||||
lock (_cache)
|
||||
{
|
||||
if (!IsCacheEnabled())
|
||||
return new List<TrackerCacheResult>();
|
||||
return Array.Empty<TrackerCacheResult>();
|
||||
|
||||
PruneCacheByTtl(); // remove expired results
|
||||
|
||||
|
@@ -9,7 +9,7 @@ namespace Jackett.Common.Services.Interfaces
|
||||
{
|
||||
List<ReleaseInfo> Search(IIndexer indexer, TorznabQuery query);
|
||||
void CacheResults(IIndexer indexer, TorznabQuery query, List<ReleaseInfo> releases);
|
||||
List<TrackerCacheResult> GetCachedResults();
|
||||
IReadOnlyList<TrackerCacheResult> GetCachedResults();
|
||||
void CleanIndexerCache(IIndexer indexer);
|
||||
void CleanCache();
|
||||
TimeSpan CacheTTL { get; }
|
||||
|
@@ -50,7 +50,7 @@ namespace Jackett.Common.Utils
|
||||
var table = (Hashtable)cookieJar
|
||||
.GetType()
|
||||
.InvokeMember("m_domainTable", BindingFlags.NonPublic | BindingFlags.GetField |
|
||||
BindingFlags.Instance, null, cookieJar, new object[] { });
|
||||
BindingFlags.Instance, null, cookieJar, Array.Empty<object>());
|
||||
foreach (var key in table.Keys)
|
||||
{
|
||||
var domain = (string)key;
|
||||
|
@@ -26,7 +26,7 @@ namespace Jackett.Common.Utils
|
||||
|
||||
public static class TaskExtensions
|
||||
{
|
||||
public static Task<IEnumerable<TResult>> Until<TResult>(this IEnumerable<Task<TResult>> tasks, TimeSpan timeout)
|
||||
public static Task<IEnumerable<TResult>> Until<TResult>(this IReadOnlyCollection<Task<TResult>> tasks, TimeSpan timeout)
|
||||
{
|
||||
var timeoutTask = Task.Delay(timeout);
|
||||
var aggregateTask = Task.WhenAll(tasks);
|
||||
|
@@ -100,7 +100,7 @@ namespace Jackett.Common.Utils
|
||||
|
||||
private static char[] MakeValidFileName_invalids;
|
||||
|
||||
/// <summary>Replaces characters in <c>text</c> that are not allowed in
|
||||
/// <summary>Replaces characters in <c>text</c> that are not allowed in
|
||||
/// file names with the specified replacement character.</summary>
|
||||
/// <param name="text">Text to make into a valid filename. The same string is returned if it is valid already.</param>
|
||||
/// <param name="replacement">Replacement character, or null to simply remove bad characters.</param>
|
||||
@@ -226,16 +226,16 @@ namespace Jackett.Common.Utils
|
||||
/// </summary>
|
||||
public static IEnumerable<string> FindSubstringsBetween(this string source, char opening, char closing, bool includeOpeningAndClosing)
|
||||
{
|
||||
var openingIndexes = source.AllIndexesOf(opening).ToList();
|
||||
var openingIndexes = source.AllIndexesOf(opening).OrderByDescending(_ => _).ToList();
|
||||
var closingIndexes = source.AllIndexesOf(closing);
|
||||
|
||||
foreach (var closingIndex in closingIndexes.OrderBy(_ => _))
|
||||
{
|
||||
var potentialOpeningIndexes = openingIndexes.Where(x => x < closingIndex);
|
||||
if (!potentialOpeningIndexes.Any())
|
||||
var potentialOpeningIndex = openingIndexes.Where(x => x < closingIndex).Cast<int?>().FirstOrDefault();
|
||||
if (!potentialOpeningIndex.HasValue)
|
||||
continue;
|
||||
var openingIndex = potentialOpeningIndexes.OrderByDescending(_ => _).First();
|
||||
|
||||
var openingIndex = potentialOpeningIndex.Value;
|
||||
var substringIndex = openingIndex + 1;
|
||||
var substringLength = closingIndex - substringIndex;
|
||||
if (includeOpeningAndClosing)
|
||||
|
@@ -155,7 +155,7 @@ namespace Jackett.Server.Controllers
|
||||
// This should go to ServerConfigurationController
|
||||
[Route("Cache")]
|
||||
[HttpGet]
|
||||
public List<TrackerCacheResult> Cache()
|
||||
public IReadOnlyList<TrackerCacheResult> Cache()
|
||||
{
|
||||
var results = cacheService.GetCachedResults();
|
||||
ConfigureCacheResults(results);
|
||||
|
@@ -1,3 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Jackett.Common.Models;
|
||||
@@ -340,15 +341,15 @@ namespace Jackett.Test.Common.Models
|
||||
tcc.SupportedCategories(new[] { 100040 }));
|
||||
Assert.AreEqual(new[] { TorznabCatType.Movies.ID }, // mixed good and bad
|
||||
tcc.SupportedCategories(new[] { TorznabCatType.Movies.ID, 9999 }));
|
||||
Assert.AreEqual(new int[] { }, // not supported child cat
|
||||
Assert.AreEqual(Array.Empty<int>(), // not supported child cat
|
||||
tcc.SupportedCategories(new[] { TorznabCatType.Movies3D.ID }));
|
||||
Assert.AreEqual(new int[] { }, // unknown cat
|
||||
Assert.AreEqual(Array.Empty<int>(), // unknown cat
|
||||
tcc.SupportedCategories(new[] { 9999 }));
|
||||
Assert.AreEqual(new int[] { }, // unknown custom cat
|
||||
Assert.AreEqual(Array.Empty<int>(), // unknown custom cat
|
||||
tcc.SupportedCategories(new[] { 100001 }));
|
||||
Assert.AreEqual(new int[] { }, // empty list
|
||||
tcc.SupportedCategories(new int[] { }));
|
||||
Assert.AreEqual(new int[] { }, // null
|
||||
Assert.AreEqual(Array.Empty<int>(), // empty list
|
||||
tcc.SupportedCategories(Array.Empty<int>()));
|
||||
Assert.AreEqual(Array.Empty<int>(), // null
|
||||
tcc.SupportedCategories(null));
|
||||
}
|
||||
|
||||
|
@@ -14,7 +14,7 @@ namespace Jackett.Test.TestHelpers
|
||||
|
||||
public List<ReleaseInfo> Search(IIndexer indexer, TorznabQuery query) => null;
|
||||
|
||||
public List<TrackerCacheResult> GetCachedResults() => new List<TrackerCacheResult>();
|
||||
public IReadOnlyList<TrackerCacheResult> GetCachedResults() => Array.Empty<TrackerCacheResult>();
|
||||
|
||||
public void CleanIndexerCache(IIndexer indexer)
|
||||
{
|
||||
|
@@ -131,7 +131,7 @@ namespace Jackett.Updater
|
||||
if (!(updateLocation.EndsWith("\\") || updateLocation.EndsWith("/")))
|
||||
updateLocation += Path.DirectorySeparatorChar;
|
||||
|
||||
var pids = new int[] { };
|
||||
var pids = Array.Empty<int>();
|
||||
if (options.KillPids != null)
|
||||
{
|
||||
var pidsStr = options.KillPids.Split(',').Where(pid => !string.IsNullOrWhiteSpace(pid)).ToArray();
|
||||
@@ -318,11 +318,13 @@ namespace Jackett.Updater
|
||||
"Definitions/cinefilhd.yml",
|
||||
"Definitions/cloudtorrents.yml",
|
||||
"Definitions/cooltorrent.yml",
|
||||
"Definitions/cpasbiensi.yml",
|
||||
"Definitions/crazyscorner.yml",
|
||||
"Definitions/cryptichaven.yml",
|
||||
"Definitions/czteam.yml",
|
||||
"Definitions/cztorrent.yml",
|
||||
"Definitions/danishbytes.yml", // migrated to C#
|
||||
"Definitions/dariustracker.yml",
|
||||
"Definitions/dark-shadow.yml",
|
||||
"Definitions/darktracker.yml",
|
||||
"Definitions/darmowetorenty.yml", // migrated to C#
|
||||
@@ -334,6 +336,7 @@ namespace Jackett.Updater
|
||||
"Definitions/devilsplayground.yml",
|
||||
"Definitions/digbt.yml",
|
||||
"Definitions/documentarytorrents.yml",
|
||||
"Definitions/dodder.yml",
|
||||
"Definitions/downloadville.yml",
|
||||
"Definitions/dragonworld.yml",
|
||||
"Definitions/dragonworldreloaded.yml",
|
||||
@@ -409,6 +412,7 @@ namespace Jackett.Updater
|
||||
"Definitions/ibit.yml",
|
||||
"Definitions/icetorrent.yml", // migrated to C# XtremeZone base tracker
|
||||
"Definitions/idopeclone.yml",
|
||||
"Definitions/ihdbits.yml",
|
||||
"Definitions/ilcorsaroverde.yml",
|
||||
"Definitions/iloveclassics.yml",
|
||||
"Definitions/infinityt.yml",
|
||||
|
Reference in New Issue
Block a user