more updates march

This commit is contained in:
Nathan root
2026-03-01 17:38:47 +00:00
parent ceee62f62c
commit a085ba9714
810 changed files with 27066 additions and 6471 deletions

View File

@@ -198,12 +198,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-last-of-type(4)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-last-of-type(3)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-last-of-type(2)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0
@@ -221,4 +229,4 @@ search:
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.9.9 2025-10-02
# NexusPHP v1.9.13 2025-12-28

View File

@@ -143,12 +143,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0
@@ -169,4 +177,4 @@ search:
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.9.9 2025-10-02
# NexusPHP v2.2 2026-02-02

View File

@@ -8,11 +8,9 @@ encoding: UTF-8
requestDelay: 2
links:
# Send any content to 52btbtbt@gmail.com to get the latest address. or visit https://52btbt.icu/
- https://www.529070.xyz/
- https://www.529071.xyz/
- https://www.529072.xyz/
- https://www.529073.xyz/
legacylinks:
- https://www.529055.xyz/
- https://www.529057.xyz/
- https://www.529056.xyz/
- https://www.529058.xyz/
- https://www.52bt059.buzz/
@@ -27,6 +25,8 @@ legacylinks:
- https://www.529068.xyz/
- https://www.529069.xyz/
- https://www.529067.xyz/
- https://www.529070.xyz/
- https://www.529071.xyz/
caps:
categorymappings:

View File

@@ -131,9 +131,12 @@ search:
selector: table.browse.table.striped > tbody > tr:has(a[href^="download.php?torrent="])
fields: # some users (rank specific?) have an extra column (td:nth-child(4)) with bookmark features
categorydesc:
selector: img[src^="./pic/caticons"]
attribute: alt
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="]
remove: span.has-text-red
@@ -143,6 +146,9 @@ search:
download:
selector: a[href^="download.php?torrent="]
attribute: href
poster:
selector: img[src^="/img.php?"]
attribute: src
files:
selector: a[href^="filelist.php?id="]
date_day:
@@ -163,15 +169,15 @@ search:
date:
text: "{{ if or .Result.date_day .Result.date_year }}{{ or .Result.date_day .Result.date_year }}{{ else }}now{{ end }}"
size:
selector: td:nth-last-child(4) div:first-child
selector: td:nth-last-child(4) div[title^="Size"]
grabs:
selector: a[href^="snatches.php?id="]
seeders:
selector: a[title="Seeders"]
selector: a[title$="Seeders"]
optional: true
default: 0
leechers:
selector: a[title="Leechers"]
selector: a[title$="Leechers"]
optional: true
default: 0
downloadvolumefactor:

View File

@@ -172,12 +172,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0

View File

@@ -20,6 +20,7 @@ caps:
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
book-search: [q]
allowtvsearchimdb: true
settings:
- name: apikey
@@ -191,4 +192,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

View File

@@ -139,12 +139,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow.rowfollow:nth-child(6)
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0

View File

@@ -6,6 +6,8 @@ language: ru-RU
type: semi-private
encoding: UTF-8
links:
- https://animelayer.ru/
legacylinks:
- https://www.animelayer.ru/
caps:
@@ -40,7 +42,7 @@ settings:
dorama: Дорама
login:
path: login.php
path: layer/login/
method: form
form: form#loginForm
inputs:

View File

@@ -0,0 +1,122 @@
---
id: animenosekai
name: Anime No Sekai
description: "Anime No Sekai (ANSK) is a BRAZILIAN Private Torrent Tracker for ANIME"
language: pt-BR
type: private
encoding: windows-1252
links:
- https://www.ansktracker.com/
caps:
categorymappings:
- {id: 3, cat: Movies, desc: "Anime Movie"}
- {id: 2, cat: TV/Anime, desc: "Anime OVA"}
- {id: 1, cat: TV/Anime, desc: "Anime TV"}
- {id: 4, cat: TV, desc: "Doramas"}
- {id: 5, cat: Audio, desc: "Músicas"}
- {id: 6, cat: Other, desc: "Outros"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 5
options:
5: created
1: seeders
3: size
6: title
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
logout: no
error:
- selector: table:contains("Aviso!")
test:
path: index.php
selector: a[href$="/logout.php"]
download:
selectors:
- selector: a[href^="download.php/"]
attribute: href
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
freeleech: "{{ if .Config.freeleech }}1{{else}}{{end}}"
order: "{{ .Config.sort }}"
rows:
selector: tr#trTorrentRow
fields:
categorydesc:
selector: td:nth-child(1) img
attribute: alt
title:
selector: a[href*="details.php?id="]
details:
selector: a[href*="details.php?id="]
attribute: href
download:
selector: a[href*="details.php?id="]
attribute: href
date:
selector: td:nth-child(6)
filters:
- name: dateparse
args: "dd/MM/yyyy"
size:
selector: td:nth-child(7)
files:
selector: td:nth-child(4)
grabs:
selector: td:nth-child(8)
seeders:
selector: td:nth-child(9)
leechers:
selector: td:nth-child(10)
downloadvolumefactor:
case:
font[color="green"]:contains("[FL]"): 0
"*": 1
uploadvolumefactor_custom:
selector: font[color="red"]:contains("[x")
optional: true
filters:
- name: replace
args: ["x[", ""]
- name: replace
args: ["]", ""]
uploadvolumefactor:
case:
font[color="red"]:contains("[x"): "{{ .Result.uploadvolumefactor_custom }}"
"*": 1
minimumratio:
text: 0.25
# engine n/a

View File

@@ -28,8 +28,8 @@ caps:
modes:
search: [q]
tv-search: [q, season, ep, tvdbid, tmdbid]
movie-search: [q, tmdbid]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
book-search: [q]
@@ -45,6 +45,10 @@ settings:
type: checkbox
label: Search freeleech only
default: false
- name: tmdbidonly
type: checkbox
label: Disable IMDB and TVDB ID search (only support TMDB ID) to potentially improve Sonarr and Radarr results
default: false
- name: single_file_release_use_filename
type: checkbox
label: Use filename as title for single file releases
@@ -95,11 +99,11 @@ search:
# 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 }}" # disabled due to Prowlarr/Indexers#486
# episodeNumber: "{{ .Query.Ep }}" # disabled due to Prowlarr/Indexers#486
# imdbId: "{{ .Query.IMDBIDShort }}" # disabled due to #14776
# seasonNumber: "{{ .Query.Season }}" # not supported
# episodeNumber: "{{ .Query.Ep }}" # not supported
imdbId: "{{ if .Config.tmdbidonly }}{{ else }}{{ .Query.IMDBIDShort }}{{ end }}"
tmdbId: "{{ .Query.TMDBID }}"
tvdbId: "{{ .Query.TVDBID }}"
tvdbId: "{{ if .Config.tmdbidonly }}{{ else }}{{ .Query.TVDBID }}{{ end }}"
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
@@ -152,8 +156,8 @@ search:
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
0: "{{ .False }}"
1: "{{ .True }}"
description:
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:

View File

@@ -84,6 +84,8 @@ search:
filters:
- name: split
args: [",", -1]
- name: re_replace
args: ["1\\d{5}", "2000"]
year:
selector: year
optional: true

View File

@@ -0,0 +1,202 @@
---
id: arabicsource-api
name: ArabicSource (API)
description: "ArabicSource is an ARABIC Private Torrent Tracker for MOVIES / TV"
language: ar-SA
type: private
encoding: UTF-8
links:
- https://arabicsource.net/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "أفلام رسوم مدبلجة (Dubbed Animated Films)"}
- {id: 2, cat: Movies, desc: "أفلام الرسوم المدبلجة (Subtitled Animated Films)"}
- {id: 3, cat: Movies, desc: "الأفلام العربية (Arabic Films)"}
- {id: 4, cat: Movies, desc: "أفلام أجنبية (Foreign Films)"}
- {id: 5, cat: TV, desc: "مسلسلات رسوم مدبلجة (Dubbed Animated Series)"}
- {id: 6, cat: TV, desc: "مسلسلات رسوم مترجمة (Subtitled Animated Series)"}
- {id: 7, cat: TV, desc: "مسلسلات عربية (Arabic Series)"}
- {id: 8, cat: TV, desc: "مسرحيات (Plays)"}
- {id: 10, cat: Other, desc: "إسلاميات (Islamic Content)"}
- {id: 11, cat: Other, desc: "رمضانيات (Ramadan Content)"}
- {id: 12, cat: Other, desc: "منوعات (Variety)"}
- {id: 13, cat: Audio, desc: "صوتيات (Audio)"}
- {id: 14, cat: Movies, desc: "كرتون كلاسيك (Classic Cartoons)"}
- {id: 15, cat: Other, desc: "تورنت خام (Raw Torrents)"}
- {id: 20, cat: TV/Documentary, desc: "مسلسلات وثائقيات (Documentary Series)"}
- {id: 9, cat: Movies, desc: "أفلام وثائقيات (Documentary Films)"}
- {id: 19, cat: Other, desc: "تورينتات ضائعة (Lost Torrents)"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
music-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://arabicsource.net/\" target=\"_blank\">ArabicSource</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: "The maximum number of days you can stay away from the site is 40 days, and only if you suspend the account, you will get a grace period of 180 days, but you must contact the administration in advance so that this is added to your personal account and you are not exposed to expulsion."
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
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 }}"
minimumratio:
text: 1.05
# json UNIT3D 9.2.0

View File

@@ -42,6 +42,7 @@ settings:
caps:
categorymappings:
# المرئيات العربية Arabic Movies
- {id: 117, cat: TV, desc: "ارمضان 2026 (Ramadan)"}
- {id: 14, cat: Movies, desc: "اسلامي (Islamic)"}
- {id: 19, cat: TV/Documentary, desc: "وثائقي (Documentary)"}
- {id: 70, cat: TV, desc: "تعليمي (Educational)"}
@@ -124,6 +125,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 +154,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

View File

@@ -0,0 +1,220 @@
---
id: arabscene
name: ArabScene
description: "ArabScene is an ARABIC Private Torrent Tracker for MOVIES / TV / GENERAL"
language: ar-AE
type: private
encoding: UTF-8
links:
- https://arabscene.me/
caps:
categorymappings:
- {id: 103, cat: Other, desc: "منوعات"}
- {id: 105, cat: Other, desc: " |-- مسرحيات"}
- {id: 104, cat: TV/Other, desc: " |-- اسلاميات "}
- {id: 120, cat: TV/Other, desc: " |-- توك شــو"}
- {id: 106, cat: PC/0day, desc: " |-- دورات تعليمية "}
- {id: 117, cat: TV/Foreign, desc: "مسلسلات مترجمة "}
- {id: 122, cat: TV/Foreign, desc: " |-- beIN "}
- {id: 123, cat: TV/Foreign, desc: " |-- OSN"}
- {id: 128, cat: TV/Foreign, desc: " |-- اجنبى"}
- {id: 160, cat: TV/Foreign, desc: " |-- تركى"}
- {id: 174, cat: TV/Foreign, desc: " |-- حلقات منفردة"}
- {id: 133, cat: TV/Foreign, desc: "مسلسلات مدبلجة"}
- {id: 136, cat: TV/Foreign, desc: " |-- هندى"}
- {id: 140, cat: TV/Foreign, desc: " |-- اجنبى"}
- {id: 173, cat: TV/Foreign, desc: " |-- تركى"}
- {id: 175, cat: TV/Foreign, desc: " |-- حلقات منفردة"}
- {id: 56, cat: TV, desc: "VIP"}
- {id: 81, cat: TV, desc: " |-- Full-Pack"}
- {id: 53, cat: TV/Foreign, desc: " |-- مسلسلات مدبلجة "}
- {id: 55, cat: TV, desc: " |-- مسلسلات عربية "}
- {id: 57, cat: Movies, desc: " |-- افلام عربية "}
- {id: 54, cat: TV/Anime, desc: " |-- الكرتون والانمى "}
- {id: 58, cat: TV/WEB-DL, desc: "Web-DL"}
- {id: 65, cat: Movies/WEB-DL, desc: " |-- Arabic Movies"}
- {id: 66, cat: TV/WEB-DL, desc: " |-- Arabic Series"}
- {id: 67, cat: TV/WEB-DL, desc: " |-- Dubbed Series"}
- {id: 73, cat: TV/WEB-DL, desc: " |-- Full-Pack "}
- {id: 113, cat: Movies/Foreign, desc: "افلام مترجمة "}
- {id: 121, cat: Movies/Foreign, desc: " |-- beIN"}
- {id: 125, cat: Movies/Foreign, desc: " |-- OSN"}
- {id: 115, cat: Movies/Foreign, desc: " |-- هندى "}
- {id: 114, cat: Movies/Foreign, desc: " |-- اجنبى"}
- {id: 161, cat: Movies/Foreign, desc: " |-- تركى"}
- {id: 143, cat: Movies/Foreign, desc: "افلام مدبلجة"}
- {id: 149, cat: Movies/Foreign, desc: " |-- beIN"}
- {id: 148, cat: Movies/Foreign, desc: " |-- OSN"}
- {id: 145, cat: Movies/Foreign, desc: " |-- هندى"}
- {id: 146, cat: Movies/Foreign, desc: " |-- اجنبى"}
- {id: 144, cat: Movies/Foreign, desc: " |-- تركى"}
- {id: 109, cat: Audio, desc: "الموسيقى العربية "}
- {id: 110, cat: Audio/Lossless, desc: " |-- FLAC"}
- {id: 111, cat: Audio/MP3, desc: " |-- Mp3"}
- {id: 112, cat: Audio, desc: " |-- كليبات"}
- {id: 99, cat: TV, desc: "المسلسلات العربية"}
- {id: 100, cat: TV, desc: " |-- مصرية"}
- {id: 139, cat: TV, desc: " |-- مغربية"}
- {id: 138, cat: TV, desc: " |-- تونسية"}
- {id: 172, cat: TV, desc: " |-- حلقات منفردة"}
- {id: 101, cat: TV, desc: " |-- خليجية"}
- {id: 102, cat: TV, desc: " |-- سورية"}
- {id: 84, cat: TV/Documentary, desc: "الوثائقيات "}
- {id: 85, cat: TV/Documentary, desc: " |-- مترجمة"}
- {id: 87, cat: TV/Documentary, desc: " |-- عربية "}
- {id: 89, cat: Movies, desc: "الافلام العربية"}
- {id: 95, cat: Movies, desc: " |-- 2000s"}
- {id: 137, cat: Movies, desc: " |-- 2010s"}
- {id: 49, cat: Movies, desc: " |-- 2020s"}
- {id: 98, cat: Movies, desc: " |-- 40s"}
- {id: 90, cat: Movies, desc: " |-- 50s"}
- {id: 91, cat: Movies, desc: " |-- 60s"}
- {id: 92, cat: Movies, desc: " |-- 70s"}
- {id: 93, cat: Movies, desc: " |-- 80s"}
- {id: 94, cat: Movies, desc: " |-- 90s"}
- {id: 4, cat: Movies/Other, desc: "الرسوم المتحركة"}
- {id: 5, cat: Movies/Other, desc: " |-- مترجم"}
- {id: 6, cat: Movies/Other, desc: " |-- مدبلج"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: added
options:
added: 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: "All inactive accounts will be deleted after 60 days of inactivity."
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: table:has(td.thead:contains("error"))
test:
path: index.php
selector: a[href*="logout.php"]
download:
before:
path: takethanks.php
method: post
inputs:
torrentid: "{{ .DownloadUri.Query.id }}"
search:
paths:
- path: browse.php
inputs:
do: search
keywords: "{{ .Keywords }}"
# t_name, t_description, t_both, t_uploader, t_genre
search_type: t_both
# does not support multi category searching so defaulting to all.
category: 0
include_dead_torrents: yes
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
rows:
selector: table#sortabletable > tbody > tr:has(span > a[href*="details.php?id="])
fields:
category:
selector: a[href*="?category="]
attribute: href
filters:
- name: querystring
args: category
title:
selector: a[href*="/details.php?id="]
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*="/details.php?id="]
attribute: href
download:
selector: a[href*="/download.php?id="]
attribute: href
date:
selector: td:nth-child(2) > div:nth-child(3)
filters:
- name: regexp
args: "(\\d{2}-\\d{2}-\\d{4} \\d{2}:\\d{2})"
- name: dateparse
args: "dd-MM-yyyy HH:mm"
size:
selector: td:nth-child(5)
grabs:
selector: td:nth-child(6)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
poster:
selector: div.tooltip-content > img[src*="/torrents/"]
attribute: src
downloadvolumefactor:
case:
img[src$="torrent_flags/freedownload.gif"]: 0
img[src$="torrent_flags/silverdownload.gif"]: 0.5
"*": 1
uploadvolumefactor:
case:
img[src$="torrent_flags/x2.gif"]: 2
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# TS Special Edition v.7.5

View File

@@ -0,0 +1,136 @@
---
id: arabtorrents-com
name: arab-torrents.com
description: "arab-torrents.com is an ARABIC Public Torrent Tracker for MOVIES / TV / GENERAL"
language: ar-AE
type: public
encoding: UTF-8
requestDelay: 2
links:
- https://arab-torrents.com/
caps:
categorymappings:
# categories containing '»' have a double space in search results
- {id: 14, cat: Other, desc: "اسلامي"}
- {id: 17, cat: Books, desc: "كتب"}
- {id: 19, cat: TV/Documentary, desc: "المرئيات العربية » وثائقي"}
- {id: 22, cat: PC, desc: "برامج عربية"}
- {id: 23, cat: PC, desc: "برامج عامه"}
- {id: 25, cat: Other, desc: "القران الكريم"}
- {id: 26, cat: Audio, desc: "اناشيد"}
- {id: 27, cat: Other, desc: "محاضرات"}
- {id: 41, cat: Movies, desc: "افلام عربيه"}
- {id: 44, cat: TV, desc: "مسلسلات عربية"}
- {id: 46, cat: Audio, desc: "منوع"}
- {id: 52, cat: Movies/Other, desc: "مسرحيات"}
- {id: 56, cat: TV/Sport, desc: "رياضي"}
- {id: 57, cat: TV/Foreign, desc: "مسلسلات آسيوية"}
- {id: 59, cat: Movies/Foreign, desc: "افلام آسيوية"}
- {id: 65, cat: Other, desc: "صور"}
- {id: 70, cat: Other, desc: "المرئيات العربية » تعليمي"}
- {id: 71, cat: TV/Foreign, desc: "مسلسلات مدبلجه عربي"}
- {id: 86, cat: Movies/Foreign, desc: "افلام هنديه"}
- {id: 88, cat: Movies/Foreign, desc: "افلام مدبلجه عربي"}
- {id: 89, cat: TV, desc: "مسلسلات عربية كامله"}
- {id: 90, cat: TV, desc: "برامج ومسابقات"}
- {id: 92, cat: Other, desc: "المرئيات الاجنبية » تعليمي"}
- {id: 93, cat: TV/Documentary, desc: "المرئيات الاجنبية » وثائقي"}
- {id: 98, cat: Movies/Other, desc: "انمي مدبلج عربي » افلام"}
- {id: 99, cat: Movies/Other, desc: "انمي مترجم عربي » افلام"}
- {id: 100, cat: TV/Anime, desc: "انمي مدبلج عربي » مسلسلات"}
- {id: 101, cat: TV/Anime, desc: "انمي مترجم عربي » مسلسلات"}
- {id: 102, cat: TV/Anime, desc: "انمي مدبلج عربي » حلقات"}
- {id: 103, cat: TV/Anime, desc: "انمي مترجم عربي » حلقات"}
- {id: 113, cat: TV/Foreign, desc: "مسلسلات لاتينية مترجم.مدبلج"}
- {id: 114, cat: Movies/Foreign, desc: "افلام لاتينية مترجم.مدبلج"}
- {id: 115, cat: TV/Foreign, desc: "مسلسلات تركية مترجم.مدبلج"}
- {id: 116, cat: Movies/Foreign, desc: "افلام تركية مترجم.مدبلج"}
- {id: 117, cat: TV, desc: "رمضان 2025"}
# categories not listed
- {id: missing1, cat: TV/Other, desc: "الكارتون الصامت والكلاسيكي"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings: []
search:
paths:
- path: index.php
- path: index.php
inputs:
p: 2
inputs:
page: torrents
search: "{{ .Keywords }}"
# does not support multi-category search
keywordsfilters:
- name: re_replace
args: ["^.{1,2}$", ""]
rows:
selector: table#torrents > tbody > tr
fields:
categorydesc:
selector: div.fcat
title:
selector: a[href^="/index.php?page=torrents&tid="] img
attribute: alt
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=torrents&tid="]
attribute: href
magnet:
selector: a[href^="magnet:?xt="]
attribute: href
poster:
selector: a:has(img.posterIcon)
attribute: href
tmdbid:
selector: a[href*="themoviedb.org/movie/"], a[href*="themoviedb.org/tv/"]
attribute: href
date:
text: now
size:
selector: div.fsize
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
description:
selector: td
remove: a[href^="magnet:?xt="], div
# engine n/a

View File

@@ -5,8 +5,6 @@ description: "ArenaBG is a BULGARIAN Semi-Private Torrent Tracker for 0DAY / GEN
language: bg-BG
type: semi-private
encoding: UTF-8
certificates:
- c25aba843f815e92d0da0bbe3191326d16a81a32 # expired 15th Oct 2025
links:
- https://arenabg.com/
legacylinks:

View File

@@ -23,16 +23,21 @@ caps:
music-search: [q]
settings:
- name: username
- name: apikey
type: text
label: Username
- name: password
type: password
label: Password
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://eiga.moi/\" target=\"_blank\">AsianCinema</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
@@ -55,140 +60,135 @@ settings:
default: "Your account will be automatically deleted from the database after 90 days of inactivity. If you return or visit the site with your account before that amount of time passes, then the inactivity timer will reset and your account will be fine for another 90 days.<br>Keep in mind that 'activity' is considered a visit to any page and that torrent traffic is not counted as account activity. In order to reset the inactivity timer all you have to do is visit a single page while logged in with your account. If your account is deleted for inactivity, please do not ask the site staff to un-delete it for you. The deletion is performed automatically by the server and, as such, your account cannot be recovered after it has been deleted."
login:
# note APIKEY is broken on this 5.3.0 site
path: login
method: form
form: form[action$="/login"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: on
selectorinputs:
_token:
selector: input[name="_token"]
attribute: value
path: /api/torrents
method: get
error:
- selector: div#ERROR_COPY
# test:
# path: /
# selector: a[href$="/logout"]
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
- selector: :root:contains("Account is Banned")
search:
paths:
- path: torrents/filter
# 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:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
search: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
imdb: "{{ .Query.IMDBIDShort }}"
tvdb: "{{ .Query.TVDBID }}"
tmdb: "{{ .Query.TMDBID }}"
sorting: "{{ .Config.sort }}"
direction: "{{ .Config.type }}"
qty: 100
freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
# can support genre search but you need to know the id. &genre[]=10759 for Action & Adventure
# does not have genre in results, they are on the details page.
# 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: table > tbody > tr
selector: data
attribute: attributes
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/(\\d+)"
selector: category_id
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
selector: a.view-torrent
download:
selector: a[href*="/download/"]
attribute: href
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: a.view-torrent
attribute: href
selector: details_link
download:
selector: download_link
poster:
selector: div.torrent-poster img
attribute: src
selector: meta.poster
filters:
- name: prepend
args: "https://images.weserv.nl/?url=" # for display on dashboard
- name: append
args: "&w=180&h=270" # for display on dashboard
- name: replace
args: ["https://images.weserv.nl/?url=https://via.placeholder.com/600x900&w=180&h=270", ""]
size:
selector: td:nth-last-child(4)
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
grabs:
selector: td:nth-last-child(1)
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
selector: imdb_id
tmdbid:
selector: a[href*="themoviedb.org/movie/"], a[href*="themoviedb.org/tv/"]
attribute: href
date:
selector: time
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
- name: re_replace
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前|sedan)", " ago"]
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(saniye|sekundit|sekunder|secondi|sekund|segundos|sekundami|секунд|secunde|secondes|Sekunden|секунди|seconden|秒前)", "seconds"]
- name: re_replace
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten|minuter)", "minutes"]
- name: re_replace
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟|分)", " minute"]
- name: re_replace
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden|timmar)", "hours"]
- name: re_replace
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間|timme)", " hour"]
- name: re_replace
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen|dagar)", "days"]
- name: re_replace
args: ["(?i)(gün|päev|dag|giorno|dzień|dia|den|день|zi|día|jour|Tag|ден|天|日)", " day"]
- name: re_replace
args: ["(?i)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken|veckor)", "weeks"]
- name: re_replace
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間|vecka)", " week"]
- name: re_replace
args: ["(?i) (ay)", "month"]
- name: re_replace
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden|månader)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月|månad)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
- name: re_replace
args: ["(?i)(För |und)", ""] # Misc removals
- name: timeago
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:
i[class*="fa-id-badge text-orange"]: 0 # 24 Hour FreeLeech From BON Store
i[class*="fa-trophy text-purple"]: 0 # Special FreeLeech For Certain User Groups
i[class*="fa-star text-bold"]: 0 # Freeleech From Token
i[class*="fa-coins text-bold"]: 0 # Freeleech From Token
i[class*="fa-globe text-blue"]: 0 # Global Freeleech
i[class*="fa-star text-gold"]: 0 # Freeleech
i[class*="fa-certificate text-pink"]: 0 # Featured Torrent
"*": 1
False: 1 # normal
True: 2 # double
uploadvolumefactor:
case:
i[class*="fa-gem text-green"]: 2 # Single Torrent Double Upload
i[class*="fa-globe text-green"]: 2 # Global Double Upload
i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
"*": 1
minimumratio:
text: 0.4
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
# UNIT3D 5.3.0
# json UNIT3D 9.2.0

View File

@@ -139,12 +139,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0

View File

@@ -0,0 +1,191 @@
---
id: aura4k-api
name: AURA4K (API)
description: "AURA4K is a Private Torrent Tracker for MOVIES / TV"
language: en-US
type: private
encoding: UTF-8
links:
- https://aura4k.net/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: TV, desc: "TV"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
allowtvsearchimdb: true
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://aura4k.net/\" target=\"_blank\">AURA4K</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: "Accounts with no activity (login/traffic) for more than 90 days may be automatically pruned."
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
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 72 hours OR 1:1
minimumratio:
text: 1.0
minimumseedtime:
# 72 hours (as seconds = 3 x 24 x 60 x 60)
text: 259200
# json UNIT3D 9.2.0

View File

@@ -0,0 +1,122 @@
---
id: axelbg
name: AxelBg
description: "AxelBg is a BULGARIAN Public Torrent Tracker for 0DAY / GENERAL"
language: bg-BG
type: public
encoding: windows-1251
links:
- https://axelbg.net/
caps:
categorymappings:
- {id: 10, cat: TV/Anime, desc: "Anime"}
- {id: 44, cat: Books/EBook, desc: "Books"}
- {id: 42, cat: Books/Comics, desc: "Cartoons"}
- {id: 43, cat: Books/Comics, desc: "Comics"}
- {id: 45, cat: Other, desc: "Education"}
- {id: 2, cat: Console, desc: "Games"}
- {id: 9, cat: Other, desc: "MISC"}
- {id: 8, cat: Movies/DVD, desc: "Movies/DVD-R"}
- {id: 49, cat: Movies/HD, desc: "Movies/Hi-Res"}
- {id: 3, cat: Movies/SD, desc: "Movies/VHS"}
- {id: 7, cat: Movies/SD, desc: "Movies/XviD"}
- {id: 4, cat: Audio, desc: "Music"}
- {id: 47, cat: Audio/Video, desc: "Music Videos"}
- {id: 46, cat: Audio/Lossless, desc: "Music/Lossless"}
- {id: 48, cat: Movies, desc: "Pictures"}
- {id: 1, cat: PC, desc: "Software"}
- {id: 5, cat: TV, desc: "TV Episodes"}
- {id: 50, cat: TV/HD, desc: "TV/Hi-Res"}
- {id: 6, cat: XXX, desc: "XXX"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- 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: ip_filtering
type: info
label: "IP Filtering"
default: "AxelBg blocks Non-Bulgarian IP addresses. No results likely means your IP was not accepted. Test by accessing <a href=\"https://axelbg.net/\" target=\"_blank\">AxelBg</a> WEB site with your browser."
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active, 1 incldead, 2 onlydead, 3 onlyfree, 4 only BGAudio, 5 only BGSubs
incldead: 1
# intitle, everywhere
place: intitle
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table > tbody > tr:has(div.rPreview)
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="]
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href*="download.php"]
attribute: href
poster:
# <div class="rPreview" onmouseover="showBimage(this, '25', 'https://img.imghosting.biz/524/cd08136cf63c733255cda9d51e566429.jpg')">
selector: div.rPreview
attribute: onmouseover
filters:
- name: regexp
args: (?=http)(.+?)\'
files:
selector: td:nth-last-child(7)
date:
# 2026-02-22<br />11:23:43
selector: td:nth-last-child(5)
filters:
- name: append
args: " +02:00" # EET
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
size:
selector: td:nth-last-child(4)
grabs:
selector: td:nth-last-child(3)
seeders:
selector: td:nth-last-child(2)
leechers:
selector: td:nth-last-child(1)
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -0,0 +1,155 @@
---
id: axeltorrents
name: AXEL Torrents
description: "AXEL Torrents is a BULGARIAN Semi-Private Torrent Tracker for MOVIES / TV / GENERAL"
language: bg-BG
type: semi-private
encoding: windows-1251
links:
- https://axelbg.net/
caps:
categorymappings:
- {id: 10, cat: TV/Anime, desc: "Anime"}
- {id: 44, cat: Books/EBook, desc: "Books"}
- {id: 42, cat: Books/Comics, desc: "Cartoons"}
- {id: 43, cat: Books/Comics, desc: "Comics"}
- {id: 45, cat: Other, desc: "Education"}
- {id: 2, cat: Console, desc: "Games"}
- {id: 9, cat: Other, desc: "MISC"}
- {id: 8, cat: Movies/DVD, desc: "Movies/DVD-R"}
- {id: 49, cat: Movies/HD, desc: "Movies/Hi-Res"}
- {id: 3, cat: Movies/SD, desc: "Movies/VHS"}
- {id: 7, cat: Movies/SD, desc: "Movies/XviD"}
- {id: 4, cat: Audio, desc: "Music"}
- {id: 47, cat: Audio/Video, desc: "Music Videos"}
- {id: 46, cat: Audio/Lossless, desc: "Music/Lossless"}
- {id: 48, cat: Movies, desc: "Pictures"}
- {id: 1, cat: PC, desc: "Software"}
- {id: 5, cat: TV, desc: "TV Episodes"}
- {id: 50, cat: TV/HD, desc: "TV/Hi-Res"}
- {id: 6, cat: XXX, desc: "XXX"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: 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: ip_filtering
type: info
label: "IP Filtering"
default: "AXEL Torrents blocks Non-Bulgarian IP addresses. No results likely means your IP was not accepted. Test by accessing <a href=\"https://axelbg.net/\" target=\"_blank\">AXEL Torrents</a> WEB site with your browser."
login:
path: login.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: div.login-note
test:
path: /
selector: a[href="/logout.php"]
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
# 0 active, 1 incldead, 2 onlydead, 3 onlyfree, 4 only BGAudio, 5 only BGSubs
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
# intitle, everywhere
place: "{{ if .Query.IMDBID }}everywhere{{ else }}intitle{{ end }}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table > tbody > tr.rollout:has(div.rPreview)
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="]
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href*="download.php"]
attribute: href
poster:
# <div class="rPreview" onmouseover="showBimage(this, '25', 'https://img.imghosting.biz/524/cd08136cf63c733255cda9d51e566429.jpg')">
selector: div.rPreview
attribute: onmouseover
filters:
- name: regexp
args: (?=http)(.+?)\'
files:
selector: td:nth-last-child(7)
date:
# 2026-02-22<br />11:23:43
selector: td:nth-last-child(5)
filters:
- name: append
args: " +02:00" # EET
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
size:
selector: td:nth-last-child(4)
grabs:
selector: td:nth-last-child(3)
seeders:
selector: td:nth-last-child(2)
leechers:
selector: td:nth-last-child(1)
downloadvolumefactor:
case:
img[src="/images/free.gif"]: 0
"*": 1
uploadvolumefactor:
text: 1
minimumseedtime:
# 1 day (as seconds = 24 x 60 x 60)
text: 86400
description:
selector: em
# engine n/a (based on NexusPHP)

View File

@@ -128,6 +128,8 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: a[href$="dllist=1#seeders"]
optional: true

View File

@@ -10,33 +10,34 @@ links:
caps:
categorymappings:
- {id: 115, cat: PC, desc: "2Play! Official"}
- {id: 100, cat: Console, desc: "Anbernic"}
- {id: 15, cat: PC/Mobile-Android, desc: "Android"}
- {id: 35, cat: TV/Anime, desc: "Anime"}
- {id: 51, cat: PC/Mac, desc: "Apple"}
- {id: 3, cat: PC, desc: "Apps"}
- {id: 109, cat: PC, desc: "Attract"}
- {id: 64, cat: Audio/Audiobook, desc: "Audiobooks"}
- {id: 71, cat: Console, desc: "Batocera"}
- {id: 108, cat: Console, desc: "Bazpacks"}
- {id: 4, cat: Movies/BluRay, desc: "Blu-Ray"}
- {id: 112, cat: Console, desc: "Brojack & Laws"}
- {id: 42, cat: Console, desc: "CoinOPS Official"}
- {id: 65, cat: Console, desc: "CoinOps Unofficial"}
- {id: 22, cat: Console, desc: "CoinOps"}
- {id: 22, cat: Console, desc: "CoinOps Xbox"}
- {id: 63, cat: Books/Comics, desc: "Comics"}
- {id: 60, cat: Console, desc: "Core"}
- {id: 60, cat: Console, desc: "CORE"}
- {id: 72, cat: Console, desc: "CORE Community"}
- {id: 44, cat: Console, desc: "CP78"}
- {id: 16, cat: TV/Documentary, desc: "Docu"}
- {id: 41, cat: Console, desc: "Dragon"}
- {id: 5, cat: Books, desc: "EBooks"}
- {id: 80, cat: PC, desc: "Emulation Media"}
- {id: 61, cat: PC, desc: "emuxtras"}
- {id: 5, cat: Books, desc: "eBooks"}
- {id: 89, cat: PC, desc: "Ghostware"}
- {id: 84, cat: TV, desc: "GOG DRM FREE"}
- {id: 84, cat: TV, desc: "GOG"}
- {id: 77, cat: PC, desc: "Hyperspin"}
- {id: 34, cat: TV, desc: "Kids"}
- {id: 43, cat: Console, desc: "LB No Intro"}
- {id: 85, cat: PC, desc: "MAME Rom Sets"}
- {id: 33, cat: TV/Sport, desc: "MMA/Boxing"}
- {id: 107, cat: Console, desc: "KinHanK"}
- {id: 43, cat: Console, desc: "LaunchBox"}
- {id: 85, cat: PC, desc: "MAME"}
- {id: 32, cat: Movies, desc: "Movie Pack"}
- {id: 106, cat: Movies/UHD, desc: "Movie Pack 4K"}
- {id: 6, cat: Movies, desc: "Movies"}
@@ -46,32 +47,30 @@ caps:
- {id: 31, cat: Console, desc: "Nintendo"}
- {id: 59, cat: Console, desc: "P-R-U"}
- {id: 8, cat: PC/Games, desc: "PC Games"}
- {id: 50, cat: Console, desc: "PlayBox"}
- {id: 87, cat: Console, desc: "Playnite"}
- {id: 30, cat: Console, desc: "Playstation"}
- {id: 62, cat: PC, desc: "Raspberry Pi"}
- {id: 83, cat: PC, desc: "Retro eXo"}
- {id: 56, cat: PC, desc: "Retro Minis"}
- {id: 81, cat: PC, desc: "Retro Scene Releases"}
- {id: 67, cat: PC, desc: "Retrobat"}
- {id: 67, cat: PC, desc: "RetroBat"}
- {id: 88, cat: PC, desc: "RetroFE"}
- {id: 79, cat: PC, desc: "RGB-Pi"}
- {id: 76, cat: Console, desc: "RGS"}
- {id: 27, cat: PC, desc: "Roms and Emulators"}
- {id: 68, cat: PC, desc: "Schmoomer's"}
- {id: 57, cat: Console, desc: "Sega"}
- {id: 27, cat: PC, desc: "ROM Packs"}
- {id: 62, cat: PC, desc: "RPi"}
- {id: 81, cat: PC, desc: "Scene"}
- {id: 68, cat: PC, desc: "Schmoomer"}
- {id: 110, cat: Console, desc: "ScummVM"}
- {id: 57, cat: Console, desc: "SEGA"}
- {id: 74, cat: PC, desc: "Sleyk/SGC"}
- {id: 75, cat: Audio, desc: "Soundtracks"}
- {id: 29, cat: TV/Sport, desc: "Sport"}
- {id: 90, cat: PC, desc: "TeknoParrot"}
- {id: 97, cat: TV/Other, desc: "Tutorials"}
- {id: 9, cat: TV, desc: "TV Packs"}
- {id: 11, cat: TV, desc: "TV Shows"}
- {id: 97, cat: TV/Other, desc: "Video Courses"}
- {id: 75, cat: TV, desc: "Video Game Music"}
- {id: 73, cat: Console, desc: "Wolfanoz"}
- {id: 14, cat: TV/Sport, desc: "WWE"}
- {id: 26, cat: Console, desc: "Xbox"}
- {id: 26, cat: Console, desc: "XBOX"}
- {id: 12, cat: Console, desc: "XBOX360"}
- {id: 23, cat: XXX, desc: "xxx18+"}
- {id: 23, cat: XXX, desc: "XXX18+"}
modes:
search: [q]
@@ -185,4 +184,9 @@ search:
args: " +00:00" # GMT
- name: dateparse
args: "dd-MM-yyyy HH:mm zzz"
minimumratio:
text: 1.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# TS Special Edition v.8.0

View File

@@ -0,0 +1,186 @@
---
id: baozipt
name: baoziPT
description: "baoziPT is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://p.t-baozi.cc/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "电影/Movies"}
- {id: 402, cat: TV, desc: "剧集/TV Series"}
- {id: 403, cat: TV, desc: "综艺/TV Shows"}
- {id: 404, cat: TV/Documentary, desc: "纪录片/Documentaries"}
- {id: 405, cat: TV/Anime, desc: "动漫/Anime"}
- {id: 406, cat: Audio/Video, desc: "音乐视频/Music Videos"}
- {id: 407, cat: TV/Sport, desc: "体育运动/Sports"}
- {id: 408, cat: Audio, desc: "高品质音频/HQ Audio"}
- {id: 409, cat: Other, desc: "其他/Other"}
- {id: 410, cat: TV, desc: "短剧/Playlet"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
music-search: [q]
book-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info_cookie
type: info_cookie
- 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 have their account 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 who have no traffic (i.e. upload/download data are both 0) will be deleted if they do not log in for 100 consecutive days.</li></ol>"
login:
# using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
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
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, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr: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
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
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: 2.0
minimumseedtime:
# 1 day (as seconds = 24 x 60 x 60)
text: 86400
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.9.11 2025-11-02

View File

@@ -25,8 +25,8 @@ caps:
- {id: 1, cat: Movies/HD, desc: "Film/HD/Hun"}
- {id: 8, cat: Movies/Foreign, desc: "Film/SD/Eng"}
- {id: 7, cat: Movies/SD, desc: "Film/SD/Hun"}
- {id: 10, cat: Movies/Foreign, desc: "Film/XviD/Eng"}
- {id: 9, cat: Movies/SD, desc: "Film/XviD/Hun"}
- {id: 47, cat: Movies/Foreign, desc: "Film/UHD/Eng"}
- {id: 46, cat: Movies/UHD, desc: "Film/UHD/Hun"}
- {id: 31, cat: Audio/Audiobook, desc: "Hangoskönyv"}
- {id: 42, cat: PC/Games, desc: "Játék/ISO"}
- {id: 43, cat: PC/Games, desc: "Játék/RIP"}
@@ -34,15 +34,17 @@ caps:
- {id: 29, cat: Books/EBook, desc: "Könyv/Hun"}
- {id: 44, cat: PC/ISO, desc: "Program/ISO"}
- {id: 45, cat: PC, desc: "Program/RIP"}
- {id: 49, cat: TV/Foreign, desc: "Sorozat/DVD/Eng"}
- {id: 48, cat: TV/SD, desc: "Sorozat/DVD/Hun"}
- {id: 14, cat: TV/Foreign, desc: "Sorozat/HD/Eng"}
- {id: 13, cat: TV/HD, desc: "Sorozat/HD/Hun"}
- {id: 16, cat: TV/Foreign, desc: "Sorozat/SD/Eng"}
- {id: 15, cat: TV/SD, desc: "Sorozat/SD/hun"}
- {id: 20, cat: Audio/Foreign, desc: "Zene/Mp3/Eng"}
- {id: 19, cat: Audio/MP3, desc: "Zene/Mp3/Hun"}
- {id: 38, cat: XXX/SD, desc: "XXX/HD"}
- {id: 41, cat: XXX/ImageSet, desc: "XXX/Kép"}
- {id: 40, cat: XXX/SD, desc: "XXX/SD"}
- {id: 20, cat: Audio/Foreign, desc: "Zene/Mp3/Eng"}
- {id: 19, cat: Audio/MP3, desc: "Zene/Mp3/Hun"}
modes:
search: [q]

View File

@@ -0,0 +1,259 @@
---
id: bigbbs
name: BigBBS
description: "BigBBS is a POLISH Private Torrent Tracker for MOVIES / TV / GENERAL"
language: pl-PL
type: private
encoding: UTF-8
links:
- https://bigbbs.eu/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Filmi"}
- {id: 14, cat: Movies/SD, desc: "Filmi DivX / XviD"}
- {id: 41, cat: Movies/HD, desc: "Filmi x264"}
- {id: 40, cat: Movies, desc: "Filmi Al / Lektor Amatorski"}
- {id: 39, cat: Movies/BluRay, desc: "Filmi BluRay"}
- {id: 147, cat: Movies, desc: "Filmi Xmas"}
- {id: 37, cat: Movies/DVD, desc: "Filmi DVD 5 / 9"}
- {id: 52, cat: Movies/3D, desc: "Filmi 3D"}
- {id: 17, cat: Movies/HD, desc: "Filmi HD 1080p , 720p"}
- {id: 99, cat: Movies/HD, desc: "Filmi x265"}
- {id: 62, cat: XXX, desc: "Filmi XXX"}
- {id: 16, cat: Movies/SD, desc: "Filmi CAM / TS"}
- {id: 65, cat: Movies/HD, desc: "Filmi Rmvb"}
- {id: 66, cat: Movies, desc: "Filmi TV RIP"}
- {id: 84, cat: TV/Documentary, desc: "Filmi Dokumentalne"}
- {id: 100, cat: Movies, desc: "Filmi Seriale"}
- {id: 103, cat: Movies, desc: "Filmi FILMY GSM / PDA"}
- {id: 107, cat: Movies/UHD, desc: "Filmi 4K-UHD"}
- {id: 109, cat: Movies, desc: "Filmi Biblijny"}
- {id: 113, cat: Movies, desc: "Filmi Prawniczy"}
- {id: 61, cat: Movies, desc: "Bajki"}
- {id: 106, cat: Books/Comics, desc: "Manga"}
- {id: 53, cat: TV/Anime, desc: "Anime"}
- {id: 56, cat: TV, desc: "TV"}
- {id: 57, cat: TV, desc: "TV BOXSETS"}
- {id: 58, cat: TV, desc: "TV EPIZODY"}
- {id: 6, cat: PC, desc: "Aplikacje"}
- {id: 18, cat: PC/0day, desc: "Aplikacje Windows"}
- {id: 64, cat: PC/Mobile-Other, desc: "Aplikacje GSM/PDA"}
- {id: 19, cat: PC/Mac, desc: "Aplikacje Macintosh"}
- {id: 42, cat: PC, desc: "Aplikacje Linux"}
- {id: 63, cat: TV/Sport, desc: "Sport"}
- {id: 7, cat: Audio, desc: "Muzyka"}
- {id: 20, cat: Audio/Video, desc: "Koncert"}
- {id: 144, cat: Audio, desc: "BiGBBS RMG (Rellase Music Group)"}
- {id: 21, cat: Audio/MP3, desc: "MP3"}
- {id: 38, cat: Audio/Lossless, desc: "FLAC"}
- {id: 135, cat: Audio, desc: "RetroRemix,ClubDance"}
- {id: 43, cat: Audio, desc: "Soundtrack"}
- {id: 136, cat: Audio, desc: "Rock"}
- {id: 80, cat: Audio/Lossless, desc: "lossless"}
- {id: 81, cat: Audio, desc: "MusicVid"}
- {id: 82, cat: Audio, desc: "Radio"}
- {id: 138, cat: Audio, desc: "Dyskografie Płytowe"}
- {id: 117, cat: Audio, desc: "Metal Rock"}
- {id: 139, cat: Audio, desc: "Kolekcje Muzyczne"}
- {id: 118, cat: Audio, desc: "Disco Polo"}
- {id: 119, cat: Audio, desc: "Clubbing"}
- {id: 120, cat: Audio, desc: "House"}
- {id: 125, cat: Audio, desc: "Elektro"}
- {id: 127, cat: Audio, desc: "Tranc"}
- {id: 128, cat: Audio, desc: "Dance"}
- {id: 130, cat: Audio, desc: "Opus"}
- {id: 129, cat: Audio, desc: "Pop"}
- {id: 131, cat: Audio, desc: "Italo"}
- {id: 133, cat: Audio, desc: "ClubDance"}
- {id: 134, cat: Audio, desc: "Retro Remixes"}
- {id: 146, cat: Audio, desc: "Techno"}
- {id: 132, cat: Audio, desc: "eurodance"}
- {id: 145, cat: Audio, desc: "Chillout"}
- {id: 83, cat: Audio, desc: "BLUES / REGGAE/ ROCK / METAL/CLASSIC/"}
- {id: 2, cat: Console, desc: "Gry"}
- {id: 3, cat: Console/PS3, desc: "Sony PS"}
- {id: 4, cat: Console/Wii, desc: "Wii"}
- {id: 26, cat: Console/XBox, desc: "XboX"}
- {id: 28, cat: PC/Games, desc: "Gry PC"}
- {id: 28, cat: Console/NDS, desc: "Nintendo"}
- {id: 47, cat: Books/EBook, desc: "EEbooki"}
- {id: 48, cat: Audio/Audiobook, desc: "Audio Book"}
- {id: 50, cat: Books/EBook, desc: "Ebook Pdf"}
- {id: 67, cat: Books/Comics, desc: "Komiksy"}
- {id: 59, cat: Other, desc: "BBRG"}
- {id: 39, cat: Movies/BluRay, desc: "Filmy BluRay 50/25/9"}
- {id: 88, cat: Movies/3D, desc: "Filmi 3D"}
- {id: 108, cat: Movies/BluRay, desc: "Filmi BluRay"}
- {id: 89, cat: Movies/HD, desc: "Filmi HD x264"}
- {id: 90, cat: Movies/HD, desc: "Filmi HD DivX / XviD"}
- {id: 91, cat: Movies/DVD, desc: "Filmi DVD 5 / DVD 9"}
- {id: 92, cat: Movies/SD, desc: "Filmi SD DivX / XviD"}
- {id: 93, cat: Movies/SD, desc: "Filmi SD x264"}
- {id: 96, cat: Movies, desc: "Filmi TVRip"}
- {id: 101, cat: Movies, desc: "Filmi Boxset"}
- {id: 98, cat: Movies, desc: "Filmi Seriale"}
- {id: 95, cat: Movies, desc: "Bajki"}
- {id: 97, cat: Audio/Video, desc: "Kabarety"}
- {id: 102, cat: Movies/HD, desc: "Filmi x265"}
- {id: 104, cat: Movies, desc: "Filmi FILMY GSM / PDA"}
- {id: 86, cat: Audio, desc: "Muzyka BBRG"}
- {id: 110, cat: Movies, desc: "Filmi Biblijny"}
- {id: 114, cat: Movies/UHD, desc: "Filmi 4K-UHD"}
- {id: 115, cat: Movies, desc: "Filmi Fan BBRG"}
- {id: 112, cat: Movies, desc: "Filmi ENG"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Filter freeleech only
default: false
- name: info_profile
type: info
label: Layout
default: "<ul><li>Only the English Classic profile is supported.</li><li>Make sure to set the <b>Torrent Listing (Lista torrentów)</b> option in your profile to <b>Classic (Klasyczny)</b></li><li>And set the <b>Language (Dil)</b> to <b>English</b></li><li>Using the <i>Modern</i> theme will prevent results, and using <i>Polski</i> will prevent upload dates.</li></ul>"
- name: sort
type: select
label: Sort requested from site
default: added
options:
added: created
seeders: seeders
size: size
- 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: "Account retention rules: Inactive accounts over 30 days will be warned by email about their inactivity. If within 24h a person does not log in to their account, they will lose them without the possibility of returning."
login:
path: ?p=home&pid=1
method: form
form: form#sls_form
submitpath: ajax/login.php
inputs:
action: login
loginbox_membername: "{{ .Config.username }}"
loginbox_password: "{{ .Config.password }}"
loginbox_remember: 1
selectorinputs:
securitytoken:
selector: "script:contains(\"stKey: \")"
filters:
- name: regexp
args: "stKey: \"(.+?)\","
error:
- selector: div.error
- selector: :contains("-ERROR-")
test:
path: ?p=home&pid=1
selector: div#member_info_bar
search:
paths:
- path: /
keywordsfilters:
- name: re_replace
args: ["[^a-zA-Z0-9]+", "%25"]
inputs:
p: torrents
pid: 32
$raw: "{{ range .Categories }}cid[]={{.}}&{{end}}"
keywords: "{{ .Keywords }}"
# name, description, both, uploader
search_type: name
"sortOptions[sortBy]": "{{ .Config.sort }}"
"sortOptions[sortOrder]": "{{ .Config.type }}"
# does not support imdbid search but has imdbid links in results.
error:
- selector: div.error:not(:contains("There are no results found."))
rows:
selector: "table#torrents_table_classic > tbody > tr:has(a[href*=\"?p=torrents&pid=10&action=download&tid=\"]){{ if .Config.freeleech }}:has(img[src$=\"/torrent_free.png\"]){{ else }}{{ end }}"
fields:
category:
selector: a[href*="?p=torrents&pid=10&cid="]
attribute: href
filters:
- name: querystring
args: cid
title:
selector: a[href*="?p=torrents&pid=10&action=details&tid="]
details:
selector: a[href*="?p=torrents&pid=10&action=details&tid="]
attribute: href
download:
selector: a[href*="?p=torrents&pid=10&action=download&tid="]
attribute: href
magnet:
selector: a[href^="magnet:?xt="]
attribute: href
optional: true
poster:
selector: a[href*="data/torrents/torrent_images/"]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
size:
selector: a[rel="torrent_size"]
grabs:
selector: a[rel="times_completed"]
seeders:
selector: a[rel="torrent_seeders"]
leechers:
selector: a[rel="torrent_leechers"]
date_day:
# Uploaded Today at 04:01:07 by
# Uploaded Yesterday at 06:37:21 by
selector: td.torrent_name:contains("day at ")
# auto adjusted by site account profile
optional: true
filters:
- name: regexp
args: "Uploaded (.+?) by"
- name: fuzzytime
date_year:
# Uploaded 17-04-2017 06:07:06 by
selector: td.torrent_name:not(:contains("day at "))
# auto adjusted by site account profile
optional: true
filters:
- name: regexp
args: "Uploaded (.+?) by"
- name: dateparse
args: "dd-MM-yyyy HH:mm:ss"
date:
text: "{{ if or .Result.date_day .Result.date_year }}{{ or .Result.date_day .Result.date_year }}{{ else }}now{{ end }}"
downloadvolumefactor:
case:
img[src$="/torrent_free.png"]: 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
minimumseedtime:
# 2 day (as seconds = 2 x 24 x 60 x 60)
text: 172800
# TSUE 2.2

View File

@@ -5,8 +5,12 @@ description: "Bitpalace is a HUNGARIAN Private Torrent Tracker for MOVIES / TV /
language: hu-HU
type: private
encoding: UTF-8
certificates:
- 87c00996262837ea785a43f1f1fc0a7b31956182 # using cert for .hu domain
links:
- https://bitpalace.cc/
legacylinks:
- https://bitpalace.hu/
caps:
categorymappings:
@@ -38,7 +42,7 @@ caps:
- {id: 10, cat: XXX/ImageSet, desc: "XXX KÉPEK"}
- {id: 11, cat: XXX/XviD, desc: "XXX XVID"}
- {id: 19, cat: Audio/Video, desc: "ZENE Klipp"}
- {id: 20, cat: Audio/MP3, desc: "ZENE MP3"}
- {id: 20, cat: Audio/MP3, desc: "ZENE"}
modes:
search: [q]

View File

@@ -10,6 +10,7 @@ links:
caps:
categorymappings:
- {id: 54, cat: XXX, desc: Ai Generated"}
- {id: 4, cat: XXX, desc: Amateur"}
- {id: 5, cat: XXX, desc: Anal"}
- {id: 6, cat: XXX, desc: Asian"}
@@ -191,4 +192,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)

View File

@@ -9,13 +9,13 @@ type: public
encoding: UTF-8
links:
- https://bitsearch.to/
- https://solidtorrents.to/
- https://solidtorrents.eu/
legacylinks:
- https://bitsearch.nocensor.cloud/
- https://bitsearch.mrunblock.bond/
- https://solidtorrents.net/
- https://solidtorrents.nocensor.cloud/
- https://solidtorrents.eu/
- https://solidtorrents.to/
caps:
categories:

View File

@@ -0,0 +1,121 @@
---
id: bluetorrents
name: BlueTorrents
description: "BlueTorrents is a Private Torrent Tracker for MOVIES / TV / MUSIC / GENERAL"
language: en-US
type: private
encoding: UTF-8
links:
- https://bluetorrents.com/
caps:
categorymappings:
# from https://bluetorrents.com/api/external?apikey=YOUR-API-KEY&t=caps
- {id: 2000, cat: Movies, desc: "Movies"}
- {id: 5000, cat: TV, desc: "TV Shows"}
- {id: 1000, cat: Console, desc: "Games"}
- {id: 3000, cat: Audio, desc: "Music"}
- {id: 4000, cat: PC/0day, desc: "Apps"}
- {id: 6000, cat: XXX, desc: "XXX"}
- {id: 8000, cat: Other, desc: "Other"}
- {id: 7000, cat: Books, desc: "Books"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, tmdbid]
music-search: [q]
book-search: [q]
allowtvsearchimdb: true
settings:
- name: apikey
type: text
label: API Key
- name: info_key
type: info
label: About your API key
default: "You can find your API Key by accessing the <a href=\"https://bluetorrents.com/settings\" target=\"_blank\">BlueTorrents Settings</a> page, and scrolling down to the <b>API keys</b> section."
- name: info_3x
type: info
label: Including 3X
default: "IF you want to see 3x torrents access your <a href=\"https://bluetorrents.com/settings\" target=\"_blank\">BlueTorrents Settings</a> page and tick the <b>Show NSFW content</b> checkbox."
- name: info_activity
type: info
label: Account Inactivity
default: "Accounts with no activity for 90+ days may be disabled."
search:
paths:
- path: api/external
response:
type: xml
inputs:
apikey: "{{ .Config.apikey }}"
t: "{{ if .Query.TMDBID }}movie{{ else }}{{ end }}{{ if or .Query.Season .Query.Ep }}tvsearch{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.TMDBID .Query.Season .Query.Ep }}{{ else }}search{{ end }}"
q: "{{ .Keywords }}"
cat: "{{ join .Categories \",\" }}"
season: "{{ .Query.Season }}"
ep: "{{ .Query.Ep }}"
imdbid: "{{ .Query.IMDBID }}"
tmdbid: "{{ .Query.TMDBID }}"
limit: 100
keywordsfilters:
# replace spaces between words with percent wildcard
- name: re_replace
args: ["\\W+", "%"]
rows:
selector: rss > channel > item
fields:
category:
selector: '[name="category"]'
attribute: value
title:
selector: title
details:
selector: link
download:
selector: enclosure
attribute: url
infohash:
selector: '[name="infohash"]'
attribute: value
imdbid:
selector: '[name="imdbid"]'
attribute: value
tmdbid:
selector: '[name="tmdbid"]'
attribute: value
date:
# Sun, 08 Feb 2026 03:32:24 -0800
selector: pubDate
filters:
- name: dateparse
args: "ddd, dd MMM yyyy HH:mm:ss zzz"
size:
selector: size
seeders:
selector: '[name="seeders"]'
attribute: value
leechers:
selector: '[name="peers"]'
attribute: value
grabs:
selector: '[name="grabs"]'
attribute: value
downloadvolumefactor:
selector: '[name="downloadvolumefactor"]'
attribute: value
uploadvolumefactor:
selector: '[name="uploadvolumefactor"]'
attribute: value
minimumratio:
text: 1.0
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# torznab xml

View File

@@ -24,6 +24,7 @@ caps:
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
allowtvsearchimdb: true
settings:
- name: apikey

View File

@@ -11,23 +11,22 @@ links:
caps:
categorymappings:
- {id: 17, cat: TV/Sport, desc: "4K"}
- {id: 15, cat: TV/Sport, desc: "3D"}
- {id: 9, cat: TV/Sport, desc: "Amateur - Full"}
- {id: 16, cat: TV/Sport, desc: "Blu-ray"}
- {id: 13, cat: TV/Sport, desc: "Career Set"}
- {id: 14, cat: TV/Sport, desc: "HD"}
- {id: 8, cat: TV/Sport, desc: "DVD"}
- {id: 10, cat: TV/Sport, desc: "Foreign - Excellent"}
- {id: 11, cat: TV/Sport, desc: "Foreign - Fair"}
- {id: 6, cat: TV/Sport, desc: "Foreign - Good"}
- {id: 12, cat: TV/Sport, desc: "Foreign - Poor"}
- {id: 1, cat: TV/Sport, desc: "Full - Excellent"}
- {id: 3, cat: TV/Sport, desc: "Full - Fair"}
- {id: 2, cat: TV/Sport, desc: "Full - Good"}
- {id: 4, cat: TV/Sport, desc: "Full - Poor"}
- {id: 14, cat: TV/Sport, desc: "HD"}
- {id: 7, cat: TV/Sport, desc: "Misc"}
- {id: 18, cat: TV/Sport, desc: "Instructional"}
- {id: 10, cat: TV/Sport, desc: "Foreign - Excellent"}
- {id: 11, cat: TV/Sport, desc: "Foreign - Fair"}
- {id: 6, cat: TV/Sport, desc: "Foreign - Good"}
- {id: 12, cat: TV/Sport, desc: "Foreign - Poor"}
- {id: 13, cat: TV/Sport, desc: "Career Set"}
- {id: 19, cat: TV/Documentary, desc: "Documentary"}
- {id: 9, cat: TV/Sport, desc: "Amateur - Full"}
- {id: 18, cat: TV/Sport, desc: "Instructional"}
- {id: 7, cat: TV/Sport, desc: "Misc"}
modes:
search: [q]
@@ -44,22 +43,22 @@ settings:
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: added
options:
added: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: DESC
options:
DESC: desc
ASC: asc
# - name: sort
# type: select
# label: Sort requested from site
# default: added
# options:
# added: 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_download
type: info
label: "Download Restrictions"
@@ -86,19 +85,32 @@ search:
paths:
# https://tc-boxing.com/browse.php?c16=1&c8=1&c14=1&incldead=1
# https://tc-boxing.com/browse.php?search=tyson&cat=0&incldead=1
# https://tc-boxing.com/browse.php?search=medina&cat=0&incldead=1&screen=1&champ=1&free=1
- path: browse.php
inputs:
$raw: "{{ if .Categories }}{{ range .Categories }}c{{.}}=1&{{end}}{{ else }}cat=0{{ end }}"
# 1 incldead, null active
# 0 active, 1 incldead, 2 onlydead
incldead: 1
# 1 freeleech only, null all
free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
search: "{{ .Keywords }}"
sort: "{{ .Config.sort }}"
d: "{{ .Config.type }}"
# dropped sorting as this prevents the dateheaders from results!
# sort: "{{ .Config.sort }}"
# d: "{{ .Config.type }}"
rows:
selector: table[border="1"][cellspacing="0"][cellpadding="5"] tr:has(a[href^="details.php?id="])
selector: table.torrenttable > tbody > tr:has(a[href^="details.php?id="])
filters:
- name: andmatch
dateheaders:
selector: td[colspan] > b
filters:
- name: append
args: " -07:00" # PDT
- name: replace
args: ["Torrents added ", ""]
- name: dateparse
args: "dddd, d. MMM, yyyy zzz"
fields:
category:
@@ -116,14 +128,7 @@ search:
selector: a[href^="details.php?id="]
attribute: href
files:
selector: td:nth-last-child(8)
date:
selector: td:nth-last-child(6)
filters:
- name: append
args: " -07:00" # PDT
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
selector: td:nth-last-child(7)
size:
selector: td:nth-last-child(5)
grabs:
@@ -143,4 +148,4 @@ search:
minimumseedtime:
# 3 day (as seconds = 3 x 24 x 60 x 60)
text: 259200
# engine n/a
# BT 4.0

View File

@@ -33,6 +33,8 @@ caps:
settings:
- name: info_category_8000
type: info_category_8000
- name: info_flaresolverr
type: info_flaresolverr
search:
paths:

View File

@@ -128,12 +128,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0

View File

@@ -0,0 +1,179 @@
---
id: c411
name: C411
description: "C411 (Community 411) is a FRENCH Private Torrent Tracker for MOVIES / TV / GENERAL"
language: fr-FR
type: private
encoding: UTF-8
links:
- https://c411.org/
legacylinks:
- https://staging-68d548c5bd4.c411.org/
caps:
categorymappings:
# from https://c411.org/api/torznab?apikey=YOUR-API-KEY&t=caps
- {id: 1000, cat: Console, desc: "Jeux Vidéo & Emulation & VR"}
- {id: 1030, cat: Console/Wii, desc: "Nintendo"}
- {id: 1040, cat: Console/XBox, desc: "Microsoft"}
- {id: 1080, cat: Console/PS4, desc: "Sony"}
- {id: 1090, cat: Console/Other, desc: "Jeux Autre & ROM/ISO"}
- {id: 2000, cat: Movies, desc: "Films & Vidéos"}
- {id: 2010, cat: Movies/Other, desc: "Films Collection"}
- {id: 2030, cat: Movies/Foreign, desc: "Films Foreign"}
- {id: 2050, cat: Movies/Other, desc: "Vidéo-clips"}
- {id: 2060, cat: Movies/Other, desc: "Films Animation"}
- {id: 2070, cat: Movies, desc: "Films Documentaire"}
- {id: 2080, cat: Movies/Other, desc: "Films Spectacle"}
- {id: 2090, cat: Movies/Other, desc: "Films Concert"}
- {id: 3000, cat: Audio, desc: "Audio"}
- {id: 3010, cat: Audio/MP3, desc: "Musique"}
- {id: 3030, cat: Audio/Audiobook, desc: "Audiobooks"}
- {id: 3050, cat: Audio/Other, desc: "Karaoké & Podcast Radio & Samples"}
- {id: 4000, cat: PC/0day, desc: "Applications & Windows & Nulled"}
- {id: 4030, cat: PC/0day, desc: "Linux & MacOS"}
- {id: 4040, cat: PC, desc: "Formation"}
- {id: 4050, cat: PC, desc: "Games-Linux & Games-MacOS & Games-Divers & Autre & Émulateur & GPS & Scripts PHP & CMS & Wordpress"}
- {id: 4060, cat: PC/Mobile-Android, desc: "Android Mobile & Smartphone & Tablette & Applications & Cartes"}
- {id: 4070, cat: PC/Mobile-iOS, desc: "iOS Smartphone & Tablette"}
- {id: 5000, cat: TV, desc: "Série TV"}
- {id: 5060, cat: TV/Sport, desc: "Sport"}
- {id: 5070, cat: TV/Anime, desc: "Animation Série"}
- {id: 5080, cat: TV/Documentary, desc: "Emission TV"}
- {id: 6000, cat: XXX, desc: "3X & 3X VR"}
- {id: 6010, cat: XXX/DVD, desc: "3X Films"}
- {id: 6050, cat: XXX/Other, desc: "3X Ebooks"}
- {id: 6060, cat: XXX/ImageSet, desc: "3X Images"}
- {id: 6070, cat: XXX/Other, desc: "Hentai"}
- {id: 6080, cat: XXX/Other, desc: "3X Jeux"}
- {id: 7000, cat: Books, desc: "Ebook"}
- {id: 7010, cat: Books/Mags, desc: "Presse"}
- {id: 7020, cat: Books/EBook, desc: "Livres"}
- {id: 7030, cat: Books/Comics, desc: "BDs & Comics & Manga"}
- {id: 8010, cat: Other/Misc, desc: "Imprimante 3D & Objets & Pack & Personnages"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q, imdbid]
music-search: [q]
book-search: [q]
settings:
- name: apikey
type: text
label: API Key
- name: info_key
type: info
label: About your API key
default: "You can find or generate a new API Key by accessing the <a href=\"https://c411.org/user/integrations\" target=\"_blank\">C411 Intégrations API</a> page."
- name: multilang
type: checkbox
label: Replace MULTi by another language in release name
default: false
- name: multilanguage
type: select
label: Replace MULTi by this language
default: FRENCH
options:
FRENCH: FRENCH
MULTi.FRENCH: MULTi.FRENCH
ENGLISH: ENGLISH
MULTi.ENGLISH: MULTi.ENGLISH
VOSTFR: VOSTFR
MULTi.VOSTFR: MULTi.VOSTFR
- name: vostfr
type: checkbox
label: Replace VOSTFR and SUBFRENCH with ENGLISH
default: false
- name: info_3x
type: info
label: Including 3X
default: "IF you want to see 3x torrents access your <a href=\"https://c411.org/user/settings\" target=\"_blank\">C411 Paramètres</a> page and tick the <b>Afficher le contenu XXX</b> checkbox."
login:
# returns "401 Unauthorized, check your credentials" if apikey is invalid
path: "api/torznab?apikey={{ .Config.apikey }}&t=caps"
method: get
search:
paths:
- path: api/torznab
response:
type: xml
inputs:
apikey: "{{ .Config.apikey }}"
t: "{{ if .Query.IMDBID }}movie{{ else }}{{ end }}{{ if or .Query.Season .Query.Ep }}tvsearch{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.Season .Query.Ep }}{{ else }}search{{ end }}"
q: "{{ .Keywords }}"
cat: "{{ join .Categories \",\" }}"
season: "{{ .Query.Season }}"
ep: "{{ .Query.Ep }}"
imdbid: "{{ .Query.IMDBID }}"
limit: 100
keywordsfilters:
# replace spaces between words with percent wildcard
- name: re_replace
args: ["\\W+", "%"]
rows:
selector: rss > channel > item
fields:
category:
selector: '[name="category"]'
attribute: value
title_phase1:
selector: title
title_vostfr:
text: "{{ .Result.title_phase1 }}"
filters:
- name: re_replace
args: ["(?i)\\b(vostfr|subfrench)\\b", "ENGLISH"]
title_phase2:
text: "{{ if .Config.vostfr }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_phase1 }}{{ end }}"
title_multilang:
text: "{{ .Result.title_phase2 }}"
filters:
- name: re_replace
args: ["(?i)\\b(MULTI(?!.*(?:FRENCH|ENGLISH|VOSTFR|VF2|VFF|VFQ|VOQ|VFI|VOF)))\\b", "{{ .Config.multilanguage }}"]
title:
text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase2 }}{{ end }}"
details:
selector: link
download:
selector: enclosure
attribute: url
infohash:
selector: '[name="infohash"]'
attribute: value
date:
# Sun, 18 Jan 2026 04:05:41 +0000
selector: pubDate
filters:
- name: dateparse
args: "ddd, dd MMM yyyy HH:mm:ss zzz"
size:
selector: size
seeders:
selector: '[name="seeders"]'
attribute: value
leechers:
selector: '[name="peers"]'
attribute: value
grabs:
selector: '[name="grabs"]'
attribute: value
downloadvolumefactor:
selector: '[name="downloadvolumefactor"]'
attribute: value
uploadvolumefactor:
selector: '[name="uploadvolumefactor"]'
attribute: value
minimumratio:
text: 1.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# torznab xml

View File

@@ -147,14 +147,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow.rowfollow:nth-child(6)
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0

View File

@@ -125,8 +125,6 @@ search:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
@@ -201,4 +199,4 @@ search:
minimumseedtime:
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 8.3.3 (custom)
# json UNIT3D 9.2.0 (custom)

View File

@@ -151,7 +151,7 @@ search:
- name: regexp
args: "showTorrentThumb\\('(.*?)', "
date:
selector: td:nth-last-child(8)
selector: td:nth-last-child(6)
filters:
- name: regexp
args: (\d{4}-\d{2}-\d{2}.\d{2}:\d{2}:\d{2})
@@ -161,8 +161,6 @@ search:
args: " +01:00" # CET
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
files:
selector: td:nth-last-child(7)
size:
selector: td:nth-last-child(5)
grabs:

View File

@@ -165,12 +165,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0

View File

@@ -153,12 +153,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow.rowfollow:nth-child(6)
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0
@@ -181,4 +189,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

View File

@@ -148,12 +148,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0

View File

@@ -145,8 +145,8 @@ search:
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
0: "{{ .False }}"
1: "{{ .True }}"
description:
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:

View File

@@ -10,14 +10,16 @@ links:
caps:
categorymappings:
- {id: 122, cat: Movies, desc: "Movie Klassiker"}
- {id: 124, cat: Movies, desc: "Movie Kids"}
- {id: 127, cat: Movies, desc: "Movie Pack"}
- {id: 138, cat: Movies/BluRay, desc: "Movie BluRay"}
- {id: 140, cat: Movies/3D, desc: "Movie 3D"}
- {id: 114, cat: Movies/DVD, desc: "Movie DVD-R"}
- {id: 28, cat: Movies/SD, desc: "Movie SD"}
- {id: 32, cat: Movies/HD, desc: "Movie HD"}
- {id: 28, cat: Movies/SD, desc: "Movie SD"}
- {id: 140, cat: Movies/3D, desc: "Movie 3D"}
- {id: 138, cat: Movies/BluRay, desc: "Movie BluRay"}
- {id: 127, cat: Movies, desc: "Movie Pack"}
- {id: 124, cat: Movies, desc: "Movie Kids"}
- {id: 142, cat: Movies, desc: "Movie Anime"}
- {id: 122, cat: Movies, desc: "Movie Klassiker"}
- {id: 141, cat: Movies, desc: "Movie Klassiker 4K/UHD"}
- {id: 114, cat: Movies/DVD, desc: "Movie DVD-R"}
- {id: 26, cat: Movies/UHD, desc: "Movie 4K"}
- {id: 133, cat: TV/Anime, desc: "Serien Anime"}
@@ -37,11 +39,17 @@ caps:
- {id: 15, cat: TV/Documentary, desc: "Doku SD"}
- {id: 136, cat: TV/Documentary, desc: "Doku Pack"}
- {id: 9, cat: PC, desc: "App Linux"}
- {id: 10, cat: PC/Mac, desc: "App Mac"}
- {id: 11, cat: PC/Mobile-Other, desc: "App Other"}
- {id: 134, cat: Other, desc: "Sonstiges Pack"}
- {id: 63, cat: Audio/Audiobook, desc: "Sonstiges A-Book"}
- {id: 96, cat: Books/EBook, desc: "Sonstiges E-Book"}
- {id: 69, cat: Other, desc: "Sonstiges Tutorial"}
- {id: 71, cat: Other/Misc, desc: "Sonstiges Other"}
- {id: 12, cat: PC/0day, desc: "App Win"}
- {id: 9, cat: PC, desc: "App Linux"}
- {id: 139, cat: PC/Mobile-Android, desc: "App Android Apps"}
- {id: 11, cat: PC/Mobile-Other, desc: "App Other"}
- {id: 10, cat: PC/Mac, desc: "App Mac"}
- {id: 16, cat: Console, desc: "Game Misc"}
- {id: 17, cat: PC/Games, desc: "Game PC"}
@@ -68,15 +76,8 @@ caps:
- {id: 125, cat: Audio, desc: "Music Kids"}
- {id: 61, cat: TV/Sport, desc: "Sport HD"}
- {id: 62, cat: TV/Sport, desc: "Sport SD"}
- {id: 116, cat: TV/Sport, desc: "Sport DVD-R"}
- {id: 117, cat: TV/Sport, desc: "Sport DVD-R"}
- {id: 134, cat: Other, desc: "Sonstiges Pack"}
- {id: 63, cat: Audio/Audiobook, desc: "Sonstiges A-Book"}
- {id: 96, cat: Books/EBook, desc: "Sonstiges E-Book"}
- {id: 69, cat: Other, desc: "Sonstiges Tutorial"}
- {id: 71, cat: Other/Misc, desc: "Sonstiges Other"}
- {id: 62, cat: TV/Sport, desc: "Sport SD"}
- {id: 131, cat: TV/UHD, desc: "Internt'l Serie UHD"}
- {id: 103, cat: Movies/SD, desc: "Internt'l Movie SD"}
@@ -89,11 +90,11 @@ caps:
- {id: 105, cat: TV/Documentary, desc: "Internt'l Doku"}
- {id: 104, cat: Other, desc: "Internt'l Misc"}
- {id: 73, cat: XXX/x264, desc: "XXX HD"}
- {id: 74, cat: XXX/Other, desc: "XXX Other"}
- {id: 75, cat: XXX/Pack, desc: "XXX Pack"}
- {id: 76, cat: XXX/SD, desc: "XXX SD"}
- {id: 73, cat: XXX/x264, desc: "XXX HD"}
- {id: 113, cat: XXX/DVD, desc: "XXX DVD-R"}
- {id: 75, cat: XXX/Pack, desc: "XXX Pack"}
modes:
search: [q]

View File

@@ -37,6 +37,7 @@ caps:
- {id: 80, cat: TV, desc: "Paketi"}
- {id: 49, cat: PC, desc: "Programi"}
- {id: 28, cat: Other, desc: "Razno"}
- {id: 85, cat: Movies, desc: "Remux"}
- {id: 62, cat: TV/SD, desc: "SD Boxset"}
- {id: 38, cat: TV/Sport, desc: "Sport"}
- {id: 39, cat: Audio/Video, desc: "Spotovi DVD"}

View File

@@ -211,4 +211,4 @@ search:
filters:
- name: prepend
args: "{{ .Result.description_verified }} "
# NexusPHP v1.8.14 2024-10-07
# NexusPHP v1.9.11 2025-11-02

View File

@@ -173,4 +173,4 @@ search:
minimumseedtime:
# 2 day (as seconds = 2 x 24 x 60 x 60)
text: 172800
# json DBy v0.96
# json DBy v0.96 (based on UNIT3D 6.3.0?)

View File

@@ -1,7 +1,7 @@
---
id: darkpeers-api
name: Darkpeers (API)
description: "Darkpeers is a NORDIC Private Torrent Tracker for MOVIES / TV"
description: "Darkpeers is a Private Torrent Tracker for MOVIES / TV / GENERAL"
language: en-US
type: private
encoding: UTF-8
@@ -17,6 +17,8 @@ caps:
- {id: 5, cat: PC, desc: "Software"}
- {id: 6, cat: XXX, desc: "XXX"}
- {id: 7, cat: Other, desc: "Assorted"}
- {id: 8, cat: Books, desc: "Books"}
- {id: 9, cat: TV/Anime, desc: "Anime"}
modes:
search: [q]
@@ -24,6 +26,7 @@ caps:
movie-search: [q, imdbid, tmdbid]
music-search: [q]
book-search: [q]
allowtvsearchimdb: true
settings:
- name: apikey

View File

@@ -30,6 +30,7 @@ caps:
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
allowrawsearch: true
settings:
- name: username

View File

@@ -30,11 +30,15 @@ settings:
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://desitorrents.tv/\" target=\"_blank\">DesiTorrents</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
default: "Find or Generate a new API Token by accessing your <a href=\"https://desitorrents.tv/\" target=\"_blank\">DesiTorrents</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
@@ -70,7 +74,7 @@ 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/v1/torrents/filter"
- path: api/v1/torrents/filter
response:
type: json
@@ -102,14 +106,19 @@ search:
fields:
category:
selector: category_id
title:
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:
@@ -124,18 +133,19 @@ search:
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)^None$", ""]
- 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: "{{ .Result.genre }}"
files:
selector: num_file
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
@@ -152,7 +162,12 @@ search:
args: "MM/dd/yyyy HH:mm:ss zzz"
size:
selector: size
downloadvolumefactor:
_featured:
selector: featured
case:
False: "{{ .False }}"
True: "{{ .True }}"
downloadvolumefactor_freeleech:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
@@ -162,16 +177,20 @@ search:
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
uploadvolumefactor:
# api returns 0=false, 1=true
downloadvolumefactor:
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
uploadvolumefactor_double_upload:
# api returns False, True
selector: double_upload
case:
0: 1 # normal
1: 2 # double
False: 1 # normal
True: 2 # double
uploadvolumefactor:
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
# global MR is 0.5 but torrents must be seeded for 7 days regardless of ratio
# minimumratio:
# text: 0.5
minimumseedtime:
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 6.5.0 (custom)
# json UNIT3D 9.2.0 (custom)

View File

@@ -62,6 +62,10 @@ settings:
MULTi POLISH: MULTi POLISH
- name: info_flaresolverr
type: info_flaresolverr
- name: info_limit
type: info
label: "Download Limit"
default: "If your downloads fail then access the site with your browser and check your messages, you've likely exceeded your limit."
login:
path: logowanie

View File

@@ -109,24 +109,27 @@ search:
fields:
category:
selector: a[href^="?cat="]
selector: a[href*="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
selector: 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[data-src]
attribute: data-src
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
@@ -153,12 +156,20 @@ search:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td:nth-child(5)
optional: true
default: 512MB
seeders:
selector: td:nth-child(6)
optional: true
default: 0
leechers:
selector: td:nth-child(7)
optional: true
default: 0
grabs:
selector: td:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0
@@ -184,4 +195,4 @@ search:
args: "cat={{ .Result.category_title }} - "
minimumratio:
text: 0.9
# NexusPHP v1.9.9 2025-10-02
# NexusPHP v1.9.14 2026-01-23

View File

@@ -0,0 +1,187 @@
---
id: dubhe
name: dubhe (天枢)
description: "dubhe (天枢) is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://dubhe.site/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "电影/Movies"}
- {id: 402, cat: TV, desc: "剧集/TV Series"}
- {id: 403, cat: TV, desc: "综艺/TV Shows"}
- {id: 404, cat: TV/Documentary, desc: "纪录片/Documentaries"}
- {id: 405, cat: TV/Anime, desc: "动漫/Anime"}
- {id: 406, cat: Audio/Video, desc: "音乐视频/Music Videos"}
- {id: 407, cat: TV/Sport, desc: "体育运动/Sports"}
- {id: 408, cat: Audio, desc: "高品质音频/HQ Audio"}
- {id: 409, cat: Other/Misc, desc: "其他/Other"}
- {id: 410, cat: Books, desc: "书籍/Books"}
- {id: 411, cat: Other, desc: "照片/Photo"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
music-search: [q]
book-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info_cookie
type: info_cookie
- 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 have their account 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 who have no traffic (i.e. upload/download data are both 0) will be deleted if they do not log in for 100 consecutive days.</li></ol>"
login:
# using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
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
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, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr: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
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
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: 2.0
minimumseedtime:
# 1 day (as seconds = 24 x 60 x 60)
text: 86400
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.9.11 2025-11-02

View File

@@ -6,8 +6,12 @@ language: en-US
type: public
encoding: UTF-8
requestDelay: 2
certificates:
- 1dad798f690521cfb37d6817b66f1f08fe8c8f36 # using CA from audiobookbay.lu (sister site)
links:
- http://ebb.la/ # site does not support https SSL_ERROR_BAD_CERT_DOMAIN
- https://ebb.la/
legacylinks:
- http://ebb.la/
caps:
categorymappings:
@@ -85,8 +89,8 @@ download:
search:
paths:
# with just 5 results per page, try to grab up to 25 results
# http://ebb.la/?s=teeth
# http://ebb.la/page/2/?s=teeth
# https://ebb.la/?s=teeth
# https://ebb.la/page/2/?s=teeth
- path: /
- path: "page/2/"
- path: "page/3/"
@@ -119,9 +123,15 @@ search:
details:
selector: a.detail
attribute: href
filters:
- name: replace
args: ["http:", "https:"]
download:
selector: a.detail
attribute: href
filters:
- name: replace
args: ["http:", "https:"]
poster:
selector: img[src^="http"]:not(img[src*="images/default_cover.jpg"])
attribute: src

View File

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

View File

@@ -5,12 +5,13 @@ description: "Empornium (EMP) is a Private Torrent Tracker for 3X"
language: en-US
type: private
encoding: UTF-8
# status: http://about.empornium.ph/
links:
- https://www.empornium.is/
- https://www.empornium.sx/ # site forces www.
legacylinks:
- https://www.empornium.me/
- https://empornium.sx/
- https://www.empornium.is/
caps:
categorymappings:

View File

@@ -5,12 +5,13 @@ description: "Empornium (EMP) is a Private Torrent Tracker for 3X. This indexer
language: en-US
type: private
encoding: UTF-8
# status: http://about.empornium.ph/
links:
- https://www.empornium.is/
- https://www.empornium.sx/ # site forces www.
legacylinks:
- https://www.empornium.me/
- https://empornium.sx/
- https://www.empornium.is/
caps:
categorymappings:

View File

@@ -116,8 +116,6 @@ search:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
@@ -191,4 +189,4 @@ search:
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# json UNIT3D 9.0.8
# json UNIT3D 9.2.0

View File

@@ -31,6 +31,7 @@ caps:
- {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: Episodes 4K UHD, cat: TV/UHD, desc: Episodes 4K UHD}
- {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}
@@ -60,7 +61,9 @@ caps:
- {id: Pictures, cat: XXX/ImageSet, desc: Adult Pictures}
- {id: Radio Shows, cat: Audio/Other, desc: Music Radio}
- {id: Raw, cat: TV/Anime, desc: Anime Raw}
- {id: Season Packs, cat: TV, desc: Season Packs}
- {id: Software, cat: PC/0day, desc: Software}
- {id: Sports, cat: TV/Sport, desc: Sports}
- {id: Subs, cat: TV/Anime, desc: Anime Subs}
- {id: Switch, cat: Console/Other, desc: Games Switch}
- {id: TV, cat: TV, desc: TV}

View File

@@ -6,7 +6,7 @@ language: en-US
type: private
encoding: UTF-8
certificates:
- 0e7f0e9c468938a43058d72c69ffdb9a98e24eab # Expired 26th Nov 2025
- f31a18c5e097512324e47b20f67ab4607553ae3c # Expired 24th Feb 2026
links:
- https://extremebits.net/

View File

@@ -0,0 +1,179 @@
---
id: exttorrents
name: EXT Torrents
description: "EXT Torrents is a Public torrent site for MOVIES / TV / GENERAL"
language: en-US
type: public
encoding: UTF-8
requestDelay: 5
links:
- https://ext.to/
- https://search.extto.com/
- https://extranet.torrentbay.st/
legacylinks:
- https://ext.unblockninja.com/
- https://t.extto.com/
- https://torrent.extto.com/
- https://site.extto.com/
- https://ext.torrentbay.to/
- https://extranet.torrentbay.to/
- https://extranet.torrentbay.net/
caps:
categorymappings:
- {id: "/anime/", cat: TV/Anime, desc: Anime}
- {id: "/anime//anime/audio-lossy/", cat: Audio, desc: Anime Audio Lossy}
- {id: "/anime//anime/audio-lossless/", cat: Audio/Lossless, desc: Anime Audio Lossless}
- {id: "/anime//anime/english-translated/", cat: TV/Anime, desc: Anime English Translated}
- {id: "/anime//anime/live-action-english/", cat: TV/Anime, desc: Anime Live Action English}
- {id: "/anime//anime/live-action-raw/", cat: TV/Anime, desc: Anime Live Action Raw}
- {id: "/anime//anime/raw/", cat: TV/Anime, desc: Anime Raw}
- {id: "/anime//anime/subs/", cat: TV/Anime, desc: Anime Subs}
- {id: "/anime//raw/", cat: TV/Anime, desc: Anime Raw}
- {id: "/applications/", cat: PC, desc: Apps}
- {id: "/applications//applications/android/", cat: PC/Mobile-Android, desc: Apps Android}
- {id: "/applications//applications/ios/", cat: PC/Mobile-iOS, desc: Apps iOS}
- {id: "/applications//applications/linux/", cat: PC, desc: Apps Linux}
- {id: "/applications//applications/mac/", cat: PC/Mac, desc: Apps Mac}
- {id: "/applications//applications/other-applications/", cat: PC/Mobile-Other, desc: Apps Other}
- {id: "/applications//applications/windows/", cat: PC/0day, desc: Apps Windows}
- {id: "/books/", cat: Books, desc: Books}
- {id: "/books//books/audio-books/", cat: Audio/Audiobook, desc: Books Audiobooks}
- {id: "/books//books/comics/", cat: Books/Comics, desc: Books Comics}
- {id: "/books//books/ebooks/", cat: Books/EBook, desc: Books Ebooks}
- {id: "/books//books/manga-english/", cat: Books/Comics, desc: Books Manga English}
- {id: "/books//books/manga-raw/", cat: Books/Comics, desc: Books Manga Raw}
- {id: "/games/", cat: PC/Games, desc: Games}
- {id: "/games//games/mac/", cat: PC/Mac, desc: Games Mac}
- {id: "/games//games/nds/", cat: Console/NDS, desc: Games NDS}
- {id: "/games//games/other-games/", cat: Console/Other, desc: Games Other}
- {id: "/games//games/pc-games/", cat: PC/Games, desc: Games PC}
- {id: "/games//games/ps3/", cat: Console/PS3, desc: Games PS3}
- {id: "/games//games/ps4/", cat: Console/PS4, desc: Games PS4}
- {id: "/games//games/psp/", cat: Console/PSP, desc: Games PSP}
- {id: "/games//games/switch/", cat: Console/Other, desc: Games Switch}
- {id: "/games//games/wii/", cat: Console/Wii, desc: Games Wii}
- {id: "/games//games/xbox360/", cat: Console/XBox 360, desc: Games Xbox360}
- {id: "/movies/", cat: Movies, desc: Movies}
- {id: "/movies//movies/3d-movies/", cat: Movies/3D, desc: Movies 3D}
- {id: "/movies//movies/bollywood/", cat: Movies, desc: Movies Bollywood}
- {id: "/movies//movies/documentary/", cat: Movies, desc: Movies Documentary}
- {id: "/movies//movies/dubbed-movies/", cat: Movies, desc: Movies Dubbed}
- {id: "/movies//movies/dvd/", cat: Movies/DVD, desc: Movies DVD}
- {id: "/movies//movies/highres-movies/", cat: Movies/HD, desc: Movies Highres}
- {id: "/movies//movies/movie-clips/", cat: Movies/Other, desc: Movies Movie clips}
- {id: "/movies//movies/mp4/", cat: Movies, desc: Movies MP4}
- {id: "/movies//movies/music-videos/", cat: Audio/Video, desc: Movies Music videos}
- {id: "/movies//movies/other-movies/", cat: Movies, desc: Movies Other Movies}
- {id: "/movies//movies/ultrahd/", cat: Movies/UHD, desc: Movies UltraHD}
- {id: "/music/", cat: Audio, desc: Music}
- {id: "/music//music/aac/", cat: Audio, desc: Music AAC}
- {id: "/music//music/lossless/", cat: Audio/Lossless, desc: Music Lossless}
- {id: "/music//music/mp3/", cat: Audio/MP3, desc: Music MP3}
- {id: "/music//music/other-music/", cat: Audio/Other, desc: Music Other}
- {id: "/music//music/radio-shows/", cat: Audio, desc: Music Radio Shows}
- {id: "/other/", cat: Other, desc: Other}
- {id: "/tv/", cat: TV, desc: TV}
- {id: "/tv//tv/episodes-hd/", cat: TV/HD, desc: TV Episodes HD}
- {id: "/tv//tv/episodes-sd/", cat: TV/SD, desc: TV Episodes SD}
- {id: "/tv//tv/episodes-4k-uhd/", cat: TV/UHD, desc: TV Episodes 4K}
- {id: "/tv//tv/big-season-packs/", cat: TV, desc: TV Big Season Packs}
- {id: "/tv//tv/season-packs/", cat: TV, desc: TV Season Packs}
- {id: "/tv//tv/sports/", cat: TV/Sport, desc: TV Sports}
- {id: "/video/", cat: XXX, desc: XXX Video}
- {id: "/xxx/", cat: XXX, desc: XXX}
- {id: "/xxx//xxx/games/", cat: XXX/Other, desc: XXX Games}
- {id: "/xxx//xxx/hentai/", cat: XXX/Other, desc: XXX Hentai}
- {id: "/xxx//xxx/magazines/", cat: XXX/Other, desc: XXX Magazines}
- {id: "/xxx//xxx/pictures/", cat: XXX/ImageSet, desc: XXX Pictures}
- {id: "/xxx//xxx/video/", cat: XXX, desc: XXX Video}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
book-search: [q]
settings:
- name: sort
type: select
label: Sort requested from site
default: age
options:
age: created
seed: seeders
size: size
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_flaresolverr
type: info_flaresolverr
search:
paths:
# https://ext.to/browse/?sort=age&order=desc&age=4&user_sort=1&with_adult=1
# https://ext.to/browse/?sort=age&order=desc&user_sort=1&q=wipeout&with_adult=1
# https://ext.to/browse/?imdb_id=tt2693776
- path: browse/
- path: browse/
inputs:
page: 2
followredirect: true
inputs:
q: "{{ .Keywords }}"
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
# 0=last 24 hours, 1=last 3 days, 2=last week, 3=last 2 weeks, 4=last month
age: "{{ if or .Keywords .Query.IMDBID }}{{ else }}0{{ end }}"
# familysafe 0=enabled, 1=disabled
with_adult: "{{ if .Query.IMDBID }}{{ else }}1{{ end }}"
imdb_id: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}"
user_sort: 1
rows:
selector: table.table-striped > tbody > tr
fields:
category_part1:
selector: td:nth-child(1) div div a:nth-child(2)
attribute: href
optional: true
category_part2:
selector: td:nth-child(1) div div a:nth-child(3)
attribute: href
optional: true
category_combined:
text: "{{ .Result.category_part1 }}{{ .Result.category_part2 }}"
optional: true
category:
text: "{{ if .Result.category_combined }}{{ .Result.category_combined }}{{ else }}/other/{{ end }}"
title:
selector: td:nth-child(1) div a
details:
selector: td:nth-child(1) div a
attribute: href
infohash:
selector: a.search-magnet-btn
attribute: data-hash
size:
selector: td:nth-child(2)
files:
selector: td:nth-child(3)
optional: true
default: 1
date:
selector: td:nth-child(4)
seeders:
selector: td:nth-child(5)
leechers:
selector: td:nth-child(6)
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -121,8 +121,6 @@ search:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
seeders:
selector: seeders
leechers:
@@ -167,4 +165,4 @@ search:
minimumseedtime:
# 2 day (as seconds = 2 x 24 x 60 x 60)
text: 172800
# json UNIT3D 9.1.5 (custom)
# json UNIT3D 9.2.0 (custom)

View File

@@ -24,6 +24,10 @@ caps:
book-search: [q]
settings:
- name: info_2fa
type: info
label: "About 2FA"
default: "If you want to enable 2FA then use the Fappaizuri2FA indexer instead."
- name: username
type: text
label: Username

View File

@@ -0,0 +1,154 @@
---
id: fappaizuri2fa
name: Fappaizuri2FA
description: "Fappaizuri is a Private Torrent Tracker for HENTAI / JAV. This indexer uses cookie login for 2FA."
language: en-US
type: private
encoding: UTF-8
links:
- https://www.fappaizuri.me/
legacylinks:
- https://fappaizuri.me/
caps:
categorymappings:
- {id: 5, cat: XXX, desc: "JAV"}
- {id: 6, cat: Books, desc: "Manga"}
- {id: 7, cat: Console, desc: "H-games"}
- {id: 8, cat: TV/Anime, desc: "Hentai"}
- {id: 9, cat: XXX, desc: "OFFS"}
modes:
search: [q]
tv-search: [q, season, ep]
book-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: lang
type: select
label: Language
default: 0
options:
0: All
4: Japanese
5: Chinese
6: Malaysia
7: North Korea
8: English
- name: sort
type: select
label: Sort requested from site
default: id
options:
id: 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_flaresolverr
type: info_flaresolverr
login:
# using cookie method because login page can present second page for 2FA when enabled
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="account-logout.php"]
download:
selectors:
- selector: a[href^="download.php?id="]
attribute: href
search:
paths:
# https://fappaizuri.me/torrents-search.php?search=&c8=1&c6=1&incldead=1&freeleech=0&lang=0
- path: torrents-search.php
inputs:
$raw: "{{ range .Categories }}&c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active, 1 incldead, 2 onlydead
incldead: 1
# 0 all, 1 notfree, 2 onlyfree
freeleech: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
lang: "{{ .Config.lang }}"
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
rows:
selector: tr.t-row
fields:
category:
selector: a[href^="torrents-search.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="torrents-details.php?id="] > b
details:
selector: a[href^="torrents-details.php?id="]
attribute: href
download:
selector: a[href^="torrents-details.php?id="]
attribute: href
poster:
selector: a[href^="torrents-details.php?id="]
attribute: onMouseover
filters:
- name: regexp
args: src=(.+?)>
_language:
selector: img[src*="images/languages/"]
attribute: alt
optional: true
description:
selector: font[color="red"]
filters:
- name: append
args: "{{ if .Result._language }} - {{ .Result._language }}{{ else }}{{ end }}"
size:
selector: td:nth-child(3)
seeders:
selector: td:nth-child(5)
leechers:
selector: td:nth-child(6)
grabs:
selector: td:nth-child(7)
date:
selector: td:nth-child(8)
filters:
- name: timeago
downloadvolumefactor:
case:
img[src="images/free.png"]: 0
"*": 1
uploadvolumefactor:
case:
img[src="images/doubleupload.gif"]: 2
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 4 days (as seconds = 4 x 24 x 60 x 60)
text: 345600
# evolution

View File

@@ -122,8 +122,6 @@ search:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
@@ -194,4 +192,4 @@ search:
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
minimumratio:
text: 0.81
# json UNIT3D 9.1.5
# json UNIT3D 9.2.0

View File

@@ -49,19 +49,11 @@ caps:
book-search: [q]
settings:
- name: username
- name: cookie
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 Free Farm Web Site. Otherwise just leave it empty."
label: Cookie
- name: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -94,24 +86,10 @@ settings:
default: "Cherish your user account. Inactive accounts would be deleted based on the following rules:<ol><li>Veteran User or above would never be deleted.</li><li>Elite User or above would never be deleted if parked (at User CP).</li><li>Parked accounts would be deleted if users have not logged in for more than 400 days in a row.</li><li>Unparked accounts would be deleted if users have not logged in for more than 150 days in a row.</li><li>Accounts with both uploaded and downloaded amount being 0 would be deleted if users have not logged in for more than 100 days in a row.</li></ol>"
login:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
# using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php
method: cookie
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("失败"))
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="logout.php"]
@@ -194,12 +172,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0
@@ -231,4 +217,4 @@ search:
filters:
- name: prepend
args: "{{ .Result.description_verified }} "
# NexusPHP v1.9.11 2025-11-02
# NexusPHP v1.10.0 2026-02-01

View File

@@ -7,7 +7,7 @@ type: public
encoding: UTF-8
requestDelay: 2
certificates:
- 4a2229e8450d4cd573b4c6b2354c6e86fb038295 # Expired 29 June 2025
- 12b89038d79803d9fae15e1babf50014d6398924 # Expired 17th Feb 2026
links:
- https://www.frozen-layer.com/

View File

@@ -0,0 +1,239 @@
---
id: g3minitr4ck3r-api
name: G3MINI TR4CK3R (API)
description: "G3MINI TR4CK3R is a FRENCH Private Torrent Tracker for MOVIES / TV / GENERAL"
language: fr-FR
type: private
encoding: UTF-8
links:
- https://gemini-tracker.org/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Films"}
- {id: 2, cat: TV, desc: "Séries"}
- {id: 10, cat: TV/Sport, desc: "Sports"}
- {id: 13, cat: Movies/Other, desc: "Documentaires - Film"}
- {id: 14, cat: TV/Documentary, desc: "Documentaires - Series"}
- {id: 3, cat: PC/Games, desc: "Jeux PC"}
- {id: 4, cat: Console, desc: "Jeux Consoles"}
- {id: 7, cat: Movies, desc: "Films Animation Japonaise"}
- {id: 6, cat: TV/Anime, desc: "Animes"}
- {id: 5, cat: Audio, desc: "Audios"}
- {id: 8, cat: Books/Comics, desc: "Bandes dessinées"}
- {id: 11, cat: Books/Comics, desc: "Mangas"}
- {id: 9, cat: Books/Mags, desc: "Magazines"}
- {id: 12, cat: Books/EBook, desc: "Livres"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
music-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://gemini-tracker.org/\" target=\"_blank\">G3MINI TR4CK3R</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: multilang
type: checkbox
label: Replace MULTi by another language in release name
default: false
- name: multilanguage
type: select
label: Replace MULTi by this language
default: FRENCH
options:
FRENCH: FRENCH
MULTi FRENCH: MULTi FRENCH
ENGLISH: ENGLISH
MULTi ENGLISH: MULTi ENGLISH
VOSTFR: VOSTFR
MULTi VOSTFR: MULTi VOSTFR
- name: vostfr
type: checkbox
label: Replace VOSTFR and SUBFRENCH with ENGLISH
default: false
- name: vfq
type: checkbox
label: Replace VFQ with FRENCH
default: false
- 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
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_phase1:
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
title_vfq:
text: "{{ .Result.title_phase1 }}"
filters:
- name: re_replace
args: ["(?i)\\b(VFQ)\\b", "FRENCH"]
title_phase2:
text: "{{ if .Config.vfq }}{{ .Result.title_vfq }}{{ else }}{{ .Result.title_phase1 }}{{ end }}"
title_vostfr:
text: "{{ .Result.title_phase2 }}"
filters:
- name: re_replace
args: ["(?i)\\b(vostfr|subfrench)\\b", "ENGLISH"]
title_phase3:
text: "{{ if .Config.vostfr }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_phase2 }}{{ end }}"
title_multilang:
text: "{{ .Result.title_phase3 }}"
filters:
- name: re_replace
args: ["(?i)\\b(MULTI(?!.*(?:FRENCH|ENGLISH|VOSTFR)))\\b", "{{ .Config.multilanguage }}"]
title:
text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase3 }}{{ 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 }}"
# global MR is 0.75 but torrents must be seeded for 2 days regardless of ratio
# minimumratio:
# text: 0.75
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# json UNIT3D 9.2.0 (custom)

View File

@@ -140,7 +140,7 @@ search:
args: ["(\\w+)", "+$1"] # prepend + to each word
headers:
User-Agent: ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203"]
Referer: ["{{ .Config.sitelink }}"]
rows:
selector: ul.TorrentList, ul.Torrent-List

View File

@@ -166,8 +166,6 @@ search:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
@@ -238,4 +236,4 @@ search:
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# json UNIT3D 9.0.1
# json UNIT3D 9.2.0 (custom)

View File

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

View File

@@ -84,7 +84,7 @@ login:
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
returnto: /
returnto: /browse.php
error:
- selector: td:contains("Login failed!")
message:

View File

@@ -40,11 +40,6 @@ caps:
- {id: 28, cat: Movies/Foreign, desc: "Movie Subbed-ita"}
- {id: 73, cat: Movies/SD, desc: "Movie MP4"}
- {id: 29, cat: Movies/Foreign, desc: "Movie Lingua Originale"}
# ANIMAZIONE
- {id: 32, cat: TV/Anime, desc: "Anime Disney"}
- {id: 33, cat: TV/Anime, desc: "Anime"}
- {id: 34, cat: TV/Anime, desc: "Anime Altri Cartoni"}
- {id: 62, cat: TV/Anime, desc: "Anime Natale Bimbi Girotor"}
# TELEVISIONE
- {id: 36, cat: TV, desc: "TV Serie"}
- {id: 99, cat: TV/HD, desc: "TV Serie Hevc"}
@@ -54,6 +49,11 @@ caps:
- {id: 38, cat: TV, desc: "TV Concerti-Spettacoli"}
- {id: 39, cat: TV, desc: "TV Teatro-Cabaret"}
- {id: 40, cat: TV/Documentary, desc: "Tv Documentario"}
# ANIMAZIONE
- {id: 32, cat: TV/Anime, desc: "Anime Disney"}
- {id: 33, cat: TV/Anime, desc: "Anime"}
- {id: 34, cat: TV/Anime, desc: "Anime Altri Cartoni"}
- {id: 62, cat: TV/Anime, desc: "Anime Natale Bimbi Girotor"}
# MUSICA
- {id: 42, cat: Audio, desc: "Musica CD Singoli"}
- {id: 43, cat: Audio, desc: "Musica Italiana"}
@@ -149,13 +149,12 @@ download:
search:
paths:
# 15 results per page fetch 5 (site is slow, dont be greedy and fetch more)
- path: index.php
inputs:
page: torrents
search: "{{ .Keywords }}"
category: "{{ range .Categories }}{{.}};{{end}}"
# 0 name, 1 name&descr, 2 descr, 3 uploader, 5 gold, 6 silver, 7 bronze
# 0 filename, 1 file&descr, 2 descr, 3 uploader, 5 gold, 6 silver, 7 bronze
# note the options are exclusive, so searching for gold means the search keywords are ignored
options: 0
# 0 all, 1 activeonly, 2 deadonly
@@ -252,4 +251,4 @@ search:
args: ["x Upload Multiplier", ""]
minimumratio:
text: 0.5
# xbtitFM 3.1.00
# xbtitFM v4.2.12

View File

@@ -6,10 +6,13 @@ language: en-US
type: private
encoding: UTF-8
links:
- https://www.happyfappy.net/
legacylinks:
- https://www.happyfappy.org/
caps:
categorymappings:
- {id: 15, cat: XXX, desc: "AI"}
- {id: 11, cat: XXX, desc: "Asian"}
- {id: 6, cat: XXX, desc: "Fansite"}
- {id: 13, cat: XXX, desc: "Games"}
@@ -108,7 +111,7 @@ search:
selector: a[href^="/torrents.php?id="]
attribute: href
download:
selector: a[href^="torrents.php?action=download&id="]
selector: a[href^="/torrents.php?action=download&id="]
attribute: href
description_tags:
selector: div.tags

View File

@@ -6,10 +6,13 @@ language: en-US
type: private
encoding: UTF-8
links:
- https://www.happyfappy.net/
legacylinks:
- https://www.happyfappy.org/
caps:
categorymappings:
- {id: 15, cat: XXX, desc: "AI"}
- {id: 11, cat: XXX, desc: "Asian"}
- {id: 6, cat: XXX, desc: "Fansite"}
- {id: 13, cat: XXX, desc: "Games"}
@@ -97,7 +100,7 @@ search:
selector: a[href^="/torrents.php?id="]
attribute: href
download:
selector: a[href^="torrents.php?action=download&id="]
selector: a[href^="/torrents.php?action=download&id="]
attribute: href
description_tags:
selector: div.tags

View File

@@ -34,8 +34,8 @@ caps:
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
music-search: [q]
settings:
@@ -92,14 +92,13 @@ search:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
search: "{{ if or .Query.IMDBID .Query.DoubanID }}{{ or .Query.IMDBID .Query.DoubanID }}{{ else }}{{ .Keywords }}{{ end }}"
# 0 incldead, 1 active, 2 onlydead
incldead: 1
# 0 all, 1 normal, 2 free, 2 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 }}0{{ end }}"
# 0 AND, 1 OR, 2 Exact
# uses 'smart search'
search_area: 0
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
@@ -131,6 +130,9 @@ search:
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
selector: a[href*="movie.douban.com/subject/"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-last-child(6) > span[title]
@@ -179,4 +181,4 @@ search:
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP Standard v1.5 Beta 4 (customised)
# NexusPHP Standard v1.5 Beta 4 (customised)

View File

@@ -141,12 +141,20 @@ search:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td:nth-child(5)
optional: true
default: 512MB
seeders:
selector: td:nth-child(6)
optional: true
default: 0
leechers:
selector: td:nth-child(7)
optional: true
default: 0
grabs:
selector: td:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0

View File

@@ -33,13 +33,12 @@ caps:
music-search: [q]
settings:
# not entirely sure why cookie method is being used. while the login page uses non-standard field names, the form seems regular enough.
# but since none of the team have an account we cannot switch to using form method without having any testing validation.
- name: cookie
- name: username
type: text
label: Cookie
- name: info_cookie
type: info_cookie
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -63,13 +62,29 @@ settings:
type: info
label: Settings for Results
default: "To use this indexer please set the following on your HDC account <b>profile</b>:<ul><li><i>Site Language:</i><b> English</b></li><li><i>Torrent List Profile:</i> <b>Default Modern [preview]</b></li><li><i>Time Type: </i><b>Time Added</b></li><li><i>Torrents per page:</i><b> 100</b></li></ul>"
- name: info_activity
type: info
label: Account Inactivity
default: "Cherish your user account. Inactive accounts would be deleted based on the following rules:<ol><li>Veteran User or above would never be deleted.</li><li>Elite User or above would never be deleted if parked (at User CP).</li><li>Parked accounts would be deleted if users have not logged in for more than 180 days in a row.</li><li>Unparked accounts would be deleted if users have not logged in for more than 60 days in a row.</li><li>Accounts with both uploaded and downloaded amount being 0 would be deleted if users have not logged in for more than 30 days in a row.</li></ol>"
login:
method: cookie
path: login
method: form
form: form[action="signinhandler"]
inputs:
cookie: "{{ .Config.cookie }}"
nftsidl1c03b: "{{ .Config.username }}"
insf0urO0abl1i: "{{ .Config.password }}"
selectorinputs:
s0hot:
selector: input[name="s0hot"]
attribute: value
asDf0z:
selector: input[name="asDf0z"]
attribute: value
error:
- selector: div.errormsg
test:
path: pt
path: /
selector: a[href^="logout?key="]
search:
@@ -93,75 +108,67 @@ search:
notnewword: 1
rows:
selector: div.trblock
selector: div.mitem
fields:
title:
selector: div.trtop a[href^="t-"]
category:
selector: div.trm
selector: div.mcontent
attribute: style
filters:
- name: regexp
args: (\d+)
args: "\\/(\\d+).png"
title:
selector: div.mtop a[href^="t-"]
details:
selector: div.trtop a[href^="t-"]
selector: div.mtop a[href^="t-"]
attribute: href
download:
selector: a[href^="download?id="]
attribute: href
poster:
selector: div.trp:not(:has(img[src$="poster.jpg"])) img
selector: div.mcontent:not(:has(img[src$="poster.jpg"])) img
attribute: src
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
size:
selector: div.trbo div:nth-last-child(8)
selector: div.mbottom div:nth-last-child(7)
remove: i
seeders:
selector: div.trbo div:nth-last-child(7)
selector: a[href$="#seeders"]
optional: true
default: 0
filters:
- name: re_replace
args: ["\\s", "0"]
leechers:
selector: div.trbo div:nth-last-child(6)
selector: a[href$="#leechers"]
optional: true
default: 0
filters:
- name: re_replace
args: ["\\s", "0"]
grabs:
selector: div.trbo div:nth-last-child(5)
selector: a[href^="viewsnatches?id="]
optional: true
default: 0
filters:
- name: re_replace
args: ["\\s", "0"]
date:
remove: a, span
selector: div[style="float:right;"]
selector: div[style="minfo"]
remove: span
filters:
- name: replace
args: ["@", ""]
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
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
div.bfree: 0
div.btwoupfree: 0
div.bhalfdown: 0.5
div.btwouphalfdown: 0.5
div.bthirdown: 0.3
div.bnone: 1
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
div.btwouphalfdown: 2
div.btwoupfree: 2
div.btwoup: 2
"*": 1
# engine n/a (likely based on NexusPHP)
minimumratio:
text: 1
# engine n/a (based on NexusPHP)

View File

@@ -6,6 +6,8 @@ language: zh-CN
type: private
encoding: UTF-8
links:
- https://pt.hdclone.top/
legacylinks:
- https://pt.hdclone.org/
caps:
@@ -15,9 +17,9 @@ caps:
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 403, cat: TV, desc: "TV Shows/综艺"}
- {id: 405, cat: TV/Anime, desc: "Animations/动漫、动画"}
- {id: 408, cat: Audio/Video, desc: "Playlet/短剧"}
- {id: 409, cat: Audio/Video, desc: "Playlet/短剧"}
- {id: 410, cat: Audio/Video, desc: "MV/演唱会"}
- {id: 406, cat: Audio, desc: "Music/音乐"}
- {id: 408, cat: Audio, desc: "Music/音乐"}
- {id: 407, cat: Other, desc: "Others/其他(慎选)"}
modes:
@@ -170,12 +172,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0

View File

@@ -141,12 +141,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0

View File

@@ -109,7 +109,7 @@ search:
$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
incldead: 1
# 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

View File

@@ -20,8 +20,9 @@ caps:
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
movie-search: [q, imdbid, tmdbid]
allowtvsearchimdb: true
settings:
- name: username
@@ -79,7 +80,11 @@ settings:
- name: info_radarr
type: info
label: About Radarr
default: The HD-F web site cannot find movies if you use the release year in a title search. When you define your Radarr v3 Indexer remember to tick the <i>Remove year from search string</i> checkbox.
default: The HD-F web site cannot find movies if you use the release year in a title search. When you define your Radarr Indexer remember to tick the <i>Remove year from search string</i> checkbox.
- name: info_release_name
type: info
label: About release names
default: For more stable release names, enable <b>Afficher les noms de fichiers</b> in your HD-F profile settings.
login:
path: login.php
@@ -107,7 +112,8 @@ search:
searchsubmit: 1
# 1 freeleech, 2 neutral, 3 both, 0 normal
freetorrent: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
# site does not support imdbid search or display imdb links in results
tmdbid: "{{ .Query.TMDBID }}"
imdbid: "{{ .Query.IMDBID }}"
rows:
selector: table#torrent_table > tbody > tr.torrent:has(a[href^="torrents.php?action=download&"])
@@ -145,10 +151,14 @@ search:
poster:
selector: div.group_image img
attribute: src
files:
selector: td:nth-child(3)
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
tmdbid:
selector: a[href*="themoviedb.org/movie/"], a[href*="themoviedb.org/tv/"]
attribute: href
date:
selector: td:nth-child(4)
selector: span.time
filters:
- name: replace
args: ["Il y a ", ""]
@@ -182,116 +192,74 @@ search:
selector: td:nth-child(8)
downloadvolumefactor:
case:
"div.group_info:contains(\"/ Free\")": 0
"div.group_info:contains(\"↓75%\")": 0.75
"div.group_info:contains(\"↓50%\")": 0.50
"div.group_info:contains(\"↓25%\")": 0.25 # for this site this is the count ratio, which is 25% of the total torrent size. (I.E. it's 75% free)
"div.torrent_info .tl_free": 0
"div.torrent_info .tl_notice[title*=\"Freeleech\"]": 0 # Global freeleech enabled
"div.torrent_info .tl_notice[title=\"-75%\"]": 0.75
"div.torrent_info .tl_notice[title=\"-50%\"]": 0.50
"div.torrent_info .tl_notice[title=\"-25%\"]": 0.25 # for this site this is the count ratio, which is 25% of the total torrent size. (I.E. it's 75% free)
"*": 1
uploadvolumefactor:
text: 1
title_phase1:
title_torrent_filename:
selector: div.torrent_filename_row
optional: true
filters:
- name: trim
title_parsed:
selector: div.group_info
remove: span.team_name, span:has(a[href^="torrents.php?action=download"]), div.tags, div.vote_controls, div.stats-content, .add_bookmark, img
remove: span.team_name, span:has(a[href^="torrents.php?action=download"]), div.tags, div.vote_controls, div.stats-content, .add_bookmark, img, .tl_free, .tl_notice, .torrent_filename_row
filters:
- name: replace
args: ["\n", " "]
- name: re_replace
args: ["\\s+", " "]
args: ["\\[(?:Concert|Film|Film d'animation|Spectacle|Série|Série d'animation|Documentaire)\\]", ""]
- name: replace
args: ["Blu-Ray Original", "Complete.BluRay"]
args: ["Blu-ray Original", "Complete.BluRay"]
- name: replace
args: ["Blu-Ray Remux", "Remux"]
args: ["Blu-ray Remux", "Remux"]
- name: replace
args: ["Blu-Ray Rip", "BluRay.Rip"]
args: ["Blu-ray Rip", "BluRay.Rip"]
- name: replace
args: ["mHD", "mHD.BluRay.Rip"]
- name: replace
args: ["/ DC", "/ Directors.Cut"]
- name: replace
args: ["/ VL", "/ Extended"]
- name: replace
args: ["/ RM", "/ Remastered"]
- name: replace
args: ["/ UC", "/ Uncut"]
- name: replace
args: ["/ ES", "/ Special.Edition"]
- name: replace
args: [" / Cust_sub", ""]
- name: replace
args: [" / Cust", ""]
- name: replace
args: ["/ UN", "/ Unrated"]
- name: replace
args: [" / Crit", ""]
- name: replace
args: [" / WAC", ""]
- name: replace
args: [" / MoC", ""]
- name: replace
args: [" / BFI", ""]
- name: replace
args: [" / MUET", ""]
- name: replace
args: ["/ Exc NF", "/ NF"]
- name: replace
args: ["/ Exc AMZ", "/ AMZ"]
- name: replace
args: ["/ Exc YOU", "/ YT"]
- name: replace
args: [" / ↓25%", ""]
- name: replace
args: [" / ↓50%", ""]
- name: replace
args: [" / ↓75%", ""]
- name: replace
args: [" / Free", ""]
- name: replace
args: [" / Complété!", ""]
- name: replace
args: [" / ", "."]
- name: re_replace
args: ["(?:\\]|\\/\\s)DC", ".Directors.Cut"]
- name: re_replace
args: ["(?:\\]|\\/\\s)VL", ".Extended"]
- name: re_replace
args: ["(?:\\]|\\/\\s)RM", ".Remastered"]
- name: re_replace
args: ["(?:\\]|\\/\\s)UC", ".Uncut"]
- name: re_replace
args: ["(?:\\]|\\/\\s)UR", ".Unrated"]
- name: re_replace
args: ["(?:\\]|\\/\\s)ES", ".Special.Edition"]
- name: re_replace
args: ["(?:\\]|\\/\\s)Crit", ".Criterion"]
- name: re_replace
args: ["(?:\\/ )?(?:Remplaçable|Complété|Bonus|Note Modo|[2-9]+ème partie|\\b(?:Cust(?:_sub)?|WAC|BFI|MUET)\\b)(?: \\/)?", ""]
- name: trim
- name: replace
args: [".VFF.VFQ.StFr.MULTI", ".MULTI.VFF.VFQ"]
- name: replace
args: [".VFF.VFQ.VO.StFr.MULTI", ".MULTI.VFF.VFQ"]
- name: replace
args: [".VFF.VFQ.VO.StFr", ".MULTI.VFF.VFQ"]
- name: replace
args: [".VFQ.VO.StFr", ".MULTI.VFQ"]
- name: replace
args: [".VO.VFI.StFr", ".MULTI"]
- name: replace
args: [".VO.VF?.StFr", ".MULTI"]
- name: replace
args: [".VFF.VO.StFr", ".MULTI.VFF"]
- name: replace
args: [".VOF.StFr", ".FRENCH"]
- name: replace
args: [".VFQ.StFr", ".FRENCH"]
- name: replace
args: [".VFF.StFr.MULTI", ".MULTI.VFF"]
- name: replace
args: [".VFF.StFr", ".FRENCH"]
- name: replace
args: [".VFI.MULTI", ".MULTI"]
- name: replace
args: [".VO.StFr", ".VOSTFR"]
- name: replace
args: [".VFQ.VO", ".MULTI.VFQ"]
- name: replace
args: [".VFF.VO", ".MULTI.VFF"]
- name: replace
args: [".VO.VF?.StFr", ".MULTI"]
- name: replace
args: [".VFI.StFr", ".FRENCH"]
- name: replace
args: [".VOF.MULTI", ".MULTI.FRENCH"]
- name: replace
args: [".VOF", ".FRENCH"]
- name: replace
args: [".VFQ.MULTI", ".MULTI.VFQ"]
- name: re_replace
args: ["[\\[\\]\\/\\s?.,:'!]+", "."]
- name: trim
args: "."
- name: re_replace
args: ["(?i)\\.VFF\\.VFQ\\.(?:MULTI|StFR(?:\\.MULTI)?|VO(?:\\.StFR)?)", ".MULTI.VF2"]
- name: re_replace
args: ["(?i)\\.VFF\\.(?:MULTI|StFR(?:\\.MULTI)?|VO(?:\\.StFR)?)", ".MULTI.VFF"]
- name: re_replace
args: ["(?i)\\.VFQ\\.(?:MULTI|StFR(?:\\.MULTI)?|VO(?:\\.StFR)?)", ".MULTI.VFQ"]
- name: re_replace
args: ["(?i)\\.VOQ\\.(?:MULTI|StFR(?:\\.MULTI)?|VO(?:\\.StFR)?)", ".MULTI.VOQ"]
- name: re_replace
args: ["(?i)\\.VFI\\.(?:MULTI|StFR(?:\\.MULTI)?|VO(?:\\.StFR)?)", ".MULTI.VFI"]
- name: re_replace
args: ["(?i)\\.VOF\\.(?:MULTI|StFR(?:\\.MULTI)?|VO(?:\\.StFR)?)", ".MULTI.VOF"]
- name: re_replace
args: ["(?i)\\.(?:VO\\.)?StFR", ".VOSTFR"]
- name: append
args: "{{ if .Result._release_group }}-{{ .Result._release_group }}{{ else }}{{ end }}"
title_phase1:
text: "{{ if .Result.title_torrent_filename }}{{ .Result.title_torrent_filename }}{{ else }}{{ .Result.title_parsed }}{{ end }}"
title_vostfr:
text: "{{ .Result.title_phase1 }}"
filters:
@@ -303,15 +271,20 @@ search:
text: "{{ .Result.title_phase2 }}"
filters:
- name: re_replace
args: ["(?i)\\b(MULTI(?!.*(?:FRENCH|ENGLISH|VOSTFR)))\\b", "{{ .Config.multilanguage }}"]
args: ["(?i)\\b(MULTI(?!.*(?:FRENCH|ENGLISH|VOSTFR|VF2|VFF|VFQ|VOQ|VFI|VOF)))\\b", "{{ .Config.multilanguage }}"]
title:
text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase2 }}{{ end }}"
description:
selector: div.group_info
minimumratio:
filters:
- name: replace
args: ["\n", " "]
- name: re_replace
args: ["\\s+", " "]
# global MR is 0.6 but torrents must be seeded for 3 days regardless of ratio
# minimumratio:
# text: 0.6
# minimumseedtime:
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# Gazelle

View File

@@ -89,9 +89,6 @@ search:
paths:
- path: browse.php
inputs:
# $raw: "{{ range .Categories }}cat[]={{.}}&{{end}}"
cat[]: 0
shw_incl_cats: 0
# 0 default, 1 active, 2 dead, 3 gold, 4 sticky, lots of others
incldead: "{{ if .Config.freeleech }}3{{ else }}0{{ end }}"
search: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}"

View File

@@ -12,34 +12,23 @@ legacylinks:
caps:
categorymappings:
- {id: 506, cat: Movies/BluRay, desc: "Movies 8K UHD BD"}
- {id: 499, cat: Movies/BluRay, desc: "Movies UHD Blu-ray"}
- {id: 518, cat: Movies/UHD, desc: "Movies UHD REMUX"}
- {id: 450, cat: Movies/BluRay, desc: "Movies Bluray"}
- {id: 415, cat: Movies/HD, desc: "Movies REMUX"}
- {id: 505, cat: Movies/UHD, desc: "Movies 8K/4320p"}
- {id: 416, cat: Movies/UHD, desc: "Movies 2160p"}
- {id: 414, cat: Movies/HD, desc: "Movies 1080p"}
- {id: 413, cat: Movies/HD, desc: "Movies 720p"}
- {id: 411, cat: Movies/SD, desc: "Movies SD"}
- {id: 412, cat: Movies/SD, desc: "Movies IPad"}
- {id: 413, cat: Movies/HD, desc: "Movies 720p"}
- {id: 414, cat: Movies/HD, desc: "Movies 1080p"}
- {id: 415, cat: Movies/HD, desc: "Movies REMUX"}
- {id: 450, cat: Movies/BluRay, desc: "Movies Bluray"}
- {id: 499, cat: Movies/BluRay, desc: "Movies UHD Blu-ray"}
- {id: 416, cat: Movies/UHD, desc: "Movies 2160p"}
- {id: 417, cat: TV/Documentary, desc: "Doc SD"}
- {id: 418, cat: TV/Documentary, desc: "Doc IPad"}
- {id: 419, cat: TV/Documentary, desc: "Doc 720p"}
- {id: 420, cat: TV/Documentary, desc: "Doc 1080p"}
- {id: 421, cat: TV/Documentary, desc: "Doc REMUX"}
- {id: 523, cat: TV/UHD, desc: "TVSeries 8KUHD"}
- {id: 502, cat: TV/UHD, desc: "TVSeries 4K Bluray"}
- {id: 451, cat: TV/Documentary, desc: "Doc Bluray"}
- {id: 500, cat: TV/Documentary, desc: "Doc UHD Blu-ray"}
- {id: 422, cat: TV/Documentary, desc: "Doc 2160p"}
- {id: 423, cat: TV/HD, desc: "TVMusic 720p"}
- {id: 424, cat: TV/HD, desc: "TVMusic 1080i"}
- {id: 425, cat: TV/SD, desc: "TVShow SD"}
- {id: 426, cat: TV/SD, desc: "TVShow IPad"}
- {id: 471, cat: TV/SD, desc: "TVShow IPad"}
- {id: 427, cat: TV/HD, desc: "TVShow 720p"}
- {id: 428, cat: TV/HD, desc: "TVShow 1080i"}
- {id: 429, cat: TV/HD, desc: "TVShow 1080p"}
- {id: 430, cat: TV/HD, desc: "TVShow REMUX"}
- {id: 452, cat: TV/HD, desc: "TVShows Bluray"}
- {id: 421, cat: TV/Documentary, desc: "Doc REMUX"}
- {id: 526, cat: TV/UHD, desc: "TVSeries 4320p"}
- {id: 431, cat: TV/HD, desc: "TVShow 2160p"}
- {id: 432, cat: TV/SD, desc: "TVSeries SD"}
- {id: 433, cat: TV/SD, desc: "TVSeries IPad"}
- {id: 434, cat: TV/HD, desc: "TVSeries 720p"}
- {id: 435, cat: TV/HD, desc: "TVSeries 1080i"}
@@ -47,11 +36,13 @@ caps:
- {id: 437, cat: TV/HD, desc: "TVSeries REMUX"}
- {id: 453, cat: TV/HD, desc: "TVSereis Bluray"}
- {id: 438, cat: TV/UHD, desc: "TVSeries 2160p"}
- {id: 502, cat: TV/UHD, desc: "TVSeries 4K Bluray"}
- {id: 439, cat: Audio/Other, desc: "Musics APE"}
- {id: 432, cat: TV/SD, desc: "TVSeries SD"}
- {id: 440, cat: Audio/Lossless, desc: "Musics FLAC"}
- {id: 441, cat: Audio/Video, desc: "Musics MV"}
- {id: 503, cat: Audio/Video, desc: "Musics Bluray"}
- {id: 442, cat: TV/Sport, desc: "Sports 720p"}
- {id: 510, cat: TV/Anime, desc: "Anime 8K UHD BD"}
- {id: 443, cat: TV/Sport, desc: "Sports 1080i"}
- {id: 444, cat: TV/Anime, desc: "Anime SD"}
- {id: 445, cat: TV/Anime, desc: "Anime IPad"}
@@ -59,9 +50,31 @@ caps:
- {id: 447, cat: TV/Anime, desc: "Anime 1080p"}
- {id: 448, cat: TV/Anime, desc: "Anime REMUX"}
- {id: 454, cat: TV/Anime, desc: "Anime Bluray"}
- {id: 531, cat: TV/Anime, desc: "Anime UHD REMUX"}
- {id: 409, cat: Other, desc: "Misc"}
- {id: 449, cat: TV/Anime, desc: "Anime 2160p"}
- {id: 509, cat: TV/Anime, desc: "Anime 8K/4320p"}
- {id: 501, cat: TV/Anime, desc: "Anime UHD Blu-ray"}
- {id: 504, cat: TV/Sport, desc: "Sports 2160p"}
- {id: 511, cat: TV/Sport, desc: "Sport 8K/4320p"}
- {id: 508, cat: TV/Documentary, desc: "Doc 8K UHD BD"}
- {id: 529, cat: TV/Documentary, desc: "Doc 8K UHD BD REMUX"}
- {id: 500, cat: TV/Documentary, desc: "Doc UHD Blu-ray"}
- {id: 507, cat: TV/Documentary, desc: "Doc 8K/4320p"}
- {id: 422, cat: TV/Documentary, desc: "Doc 2160p"}
- {id: 420, cat: TV/Documentary, desc: "Doc 1080p"}
- {id: 419, cat: TV/Documentary, desc: "Doc 720p"}
- {id: 417, cat: TV/Documentary, desc: "Doc SD"}
- {id: 418, cat: TV/Documentary, desc: "Doc IPad"}
- {id: 424, cat: TV/HD, desc: "TVMusic 1080i"}
- {id: 423, cat: TV/HD, desc: "TVMusic 720p"}
- {id: 452, cat: TV/HD, desc: "TVShows Bluray"}
- {id: 430, cat: TV/HD, desc: "TVShow REMUX"}
- {id: 429, cat: TV/HD, desc: "TVShow 1080p"}
- {id: 428, cat: TV/HD, desc: "TVShow 1080i"}
- {id: 427, cat: TV/HD, desc: "TVShow 720p"}
- {id: 425, cat: TV/SD, desc: "TVShow SD"}
- {id: 426, cat: TV/SD, desc: "TVShow IPad"}
modes:
search: [q]
@@ -83,6 +96,22 @@ settings:
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: 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
login:
# using cookie method due to #6460
@@ -99,39 +128,57 @@ search:
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
incldead: 1
# 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 }}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)
fields:
title:
selector: a[title][href^="details.php?id="]
attribute: title
category:
selector: a[href^="?cat="]
selector: a[href*="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: table.torrentname td a[href*="details.php?id="]
title:
selector: a[title][href*="details.php?id="]
attribute: title
optional: true
default: "{{ .Result.title_default }}"
details:
selector: a[title][href^="details.php?id="]
selector: a[title][href*="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
selector: a[href*="download.php?id="]
attribute: href
size:
selector: td.rowfollow:nth-child(5)
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(4) > span[title]

View File

@@ -139,12 +139,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0

View File

@@ -108,6 +108,9 @@ search:
filters:
- name: querystring
args: category
# change broken/missing cat 0 to Others
- name: re_replace
args: ["\\b0\\b", "38"]
title_default:
selector: td a[href^="index.php?page=torrent-details"]
filters:

View File

@@ -158,12 +158,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0

View File

@@ -148,12 +148,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0

View File

@@ -0,0 +1,207 @@
---
id: hdvideo
name: HDVideo
description: "HDVideo is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://hdvideo.top/
caps:
categorymappings:
- {id: 406, cat: Audio, desc: "HQ Audio/音轨"}
- {id: 408, cat: Audio/Video, desc: "MV/音乐"}
- {id: 407, cat: TV/Sport, desc: "Sports/体育"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 403, cat: TV, desc: "TV Shows/综艺"}
- {id: 405, cat: TV/Anime, desc: "Anime/动漫"}
- {id: 402, cat: TV, desc: "TV Series/电视剧"}
- {id: 401, cat: Movies, desc: "Movies/电影"}
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 HDVideo 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: "Accounts inactive (i.e. not logged in for a long time) are automatically deleted."
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
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, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr: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
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
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
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:nth-child(2)
remove: a, b, font, img, span
filters:
- name: prepend
args: "{{ .Result.description_verified }} "
minimumseedtime:
# 1 day (as seconds = 24 x 60 x 60)
text: 86400
# NexusPHP v1.8.15 2024-12-23

View File

@@ -7,8 +7,10 @@ type: private
encoding: UTF-8
followredirect: true
links:
- https://hhanclub.top/
- https://hhanclub.net/
- https://hhan.club/
legacylinks:
- https://hhanclub.top/
caps:
categorymappings:
@@ -86,7 +88,7 @@ login:
ssl: yes
trackerssl: yes
error:
- selector: div > div.flex:has(div:contains("失败"))
- selector: div#Container > div.flex:has(div:contains("失败"))
test:
path: index.php
selector: a[href="logout.php"]

View File

@@ -199,4 +199,4 @@ search:
minimumseedtime:
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 9.1.7
# json UNIT3D 9.2.0

View File

@@ -132,12 +132,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0

View File

@@ -0,0 +1,168 @@
---
id: hxpt
name: HxPT (好学)
description: "HxPT (好学) is a CHINESE Private Torrent Tracker for E-LEARNING"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://www.hxpt.org/
caps:
categorymappings:
- {id: 401, cat: Other, desc: "学前教育 (Preschool)"}
- {id: 402, cat: Other, desc: "小学部 (Primary School)"}
- {id: 403, cat: Other, desc: "初中部 (Middle School)"}
- {id: 404, cat: Other, desc: "高职部 (Vocational High School)"}
- {id: 405, cat: Other, desc: "高中部 (High School)"}
- {id: 406, cat: Other, desc: "教育影音 (Educational Video)"}
modes:
search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info_cookie
type: info_cookie
- 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 have their account 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 who have no traffic (i.e. upload/download data are both 0) will be deleted if they do not log in for 100 consecutive days.</li></ol>"
login:
# using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 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: 0
# 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^="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
poster:
selector: img[data-src]
attribute: data-src
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
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
minimumseedtime:
# 24 hours (as seconds = 24 x 60 x 60)
text: 86400
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.9.6 2025-06-25

View File

@@ -6,13 +6,20 @@ language: en-US
type: public
encoding: UTF-8
links:
- https://isohunt.sh/
- https://isohunt.lol/
- https://isohuntx.com/
- https://isohuntz.com/
- https://isohuntz.net/
- https://isohunt.how/
- https://isohunt.tube/
legacylinks:
- https://isohunt2.net/ # redirects to torrentproject.cc
- https://isohunt.fun/ # redirects to torrentproject.cc
- https://isohunt.tv/ # redirects to torrentproject.cc
- https://isohunt.nz/
- https://isohunt.ch/
- https://isohunt.sh/
- https://isohunt.app/
caps:
categorymappings:

View File

@@ -88,8 +88,8 @@ search:
# 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 }}"
# seasonNumber: "{{ .Query.Season }}" # not supported
# episodeNumber: "{{ .Query.Ep }}" # not supported
imdbId: "{{ .Query.IMDBIDShort }}"
tmdbId: "{{ .Query.TMDBID }}"
tvdbId: "{{ .Query.TVDBID }}"
@@ -163,4 +163,4 @@ search:
minimumseedtime:
# 4 days (as seconds = 4 x 24 x 60 x 60)
text: 345600
# json UNIT3D 6.0.4
# json UNIT3D 6.0.4 (custom)

View File

@@ -26,7 +26,7 @@ caps:
search: [q]
tv-search: [q, season, ep, genre]
movie-search: [q, genre]
music-search: [q, album, artist, genre]
music-search: [q, genre]
settings:
- name: username
@@ -68,29 +68,31 @@ login:
- selector: form#loginform > span.warning, font[color="red"]
test:
path: index.php
selector: a[href^="logout.php?auth="]
selector: a[href^="logout.php?auth="], a[href^="torrents.php?action=download&id="]
search:
# https://jpopsuki.eu/ajax.php?section=torrents&artistname=&action=advanced&torrentname=snow+man&remastertitle=&filelist=&bitrate=&format=&media=&year=&freeleech=&remastered=&searchtags=&tags_type=0&order_by=s3&order_way=desc&enablegrouping=1
# https://jpopsuki.eu/ajax.php?section=torrents&searchstr=snow man&action=basic&searchtags=&tags_type=0&order_by=s3&order_way=desc&filter_cat[5]=1
paths:
- path: ajax.php
keywordsfilters:
- name: re_replace # replace special characters with " " (space)
args: ["[\\[!\"#$%&'()*+,\\-.\\/:;<=>?@[\\]^_`{|}~]", " "]
inputs:
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}{{ if or .Query.Album .Query.Artist .Keywords }}action=advanced{{ else }}searchtags=japanese&tags_type=0{{ end }}"
artistname: "{{ .Query.Artist }}"
torrentname: "{{ if .Query.Album }}{{ .Query.Album }}{{ else }}{{ .Keywords }}{{ end }}"
freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
order_by: "{{ .Config.sort }}"
order_way: "{{ .Config.type }}"
disablegrouping: 1
section: torrents
searchstr: "{{ .Keywords }}"
action: basic
searchtags: "{{ .Query.Genre }}"
# 0 Any, 1 All
tags_type: 1
order_by: "{{ .Config.sort }}"
order_way: "{{ .Config.type }}"
freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
$raw: "{{ range .Categories }}&filter_cat[{{.}}]=1{{end}}"
error:
- selector: :root:contains("Database error.")
rows:
selector: table#torrent_table > tbody > tr[class^="torrent"]
selector: table#torrent_table > tbody > tr[class^="torrent"]:has(a[href^="torrents.php?action=download&id="])
fields:
category:
@@ -109,6 +111,9 @@ search:
args: [".", "_"]
description:
text: "{{ .Result.genre }}"
artist:
selector: td:nth-last-child(7) a[href*="artist.php"]
optional: true
title:
selector: td:nth-last-child(7)
remove: span, div.tags, a[title="View Comments"]

View File

@@ -0,0 +1,197 @@
---
id: jptv4us-api
name: JPTV4us (API)
description: "JPTV4us is a JAPANESE Private Torrent Tracker for MOVIES / TV / MUSIC / GENERAL"
language: en-US
type: private
encoding: UTF-8
links:
- https://jptv4.us/
caps:
categorymappings:
- {id: 1, cat: TV/Anime, desc: "Anime Movie"}
- {id: 2, cat: TV/Anime, desc: "Anime Series"}
- {id: 3, cat: TV/Documentary, desc: "Documentary"}
- {id: 4, cat: TV, desc: "Drama"}
- {id: 5, cat: TV/Other, desc: "Informational"}
- {id: 6, cat: Movies, desc: "Movie"}
- {id: 7, cat: Audio/Video, desc: "Music"}
- {id: 8, cat: TV/Other, desc: "News"}
- {id: 9, cat: TV/Other, desc: "Variety"}
- {id: 10, cat: Other, desc: "Other"}
- {id: 11, cat: Audio, desc: "Audio Only"}
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://jptv4.us/\" target=\"_blank\">JPTV4us</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
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
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.7

View File

@@ -62,7 +62,7 @@ settings:
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
# using cookie method because login page has embedded Clouflare turnstile
# using cookie method because login page has embedded Cloudflare turnstile
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
@@ -137,12 +137,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0

View File

@@ -72,7 +72,7 @@ settings:
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
# using cookie method because login page has embedded Clouflare turnstile
# using cookie method because login page has embedded Cloudflare turnstile
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"

View File

@@ -156,12 +156,20 @@ search:
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)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0

View File

@@ -40,6 +40,7 @@ caps:
- {id: "AnimeLiveAction[English-translated]", cat: TV/Anime, desc: "Anime Live Action English-translated"}
- {id: "AnimeLiveAction[Non-English]", cat: TV/Anime, desc: "Anime Live Action Non-English"}
- {id: "AnimeLiveAction[Raw]", cat: TV/Anime, desc: "Anime Live Action Raw"}
- {id: AnimeMusicvideo, cat: Audio/Video, desc: Anime Music video}
- {id: AnimePictures, cat: Other, desc: Anime Pictures}
- {id: AnimeRaw, cat: TV/Anime, desc: Anime Raw}
- {id: AnimeSubs, cat: TV/Anime, desc: Anime Subs}
@@ -87,6 +88,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}

Some files were not shown because too many files have changed in this diff Show More