mirror of
https://github.com/Jackett/Jackett.git
synced 2025-12-30 09:39:41 +01:00
Compare commits
67 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f218144b5f | ||
|
|
2da2923356 | ||
|
|
5ae6f96f7e | ||
|
|
b4ab5172bb | ||
|
|
ac27e1d7aa | ||
|
|
51b310b16f | ||
|
|
d63b02eb87 | ||
|
|
b42d73a48f | ||
|
|
07dc412bbe | ||
|
|
b6ceab2c86 | ||
|
|
8716293647 | ||
|
|
bc3c088235 | ||
|
|
da4749874f | ||
|
|
2387f4824f | ||
|
|
a8c1cc6bd0 | ||
|
|
1f2dfa6946 | ||
|
|
cc17f2a1c8 | ||
|
|
d3a929ed6f | ||
|
|
09cd60c6f4 | ||
|
|
37ae398120 | ||
|
|
5e515bfd12 | ||
|
|
d0d84794f4 | ||
|
|
b56db6cad3 | ||
|
|
8310bdf050 | ||
|
|
0b4f8e5c0e | ||
|
|
3f50a89ef9 | ||
|
|
1ec83cd58a | ||
|
|
79271d2954 | ||
|
|
10d7e7a7d8 | ||
|
|
4da1aa9915 | ||
|
|
8119b31655 | ||
|
|
8a59aaebd6 | ||
|
|
7b11313e51 | ||
|
|
51ad79f099 | ||
|
|
58558dc8d4 | ||
|
|
f139c47a36 | ||
|
|
96f76dc8c4 | ||
|
|
de5089b148 | ||
|
|
b9e2e64194 | ||
|
|
aa5826a34a | ||
|
|
331aaa7df0 | ||
|
|
3c3ce1d06f | ||
|
|
d201b762b7 | ||
|
|
601400970d | ||
|
|
18774c7452 | ||
|
|
34c7b27743 | ||
|
|
fc87f88397 | ||
|
|
9af424a5e8 | ||
|
|
5b5c032024 | ||
|
|
83e3ed3d40 | ||
|
|
65d8e81bd6 | ||
|
|
de9415e1a0 | ||
|
|
e537f18f50 | ||
|
|
efa332ab30 | ||
|
|
72eb28d5b3 | ||
|
|
b2b2d36a08 | ||
|
|
5045b3f07d | ||
|
|
39539efa51 | ||
|
|
adaa5b7cb6 | ||
|
|
3ead938788 | ||
|
|
f9781dcee5 | ||
|
|
8fed3a0ee4 | ||
|
|
a815ad1361 | ||
|
|
68f06565b6 | ||
|
|
d6ca844550 | ||
|
|
5c8047659a | ||
|
|
f4981623f6 |
4
.github/workflows/definitions-update.yml
vendored
4
.github/workflows/definitions-update.yml
vendored
@@ -40,8 +40,8 @@ jobs:
|
||||
|
||||
- name: Setup Environment Variables
|
||||
run: |
|
||||
echo "CURRENT_RUDUB_DOMAIN=$(date +'%b%d' | tr '[:upper:]' '[:lower:]').rudub.world" >> $GITHUB_ENV
|
||||
echo "PREVIOUS_RUDUB_DOMAIN=$(date --date='yesterday' +'%b%d' | tr '[:upper:]' '[:lower:]').rudub.world" >> $GITHUB_ENV
|
||||
echo "CURRENT_RUDUB_DOMAIN=$(date +'%b%d' | tr '[:upper:]' '[:lower:]').rudub.bet" >> $GITHUB_ENV
|
||||
echo "PREVIOUS_RUDUB_DOMAIN=$(date --date='yesterday' +'%b%d' | tr '[:upper:]' '[:lower:]').rudub.bet" >> $GITHUB_ENV
|
||||
|
||||
- name: Update rudub definition
|
||||
uses: mikefarah/yq@master
|
||||
|
||||
11
README.md
11
README.md
@@ -241,7 +241,6 @@ Prior versions of Jackett are no longer supported.
|
||||
* AlphaRatio (AR)
|
||||
* AmigosShareClub (ASC)
|
||||
* AnimeBytes (AB)
|
||||
* AnimeLovers
|
||||
* AnimeTorrents (AnT)
|
||||
* AnimeTorrents.ro (Anime Torrents Romania)
|
||||
* AnimeWorld (AW)
|
||||
@@ -271,7 +270,6 @@ Prior versions of Jackett are no longer supported.
|
||||
* BitHUmen
|
||||
* Bitpalace
|
||||
* BitPorn
|
||||
* BitSexy
|
||||
* BitTorrentFiles
|
||||
* BiTTuRK
|
||||
* BJ-Share (BJ) [![(invite needed)][inviteneeded]](#)
|
||||
@@ -389,7 +387,6 @@ Prior versions of Jackett are no longer supported.
|
||||
* HELLENIC-HD
|
||||
* HHanClub
|
||||
* HHD
|
||||
* HomePornTorrents (HPT)
|
||||
* House of Devil
|
||||
* HQMusic
|
||||
* HUDBT (蝴蝶) [![(invite needed)][inviteneeded]](#)
|
||||
@@ -456,7 +453,6 @@ Prior versions of Jackett are no longer supported.
|
||||
* Nirvana
|
||||
* NorBits
|
||||
* NordicQuality
|
||||
* Nusanta(RA.RE)
|
||||
* OKPT
|
||||
* Old Greek Tracker (OGT)
|
||||
* Old Toons World (OTW)
|
||||
@@ -485,7 +481,6 @@ Prior versions of Jackett are no longer supported.
|
||||
* PT GTK
|
||||
* PT分享站 (itzmx)
|
||||
* PTCafe (咖啡)
|
||||
* PTChina (铂金学院)
|
||||
* PTerClub (PT之友俱乐部)
|
||||
* PTFans
|
||||
* PTFiles (PTF)
|
||||
@@ -493,7 +488,6 @@ Prior versions of Jackett are no longer supported.
|
||||
* PTSBAO (烧包) [![(invite needed)][inviteneeded]](#)
|
||||
* PTSKIT
|
||||
* PTtime
|
||||
* PTVicomo
|
||||
* Punk's Horror Tracker
|
||||
* PuntoTorrent [![(invite needed)][inviteneeded]](#)
|
||||
* PuTao (葡萄)
|
||||
@@ -620,7 +614,6 @@ Prior versions of Jackett are no longer supported.
|
||||
* Zappateers
|
||||
* Zelka.org
|
||||
* ZmPT (织梦)
|
||||
* ZonaQ [![(invite needed)][inviteneeded]](#)
|
||||
</details>
|
||||
|
||||
Trackers marked with [![(invite needed)][inviteneeded]](#) have no active maintainer and may be broken or missing features. If you have an invite please send it to jacketttest [at] gmail [dot] com or garfieldsixtynine [at] gmail [dot] com get them fixed/improved.
|
||||
@@ -727,7 +720,7 @@ Jackett can also be run from the command line if you would like to see log messa
|
||||
|
||||
|
||||
## Installation on Linux (AMDx64)
|
||||
On most operating systems all the required dependencies will already be present. In case they are not, you can refer to this page https://github.com/dotnet/core/blob/master/Documentation/linux-prereqs.md
|
||||
On most operating systems all the required dependencies will already be present. In case they are not, you can refer to the [.NET Required Packages](https://github.com/dotnet/core/blob/main/release-notes/9.0/os-packages.md) page.
|
||||
|
||||
### Install as service
|
||||
A) Command to download and install the latest package and run the Jackett service:
|
||||
@@ -747,7 +740,7 @@ If you want to run it with a user without a /home directory you need to add `Env
|
||||
|
||||
|
||||
## Installation on Linux (ARMv7 or above)
|
||||
On most operating systems all the required dependencies will already be present. In case they are not, you can refer to this page https://github.com/dotnet/core/blob/master/Documentation/linux-prereqs.md
|
||||
On most operating systems all the required dependencies will already be present. In case they are not, you can refer to the [.NET Required Packages](https://github.com/dotnet/core/blob/main/release-notes/9.0/os-packages.md) page.
|
||||
|
||||
### Install as service
|
||||
1. Download and extract the latest `Jackett.Binaries.LinuxARM32.tar.gz` or `Jackett.Binaries.LinuxARM64.tar.gz` (32 bit is the most common on ARM) release from the [releases](https://github.com/Jackett/Jackett/releases/latest) page
|
||||
|
||||
@@ -190,4 +190,4 @@ search:
|
||||
minimumseedtime:
|
||||
# 5 days (as seconds = 5 x 24 x 60 x 60)
|
||||
text: 432000
|
||||
# json UNIT3D 9.1.7
|
||||
# json UNIT3D 9.2.0
|
||||
|
||||
@@ -1,201 +0,0 @@
|
||||
---
|
||||
id: animelovers-api
|
||||
name: AnimeLovers (API)
|
||||
description: "AnimeLovers is a Private tracker for ANIME / MANGA / DOUNGUA / MANHWA"
|
||||
language: en-US
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://animelovers.club/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies/Other, desc: "Anime Movies"}
|
||||
- {id: 2, cat: TV/Anime, desc: "Anime Series"}
|
||||
- {id: 3, cat: TV/Anime, desc: "Anime OVA"}
|
||||
- {id: 11, cat: TV/Anime, desc: "Donghua Anime"}
|
||||
- {id: 9, cat: XXX, desc: "Doujinshi"}
|
||||
- {id: 4, cat: Books/Comics, desc: "Manhua/Manhwa"}
|
||||
- {id: 8, cat: Books/Comics, desc: "Manga"}
|
||||
- {id: 7, cat: XXX, desc: "Hentai"}
|
||||
- {id: 10, cat: Audio/Lossless, desc: "Lossless Music"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
|
||||
movie-search: [q, imdbid, tmdbid]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: apikey
|
||||
type: text
|
||||
label: APIKey
|
||||
- name: info_key
|
||||
type: info
|
||||
label: About your API key
|
||||
default: "Find or Generate a new API Token by accessing your <a href=\"https://animelovers.club/\" target=\"_blank\">AnimeLovers</a> account <i>My Settings</i> page and clicking on the <b>API Key</b> tab."
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: single_file_release_use_filename
|
||||
type: checkbox
|
||||
label: Use filename as title for single file releases
|
||||
default: true
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: created_at
|
||||
options:
|
||||
created_at: created
|
||||
seeders: seeders
|
||||
size: size
|
||||
name: title
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: desc
|
||||
options:
|
||||
desc: desc
|
||||
asc: asc
|
||||
- name: info_activity
|
||||
type: info
|
||||
label: Account Inactivity
|
||||
default: "In order to not be disabled, you are required to login to AnimeLovers at least once every 90 days."
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
- selector: :root:contains("Account is Banned")
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D/torrent_api.html
|
||||
# https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
|
||||
- path: api/torrents/filter
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
episodeNumber: "{{ .Query.Ep }}"
|
||||
imdbId: "{{ .Query.IMDBIDShort }}"
|
||||
tmdbId: "{{ .Query.TMDBID }}"
|
||||
tvdbId: "{{ .Query.TVDBID }}"
|
||||
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
|
||||
sortField: "{{ .Config.sort }}"
|
||||
sortDirection: "{{ .Config.type }}"
|
||||
perPage: 100
|
||||
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["\\.", " "]
|
||||
|
||||
rows:
|
||||
selector: data
|
||||
attribute: attributes
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: category_id
|
||||
title_optional:
|
||||
selector: name
|
||||
title_filename:
|
||||
selector: "files[0].name"
|
||||
optional: true
|
||||
files:
|
||||
selector: num_file
|
||||
title:
|
||||
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
|
||||
details:
|
||||
selector: details_link
|
||||
download:
|
||||
selector: download_link
|
||||
infohash:
|
||||
selector: info_hash
|
||||
poster:
|
||||
selector: meta.poster
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/90x135", ""]
|
||||
imdbid:
|
||||
selector: imdb_id
|
||||
tmdbid:
|
||||
selector: tmdb_id
|
||||
tvdbid:
|
||||
selector: tvdb_id
|
||||
genre:
|
||||
selector: meta.genres
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(?i)(Science Fiction)", "Science_Fiction"]
|
||||
- name: re_replace
|
||||
args: ["(?i)(TV Movie)", "TV_Movie"]
|
||||
- name: replace
|
||||
args: [" & ", "_&_"]
|
||||
_internal:
|
||||
selector: internal
|
||||
case:
|
||||
False: "{{ .False }}"
|
||||
True: "{{ .True }}"
|
||||
description:
|
||||
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
|
||||
seeders:
|
||||
selector: seeders
|
||||
leechers:
|
||||
selector: leechers
|
||||
grabs:
|
||||
selector: times_completed
|
||||
date:
|
||||
# "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50
|
||||
selector: created_at
|
||||
filters:
|
||||
- name: append
|
||||
args: " +00:00" # GMT
|
||||
- name: dateparse
|
||||
args: "MM/dd/yyyy HH:mm:ss zzz"
|
||||
size:
|
||||
selector: size
|
||||
_featured:
|
||||
selector: featured
|
||||
case:
|
||||
False: "{{ .False }}"
|
||||
True: "{{ .True }}"
|
||||
downloadvolumefactor_freeleech:
|
||||
# api returns 0%, 25%, 50%, 75%, 100%
|
||||
selector: freeleech
|
||||
case:
|
||||
0%: 1 # not free
|
||||
25%: 0.75
|
||||
50%: 0.5
|
||||
75%: 0.25
|
||||
100%: 0 # freeleech
|
||||
"*": 0 # catch errors
|
||||
downloadvolumefactor:
|
||||
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
|
||||
uploadvolumefactor_double_upload:
|
||||
# api returns False, True
|
||||
selector: double_upload
|
||||
case:
|
||||
False: 1 # normal
|
||||
True: 2 # double
|
||||
uploadvolumefactor:
|
||||
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
|
||||
# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
|
||||
# minimumratio:
|
||||
# text: 0.4
|
||||
minimumseedtime:
|
||||
# 7 days (as seconds = 7 x 24 x 60 x 60)
|
||||
text: 604800
|
||||
# json UNIT3D 9.1.5
|
||||
@@ -124,6 +124,20 @@ search:
|
||||
order: "{{ .Config.sort }}"
|
||||
by: "{{ .Config.type }}"
|
||||
# does not support imdbid search or provide imdb link in results
|
||||
keywordsfilters:
|
||||
# Keep SxxEyy format for tv-search (Sonarr/Radarr). ArabP2P search does not reliably match
|
||||
# when we convert to the Arabic bracket format unless the Arabic title is also present.
|
||||
- name: re_replace # normalize "1x09" => "S1E09" (then pad below)
|
||||
args: ["(?i)\\b(\\d{1,2})x(\\d{1,3})\\b", "S$1E$2"]
|
||||
- name: re_replace # normalize "S01 E09" => "S01E09"
|
||||
args: ["(?i)\\bS(\\d{1,2})\\s+E(\\d{1,3})\\b", "S$1E$2"]
|
||||
- name: re_replace # pad season: S1E09 => S01E09
|
||||
args: ["(?i)\\bS(\\d)(?=E)", "S0$1"]
|
||||
- name: re_replace # pad episode: S01E9 => S01E09
|
||||
args: ["(?i)E(\\d)\\b", "E0$1"]
|
||||
- name: re_replace
|
||||
args: ["\\s{2,}", " "]
|
||||
- name: trim
|
||||
|
||||
rows:
|
||||
selector: table#torrents_list_p > tbody > tr:has(a[href^="download.php?id="]), table#torrents_list_p > tbody > tr:has(a[href^="magnet:?xt="])
|
||||
@@ -139,6 +153,28 @@ search:
|
||||
args: category
|
||||
title:
|
||||
selector: a[href^="index.php?page=torrent-details"]
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(?<=\\d)\\s+(?=\\d)", " "]
|
||||
- name: re_replace
|
||||
args: ["\\[(\\d+(?:[\\s-]+\\d+)*)\\]\\s*\\[(\\d{4})\\]\\s*\\[م(\\d+)\\]", "S$3E$1 [$2]"]
|
||||
- name: re_replace
|
||||
args: ["\\[(\\d+(?:[\\s-]+\\d+)*)\\]\\s*\\[م(\\d+)\\]", "S$2E$1"]
|
||||
- name: re_replace
|
||||
args: ["^\\[(\\d+(?:[\\s-]+\\d+)*)\\](?!\\s*\\[م)", "S01E$1"]
|
||||
- name: re_replace
|
||||
args: ["E(\\d+)[\\s-]+(\\d+)", "E$1-E$2"]
|
||||
- name: re_replace
|
||||
args: ["\\[\\s*\\]", ""]
|
||||
- name: re_replace
|
||||
args: ["(?<=\\S)(\\[)", " $1"]
|
||||
- name: re_replace
|
||||
args: ["S(\\d)(?=E)", "S0$1"]
|
||||
- name: re_replace
|
||||
args: ["E(\\d)(?=\\D)", "E0$1"]
|
||||
- name: re_replace
|
||||
args: ["\\s{2,}", " "]
|
||||
- name: trim
|
||||
details:
|
||||
selector: a[href^="index.php?page=torrent-details"]
|
||||
attribute: href
|
||||
|
||||
@@ -6,6 +6,7 @@ language: hu-HU
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://bitpalace.hu/
|
||||
- https://bitpalace.cc/
|
||||
|
||||
caps:
|
||||
|
||||
@@ -191,4 +191,4 @@ search:
|
||||
minimumseedtime:
|
||||
# 48 hours (as seconds = 2 x 24 x 60 x 60)
|
||||
text: 172800
|
||||
# json UNIT3D 9.1.7 (custom)
|
||||
# json UNIT3D 9.2.0 (custom)
|
||||
|
||||
@@ -1,181 +0,0 @@
|
||||
---
|
||||
id: bitsexy-api
|
||||
name: BitSexy (API)
|
||||
description: "BitSexy is a Private Torrent Tracker for 3X"
|
||||
language: en-US
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://bitsexy.cc/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: XXX/x264, desc: "Movies"}
|
||||
- {id: 2, cat: XXX/Pack, desc: "Pack"}
|
||||
- {id: 3, cat: XXX/ImageSet, desc: "Images"}
|
||||
- {id: 4, cat: Console, desc: "Games"}
|
||||
- {id: 5, cat: Books, desc: "Books"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
movie-search: [q]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: apikey
|
||||
type: text
|
||||
label: APIKey
|
||||
- name: info_key
|
||||
type: info
|
||||
label: About your API key
|
||||
default: "Find or Generate a new API Token by accessing your <a href=\"https://bitsexy.cc/\" target=\"_blank\">BitSexy</a> account <i>My Settings</i> page and clicking on the <b>API Key</b> tab."
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: single_file_release_use_filename
|
||||
type: checkbox
|
||||
label: Use filename as title for single file releases
|
||||
default: true
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: created_at
|
||||
options:
|
||||
created_at: created
|
||||
seeders: seeders
|
||||
size: size
|
||||
name: title
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: desc
|
||||
options:
|
||||
desc: desc
|
||||
asc: asc
|
||||
- name: info_activity
|
||||
type: info
|
||||
label: Account Inactivity
|
||||
default: "<ul><li>You must log in once every 60 days or seed at least 1 torrent to not get disabled</li><li>Once disabled, you have another 60 days to log back in and have your account re-activated. You may need to contact Helpdesk to do so</li><li>Disabled account will be deleted after 180 days of inactivity</li><ul>"
|
||||
|
||||
login:
|
||||
path: /api/torrents
|
||||
method: get
|
||||
error:
|
||||
- selector: a[href*="/login"]
|
||||
message:
|
||||
text: "The API key was not accepted by {{ .Config.sitelink }}."
|
||||
- selector: :root:contains("Account is Banned")
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://hdinnovations.github.io/UNIT3D/torrent_api.html
|
||||
# https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
|
||||
- path: api/torrents/filter
|
||||
response:
|
||||
type: json
|
||||
|
||||
headers:
|
||||
Authorization: ["Bearer {{ .Config.apikey }}"]
|
||||
|
||||
inputs:
|
||||
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
|
||||
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
|
||||
name: "{{ .Keywords }}"
|
||||
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
|
||||
sortField: "{{ .Config.sort }}"
|
||||
sortDirection: "{{ .Config.type }}"
|
||||
perPage: 100
|
||||
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["\\.", " "]
|
||||
|
||||
rows:
|
||||
selector: data
|
||||
attribute: attributes
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: category_id
|
||||
title_optional:
|
||||
selector: name
|
||||
title_filename:
|
||||
selector: "files[0].name"
|
||||
optional: true
|
||||
files:
|
||||
selector: num_file
|
||||
title:
|
||||
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
|
||||
details:
|
||||
selector: details_link
|
||||
download:
|
||||
selector: download_link
|
||||
poster:
|
||||
selector: meta.poster
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/90x135", ""]
|
||||
imdbid:
|
||||
selector: imdb_id
|
||||
tmdbid:
|
||||
selector: tmdb_id
|
||||
tvdbid:
|
||||
selector: tvdb_id
|
||||
genre:
|
||||
selector: meta.genres
|
||||
filters:
|
||||
- name: replace
|
||||
args: [" & ", "_&_"]
|
||||
_internal:
|
||||
selector: internal
|
||||
case:
|
||||
False: "{{ .False }}"
|
||||
True: "{{ .True }}"
|
||||
description:
|
||||
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
|
||||
seeders:
|
||||
selector: seeders
|
||||
leechers:
|
||||
selector: leechers
|
||||
grabs:
|
||||
selector: times_completed
|
||||
date:
|
||||
# "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50
|
||||
selector: created_at
|
||||
filters:
|
||||
- name: append
|
||||
args: " +00:00" # GMT
|
||||
- name: dateparse
|
||||
args: "MM/dd/yyyy HH:mm:ss zzz"
|
||||
size:
|
||||
selector: size
|
||||
_featured:
|
||||
selector: featured
|
||||
case:
|
||||
False: "{{ .False }}"
|
||||
True: "{{ .True }}"
|
||||
downloadvolumefactor_freeleech:
|
||||
# api returns 0%, 25%, 50%, 75%, 100%
|
||||
selector: freeleech
|
||||
case:
|
||||
0%: 1 # not free
|
||||
25%: 0.75
|
||||
50%: 0.5
|
||||
75%: 0.25
|
||||
100%: 0 # freeleech
|
||||
"*": 0 # catch errors
|
||||
downloadvolumefactor:
|
||||
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
|
||||
uploadvolumefactor_double_upload:
|
||||
# api returns False, True
|
||||
selector: double_upload
|
||||
case:
|
||||
False: 1 # normal
|
||||
True: 2 # double
|
||||
uploadvolumefactor:
|
||||
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
|
||||
minimumseedtime:
|
||||
# 2 days (as seconds = 2 x 24 x 60 x 60)
|
||||
text: 172800
|
||||
# json UNIT3D 9.1.7 (custom)
|
||||
@@ -181,4 +181,4 @@ search:
|
||||
description:
|
||||
selector: td.rowfollow:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.9.6 2025-06-25
|
||||
# NexusPHP v1.9.11 2025-11-02
|
||||
|
||||
@@ -82,6 +82,7 @@ caps:
|
||||
- {id: 330, cat: Books/EBook, desc: "D.I.Y"}
|
||||
- {id: 332, cat: Books/EBook, desc: "Trivia/Quiz"}
|
||||
- {id: 367, cat: Books/EBook, desc: "Health & Fitness"}
|
||||
- {id: 369, cat: Books/EBook, desc: "Woodworking"}
|
||||
# Non Fict/Ref
|
||||
- {id: 285, cat: Books/EBook, desc: "General Non-fiction"}
|
||||
- {id: 289, cat: Books/EBook, desc: "Autobiography/Memoir"}
|
||||
@@ -93,7 +94,6 @@ caps:
|
||||
- {id: 351, cat: Books/EBook, desc: "Religion"}
|
||||
- {id: 358, cat: Books/EBook, desc: "History"}
|
||||
- {id: 362, cat: Books/EBook, desc: "Politics"}
|
||||
- {id: 368, cat: Books/EBook, desc: "Music"}
|
||||
# Military
|
||||
- {id: 287, cat: Books/EBook, desc: "WW1"}
|
||||
- {id: 288, cat: Books/EBook, desc: "WW2"}
|
||||
|
||||
@@ -30,6 +30,7 @@ caps:
|
||||
- {id: Dubbed Movies, cat: Movies/Foreign, desc: Movies Dubbed}
|
||||
- {id: Ebooks, cat: Books/EBook, desc: Books Ebook}
|
||||
- {id: English-translated, cat: TV/Anime, desc: Anime English-translated}
|
||||
- {id: Episodes HD, cat: TV/HD, desc: Episodes HD}
|
||||
- {id: Games, cat: XXX/Other, desc: Adult Games}
|
||||
- {id: Hentai, cat: XXX/Other, desc: Adult Hentai}
|
||||
- {id: Highres Movies, cat: Movies/HD, desc: Movies HD}
|
||||
|
||||
@@ -163,4 +163,4 @@ search:
|
||||
description:
|
||||
selector: td:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.8.11 2024-03-27
|
||||
# NexusPHP v1.9.11 2025-11-02
|
||||
|
||||
@@ -1,168 +0,0 @@
|
||||
---
|
||||
id: homeporntorrents
|
||||
name: HomePornTorrents
|
||||
description: "HomePornTorrents (HPT) is a Private Torrent Tracker for Amateur 3X"
|
||||
language: en-US
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.homeporntorrents.club/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: XXX, desc: "Anal"}
|
||||
- {id: 3, cat: XXX, desc: "Asian"}
|
||||
- {id: 4, cat: XXX, desc: "BBW"}
|
||||
- {id: 2, cat: XXX, desc: "BDSM"}
|
||||
- {id: 31, cat: XXX, desc: "Big Boobs"}
|
||||
- {id: 5, cat: XXX, desc: "Black"}
|
||||
- {id: 7, cat: XXX, desc: "Creampie"}
|
||||
- {id: 8, cat: XXX, desc: "Cumshot"}
|
||||
- {id: 9, cat: XXX, desc: "Fetish"}
|
||||
- {id: 32, cat: XXX, desc: "Fisting"}
|
||||
- {id: 10, cat: XXX, desc: "Gangbang"}
|
||||
- {id: 11, cat: XXX, desc: "Gay"}
|
||||
- {id: 25, cat: XXX, desc: "Hardcore"}
|
||||
- {id: 12, cat: XXX, desc: "Interracial"}
|
||||
- {id: 13, cat: XXX, desc: "Latina"}
|
||||
- {id: 14, cat: XXX, desc: "Lesbian"}
|
||||
- {id: 26, cat: XXX, desc: "Masturbation"}
|
||||
- {id: 15, cat: XXX, desc: "Mature"}
|
||||
- {id: 16, cat: XXX, desc: "Oral"}
|
||||
- {id: 19, cat: XXX, desc: "Other"}
|
||||
- {id: 24, cat: XXX, desc: "Pictures"}
|
||||
- {id: 27, cat: XXX, desc: "Pissing"}
|
||||
- {id: 21, cat: XXX, desc: "Pregnant"}
|
||||
- {id: 28, cat: XXX, desc: "Softcore"}
|
||||
- {id: 22, cat: XXX, desc: "Squirt"}
|
||||
- {id: 18, cat: XXX, desc: "Teen (18+)"}
|
||||
- {id: 17, cat: XXX, desc: "Transsexual"}
|
||||
- {id: 30, cat: XXX, desc: "VIP"}
|
||||
- {id: 23, cat: XXX, desc: "Voyeur"}
|
||||
- {id: 29, cat: XXX, desc: "Webcam"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: time
|
||||
options:
|
||||
time: created
|
||||
seeders: seeders
|
||||
size: size
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: desc
|
||||
options:
|
||||
desc: desc
|
||||
asc: asc
|
||||
- name: info_tpp
|
||||
type: info
|
||||
label: Results Per Page
|
||||
default: For best results, change the <b>Torrents per page</b> setting to <b>100</b> on your User Settings. The default is <i>25</i>.
|
||||
|
||||
login:
|
||||
path: login
|
||||
method: form
|
||||
form: form[action="/login"]
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
keeplogged: 1
|
||||
cinfo: "1920|1080|24|-60"
|
||||
selectorinputs:
|
||||
token:
|
||||
selector: input[name="token"]
|
||||
attribute: value
|
||||
error:
|
||||
- selector: div.flash.error
|
||||
test:
|
||||
path: index.php
|
||||
selector: "li#nav_logout"
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://www.homeporntorrents.club/torrents.php?order_by=time&order_way=desc&filter_freeleech=1&searchtext=&search_type=0&taglist=&tags_type=0
|
||||
- path: torrents.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
|
||||
title: "{{ .Keywords }}"
|
||||
order_by: "{{ .Config.sort }}"
|
||||
order_way: "{{ .Config.type }}"
|
||||
action: advanced
|
||||
filter_freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||||
|
||||
rows:
|
||||
# exclude redbar torrents
|
||||
selector: table#torrent_table > tbody > tr.torrent.shaded_row
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href*="filter_cat"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: \[(\d+?)\]
|
||||
title:
|
||||
selector: a[href^="/torrents.php?id="]
|
||||
details:
|
||||
selector: a[href^="/torrents.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="/torrents.php?action=download&id="]
|
||||
attribute: href
|
||||
description:
|
||||
selector: div.tags
|
||||
poster:
|
||||
# src=\"https:\/\/fapping.empornium.sx\/images\/2023\/05\/30\/MrLuckyPOV2023AlexisFawxXXX720pHEVCx265PRTmp4snapshot0950.jpg\">
|
||||
selector: td:nth-child(2) > script
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "src=(.*?)>"
|
||||
- name: re_replace
|
||||
args: ["[\\\\\"]", ""]
|
||||
- name: replace
|
||||
args: ["/static/common/noartwork/noimage.png", ""]
|
||||
files:
|
||||
selector: td:nth-child(3)
|
||||
date:
|
||||
selector: td:nth-child(5) > span
|
||||
attribute: title
|
||||
filters:
|
||||
# auto adjusted by site account profile
|
||||
- name: append
|
||||
args: " +00:00" # GMT
|
||||
- name: dateparse
|
||||
args: "MMM dd yyyy, HH:mm zzz"
|
||||
size:
|
||||
selector: td:nth-child(6)
|
||||
grabs:
|
||||
selector: td:nth-child(7)
|
||||
seeders:
|
||||
selector: td:nth-child(8)
|
||||
leechers:
|
||||
selector: td:nth-child(9)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
span.icon[title*="Freeleech"]: 0
|
||||
img[alt="Freeleech"]: 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
minimumratio:
|
||||
text: 0.7
|
||||
# Luminance
|
||||
@@ -87,6 +87,7 @@ caps:
|
||||
- {id: MoviesHighresMovies, cat: Movies/HD, desc: "Movies Highres"}
|
||||
- {id: MoviesMP4, cat: Movies/HD, desc: "Movies MP4"}
|
||||
- {id: MoviesMusicvideos, cat: Audio/Video, desc: "Movies Music videos"}
|
||||
- {id: MoviesMovieclips, cat: Other, desc: "Movies Movie clips"}
|
||||
- {id: MoviesOtherMovies, cat: Movies/Other, desc: "Movies Other"}
|
||||
- {id: MoviesUltraHD, cat: Movies/UHD, desc: "Movies UltraHD"}
|
||||
- {id: Music, cat: Audio, desc: Music}
|
||||
|
||||
@@ -16,8 +16,8 @@ caps:
|
||||
- {id: 80, cat: Audio, desc: "DMC: DMC"}
|
||||
- {id: 49, cat: Audio/MP3, desc: "KZN MP3 Weekly: Ex-Vip"}
|
||||
- {id: 76, cat: Audio, desc: "KZN-Exclusive: Exclusive "}
|
||||
- {id: 77, cat: Audio, desc: "KZN: Out Of VIP"}
|
||||
- {id: 98, cat: Audio/MP3, desc: "Other Mp3 Weeky: Mp3"}
|
||||
- {id: 77, cat: Audio, desc: "KZN: Out Of VIP"}
|
||||
- {id: 99, cat: Audio/MP3, desc: "KZ Internal: KZ Internal"}
|
||||
- {id: 74, cat: Audio, desc: "Discography: Collection"}
|
||||
- {id: 82, cat: Audio/Lossless, desc: "Flac: Flac-Flac Packs"}
|
||||
@@ -29,16 +29,17 @@ caps:
|
||||
- {id: 24, cat: Audio, desc: "Karaoke: All Karaoke"}
|
||||
- {id: 47, cat: Movies/BluRay, desc: "Movies: Bluray-HD"}
|
||||
- {id: 52, cat: Movies, desc: "Pre 90s Movies: Pre90s"}
|
||||
- {id: 28, cat: Movies, desc: "Movies: 2025"}
|
||||
- {id: 25, cat: Movies/WEB-DL, desc: "Movies: Web-DL"}
|
||||
- {id: 28, cat: Movies, desc: "Movies: 2026"}
|
||||
- {id: 102, cat: Movies/HD, desc: "Movies MP4: Movie MP4"}
|
||||
- {id: 25, cat: Movies/WEB-DL, desc: "Movies: Web-DL"}
|
||||
- {id: 105, cat: Movies, desc: "Pre 2000 MP4 Movies: Pre 2000 Mp4"}
|
||||
- {id: 48, cat: Movies/SD, desc: "Movies: Xvid-Dvd-Webrip"}
|
||||
- {id: 23, cat: Movies/Other, desc: "Movie: Kids-Anime-Family"}
|
||||
- {id: 41, cat: Movies/3D, desc: "Remux-3D: Remux-3D"}
|
||||
- {id: 86, cat: Movies/HD, desc: "1440P QHD: 1440P QHD"}
|
||||
- {id: 9, cat: Movies/DVD, desc: "Movies: Ntsc Dvdr-ISO"}
|
||||
- {id: 22, cat: Movies/Foreign, desc: "Movies: Foreign"}
|
||||
- {id: 27, cat: Movies/UHD, desc: "Movies: 4K"}
|
||||
- {id: 22, cat: Movies/Foreign, desc: "Movies: Foreign"}
|
||||
- {id: 53, cat: Movies, desc: "Movie Packs: Movie Pks"}
|
||||
- {id: 54, cat: Movies, desc: "Movie Pack: Pre-90s"}
|
||||
- {id: 6, cat: Movies/Other, desc: "Kids Movie Pk: Movie Pks"}
|
||||
|
||||
@@ -135,8 +135,6 @@ search:
|
||||
selector: details_link
|
||||
download:
|
||||
selector: download_link
|
||||
infohash:
|
||||
selector: info_hash
|
||||
poster:
|
||||
selector: meta.poster
|
||||
filters:
|
||||
@@ -211,4 +209,4 @@ search:
|
||||
minimumseedtime:
|
||||
# 3 days (as seconds = 3 x 24 x 60 x 60)
|
||||
text: 259200
|
||||
# json UNIT3D 9.1.5 (custom)
|
||||
# json UNIT3D 9.2.0 (custom)
|
||||
|
||||
@@ -9,13 +9,12 @@ encoding: UTF-8
|
||||
links:
|
||||
- https://magnetcatcat.com/
|
||||
- https://clmclm.com/
|
||||
- https://www.8800524.xyz/
|
||||
- https://www.8800525.xyz/
|
||||
- https://www.8800526.xyz/
|
||||
- https://www.8800528.xyz/
|
||||
- https://www.8800527.xyz/
|
||||
- https://www.8800529.xyz/
|
||||
legacylinks:
|
||||
- https://www.clm472.sbs/
|
||||
- https://www.8800506.xyz/
|
||||
- https://www.8800507.xyz/
|
||||
- https://www.8800508.xyz/
|
||||
- https://www.8800509.xyz/
|
||||
@@ -31,6 +30,8 @@ legacylinks:
|
||||
- https://www.8800521.xyz/
|
||||
- https://www.8800522.xyz/
|
||||
- https://www.8800523.xyz/
|
||||
- https://www.8800526.xyz/
|
||||
- https://www.8800524.xyz/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
||||
@@ -15,7 +15,7 @@ caps:
|
||||
- {id: 23, cat: Movies/Other, desc: "Animációk"}
|
||||
# - {id: 61, cat: Movies/Other, desc: "Cam/EN"}
|
||||
- {id: 60, cat: Movies/Other, desc: "Cam/HU"}
|
||||
# - {id: 45, cat: Books/EBook, desc: "eBook/EN"}
|
||||
- {id: 45, cat: Books/EBook, desc: "eBook/EN"}
|
||||
- {id: 40, cat: Books/EBook, desc: "eBook/HU"}
|
||||
# - {id: 20, cat: Movies/DVD, desc: "Film/DVD9"}
|
||||
- {id: 48, cat: Movies/HD, desc: "Film/EN/1080p"}
|
||||
@@ -125,7 +125,7 @@ search:
|
||||
img[src="/pic/categories/cat_anime.gif"]: 23
|
||||
# img[src="/pic/categories/061.png"]: 61
|
||||
img[src="/pic/categories/061.png"]: 60
|
||||
# img[]: 45
|
||||
img[src="/pic/categories/017.png"]: 45
|
||||
img[src="/pic/categories/016.png"]: 40
|
||||
# img[]: 20
|
||||
img[src="/pic/categories/010.png"]: 48
|
||||
|
||||
@@ -57,6 +57,7 @@ caps:
|
||||
movie-search: [q, imdbid, genre]
|
||||
music-search: [q, genre]
|
||||
book-search: [q, genre]
|
||||
allowrawsearch: true
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
|
||||
@@ -10,7 +10,7 @@ type: public
|
||||
encoding: UTF-8
|
||||
# to fetch current domain use https://www.rantop.org/
|
||||
links:
|
||||
- https://www.nortorrent.rent/
|
||||
- https://www.nortorrent7.com/
|
||||
legacylinks:
|
||||
# latest domains list
|
||||
- https://www.rantop.org/
|
||||
@@ -26,8 +26,6 @@ legacylinks:
|
||||
- https://www.site-torrent.com/
|
||||
- https://www.rantop.my/
|
||||
# actual legacylinks
|
||||
- https://www.torrent9.gdn/
|
||||
- https://www.torrent9.men/
|
||||
- https://www.torrent9.icu/
|
||||
- https://www-torrent9.com/
|
||||
- https://www.nortorrent.com/
|
||||
@@ -41,6 +39,8 @@ legacylinks:
|
||||
- https://www.nortorrent.town/
|
||||
- https://nortorrent-proxy.site/
|
||||
- https://ww1-nortorrent.me/
|
||||
- https://www.nortorrent.rent/
|
||||
- https://ww1-nortorrent.town/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
||||
@@ -1,184 +0,0 @@
|
||||
---
|
||||
id: nusantarare
|
||||
name: Nusanta(RA.RE)
|
||||
description: "Nusanta(RA.RE) is a MALAYSIAN Private Torrent Tracker for MOVIES / TV"
|
||||
language: en-US
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://nusantara.re/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 401, cat: Movies, desc: "Movies"}
|
||||
- {id: 413, cat: Movies, desc: "Malay Movie"}
|
||||
- {id: 412, cat: Movies, desc: "Asia Movie"}
|
||||
- {id: 420, cat: Movies, desc: "Movies Packs"}
|
||||
- {id: 402, cat: TV, desc: "TV Series"}
|
||||
- {id: 419, cat: TV, desc: "TV Drama"}
|
||||
- {id: 403, cat: TV, desc: "TV Shows"}
|
||||
- {id: 411, cat: TV, desc: "TV Packs"}
|
||||
- {id: 410, cat: TV, desc: "Islamic"}
|
||||
- {id: 406, cat: Audio/Video, desc: "Music Videos"}
|
||||
- {id: 405, cat: TV/Anime, desc: "Animations"}
|
||||
- {id: 404, cat: TV/Documentary, desc: "Documentaries"}
|
||||
- {id: 409, cat: Books/EBook, desc: "E-Books"}
|
||||
- {id: 407, cat: TV/Sport, desc: "Sports"}
|
||||
- {id: 417, cat: PC/Games, desc: "Games"}
|
||||
- {id: 418, cat: PC/0day, desc: "Apps & Software"}
|
||||
- {id: 421, cat: PC/Mobile-iOS, desc: "Apple Apps"}
|
||||
- {id: 423, cat: Audio, desc: "Audio"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, imdbid, doubanid]
|
||||
movie-search: [q, imdbid, doubanid]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
default: false
|
||||
- name: novip
|
||||
type: checkbox
|
||||
label: Hide VIP releases
|
||||
default: true
|
||||
- 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.
|
||||
- name: info_activity
|
||||
type: info
|
||||
label: Account Inactivity
|
||||
default: "Note your account will be DISABLED for the reason below:<ol><li>NOT log in your account in 365 days in a row. Except! VIP and VVIP users.</li><li>Park account or NO new download or other activity on the site in 365 days. Except! VIP and VVIP users.</li></ol>"
|
||||
|
||||
login:
|
||||
path: takelogin.php
|
||||
method: post
|
||||
form: form[action="takelogin.php"]
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: td.embedded:has(h2:contains("Login failed"))
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://nusantara.re/torrents.php?incldead=0&inclbookmarked=0&search=&search_area=0&search_mode=0
|
||||
# https://nusantara.re/torrents.php?incldead=0&inclbookmarked=0&search=tt0171484&search_area=4&search_mode=0
|
||||
- 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
|
||||
search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
|
||||
# 0 AND, 1 OR, 2 exact
|
||||
search_mode: 0
|
||||
sort: "{{ .Config.sort }}"
|
||||
type: "{{ .Config.type }}"
|
||||
notnewword: 1
|
||||
|
||||
rows:
|
||||
selector: "table.torrents > tbody > tr:has(table.torrentname){{ if .Config.novip }}:not(:has(img[src=\"pic/ico_exclu.gif\"])){{ else }}{{ end }}"
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title_default:
|
||||
selector: a[href^="details.php?id="]
|
||||
title_title:
|
||||
selector: a[title][href^="details.php?id="]
|
||||
attribute: title
|
||||
optional: true
|
||||
default: "{{ .Result.title_default }}"
|
||||
_isvip:
|
||||
selector: table.torrentname:has(img[src="pic/ico_exclu.gif"])
|
||||
optional: true
|
||||
title:
|
||||
text: "{{ .Result.title_title }}{{ if .Result._isvip }} [VIP]{{ else }}{{ end }}"
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
date_elapsed:
|
||||
# time type: time elapsed (default)
|
||||
selector: td.rowfollow:nth-last-of-type(6) > 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-last-of-type(6):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-last-of-type(5)
|
||||
seeders:
|
||||
selector: td.rowfollow:nth-last-of-type(4)
|
||||
leechers:
|
||||
selector: td.rowfollow:nth-last-of-type(3)
|
||||
grabs:
|
||||
selector: td.rowfollow:nth-last-of-type(2)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="pic/ico_free.gif"]: 0
|
||||
img[src="pic/ico_half.gif"]: 0.5
|
||||
img[src="pic/ico_third.gif"]: 0.3
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img[src="pic/2x.gif"]: 2
|
||||
"*": 1
|
||||
minimumratio:
|
||||
text: 1.0
|
||||
description:
|
||||
selector: td:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# Nexus (custom)
|
||||
@@ -45,7 +45,7 @@ settings:
|
||||
- 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 Kufei Web Site. Otherwise just leave it empty."
|
||||
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> on the Panda Web Site. Otherwise just leave it empty."
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
|
||||
@@ -143,7 +143,7 @@ search:
|
||||
# does not support sorting results, or imdbid searching, or have imdb in results
|
||||
|
||||
rows:
|
||||
selector: div.boxcontent > table > tbody > tr:has(a.link1)
|
||||
selector: div.boxcontent > table:has(a.link2)
|
||||
|
||||
fields:
|
||||
categorydesc:
|
||||
@@ -151,13 +151,7 @@ search:
|
||||
optional: true
|
||||
default: Pozostale
|
||||
title_phase1:
|
||||
selector: a.link1
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: f=(.+?)\.torrent
|
||||
- name: urldecode
|
||||
- name: htmldecode
|
||||
selector: a.link2[href^="details.php?id="]
|
||||
title_multilang:
|
||||
text: "{{ .Result.title_phase1 }}"
|
||||
filters:
|
||||
@@ -171,10 +165,13 @@ search:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a.link1
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["details.php?id=", "download.php?torrent="]
|
||||
poster:
|
||||
selector: img
|
||||
selector: img.poster-torrent
|
||||
attribute: src
|
||||
date:
|
||||
selector: td.pole
|
||||
@@ -187,7 +184,7 @@ search:
|
||||
selector: td.pole
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "Rozmiar: (\\d+\\.\\d+ [T|G|M|K|k]B)"
|
||||
args: "(\\d+\\.\\d+ [T|G|M|K|k]B)"
|
||||
seeders:
|
||||
selector: td.pole
|
||||
filters:
|
||||
|
||||
@@ -21,16 +21,16 @@ caps:
|
||||
- {id: 508, cat: XXX, desc: "Классические фильмы / Classic"}
|
||||
- {id: 555, cat: XXX, desc: "Фильмы с сюжетом / Feature & Vignettes"}
|
||||
- {id: 1845, cat: XXX, desc: "Гонзо-фильмы 1991-2010 / Gonzo 1991-2010"}
|
||||
- {id: 1673, cat: XXX, desc: "Гонзо-фильмы 2011-2025 / Gonzo 2011-2025"}
|
||||
- {id: 1673, cat: XXX, desc: "Гонзо-фильмы 2011-2026 / Gonzo 2011-2026"}
|
||||
- {id: 1112, cat: XXX, desc: "Фильмы без сюжета 1991-2010 / All Sex & Amateur 1991-2010"}
|
||||
- {id: 1718, cat: XXX, desc: "Фильмы без сюжета 2011-2025 / All Sex & Amateur 2011-2025"}
|
||||
- {id: 1718, cat: XXX, desc: "Фильмы без сюжета 2011-2026 / All Sex & Amateur 2011-2026"}
|
||||
- {id: 553, cat: XXX, desc: "Лесбо-фильмы / All Girl & Solo"}
|
||||
- {id: 1143, cat: XXX, desc: "Этнические фильмы / Ethnic-Themed"}
|
||||
- {id: 1646, cat: XXX, desc: "Видео для телефонов и КПК / Pocket РС & Phone Video"}
|
||||
|
||||
- {id: 1717, cat: XXX, desc: "Зарубежные фильмы в высоком качестве (DVD&HD) / Full Length Movies High-Quality"}
|
||||
- {id: 1851, cat: XXX/DVD, desc: "Эротические и Документальные видео (DVD) / Erotic, Documentary & Reality (DVD)"}
|
||||
- {id: 1713, cat: XXX/DVD, desc: "Фильмы с сюжетом, Классические (DVD) / Feature & Vignetts, Classic (DVD)"}
|
||||
- {id: 1713, cat: XXX/DVD, desc: "Фильмы с сюжетом, Классические (DVD) / Feature & Vignettes, Classic (DVD)"}
|
||||
- {id: 512, cat: XXX/DVD, desc: "Гонзо, Лесбо и Фильмы без сюжета (DVD) / Gonzo, All Girl & Solo, All Sex (DVD)"}
|
||||
- {id: 1712, cat: XXX, desc: "Эротические и Документальные видео (HD Video) / Erotic, Documentary & Reality (HD Video)"}
|
||||
- {id: 1775, cat: XXX, desc: "Фильмы с сюжетом, Классические (HD Video) / Feature & Vignettes, Classic (HD Video)"}
|
||||
@@ -43,6 +43,8 @@ caps:
|
||||
- {id: 1830, cat: XXX, desc: "Сайтрипы с русскими актрисами 1991-2015 (HD Video) / Russian SiteRip's 1991-2015 (HD Video)"}
|
||||
- {id: 1803, cat: XXX, desc: "Сайтрипы с русскими актрисами 2016-2025 / Russian SiteRip's 2016-2025"}
|
||||
- {id: 1831, cat: XXX, desc: "Сайтрипы с русскими актрисами 2016-2025 (HD Video) / Russian SiteRip's 2016-2025 (HD Video)"}
|
||||
- {id: 1877, cat: XXX, desc: "Сайтрипы с русскими актрисами 2026 / Russian SiteRip's 2026"}
|
||||
- {id: 1878, cat: XXX, desc: "Сайтрипы с русскими актрисами 2026 (HD Video) / Russian SiteRip's 2026 (HD Video)"}
|
||||
- {id: 1741, cat: XXX, desc: "Русские Порноролики Разное / Russian Clips (various)"}
|
||||
- {id: 1676, cat: XXX, desc: "Русское любительское видео / Russian Amateur Video"}
|
||||
|
||||
@@ -65,6 +67,7 @@ caps:
|
||||
- {id: 1861, cat: XXX, desc: "Сайтрипы 2023 (HD Video) / SiteRip's 2023 (HD Video)"}
|
||||
- {id: 1867, cat: XXX, desc: "Сайтрипы 2024 (HD Video) / SiteRip's 2024 (HD Video)"}
|
||||
- {id: 1872, cat: XXX, desc: "Сайтрипы 2025 (HD Video) / SiteRip's 2025 (HD Video)"}
|
||||
- {id: 1875, cat: XXX, desc: "Сайтрипы 2026 (HD Video) / SiteRip's 2026 (HD Video)"}
|
||||
- {id: 1451, cat: XXX, desc: "Сайтрипы 1991-2010 / SiteRip's 1991-2010"}
|
||||
- {id: 1788, cat: XXX, desc: "Сайтрипы 2011-2012 / SiteRip's 2011-2012"}
|
||||
- {id: 1789, cat: XXX, desc: "Сайтрипы 2013 / SiteRip's 2013"}
|
||||
@@ -80,7 +83,9 @@ caps:
|
||||
- {id: 1862, cat: XXX, desc: "Сайтрипы 2023 / SiteRip's 2023"}
|
||||
- {id: 1868, cat: XXX, desc: "Сайтрипы 2024 / SiteRip's 2024"}
|
||||
- {id: 1873, cat: XXX, desc: "Сайтрипы 2025 / SiteRip's 2025"}
|
||||
- {id: 1876, cat: XXX, desc: "Сайтрипы 2026 / SiteRip's 2026"}
|
||||
- {id: 1707, cat: XXX, desc: "Сцены из фильмов / Movie Scenes (кроме SiteRip)"}
|
||||
- {id: 1874, cat: XXX, desc: "Порноролики с переводом / Clips with translation"}
|
||||
- {id: 284, cat: XXX, desc: "Порноролики Разное / Clips (various)"}
|
||||
- {id: 1853, cat: XXX, desc: "Компиляции и Музыкальные порно клипы / Compilations & Porn Music Video (PMV)"}
|
||||
- {id: 1823, cat: XXX, desc: "Порноролики в 3D и Virtual Reality (VR) / 3D & Virtual Reality Videos"}
|
||||
@@ -89,9 +94,8 @@ caps:
|
||||
- {id: 1801, cat: XXX/Pack, desc: "Паки японских фильмов и сайтрипов / Full Length Japanese Movies Packs & SiteRip's Packs"}
|
||||
- {id: 1719, cat: XXX, desc: "Японские фильмы и сайтрипы (DVD и HD Video) / Japanese Movies & SiteRip's (DVD & HD Video)"}
|
||||
- {id: 997, cat: XXX, desc: "Японские фильмы и сайтрипы 1991-2014 / Japanese Movies & SiteRip's 1991-2014"}
|
||||
- {id: 1818, cat: XXX, desc: "Японские фильмы и сайтрипы 2015-2025 / Japanese Movies & SiteRip's 2015-2025"}
|
||||
- {id: 1818, cat: XXX, desc: "Японские фильмы и сайтрипы 2015-2026 / Japanese Movies & SiteRip's 2015-2026"}
|
||||
- {id: 1849, cat: XXX, desc: "Китайские фильмы и сайтрипы (DVD и HD Video) / Chinese Movies & SiteRip's (DVD & HD Video)"}
|
||||
- {id: 1815, cat: XXX, desc: "Архив (Японское и китайское порно)"}
|
||||
|
||||
- {id: 1723, cat: XXX, desc: "Фото и журналы / Photos & Magazines"}
|
||||
- {id: 1726, cat: XXX, desc: "MetArt & MetModels"}
|
||||
@@ -102,7 +106,6 @@ caps:
|
||||
- {id: 1757, cat: XXX/ImageSet, desc: "Подборки сетов / Picture Sets Packs"}
|
||||
- {id: 1735, cat: XXX/ImageSet, desc: "Тематическое и нетрадиционное фото / Misc & Special Interest Picture Packs"}
|
||||
- {id: 1731, cat: XXX/ImageSet, desc: "Журналы / Magazines"}
|
||||
- {id: 1802, cat: XXX, desc: "Архив (Фото)"}
|
||||
|
||||
- {id: 1745, cat: XXX, desc: "Хентай и Манга, Мультфильмы и Комиксы, Рисунки, Аудио / Hentai & Manga, Cartoons & Comics, Artwork & Audio"}
|
||||
- {id: 1679, cat: XXX, desc: "Хентай: основной подраздел / Hentai: main subsection"}
|
||||
@@ -114,19 +117,17 @@ caps:
|
||||
- {id: 1711, cat: XXX, desc: "Мультфильмы / Cartoons"}
|
||||
- {id: 1296, cat: XXX, desc: "Комиксы, рисунки, аудио / Comics, Artwork & Audio"}
|
||||
- {id: 1863, cat: XXX, desc: "Обсуждение / Discussion"}
|
||||
- {id: 1864, cat: XXX, desc: "Архив (Хентай и Манга, Мультфильмы и Комиксы, Рисунки, А.."}
|
||||
|
||||
- {id: 1838, cat: XXX, desc: "Игры / Games"}
|
||||
- {id: 1750, cat: XXX, desc: "Игры: основной подраздел / Games: main subsection"}
|
||||
- {id: 1756, cat: XXX, desc: "Игры: визуальные новеллы (профессиональная студия) / Games: Visual Novels (Pro)"}
|
||||
- {id: 1869, cat: XXX, desc: "Игры: визуальные новеллы (независимый разработчик) / Games: Visual Novels (Indie)"}
|
||||
- {id: 1785, cat: XXX, desc: "Игры: ролевые / Games: role-playing (RPG Maker and WOLF RPG Editor)"}
|
||||
- {id: 1785, cat: XXX, desc: "Игры: ролевые / Games: role-playing [RPG Maker / WOLF RPG Editor]"}
|
||||
- {id: 1790, cat: XXX, desc: "Игры и Софт: Анимация / Software: Animation"}
|
||||
- {id: 1827, cat: XXX, desc: "Игры: В разработке и Демо (основной подраздел) / Games: In Progress and Demo (main subsection)"}
|
||||
- {id: 1870, cat: XXX, desc: "Игры: В разработке и Демо (визуальные новеллы - независимый разработчик) / Games: In Progress and Demo (visual novels - Indie)"}
|
||||
- {id: 1828, cat: XXX, desc: "Игры: В разработке и Демо (ролевые) / Games: In Progress and Demo (role-playing - RPG Maker and WOLF RPG Editor)"}
|
||||
- {id: 1828, cat: XXX, desc: "Игры: В разработке и Демо (ролевые) / Games: In Progress and Demo (role-playing) [RPG Maker / WOLF RPG Editor]"}
|
||||
- {id: 1829, cat: XXX, desc: "Обсуждение игр / Games Discussion"}
|
||||
- {id: 1865, cat: XXX, desc: "Архив (Игры)"}
|
||||
|
||||
- {id: 11, cat: XXX, desc: "Нетрадиционное порно / Special Interest Movies & Clips"}
|
||||
- {id: 1715, cat: XXX, desc: "Транссексуалы (DVD и HD) / Transsexual (DVD & HD)"}
|
||||
@@ -142,11 +143,10 @@ caps:
|
||||
- {id: 1685, cat: XXX, desc: "Мочеиспускание / Peeing"}
|
||||
- {id: 1762, cat: XXX, desc: "Фетиш / Fetish"}
|
||||
- {id: 1681, cat: XXX, desc: "Дефекация / Scat"}
|
||||
- {id: 1683, cat: XXX, desc: "Архив (общий)"}
|
||||
|
||||
- {id: 1688, cat: XXX, desc: "Гей-порно / Gay Forum"}
|
||||
- {id: 903, cat: XXX, desc: "Полнометражные гей-фильмы / Full Length Movies (Gay)"}
|
||||
- {id: 1765, cat: XXX, desc: "Полнометражные азиатские гей-фильмы / Full-length Asian (Gay)"}
|
||||
- {id: 1765, cat: XXX, desc: "Полнометражные азиатские гей-фильмы / Full-length Asian Films (Gay)"}
|
||||
- {id: 1767, cat: XXX, desc: "Классические гей-фильмы (до 1990 года) / Classic Gay Films (Pre-1990's)"}
|
||||
- {id: 1755, cat: XXX, desc: "Гей-фильмы в высоком качестве (DVD и HD) / High-Quality Full Length Movies (Gay DVD & HD)"}
|
||||
- {id: 1787, cat: XXX, desc: "Азиатские гей-фильмы в высоком качестве (DVD и HD) / High-Quality Full Length Asian Movies (Gay DVD & HD)"}
|
||||
@@ -154,7 +154,6 @@ caps:
|
||||
- {id: 1777, cat: XXX, desc: "Гей-ролики в высоком качестве (HD Video) / Gay Clips (HD Video)"}
|
||||
- {id: 1691, cat: XXX, desc: "Ролики, SiteRip'ы и сцены из гей-фильмов / Clips & Movie Scenes (Gay)"}
|
||||
- {id: 1692, cat: XXX/ImageSet, desc: "Гей-журналы, фото, разное / Magazines, Photo, Rest (Gay)"}
|
||||
- {id: 1720, cat: XXX, desc: "Архив (Гей-порно)"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
||||
@@ -1,200 +0,0 @@
|
||||
---
|
||||
id: ptchina
|
||||
name: PTChina (铂金学院)
|
||||
description: "PTChina (铂金学院) is a CHINESE Private Torrent Tracker for MOVIES / TV"
|
||||
language: zh-CN
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://ptchina.org/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 401, cat: Movies, desc: "Movies/电影"}
|
||||
- {id: 402, cat: TV, desc: "TV Series/电视剧"}
|
||||
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, imdbid, doubanid]
|
||||
movie-search: [q, imdbid, doubanid]
|
||||
|
||||
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 PTChina 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.
|
||||
- name: info_activity
|
||||
type: info
|
||||
label: Account Inactivity
|
||||
default: "Account retention rules:<ol><li>Veteran User and above will be retained forever</li><li>Elite User and above will not be deleted after parking (in the control panel)</li><li>Users with a parked account will be deleted if they do not log in for 400 consecutive days</li><li>Users with a non-parked account will be deleted if they do not log in for 150 consecutive days</li><li>Users with no traffic (ie, upload/download data are both 0) will be deleted if they do not log in for 100 consecutive days.</li></ol>"
|
||||
|
||||
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("失败"))
|
||||
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="]):has(a[href^="download.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
|
||||
# site does not have posters enabled. just in case a future update.
|
||||
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:
|
||||
# 1 day (as seconds = 24 x 60 x 60)
|
||||
text: 86400
|
||||
description_verified:
|
||||
case:
|
||||
span[title="通过"], span[title="通過"], span[title="Allowed"]: "Verified:"
|
||||
span[title="未审"], span[title="未審"], span[title="Not reviewed"]: "Unverified:"
|
||||
span[title="拒绝"], span[title="拒絕"], span[title="Denied"]: "Banned:"
|
||||
description:
|
||||
selector: td.rowfollow:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
filters:
|
||||
- name: prepend
|
||||
args: "{{ .Result.description_verified }} "
|
||||
# NexusPHP v1.8.15 2024-12-23
|
||||
@@ -6,8 +6,10 @@ language: zh-CN
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://pt.gtk.pw/
|
||||
# backup domain - https://pt1.gtkpw.xyz/
|
||||
- https://pt.gtkpw.xyz/
|
||||
legacylinks:
|
||||
- https://pt.gtk.pw/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
@@ -44,7 +46,7 @@ settings:
|
||||
- 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 Uploads Web Site. Otherwise just leave it empty."
|
||||
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> on the PT GTK Web Site. Otherwise just leave it empty."
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
@@ -195,4 +197,4 @@ search:
|
||||
description:
|
||||
selector: td:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
# NexusPHP v1.8.15 2024-12-23
|
||||
# NexusPHP v1.9.11 2025-11-02
|
||||
|
||||
@@ -91,33 +91,33 @@ search:
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="torrents.php?cat="]
|
||||
selector: a[href*="torrents.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title_default:
|
||||
selector: table.torrentname td a[href^="details.php?id="]
|
||||
selector: table.torrentname td a[href*="details.php?id="]
|
||||
title:
|
||||
selector: a[title][href^="details.php?id="]
|
||||
selector: a[title][href*="details.php?id="]
|
||||
attribute: title
|
||||
optional: true
|
||||
default: "{{ .Result.title_default }}"
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
selector: a[href*="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
selector: a[href*="download.php?id="]
|
||||
attribute: href
|
||||
poster:
|
||||
selector: img.tooltip
|
||||
attribute: src
|
||||
selector: img[data-src]
|
||||
attribute: data-src
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["pic/imdb_pic/nophoto.gif", ""]
|
||||
date_elapsed:
|
||||
# time type: time elapsed (default)
|
||||
selector: td.rowfollow:nth-child(5) > span[title]
|
||||
selector: td.rowfollow:nth-child(4) > span[title]
|
||||
attribute: title
|
||||
optional: true
|
||||
filters:
|
||||
@@ -127,7 +127,7 @@ search:
|
||||
args: "yyyy-MM-dd HH:mm:ss zzz"
|
||||
date_added:
|
||||
# time added
|
||||
selector: td.rowfollow:nth-child(5):not(:has(span))
|
||||
selector: td.rowfollow:nth-child(4):not(:has(span))
|
||||
optional: true
|
||||
filters:
|
||||
- name: append
|
||||
@@ -137,13 +137,13 @@ search:
|
||||
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(6)
|
||||
selector: td.rowfollow:nth-child(5)
|
||||
seeders:
|
||||
selector: td.rowfollow:nth-child(7)
|
||||
selector: td.rowfollow:nth-child(6)
|
||||
leechers:
|
||||
selector: td.rowfollow:nth-child(8)
|
||||
selector: td.rowfollow:nth-child(7)
|
||||
grabs:
|
||||
selector: td.rowfollow:nth-child(9)
|
||||
selector: td.rowfollow:nth-child(8)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img.pro_free: 0
|
||||
@@ -158,4 +158,4 @@ search:
|
||||
img.pro_free2up: 2
|
||||
img.pro_2up: 2
|
||||
"*": 1
|
||||
# NexusPHP custom 22082802
|
||||
# NexusPHP v1.9.11 2025-11-02
|
||||
|
||||
@@ -1,208 +0,0 @@
|
||||
---
|
||||
id: ptvicomo
|
||||
name: PTVicomo
|
||||
description: "PTVicomo is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: zh-CN
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://ptvicomo.net/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 401, cat: Movies, desc: "电影"}
|
||||
- {id: 402, cat: TV, desc: "剧集"}
|
||||
- {id: 415, cat: TV, desc: "短剧"}
|
||||
- {id: 404, cat: TV/Documentary, desc: "纪录片"}
|
||||
- {id: 405, cat: TV/Anime, desc: "动漫"}
|
||||
- {id: 416, cat: TV/Other, desc: "儿童动画"}
|
||||
- {id: 403, cat: TV, desc: "综艺"}
|
||||
- {id: 409, cat: Audio, desc: "音乐"}
|
||||
- {id: 406, cat: Audio/Video, desc: "MV"}
|
||||
|
||||
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 PTVicomo 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.
|
||||
- name: info_activity
|
||||
type: info
|
||||
label: Account Inactivity
|
||||
default: "Account retention rules:<ol><li>Extreme User (county road) and above will be retained forever</li><li>Veteran User (rural rank) and above will be retained forever if parked</li><li>Users with a parked account will be banned if they do not log in for 0 consecutive days</li><li><li>Users with no traffic (ie, upload/download data are both 0) will be banned if they do not log in for 90 consecutive days.</li></ol>"
|
||||
|
||||
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("失败"))
|
||||
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 (working but not for douban)
|
||||
search_area: "{{ if or .Query.IMDBID .Query.DoubanID }}1{{ else }}0{{ end }}"
|
||||
# 0 AND, 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
|
||||
# site does not have posters enabled. just in case a future update.
|
||||
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
|
||||
# the number of comments do not show up despite user web settings option to enable, throws child count off by 1
|
||||
date_elapsed:
|
||||
# time type: time elapsed (default)
|
||||
selector: td.rowfollow:nth-child(3) 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(3):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(4)
|
||||
seeders:
|
||||
selector: td.rowfollow:nth-child(5)
|
||||
leechers:
|
||||
selector: td.rowfollow:nth-child(6)
|
||||
grabs:
|
||||
selector: td.rowfollow:nth-child(7)
|
||||
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:
|
||||
# 1 day (as seconds = 24 x 60 x 60)
|
||||
text: 86400
|
||||
description_verified:
|
||||
case:
|
||||
span[title="通过"], span[title="Allowed"]: "Verified:"
|
||||
span[title="未审"], span[title="Not reviewed"]: "Unverified:"
|
||||
span[title="拒绝"], span[title="Denied"]: "Banned:"
|
||||
description:
|
||||
selector: td.rowfollow:nth-child(2)
|
||||
remove: a, b, font, img, span
|
||||
filters:
|
||||
- name: prepend
|
||||
args: "{{ .Result.description_verified }} "
|
||||
# NexusPHP v1.8.13 2024-09-13 (custom)
|
||||
@@ -44,7 +44,7 @@ settings:
|
||||
- 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 Rain Web Site. Otherwise just leave it empty."
|
||||
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> on the RailgunPT Web Site. Otherwise just leave it empty."
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
|
||||
@@ -186,4 +186,4 @@ search:
|
||||
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
|
||||
minimumratio:
|
||||
text: 0.8
|
||||
# json UNIT3D 9.1.7
|
||||
# json UNIT3D 9.2.0
|
||||
|
||||
@@ -115,8 +115,6 @@ search:
|
||||
selector: details_link
|
||||
download:
|
||||
selector: download_link
|
||||
infohash:
|
||||
selector: info_hash
|
||||
poster:
|
||||
selector: meta.poster
|
||||
filters:
|
||||
@@ -186,4 +184,4 @@ search:
|
||||
minimumseedtime:
|
||||
# 7 days (as seconds = 7 x 24 x 60 x 60)
|
||||
text: 604800
|
||||
# json UNIT3D 9.1.5
|
||||
# json UNIT3D 9.2.0
|
||||
|
||||
@@ -8,39 +8,40 @@ language: ru-RU
|
||||
type: semi-private
|
||||
encoding: windows-1251
|
||||
followredirect: true
|
||||
# alternate TLDs are: buzz, homes, mom, online, shop, top and xyz
|
||||
links:
|
||||
- https://dec07.rudub.world/
|
||||
- https://dec20.rudub.bet/
|
||||
legacylinks:
|
||||
- https://nov22.rudub.pics/
|
||||
- http://nov23.rudub.pics/
|
||||
- https://nov23.rudub.pics/
|
||||
- http://nov24.rudub.pics/
|
||||
- https://nov24.rudub.pics/
|
||||
- http://nov25.rudub.world/
|
||||
- https://nov25.rudub.world/
|
||||
- http://nov26.rudub.world/
|
||||
- https://nov26.rudub.world/
|
||||
- http://nov27.rudub.world/
|
||||
- https://nov27.rudub.world/
|
||||
- http://nov28.rudub.world/
|
||||
- https://nov28.rudub.world/
|
||||
- http://nov29.rudub.world/
|
||||
- https://nov29.rudub.world/
|
||||
- http://nov30.rudub.world/
|
||||
- https://nov30.rudub.world/
|
||||
- http://dec01.rudub.world/
|
||||
- https://dec01.rudub.world/
|
||||
- http://dec02.rudub.world/
|
||||
- https://dec02.rudub.world/
|
||||
- http://dec03.rudub.world/
|
||||
- https://dec03.rudub.world/
|
||||
- http://dec04.rudub.world/
|
||||
- https://dec04.rudub.world/
|
||||
- http://dec05.rudub.world/
|
||||
- https://dec05.rudub.world/
|
||||
- http://dec06.rudub.world/
|
||||
- https://dec06.rudub.world/
|
||||
- http://dec07.rudub.world/
|
||||
- https://dec07.rudub.world/
|
||||
- http://dec08.rudub.world/
|
||||
- https://dec08.rudub.world/
|
||||
- https://dec08.rudub.bet/
|
||||
- http://dec09.rudub.bet/
|
||||
- https://dec09.rudub.bet/
|
||||
- http://dec10.rudub.bet/
|
||||
- https://dec10.rudub.bet/
|
||||
- http://dec11.rudub.bet/
|
||||
- https://dec11.rudub.bet/
|
||||
- http://dec12.rudub.bet/
|
||||
- https://dec12.rudub.bet/
|
||||
- http://dec13.rudub.bet/
|
||||
- https://dec13.rudub.bet/
|
||||
- http://dec14.rudub.bet/
|
||||
- https://dec14.rudub.bet/
|
||||
- http://dec15.rudub.bet/
|
||||
- https://dec15.rudub.bet/
|
||||
- http://dec16.rudub.bet/
|
||||
- https://dec16.rudub.bet/
|
||||
- http://dec17.rudub.bet/
|
||||
- https://dec17.rudub.bet/
|
||||
- http://dec18.rudub.bet/
|
||||
- https://dec18.rudub.bet/
|
||||
- http://dec19.rudub.bet/
|
||||
- https://dec19.rudub.bet/
|
||||
- http://dec20.rudub.bet/
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: TV, desc: "TV"}
|
||||
|
||||
@@ -39,7 +39,7 @@ settings:
|
||||
- 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 Rain Web Site. Otherwise just leave it empty."
|
||||
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> on the SBPT Web Site. Otherwise just leave it empty."
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
|
||||
@@ -40,8 +40,8 @@ caps:
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, tmdbid]
|
||||
movie-search: [q, tmdbid]
|
||||
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
|
||||
movie-search: [q, imdbid, tmdbid]
|
||||
music-search: [q]
|
||||
book-search: [q]
|
||||
|
||||
@@ -104,7 +104,9 @@ search:
|
||||
name: "{{ .Keywords }}"
|
||||
seasonNumber: "{{ .Query.Season }}"
|
||||
episodeNumber: "{{ .Query.Ep }}"
|
||||
imdbId: "{{ .Query.IMDBIDShort }}"
|
||||
tmdbId: "{{ .Query.TMDBID }}"
|
||||
tvdbId: "{{ .Query.TVDBID }}"
|
||||
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
|
||||
sortField: "{{ .Config.sort }}"
|
||||
sortDirection: "{{ .Config.type }}"
|
||||
@@ -141,8 +143,12 @@ search:
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/90x135", ""]
|
||||
imdbid:
|
||||
selector: imdb_id
|
||||
tmdbid:
|
||||
selector: tmdb_id
|
||||
tvdbid:
|
||||
selector: tvdb_id
|
||||
genre:
|
||||
selector: meta.genres
|
||||
filters:
|
||||
@@ -206,4 +212,4 @@ search:
|
||||
minimumseedtime:
|
||||
# 10 days (as seconds = 10 x 24 x 60 x 60)
|
||||
text: 864000
|
||||
# json UNIT3D 9.1.5 (custom)
|
||||
# json UNIT3D 9.1.5
|
||||
|
||||
@@ -40,7 +40,7 @@ settings:
|
||||
- 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 cyanbug Web Site. Otherwise just leave it empty."
|
||||
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> on the Tangmen Web Site. Otherwise just leave it empty."
|
||||
- name: freeleech
|
||||
type: checkbox
|
||||
label: Search freeleech only
|
||||
|
||||
@@ -205,6 +205,7 @@ search:
|
||||
selector: size
|
||||
files:
|
||||
selector: num_files
|
||||
optional: true
|
||||
seeders:
|
||||
selector: seeders
|
||||
leechers:
|
||||
|
||||
@@ -10,20 +10,20 @@ links:
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 129, cat: Movies/HD, desc: "Hd DVD"}
|
||||
- {id: 123, cat: Movies/HD, desc: "MKV/X265"}
|
||||
- {id: 129, cat: Movies/HD, desc: "HD MKV"}
|
||||
- {id: 123, cat: Movies/HD, desc: "X265/HEVC"}
|
||||
- {id: 130, cat: Movies/UHD, desc: "4K Films"}
|
||||
- {id: 10, cat: Movies/DVD, desc: "Dvd rip"}
|
||||
- {id: 10, cat: Movies/DVD, desc: "Dvd Retail"}
|
||||
- {id: 111, cat: Movies/SD, desc: "HD2DVD / BR2DVD"}
|
||||
- {id: 125, cat: Movies/SD, desc: "Xvid rip"}
|
||||
- {id: 143, cat: Movies/HD, desc: "Divx 720P"}
|
||||
- {id: 125, cat: Movies/SD, desc: "HD rip"}
|
||||
- {id: 143, cat: Movies/HD, desc: "Bluray/UHD"}
|
||||
- {id: 132, cat: TV, desc: "complete seizoen serie"}
|
||||
- {id: 139, cat: TV, desc: "Losse afleveringen"}
|
||||
- {id: 140, cat: Books/EBook, desc: "E-Book"}
|
||||
- {id: 114, cat: Audio/MP3, desc: "Muziek MP3"}
|
||||
- {id: 105, cat: TV/Documentary, desc: "Documentaire"}
|
||||
- {id: 142, cat: Audio/Lossless, desc: "Muziek Flac"}
|
||||
- {id: 115, cat: PC, desc: "pc apps"}
|
||||
- {id: 105, cat: TV/Documentary, desc: "Documentaire"}
|
||||
- {id: 120, cat: PC/Games, desc: "Pc Games"}
|
||||
- {id: 106, cat: Other, desc: "Overig"}
|
||||
- {id: 131, cat: Books/Comics, desc: "Stripboeken"}
|
||||
|
||||
@@ -7,15 +7,12 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentqq397.com/
|
||||
- https://torrentegg85.com/
|
||||
- https://torrentqq399.com/
|
||||
- https://torrentegg86.com/
|
||||
legacylinks:
|
||||
- https://torrentegg70.com/
|
||||
- https://torrentegg71.com/
|
||||
- https://torrentqq382.com/
|
||||
- https://torrentegg72.com/
|
||||
- https://torrentegg73.com/
|
||||
- https://torrentqq383.com/
|
||||
- https://torrentqq384.com/
|
||||
- https://torrentegg74.com/
|
||||
- https://torrentqq385.com/
|
||||
@@ -40,6 +37,9 @@ legacylinks:
|
||||
- https://torrentegg83.com/
|
||||
- https://torrentqq396.com/
|
||||
- https://torrentegg84.com/
|
||||
- https://torrentqq397.com/
|
||||
- https://torrentegg85.com/
|
||||
- https://torrentqq398.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
||||
@@ -9,10 +9,8 @@ followredirect: true
|
||||
requestDelay: 2
|
||||
# to fetch current domain use https://tzip.top/
|
||||
links:
|
||||
- https://torrentsome224.com/
|
||||
- https://torrentsome226.com/
|
||||
legacylinks:
|
||||
- https://torrentsome209.com/
|
||||
- https://torrentsome210.com/
|
||||
- https://torrentsome211.com/
|
||||
- https://torrentsome212.com/
|
||||
- https://torrentsome213.com/
|
||||
@@ -26,6 +24,8 @@ legacylinks:
|
||||
- https://torrentsome221.com/
|
||||
- https://torrentsome222.com/
|
||||
- https://torrentsome223.com/
|
||||
- https://torrentsome224.com/
|
||||
- https://torrentsome225.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
||||
@@ -9,10 +9,8 @@ followredirect: true
|
||||
requestDelay: 2
|
||||
# to fetch current domain use https://tzip.top/
|
||||
links:
|
||||
- https://torrenttip205.top/
|
||||
- https://torrenttip207.top/
|
||||
legacylinks:
|
||||
- https://torrenttip190.top/
|
||||
- https://torrenttip191.top/
|
||||
- https://torrenttip192.top/
|
||||
- https://torrenttip193.top/
|
||||
- https://torrenttip194.top/
|
||||
@@ -26,6 +24,8 @@ legacylinks:
|
||||
- https://torrenttip202.top/
|
||||
- https://torrenttip203.top/
|
||||
- https://torrenttip204.top/
|
||||
- https://torrenttip205.top/
|
||||
- https://torrenttip206.top/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
||||
@@ -11,14 +11,15 @@ links:
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 29, cat: TV, desc: "Comedy"}
|
||||
- {id: 45, cat: TV, desc: "Current Affairs"}
|
||||
- {id: 5, cat: TV/Documentary, desc: "Documentary"}
|
||||
- {id: 11, cat: TV, desc: "Drama"}
|
||||
- {id: 14, cat: TV, desc: "Entertainment"}
|
||||
- {id: 19, cat: TV, desc: "Factual"}
|
||||
- {id: 43, cat: TV, desc: "Foreign"}
|
||||
- {id: 32, cat: TV, desc: "Kids/Family"}
|
||||
- {id: 32, cat: TV, desc: "Kids & Family"}
|
||||
- {id: 44, cat: Movies, desc: "Movies"}
|
||||
- {id: 45, cat: TV, desc: "News & Current Affairs"}
|
||||
- {id: 54, cat: TV, desc: "News"}
|
||||
- {id: 51, cat: Audio, desc: "Radio"}
|
||||
- {id: 52, cat: TV, desc: "Reality"}
|
||||
- {id: 30, cat: TV, desc: "Soaps"}
|
||||
|
||||
@@ -7,10 +7,10 @@ type: private
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
requestDelay: 4
|
||||
# status https://www.yggtorrent.org/engine/domains
|
||||
links:
|
||||
- https://www.yggtorrent.top/
|
||||
- https://www.yggtorrent.org/
|
||||
legacylinks:
|
||||
- https://www2.yggtorrent.si/
|
||||
- https://www.yggtorrent.li/
|
||||
- https://www4.yggtorrent.li/
|
||||
- https://www3.yggtorrent.nz/
|
||||
@@ -25,6 +25,7 @@ legacylinks:
|
||||
- https://www3.yggtorrent.qa/
|
||||
- https://www3.yggtorrent.cool/
|
||||
- https://www.ygg.re/
|
||||
- https://www.yggtorrent.top/
|
||||
|
||||
caps:
|
||||
# dont forget to update the search fields category case block
|
||||
|
||||
@@ -7,10 +7,10 @@ type: private
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
requestDelay: 4
|
||||
# status https://www.yggtorrent.org/engine/domains
|
||||
links:
|
||||
- https://www.yggtorrent.top/
|
||||
- https://www.yggtorrent.org/
|
||||
legacylinks:
|
||||
- https://www2.yggtorrent.si/
|
||||
- https://www.yggtorrent.li/
|
||||
- https://www4.yggtorrent.li/
|
||||
- https://www3.yggtorrent.nz/
|
||||
@@ -25,6 +25,7 @@ legacylinks:
|
||||
- https://www3.yggtorrent.qa/
|
||||
- https://www3.yggtorrent.cool/
|
||||
- https://www.ygg.re/
|
||||
- https://www.yggtorrent.top/
|
||||
|
||||
caps:
|
||||
# dont forget to update the search fields category case block
|
||||
@@ -168,11 +169,12 @@ settings:
|
||||
login:
|
||||
method: form
|
||||
path: /auth/login
|
||||
form: form.login-form
|
||||
form: form.auth-form
|
||||
inputs:
|
||||
id: "{{ .Config.username }}"
|
||||
pass: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: :root:contains("Bad credentials.")
|
||||
- selector: p.error-form
|
||||
- selector: a[href$="/user/disabled"]
|
||||
message:
|
||||
|
||||
@@ -7,7 +7,7 @@ type: public
|
||||
encoding: UTF-8
|
||||
# to fetch current domain use https://www.rantop.org/
|
||||
links:
|
||||
- https://www.zetorrents.rent/
|
||||
- https://ww1-zetorrents.town/
|
||||
legacylinks:
|
||||
# latest domains list
|
||||
- https://www.rantop.org/
|
||||
@@ -22,7 +22,6 @@ legacylinks:
|
||||
- https://www.site-torrent.com/
|
||||
- https://www.rantop.my/
|
||||
# actual legacylinks
|
||||
- https://www.zetorrents.pw/
|
||||
- https://www.zetorrents.tw/
|
||||
- https://www.zetorrents.in/
|
||||
- https://www.zetorrents.vg/
|
||||
@@ -37,6 +36,7 @@ legacylinks:
|
||||
- https://www.zetorrents.town/
|
||||
- https://zetorrents-proxy.site/
|
||||
- https://ww1-zetorrents.me/
|
||||
- https://www.zetorrents.rent/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
|
||||
@@ -9,7 +9,7 @@ type: public
|
||||
encoding: UTF-8
|
||||
# to fetch current domain use https://www.rantop.org/
|
||||
links:
|
||||
- https://www.zktorrent.rent/
|
||||
- https://www.zktorrent7.com/
|
||||
legacylinks:
|
||||
# latest domains list
|
||||
- https://www.rantop.org/
|
||||
@@ -25,8 +25,6 @@ legacylinks:
|
||||
- https://www.site-torrent.com/
|
||||
- https://www.rantop.my/
|
||||
# actual legacylinks
|
||||
- https://www.gktorrent.ke/
|
||||
- https://www.gktorrent.cv/
|
||||
- https://wvw-gktorrent.com/
|
||||
- https://www-gktorrent.com/
|
||||
- https://www.zktorrent.com/
|
||||
@@ -40,6 +38,8 @@ legacylinks:
|
||||
- https://www.zktorrent.town/
|
||||
- https://zktorrent-proxy.site/
|
||||
- https://ww1-zktorrent.me/
|
||||
- https://www.zktorrent.rent/
|
||||
- https://ww1-zktorrent.town/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
@@ -100,7 +100,7 @@ download:
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: "{{ if .Keywords }}recherche/{{ .Keywords }}{{ else }}{{ end }}"
|
||||
- path: "{{ if .Keywords }}recherche/{{ .Keywords }}{{ else }}home{{ end }}"
|
||||
keywordsfilters:
|
||||
# if searching for season packs swith S01 to saison 1 #9712
|
||||
- name: re_replace
|
||||
|
||||
@@ -23,12 +23,13 @@ namespace Jackett.Common.Indexers.Definitions
|
||||
public override string Id => "anilibria";
|
||||
public override string Name => "Anilibria";
|
||||
public override string Description => "Anilibria is a russian-language anime distribution platform";
|
||||
public override string SiteLink { get; protected set; } = "https://anilibria.top/";
|
||||
public override string SiteLink { get; protected set; } = "https://aniliberty.top/";
|
||||
public override string[] LegacySiteLinks => new[]
|
||||
{
|
||||
"https://www.anilibria.tv/",
|
||||
"https://anilibria.top/",
|
||||
};
|
||||
// API DOCS at https://anilibria.top/api/docs/v1
|
||||
// API DOCS at https://aniliberty.top/api/docs/v1
|
||||
private string ApiBase => $"{SiteLink}api/v1/";
|
||||
public override string Language => "ru-RU";
|
||||
public override string Type => "public";
|
||||
|
||||
@@ -27,10 +27,9 @@ namespace Jackett.Common.Indexers.Definitions
|
||||
public override string Id => "mejortorrent";
|
||||
public override string Name => "MejorTorrent";
|
||||
public override string Description => "MejorTorrent is a Public site - Hay veces que un torrent viene mejor! :)";
|
||||
public override string SiteLink { get; protected set; } = "https://www38.mejortorrent.eu/";
|
||||
public override string SiteLink { get; protected set; } = "https://www39.mejortorrent.eu/";
|
||||
public override string[] LegacySiteLinks => new[]
|
||||
{
|
||||
"https://www21.mejortorrent.zip/",
|
||||
"https://www22.mejortorrent.zip/",
|
||||
"https://www23.mejortorrent.zip/",
|
||||
"https://www24.mejortorrent.zip/",
|
||||
@@ -46,6 +45,7 @@ namespace Jackett.Common.Indexers.Definitions
|
||||
"https://www35.mejortorrent.eu/",
|
||||
"https://www36.mejortorrent.eu/",
|
||||
"https://www37.mejortorrent.eu/",
|
||||
"https://www38.mejortorrent.eu/",
|
||||
};
|
||||
public override string Language => "es-ES";
|
||||
public override string Type => "public";
|
||||
|
||||
@@ -1,293 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using AngleSharp.Html.Parser;
|
||||
using Jackett.Common.Extensions;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Models.IndexerConfig;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using WebClient = Jackett.Common.Utils.Clients.WebClient;
|
||||
|
||||
namespace Jackett.Common.Indexers.Definitions
|
||||
{
|
||||
[ExcludeFromCodeCoverage]
|
||||
public class ZonaQ : IndexerBase
|
||||
{
|
||||
public override string Id => "zonaq";
|
||||
public override string Name => "ZonaQ";
|
||||
public override string Description => "ZonaQ is a SPANISH Private Torrent Tracker for MOVIES / TV";
|
||||
public override string SiteLink { get; protected set; } = "https://www.zonaq.pw/";
|
||||
public override string Language => "es-ES";
|
||||
public override string Type => "private";
|
||||
|
||||
public override TorznabCapabilities TorznabCaps => SetCapabilities();
|
||||
|
||||
private string Login1Url => SiteLink + "index.php";
|
||||
private string Login2Url => SiteLink + "paDentro.php";
|
||||
private string Login3Url => SiteLink + "retorno/include/puerta_8_ajax.php";
|
||||
private string Login4Url => SiteLink + "retorno/index.php";
|
||||
private string SearchUrl => SiteLink + "retorno/2/index.php";
|
||||
|
||||
private new ConfigurationDataBasicLogin configData => (ConfigurationDataBasicLogin)base.configData;
|
||||
|
||||
public ZonaQ(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps, ICacheService cs)
|
||||
: base(configService: configService,
|
||||
client: wc,
|
||||
logger: l,
|
||||
p: ps,
|
||||
cacheService: cs,
|
||||
configData: new ConfigurationDataBasicLogin("For best results, change the 'Torrents por página' option to 100 in 'Mi Panel' page."))
|
||||
{
|
||||
}
|
||||
|
||||
private TorznabCapabilities SetCapabilities()
|
||||
{
|
||||
var caps = new TorznabCapabilities
|
||||
{
|
||||
TvSearchParams = new List<TvSearchParam>
|
||||
{
|
||||
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep
|
||||
},
|
||||
MovieSearchParams = new List<MovieSearchParam>
|
||||
{
|
||||
MovieSearchParam.Q
|
||||
}
|
||||
};
|
||||
|
||||
caps.Categories.AddCategoryMapping("cat[]=1&subcat[]=1", TorznabCatType.MoviesDVD, "Películas/DVD");
|
||||
caps.Categories.AddCategoryMapping("cat[]=1&subcat[]=2", TorznabCatType.MoviesDVD, "Películas/BDVD + Autorías");
|
||||
caps.Categories.AddCategoryMapping("cat[]=1&subcat[]=3", TorznabCatType.MoviesBluRay, "Películas/BD");
|
||||
caps.Categories.AddCategoryMapping("cat[]=1&subcat[]=4", TorznabCatType.MoviesUHD, "Películas/BD 4K");
|
||||
caps.Categories.AddCategoryMapping("cat[]=1&subcat[]=5", TorznabCatType.Movies3D, "Películas/BD 3D");
|
||||
caps.Categories.AddCategoryMapping("cat[]=1&subcat[]=6", TorznabCatType.MoviesBluRay, "Películas/BD Remux");
|
||||
caps.Categories.AddCategoryMapping("cat[]=1&subcat[]=7", TorznabCatType.MoviesHD, "Películas/MKV");
|
||||
caps.Categories.AddCategoryMapping("cat[]=1&subcat[]=8", TorznabCatType.MoviesUHD, "Películas/MKV 4K");
|
||||
caps.Categories.AddCategoryMapping("cat[]=1&subcat[]=9", TorznabCatType.MoviesUHD, "Películas/BD Remux 4K");
|
||||
|
||||
caps.Categories.AddCategoryMapping("cat[]=2&subcat[]=1", TorznabCatType.MoviesDVD, "Animación/DVD");
|
||||
caps.Categories.AddCategoryMapping("cat[]=2&subcat[]=2", TorznabCatType.MoviesDVD, "Animación/BDVD + Autorías");
|
||||
caps.Categories.AddCategoryMapping("cat[]=2&subcat[]=3", TorznabCatType.MoviesBluRay, "Animación/BD");
|
||||
caps.Categories.AddCategoryMapping("cat[]=2&subcat[]=4", TorznabCatType.MoviesUHD, "Animación/BD 4K");
|
||||
caps.Categories.AddCategoryMapping("cat[]=2&subcat[]=5", TorznabCatType.Movies3D, "Animación/BD 3D");
|
||||
caps.Categories.AddCategoryMapping("cat[]=2&subcat[]=6", TorznabCatType.MoviesBluRay, "Animación/BD Remux");
|
||||
caps.Categories.AddCategoryMapping("cat[]=2&subcat[]=7", TorznabCatType.MoviesHD, "Animación/MKV");
|
||||
caps.Categories.AddCategoryMapping("cat[]=2&subcat[]=8", TorznabCatType.MoviesUHD, "Animación/MKV 4K");
|
||||
caps.Categories.AddCategoryMapping("cat[]=2&subcat[]=9", TorznabCatType.MoviesUHD, "Animación/BD Remux 4K");
|
||||
|
||||
caps.Categories.AddCategoryMapping("cat[]=3&subcat[]=1", TorznabCatType.AudioVideo, "Música/DVD");
|
||||
caps.Categories.AddCategoryMapping("cat[]=3&subcat[]=2", TorznabCatType.AudioVideo, "Música/BDVD + Autorías");
|
||||
caps.Categories.AddCategoryMapping("cat[]=3&subcat[]=3", TorznabCatType.AudioVideo, "Música/BD");
|
||||
caps.Categories.AddCategoryMapping("cat[]=3&subcat[]=4", TorznabCatType.AudioVideo, "Música/BD 4K");
|
||||
caps.Categories.AddCategoryMapping("cat[]=3&subcat[]=5", TorznabCatType.AudioVideo, "Música/BD 3D");
|
||||
caps.Categories.AddCategoryMapping("cat[]=3&subcat[]=6", TorznabCatType.AudioVideo, "Música/BD Remux");
|
||||
caps.Categories.AddCategoryMapping("cat[]=3&subcat[]=7", TorznabCatType.AudioVideo, "Música/MKV");
|
||||
caps.Categories.AddCategoryMapping("cat[]=3&subcat[]=8", TorznabCatType.AudioVideo, "Música/MKV 4K");
|
||||
caps.Categories.AddCategoryMapping("cat[]=3&subcat[]=9", TorznabCatType.AudioVideo, "Música/BD Remux 4K");
|
||||
|
||||
caps.Categories.AddCategoryMapping("cat[]=4&subcat[]=1", TorznabCatType.TVSD, "Series/DVD");
|
||||
caps.Categories.AddCategoryMapping("cat[]=4&subcat[]=2", TorznabCatType.TVSD, "Series/BDVD + Autorías");
|
||||
caps.Categories.AddCategoryMapping("cat[]=4&subcat[]=3", TorznabCatType.TVHD, "Series/BD");
|
||||
caps.Categories.AddCategoryMapping("cat[]=4&subcat[]=4", TorznabCatType.TVUHD, "Series/BD 4K");
|
||||
caps.Categories.AddCategoryMapping("cat[]=4&subcat[]=5", TorznabCatType.TVOther, "Series/BD 3D");
|
||||
caps.Categories.AddCategoryMapping("cat[]=4&subcat[]=6", TorznabCatType.TVHD, "Series/BD Remux");
|
||||
caps.Categories.AddCategoryMapping("cat[]=4&subcat[]=7", TorznabCatType.TVHD, "Series/MKV");
|
||||
caps.Categories.AddCategoryMapping("cat[]=4&subcat[]=8", TorznabCatType.TVUHD, "Series/MKV 4K");
|
||||
caps.Categories.AddCategoryMapping("cat[]=4&subcat[]=9", TorznabCatType.TVUHD, "Series/BD Remux 4K");
|
||||
|
||||
caps.Categories.AddCategoryMapping("cat[]=5&subcat[]=1", TorznabCatType.TVDocumentary, "Docus/DVD");
|
||||
caps.Categories.AddCategoryMapping("cat[]=5&subcat[]=2", TorznabCatType.TVDocumentary, "Docus/BDVD + Autorías");
|
||||
caps.Categories.AddCategoryMapping("cat[]=5&subcat[]=3", TorznabCatType.TVDocumentary, "Docus/BD");
|
||||
caps.Categories.AddCategoryMapping("cat[]=5&subcat[]=4", TorznabCatType.TVDocumentary, "Docus/BD 4K");
|
||||
caps.Categories.AddCategoryMapping("cat[]=5&subcat[]=5", TorznabCatType.TVDocumentary, "Docus/BD 3D");
|
||||
caps.Categories.AddCategoryMapping("cat[]=5&subcat[]=6", TorznabCatType.TVDocumentary, "Docus/BD Remux");
|
||||
caps.Categories.AddCategoryMapping("cat[]=5&subcat[]=7", TorznabCatType.TVDocumentary, "Docus/MKV");
|
||||
caps.Categories.AddCategoryMapping("cat[]=5&subcat[]=8", TorznabCatType.TVDocumentary, "Docus/MKV 4K");
|
||||
caps.Categories.AddCategoryMapping("cat[]=5&subcat[]=9", TorznabCatType.TVDocumentary, "Docus/BD Remux 4K");
|
||||
|
||||
caps.Categories.AddCategoryMapping("cat[]=6&subcat[]=1", TorznabCatType.OtherMisc, "Deportes y Otros/DVD");
|
||||
caps.Categories.AddCategoryMapping("cat[]=6&subcat[]=2", TorznabCatType.OtherMisc, "Deportes y Otros/BDVD + Autorías");
|
||||
caps.Categories.AddCategoryMapping("cat[]=6&subcat[]=3", TorznabCatType.OtherMisc, "Deportes y Otros/BD");
|
||||
caps.Categories.AddCategoryMapping("cat[]=6&subcat[]=4", TorznabCatType.OtherMisc, "Deportes y Otros/BD 4K");
|
||||
caps.Categories.AddCategoryMapping("cat[]=6&subcat[]=5", TorznabCatType.OtherMisc, "Deportes y Otros/BD 3D");
|
||||
caps.Categories.AddCategoryMapping("cat[]=6&subcat[]=6", TorznabCatType.OtherMisc, "Deportes y Otros/BD Remux");
|
||||
caps.Categories.AddCategoryMapping("cat[]=6&subcat[]=7", TorznabCatType.OtherMisc, "Deportes y Otros/MKV");
|
||||
caps.Categories.AddCategoryMapping("cat[]=6&subcat[]=8", TorznabCatType.OtherMisc, "Deportes y Otros/MKV 4K");
|
||||
caps.Categories.AddCategoryMapping("cat[]=6&subcat[]=9", TorznabCatType.OtherMisc, "Deportes y Otros/BD Remux 4K");
|
||||
|
||||
return caps;
|
||||
}
|
||||
|
||||
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
|
||||
{
|
||||
LoadValuesFromJson(configJson);
|
||||
try
|
||||
{
|
||||
await DoLogin();
|
||||
var results = await PerformQuery(new TorznabQuery());
|
||||
if (!results.Any())
|
||||
throw new Exception("Found 0 results in the tracker");
|
||||
|
||||
IsConfigured = true;
|
||||
SaveConfig();
|
||||
return IndexerConfigurationStatus.Completed;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
IsConfigured = false;
|
||||
throw new Exception("Login error: " + e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
|
||||
{
|
||||
var releases = new List<ReleaseInfo>();
|
||||
|
||||
var qc = new NameValueCollection
|
||||
{
|
||||
{"page", "torrents"},
|
||||
{"search", query.GetQueryString()},
|
||||
{"active", "0"}
|
||||
};
|
||||
var searchUrl = SearchUrl + "?" + qc.GetQueryString();
|
||||
|
||||
foreach (var cat in MapTorznabCapsToTrackers(query)) // categories are already encoded
|
||||
searchUrl += "&" + cat;
|
||||
|
||||
var response = await RequestWithCookiesAsync(searchUrl);
|
||||
var results = response.ContentString;
|
||||
if (results == null || !results.Contains("/index.php?action=logout;"))
|
||||
{
|
||||
logger.Info("ZonaQ re-login");
|
||||
await DoLogin(); // re-login
|
||||
response = await RequestWithCookiesAsync(searchUrl);
|
||||
results = response.ContentString;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var parser = new HtmlParser();
|
||||
using var doc = parser.ParseDocument(results);
|
||||
|
||||
var rows = doc.QuerySelectorAll("table.torrent_list > tbody > tr");
|
||||
foreach (var row in rows.Skip(1))
|
||||
{
|
||||
var qTitleLink = row.QuerySelector("a[href*=\"?page=torrent-details\"]");
|
||||
if (qTitleLink == null) // no results
|
||||
continue;
|
||||
|
||||
var title = qTitleLink.TextContent.Trim();
|
||||
title += " SPANiSH"; // fix for Radarr
|
||||
title = Regex.Replace(title, "4k", "2160p", RegexOptions.IgnoreCase);
|
||||
|
||||
var detailsStr = qTitleLink.GetAttribute("href");
|
||||
var details = new Uri(detailsStr);
|
||||
var link = new Uri(detailsStr.Replace("/index.php?page=torrent-details&", "/download.php?"));
|
||||
var qPoster = qTitleLink.GetAttribute("title");
|
||||
var poster = qPoster != null ? new Uri(qPoster) : null;
|
||||
|
||||
var publishDateStr = row.Children[4].InnerHtml.Split('>').Last();
|
||||
var publishDate = DateTime.ParseExact(publishDateStr, "dd/MM/yyyy", CultureInfo.InvariantCulture);
|
||||
var size = ParseUtil.GetBytes(row.Children[5].TextContent);
|
||||
var seeders = ParseUtil.CoerceInt(row.Children[6].TextContent);
|
||||
var leechers = ParseUtil.CoerceInt(row.Children[7].TextContent);
|
||||
var grabs = ParseUtil.CoerceInt(row.Children[8].TextContent);
|
||||
|
||||
var cat1 = row.Children[0].FirstElementChild.GetAttribute("href").Split('=').Last();
|
||||
var cat2 = row.Children[1].FirstElementChild.GetAttribute("href").Split('=').Last();
|
||||
var cat = MapTrackerCatToNewznab($"cat[]={cat1}&subcat[]={cat2}");
|
||||
|
||||
var dlVolumeFactor = row.QuerySelector("img[src*=\"/gold.png\"]") != null ? 0 :
|
||||
row.QuerySelector("img[src*=\"/silver.png\"]") != null ? 0.5 : 1;
|
||||
var ulVolumeFactor = row.QuerySelector("img[src*=\"/por3.gif\"]") != null ? 3 :
|
||||
row.QuerySelector("img[src*=\"/por2.gif\"]") != null ? 2 : 1;
|
||||
|
||||
var release = new ReleaseInfo
|
||||
{
|
||||
Title = title,
|
||||
Details = details,
|
||||
Guid = details,
|
||||
Link = link,
|
||||
PublishDate = publishDate,
|
||||
Poster = poster,
|
||||
Category = cat,
|
||||
Size = size,
|
||||
Grabs = grabs,
|
||||
Seeders = seeders,
|
||||
Peers = seeders + leechers,
|
||||
DownloadVolumeFactor = dlVolumeFactor,
|
||||
UploadVolumeFactor = ulVolumeFactor,
|
||||
MinimumRatio = 1,
|
||||
MinimumSeedTime = 259200 // 72 hours
|
||||
};
|
||||
|
||||
releases.Add(release);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
OnParseError(results, ex);
|
||||
}
|
||||
|
||||
return releases;
|
||||
}
|
||||
|
||||
private async Task DoLogin()
|
||||
{
|
||||
// The first page set the cookies and the session_id
|
||||
CookieHeader = "";
|
||||
var result = await RequestWithCookiesAsync(Login1Url, "");
|
||||
var parser = new HtmlParser();
|
||||
using var dom = parser.ParseDocument(result.ContentString);
|
||||
var sessionId = dom.QuerySelector("input#session_id")?.GetAttribute("value");
|
||||
if (string.IsNullOrWhiteSpace(sessionId))
|
||||
throw new ExceptionWithConfigData("Error getting the Session ID", configData);
|
||||
|
||||
await Task.Delay(3000);
|
||||
|
||||
// The second page send the login with the hash
|
||||
// The hash is reverse engineering from https://www.zonaq.pw/retorno/2/smf/Themes/smf_ZQ/scripts/script.js
|
||||
// doForm.hash_passwrd.value = hex_sha1(hex_sha1(doForm.user.value.php_to8bit().php_strtolower() + doForm.passwrd.value.php_to8bit()) + cur_session_id);
|
||||
var hashPassword = $"{(configData.Username.Value.ToLowerInvariant() + configData.Password.Value).SHA1Hash()}{sessionId}".SHA1Hash();
|
||||
|
||||
var pairs = new Dictionary<string, string> {
|
||||
{ "user", configData.Username.Value },
|
||||
{ "passwrd", configData.Password.Value },
|
||||
{ "hash_passwrd", hashPassword }
|
||||
};
|
||||
var headers = new Dictionary<string, string>
|
||||
{
|
||||
{"X-Requested-With", "XMLHttpRequest"}
|
||||
};
|
||||
result = await RequestWithCookiesAsync(Login2Url, method: RequestType.POST, data: pairs, headers: headers);
|
||||
var message = JObject.Parse(result.ContentString)["msg"]?.ToString();
|
||||
if (message == "puerta_2")
|
||||
{
|
||||
// The third page sets the cookie duration
|
||||
Thread.Sleep(3000);
|
||||
pairs = new Dictionary<string, string> {
|
||||
{ "passwd", "" },
|
||||
{ "cookielength", "43200" }, // 1 month
|
||||
{ "respuesta", "" }
|
||||
};
|
||||
result = await RequestWithCookiesAsync(Login3Url, method: RequestType.POST, data: pairs, headers: headers);
|
||||
message = JObject.Parse(result.ContentString)["msg"]?.ToString();
|
||||
}
|
||||
if (message != "last_door")
|
||||
throw new ExceptionWithConfigData($"Login error: {message}", configData);
|
||||
|
||||
// The forth page sets the last cookie
|
||||
Thread.Sleep(3000);
|
||||
await RequestWithCookiesAsync(Login4Url);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -277,6 +277,7 @@ namespace Jackett.Updater
|
||||
"Definitions/anime-timel.yml",
|
||||
"Definitions/animeclipse.yml",
|
||||
"Definitions/animeitalia.yml",
|
||||
"Definitions/animelovers-api.yml",
|
||||
"Definitions/animetime.yml",
|
||||
"Definitions/animetracker.yml",
|
||||
"Definitions/animeworld.yml", // switch to *-API #8682
|
||||
@@ -311,6 +312,7 @@ namespace Jackett.Updater
|
||||
"Definitions/bitnova.yml",
|
||||
"Definitions/bitofvalor.yml",
|
||||
"Definitions/bitsexy.yml",
|
||||
"Definitions/bitsexy-api.yml",
|
||||
"Definitions/bitspyder.yml",
|
||||
"Definitions/bitstream.yml",
|
||||
"Definitions/bittorrentam.yml",
|
||||
@@ -491,6 +493,7 @@ namespace Jackett.Updater
|
||||
"Definitions/heavens-hell.yml",
|
||||
"Definitions/hellastz.yml",
|
||||
"Definitions/hidden-palace.yml",
|
||||
"Definitions/homeporntorrents.yml",
|
||||
"Definitions/hon3yhd-net.yml",
|
||||
"Definitions/hon3yhd.yml",
|
||||
"Definitions/horriblesubs.yml",
|
||||
@@ -593,6 +596,7 @@ namespace Jackett.Updater
|
||||
"Definitions/nordicplus.yml",
|
||||
"Definitions/nostalgic.yml", // renamed to vhstapes
|
||||
"Definitions/ntelogo.yml",
|
||||
"Definitions/nusantarare.yml",
|
||||
"Definitions/nyaa-pantsu.yml",
|
||||
"Definitions/nyaapantsu.yml",
|
||||
"Definitions/nyaa.yml",
|
||||
@@ -638,11 +642,13 @@ namespace Jackett.Updater
|
||||
"Definitions/prostylex.yml",
|
||||
"Definitions/ps4-torrent.yml",
|
||||
"Definitions/pt99.yml",
|
||||
"Definitions/ptchina.yml",
|
||||
"Definitions/ptlsp.yml",
|
||||
"Definitions/ptmsg.yml",
|
||||
"Definitions/ptorrent.yml", // renamed to pornxlab
|
||||
"Definitions/purovicio.yml",
|
||||
"Definitions/puurhollands.yml",
|
||||
"Definitions/ptvicomo.yml",
|
||||
"Definitions/qbite.yml",
|
||||
"Definitions/qctorrent.yml",
|
||||
"Definitions/qxr.yml",
|
||||
|
||||
Reference in New Issue
Block a user