more updates march
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
122
config/prowlarr/Definitions/animenosekai.yml
Normal file
122
config/prowlarr/Definitions/animenosekai.yml
Normal 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
|
||||
@@ -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:
|
||||
|
||||
@@ -84,6 +84,8 @@ search:
|
||||
filters:
|
||||
- name: split
|
||||
args: [",", -1]
|
||||
- name: re_replace
|
||||
args: ["1\\d{5}", "2000"]
|
||||
year:
|
||||
selector: year
|
||||
optional: true
|
||||
|
||||
202
config/prowlarr/Definitions/arabicsource-api.yml
Normal file
202
config/prowlarr/Definitions/arabicsource-api.yml
Normal 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
|
||||
@@ -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
|
||||
|
||||
220
config/prowlarr/Definitions/arabscene.yml
Normal file
220
config/prowlarr/Definitions/arabscene.yml
Normal 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
|
||||
136
config/prowlarr/Definitions/arabtorrents-com.yml
Normal file
136
config/prowlarr/Definitions/arabtorrents-com.yml
Normal 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
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
191
config/prowlarr/Definitions/aura4k-api.yml
Normal file
191
config/prowlarr/Definitions/aura4k-api.yml
Normal 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
|
||||
122
config/prowlarr/Definitions/axelbg.yml
Normal file
122
config/prowlarr/Definitions/axelbg.yml
Normal 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
|
||||
155
config/prowlarr/Definitions/axeltorrents.yml
Normal file
155
config/prowlarr/Definitions/axeltorrents.yml
Normal 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)
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
186
config/prowlarr/Definitions/baozipt.yml
Normal file
186
config/prowlarr/Definitions/baozipt.yml
Normal 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
|
||||
@@ -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]
|
||||
|
||||
259
config/prowlarr/Definitions/bigbbs.yml
Normal file
259
config/prowlarr/Definitions/bigbbs.yml
Normal 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
|
||||
@@ -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]
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
121
config/prowlarr/Definitions/bluetorrents.yml
Normal file
121
config/prowlarr/Definitions/bluetorrents.yml
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -33,6 +33,8 @@ caps:
|
||||
settings:
|
||||
- name: info_category_8000
|
||||
type: info_category_8000
|
||||
- name: info_flaresolverr
|
||||
type: info_flaresolverr
|
||||
|
||||
search:
|
||||
paths:
|
||||
|
||||
@@ -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
|
||||
|
||||
179
config/prowlarr/Definitions/c411.yml
Normal file
179
config/prowlarr/Definitions/c411.yml
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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"}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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?)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -30,6 +30,7 @@ caps:
|
||||
tv-search: [q, season, ep, imdbid]
|
||||
movie-search: [q, imdbid]
|
||||
music-search: [q]
|
||||
allowrawsearch: true
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
187
config/prowlarr/Definitions/dubhe.yml
Normal file
187
config/prowlarr/Definitions/dubhe.yml
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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"}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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/
|
||||
|
||||
|
||||
179
config/prowlarr/Definitions/exttorrents.yml
Normal file
179
config/prowlarr/Definitions/exttorrents.yml
Normal 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
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
154
config/prowlarr/Definitions/fappaizuri2fa.yml
Normal file
154
config/prowlarr/Definitions/fappaizuri2fa.yml
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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/
|
||||
|
||||
|
||||
239
config/prowlarr/Definitions/g3minitr4ck3r-api.yml
Normal file
239
config/prowlarr/Definitions/g3minitr4ck3r-api.yml
Normal 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)
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -84,7 +84,7 @@ login:
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
returnto: /
|
||||
returnto: /browse.php
|
||||
error:
|
||||
- selector: td:contains("Login failed!")
|
||||
message:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 }}"
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
207
config/prowlarr/Definitions/hdvideo.yml
Normal file
207
config/prowlarr/Definitions/hdvideo.yml
Normal 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
|
||||
@@ -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"]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
168
config/prowlarr/Definitions/hxpt.yml
Normal file
168
config/prowlarr/Definitions/hxpt.yml
Normal 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
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"]
|
||||
|
||||
197
config/prowlarr/Definitions/jptv4us-api.yml
Normal file
197
config/prowlarr/Definitions/jptv4us-api.yml
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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 }}"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user