1
0
mirror of https://github.com/Prowlarr/Indexers.git synced 2026-02-14 23:19:03 +00:00

Bump min version to v9

This commit is contained in:
Bogdan
2024-04-27 14:18:02 +03:00
parent 9840eb5712
commit 2c1b7ed251
479 changed files with 16 additions and 26684 deletions

View File

@@ -36,12 +36,11 @@ To test the definition:
## Active Versions
- [V8 Indexers](https://github.com/Prowlarr/Prowlarr/commit/1529527af9d2bf09dcd1b540b4c6f95a7dd00bd1) - Dev 1.1.0.2322
- Prowlarr Cardigann v8 includes several changes such as
- HtmlEncode and HtmlDecode filters
- [V7 Indexers](https://github.com/Prowlarr/Prowlarr/commit/ee6467073f64cfaa5ef0de2225f39f0fd0eb5c05) - Dev 0.4.4.1947
- Prowlarr Cardigann v7 includes several changes such as
- `Publisher`, `Year`, `Genre`, Query support
- [V9 Indexers](https://github.com/Prowlarr/Prowlarr/commit/bceebc34c134db8140a307e25312cb15e0ff5d63) - Dev 1.4.0.3230
- Prowlarr Cardigann v9 includes several changes such as
- AllowEmptyInputs
- default values
- MissingAttributeEqualsNoResults
## Depreciated Versions
@@ -86,3 +85,11 @@ To test the definition:
- Prowlarr Cardigann v6 includes several changes such as
- `doubanid` support
- `tmdbid` TV Search Support
### [V8 Indexers](https://github.com/Prowlarr/Prowlarr/commit/1529527af9d2bf09dcd1b540b4c6f95a7dd00bd1) - Dev 1.1.0.2322
- Prowlarr Cardigann v8 includes several changes such as
- HtmlEncode and HtmlDecode filters
### [V7 Indexers](https://github.com/Prowlarr/Prowlarr/commit/ee6467073f64cfaa5ef0de2225f39f0fd0eb5c05) - Dev 0.4.4.1947
- Prowlarr Cardigann v7 includes several changes such as
- `Publisher`, `Year`, `Genre`, Query support

View File

@@ -1,201 +0,0 @@
---
id: 1ptbar
name: 1ptbar
description: "1ptbar is a CHINESE Private Torrent Tracker for MOVIES / TV / E-LEARNING"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://1ptba.com/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
- {id: 402, cat: TV, desc: "TV Series/电视剧"}
- {id: 403, cat: TV, desc: "TV Shows/综艺节目"}
- {id: 406, cat: Audio/Video, desc: "Music Videos/音乐MV"}
- {id: 407, cat: TV/Sport, desc: "Sports/体育"}
- {id: 409, cat: Other, desc: "Misc/其他"}
- {id: 408, cat: Audio, desc: "HQ Audio/高品质音频"}
- {id: 412, cat: Other, desc: "Edu/教育"}
- {id: 411, cat: PC/Games, desc: "Games/游戏"}
- {id: 410, cat: PC/0day, desc: "Software/软件"}
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 1ptbar 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: flaresolverr
type: info
label: FlareSolverr
default: This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href="https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers" target="_blank" rel="noreferrer">FlareSolverr</a> to access it.
- 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: "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
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(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
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-last-of-type(6) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00"
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-last-of-type(6):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-last-of-type(5)
seeders:
selector: td.rowfollow:nth-last-of-type(4)
leechers:
selector: td.rowfollow:nth-last-of-type(3)
grabs:
selector: td.rowfollow:nth-last-of-type(2)
downloadvolumefactor:
case:
img.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:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.11 2024-03-27

View File

@@ -1,204 +0,0 @@
---
id: 2xfree
name: 2xFree
description: "2xFree is a CHINESE Private Torrent Tracker for 3D MOVIES / TV"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://pt.2xfree.org/
caps:
categorymappings:
# torrents.php
- {id: 526, cat: Movies, desc: "3DMovies(3D电影)"}
- {id: 527, cat: TV, desc: "3DSeries(3D剧集)"}
- {id: 533, cat: Movies, desc: "VRMovies(VR电影)"}
- {id: 534, cat: TV, desc: "VRSeries(VR剧集)"}
- {id: 537, cat: TV, desc: "VRShows(VR演出)"}
- {id: 530, cat: Console, desc: "VRGame(VR一体机游戏)"}
- {id: 531, cat: PC/Games, desc: "PCVRGame(PCVR游戏)"}
- {id: 532, cat: Other, desc: "VRTools(VR工具软件)"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: 2facode
type: text
label: 2FA code
- name: info_2fa
type: info
label: "About 2FA code"
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> on the 2xFree 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_ulslr
type: info
label: Upload Speed Limit Rule
default: The upload bandwidth shall not exceed 120Mbps, that is, the upload speed shall not exceed 15MB/s.
- name: flaresolverr
type: info
label: FlareSolverr
default: This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href="https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers" target="_blank" rel="noreferrer">FlareSolverr</a> to access it.
- name: info_activity
type: info
label: Account Inactivity
default: "Account retention rules:<ol><li>Veteran User and above will be retained forever</li><li>Elite User and above will not be deleted after parking (in the control panel)</li><li>Users with a parked account will be deleted if they do not log in for 400 consecutive days</li><li>Users with a non-parked account will be deleted if they do not log in for 150 consecutive days</li><li>Users with no traffic (ie, upload/download data are both 0) will be deleted if they do not log in for 100 consecutive days.</li></ol>"
login:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs:
secret: ""
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
two_step_code: "{{ .Config.2facode }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:has(h2:contains("失败"))
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}"
# 0 incldead, 1 active, 2 dead
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl (4 does not appear to work)
search_area: "{{ if or .Query.IMDBID .Query.DoubanID }}1{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(a[href^="details.php?id="])
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: img[data-src]
attribute: data-src
imdbid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="movie.douban.com/subject/"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 0.8
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.6 2023-06-18

View File

@@ -1,191 +0,0 @@
---
id: 3changtrai
name: 3ChangTrai
description: "3ChangTrai (3CT) is a VIETNAMESE Private Torrent Tracker for HD MOVIES / TV / GENERAL"
language: vi-VN
type: private
encoding: UTF-8
links:
- https://3changtrai.com/
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: "Animations"}
- {id: 406, cat: Audio/Video, desc: "Music Videos"}
- {id: 407, cat: TV/Sport, desc: "Sports"}
- {id: 408, cat: Audio, desc: "HQ Audio"}
- {id: 410, cat: PC, desc: "Software"}
- {id: 411, cat: Books, desc: "Documents"}
- {id: 412, cat: PC/Games, desc: "Games"}
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: flaresolverr
type: info
label: FlareSolverr
default: This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href="https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers" target="_blank" rel="noreferrer">FlareSolverr</a> to access it.
- 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: "Cherish your account. Inactive accounts will be deleted based on the following provisions:<ol><li>Nexus Master or later will not be deleted account.</li><li>Veteran User or higher will not be deleted if temporarily locked (at User Settings).</li><li>Temporarily locked accounts will be deleted if not logged in within 90 days.</li><li>Accounts that are not temporarily locked will be deleted if they do not log in within 60 days.</li><li>Accounts with no storage for uploads and downloads will be deleted if they do not log in within 30 days or have registered within 14 days.</li></ol>"
login:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:has(h2:contains("Đăng nhập thất bại!")) # Login failed!
- selector: td.embedded:has(h2:contains("Thất bại")) # Failure (captcha)
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 }}{{ .Keywords }}{{ 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 }}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:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
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:
selector: a[href*="imdb.com/title/tt"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(5) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +07:00" # ICT
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(5):not(:has(span))
optional: true
filters:
- name: append
args: " +07:00" # ICT
- 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(6)
seeders:
selector: td.rowfollow:nth-child(7)
leechers:
selector: td.rowfollow:nth-child(8)
grabs:
selector: td.rowfollow:nth-child(9)
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:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
description:
selector: td:nth-child(3)
remove: a, b, font, img, span
# NexusPHP 3ChangTrai v3.0 2020-04-30

View File

@@ -1,165 +0,0 @@
---
id: 3dtorrents
name: 3D Torrents
description: "3D Torrents (3DT) is a Private Torrent Tracker for 3D HD / BLURAY MOVIES"
language: en-US
type: private
encoding: UTF-8
links:
- http://www.3dtorrents.org/ # site does not support https ERR_CONNECTION_CLOSED
caps:
categorymappings:
- {id: 14, cat: Movies/SD, desc: "Movies XviD"}
- {id: 15, cat: Movies/DVD, desc: "Movies DVD-R"}
- {id: 11, cat: Movies/HD, desc: "Movies 720p"}
- {id: 13, cat: Movies/HD, desc: "Movies 1080p"}
- {id: 16, cat: Movies/3D, desc: "Movies 3DTV"}
- {id: 17, cat: Movies/BluRay, desc: "Movies Blu-ray"}
- {id: 27, cat: Movies/BluRay, desc: "Movies BD25 Encode"}
- {id: 33, cat: Movies/BluRay, desc: "Movies BD9 AVCHD"}
- {id: 22, cat: Movies, desc: "Movies 2D to 3D Conv"}
- {id: 32, cat: Movies, desc: "Bluray MKV Remux"}
- {id: 23, cat: Movies/3D, desc: "Movies Evo 3D"}
- {id: 36, cat: Movies/UHD, desc: "Movies 4K UHD Bluray"}
- {id: 37, cat: Movies/UHD, desc: "Movies 4K UHD Encode"}
- {id: 21, cat: PC, desc: "3D Software"}
- {id: 28, cat: XXX, desc: "Adult 720p"}
- {id: 29, cat: XXX, desc: "Adult 1080p"}
- {id: 30, cat: XXX, desc: "Adult Blu-ray"}
- {id: 31, cat: Other, desc: "Misc"}
- {id: 19, cat: Audio, desc: "Audio Packs"}
modes:
search: [q]
movie-search: [q]
music-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: sort
type: select
label: Sort requested from site
default: 3
options:
3: created
5: seeders
2: title
- name: type
type: select
label: Order requested from site
default: 2
options:
1: desc
2: asc
- name: info
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: "Inactivity grace period is three months which means that if you do not log in to the 3Dtorrents web site for 90 days, your account will be deleted. If you are VIP your will stay until the VIP period is over."
login:
path: index.php?page=login
method: form
form: form
inputs:
uid: "{{ .Config.username }}"
pwd: "{{ .Config.password }}"
captcha:
type: image
selector: img.captcha
input: private_key
error:
- selector: span.errormsg
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: index.php
inputs:
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
search: "{{ .Keywords }}"
page: torrents
category: 0
# 0 all, 1 Anaglyph 3D, 2 Side by Side,3 Over Under
3dformat: 0
# 0 all, 1 active only, 2 dead only
active: 0
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"
rows:
selector: "table[cellspacing!=\"1\"].lista > tbody > tr:has(a[href^=\"index.php?page=torrents&category=\"]){{ if .Config.freeleech }}:has(img[src=\"images/sign_free.png\"]){{ else }}{{ end }}"
fields:
category:
selector: a[href^="index.php?page=torrents&category="]
attribute: href
filters:
- name: querystring
args: category
- name: re_replace
args: ["(\\b0\\b)", "31"]
title:
selector: a[href^="index.php?page=torrent-details&id="]
details:
selector: a[href^="index.php?page=torrent-details&id="]
attribute: href
download:
selector: a[href^="index.php?page=torrent-details&id="]
attribute: href
filters:
- name: replace
args: ["index.php?page=torrent-details&id=", "download.php?id="]
poster:
selector: a[href^="index.php?page=torrent-details&id="]
attribute: onmouseover
filters:
- name: regexp
args: ",\\'(.+?)\\'"
genre:
selector: td:nth-child(2) span
description:
text: "{{ .Result.genre }}"
date:
selector: td:nth-last-child(5)
filters:
- name: append
args: " -07:00" # PDT
- name: dateparse
args: "dd/MM/yyyy zzz"
size:
selector: td:nth-last-child(4)
seeders:
selector: a[href^="index.php?page=peers"]
leechers:
selector: td:has(a[href^="index.php?page=peers"]) + td
grabs_optional:
selector: a[href^="index.php?page=torrent_history"]
optional: true
grabs:
text: "{{ if .Result.grabs_optional }}{{ .Result.grabs_optional }}{{ else }}0{{ end }}"
downloadvolumefactor:
case:
img[src="images/sign_free.png"]: 0
img[src="images/50off.png"]: 0.5
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
# xbtit

View File

@@ -1,184 +0,0 @@
---
id: 52pt
name: 52PT
description: "52PT is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://52pt.site/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
- {id: 402, cat: TV, desc: "TV Series/剧集"}
- {id: 403, cat: TV, desc: "TV Shows/综艺"}
- {id: 406, cat: Audio/Video, desc: "MusicVideo/音乐MV"}
- {id: 407, cat: TV/Sport, desc: "Sports/运体"}
- {id: 409, cat: Other, desc: "Misc/其他"}
- {id: 410, cat: Other, desc: "Opera/戏曲 曲艺"}
- {id: 408, cat: Audio, desc: "HQ Audio/无损音乐"}
- {id: 411, cat: XXX, desc: "Erotic/情色"}
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: 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 (junior college) and above will be retained forever</li><li>Elite User (junior high school) and above will not be deleted after parking (in the control panel)</li><li>Users with a parked account who do not log in for 400 consecutive days will be deleted</li><li>Users with non-parked account will be deleted if they do not log in for 150 consecutive days</li><li>Users with no traffic (that is, upload/download data are both 0) will be deleted if they do not log in for 15 consecutive days, or if the registration time reaches 60 days.</li></ol>"
login:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs:
secret: ""
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:has(h2:contains("失败"))
test:
path: index.php
selector: a[href="usercp.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
# currently supports only one query id at one time.
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}"
# 0 incldead, 1 active, 2 dead
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl
search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
# does not return imdb or doubanid in results
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td: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: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:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 1
minimumseedtime:
# 1 day (as seconds = 24 x 60 x 60)
text: 86400
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP Standard v1.5 Beta 4

View File

@@ -1,244 +0,0 @@
---
id: Bittorrentfiles
name: Bittorrentfiles
description: "Bittorrentfiles is a Private GERMAN tracker"
language: de-DE
type: private
encoding: UTF-8
links:
- https://bittorrentfiles.me/
legacylinks:
- https://www.Bittorrentfiles.me/
caps:
categorymappings:
# Movie
- {id: 48, cat: Movies/HD, desc: "Movie 1080p"}
- {id: 31, cat: Movies/3D, desc: "Movie 3D"}
- {id: 21, cat: Movies/HD, desc: "Movie 720p"}
- {id: 28, cat: Movies/SD, desc: "Movie AVI"}
- {id: 20, cat: Movies/DVD, desc: "Movie DVD-R"}
- {id: 40, cat: Movies/HD, desc: Movie "h264/x264"}
- {id: 30, cat: Movies/HD, desc: "Movie HD/BD"}
- {id: 49, cat: Movies/Foreign, desc: "Movie International"}
- {id: 78, cat: Movies/UHD, desc: "Movie UHD"}
- {id: 85, cat: Movies/HD, desc: "Movie x265"}
# Serien
- {id: 79, cat: TV/HD, desc: "Staffeln HD"}
- {id: 56, cat: TV/SD, desc: "Staffeln SD"}
- {id: 88, cat: TV/UHD, desc: "Staffeln UHD"}
- {id: 86, cat: TV/UHD, desc: "Folgen UHD"}
- {id: 54, cat: TV/HD, desc: "Folgen HD"}
- {id: 80, cat: TV/HD, desc: "Folgen HD/BD"}
- {id: 7, cat: TV/SD, desc: "Folgen SD"}
- {id: 55, cat: TV/Foreign, desc: "Folgen International"}
# Doku
- {id: 91, cat: TV/Documentary, desc: "Doku UHD"}
- {id: 64, cat: TV/Documentary, desc: "Doku HD"}
- {id: 36, cat: TV/Documentary, desc: "Doku SD"}
- {id: 81, cat: TV/Documentary, desc: "Doku 3D"}
- {id: 82, cat: TV/Documentary, desc: "Doku Packs"}
# Spiele
- {id: 4, cat: PC/Games, desc: "Spiele Windows"}
- {id: 92, cat: PC/Mac, desc: "Spiele Mac"}
- {id: 93, cat: PC, desc: "Spiele Linux"}
- {id: 97, cat: Console/XBox, desc: "Spiele XBOX"}
- {id: 94, cat: PC/Mobile-Other, desc: "Spiele Mobile"}
- {id: 95, cat: Console/NDS, desc: "Spiele Nintendo"}
- {id: 96, cat: Console/PSP, desc: "Spiele Playstation"}
- {id: 42, cat: Console/Other, desc: "Spiele Andere"}
# Musik
- {id: 66, cat: Audio, desc: "Musik Alben"}
- {id: 75, cat: Audio, desc: "Musik Singles"}
- {id: 50, cat: Audio, desc: "Musik Charts"}
- {id: 52, cat: Audio, desc: "Musik Packs"}
- {id: 53, cat: Audio/Video, desc: "Musik Video"}
- {id: 61, cat: Audio/Video, desc: "Musik DVD-R"}
- {id: 83, cat: Audio/Lossless, desc: "Musik Flac"}
- {id: 68, cat: Audio, desc: "Musik Live"}
- {id: 6, cat: Audio, desc: "Musik Misc"}
- {id: 51, cat: Audio, desc: "Musik OST"}
- {id: 67, cat: Audio, desc: "Musik Sampler"}
# App
- {id: 98, cat: PC/0day, desc: "App Windows"}
- {id: 62, cat: PC/Mac, desc: "App Mac OS"}
- {id: 63, cat: PC/0day, desc: "App Linux"}
- {id: 34, cat: PC, desc: "App Andere"}
# Sport
- {id: 74, cat: TV/Sport, desc: "Sport HD"}
- {id: 39, cat: TV/Sport, desc: "Sport SD"}
# Sonstiges
- {id: 41, cat: Audio/Audiobook, desc: "Sonstiges A-Book"}
- {id: 33, cat: TV/Anime, desc: "Sonstiges Anime"}
- {id: 35, cat: Books/EBook, desc: "Sonstiges e-Book-DE"}
- {id: 90, cat: Books/EBook, desc: "Sonstiges e-Book-INT"}
- {id: 65, cat: Other, desc: "Sonstiges E-Learning"}
- {id: 37, cat: PC, desc: "Sonstiges Mobile"}
- {id: 87, cat: Books/Mags, desc: "Sonstiges E-Paper"}
- {id: 38, cat: Other, desc: "Sonstiges Kids"}
- {id: 47, cat: Other, desc: "Sonstiges Line"}
- {id: 9, cat: Other, desc: "Sonstiges Andere"}
# XXX
- {id: 58, cat: XXX/x264, desc: "XXX HD"}
- {id: 46, cat: XXX, desc: "XXX Hentai"}
- {id: 59, cat: XXX/Pack, desc: "XXX Pack"}
- {id: 27, cat: XXX/SD, desc: "XXX SD"}
- {id: 76, cat: XXX, desc: "XXX Andere"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
book-search: [q]
settings:
- name: user
type: text
label: Username
- name: pass
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: added
options:
added: created
seeds: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_account
type: info
label: Account Settings
default: In order to see the correct date and size in the torrent rows, change the <b>Torrentliste:</b> setting to <b>Modern</b> on your account profile.
- 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: "Inactive accounts of users, power users and mega users will be permanently deleted from the database after 125 days! Torrents in your share don't count as activity - only logging in again counts! You can extend this period to 250 days by setting your account to parking. You can find the option to do this under Edit Profile."
login:
path: signin.php
method: post
inputs:
user: "{{ .Config.user }}"
pass: "{{ .Config.pass }}"
returnto: "%2Fbrowse.php"
error:
- selector: .error
test:
path: index.php
selector: a[href^="/logout.php?c="]
search:
path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
# 0=title, 1=descr, 2=nfo, 3=all, 4=imdb
search_where: "{{ if .Query.IMDBID }}3{{ else }}0{{ end }}"
# 0=active, 1=all, 2=onlydead, 4=only upload, 5=doubleup, 6=halfdown, 7=highlight, 8=request
status: "{{ if .Config.freeleech }}4{{ else }}1{{ end }}"
orderby: "{{ .Config.sort }}"
sort: "{{ .Config.type }}"
rows:
selector: table.tableinborder > tbody > tr:has(a[href^="/download.php"])
fields:
category:
selector: a[href^="/browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php"]
attribute: title
details:
selector: a[href^="details.php"]
attribute: href
download:
selector: a[href^="/download.php"]
attribute: href
grabs_optional:
selector: a[title="Snatcher"]
optional: true
grabs:
text: "{{ if .Result.grabs_optional }}{{ .Result.grabs_optional }}{{ else }}0{{ end }}"
files_optional:
selector: a[title="Files"]
optional: true
files:
text: "{{ if .Result.files_optional }}{{ .Result.files_optional }}{{ else }}0{{ end }}"
size:
selector: td:nth-child(6)
seeders_optional:
selector: a[title="Seeder"]
optional: true
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
selector: a[title="Leecher"]
optional: true
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
# 2 flavours of dates
date_day:
# Heute 13:30:04
# Gestern 09:10:10
selector: td:nth-child(10):contains("Heute"), td:nth-child(10):contains("Gestern")
optional: true
filters:
- name: split
args: ["b", 0]
- name: replace
args: ["Heute", "Today"]
- name: replace
args: ["Gestern", "Yesterday"]
- name: append
args: " +01:00" # CET
date_year:
# 30.02.2018 23:12:50
selector: td:nth-child(10):contains("."):contains(":")
optional: true
filters:
- name: split
args: ["b", 0]
- name: append
args: " +01:00" # CET
- name: dateparse
args: "dd.MM.yyyy HH:mm:ss zzz"
date:
text: "{{ if or .Result.date_year .Result.date_day }}{{ or .Result.date_year .Result.date_day }}{{ else }}now{{ end }}"
downloadvolumefactor:
case:
img[alt="OU"]: 0
img[alt="D/2"]: 0.5
img[alt="D / 2"]: 0.5
"*": 1
uploadvolumefactor:
case:
img[alt="2xU"]: 2
"*": 1
minimumratio:
text: 0.8
minimumseedtime:
# 60 hours (as seconds = 60 x 60 x 60)
text: 216000
# engine n/a

View File

@@ -1,176 +0,0 @@
---
id: aither-api
name: Aither (API)
description: "Aither is a Private Torrent Tracker for HD MOVIES / TV"
language: en-US
type: private
encoding: UTF-8
links:
- https://aither.cc/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movie"}
- {id: 9, cat: TV/Sport, desc: "Sport"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Music"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
book-search: [q]
settings:
- name: apikey
type: text
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://aither.cc/\" target=\"_blank\">Aither</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: "You must log in to the Aither web site with your browser once every 120 days to prevent your account from getting disabled."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free[]=100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
# global MR is 0.4 but torrents must be seeded for 5 days regardless of ratio
# minimumratio:
# text: 0.4
minimumseedtime:
# 5 days (as seconds = 5 x 24 x 60 x 60)
text: 432000
# json UNIT3D 8.0.2

View File

@@ -1,336 +0,0 @@
---
id: amigosshare
name: Amigos Share Club
description: "Amigos Share Club is a Brazilian Private site for TV / MOVIES / GENERAL"
language: pt-BR
type: private
encoding: UTF-8
requestDelay: 2
links:
- https://cliente.amigos-share.club/
legacylinks:
- http://amigos-share.club/
- https://amigos-share.club/
caps:
categorymappings:
- {id: 107, cat: XXX, desc: "Adultos: Gay"}
- {id: 75, cat: XXX, desc: "Adultos: Hentai"}
- {id: 108, cat: XXX, desc: "Adultos: Transex/Female"}
- {id: 74, cat: XXX, desc: "Adultos: XXX"}
- {id: 69, cat: TV/Anime, desc: "Anime: Anime"}
- {id: 116, cat: TV/Anime, desc: "Anime: Filmes"}
- {id: 118, cat: TV/Anime, desc: "Anime: Séries"}
- {id: 23, cat: PC/Mobile-Android, desc: "Aplicativos: Android"}
- {id: 27, cat: PC/Mobile-iOS, desc: "Aplicativos: iPad"}
- {id: 26, cat: PC/Mobile-iOS, desc: "Aplicativos: iPhone"}
- {id: 28, cat: PC/Mobile-iOS, desc: "Aplicativos: iPod"}
- {id: 25, cat: PC, desc: "Aplicativos: Linux"}
- {id: 22, cat: PC/Mac, desc: "Aplicativos: Mac"}
- {id: 21, cat: PC/0day, desc: "Aplicativos: Windows"}
- {id: 72, cat: Books, desc: "Apostila: Apostila"}
- {id: 71, cat: Books, desc: "Apostila: Cursos"}
- {id: 121, cat: Audio/Audiobook, desc: "Ebook: Audio-book"}
- {id: 112, cat: Books, desc: "Ebook: HQs"}
- {id: 67, cat: Books, desc: "Ebook: Livros"}
- {id: 68, cat: Books, desc: "Ebook: Revistas"}
- {id: 119, cat: Movies, desc: "Filmes:"}
- {id: 70, cat: XXX, desc: "Fotos: XXX"}
- {id: 57, cat: Console, desc: "Jogos: Android"}
- {id: 52, cat: Console, desc: "Jogos: Dreamcast"}
- {id: 109, cat: Console, desc: "Jogos: Emulação"}
- {id: 61, cat: Console, desc: "Jogos: Emuladores e Roms"}
- {id: 48, cat: PC/Mac, desc: "Jogos: Mac"}
- {id: 58, cat: Console/NDS, desc: "Jogos: Nintendo DS"}
- {id: 110, cat: Console, desc: "Jogos: Nintendo Switch"}
- {id: 47, cat: PC/Games, desc: "Jogos: Pc"}
- {id: 49, cat: Console, desc: "Jogos: Ps1"}
- {id: 50, cat: Console, desc: "Jogos: Ps2"}
- {id: 51, cat: Console/PS3, desc: "Jogos: Ps3"}
- {id: 79, cat: Console/PS4, desc: "Jogos: Ps4"}
- {id: 82, cat: Console/PSP, desc: "Jogos: PSP"}
- {id: 55, cat: Console/Wii, desc: "Jogos: Wii"}
- {id: 54, cat: Console/XBox 360, desc: "Jogos: Xbox360"}
- {id: 56, cat: Console/XBox, desc: "Jogos: Xbox"}
- {id: 78, cat: Console/XBox One, desc: "Jogos: Xbox One"}
- {id: 29, cat: Audio, desc: "Musica: Axé"}
- {id: 38, cat: Audio, desc: "Musica: Blues"}
- {id: 39, cat: Audio, desc: "Musica: Dance"}
- {id: 40, cat: Audio, desc: "Musica: Discografia"}
- {id: 43, cat: Audio, desc: "Musica: Dubstep"}
- {id: 30, cat: Audio, desc: "Musica: Eletronica"}
- {id: 41, cat: Audio, desc: "Musica: Erudita"}
- {id: 42, cat: Audio, desc: "Musica: Forró"}
- {id: 31, cat: Audio, desc: "Musica: Funk"}
- {id: 84, cat: Audio, desc: "Musica: Game (OST)"}
- {id: 83, cat: Audio, desc: "Musica: Gospel"}
- {id: 37, cat: Audio, desc: "Musica: Hard Rock"}
- {id: 33, cat: Audio, desc: "Musica: Hip-Hop"}
- {id: 114, cat: Audio, desc: "Musica: MPB"}
- {id: 77, cat: Audio, desc: "Musica: Outros"}
- {id: 32, cat: Audio, desc: "Musica: Pagode"}
- {id: 115, cat: Audio, desc: "Musica: POP"}
- {id: 34, cat: Audio, desc: "Musica: Rap"}
- {id: 76, cat: Audio, desc: "Musica: Reggae"}
- {id: 36, cat: Audio, desc: "Musica: Rock"}
- {id: 45, cat: Audio, desc: "Musica: Samba"}
- {id: 46, cat: Audio, desc: "Musica: Sertanejo"}
- {id: 120, cat: TV, desc: "Series:"}
- {id: 65, cat: TV, desc: "Shows: Show"}
- {id: 63, cat: TV, desc: "Tv: Aberta"}
- {id: 62, cat: TV/Sport, desc: "Tv: Esportes"}
- {id: 64, cat: TV, desc: "Tv: Fechada"}
- {id: 73, cat: TV, desc: "Video Aula: Video Aula"}
- {id: 127, cat: Other, desc: "Outros: Add-ons"}
- {id: 126, cat: Other, desc: "Outros: Extensões"}
- {id: 129, cat: Other, desc: "Outros: Fonts"}
- {id: 130, cat: Other, desc: "Outros: MOD"}
- {id: 125, cat: Other, desc: "Outros: Pack de Imagens"}
- {id: 122, cat: Other, desc: "Outros: Plug-ins"}
- {id: 128, cat: Other, desc: "Outros: Scripts"}
- {id: 124, cat: Other, desc: "Outros: Vetores"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: info_results
type: info
label: "Search results"
default: "Set <b>Exibição De Torrents</b> to <b>Lista</b> in your <b>Minhas Configurações</b>.<br />Using <b>Capas</b> is not supported and will return 0 results."
- name: freeleech
type: checkbox
label: Filter freeleech only
default: false
- 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_activity
type: info
label: Account Inactivity
default: "Inactive accounts, that is, without access for 90 days (3 months), will be automatically deleted by the system; with no possibility of reactivation."
login:
path: account-login.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: yes
error:
- selector: div.alert-error
test:
path: torrents-search.php
selector: a[href="account-logout.php"]
search:
paths:
# http://amigos-share.club/torrents-search.php?search=&sort=id&order=desc&page=1
- path: torrents-search.php
# site displays just 20 results, no profile options found to change this, so we attempt to fetch 5 pages
- path: torrents-search.php
inputs:
page: 1
- path: torrents-search.php
inputs:
page: 2
- path: torrents-search.php
inputs:
page: 3
- path: torrents-search.php
inputs:
page: 4
inputs:
# note: site does not support multi cat search.
# replace spaces with wildcard (percent symbol) as site's default search is exact string.
search: "{{ re_replace .Keywords \"[\\s]+\" \"%\" }}"
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
# torrents-search.php does not support imdbid search or return imdb links.
keywordsfilters:
# drop the year from searches since site titles do not include year
- name: re_replace
args: ["(19|20[0-9]{2})", ""]
rows:
selector: "div#fancy-list-group ul.list-group li.list-group-item{{ if .Config.freeleech }}:has(span.badge-success:contains(\"FREE\")){{ else }}{{ end }}"
fields:
_quality:
selector: div.list-group-item-content p.m-0 span.badge-primary:contains("1080p"), div.list-group-item-content p.m-0 span.badge-primary:contains("720p"), div.list-group-item-content p.m-0 span.badge-primary:contains("4k")
optional: true
filters:
- name: replace
args: ["4k", "2160p"]
_year:
selector: div.list-group-item-content p.m-0 span.badge-primary[style$="#246AB6;"]
optional: true
_type:
selector: div.list-group-item-content p.m-0 span.badge-info:contains("Rip"), div.list-group-item-content p.m-0 span.badge-info:contains("WEB-"), div.list-group-item-content p.m-0 span.badge-info:contains("TV"), div.list-group-item-content p.m-0 span.badge-info:contains("Blu-Ray"), div.list-group-item-content p.m-0 span.badge-info:contains("BD50"), div.list-group-item-content p.m-0 span.badge-info:contains("MUX"), div.list-group-item-content p.m-0 span.badge-info:contains("DVD"), div.list-group-item-content p.m-0 span.badge-info:contains("320"), div.list-group-item-content p.m-0 span.badge-info:contains("CAM"), div.list-group-item-content p.m-0 span.badge-info:contains("rip")
optional: true
_language:
selector: div.list-group-item-content p.m-0 span.badge-primary[style$="#b6249d;"]
optional: true
genre:
selector: div.list-group-item-content p.m-0 span.badge-primary[style$="#1c38c2;"]
description:
text: "{{ .Result.genre }}"
title:
selector: a[href*="torrents-details.php?id="], a[href*="details-misc.php?id="]
filters:
# strip out the non-english title [to the left of the brackets] and drop the brackets enclosing the english title
- name: re_replace
args: ["^(.*?)[\\(](.*?)[\\)](.*?)$", "$2$3"]
# add the year to the title
- name: append
args: "{{ if .Result._year }} {{ .Result._year }}{{ else }}{{ end }}"
# add the quality to the title
- name: append
args: "{{ if .Result._quality }} {{ .Result._quality }}{{ else }}{{ end }}"
# add the type to the title
- name: append
args: "{{ if .Result._type }} {{ .Result._type }}{{ else }}{{ end }}"
# add audio to the title
- name: append
args: "{{ if .Result._language }} {{ .Result._language }}{{ else }}{{ end }}"
- name: re_replace
args: ["(Dual|[Nn]acional|[Dd]ublado)", "Brazilian $1"]
details:
selector: a[href*="torrents-details.php?id="], a[href*="details-misc.php?id="]
attribute: href
download:
selector: a[href*="download.php?id="]
attribute: href
category:
selector: div.list-group-item-addon img
attribute: src
case:
# unfortunately the site does not have category numbers on the results page, just a image which can apply to both movies and tv.
# therefore I've order the list to favour movies.
# also, not all images have been verified as the site has many empty categories. their image names have been extrapolated from the cat desc.
"[src$=\"/Adultos.fw.png\"]": 74
"[src$=\"/Gay.jpeg\"]": 107
"[src$=\"/Trans.jpeg\"]": 108
"[src$=\"/Hentai.png\"]": 75
"[src$=\"/Anime2.fw.png\"]": 69
"[src$=\"/aplicativos.fw.png\"]": 21
"[src$=\"/Mac.png\"]": 22
"[src$=\"/Android.png\"]": 23
"[src$=\"/Linux.png\"]": 25
"[src$=\"/iPhone.png\"]": 26
"[src$=\"/iPad.png\"]": 27
"[src$=\"/iPod.png\"]": 28
"[src$=\"/Cursos.png\"]": 71
"[src$=\"/Apostila.png\"]": 72
"[src$=\"/E-books.png\"]": 67
"[src$=\"/Revista.png\"]": 68
"[src$=\"/HQ.png\"]": 112
"[src$=\"/filmes2.fw.png\"]": 119
"[src$=\"/Revistas-XXX.png\"]": 70
"[src$=\"/PS4.png\"]": 79
"[src$=\"/Jogos-PC.png\"]": 47
"[src$=\"/Emulador.png\"]": 61
"[src$=\"/Emulacao.png\"]": 109
"[src$=\"/Jogos-Mac.png\"]": 48
"[src$=\"/Jogos-PS1.png\"]": 49
"[src$=\"/Jogos-PS2.png\"]": 50
"[src$=\"/Jogos-PS3.png\"]": 51
"[src$=\"/Jogos-Dreamcast.png\"]": 52
"[src$=\"/Jogos-Xbox360.png\"]": 54
"[src$=\"/Jogos-Xbox.png\"]": 56
"[src$=\"/Jogos-Wii.png\"]": 55
"[src$=\"/Jogos-DS.png\"]": 58
"[src$=\"/jogosandroid.png\"]": 57
"[src$=\"/PSP.png\"]": 82
"[src$=\"/Jogos-NS.png\"]": 110
"[src$=\"/Jogos-XboxOne.png\"]": 78
"[src$=\"/Axe.png\"]": 29
"[src$=\"/Eletronica.png\"]": 30
"[src$=\"/Funk.png\"]": 31
"[src$=\"/Pagode.png\"]": 32
"[src$=\"/HIP_HOP.png\"]": 33
"[src$=\"/Rap.png\"]": 34
"[src$=\"/Rock.png\"]": 36
"[src$=\"/Hard-Rock.png\"]": 37
"[src$=\"/Blues.png\"]": 38
"[src$=\"/Dance.png\"]": 39
"[src$=\"/Discografia.png\"]": 40
"[src$=\"/Erudita.png\"]": 41
"[src$=\"/Forro.png\"]": 42
"[src$=\"/Dubstep.png\"]": 43
"[src$=\"/Sertanejo.png\"]": 46
"[src$=\"/Samba.png\"]": 45
"[src$=\"/Musica-Outros.png\"]": 77
"[src$=\"/Reggae.png\"]": 76
"[src$=\"/Gospel.png\"]": 83
"[src$=\"/POP.png\"]": 115
"[src$=\"/MPB.png\"]": 114
"[src$=\"/OST.png\"]": 84
"[src$=\"/seriados.fw.png\"]": 120
"[src$=\"/show.fw.png\"]": 65
"[src$=\"/Aberta.png\"]": 63
"[src$=\"/Esporte.png\"]": 62
"[src$=\"/Fechada.png\"]": 64
"[src$=\"/video aula4.fw.png\"]": 73
"[src$=\"/Add-ons.png\"]": 127
"[src$=\"/Extensões.png\"]": 126
"[src$=\"/Fonts.png\"]": 129
"[src$=\"/MOD.png\"]": 130
"[src$=\"/Imagens.png\"]": 125
"[src$=\"/Plug-ins.png\"]": 122
"[src$=\"/Scripts.png\"]": 128
"[src$=\"/Vetores.png\"]": 124
"[src$=\"/outros2.png\"]": 130
date_optional:
selector: p:contains("Lançado:")
# auto adjusted by site account profile
optional: true
filters:
- name: regexp
args: "Lançado: (.+?)$"
- name: re_replace
args: [" (\\d:)", " 0$1"]
- name: dateparse
args: "dd/MM/yy HH:mm:ss"
date:
text: "{{ if .Result.date_optional }}{{ .Result.date_optional }}{{ else }}now{{ end }}"
size:
selector: div.list-group-item-content p.m-0 span.badge-info
seeders:
selector: div.list-group-item-controls a:nth-child(1)
leechers:
selector: div.list-group-item-controls a:nth-child(2)
grabs:
selector: div.list-group-item-controls a:nth-child(3)
downloadvolumefactor:
case:
"span.badge-success:contains(\"FREE\")": 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
# engine n/a

View File

@@ -1,295 +0,0 @@
---
id: anilibria
name: AniLibria
description: "AniLibria is a Public torrent tracker for anime, voiced on russian by AniLibria team"
language: ru-RU
type: public
encoding: UTF-8
links:
- https://www.anilibria.tv/
caps:
categories:
Anime: TV/Anime
Movies: Movies/Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: stripcyrillic
type: checkbox
label: Strip Cyrillic Letters
default: false
- name: sonarr_compatibility
type: checkbox
label: Improve Sonarr compatibility by trying to better parse Season information in release titles.
default: false
- name: addrussiantotitle
type: checkbox
label: Add RUS to end of all titles to improve language detection by Sonarr and Radarr. Will cause English-only results to be misidentified.
default: false
search:
paths:
# https://github.com/anilibria/docs/blob/master/api_v3.md
- path: "https://api.anilibria.tv/v3/title/{{ if .Keywords }}search?search={{ .Keywords }}&{{ else }}updates?{{ end }}filter=names,posters.small.url,code,torrents.list,season.year,description&limit=100"
response:
type: json
keywordsfilters:
# strip season and/or ep
- name: re_replace
args: ["(?i)\\b(?:[SE]\\d{1,4}){1,2}\\b\\s?", ""]
rows:
selector: list
attribute: torrents.list
multiple: true
fields:
_episodes:
selector: episodes.string
optional: true
category:
text: "{{ if eq .Result._episodes \"Фильм\" }}Movies{{ else }}Anime{{ end }}"
title_ru:
selector: ..names.ru
title_en:
selector: ..names.en
title_en_parsed:
selector: ..names.en
filters:
- name: re_replace
args: ["(?i)\\bPart\\s*1\\b", "Part One"]
- name: re_replace
args: ["(?i)\\bPart\\s*2\\b", "Part Two"]
- name: re_replace
args: ["(?i)\\bPart\\s*3\\b", "Part Three"]
- name: re_replace
args: ["(?i)\\bPart\\s*4\\b", "Part Four"]
- name: re_replace
args: ["(?i)\\bPart\\s*5\\b", "Part Five"]
- name: re_replace
args: ["(?i)\\bPart\\s*6\\b", "Part Six"]
- name: re_replace
args: ["(?i)\\bPart\\s*7\\b", "Part Seven"]
- name: re_replace
args: ["(?i)\\bPart\\s*8\\b", "Part Eight"]
- name: re_replace
args: ["(?i)\\bPart\\s*9\\b", "Part Nine"]
- name: re_replace
args: ["(?i)\\bseason\\s*(\\d+)\\b", ""]
- name: re_replace
args: ["(?i)\\b(\\d+)(st|nd|rd|th)\\s*season[\\s\\.]*", ""]
- name: re_replace
args: ["(?i)\\b(\\d+)\\s*season\\b[\\s\\.]*", ""]
- name: re_replace
args: ["(?i)\\bseason\\s*([IVXLCDM]+)\\b", ""]
- name: re_replace
args: ["\\bI$", ""]
- name: re_replace
args: ["\\bII$", ""]
- name: re_replace
args: ["\\bIII$", ""]
- name: re_replace
args: ["\\bIV$", ""]
- name: re_replace
args: ["\\bV$", ""]
- name: re_replace
args: ["\\bVI$", ""]
- name: re_replace
args: ["\\bVII$", ""]
- name: re_replace
args: ["\\bVIII$", ""]
- name: re_replace
args: ["\\bIX$", ""]
- name: re_replace
args: ["\\bX$", ""]
- name: re_replace
args: ["(?i)\\b(\\d+)(?:st|nd|rd|th)?\\b", ""]
- name: trim
title_alternative:
selector: ..names.alternative
optional: true
filters:
- name: re_replace
args: ["(\\([\\p{IsCyrillic}\\W]+\\))|(^[\\p{IsCyrillic}\\W\\d]+\\/ )|([\\p{IsCyrillic} \\-]+,+)|([\\p{IsCyrillic}]+)", "{{ if .Config.stripcyrillic }}{{ else }}$1$2$3$4{{ end }}"]
- name: re_replace
args: ["[\\[\\(\\{<«][\\s\\W]*[\\]\\)\\}>»]", ""]
- name: re_replace
args: ["^[\\s&,\\.!\\?\\+\\-_\\|\\/':]+", ""]
- name: re_replace
args: ["^OVA$", ""]
_season_number_en:
selector: ..names.en
filters:
- name: re_replace
args: ["(?i)\\bPart\\s*\\d+\\s*$", ""]
- name: re_replace
args: ["(?i)(^.*\\bseason\\s*(\\d+)\\b\\s*$)", "S$2"]
- name: re_replace
args: ["(?i)(^.*\\b(\\d+)(st|nd|rd|th)\\s*season\\b.*$)", "S$2"]
- name: re_replace
args: ["(?i)(^.*\\b(\\d+)\\s*season\\b.*$)", "S$2"]
- name: re_replace
args: ["(?i)(^.*\\bseason\\s*([IVXLCDM]+)\\b\\s*$)", "$1"]
- name: re_replace
args: ["(^.*X$)", "S10"]
- name: re_replace
args: ["(^.*IX$)", "S9"]
- name: re_replace
args: ["(^.*VIII$)", "S8"]
- name: re_replace
args: ["(^.*VII$)", "S7"]
- name: re_replace
args: ["(^.*VI$)", "S6"]
- name: re_replace
args: ["(^.*V$)", "S5"]
- name: re_replace
args: ["(^.*IV$)", "S4"]
- name: re_replace
args: ["(^.*III$)", "S3"]
- name: re_replace
args: ["(^.*II$)", "S2"]
- name: re_replace
args: ["(^.*I$)", "S1"]
- name: re_replace
args: ["(?i)(^.*\\b(\\d+)(?:st|nd|rd|th)?\\b\\s*$)", "S$2"]
- name: re_replace
args: ["(?i)^(?!S\\d+).*", ""]
_season_number_alternative:
selector: ..names.alternative
optional: true
filters:
- name: re_replace
args: ["(?i)\\bPart\\s*\\d+\\s*$", ""]
- name: re_replace
args: ["(?i)(^.*\\bseason\\s*(\\d+)\\b\\s*$)", "S$2"]
- name: re_replace
args: ["(?i)(^.*\\b(\\d+)(st|nd|rd|th)\\s*season\\b\\s*$)", "S$2"]
- name: re_replace
args: ["(?i)(^.*\\b(\\d+)\\s*season\\b\\s*$)", "S$2"]
- name: re_replace
args: ["(?i)(^.*\\bseason\\s*([IVXLCDM]+)\\b\\s*$)", "$1"]
- name: re_replace
args: ["(^.*X$)", "S10"]
- name: re_replace
args: ["(^.*IX$)", "S9"]
- name: re_replace
args: ["(^.*VIII$)", "S8"]
- name: re_replace
args: ["(^.*VII$)", "S7"]
- name: re_replace
args: ["(^.*VI$)", "S6"]
- name: re_replace
args: ["(^.*V$)", "S5"]
- name: re_replace
args: ["(^.*IV$)", "S4"]
- name: re_replace
args: ["(^.*III$)", "S3"]
- name: re_replace
args: ["(^.*II$)", "S2"]
- name: re_replace
args: ["(^.*I$)", "S1"]
- name: re_replace
args: ["(?i)(^.*\\b(\\d+)(?:st|nd|rd|th)?\\b\\s*$)", "S$2"]
- name: re_replace
args: ["(?i)^(?!S\\d+).*", ""]
_season_number:
text: "{{ .Result._season_number_en }}"
filters:
- name: append
args: "{{ .Result._season_number_alternative }}"
- name: re_replace
args: ["^S1S1$", "S1"]
- name: re_replace
args: ["^S1(.+)$", "$1"]
- name: re_replace
args: ["^(S\\d+).*$", "$1"]
- name: re_replace
args: ["^$", "S1"]
year:
selector: ..season.year
_quality:
selector: quality.string
_quality_type:
selector: quality.type
_quality_resolution:
selector: quality.resolution
_quality_encoder:
selector: quality.encoder
filters:
- name: re_replace
args: ["(?i)^h", "x"]
title_parsed:
text: "{{ if .Config.stripcyrillic }}{{ else }}{{ .Result.title_ru }} / {{ end }}{{ .Result.title_en_parsed }} {{ .Result._season_number}}E{{ .Result._episodes }} [{{ .Result._quality_type }} {{ .Result._quality_resolution }} {{ .Result._quality_encoder }}]"
filters:
- name: re_replace
args: ["\\bS\\d+EФильм\\b", "({{ .Result.year }}) MOVIE"]
- name: re_replace
args: ["\\bS\\d+EOVA\\b", "({{ .Result.year }}) OVA"]
- name: re_replace
args: ["\\bS\\d+EONA\\b", "({{ .Result.year }}) ONA"]
- name: re_replace
args: ["\\bS\\d+EMovie\\b", "({{ .Result.year }}) MOVIE"]
- name: re_replace
args: ["\\bS\\d+EП/м фильм\\b", "({{ .Result.year }}) MOVIE"]
- name: re_replace
args: ["\\bS\\d+EРекап\\b", "({{ .Result.year }}) RECAP"]
- name: re_replace
args: ["\\bS\\d+ETV-Special\\b", "({{ .Result.year }}) SPECIAL"]
- name: append
args: "{{ if .Config.addrussiantotitle }} - RUS{{ else }}{{ end }}"
title_original:
text: "{{ if .Config.stripcyrillic }}{{ else }}{{ .Result.title_ru }} / {{ end }}{{ .Result.title_en }}{{ if .Result.title_alternative }} / AKA {{ .Result.title_alternative }}{{ else }}{{ end }} ({{ .Result.year }}) [{{ .Result._quality }}]{{ if .Result._episodes }} - E{{ .Result._episodes }}{{ else }}{{ end }}"
filters:
- name: re_replace
args: [" - \\bEФильм\\b", " - MOVIE"]
- name: re_replace
args: [" - \\bEMovie\\b", " - MOVIE"]
- name: re_replace
args: [" - \\bEП/м фильм\\b", " - MOVIE"]
- name: re_replace
args: [" - \\bEOVA\\b", " - OVA"]
- name: re_replace
args: [" - \\bEONA\\b", " - ONA"]
- name: append
args: "{{ if .Config.addrussiantotitle }} - RUS{{ else }}{{ end }}"
title:
text: "{{ if .Config.sonarr_compatibility }}{{ .Result.title_parsed }}{{ else }}{{ .Result.title_original }}{{ end }}"
_code:
selector: ..code
details:
text: "{{ .Config.sitelink }}release/{{ .Result._code }}.html"
download_url:
selector: url
download:
text: "{{ .Config.sitelink }}{{ .Result.download_url }}"
magnet:
selector: magnet
poster:
selector: ..posters.small.url
filters:
- name: prepend
args: "https://static.anilibria.tv"
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: downloads
date:
# unix
selector: uploaded_timestamp
size:
selector: total_size
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
description:
selector: ..description
# json api v3

View File

@@ -1,177 +0,0 @@
---
id: animeworld-api
name: AnimeWorld (API)
description: "AnimeWorld (AW) is a GERMAN Private site for ANIME / MANGA / HENTAI"
language: de-DE
type: private
encoding: UTF-8
links:
- https://animeworld.cx/
caps:
categorymappings:
- {id: 1, cat: Movies/Other, desc: "Anime Filme"}
- {id: 2, cat: TV/Anime, desc: "Anime Serien"}
- {id: 3, cat: Audio, desc: "Anime Musik / OSTs"}
- {id: 4, cat: PC/Games, desc: "Anime Spiele"}
- {id: 5, cat: XXX, desc: "Anime Hentai"}
- {id: 6, cat: PC, desc: "Software"}
- {id: 7, cat: Other, desc: "Sonstiges"}
- {id: 8, cat: Movies, desc: "Filme"}
- {id: 9, cat: TV, desc: "Serien"}
- {id: 10, cat: PC/Games, desc: "Spiele"}
- {id: 11, cat: Audio, desc: "Musik"}
- {id: 12, cat: Books, desc: "Manga"}
- {id: 13, cat: Movies, desc: "Cartoon Filme"}
- {id: 14, cat: TV, desc: "Cartoon Serie"}
- {id: 15, cat: XXX, desc: "H-Manga / Doujinshi"}
modes:
search: [q]
tv-search: [q, season, ep, tvdbid, tmdbid]
movie-search: [q, 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://animeworld.cx/\" target=\"_blank\">AnimeWorld</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
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
- name: info_activity
type: info
label: Account Inactivity
default: "Accounts are set as inactive by the system after 180 days. After 270 days in inactive status, the accounts are automatically deleted from the system."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range $i, $e := .Categories }}&categories[{{$i}}]={{.}}{{end}}{{ if .Config.freeleech }}&free[]=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:
selector: name
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)^None$", ""]
- name: re_replace
args: ["(?i)(Cinema TV)", "Cinema_TV"]
- name: re_replace
args: ["(?i)(Ficção científica)", "Ficção_científica"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .Result.genre }}"
files:
selector: num_file
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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
case:
0: 1 # normal
1: 2 # double
minimumseedtime:
# 7 day (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 6.5.0

View File

@@ -1,173 +0,0 @@
---
id: anthelion-api
name: Anthelion (API)
description: "Anthelion is a Private MOVIES tracker"
language: en-US
type: private
encoding: UTF-8
links:
- https://anthelion.me/
caps:
categorymappings:
- {id: 2000, cat: Movies}
- {id: 2030, cat: Movies/SD}
- {id: 2040, cat: Movies/HD}
- {id: 2045, cat: Movies/UHD}
- {id: 2050, cat: Movies/BluRay}
- {id: 2080, cat: Movies/WEB-DL}
- {id: 8000, cat: Other}
modes:
search: [q]
movie-search: [q, imdbid, tmdbid]
# note: the api any supports movie search so there is no tv season/episode support.
# not using year search because torznab adds it to the q= which results in &q=keyword+2022&year=2022 sent to api !?!
settings:
- name: apikey
type: text
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Key by accessing your <a href=\"https://anthelion.me/\" target=\"_blank\">Anthelion</a> account <i>Settings</i> page and scrolling down to the <b>API Key</b> section.<br>Tick the <b>Search</b> and <b>Download</b> checkboxes and click the <b>save profile</b> button to generate the key."
- name: info_activity
type: info
label: Account Inactivity
default: "Activity is defined as actually using your account, including the snatch/grab/seeding of torrents. You are also required to sign-in to the web frontend of Anthelion at least once per 3mo (90 days) (Note, using autodl/ARR does not satisfy this)."
login:
path: api.php
method: get
inputs:
api_key: "{{ .Config.apikey }}"
error:
- selector: ":root:contains(\"Unrecognized key\")"
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
- selector: ":root:contains(\"No API_KEY provided\")"
message:
text: "You did not enter an API key."
search:
paths:
# docs: https://anthelion.me/forums.php?action=viewthread&threadid=1026
- path: api.php
response:
type: json
inputs:
api_key: "{{ .Config.apikey }}"
o: json
t: movie
q: "{{ .Keywords }}"
tmdb: "{{ .Query.TMDBID }}"
imdb: "{{ .Query.IMDBIDShort }}"
# category filtering is disabled since it seems to rely on the AND operator that prevents some releases to show on search.
# cat: "{{ join .Categories \",\" }}"
limit: 100
offset: 0
rows:
selector: item
count:
selector: response.total
fields:
category:
selector: category
filters:
- name: split
args: [",", -1]
year:
selector: year
optional: true
_codec:
selector: codec
_container:
selector: container
_media:
selector: media
filters:
- name: replace
args: ["WEB", "WEB-DL"]
_resolution:
selector: resolution
_audioFormat:
selector: audioFormat
_subbing:
selector: subbing
optional: true
_flags:
selector: flags
optional: true
filters:
- name: replace
args: [",", " "]
_language:
selector: language
optional: true
_releaseGroup:
selector: releaseGroup
optional: true
filters:
- name: trim
title_optional:
selector: title
filters:
- name: replace
args: ["&#39;", "'"]
- name: append
args: " {{ .Result.year }} {{ .Result._codec }} {{ .Result._container }} {{ .Result._media }} {{ .Result._resolution }} {{ .Result._audioFormat }}{{ if .Result._subbing }} Subs{{ else }}{{ end }}{{ if .Result._flags }} {{ .Result._flags }}{{ else }}{{ end }}{{ if .Result._language }} {{ .Result._language }}{{ else }}{{ end }}{{ if and (.Result._releaseGroup) (ne .Result._releaseGroup \"NULL\") }}-{{ .Result._releaseGroup }}{{ else }}{{ end }}"
details:
selector: guid
download:
selector: link
filters:
- name: replace
args: ["&amp;", "&"]
infohash:
selector: infohash
imdbid:
selector: imdb
tmdbid:
selector: tmdb
genre:
selector: tags
filters:
- name: replace
args: [".", "_"]
description:
text: "{{ .Result.genre }}"
files:
selector: fileCount
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: grabs
date:
# 2022-08-07T20:56:06+0200
selector: pubDate
size:
selector: size
downloadvolumefactor:
text: 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
minimumseedtime:
# 3 day (as seconds = 3 x 24 x 60 x 60)
text: 259200
_filename:
selector: "files[0].name"
filters:
- name: replace
args: ["&#39;", "'"]
optional: true
title:
text: "{{ if and (eq .Result.files \"1\") (.Result._filename) }}{{ .Result._filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
# json api

View File

@@ -1,338 +0,0 @@
---
id: audionews
name: AudioNews
description: "AudioNews (AN) is a Private Torrent Tracker for AUDIO SOFTWARE / SAMPLES / ETC"
language: en-US
type: private
encoding: UTF-8
links:
- https://audionews.org/
caps:
categorymappings:
- {id: 106, cat: PC/Mobile-Other, desc: "Mobile Apps"}
- {id: 161, cat: PC/Mobile-iOS, desc: "Mobile Apps iOS"}
- {id: 160, cat: PC/Mobile-Android, desc: "Mobile Apps Android"}
- {id: 12, cat: PC, desc: "AUDIOAPPS"}
- {id: 32, cat: PC, desc: "AUDIOAPPS DAW Apps"}
- {id: 175, cat: PC, desc: "AUDIOAPPS Ableton"}
- {id: 177, cat: PC, desc: "AUDIOAPPS Cakewalk"}
- {id: 176, cat: PC, desc: "AUDIOAPPS REAPER"}
- {id: 174, cat: PC, desc: "AUDIOAPPS Steinberg"}
- {id: 34, cat: PC, desc: "AUDIOAPPS Mastering &Audio Editor Apps"}
- {id: 37, cat: PC, desc: "AUDIOAPPS DJ Apps"}
- {id: 13, cat: Audio, desc: "SAMPLE LIBRARIES"}
- {id: 62, cat: Audio, desc: "SAMPLE LIBRARIES AMG"}
- {id: 117, cat: Audio, desc: "SAMPLE LIBRARIES Bela D Media"}
- {id: 118, cat: Audio, desc: "SAMPLE LIBRARIES Beta Monkey Music"}
- {id: 51, cat: Audio, desc: "SAMPLE LIBRARIES Best Service"}
- {id: 46, cat: Audio, desc: "SAMPLE LIBRARIES Big Fish"}
- {id: 66, cat: Audio, desc: "SAMPLE LIBRARIES Bigga Giggas"}
- {id: 122, cat: Audio, desc: "SAMPLE LIBRARIES Bluezone Corporation"}
- {id: 123, cat: Audio, desc: "SAMPLE LIBRARIES Bunker 8"}
- {id: 126, cat: Audio, desc: "SAMPLE LIBRARIES Cinematique Instruments"}
- {id: 127, cat: Audio, desc: "SAMPLE LIBRARIES CineSamples"}
- {id: 128, cat: Audio, desc: "SAMPLE LIBRARIES ClusterSound"}
- {id: 121, cat: Audio, desc: "SAMPLE LIBRARIES Dan Dean"}
- {id: 195, cat: Audio, desc: "SAMPLE LIBRARIES Diginoiz"}
- {id: 52, cat: Audio, desc: "SAMPLE LIBRARIES Digital Juice"}
- {id: 134, cat: Audio, desc: "SAMPLE LIBRARIES Digital-Redux"}
- {id: 65, cat: Audio, desc: "SAMPLE LIBRARIES Digital Vision"}
- {id: 59, cat: Audio, desc: "SAMPLE LIBRARIES Discovery Firm"}
- {id: 61, cat: Audio, desc: "SAMPLE LIBRARIES Drumdrops"}
- {id: 40, cat: Audio, desc: "SAMPLE LIBRARIES East West"}
- {id: 74, cat: Audio, desc: "SAMPLE LIBRARIES Electronisounds"}
- {id: 80, cat: Audio, desc: "SAMPLE LIBRARIES EMU format"}
- {id: 82, cat: Audio, desc: "SAMPLE LIBRARIES ENSONIQ format"}
- {id: 111, cat: Audio, desc: "SAMPLE LIBRARIES Fatloud"}
- {id: 135, cat: Audio, desc: "SAMPLE LIBRARIES Fox Samples"}
- {id: 41, cat: Audio, desc: "SAMPLE LIBRARIES FxPansion"}
- {id: 130, cat: Audio, desc: "SAMPLE LIBRARIES Goldbaby"}
- {id: 54, cat: Audio, desc: "SAMPLE LIBRARIES Hollywood Edge"}
- {id: 64, cat: Audio, desc: "SAMPLE LIBRARIES IK Multimedia"}
- {id: 75, cat: Audio, desc: "SAMPLE LIBRARIES Ilio"}
- {id: 108, cat: Audio, desc: "SAMPLE LIBRARIES Industrial Strength Records"}
- {id: 81, cat: Audio, desc: "SAMPLE LIBRARIES KURZWEIL format"}
- {id: 91, cat: Audio, desc: "SAMPLE LIBRARIES Loopmasters"}
- {id: 92, cat: Audio, desc: "SAMPLE LIBRARIES Masterbits"}
- {id: 58, cat: Audio, desc: "SAMPLE LIBRARIES M-Audio"}
- {id: 112, cat: Audio, desc: "SAMPLE LIBRARIES Mutekki"}
- {id: 137, cat: Audio, desc: "SAMPLE LIBRARIES Mystic Kingz"}
- {id: 47, cat: Audio, desc: "SAMPLE LIBRARIES Native Instruments"}
- {id: 60, cat: Audio, desc: "SAMPLE LIBRARIES Nine Volt Audio"}
- {id: 129, cat: Audio, desc: "SAMPLE LIBRARIES OrangeTree"}
- {id: 203, cat: Audio, desc: "SAMPLE LIBRARIES Origin Sound"}
- {id: 154, cat: Audio, desc: "SAMPLE LIBRARIES P5Audio"}
- {id: 133, cat: Audio, desc: "SAMPLE LIBRARIES Peace Love Productions"}
- {id: 140, cat: Audio, desc: "SAMPLE LIBRARIES Pound Audio"}
- {id: 110, cat: Audio, desc: "SAMPLE LIBRARIES Prime Loops"}
- {id: 180, cat: Audio, desc: "SAMPLE LIBRARIES Producer Loops"}
- {id: 50, cat: Audio, desc: "SAMPLE LIBRARIES Prominy"}
- {id: 171, cat: Audio, desc: "SAMPLE LIBRARIES Pulsed Records"}
- {id: 132, cat: Audio, desc: "SAMPLE LIBRARIES Puremagnetik"}
- {id: 49, cat: Audio, desc: "SAMPLE LIBRARIES Refills"}
- {id: 99, cat: Audio, desc: "SAMPLE LIBRARIES reFX Nexus"}
- {id: 125, cat: Audio, desc: "SAMPLE LIBRARIES Realsamples"}
- {id: 83, cat: Audio, desc: "SAMPLE LIBRARIES ROLAND format"}
- {id: 109, cat: Audio, desc: "SAMPLE LIBRARIES Sample Magic"}
- {id: 136, cat: Audio, desc: "SAMPLE LIBRARIES Samplephonics"}
- {id: 43, cat: Audio, desc: "SAMPLE LIBRARIES Sampletekk"}
- {id: 48, cat: Audio, desc: "SAMPLE LIBRARIES Scarbee"}
- {id: 178, cat: Audio, desc: "SAMPLE LIBRARIES SFX (Sound FX libraries)"}
- {id: 90, cat: Audio, desc: "SAMPLE LIBRARIES Smartsound"}
- {id: 172, cat: Audio, desc: "SAMPLE LIBRARIES Sonart Audio"}
- {id: 116, cat: Audio, desc: "SAMPLE LIBRARIES SonicCouture"}
- {id: 42, cat: Audio, desc: "SAMPLE LIBRARIES Sonic Implants"}
- {id: 115, cat: Audio, desc: "SAMPLE LIBRARIES Sonic Reality"}
- {id: 53, cat: Audio, desc: "SAMPLE LIBRARIES Sound Ideas"}
- {id: 56, cat: Audio, desc: "SAMPLE LIBRARIES Sony"}
- {id: 139, cat: Audio, desc: "SAMPLE LIBRARIES Sounds To Sample"}
- {id: 76, cat: Audio, desc: "SAMPLE LIBRARIES Spectrasonics"}
- {id: 162, cat: Audio, desc: "SAMPLE LIBRARIES Spitfire Audio"}
- {id: 193, cat: Audio, desc: "SAMPLE LIBRARIES studiolinked"}
- {id: 68, cat: Audio, desc: "SAMPLE LIBRARIES Synthogy"}
- {id: 179, cat: Audio, desc: "SAMPLE LIBRARIES The Loop Loft"}
- {id: 96, cat: Audio, desc: "SAMPLE LIBRARIES Tonehammer, 8dio, SoundIron"}
- {id: 67, cat: Audio, desc: "SAMPLE LIBRARIES Toontrack, Drumkit From Hell, DFHS"}
- {id: 69, cat: Audio, desc: "SAMPLE LIBRARIES Ueberschall"}
- {id: 157, cat: Audio, desc: "SAMPLE LIBRARIES USB Soundscan"}
- {id: 120, cat: Audio, desc: "SAMPLE LIBRARIES Valentino Production"}
- {id: 173, cat: Audio, desc: "SAMPLE LIBRARIES vandalism sounds"}
- {id: 170, cat: Audio, desc: "SAMPLE LIBRARIES Vanilla Groove Studios"}
- {id: 119, cat: Audio, desc: "SAMPLE LIBRARIES Vengeance Sound"}
- {id: 114, cat: Audio, desc: "SAMPLE LIBRARIES Video Helper"}
- {id: 44, cat: Audio, desc: "SAMPLE LIBRARIES Vienna"}
- {id: 77, cat: Audio, desc: "SAMPLE LIBRARIES Vipzone"}
- {id: 131, cat: Audio, desc: "SAMPLE LIBRARIES Wavesfactory"}
- {id: 89, cat: Audio, desc: "SAMPLE LIBRARIES West one"}
- {id: 113, cat: Audio, desc: "SAMPLE LIBRARIES Wusik.com"}
- {id: 78, cat: Audio, desc: "SAMPLE LIBRARIES Yellowtools"}
- {id: 138, cat: Audio, desc: "SAMPLE LIBRARIES YnK.Audio"}
- {id: 100, cat: Audio, desc: "SAMPLE LIBRARIES Zenhiser"}
- {id: 57, cat: Audio, desc: "SAMPLE LIBRARIES Zero-G"}
- {id: 15, cat: PC, desc: "VSTi + FX"}
- {id: 72, cat: PC, desc: "VSTi + FX FX"}
- {id: 181, cat: PC, desc: "VSTi + FX VSTi"}
- {id: 18, cat: PC/Mac, desc: "MAC"}
- {id: 186, cat: PC/Mac, desc: "MAC Apps"}
- {id: 188, cat: PC/Mac, desc: "MAC FX"}
- {id: 189, cat: PC/Mac, desc: "MAC Instruments"}
- {id: 190, cat: PC/Mac, desc: "MAC TUTORIAL"}
- {id: 187, cat: PC/Mac, desc: "MAC Samples"}
- {id: 19, cat: Other, desc: "MISC"}
- {id: 185, cat: Other, desc: "MISC Utilities"}
- {id: 84, cat: Books, desc: "SHEET MUSIC"}
- {id: 87, cat: Books, desc: "SHEET MUSIC Full Score"}
- {id: 86, cat: Books, desc: "SHEET MUSIC Guitar"}
- {id: 88, cat: Books, desc: "SHEET MUSIC Other instruments"}
- {id: 85, cat: Books, desc: "SHEET MUSIC Piano"}
- {id: 20, cat: Books, desc: "LEARNING"}
- {id: 197, cat: Books, desc: "LEARNING Academy.FM"}
- {id: 183, cat: Books, desc: "LEARNING ADSR"}
- {id: 141, cat: Books, desc: "LEARNING Alfred"}
- {id: 142, cat: Books, desc: "LEARNING Ask Video"}
- {id: 27, cat: Books, desc: "LEARNING Books"}
- {id: 143, cat: Books, desc: "LEARNING FaderPro"}
- {id: 144, cat: Books, desc: "LEARNING Groove3"}
- {id: 145, cat: Books, desc: "LEARNING Hal Leonard"}
- {id: 105, cat: Books, desc: "LEARNING Hardware manuals"}
- {id: 196, cat: Books, desc: "LEARNING Jam Track Central"}
- {id: 146, cat: Books, desc: "LEARNING Lick Library"}
- {id: 147, cat: Books, desc: "LEARNING Lynda.com"}
- {id: 148, cat: Books, desc: "LEARNING MacProVideo"}
- {id: 101, cat: Books, desc: "LEARNING Magazines"}
- {id: 93, cat: Books, desc: "LEARNING Music Video (Concerts, DVD, DVDrip)"}
- {id: 199, cat: Books, desc: "LEARNING PUREMIX"}
- {id: 149, cat: Books, desc: "LEARNING Riff Interactive"}
- {id: 194, cat: Books, desc: "LEARNING SkillShare"}
- {id: 150, cat: Books, desc: "LEARNING Sonic Academy"}
- {id: 151, cat: Books, desc: "LEARNING Total training"}
- {id: 152, cat: Books, desc: "LEARNING TrueFire"}
- {id: 182, cat: Books, desc: "LEARNING Udemy"}
- {id: 28, cat: Books, desc: "LEARNING Video"}
- {id: 153, cat: Books, desc: "LEARNING VTC"}
- {id: 29, cat: Audio/Other, desc: "PRESETS"}
- {id: 167, cat: Audio/Other, desc: "PRESETS Ableton Live"}
- {id: 184, cat: Audio/Other, desc: "PRESETS Impulse Responses"}
- {id: 166, cat: Audio/Other, desc: "PRESETS Massive"}
- {id: 163, cat: Audio/Other, desc: "PRESETS Nebula"}
- {id: 200, cat: Audio/Other, desc: "PRESETS Omnisphere"}
- {id: 165, cat: Audio/Other, desc: "PRESETS Reaktor"}
- {id: 201, cat: Audio/Other, desc: "PRESETS Xfer Serum"}
- {id: 164, cat: Audio/Other, desc: "PRESETS Sylenth"}
- {id: 168, cat: Audio/Other, desc: "PRESETS Toontrack"}
- {id: 239, cat: Books, desc: "Service Manuals"}
- {id: 21, cat: Other, desc: "UPDATE"}
- {id: 222, cat: Other, desc: "GFXNEWS 3D"}
- {id: 235, cat: Other, desc: "GFXNEWS APPS ANDROID & IOS"}
- {id: 207, cat: Other, desc: "GFXNEWS APPS WIN"}
- {id: 215, cat: Other, desc: "GFXNEWS APPS LINUX"}
- {id: 214, cat: Other, desc: "GFXNEWS APPS MAC"}
- {id: 211, cat: Other, desc: "GFXNEWS BOOKS"}
- {id: 224, cat: Other, desc: "GFXNEWS CAD/CAM"}
- {id: 237, cat: Other, desc: "GFXNEWS DAZ3D"}
- {id: 212, cat: Other, desc: "GFXNEWS FONTS"}
- {id: 213, cat: Other, desc: "GFXNEWS FOOTAGE"}
- {id: 233, cat: Other, desc: "GFXNEWS GAME DEVELOPMENT"}
- {id: 226, cat: Other, desc: "GFXNEWS MAGAZINE"}
- {id: 234, cat: Other, desc: "GFXNEWS MATERIAL"}
- {id: 243, cat: Other, desc: "GFXNEWS OTHER GRAPHICS"}
- {id: 244, cat: Other, desc: "GFXNEWS OTHER GRAPHICS Zbrush, Substance tools"}
- {id: 216, cat: Other, desc: "GFXNEWS PHOTOSTOCK"}
- {id: 220, cat: Other, desc: "GFXNEWS PHOTOGRAPHY - ART"}
- {id: 227, cat: Other, desc: "GFXNEWS 2D Graphics"}
- {id: 250, cat: Other, desc: "GFXNEWS 2D Graphics Effects"}
- {id: 228, cat: Other, desc: "GFXNEWS 2D Graphics Actions, Pattern & Styles"}
- {id: 229, cat: Other, desc: "GFXNEWS 2D Graphics Background & PSD Source"}
- {id: 230, cat: Other, desc: "GFXNEWS 2D Graphics Brushes & Gradient"}
- {id: 246, cat: Other, desc: "GFXNEWS 2D Graphics Mockup"}
- {id: 247, cat: Other, desc: "GFXNEWS 2D Graphics Overlays"}
- {id: 249, cat: Other, desc: "GFXNEWS 2D Graphics Preset"}
- {id: 231, cat: Other, desc: "GFXNEWS 2D Graphics Toolkits, Papers & Objects"}
- {id: 245, cat: Other, desc: "GFXNEWS GFX Plugins"}
- {id: 210, cat: Other, desc: "GFXNEWS PLUGINS WIN"}
- {id: 223, cat: Other, desc: "GFXNEWS PLUGINS MAC"}
- {id: 225, cat: Other, desc: "GFXNEWS PLUGINS LINUX"}
- {id: 217, cat: Other, desc: "GFXNEWS SCRIPTS - WEB PROGRAMMING"}
- {id: 218, cat: Other, desc: "GFXNEWS TEMPLATES"}
- {id: 232, cat: Other, desc: "GFXNEWS TEXTURES"}
- {id: 219, cat: Other, desc: "GFXNEWS TUTORIALS"}
- {id: 238, cat: Other, desc: "GFXNEWS VECTOR GRAPHICS"}
- {id: 221, cat: Other, desc: "GFXNEWS VIDEO PRODUCTION"}
modes:
search: [q]
book-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: 1
options:
1: created
10: seeders
7: size
2: title
- name: type
type: select
label: Order requested from site
default: 2
options:
2: desc
1: asc
- name: info_activity
type: info
label: Account Inactivity
default: "You must stay active on the site...<ol><li>Any New users that have no stats for one month will have their account deleted</li><li>Any disabled accounts will be deleted after 6 months</li><li>Any accounts inactive for more than 6 months will be deleted</li><li>Donor accounts will be left untouched.</li></ol>"
login:
path: login.php
method: post
inputs:
"login_username": "{{ .Config.username }}"
"login_password": "{{ .Config.password }}"
autologin: 1
login: "Log in"
redirect: "/"
error:
- selector: table.error
message:
selector: table.error tr td div.msg
test:
path: /
selector: li a[href^="./login.php?logout=1"]
search:
paths:
- path: tracker.php
method: post
inputs:
$raw: "{{ if .Categories }}{{ range .Categories }}f[]={{.}}&{{end}}{{ else }}f[]=-1{{ end }}"
prev_allw: 1
prev_a: 0
prev_dla: 0
prev_dlc: 0
prev_dld: 0
prev_dlw: 0
prev_my: 0
prev_new: 0
prev_sd: 0
prev_da: 1
prev_dc: 0
prev_df: 1
prev_ds: 0
pre_tor_type: 0
prev_date_from: ""
prev_date_to: ""
prev_hide_rereg: 0
o: "{{ .Config.sort }}"
s: "{{ .Config.type }}"
df: 1
da: 1
nm: "{{ .Keywords }}"
pn: ""
submit: "Search"
rows:
selector: table.forumline > tbody > tr:has(a[href*="/dl.php?id="])
dateheaders:
selector: td[colspan="20"] > strong
filters:
- name: append
args: " -07:00" # PDT
- name: dateparse
args: "MM-dd-yyyy zzz"
fields:
title:
selector: td a[href*="/viewtopic.php?t="]
details:
selector: td a[href*="/viewtopic.php?t="]
attribute: href
download:
selector: td a[href*="/dl.php?id="]
attribute: href
category:
selector: td a[href*="/tracker.php?f="]
attribute: href
filters:
- name: querystring
args: f
size_optional:
optional: true
selector: td:contains(\00a0GB), td:contains(\00a0MB), td:contains(\00a0KB), td:contains(\00a0B)
size:
text: "{{ if .Result.size_optional }}{{ .Result.size_optional }}{{ else }}0 B{{ end }}"
seeders_optional:
optional: true
selector: td[title="Seeders"]
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
optional: true
selector: td[title="Leechers"]
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
grabs_optional:
optional: true
selector: td[title^="Replies:"]
grabs:
text: "{{ if .Result.grabs_optional }}{{ .Result.grabs_optional }}{{ else }}0{{ end }}"
description:
case:
span.tor-approved: Verified
span.tor-not-approved: Unverified
downloadvolumefactor:
text: 1
uploadvolumefactor:
text: 1
minimumratio:
text: 0.8
# engine n/a

View File

@@ -1,174 +0,0 @@
---
id: backups
name: Back-ups
description: "Back-Ups is a Private Torrent Tracker for MOVIES / TV / GENERAL"
language: en-US
type: private
encoding: UTF-8
links:
- https://back-ups.me/
caps:
categorymappings:
- {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: 64, cat: Audio/Audiobook, desc: "Audiobooks"}
- {id: 71, cat: Console, desc: "Batocera"}
- {id: 4, cat: Movies/BluRay, desc: "Blu-Ray"}
- {id: 22, cat: Console, desc: "CoinOps"}
- {id: 42, cat: Console, desc: "CoinOPS Official"}
- {id: 65, cat: Console, desc: "CoinOps Unofficial"}
- {id: 63, cat: Books/Comics, desc: "Comics"}
- {id: 60, cat: Console, desc: "Core"}
- {id: 72, cat: Console, desc: "CORE Community"}
- {id: 44, cat: Console, desc: "CP78"}
- {id: 16, cat: TV/Documentary, desc: "Docu"}
- {id: 41, cat: Console, desc: "Dragon"}
- {id: 5, cat: Books, desc: "EBooks"}
- {id: 61, cat: Console, desc: "emuxtras"}
- {id: 69, cat: TV, desc: "Entertainment"}
- {id: 34, cat: TV, desc: "Kids"}
- {id: 43, cat: Console, desc: "LB No Intro"}
- {id: 33, cat: TV/Sport, desc: "MMA/Boxing"}
- {id: 32, cat: Movies, desc: "Movie Pack"}
- {id: 6, cat: Movies, desc: "Movies/XVID"}
- {id: 7, cat: Audio, desc: "Music"}
- {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: 30, cat: Console, desc: "Playstation"}
- {id: 62, cat: Console, desc: "RaspberryPi"}
- {id: 56, cat: Console, desc: "Retro Minis"}
- {id: 67, cat: Console, desc: "Retrobat"}
- {id: 76, cat: Console, desc: "RGS"}
- {id: 27, cat: Console, desc: "Roms and Emulators"}
- {id: 68, cat: Console, desc: "Schmoomer's"}
- {id: 57, cat: Console, desc: "Sega"}
- {id: 40, cat: TV, desc: "Soaps"}
- {id: 29, cat: TV/Sport, desc: "Sport"}
- {id: 9, cat: TV, desc: "TV-Boxsets"}
- {id: 11, cat: TV, desc: "TV/x264"}
- {id: 10, cat: TV, desc: "TV/Xvid"}
- {id: 73, cat: Console, desc: "Wolfanoz"}
- {id: 14, cat: TV/Sport, desc: "WWE"}
- {id: 26, cat: Console, desc: "Xbox"}
- {id: 12, cat: Console, desc: "XBOX360"}
- {id: 23, cat: XXX, desc: "xxx18+"}
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_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>40</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "To keep records updated regularly, 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: td:contains("remaining tries")
test:
path: browse.php
selector: a[href*="/logout.php"]
search:
paths:
- path: browse.php
keywordsfilters:
# remove words <= 3 characters and surrounding special characters
- name: re_replace
args: ["(?:^|\\s)[_\\+\\/\\.\\-\\(\\)]*[\\S]{0,3}[_\\+\\/\\.\\-\\(\\)]*(?:\\s|$)", " "]
inputs:
do: search
keywords: "{{ .Keywords }}"
# t_name, t_description, t_both, t_uploader, t_genre
search_type: t_name
category: 0 # multi cat search not supported
# yes, no
include_dead_torrents: yes
# sort is done via do=quick_sort, and freeleech sorting is part of that set
rows:
selector: "table#sortabletable > tbody > tr:has(a[href*=\"/details.php?id=\"]){{ if .Config.freeleech }}:has(img[src$=\"freedownload.gif\"]){{ else }}{{ end }}"
filters:
- name: andmatch
args: 66
fields:
category:
selector: a[href*="/browse.php?category="]
attribute: href
filters:
- name: querystring
args: category
title_default:
selector: a[href*="/details.php?id="]
title_optional:
optional: true
selector: div.tooltip-content > div
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href*="/details.php?id="]
attribute: href
download:
selector: a[href*="/download.php?id="]
attribute: href
magnet:
selector: a[href^="magnet:?xt="]
attribute: href
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
attribute: src
downloadvolumefactor:
case:
img[src$="freedownload.gif"]: 0
img[src$="silverdownload.gif"]: 0.5
"*": 1
uploadvolumefactor:
case:
img[src$="x2.gif"]: 2
"*": 1
date:
selector: "td:nth-child(2) > div:has(span[style=\"float: right;\"])"
remove: span
filters:
- name: append
args: " +00:00" # GMT
- name: dateparse
args: "dd-MM-yyyy HH:mm zzz"
# TS Special Edition v.8.0

View File

@@ -1,82 +0,0 @@
---
id: bangumi-moe
name: Bangumi Moe
description: "Bangumi Moe is a Public torrent site for ANIME"
language: en-US
type: public
encoding: UTF-8
requestDelay: 3
links:
- https://bangumi.moe/
caps:
categorymappings:
- {id: 549ef207fe682f7549f1ea90, cat: TV/Anime, desc: "Anime"}
- {id: 54967e14ff43b99e284d0bf7, cat: TV/Anime, desc: "Anime Pack"}
- {id: 549cc9369310bc7d04cddf9f, cat: Movies, desc: "Anime Movie"}
- {id: 549eef6ffe682f7549f1ea8b, cat: Audio, desc: "Music"}
- {id: 549eefebfe682f7549f1ea8c, cat: Books/Comics, desc: "Comic"}
- {id: 549ef015fe682f7549f1ea8d, cat: Console, desc: "Game"}
- {id: 549ef250fe682f7549f1ea91, cat: Other, desc: "Other"}
- {id: 549ff1db30bcfc225bf9e607, cat: Console, desc: "Dorama"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings: []
search:
paths:
# https://bangumi.moe/api/torrent/latest
# https://bangumi.moe/api/v2/torrent/search
- path: "{{ if .Keywords }}api/v2/torrent/search{{ else }}api/torrent/latest{{ end }}"
method: "{{ if .Keywords }}post{{ else }}get{{ end }}"
response:
type: json
inputs:
# $raw: "{{ if .Keywords }}query={{ .Keywords }}{{ else }}{{ end }}"
query: "{{ .Keywords }}"
rows:
selector: torrents
fields:
category:
selector: category_tag_id
title:
selector: title
details:
text: /
infohash:
selector: infoHash
poster:
selector: introduction
filters:
- name: regexp
args: "src=\\\"(.+?)\\\""
description:
selector: category_tag.locale.en
date:
# 2021-10-19T06:10:15.772Z
selector: publish_time
size_optional:
optional: true
selector: size
size:
text: "{{ if .Result.size_optional }}{{ .Result.size_optional }}{{ else }}0 B{{ end }}"
grabs:
selector: downloads
seeders:
selector: seeders
leechers:
selector: leechers
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# json api v2

View File

@@ -1,172 +0,0 @@
---
id: beitai
name: BeiTai (备胎)
description: "BeiTai (备胎) is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://www.beitai.pt/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
- {id: 402, cat: TV, desc: "TV Series/剧集"}
- {id: 403, cat: TV, desc: "TV Shows/综艺"}
- {id: 406, cat: Audio/Video, desc: "MusicVideo/音乐MV"}
- {id: 407, cat: TV/Sport, desc: "Sports/运体"}
- {id: 409, cat: Other, desc: "Misc/其他"}
- {id: 408, cat: Audio, desc: "HQ Audio/无损音乐"}
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: 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 be deleted if they do not log in for 150 consecutive days</li><li>Users with no traffic (ie, upload/download data are both 0) will be deleted if they do not log in for 100 consecutive days.</li></ol>"
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
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 .Query.DoubanID }}/{{ .Query.DoubanID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}{{ .Keywords }}{{ 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 (4 does not appear to work).
search_area: "{{ if or .Query.IMDBID .Query.DoubanID }}1{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
imdbid:
selector: div.imdb_100 > a
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td: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: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:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP Standard v1.5 Beta 4

View File

@@ -1,208 +0,0 @@
---
id: bestcore
name: Best-Core
description: "Best-Core is a HUNGARIAN Private Tracker for MOVIES / TV"
language: hu-HU
type: private
encoding: ISO-8859-2
links:
- https://best-core.info/
caps:
categorymappings:
- {id: 81, cat: Movies/3D, desc: "3D"}
- {id: 83, cat: Movies/UHD, desc: "4K/UHD"}
- {id: 80, cat: Movies/Other, desc: "Best-Core"}
- {id: 51, cat: Books/EBook, desc: "E-book"}
- {id: 88, cat: Audio/Audiobook, desc: "E-book/Hangoskönyv"}
- {id: 77, cat: Movies/HD, desc: "Film/BDRip/Eng"}
- {id: 86, cat: Movies/HD, desc: "Film/BDRip/Ger"}
- {id: 76, cat: Movies/HD, desc: "Film/BDRip/Hun"}
- {id: 75, cat: Movies/BluRay, desc: "Film/Blu-ray/Eng"}
- {id: 74, cat: Movies/BluRay, desc: "Film/Blu-ray/Hun"}
- {id: 25, cat: Movies/DVD, desc: "Film/DVD/Eng"}
- {id: 24, cat: Movies/DVD, desc: "Film/DVD/Hun"}
- {id: 85, cat: Movies/DVD, desc: "Film/DVD9"}
- {id: 21, cat: Movies/HD, desc: "Film/HD/Eng"}
- {id: 53, cat: Movies/HD, desc: "Film/HD/Hun"}
- {id: 20, cat: Movies/SD, desc: "Film/XviD/Eng"}
- {id: 34, cat: Movies/SD, desc: "Film/XviD/Hun"}
- {id: 90, cat: Movies/SD, desc: "Film/XviD/Pack"}
- {id: 26, cat: PC/Games, desc: "Játék/ISO"}
- {id: 52, cat: PC/Games, desc: "Játék/Rip"}
- {id: 89, cat: Movies/SD, desc: "Kamerás/Eng"}
- {id: 82, cat: Movies/SD, desc: "Kamerás/Hun"}
- {id: 38, cat: Other, desc: "Képek"}
- {id: 43, cat: Console/PS3, desc: "Konzol/PS"}
- {id: 45, cat: Console/PSP, desc: "Konzol/PSP"}
- {id: 44, cat: Console/XBox, desc: "Konzol/Xbox"}
- {id: 73, cat: TV/Anime, desc: "Mese/Eng"}
- {id: 70, cat: TV/Anime, desc: "Mese/Hun"}
- {id: 37, cat: PC/Mobile-Other, desc: "Mobil"}
- {id: 1, cat: PC/ISO, desc: "Program/ISO"}
- {id: 22, cat: PC/0day, desc: "Program/Rip"}
- {id: 54, cat: TV/SD, desc: "Sorozat/DVD/Eng"}
- {id: 55, cat: TV/SD, desc: "Sorozat/DVD/Hun"}
- {id: 58, cat: TV/SD, desc: "Sorozat/Xvid/Eng"}
- {id: 7, cat: TV/SD, desc: "Sorozat/Xvid/Hun"}
- {id: 62, cat: Audio/Video, desc: "Videoklip"}
- {id: 64, cat: XXX/DVD, desc: "XXX/DVD"}
- {id: 48, cat: XXX/ImageSet, desc: "XXX/Képek"}
- {id: 9, cat: XXX/XviD, desc: "XXX/Xvid"}
- {id: 40, cat: Audio/MP3, desc: "Zene/Eng"}
- {id: 6, cat: Audio/MP3, desc: "Zene/Hun"}
- {id: 87, cat: Audio/Lossless, desc: "Zene/Lossless"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
book-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: 4
options:
1: title
4: added
5: size
7: seeders
- 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>Torrent oldalankén:</b> setting to <b>100</b> on your account profile.
- name: info_login
type: info
label: About login error
default: If you get a <b>Login Failed, got redirected.</b> error during your config <i>save</i> then most likely you have used an incorrect username or password.
- name: info_activity
type: info
label: Account Inactivity
default: "<ol><li>Users who have not accessed the site for 180 days will be deleted!</li><li>If the vacation mode is set, the system will not delete the given user for 365 days.</li></ol>"
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
test:
path: index.php
selector: a[href^="logout.php?c="]
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
# 0 active, 1 all, 2 deadonly, 3 freeleech
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: tr.torrent_h
filters:
- name: andmatch
fields:
category_optional:
selector: a[href^="browse.php?cat="]
attribute: href
optional: true
filters:
- name: querystring
args: cat
category:
text: "{{ if .Result.category_optional }}{{ .Result.category_optional }}{{ else }}38{{ end }}"
title_default:
# can be abbreviated
selector: a[href^="details.php?id="]
title_optional:
# usually full length
selector: a[href^="details.php?id="]
attribute: title
optional: true
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
poster:
selector: a[onmouseover]
attribute: onmouseover
filters:
- name: regexp
args: "src=(.*?) "
- name: replace
args: ["https://i.kek.sh/null", ""]
download:
selector: a[href^="download.php?id="]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
date:
selector: td:nth-child(2)
filters:
- name: regexp
args: "(\\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}:\\d{2})"
- name: append
args: " +01:00" # CET
- name: replace
args: ["\xA0", " "]
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
files:
selector: td:nth-child(5)
size:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(7)
filters:
- name: regexp
args: x \d(\d+) x$
seeders:
selector: td:nth-child(8)
leechers:
selector: td:nth-child(9)
description:
case:
img[src="pic/yes.png"]: Verified
img[src="pic/nincs.png"]: Unverified
downloadvolumefactor:
case:
img[src="pic/free.png"]: 0
"*": 1
uploadvolumefactor:
selector: td:nth-child(7) b
filters:
- name: regexp
args: (\d+)
minimumratio:
text: 0.8
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# custom v3.0

View File

@@ -1,144 +0,0 @@
---
id: bibliotik
name: Bibliotik
description: "Bibliotik is a private site for eBooks and audiobooks"
language: en-US
type: private
encoding: UTF-8
links:
- https://bibliotik.me/
caps:
categorymappings:
- {id: 1, cat: PC, desc: "Applications"}
- {id: 3, cat: Audio/Audiobook, desc: "Audiobooks"}
- {id: 4, cat: Books/Comics, desc: "Comics"}
- {id: 5, cat: Books/EBook, desc: "eBooks"}
- {id: 7, cat: Books/Mags, desc: "Magazines"}
modes:
search: [q]
book-search: [q, title, author]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: orderby
type: select
label: Sort requested from site
default: added
options:
"@relevance": relevance
title: title
size: size
added: added
seeders: seeders
- name: order
type: select
label: Order requested from site
default: DESC
options:
DESC: desc
ASC: asc
login:
path: /
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
keeplogged: 1
login: "Log In!"
error:
- selector: center:first-of-type
test:
path: torrents/
selector: div#pre_header
search:
paths:
- path: torrents/
inputs:
search: "{{ if .Query.Author }} @authors {{ .Query.Author }}{{ else }}{{ end }}{{ if .Query.Title }} @title {{ .Query.Title }}{{ else }}{{ end }}{{ .Keywords }}"
$raw: "{{ range .Categories }}cat[]={{.}}&{{end}}"
orderby: "{{ .Config.orderby }}"
order: "{{ .Config.order }}"
rows:
selector: table#torrents_table > tbody > tr:has(.title)
fields:
category:
selector: td:first-child
case:
div[title="Applications"]: 1
div[title="Audiobooks"]: 3
div[title="Comics"]: 4
div[title="Ebooks"]: 5
div[title="Magazines"]: 7
author_optional:
selector: .authorLink
optional: true
_editor:
selector: .editorLink
optional: true
author:
text: "{{ or .Result.author_optional .Result._editor }}"
year:
selector: .torYear
optional: true
_filetype:
selector: .torFormat
optional: true
_retail:
selector: .torRetail
optional: true
booktitle:
selector: .title a
title:
text: "{{ .Result.booktitle }}"
filters:
- name: append
args: "{{ if .Result.author }} by {{ .Result.author }}{{ else }}{{ end }}{{ if .Result.year }} {{ .Result.year }}{{ else }}{{ end }}{{ if .Result._filetype }} {{ .Result._filetype }}{{ else }}{{ end }}{{ if .Result._retail }} {{ .Result._retail }}{{ else }}{{ end }}"
details:
selector: .title a
attribute: href
date:
optional: true
selector: .t_files_size_added time
attribute: datetime
download:
selector: a[title="Download"]
attribute: href
files:
selector: .t_files_size_added
filters:
- name: regexp
args: "^\\s*(\\d+)\\s*file"
size:
selector: .t_files_size_added span
attribute: data-bytecount
seeders_optional:
optional: true
selector: .seeders
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
optional: true
selector: .leechers
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
grabs_optional:
optional: true
selector: .snatches
grabs:
text: "{{ if .Result.grabs_optional }}{{ .Result.grabs_optional }}{{ else }}0{{ end }}"
downloadvolumefactor:
text: 1
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -1,191 +0,0 @@
---
id: bitbazis
name: Bit-Bázis
description: "Bit-Bázis is a HUNGARIAN Private Tracker for MOVIES / TV"
language: hu-HU
type: private
encoding: UTF-8
requestDelay: 2
links:
- https://bitbazis.net/
caps:
categorymappings:
- {id: 85, cat: Movies/SD, desc: "Film-Cam", default: true}
- {id: 15, cat: Movies/SD, desc: "Film-SD", default: true}
- {id: 17, cat: Movies/DVD, desc: "Film-DVD", default: true}
- {id: 83, cat: Movies/HD, desc: "Film-HD", default: true}
- {id: 94, cat: Movies/HD, desc: "Film-FHD", default: true}
- {id: 92, cat: Movies/UHD, desc: "Film-UHD", default: true}
- {id: 22, cat: TV, desc: "Sorozat-Hun", default: true}
- {id: 64, cat: Movies, desc: "Film-Pack", default: true}
- {id: 24, cat: Audio/Video, desc: "Klip", default: true}
- {id: 70, cat: Audio/Audiobook, desc: "Hangoskönyv", default: true}
- {id: 27, cat: Books/EBook, desc: "Könyv", default: true}
- {id: 69, cat: TV/Anime, desc: "Mese-SD", default: true}
- {id: 91, cat: TV/Anime, desc: "Mese-HD", default: true}
- {id: 25, cat: Audio/MP3, desc: "Mp3-Hun", default: true}
- {id: 26, cat: Audio/MP3, desc: "Mp3-Eng", default: true}
- {id: 84, cat: Audio/Lossless, desc: "FLAC-Hun", default: true}
- {id: 71, cat: Audio/Lossless, desc: "FLAC-Eng", default: true}
- {id: 31, cat: PC/Games, desc: "Játék", default: true}
- {id: 81, cat: PC/0day, desc: "Program", default: true}
- {id: 14, cat: Other, desc: "Egyéb", default: true}
- {id: 66, cat: XXX/ImageSet, desc: "XXX", default: false}
- {id: 33, cat: XXX/SD, desc: "XXX-SD", default: false}
- {id: 89, cat: XXX/x264, desc: "XXX-HD", default: false}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
book-search: [q]
music-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: freeleech
type: checkbox
label: Filter freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
1: title
4: added
5: size
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrentek száma egy oldalon:</b> setting to <b>50</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "If the user does not access the site for 1 month, he will receive an e-mail notification. If you stay away for 9 months, your account will be suspended and deleted. After the 9-month absence, the user cannot register again."
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: li[onclick^="window.open('logout.php?k="]
search:
paths:
- path: browse.php
categories: [85, 86, 15, 16, 17, 19, 83, 82, 94, 95, 92, 93, 22, 58, 64, 24, 70, 27, 50, 69, 68, 91, 25, 26, 84, 71, 31, 54, 81, 67, 49, 14, 65, 97]
inputs:
# 0 all, 1 active, 2 deadonly, 3 myuploads, 4 zeroseed, 6 re-seeded
incldead: 0
- path: browse_xxx.php
categories: [33, 66, 89]
inputs:
# 0 active, 1 all, 2 deadonly, 3 myuploads, 4 zeroseed, 6 re-seeded
incldead: 1
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
# site does not support imdbid searching
# can support genre searching but you need to know the id, eg &genre23=1 for Comedy (id is 23)
rows:
selector: "tr[class^=\"toriadatok\"]{{ if .Config.freeleech }}:has(i:contains(\"(Free)\")){{ else }}{{ end }}"
fields:
categorydesc:
selector: td[class^="catpic_"]
attribute: class
filters:
- name: replace
args: ["catpic_", ""]
title:
selector: font[class="tori"], a.preview
_id:
selector: td.tori_infok
attribute: id
optional: true
filters:
- name: regexp
args: (\d+)
details_optional:
selector: a[href^="details.php?id="]
attribute: href
optional: true
details:
text: "{{ if .Result.details_optional }}{{ .Result.details_optional }}{{ else }}details.php?id={{ .Result._id }}#adatlap{{ end }}"
download:
text: "download.php?torrent={{ .Result._id }}"
poster:
selector: a.preview
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
size:
selector: td[id^="tsize"]
date:
# 36 perce
# 13 órája és 59 perce
# 2 napja és 10 órája
# 1 hete és 1 napja
# 1 éve és 30 hete
selector: span.ellenorzes
filters:
- name: replace
args: ["és ", " "]
- name: replace
args: ["perce", "minute"]
- name: replace
args: ["órája", "hour"]
- name: replace
args: ["napja", "day"]
- name: replace
args: ["hete", "week"]
- name: replace
args: ["éve", "year"]
- name: timeago
grabs:
selector: td.letoltok
optional: true
seeders:
selector: td.seeders
optional: true
leechers:
selector: td.leechers
optional: true
genre:
selector: span[style="font-size:small;"]
description:
text: "{{ .Result.genre }}"
downloadvolumefactor:
case:
"i:contains(\"(Free)\")": 0
"*": 1
uploadvolumefactor:
case:
"i:contains(\"(2x)\")": 2
"i:contains(\"(3x)\")": 3
"i:contains(\"(4x)\")": 4
"*": 1
minimumseedtime:
# 1 day (as seconds = 1 x 24 x 60 x 60)
text: 86400
# engine n/a

View File

@@ -1,162 +0,0 @@
---
id: bithumen
name: BitHUmen
description: "BitHUmen is a Hungarian Private site for TV / MOVIES / GENERAL"
language: hu-HU
type: private
encoding: ISO-8859-2
links:
- https://bithumen.be/
caps:
categorymappings:
- {id: 23, cat: Movies/SD, desc: "Film/Hun/SD"}
- {id: 24, cat: Movies/DVD, desc: "Film/Hun/DVD-R"}
- {id: 25, cat: Movies/HD, desc: "Film/Hun/720p"}
- {id: 37, cat: Movies/HD, desc: "Film/Hun/1080p"}
- {id: 33, cat: Movies/BluRay, desc: "Film/Hun/Blu-ray"}
- {id: 30, cat: XXX, desc: "XXX/SD"}
- {id: 19, cat: Movies/SD, desc: "Film/Eng/SD"}
- {id: 20, cat: Movies/DVD, desc: "Film/Eng/DVD-R"}
- {id: 5, cat: Movies/HD, desc: "Film/Eng/720p"}
- {id: 39, cat: Movies/HD, desc: "Film/Eng/1080p"}
- {id: 40, cat: Movies/BluRay, desc: "Film/Eng/Blu-ray"}
- {id: 34, cat: XXX, desc: "XXX/HD"}
- {id: 7, cat: TV/SD, desc: "Sorozat/Hun/SD"}
- {id: 41, cat: TV/HD, desc: "Sorozat/Hun/HD"}
- {id: 26, cat: TV/SD, desc: "Sorozat/Eng/SD"}
- {id: 42, cat: TV/HD, desc: "Sorozat/Eng/HD"}
- {id: 28, cat: Books, desc: "eBook/Hun"}
- {id: 29, cat: Books, desc: "eBook/Eng"}
- {id: 9, cat: Audio/MP3, desc: "Mp3/Hun"}
- {id: 35, cat: Audio/Lossless, desc: "Lossless/Hun"}
- {id: 1, cat: PC/0day, desc: "Programok/ISO"}
- {id: 4, cat: PC/Games, desc: "Játékok/ISO"}
- {id: 31, cat: Console/PS4, desc: "Játékok/PS"}
- {id: 36, cat: Console/Wii, desc: "Játékok/Wii"}
- {id: 6, cat: Audio/MP3, desc: "Mp3/Eng"}
- {id: 38, cat: Audio/Lossless, desc: "Lossless/Eng"}
- {id: 22, cat: PC, desc: "Programok/egyéb"}
- {id: 21, cat: PC, desc: "Játékok/Rip/Dox"}
- {id: 32, cat: Console/XBox 360, desc: "Játékok/Xbox360"}
- {id: 27, cat: Other, desc: "Klipek"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
book-search: [q]
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: td.embedded:has(h2:contains("bejelentkezés"))
test:
path: browse.php
selector: a[href*="logout.php"]
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
incldead: 1
rows:
selector: table#torrenttable > tbody > tr:has(a[href^="details.php?id="])
filters:
- name: andmatch
fields:
# download button can be disbled in the profile, use details link instead
# download:
# selector: a[href^="download.php/"]
# attribute: href
download:
selector: a[href^="details.php?id="]
attribute: href
filters:
- name: replace
args: ["details.php?id=", "download.php/"]
- name: append
args: "/invalid.torrent"
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
poster:
selector: a[onmouseover^="bithumen.UI.images.coverShow"]
attribute: onmouseover
filters:
- name: regexp
args: "\"(.*?)\""
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
seeders:
selector: td:nth-child(8)
leechers:
selector: td:nth-child(9)
filters:
- name: regexp
args: /\s*([\d,]+)
grabs:
selector: td:nth-child(7)
files:
selector: td:nth-child(3)
size:
selector: td:nth-child(6) > u
downloadvolumefactor:
text: 0
uploadvolumefactor_optional:
optional: true
selector: td:nth-child(5) > nobr > font:contains(" × ")
filters:
- name: replace
args: ["×", ""]
uploadvolumefactor:
text: "{{ if .Result.uploadvolumefactor_optional }}{{ .Result.uploadvolumefactor_optional }}{{ else }}1{{ end }}"
date_year:
selector: td:nth-child(5):contains('.')
optional: true
remove: font
filters:
- name: replace
args: [". ", " "]
- name: prepend
args: "{{ .Today.Year }}."
- name: re_replace
args: ["([0-9]{4}).([0-9]+).([0-9]+) (.*)", "$2.$3.$1 $4"]
date_day:
selector: td:nth-child(5):contains('ma'), td:nth-child(5):contains("tegnap"), td:nth-child(5):contains('-')
optional: true
remove: font
filters:
- name: replace
args: ["ma", "today"]
- name: replace
args: ["tegnap", "yesterday"]
date:
text: "{{ if or .Result.date_day .Result.date_year }}{{ or .Result.date_day .Result.date_year }}{{ else }}now{{ end }}"
description:
selector: td:nth-child(2) > div
# engine tbd

View File

@@ -1,176 +0,0 @@
---
id: blutopia-api
name: Blutopia (API)
description: "Blutopia (BLU) is a Private Torrent Tracker for HD MOVIES / TV"
language: en-US
type: private
encoding: UTF-8
links:
- https://blutopia.cc/
legacylinks:
- https://blutopia.xyz/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movie"}
- {id: 2, cat: TV, desc: "TV Show"}
- {id: 3, cat: Movies/Other, desc: "FANRES"}
- {id: 5, cat: Movies/Other, desc: "Trailer"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
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://blutopia.cc/\" target=\"_blank\">Blutopia</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: "Your membership requires that you stay active at Blutopia. To not get disabled, you are required to login to the site at least once every 30 days or be actively seeding at least 1 torrent."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free[]=100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
# minimumratio:
# text: 0.4
minimumseedtime:
# 7 day (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 8.0.2

View File

@@ -1,140 +0,0 @@
---
id: bootytape
name: BootyTape
description: "BootyTape is a Semi-Private site for 3X"
language: en-US
type: semi-private
encoding: UTF-8
requestDelay: 3
links:
- https://ssl.bootytape.com/
caps:
categorymappings:
- {id: 70, cat: XXX, desc: "Animation"}
- {id: 22, cat: XXX, desc: "Girl on Girl"}
- {id: 43, cat: XXX, desc: "Images"}
- {id: 52, cat: XXX, desc: "Straight"}
- {id: 82, cat: XXX, desc: "X Play Hard"}
- {id: 92, cat: XXX, desc: "X Play Soft"}
modes:
search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
path: login.php
method: post
inputs:
take_login: 1
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: td.mainouter2:has(h1:contains("Failed"))
test:
path: my.php
selector: a[href="logout.php"]
search:
paths:
# https://ssl.bootytape.com/torrents.php?search=onlyfans&tagsearch=&cat=0&tags=1
- path: torrents.php
inputs:
search: "{{ .Keywords }}"
tagsearch: ""
# 0 all
cat: 0
freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
# tags search mode: 1 AND, 2 OR
tags: 1
# incldead=2 for search unseeded
# descr=1 for search description
# double=1 for search double seed bonus
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table.red > tbody > tr:not(:has(th))
fields:
category:
selector: a[href^="torrents.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?id="]
attribute: href
description:
selector: div.specg
poster:
selector: img[src*="/thbx/imgx/"]
attribute: src
files_optional:
selector: a[href$="filelist=1"]
optional: true
files:
text: "{{ if .Result.files_optional }}{{ .Result.files_optional }}{{ else }}1{{ end }}"
size_optional:
selector: td:nth-child(3)
optional: true
size:
text: "{{ if .Result.size_optional }}{{ .Result.size_optional }}{{ else }}0 B{{ end }}"
seeders_optional:
selector: a[href$="toseeders=1"]
optional: true
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
selector: a[href$="todlers=1"]
optional: true
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
date:
text: now
downloadvolumefactor:
case:
"img[src$=\"pic/freedownload.gif\"]": 0
"*": 1
uploadvolumefactor:
case:
"img[src$=\"pic/double-upload.gif\"]": 2
"*": 1
# engine n/a

View File

@@ -1,148 +0,0 @@
---
id: brsociety-api
name: BrSociety (API)
description: "BrSociety (SemeandoCC) is a BRAZILIAN Private Torrent Tracker for E-LEARNING"
language: pt-BR
type: private
encoding: UTF-8
links:
- https://brsociety.club/
caps:
categorymappings:
- {id: 1, cat: Other, desc: "Cursos"}
- {id: 2, cat: Books/EBook, desc: "eBooks"}
- {id: 5, cat: Books/Mags, desc: "Revistas"}
- {id: 3, cat: Audio/Audiobook, desc: "Audiobooks"}
- {id: 4, cat: Other, desc: "Arquivos de Auxilio"}
- {id: 6, cat: Other, desc: "Graduação"}
- {id: 7, cat: TV/Documentary, desc: "Documentários"}
modes:
search: [q]
tv-search: [q, season, ep]
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://brsociety.club/\" target=\"_blank\">BrSociety</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: 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: "Your account will be considered inactive if it exceeds 90 days without you logging in to the Website. After 90 days of inactivity (i.e., 180 days without login) it will be deleted from the tracker."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free[]=100{{ else }}{{ end }}"
name: "{{ .Keywords }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title:
selector: name
details:
selector: details_link
download:
selector: download_link
magnet:
selector: magnet_link
optional: true
infohash:
selector: info_hash
files:
selector: num_file
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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
# global MR is 0.7 but torrents must be seeded for 4 days regardless of ratio
# minimumratio:
# text: 0.7
minimumseedtime:
# 4 days (as seconds = 4 x 24 x 60 x 60)
text: 345600
# json UNIT3D 7.1.3 (custom)

View File

@@ -1,181 +0,0 @@
---
id: byrbt
name: BYRBT
description: "BYRBT is a CHINESE Private Torrent Tracker for HD MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://byr.pt/
caps:
categorymappings:
- {id: 408, cat: Movies, desc: "电影Movies"}
- {id: 401, cat: TV, desc: "剧集TV Series"}
- {id: 404, cat: TV/Anime, desc: "动漫Animations"}
- {id: 402, cat: Audio, desc: "音乐Music"}
- {id: 405, cat: Other, desc: "综艺Arts"}
- {id: 403, cat: Console, desc: "游戏Games"}
- {id: 406, cat: PC, desc: "软件Software"}
- {id: 407, cat: TV/Documentary, desc: "资料Documentaries"}
- {id: 409, cat: TV/Sport, desc: "体育Sports"}
- {id: 410, cat: Other/Misc, desc: "纪录Records"}
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: 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_ipv6
type: info
label: IPv6 only
default: This site only accepts IPv6 addresses. If you are using IPv4 you will get a DNS Lookup Error.
- name: info_activity
type: info
label: Account Inactivity
default: "Account retention rules:<ol><li>Newly registered users who have not generated any traffic within 14 days (that is, the upload/download data are both 0) will be deleted</li><li>Users with a user level of Peasant that have failed to successfully improve their sharing rate within 14 days will be deleted.</li></ol>"
login:
path: login.php
method: form
form: form[action="takelogin.php"]
inputs:
logintype: username
userinput: "{{ .Config.username }}"
password: "{{ .Config.password }}"
autologin: yes
error:
- selector: td.embedded:has(h2:contains("失败"))
test:
path: index.php
selector: a[href^="logout.php?key="]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if .Query.DoubanID }}/{{ .Query.DoubanID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}{{ .Keywords }}{{ end }}"
# 0 incldead, 1 active, 2 dead
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl
search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact, 3 NOT
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="torrents.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-last-of-type(6) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-last-of-type(6):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-last-of-type(5)
seeders:
selector: td.rowfollow:nth-last-of-type(4)
leechers:
selector: td.rowfollow:nth-last-of-type(3)
grabs:
selector: td.rowfollow:nth-last-of-type(2)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 1 day (as seconds = 1 x 24 x 60 x 60)
text: 86400
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.5 beta 5 20120707

View File

@@ -1,414 +0,0 @@
---
id: byrutor
name: Byrutor
description: "Byrutor is a RUSSIAN Public Torrent Tracker for GAMES"
language: ru-RU
type: public
encoding: UTF-8
links:
- https://thebyrut.org/
legacylinks:
- https://byrutor.org/
- https://byrutdb.org/
- https://byrut.org/
caps:
categorymappings:
- {id: 1, cat: PC/Games, desc: "Экшены"}
- {id: 2, cat: PC/Games, desc: "Приключения"}
- {id: 3, cat: PC/Games, desc: "Гонки"}
- {id: 4, cat: PC/Games, desc: "RPG"}
- {id: 5, cat: PC/Games, desc: "Головоломка"}
- {id: 6, cat: PC/Games, desc: "Инди"}
- {id: 7, cat: PC/Games, desc: "Стратегии"}
- {id: 8, cat: PC/Games, desc: "Выживание"}
- {id: 9, cat: PC/Games, desc: "Шутеры"}
- {id: 10, cat: PC/Games, desc: "Симуляторы"}
- {id: 11, cat: PC/Games, desc: "Спортивные"}
- {id: 12, cat: PC/Games, desc: "Аркады"}
- {id: 13, cat: PC/Games, desc: "Файтинги"}
- {id: 14, cat: PC/Games, desc: "Хорроры"}
- {id: 15, cat: PC/Games, desc: "Открытый мир"}
- {id: 16, cat: PC/Games, desc: "Аниме"}
- {id: 248, cat: PC/Games, desc: "Repack от Chovka"}
- {id: 17, cat: PC/Games, desc: "Repack от Механики"}
- {id: 20, cat: PC/Games, desc: "RePack от FitGirl"}
- {id: 18, cat: PC/Games, desc: "Repack от Xatab"}
- {id: 232, cat: PC/Games, desc: "RePack от SpaceX"}
- {id: 233, cat: PC/Games, desc: "RePack от Pioneer"}
- {id: 19, cat: PC/Games, desc: "Repack от Catalyst"}
- {id: 249, cat: PC/Games, desc: "GOG игры"}
- {id: 22, cat: PC/Games, desc: "Русская озвучка"}
- {id: 25, cat: PC/Games, desc: "Старые игры"}
- {id: 26, cat: PC/Games, desc: "Игры с геймпадом"}
- {id: 27, cat: PC/Games, desc: "Мультиплеер"}
- {id: 28, cat: PC/Games, desc: "На двоих"}
- {id: 29, cat: PC/Games, desc: "Рогалик"}
- {id: 30, cat: PC/Games, desc: "Слэшер"}
- {id: 31, cat: PC/Games, desc: "Стелс"}
- {id: 32, cat: PC/Games, desc: "Фэнтези"}
- {id: 33, cat: PC/Games, desc: "Платформер"}
- {id: 34, cat: PC/Games, desc: "Песочница"}
- {id: 35, cat: PC/Games, desc: "Игры в 2D"}
- {id: 36, cat: PC/Games, desc: "Казуальная"}
- {id: 37, cat: PC/Games, desc: "Point and click"}
- {id: 38, cat: PC/Games, desc: "Вид сбоку"}
- {id: 39, cat: PC/Games, desc: "Вид сверху"}
- {id: 40, cat: PC/Games, desc: "Tower Defense"}
- {id: 41, cat: PC/Games, desc: "Экономика"}
- {id: 42, cat: PC/Games, desc: "Тактика"}
- {id: 43, cat: PC/Games, desc: "Пошаговые стратегии (TBS)"}
- {id: 44, cat: PC/Games, desc: "Глобальные стратегии"}
- {id: 45, cat: PC/Games, desc: "Стратегии в реальном времени"}
- {id: 48, cat: PC/Games, desc: "Для взрослых"}
- {id: 49, cat: PC/Games, desc: "От первого лица"}
- {id: 50, cat: PC/Games, desc: "От третьего лица"}
- {id: 51, cat: PC/Games, desc: "Шутер от первого лица"}
- {id: 52, cat: PC/Games, desc: "Шутер от третьего лица"}
- {id: 53, cat: PC/Games, desc: "Игры для слабых ПК"}
- {id: 58, cat: PC/Games, desc: "Психологический хоррор"}
- {id: 59, cat: PC/Games, desc: "Хоррор на выживание"}
- {id: 60, cat: PC/Games, desc: "Ролевой экшен"}
- {id: 61, cat: PC/Games, desc: "Приключенческий экшен"}
- {id: 63, cat: PC/Games, desc: "Головоломка-платформер"}
- {id: 64, cat: PC/Games, desc: "Скролл-шутер"}
- {id: 65, cat: PC/Games, desc: "Шутер с видом сверху"}
- {id: 66, cat: PC/Games, desc: "Градостроительный симулятор"}
- {id: 67, cat: PC/Games, desc: "Космический симулятор"}
- {id: 68, cat: PC/Games, desc: "Научная фантастика"}
- {id: 69, cat: PC/Games, desc: "Ролевая стратегия"}
- {id: 70, cat: PC/Games, desc: "Тактическая ролевая игра"}
- {id: 71, cat: PC/Games, desc: "Тактика в реальном времени"}
- {id: 72, cat: PC/Games, desc: "Японская ролевая игра"}
- {id: 73, cat: PC/Games, desc: "Тёмное фэнтези"}
- {id: 74, cat: PC/Games, desc: "Сложная"}
- {id: 75, cat: PC/Games, desc: "Атмосфера"}
- {id: 76, cat: PC/Games, desc: "Смешная"}
- {id: 77, cat: PC/Games, desc: "Пиксельная графика"}
- {id: 78, cat: PC/Games, desc: "Юмор"}
- {id: 79, cat: PC/Games, desc: "Классика"}
- {id: 80, cat: PC/Games, desc: "Космос"}
- {id: 81, cat: PC/Games, desc: "Зомби"}
- {id: 82, cat: PC/Games, desc: "Мрачная"}
- {id: 83, cat: PC/Games, desc: "Тайна"}
- {id: 84, cat: PC/Games, desc: "Физика"}
- {id: 85, cat: PC/Games, desc: "Реализм"}
- {id: 86, cat: PC/Games, desc: "Короткая"}
- {id: 87, cat: PC/Games, desc: "Строительство"}
- {id: 88, cat: PC/Games, desc: "Война"}
- {id: 89, cat: PC/Games, desc: "Крафтинг"}
- {id: 90, cat: PC/Games, desc: "Будущее"}
- {id: 91, cat: PC/Games, desc: "Средневековье"}
- {id: 92, cat: PC/Games, desc: "Затягивающая"}
- {id: 93, cat: PC/Games, desc: "Строительство базы"}
- {id: 94, cat: PC/Games, desc: "Управление ресурсами"}
- {id: 95, cat: PC/Games, desc: "Насилие"}
- {id: 96, cat: PC/Games, desc: "Для всей семьи"}
- {id: 97, cat: PC/Games, desc: "Исследование"}
- {id: 98, cat: PC/Games, desc: "Расслабляющая"}
- {id: 99, cat: PC/Games, desc: "Реиграбельность"}
- {id: 100, cat: PC/Games, desc: "Поиск предметов"}
- {id: 101, cat: PC/Games, desc: "Пост-апокалипсис"}
- {id: 102, cat: PC/Games, desc: "Вторая мировая война"}
- {id: 103, cat: PC/Games, desc: "Военные действия"}
- {id: 105, cat: PC/Games, desc: "Вождение"}
- {id: 189, cat: PC/Games, desc: "Пошаговая"}
- {id: 106, cat: PC/Games, desc: "Пошаговая тактика"}
- {id: 328, cat: PC/Games, desc: "2D-платформер"}
- {id: 107, cat: PC/Games, desc: "3D-платформер"}
- {id: 108, cat: PC/Games, desc: "Одна жизнь"}
- {id: 109, cat: PC/Games, desc: "Паркур"}
- {id: 110, cat: PC/Games, desc: "Детектив"}
- {id: 111, cat: PC/Games, desc: "Криминал"}
- {id: 112, cat: PC/Games, desc: "Разрушения"}
- {id: 113, cat: PC/Games, desc: "90-е"}
- {id: 114, cat: PC/Games, desc: "80-е"}
- {id: 115, cat: PC/Games, desc: "Разделение экрана"}
- {id: 116, cat: PC/Games, desc: "Военные конфликты"}
- {id: 117, cat: PC/Games, desc: "Драконы"}
- {id: 118, cat: PC/Games, desc: "Пираты"}
- {id: 119, cat: PC/Games, desc: "Ниндзя"}
- {id: 120, cat: PC/Games, desc: "Поезда"}
- {id: 121, cat: PC/Games, desc: "Динозавры"}
- {id: 122, cat: PC/Games, desc: "Раннер"}
- {id: 123, cat: PC/Games, desc: "Супергерои"}
- {id: 124, cat: PC/Games, desc: "По комиксу"}
- {id: 125, cat: PC/Games, desc: "Хакерство"}
- {id: 126, cat: PC/Games, desc: "Эмоциональная"}
- {id: 127, cat: PC/Games, desc: "Футбол"}
- {id: 128, cat: PC/Games, desc: "Рыбалка"}
- {id: 129, cat: PC/Games, desc: "Бездорожье"}
- {id: 130, cat: PC/Games, desc: "Программирование"}
- {id: 131, cat: PC/Games, desc: "Вампиры"}
- {id: 132, cat: PC/Games, desc: "Снайпер"}
- {id: 133, cat: PC/Games, desc: "Ремейк"}
- {id: 134, cat: PC/Games, desc: "Отличный саундтрек"}
- {id: 135, cat: PC/Games, desc: "Глубокий сюжет"}
- {id: 136, cat: PC/Games, desc: "Женщина-протагонист"}
- {id: 137, cat: PC/Games, desc: "Кровь"}
- {id: 138, cat: PC/Games, desc: "Киберпанк"}
- {id: 139, cat: PC/Games, desc: "Эпичная"}
- {id: 140, cat: PC/Games, desc: "Мясо"}
- {id: 141, cat: PC/Games, desc: "Нагота"}
- {id: 142, cat: PC/Games, desc: "Цветастая"}
- {id: 143, cat: PC/Games, desc: "Education"}
- {id: 144, cat: PC/Games, desc: "Менеджмент"}
- {id: 145, cat: PC/Games, desc: "Упрощённый рогалик"}
- {id: 146, cat: PC/Games, desc: "Музыка"}
- {id: 147, cat: PC/Games, desc: "Кастомизация персонажа"}
- {id: 148, cat: PC/Games, desc: "История"}
- {id: 149, cat: PC/Games, desc: "Охота"}
- {id: 150, cat: PC/Games, desc: "По мотивам книги"}
- {id: 151, cat: PC/Games, desc: "Первая мировая война"}
- {id: 152, cat: PC/Games, desc: "Тайм-менеджмент"}
- {id: 153, cat: PC/Games, desc: "Психоделия"}
- {id: 154, cat: PC/Games, desc: "Наука"}
- {id: 155, cat: PC/Games, desc: "Морские бои"}
- {id: 156, cat: PC/Games, desc: "Сельское хозяйство"}
- {id: 157, cat: PC/Games, desc: "Кинематографичная"}
- {id: 158, cat: PC/Games, desc: "Вестерн"}
- {id: 159, cat: PC/Games, desc: "Три в ряд"}
- {id: 160, cat: PC/Games, desc: "Стимпанк"}
- {id: 161, cat: PC/Games, desc: "Редактор уровней"}
- {id: 162, cat: PC/Games, desc: "Культовая классика"}
- {id: 163, cat: PC/Games, desc: "Минимализм"}
- {id: 164, cat: PC/Games, desc: "Shoot'em up"}
- {id: 165, cat: PC/Games, desc: "Решения с последствиями"}
- {id: 166, cat: PC/Games, desc: "Процедурная генерация"}
- {id: 167, cat: PC/Games, desc: "Мультипликация"}
- {id: 168, cat: PC/Games, desc: "Мультфильм"}
- {id: 169, cat: PC/Games, desc: "Пошаговые сражения"}
- {id: 170, cat: PC/Games, desc: "Магия"}
- {id: 171, cat: PC/Games, desc: "Изометрия"}
- {id: 172, cat: PC/Games, desc: "Карточная игра"}
- {id: 173, cat: PC/Games, desc: "Чёрный юмор"}
- {id: 174, cat: PC/Games, desc: "Beat'em up"}
- {id: 175, cat: PC/Games, desc: "Свобода выбора"}
- {id: 176, cat: PC/Games, desc: "Рисованная графика"}
- {id: 177, cat: PC/Games, desc: "Инопланетяне"}
- {id: 178, cat: PC/Games, desc: "Твин-стик шутер"}
- {id: 179, cat: PC/Games, desc: "Настольная игра"}
- {id: 180, cat: PC/Games, desc: "Полёты"}
- {id: 181, cat: PC/Games, desc: "Лут"}
- {id: 183, cat: PC/Games, desc: "MOBA"}
- {id: 184, cat: PC/Games, desc: "Демоны"}
- {id: 185, cat: PC/Games, desc: "Расследование"}
- {id: 186, cat: PC/Games, desc: "Мифология"}
- {id: 187, cat: PC/Games, desc: "VR"}
- {id: 191, cat: PC/Games, desc: "Психологическая"}
- {id: 193, cat: PC/Games, desc: "Подземелье"}
- {id: 196, cat: PC/Games, desc: "Шедевр"}
- {id: 197, cat: PC/Games, desc: "Ретро"}
- {id: 198, cat: PC/Games, desc: "Олдскул"}
- {id: 251, cat: PC/Games, desc: "Визуальная новелла"}
- {id: 252, cat: PC/Games, desc: "Образование"}
- {id: 253, cat: PC/Games, desc: "Партийная RPG"}
- {id: 254, cat: PC/Games, desc: "Симулятор ходьбы"}
- {id: 255, cat: PC/Games, desc: "Симулятор жизни"}
- {id: 256, cat: PC/Games, desc: "Автосимулятор"}
- {id: 257, cat: PC/Games, desc: "Ритм-игра"}
- {id: 258, cat: PC/Games, desc: "Королевская битва"}
- {id: 259, cat: PC/Games, desc: "Симулятор колонии"}
- {id: 260, cat: PC/Games, desc: "Симулятор фермы"}
- {id: 261, cat: PC/Games, desc: "Иммерсивный симулятор"}
- {id: 262, cat: PC/Games, desc: "Кликер"}
- {id: 263, cat: PC/Games, desc: "Арена-шутер"}
- {id: 264, cat: PC/Games, desc: "Платформер на точность"}
- {id: 265, cat: PC/Games, desc: "Метроидвания"}
- {id: 266, cat: PC/Games, desc: "Похожа на Dark Souls"}
- {id: 267, cat: PC/Games, desc: "Коллектатон"}
- {id: 268, cat: PC/Games, desc: "Idle-игра"}
- {id: 269, cat: PC/Games, desc: "Поиск существ"}
- {id: 270, cat: PC/Games, desc: "Зрелищные сражения"}
- {id: 271, cat: PC/Games, desc: "Пасьянс"}
- {id: 272, cat: PC/Games, desc: "Боевые гонки"}
- {id: 273, cat: PC/Games, desc: "Лутер-шутер"}
- {id: 274, cat: PC/Games, desc: "Политический симулятор"}
- {id: 275, cat: PC/Games, desc: "Традиционный рогалик"}
- {id: 276, cat: PC/Games, desc: "Милая"}
- {id: 277, cat: PC/Games, desc: "Стилизация"}
- {id: 278, cat: PC/Games, desc: "Псевдотрёхмерность"}
- {id: 279, cat: PC/Games, desc: "Абстрактная"}
- {id: 280, cat: PC/Games, desc: "Красивая"}
- {id: 281, cat: PC/Games, desc: "Воксельная графика"}
- {id: 282, cat: PC/Games, desc: "Логика"}
- {id: 283, cat: PC/Games, desc: "Драма"}
- {id: 284, cat: PC/Games, desc: "Романтика"}
- {id: 285, cat: PC/Games, desc: "Сюрреалистичная"}
- {id: 286, cat: PC/Games, desc: "Мемы"}
- {id: 287, cat: PC/Games, desc: "Природа"}
- {id: 288, cat: PC/Games, desc: "Роботы"}
- {id: 289, cat: PC/Games, desc: "Проработанная вселенная"}
- {id: 290, cat: PC/Games, desc: "Триллер"}
- {id: 291, cat: PC/Games, desc: "Антиутопия"}
- {id: 292, cat: PC/Games, desc: "Сверхъестественное"}
- {id: 293, cat: PC/Games, desc: "Альтернативная история"}
- {id: 294, cat: PC/Games, desc: "Сражения на мечах"}
- {id: 295, cat: PC/Games, desc: "Котики"}
- {id: 296, cat: PC/Games, desc: "Америка"}
- {id: 297, cat: PC/Games, desc: "Иллюминаты"}
- {id: 298, cat: PC/Games, desc: "Капитализм"}
- {id: 299, cat: PC/Games, desc: "Заговор"}
- {id: 300, cat: PC/Games, desc: "Сатира"}
- {id: 301, cat: PC/Games, desc: "Готика"}
- {id: 303, cat: PC/Games, desc: "Шахты"}
- {id: 304, cat: PC/Games, desc: "Боевые искусства"}
- {id: 305, cat: PC/Games, desc: "Танки"}
- {id: 306, cat: PC/Games, desc: "Подводный мир"}
- {id: 307, cat: PC/Games, desc: "Кулинария"}
- {id: 308, cat: PC/Games, desc: "Флот"}
- {id: 309, cat: PC/Games, desc: "Транспорт"}
- {id: 311, cat: PC/Games, desc: "Марс"}
- {id: 312, cat: PC/Games, desc: "Оборотни"}
- {id: 313, cat: PC/Games, desc: "Бой"}
- {id: 314, cat: PC/Games, desc: "Несколько концовок"}
- {id: 315, cat: PC/Games, desc: "Игра против ИИ"}
- {id: 316, cat: PC/Games, desc: "Линейная"}
- {id: 192, cat: PC/Games, desc: "Нелинейная"}
- {id: 317, cat: PC/Games, desc: "Повествовательная"}
- {id: 318, cat: PC/Games, desc: "Набор очков"}
- {id: 319, cat: PC/Games, desc: "Менеджмент инвентаря"}
- {id: 320, cat: PC/Games, desc: "Перемещение по сетке"}
- {id: 321, cat: PC/Games, desc: "Разделение на классы"}
- {id: 322, cat: PC/Games, desc: "Кастомизация оружия"}
- {id: 323, cat: PC/Games, desc: "Построение колоды"}
- {id: 324, cat: PC/Games, desc: "Гонки на выживание"}
- {id: 325, cat: PC/Games, desc: "Свобода движения"}
- {id: 326, cat: PC/Games, desc: "Замедление времени"}
- {id: 327, cat: PC/Games, desc: "Динамическое повествование"}
- {id: 238, cat: PC/Games, desc: "Игры 2024 года"}
- {id: 237, cat: PC/Games, desc: "Игры 2023 года"}
- {id: 236, cat: PC/Games, desc: "Игры 2022 года"}
- {id: 235, cat: PC/Games, desc: "Игры 2021 года"}
- {id: 199, cat: PC/Games, desc: "Игры 2020 года"}
- {id: 200, cat: PC/Games, desc: "Игры 2019 года"}
- {id: 201, cat: PC/Games, desc: "Игры 2018 года"}
- {id: 202, cat: PC/Games, desc: "Игры 2017 года"}
- {id: 203, cat: PC/Games, desc: "Игры 2016 года"}
- {id: 204, cat: PC/Games, desc: "Игры 2015 года"}
- {id: 205, cat: PC/Games, desc: "Игры 2014 года"}
- {id: 206, cat: PC/Games, desc: "Игры 2013 года"}
- {id: 207, cat: PC/Games, desc: "Игры 2012 года"}
- {id: 208, cat: PC/Games, desc: "Игры 2011 года"}
- {id: 209, cat: PC/Games, desc: "Игры 2010 года"}
- {id: 210, cat: PC/Games, desc: "Игры 2009 года"}
- {id: 211, cat: PC/Games, desc: "Игры 2008 года"}
- {id: 212, cat: PC/Games, desc: "Игры 2007 года"}
- {id: 213, cat: PC/Games, desc: "Игры 2006 года"}
- {id: 214, cat: PC/Games, desc: "Игры 2005 года"}
- {id: 215, cat: PC/Games, desc: "Игры 2004 года"}
- {id: 216, cat: PC/Games, desc: "Игры 2003 года"}
- {id: 217, cat: PC/Games, desc: "Игры 2002 года"}
- {id: 218, cat: PC/Games, desc: "Игры 2001 года"}
- {id: 219, cat: PC/Games, desc: "Игры 2000 года"}
- {id: 220, cat: PC/Games, desc: "Игры 1999 года"}
- {id: 221, cat: PC/Games, desc: "Игры 1998 года"}
- {id: 222, cat: PC/Games, desc: "Игры 1997 года"}
- {id: 223, cat: PC/Games, desc: "Игры 1996 года"}
- {id: 224, cat: PC/Games, desc: "Игры 1995 года"}
- {id: 225, cat: PC/Games, desc: "Игры 1994 года"}
- {id: 226, cat: PC/Games, desc: "Игры 1993 года"}
- {id: 227, cat: PC/Games, desc: "Игры 1992 года"}
- {id: 228, cat: PC/Games, desc: "Игры 1991 года"}
- {id: 229, cat: PC/Games, desc: "Игры 1990 года"}
- {id: 231, cat: PC/Games, desc: "Дополнения"}
- {id: 250, cat: PC/Games, desc: "Модификации"}
- {id: 23, cat: PC/Games, desc: "Ранний Доступ"}
- {id: 246, cat: PC/Games, desc: "Обновление"}
- {id: 230, cat: PC/Games, desc: "Все Топ игры"}
- {id: 329, cat: PC/Games, desc: "Актуальные Топ игры"}
- {id: 24, cat: PC/Games, desc: "Новинка"}
- {id: 194, cat: PC/Games, desc: "Игры по сети"}
modes:
search: [q]
settings: []
download:
selectors:
- selector: a.itemdown_games
attribute: href
search:
# keywords (article titles only search)
# do=search&subaction=search&story=five+freddy&titleonly=3&searchdate=0&sortby=date&resorder=desc&catlist[]=1&catlist[]=2&catlist[]=3
# keywordless (article body search) query=game
# do=search&subaction=search&story=game&titleonly=0&searchdate=0&sortby=date&resorder=desc&catlist[]=0
paths:
- path: index.php
inputs:
$raw: "{{ range .Categories }}catlist[]={{.}}&{{end}}"
do: search
subaction: search
search_start: 0
full_search: 1
result_from: 1
showposts: 1
# 0 article, 1 comments, 2 static pages, 3 article titles
titleonly: "{{ if .Keywords }}3{{ else }}0{{ end }}"
searchdate: 0
story: "{{ if .Keywords }}{{ .Keywords }}{{ else }}game{{ end }}"
sortby: date
resorder: desc
rows:
# results without sizes are just pre-release announcements
selector: div.short_search:has(div.shor_subtitles span:nth-child(2):contains(" "))
fields:
category:
text: 1
year:
selector: div.shor_subtitles span
filters:
- name: regexp
args: (\d+)
title:
selector: div.short_titles > a
filters:
- name: append
args: " [{{ .Result.year }}]"
details:
selector: div.short_titles > a
attribute: href
download:
selector: div.short_titles > a
attribute: href
poster:
selector: img
attribute: src
date:
selector: img
attribute: src
filters:
- name: regexp
args: ".*/(\\d{4}-\\d{2})/.*"
- name: dateparse
args: "yyyy-MM"
seeders:
text: 1
leechers:
text: 1
size_rus:
selector: div.shor_subtitles span:nth-child(2):contains("Б")
optional: true
filters:
- name: replace
args: ["ТБ", "TB"]
- name: replace
args: ["ГБ", "GB"]
- name: replace
args: ["МБ", "MB"]
- name: replace
args: ["КБ", "KB"]
size_eng:
selector: div.shor_subtitles span:nth-child(2):contains("B")
optional: true
size:
text: "{{ if or .Result.size_rus .Result.size_eng }}{{ or .Result.size_rus .Result.size_eng }}{{ else }}0 B{{ end }}"
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -1,197 +0,0 @@
---
id: carpt
name: CarPT
description: "CarPT is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://carpt.net/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 402, cat: TV, desc: "TV Series/连续剧"}
- {id: 403, cat: TV/Anime, desc: "Animations/动漫"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 405, cat: TV, desc: "TV Shows/综艺"}
- {id: 406, cat: Audio, desc: "Music/音乐"}
- {id: 407, cat: Other, desc: "Misc/其他"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
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 CarPT Web Site. Otherwise just leave it empty."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Account Retention Rules:<ol><li>Extreme User and above will be retained forever</li><li> Elite Users and above will not be banned after parking (in the Control Panel)</li><li>Users with a parked account will be banned if they do not log in for 360 consecutive days</li><li>Users with a non-parked account will be banned if they do not log in for 150 consecutive days</li><li> Users with no traffic (i.e., upload/download data is 0) who do not log in for 60 consecutive days will be banned.</li></ol>"
login:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs:
secret: ""
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
two_step_code: "{{ .Config.2facode }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:has(h2:contains("失败"))
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ 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 }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(a[href^="details.php?id="])
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: img[data-src]
attribute: data-src
imdbid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="movie.douban.com/subject/"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 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 vv1.8.11 2024-03-11

View File

@@ -1,181 +0,0 @@
---
id: ceskeforum
name: CeskeForum
description: "CeskeForum is a CZECH Private Torrent Tracker for MOVIES / TV / GENERAL"
language: cs-CZ
type: private
encoding: UTF-8
links:
- https://t.ceskeforum.com/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Filmy (Movies)"}
- {id: 403, cat: TV, desc: "TV pořady (TV Shows)"}
- {id: 404, cat: TV/Documentary, desc: "TV dokumenty (Documentaries)"}
- {id: 408, cat: TV, desc: "TV seriály - kompletní série (TV Series complete)"}
- {id: 402, cat: TV, desc: "TV seriály - jednotlivé díly (TV Series episodes)"}
- {id: 407, cat: TV/Sport, desc: "Sport"}
- {id: 411, cat: Books, desc: "Knihy (Books)"}
- {id: 413, cat: Audio/Audiobook, desc: "Knihy ve zvukové podobě (AudioBooks)"}
- {id: 406, cat: Audio, desc: "Hudba (Music)"}
- {id: 410, cat: PC, desc: "Software"}
- {id: 412, cat: PC/Games, desc: "Software - Hry (Games)"}
- {id: 409, cat: Other, desc: "Nezařazené (Misc)"}
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.
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:has(h2:contains("Přihlášení selhalo!"))
message:
selector: td.text
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 }}{{ .Keywords }}{{ end }}"
# 0=incldead, 1=active, 2=dead
incldead: 0
# show promotions: 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=imdb URL
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
# can support genre searching but you need to know the id, eg &team10=1 for Drama (id is 10)
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
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: " +02:00" # EET
- 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: " +02:00" # EET
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
genre:
selector: table.torrentname > tbody > tr > td:first-child
remove: a
filters:
- name: validate
args: "Akční, Animovaný, Dobrodružný, Dokumentární, Drama, Fantasy, Horor, Komedie, Krimi, Pohádka, Rodinný, Romantický, Sci-Fi, Thriller, Válečný, Western"
# NexusPHP Standard v1.5 Beta 4

View File

@@ -1,173 +0,0 @@
---
id: chdbits
name: CHDBits
description: "CHDBits is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://ptchdbits.co/
legacylinks:
- https://chdbits.co/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries"}
- {id: 405, cat: TV/Anime, desc: "Animations"}
- {id: 402, cat: TV, desc: "TV Series"}
- {id: 403, cat: TV, desc: "TV Shows"}
- {id: 406, cat: Audio/Video, desc: "Music Videos"}
- {id: 407, cat: TV/Sport, desc: "Sports"}
- {id: 409, cat: Other, desc: "Misc"}
- {id: 408, cat: Audio, desc: "HQ Audio"}
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: Search freeleech only
default: false
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: sort
type: select
label: Sort requested from site
default: 4
options:
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:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:has(h2:contains("失败"))
- selector: td.embedded:has(h2:contains("failed"))
test:
path: torrents.php
selector: a[href*="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
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
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:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
size:
selector: td:nth-child(5)
grabs:
selector: td:nth-child(8)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
date_elapsed:
# time type: time elapsed (default)
selector: td: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: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 }}"
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:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP 73f201530b 2023-08-07

View File

@@ -1,178 +0,0 @@
---
id: cinematik
name: Cinematik
description: "A tracker for full BD and DVD discs of non-mainstream movies, niche cinema and arthouse."
language: en-US
type: private
encoding: UTF-8
links:
- https://cinematik.net/
legacylinks:
- https://www.cinematik.net/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Film"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Movies/Foreign, desc: "Foreign Film"}
- {id: 4, cat: TV/Foreign, desc: "Foreign TV"}
- {id: 5, cat: Movies/Other, desc: "Opera & Musical"}
- {id: 6, cat: Movies/Foreign, desc: "Asian Film"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
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://cinematik.net/\" target=\"_blank\">Cinematik</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: "With 2FA enabled, there are no specific requirements for uploading, downloading, or posting. Your membership continues based on the staff's fair assessment of your overall activity and contributions."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free[]=100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
# minimumratio:
# text: 0.4
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# json UNIT3D 8.0.2

View File

@@ -1,150 +0,0 @@
---
id: cpasbien
name: cpasbien
description: "cpasbien is a FRENCH Public site for TV / MOVIES / GENERAL"
language: fr-FR
type: public
encoding: UTF-8
followredirect: true
links:
- https://cpasbien-vf.li/
legacylinks:
- https://www.cpasbiens.cz/
- https://www.cpasbiens.bz/
- https://www.cpasbien.vg/
- https://www.cpasbien.lol/
- https://www.gktorrent.biz/
- https://vww.cpasbien-fr.fr/
- https://wvw.cpasbien-fr.fr/
- https://wwwv.cpasbien-fr.fr/
- https://www2.cpasbien-fr.fr/
- https://www.cpasbien-fr.nz/
- https://vwwvwvwvvw.cpasbien-fr.nz/
- https://cpasbiens3.fr/
- https://labastidevivante.fr/
- https://cpasbiens911.fr/
- https://jardattraction.fr/
- https://cpasbien-vf.fr/
- https://cpasbien-vf.pics/
caps:
categories:
Other: Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: flaresolverr
type: info
label: FlareSolverr
default: This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href="https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers" target="_blank" rel="noreferrer">FlareSolverr</a> to access it.
- name: info_8000
type: info
label: About cpasbien Categories
default: cpasbien does not return categories in its search results. To sync to your apps, include 8000(Other) in your Apps' Sync Categories.
- name: multilang
type: checkbox
label: Replace MULTi by another language in release name
default: false
- name: multilanguage
type: select
label: Replace MULTi by this language
default: FRENCH
options:
FRENCH: FRENCH
MULTi FRENCH: MULTi FRENCH
ENGLISH: ENGLISH
MULTi ENGLISH: MULTi ENGLISH
VOSTFR: VOSTFR
MULTi VOSTFR: MULTi VOSTFR
- name: vostfr
type: checkbox
label: Replace VOSTFR and SUBFRENCH with ENGLISH
default: false
download:
selectors:
- selector: a[href^="magnet:?xt="]
attribute: href
search:
paths:
- path: "{{ if .Keywords }}index.php?do=search&subaction=search{{ else }}{{ end }}"
method: post
inputs:
story: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ end }}"
# does not support imdbid search and does not return imdb link in results.
keywordsfilters:
# if searching for season packs with S01 to saison 1 #9712
- name: re_replace
args: ["(?i)\\b(?:S0?)(\\d{1,3})\\b", "saison $1"]
rows:
selector: div#gauche > table > tbody > tr:has(a), div#dle-content > a.cover2
fields:
category:
text: Other
title_phase1_title:
selector: a
title_phase1_url:
selector: a
attribute: href
filters:
- name: regexp
args: torrents\d+\/(.+?)\/
- name: replace
args: ["-", " "]
title_phase1:
text: "{{ if .Result.title_phase1_title }}{{ .Result.title_phase1_title }}{{ else }}{{ .Result.title_phase1_url }}{{ end }}"
filters:
- name: re_replace
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b(19|20\\d{2})\\b)$", "$3 $1$2"]
title_vostfr:
text: "{{ .Result.title_phase1 }}"
filters:
- name: re_replace
args: ["(?i)\\b(vostfr|subfrench)\\b", "ENGLISH"]
title_phase2:
text: "{{ if .Config.vostfr }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_phase1 }}{{ end }}"
title_multilang:
text: "{{ .Result.title_phase2 }}"
filters:
- name: re_replace
args: ["(?i)\\b(MULTI(?!.*(?:FRENCH|ENGLISH|VOSTFR)))\\b", "{{ .Config.multilanguage }}"]
title:
text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase2 }}{{ end }}"
details:
selector: a
attribute: href
download:
selector: a
attribute: href
poster:
selector: img
attribute: src
size_optional:
selector: div.poid
optional: true
size:
text: "{{ if .Result.size_optional }}{{ .Result.size_optional }}{{ else }}512 MB{{ end }}"
date:
text: now
seeders_optional:
selector: div.up
optional: true
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
selector: div.down
optional: true
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -1,141 +0,0 @@
---
id: cpasbienclone
name: cpasbien clone
description: "cpasbien clone is a FRENCH Public site for TV / MOVIES / GENERAL"
language: fr-FR
type: public
encoding: UTF-8
followredirect: true
links:
- https://www.cpasbien.tw/
legacylinks:
- https://www1.cpasbiens.ws/
- https://www2.cpasbiens.ws/
- https://cpasbiens.cm/
- https://www1.cpasbiens.cm/
- https://wwv.cpasbien.to/
- https://cpasbiens.black-mirror.xyz/
- https://cpasbiens.unblocked.casa/
- https://cpasbiens.proxyportal.fun/
- https://cpasbiens.uk-unblock.xyz/
- https://cpasbiens.ind-unblock.xyz/
- https://www.cpasbien.gg/
- https://www.cpasbien.vip/
- https://cpasbien.to/
caps:
categories:
Other: Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
allowrawsearch: true
settings:
- name: info_8000
type: info
label: About cpasbienclone Categories
default: cpasbienclone does not return categories in its search results. To sync to your apps, include 8000(Other) in your Apps' Sync Categories.
- name: multilang
type: checkbox
label: Replace MULTi by another language in release name
default: false
- name: multilanguage
type: select
label: Replace MULTi by this language
default: FRENCH
options:
FRENCH: FRENCH
MULTi FRENCH: MULTi FRENCH
ENGLISH: ENGLISH
MULTi ENGLISH: MULTi ENGLISH
VOSTFR: VOSTFR
MULTi VOSTFR: MULTi VOSTFR
- name: vostfr
type: checkbox
label: Replace VOSTFR and SUBFRENCH with ENGLISH
default: false
- name: sort
type: select
label: Sort requested from site (Works only for searches with Keywords)
default: trie-date-d
options:
trie-date-d: created desc
trie-date-a: created asc
trie-seeds-d: seeders desc
trie-seeds-a: seeders asc
trie-poid-d: size desc
trie-poid-a: size asc
trie-nom-d: title desc
trie-nom-a: title asc
download:
before:
# request target
path: "download_magnet?id={{ re_replace .DownloadUri.AbsoluteUri \"^.*-(\\d+)\\.html\" \"$1\" }}"
selectors:
- selector: body
usebeforeresponse: true
search:
paths:
- path: "{{ if .Keywords }}search_torrent/{{ .Keywords }}.html,{{ .Config.sort }}{{ else }}home/{{ end }}"
rows:
selector: table.table-corps > tbody > tr:has(a)
fields:
category:
text: Other
title_phase1:
selector: a
filters:
- name: re_replace
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b(19|20\\d{2})\\b)$", "$3 $1$2"]
title_vostfr:
text: "{{ .Result.title_phase1 }}"
filters:
- name: re_replace
args: ["(?i)\\b(vostfr|subfrench)\\b", "ENGLISH"]
title_phase2:
text: "{{ if .Config.vostfr }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_phase1 }}{{ end }}"
title_multilang:
text: "{{ .Result.title_phase2 }}"
filters:
- name: re_replace
args: ["(?i)\\b(MULTI(?!.*(?:FRENCH|ENGLISH|VOSTFR)))\\b", "{{ .Config.multilanguage }}"]
title:
text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase2 }}{{ end }}"
details:
selector: a
attribute: href
download:
selector: a
attribute: href
size:
selector: div.poid
filters:
- name: re_replace
args: ["(\\w)o", "$1B"]
# keyword search returns nnnnn.n in MB but without unit indicator
- name: re_replace
args: ["(\\d+\\.\\d)$", "$1MB"]
date:
text: now
seeders_optional:
selector: div.up
optional: true
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
selector: div.down
optional: true
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -1,162 +0,0 @@
---
id: danishbytes-api
name: DanishBytes (API)
description: "DanishBytes is a Private Danish Tracker"
language: en-US
type: private
encoding: UTF-8
links:
- https://danishbytes.club/
- https://danishbytes2.org/
- https://dbytes.org/
legacylinks:
- https://danishbytes.org/
- https://danishbytes.art/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Sound"}
- {id: 4, cat: PC/Games, desc: "Games"}
- {id: 5, cat: PC/0day, desc: "Appz"}
- {id: 8, cat: Books, desc: "Bookz"}
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_apikey
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://danishbytes.club/\" target=\"_blank\">DanishBytes</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: rsskey
type: text
label: RSSKey
- name: info_rsskey
type: info
label: About your RSS key
default: "Find or Generate a new RSS key by accessing your <a href=\"https://danishbytes.club/\" target =_blank>DanishBytes</a> account <i>My Security</i> page and clicking on the <b>RSS Key (RID)</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
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
- name: info_activity
type: info
label: Account Inactivity
default: "If you have not logged in for 90 days, the user is automatically deleted."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
- path: "/api/torrents/v2/filter?search={{ .Keywords }}{{ if .Query.IMDBIDShort }}&imdb={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdb={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdb={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&freeleech=1{{ else }}{{ end }}&sorting={{ .Config.sort }}&direction={{ .Config.type }}&qty=100&page=1"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
rows:
selector: torrents
count:
selector: $.resultsCount
fields:
_id:
selector: .id
category:
selector: category_id
title:
selector: name
details:
text: "/torrents/{{ .Result._id }}"
download:
text: "/torrent/download/{{ .Result._id }}.{{ .Config.rsskey }}"
infohash:
selector: info_hash
poster:
selector: poster_image
genre:
selector: meta_genres
filters:
- name: re_replace
args: ["(?i)(Action og eventyr)", "Action_og_eventyr"]
- name: re_replace
args: ["(?i)(Sci-fi og Fantasy)", "Sci-fi_og_Fantasy"]
- name: re_replace
args: ["(?i)(Stand-Up Comedy)", "Stand-Up_Comedy"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .Result.genre }}"
imdbid:
selector: imdb
tmdbid:
selector: tmdb
tvdbid:
selector: tvdb
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
downloadvolumefactor:
# api returns 0=false, 1=true
selector: free
case:
0: 1 # not free
1: 0 # freeleech
uploadvolumefactor:
# api returns 0=false, 1=true
selector: doubleup
case:
0: 1 # normal
1: 2 # double
minimumratio:
text: 1.0
minimumseedtime:
# 2 day (as seconds = 2 x 24 x 60 x 60)
text: 172800
# json DBy v0.96

View File

@@ -1,200 +0,0 @@
---
id: datascene-api
name: DataScene (API)
description: "DataScene (DS) is a ROMANIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: en-US
type: private
encoding: UTF-8
links:
- https://datascene.xyz/
legacylinks:
- http://datascene.net/
- https://datascene.net/
caps:
categorymappings:
- {id: 1, cat: Movies/HD, desc: "Movie HD"}
- {id: 23, cat: Movies/HD, desc: "Movies HD Ro"}
- {id: 11, cat: Movies/UHD, desc: "Movies 4K"}
- {id: 12, cat: Movies/UHD, desc: "Movies 4K Ro"}
- {id: 14, cat: Movies/BluRay, desc: "Movies Bluray"}
- {id: 15, cat: Movies/BluRay, desc: "Movies Bluray Ro"}
- {id: 27, cat: Movies/DVD, desc: "DVD"}
- {id: 28, cat: Movies/DVD, desc: "DVD Ro"}
- {id: 19, cat: Movies/SD, desc: "SD"}
- {id: 20, cat: Movies/SD, desc: "SD Ro"}
- {id: 2, cat: TV/HD, desc: "TV HD"}
- {id: 18, cat: TV/HD, desc: "TV HD Ro"}
- {id: 26, cat: TV/SD, desc: "TV SD"}
- {id: 10, cat: TV/SD, desc: "TV SD Ro"}
- {id: 31, cat: TV/SD, desc: "DVD"}
- {id: 32, cat: TV/SD, desc: "DVD Ro"}
- {id: 29, cat: TV/UHD, desc: "TV 4K"}
- {id: 30, cat: TV/UHD, desc: "TV 4K Ro"}
- {id: 22, cat: TV, desc: "TV Pack"}
- {id: 33, cat: TV, desc: "TV Pack Ro"}
- {id: 4, cat: PC/Games, desc: "Game"}
- {id: 3, cat: Audio, desc: "Music"}
- {id: 21, cat: Audio/Video, desc: "Music Video"}
- {id: 7, cat: PC/Mobile-Other, desc: "Mobile"}
- {id: 24, cat: PC, desc: "Linux"}
- {id: 8, cat: Books/EBook, desc: "E-Book"}
- {id: 25, cat: TV/Sport, desc: "Sport"}
- {id: 5, cat: PC/0day, desc: "Application"}
- {id: 13, cat: TV/Anime, desc: "Anime"}
- {id: 6, cat: XXX, desc: "XXX"}
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://datascene.xyz/\" target=\"_blank\">DataScene</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: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_activity
type: info
label: Account Inactivity
default: "<ul><li>Accounts with zero activity (0 bytes download and 0 bytes upload) are automatically deleted after 30 days.</li><li>Inactive VIP and unparked accounts are automatically deleted after 40 days.</li></ul>"
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free[]=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:
selector: name
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)^None$", ""]
- name: re_replace
args: ["(?i)(All Sex)", "All_Sex"]
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .Result.genre }}"
files:
selector: num_file
seeders:
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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
# minimumratio:
# text: 0.4
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# json UNIT3D 7.2.0

View File

@@ -1,405 +0,0 @@
---
id: demonoid
name: Demonoid
description: "Demonoid is a Semi-Private torrent site for MOVIES / TV / GENERAL"
language: en-US
type: semi-private
encoding: UTF-8
links:
- https://www.demonoid.is/
- https://www.dnoid.to/
- https://www.dnoid.pw/
- https://demonoid.torrentbay.st/
legacylinks:
- https://demonoid.unblockit.boo/
- https://demonoidevmsgasmojajlhikwetsr4pxzw6xkjt3dgdv6nr5yxvsamid.onion.ly/
- https://demonoidevmsgasmojajlhikwetsr4pxzw6xkjt3dgdv6nr5yxvsamid.tor2web.to/
- https://demonoidevmsgasmojajlhikwetsr4pxzw6xkjt3dgdv6nr5yxvsamid.tor2web.link/ # Origin is unreachable Error code 523
- https://demonoid.mrunblock.guru/
- https://demonoid.torrentbay.to/
- https://demonoid.unblockit.click/
- https://demonoid.unblockit.asia/
- https://demonoid.unblockit.mov/
- https://demonoid.mrunblock.life/
- https://demonoid.unblockit.rsvp/
- https://demonoid.nocensor.click/
- https://demonoid.unblockit.vegas/
- https://demonoid.unblockit.esq/
- https://demonoid.unblockit.zip/
- https://demonoid.unblockit.foo/
- https://demonoid.unblockit.ing/
- https://demonoid.torrentbay.net/
- https://demonoid.mrunblock.bond/
- https://demonoid.nocensor.cloud/
- https://demonoid.unblockit.date/
- https://demonoid.unblockit.dad/
- https://demonoid.unblockit.africa/
- https://demonoid.unblockit.casa/ # 302
caps:
categorymappings:
# fetch these from https://www.demonoid.is/cached/torrent_categories_script.js?v5
# Everything
- {id: 0, cat: Other/Misc, desc: "Miscellaneous"}
# Applications
- {id: 1, cat: PC/Mobile-Android, desc: "Applications Android"}
- {id: 2, cat: PC/Mobile-iOS, desc: "Applications phone / Ipod touch"}
- {id: 3, cat: PC, desc: "Applications Linux"}
- {id: 4, cat: PC/Mac, desc: "Applications Mac"}
- {id: 5, cat: PC/Mobile-Other, desc: "Applications Mobile phone"}
- {id: 6, cat: PC, desc: "Applications PocketPC"}
- {id: 7, cat: PC/0day, desc: "Applications Windows"}
# Audio Books
- {id: 8, cat: Audio/Audiobook, desc: "Audio Books Action"}
- {id: 9, cat: Audio/Audiobook, desc: "Audio Books Adventure"}
- {id: 10, cat: Audio/Audiobook, desc: "Audio Books Biography"}
- {id: 11, cat: Audio/Audiobook, desc: "Audio Books Childrens"}
- {id: 12, cat: Audio/Audiobook, desc: "Audio Books Computers and Technology"}
- {id: 13, cat: Audio/Audiobook, desc: "Audio Books Contemporary"}
- {id: 14, cat: Audio/Audiobook, desc: "Audio Books Cooking"}
- {id: 15, cat: Audio/Audiobook, desc: "Audio Books Crafts and Hobbies"}
- {id: 16, cat: Audio/Audiobook, desc: "Audio Books Educational"}
- {id: 17, cat: Audio/Audiobook, desc: "Audio Books Fantasy"}
- {id: 18, cat: Audio/Audiobook, desc: "Audio Books Fiction"}
- {id: 19, cat: Audio/Audiobook, desc: "Audio Books General"}
- {id: 20, cat: Audio/Audiobook, desc: "Audio Books History"}
- {id: 21, cat: Audio/Audiobook, desc: "Audio Books Horror"}
- {id: 22, cat: Audio/Audiobook, desc: "Audio Books Humor"}
- {id: 23, cat: Audio/Audiobook, desc: "Audio Books Literary"}
- {id: 24, cat: Audio/Audiobook, desc: "Audio Books Magazine"}
- {id: 25, cat: Audio/Audiobook, desc: "Audio Books Mainstream"}
- {id: 26, cat: Audio/Audiobook, desc: "Audio Books Medicine and Health"}
- {id: 27, cat: Audio/Audiobook, desc: "Audio Books Mystery and Suspense"}
- {id: 28, cat: Audio/Audiobook, desc: "Audio Books Newspaper"}
- {id: 29, cat: Audio/Audiobook, desc: "Audio Books Nonfiction"}
- {id: 30, cat: Audio/Audiobook, desc: "Audio Books Other"}
- {id: 31, cat: Audio/Audiobook, desc: "Audio Books Paranormal"}
- {id: 32, cat: Audio/Audiobook, desc: "Audio Books Religion"}
- {id: 33, cat: Audio/Audiobook, desc: "Audio Books Romance"}
- {id: 34, cat: Audio/Audiobook, desc: "Audio Books RPG"}
- {id: 35, cat: Audio/Audiobook, desc: "Audio Books Sci-Fi"}
- {id: 36, cat: Audio/Audiobook, desc: "Audio Books Self-help"}
- {id: 37, cat: Audio/Audiobook, desc: "Audio Books Suspense"}
- {id: 38, cat: Audio/Audiobook, desc: "Audio Books Textbook"}
- {id: 39, cat: Audio/Audiobook, desc: "Audio Books Thriller"}
- {id: 40, cat: Audio/Audiobook, desc: "Audio Books Western"}
- {id: 41, cat: Audio/Audiobook, desc: "Audio Books Young Adult"}
# Books
- {id: 42, cat: Books/EBook, desc: "Books Action and Adventure"}
- {id: 43, cat: Books/EBook, desc: "Books Biography"}
- {id: 44, cat: Books/EBook, desc: "Books Childrens"}
- {id: 45, cat: Books/EBook, desc: "Books Computers and Technology"}
- {id: 46, cat: Books/EBook, desc: "Books Contemporary"}
- {id: 47, cat: Books/EBook, desc: "Books Cooking"}
- {id: 48, cat: Books/EBook, desc: "Books Crafts and Hobbies"}
- {id: 49, cat: Books/EBook, desc: "Books Educational"}
- {id: 50, cat: Books/EBook, desc: "Books Fantasy"}
- {id: 51, cat: Books/EBook, desc: "Books Fiction"}
- {id: 52, cat: Books/EBook, desc: "Books General"}
- {id: 53, cat: Books/EBook, desc: "Books History"}
- {id: 54, cat: Books/EBook, desc: "Books Horror"}
- {id: 55, cat: Books/EBook, desc: "Books Humor"}
- {id: 56, cat: Books/EBook, desc: "Books Literary"}
- {id: 57, cat: Books/Mags, desc: "Books Magazine"}
- {id: 58, cat: Books/EBook, desc: "Books Mainstream"}
- {id: 59, cat: Books/EBook, desc: "Books Medicine and Health"}
- {id: 60, cat: Books/EBook, desc: "Books Mystery and Suspense"}
- {id: 61, cat: Books/EBook, desc: "Books Newspaper"}
- {id: 62, cat: Books/EBook, desc: "Books Nonfiction"}
- {id: 63, cat: Books/EBook, desc: "Books Other"}
- {id: 64, cat: Books/EBook, desc: "Books Paranormal"}
- {id: 65, cat: Books/EBook, desc: "Books Religion"}
- {id: 66, cat: Books/EBook, desc: "Books Romance"}
- {id: 67, cat: Books/EBook, desc: "Books RPG"}
- {id: 68, cat: Books/EBook, desc: "Books Sci-Fi"}
- {id: 69, cat: Books/EBook, desc: "Books Self-help"}
- {id: 70, cat: Books/EBook, desc: "Books Suspense"}
- {id: 71, cat: Books/EBook, desc: "Books Textbook"}
- {id: 72, cat: Books/EBook, desc: "Books Thriller"}
- {id: 73, cat: Books/EBook, desc: "Books Western"}
- {id: 74, cat: Books/EBook, desc: "Books Young Adult"}
# Comics
- {id: 75, cat: Books/Comics, desc: "Comics Action / Adventure"}
- {id: 76, cat: Books/Comics, desc: "Comics Crime"}
- {id: 77, cat: Books/Comics, desc: "Comics Drama"}
- {id: 78, cat: Books/Comics, desc: "Comics Fantasy"}
- {id: 79, cat: Books/Comics, desc: "Comics Historical fiction"}
- {id: 80, cat: Books/Comics, desc: "Comics Horror"}
- {id: 81, cat: Books/Comics, desc: "Comics Illustrated novel"}
- {id: 82, cat: Books/Comics, desc: "Comics Manga"}
- {id: 83, cat: Books/Comics, desc: "Comics Other"}
- {id: 84, cat: Books/Comics, desc: "Comics Real-Life"}
- {id: 85, cat: Books/Comics, desc: "Comics Sci-Fi"}
- {id: 86, cat: Books/Comics, desc: "Comics Super Hero"}
# Games
- {id: 87, cat: PC, desc: "Games DOS"}
- {id: 88, cat: Console/Other, desc: "Games Dreamcast"}
- {id: 89, cat: Console/Other, desc: "Games Emulators"}
- {id: 90, cat: Console/Other, desc: "Games GameBoy"}
- {id: 91, cat: Console/Other, desc: "Games GameCube"}
- {id: 92, cat: PC, desc: "Games Linux"}
- {id: 93, cat: PC/Mac, desc: "Games Mac"}
- {id: 94, cat: PC/Mobile-Other, desc: "Games Mobile phone"}
- {id: 95, cat: Console/NDS, desc: "Games Nintendo DS"}
- {id: 96, cat: Console/Other, desc: "Games Palm"}
- {id: 97, cat: Console/PS3, desc: "Games Playstation"}
- {id: 98, cat: Console/Other, desc: "Games PocketPC"}
- {id: 99, cat: Console/PSP, desc: "Games PSP"}
- {id: 100, cat: Console/Wii, desc: "Games Wii / Wii U"}
- {id: 101, cat: PC/Games, desc: "Games Windows"}
- {id: 102, cat: Console/XBox, desc: "Games XBox"}
# Anime
- {id: 103, cat: TV/Anime, desc: "Anime Action"}
- {id: 104, cat: TV/Anime, desc: "Anime Adventure"}
- {id: 105, cat: TV/Anime, desc: "Anime Comedy"}
- {id: 106, cat: TV/Anime, desc: "Anime Drama"}
- {id: 107, cat: TV/Anime, desc: "Anime Fantasy"}
- {id: 108, cat: TV/Anime, desc: "Anime Horror"}
- {id: 109, cat: TV/Anime, desc: "Anime Other"}
- {id: 157, cat: TV/Anime, desc: "Anime Romance"}
- {id: 158, cat: TV/Anime, desc: "Anime Sci-Fi"}
# Movies
- {id: 151, cat: Movies, desc: "Movies Action"}
- {id: 110, cat: Movies, desc: "Movies Adventure"}
- {id: 236, cat: Movies, desc: "Movies Animation"}
- {id: 111, cat: Movies, desc: "Movies Biography"}
- {id: 152, cat: Movies, desc: "Movies Comedy"}
- {id: 112, cat: Movies, desc: "Movies Concerts"}
- {id: 113, cat: Movies, desc: "Movies Crime"}
- {id: 114, cat: Movies, desc: "Movies Documentary"}
- {id: 115, cat: Movies, desc: "Movies Drama"}
- {id: 116, cat: Movies, desc: "Movies Family"}
- {id: 153, cat: Movies, desc: "Movies Fantasy"}
- {id: 117, cat: Movies, desc: "Movies Horror"}
- {id: 118, cat: Movies, desc: "Movies Musical"}
- {id: 119, cat: Movies, desc: "Movies Mystery"}
- {id: 120, cat: Movies, desc: "Movies Other"}
- {id: 121, cat: Movies, desc: "Movies Romance"}
- {id: 154, cat: Movies, desc: "Movies Sci-Fi"}
- {id: 159, cat: Movies, desc: "Movies Short-Film"}
- {id: 160, cat: Movies, desc: "Movies Sports"}
- {id: 161, cat: Movies, desc: "Movies Thriller"}
- {id: 162, cat: Movies, desc: "Movies Trailers"}
- {id: 163, cat: Movies, desc: "Movies War"}
- {id: 164, cat: Movies, desc: "Movies Western"}
# Music
- {id: 122, cat: Audio, desc: "Music Alternative"}
- {id: 123, cat: Audio, desc: "Music Bluegrass"}
- {id: 124, cat: Audio, desc: "Music Blues"}
- {id: 125, cat: Audio, desc: "Music Childrens"}
- {id: 126, cat: Audio, desc: "Music Christian"}
- {id: 127, cat: Audio, desc: "Music Classical"}
- {id: 128, cat: Audio, desc: "Music Comedy"}
- {id: 129, cat: Audio, desc: "Music Contemporary African"}
- {id: 130, cat: Audio, desc: "Music Country"}
- {id: 131, cat: Audio, desc: "Music Dance / Disco"}
- {id: 132, cat: Audio, desc: "Music Drum and Bass"}
- {id: 133, cat: Audio, desc: "Music Electro / Techno"}
- {id: 134, cat: Audio, desc: "Music Folk"}
- {id: 165, cat: Audio, desc: "Music Gospel"}
- {id: 166, cat: Audio, desc: "Music Grunge"}
- {id: 167, cat: Audio, desc: "Music Hip-Hop / Rap"}
- {id: 168, cat: Audio, desc: "Music Indie"}
- {id: 169, cat: Audio, desc: "Music Industrial"}
- {id: 170, cat: Audio, desc: "Music J-Pop"}
- {id: 171, cat: Audio, desc: "Music Jazz"}
- {id: 172, cat: Audio, desc: "Music Latin American"}
- {id: 173, cat: Audio, desc: "Music Melodic"}
- {id: 174, cat: Audio, desc: "Music Metal"}
- {id: 175, cat: Audio, desc: "Music Other"}
- {id: 176, cat: Audio, desc: "Music Pop"}
- {id: 177, cat: Audio, desc: "Music Punk"}
- {id: 178, cat: Audio, desc: "Music Radio Show"}
- {id: 179, cat: Audio, desc: "Music Reggae"}
- {id: 180, cat: Audio, desc: "Music Rhythm and blues"}
- {id: 181, cat: Audio, desc: "Music Rock"}
- {id: 182, cat: Audio, desc: "Music Soul"}
- {id: 183, cat: Audio, desc: "Music Soundtrack"}
- {id: 184, cat: Audio, desc: "Music Trance"}
- {id: 185, cat: Audio, desc: "Music Trip Hop"}
# Music Videos
- {id: 135, cat: Audio/Video, desc: "Music Videos Alternative"}
- {id: 136, cat: Audio/Video, desc: "Music Videos Bluegrass"}
- {id: 137, cat: Audio/Video, desc: "Music Videos Blues"}
- {id: 138, cat: Audio/Video, desc: "Music Videos Childrens"}
- {id: 139, cat: Audio/Video, desc: "Music Videos Christian"}
- {id: 186, cat: Audio/Video, desc: "Music Videos Classical"}
- {id: 187, cat: Audio/Video, desc: "Music Videos Comedy"}
- {id: 188, cat: Audio/Video, desc: "Music Videos Contemporary African"}
- {id: 189, cat: Audio/Video, desc: "Music Videos Country"}
- {id: 190, cat: Audio/Video, desc: "Music Videos Dance / Disco"}
- {id: 191, cat: Audio/Video, desc: "Music Videos Drum and Bass"}
- {id: 192, cat: Audio/Video, desc: "Music Videos Electro / Techno"}
- {id: 193, cat: Audio/Video, desc: "Music Videos Folk"}
- {id: 194, cat: Audio/Video, desc: "Music Videos Gospel"}
- {id: 195, cat: Audio/Video, desc: "Music Videos Grunge"}
- {id: 196, cat: Audio/Video, desc: "Music Videos Hip-Hop / Rap"}
- {id: 197, cat: Audio/Video, desc: "Music Videos Indie"}
- {id: 198, cat: Audio/Video, desc: "Music Videos Industrial"}
- {id: 199, cat: Audio/Video, desc: "Music Videos J-Pop"}
- {id: 200, cat: Audio/Video, desc: "Music Videos Jazz"}
- {id: 201, cat: Audio/Video, desc: "Music Videos Latin American"}
- {id: 202, cat: Audio/Video, desc: "Music Videos Melodic"}
- {id: 203, cat: Audio/Video, desc: "Music Videos Metal"}
- {id: 204, cat: Audio/Video, desc: "Music Videos Other"}
- {id: 205, cat: Audio/Video, desc: "Music Videos Pop"}
- {id: 206, cat: Audio/Video, desc: "Music Videos Punk"}
- {id: 207, cat: Audio/Video, desc: "Music Videos Radio Show"}
- {id: 208, cat: Audio/Video, desc: "Music Videos Reggae"}
- {id: 209, cat: Audio/Video, desc: "Music Videos Rhythm and blues"}
- {id: 210, cat: Audio/Video, desc: "Music Videos Rock"}
- {id: 211, cat: Audio/Video, desc: "Music Videos Soul"}
- {id: 212, cat: Audio/Video, desc: "Music Videos Soundtrack"}
- {id: 213, cat: Audio/Video, desc: "Music Videos Trance"}
- {id: 214, cat: Audio/Video, desc: "Music Videos Trip Hop"}
# Pictures
- {id: 140, cat: Other, desc: "Pictures Art"}
- {id: 141, cat: Other, desc: "Pictures Commercial"}
- {id: 142, cat: Other, desc: "Pictures Glamour"}
- {id: 215, cat: Other, desc: "Pictures Other"}
- {id: 216, cat: Other, desc: "Pictures Photojournalism"}
- {id: 217, cat: Other, desc: "Pictures Snapshots"}
- {id: 218, cat: Other, desc: "Pictures Sports"}
- {id: 219, cat: Other, desc: "Pictures Wildlife"}
# TV
- {id: 155, cat: TV, desc: "TV Action"}
- {id: 143, cat: TV, desc: "TV Adventure"}
- {id: 144, cat: TV, desc: "TV Biography"}
- {id: 145, cat: TV, desc: "TV Cartoons"}
- {id: 146, cat: TV, desc: "TV Comedy"}
- {id: 147, cat: TV, desc: "TV Concerts"}
- {id: 148, cat: TV, desc: "TV Crime"}
- {id: 149, cat: TV, desc: "TV Documentary"}
- {id: 156, cat: TV, desc: "TV Drama"}
- {id: 220, cat: TV, desc: "TV Family"}
- {id: 221, cat: TV, desc: "TV Fantasy"}
- {id: 222, cat: TV, desc: "TV Horror"}
- {id: 223, cat: TV, desc: "TV Musical"}
- {id: 224, cat: TV, desc: "TV Mystery"}
- {id: 225, cat: TV, desc: "TV Other"}
- {id: 226, cat: TV, desc: "TV Reality"}
- {id: 227, cat: TV, desc: "TV Romance"}
- {id: 228, cat: TV, desc: "TV Sci-Fi"}
- {id: 229, cat: TV, desc: "TV Short film"}
- {id: 230, cat: TV, desc: "TV Sports"}
- {id: 231, cat: TV, desc: "TV Talk show"}
- {id: 232, cat: TV, desc: "TV Thriller"}
- {id: 233, cat: TV, desc: "TV Trailers"}
- {id: 234, cat: TV, desc: "TV War"}
- {id: 235, cat: TV, desc: "TV Western"}
# cat 7 Miscellaneous has no subcats
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
book-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Access this tracker with your browser</li><li>click on the <b>Apply Filter</b> button on the page to invoke the search and solve the challenge</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: sort
type: select
label: Sort requested from site
default: _
options:
_: created
S: seeders desc
s: seeders asc
B: size desc
b: size asc
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: /
selector: a[href^="/account_handler.php"]
download:
infohash:
hash:
selector: tr:has(td:contains("Torrent hash"))
filters:
# 907617B7 070AACB6 08CC213C 5277368D 217C1666
- name: replace
args: [" ", ""]
- name: regexp
args: ([A-F|0-9]{40})
title:
selector: td.ctable_header
filters:
- name: replace
args: ["Details for ", ""]
search:
paths:
# https://www.demonoid.is/files/?category=0&subcategory=0&quality=0&seeded=2&external=2&query=&sort=S
# https://www.demonoid.is/files/?c154&language=0&quality=0&seeded=2&query=world&to=1&sort=
# https://www.demonoid.is/files/?seeded=2&language=0&quality=0&to=1&query=world
- path: files/
inputs:
$raw: "{{ range .Categories }}c{{.}}&{{end}}"
# 0 seeded, 1 unseeded, 2 both
seeded: 2
# 0 all
quality: 0
# 0 Demonoid, 1 External, 2 Both
external: 2
# search in titles only
to: "{{ if .Query.IMDBID }}{{ else }}1{{ end }}"
query: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
sort: "{{ re_replace .Config.sort \"_\" \"\" }}"
# does not return imdb link in results
rows:
selector: table.font_12px tbody tr:has(td[class^="tone_1"]):not(:has(script))
after: 1
dateheaders:
selector: td.added_today:not(:contains("Sponsored links"))
filters:
- name: replace
args: ["Added ", ""]
- name: replace
args: ["on ", ""]
fields:
category:
text: 0
category|noappend:
selector: a.subcategory
attribute: href
optional: true
filters:
- name: querystring
args: subcategory
title:
selector: a[href^="/files/details/"]
details:
selector: a[href^="/files/details/"]
attribute: href
download:
selector: a[href^="/files/details/"]
attribute: href
description:
selector: td:nth-last-child(8)
size:
selector: td:nth-last-child(6)
grabs:
selector: td:nth-last-child(4)
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -1,169 +0,0 @@
---
id: desitorrents-api
name: DesiTorrents (API)
description: "Desitorrents is a Private Torrent Tracker for BOLLYWOOD / TOLLYWOOD / MUSIC"
language: en-US
type: private
encoding: UTF-8
links:
- https://desitorrents.tv/
- https://desitorrents.rocks/
- https://torrent.desi/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Music"}
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://desitorrents.tv/\" target=\"_blank\">DesiTorrents</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
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
- name: info_activity
type: info
label: Account Inactivity
default: "<ul><li>Accounts are regarded as inactive when users fail to sign into their accounts for more than 3 months (90 days). Inactive accounts are automatically disabled by a script that runs once every day.</li><li>For new accounts, members must generate some activity by downloading or uploading torrents in the first month (30 days) of their memberships.</li><li>Donors are exempt from automatic account disabling due to inactivity. If you wish to always maintain an active account consider donating.</li></ul>"
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free[]=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:
selector: name
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)^None$", ""]
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .Result.genre }}"
files:
selector: num_file
seeders:
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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
case:
0: 1 # normal
1: 2 # double
# 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)

View File

@@ -1,188 +0,0 @@
---
id: discfan
name: DiscFan
description: "DiscFan is a CHINESE Private Torrent Tracker for MOVIES / TV"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://discfan.net/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "中国大陆(CHN)"}
- {id: 404, cat: Movies, desc: "中国香港特别行政区(HKG)"}
- {id: 405, cat: Movies, desc: "中国台湾省(TWN)"}
- {id: 402, cat: Movies, desc: "泰国(THA)"}
- {id: 403, cat: Movies, desc: "日本(JPN)"}
- {id: 406, cat: Movies, desc: "韩国(KOR)"}
- {id: 410, cat: Movies, desc: "世界(World)"}
- {id: 411, cat: TV, desc: "剧集(Series)"}
- {id: 414, cat: Audio, desc: "音乐(Music)"}
- {id: 413, cat: TV/Documentary, desc: "记录(Documentary)"}
- {id: 416, cat: TV, desc: "综艺(Variety Show)"}
- {id: 417, cat: TV/Sport, desc: "体育(Sports)"}
- {id: 419, cat: TV/Anime, desc: "动漫(Animation)"}
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: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: sort
type: select
label: Sort requested from site
default: 4
options:
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:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:has(h2:contains("失敗"))
message:
selector: td.text
test:
path: index.php
selector: a[href*="userdetails.php?id="]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ 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 }}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:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td: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: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:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
category_title:
selector: a[href^="?cat="] > img
attribute: title
description:
selector: td:nth-child(2)
remove: a, img
filters:
- name: prepend
args: "cat={{ .Result.category_title }} - "
minimumratio:
text: 0.9
# NexusPHP v1.8.11 2024-03-27

View File

@@ -1,164 +0,0 @@
---
id: ebookbay
name: EBookBay
description: "EBook Bay (EBB) is a Public Torrent Tracker for E-BOOKS"
language: en-US
type: public
encoding: UTF-8
requestDelay: 2
links:
- http://ebb.la/ # site does not support https SSL_ERROR_BAD_CERT_DOMAIN
caps:
categorymappings:
- {id: "Action/Adventure", cat: Books/EBook, desc: "Action/Adventure"}
- {id: "Animals", cat: Books/EBook, desc: "Animals"}
- {id: "Arts", cat: Books/EBook, desc: "Arts"}
- {id: "Audio Books", cat: Audio/Audiobook, desc: "Audio Books"}
- {id: "Beauty", cat: Books/EBook, desc: "Beauty"}
- {id: "Business", cat: Books/EBook, desc: "Business"}
- {id: "Certification", cat: Books/EBook, desc: "Certification"}
- {id: "Children/Kids", cat: Books/EBook, desc: "Children/Kids"}
- {id: "Classic/Literary", cat: Books/EBook, desc: "Classic/Literary"}
- {id: "Comics", cat: Books/Comics, desc: "Comics"}
- {id: "Computer", cat: Books/EBook, desc: "Computer"}
- {id: "Contemporary", cat: Books/EBook, desc: "Contemporary"}
- {id: "Cooking", cat: Books/EBook, desc: "Cooking"}
- {id: "Crafts & Hobbies", cat: Books/EBook, desc: "Crafts & Hobbies"}
- {id: "Education", cat: Books/EBook, desc: "Education"}
- {id: "Entertainment", cat: Books/EBook, desc: "Entertainment"}
- {id: "Fantasy", cat: Books/EBook, desc: "Fantasy"}
- {id: "Gardening", cat: Books/EBook, desc: "Gardening"}
- {id: "Health", cat: Books/EBook, desc: "Health"}
- {id: "Historical Fiction", cat: Books/EBook, desc: "Historical Fiction"}
- {id: "History", cat: Books/EBook, desc: "History"}
- {id: "Horror", cat: Books/EBook, desc: "Horror"}
- {id: "Humorous", cat: Books/EBook, desc: "Humorous"}
- {id: "Internet", cat: Books/EBook, desc: "Internet"}
- {id: "Magazine", cat: Books/EBook, desc: "Magazine"}
- {id: "Marketing", cat: Books/EBook, desc: "Marketing"}
- {id: "Medical", cat: Books/EBook, desc: "Medical"}
- {id: "Mystery/Suspense", cat: Books/EBook, desc: "Mystery/Suspense"}
- {id: "Nonfiction", cat: Books/EBook, desc: "Nonfiction"}
- {id: "Novel", cat: Books/EBook, desc: "Novel"}
- {id: "Other", cat: Books/EBook, desc: "Other"}
- {id: "Paranormal", cat: Books/EBook, desc: "Paranormal"}
- {id: "Political", cat: Books/EBook, desc: "Political"}
- {id: "Real Estate", cat: Books/EBook, desc: "Real Estate"}
- {id: "Reference", cat: Books/EBook, desc: "Reference"}
- {id: "Religion", cat: Books/EBook, desc: "Religion"}
- {id: "Romance", cat: Books/EBook, desc: "Romance"}
- {id: "Sci-Fi", cat: Books/EBook, desc: "Sci-Fi"}
- {id: "Science", cat: Books/EBook, desc: "Science"}
- {id: "Self-Help", cat: Books/EBook, desc: "Self-Help"}
- {id: "Society", cat: Books/EBook, desc: "Society"}
- {id: "Software", cat: Books/EBook, desc: "Software"}
- {id: "Sports", cat: Books/EBook, desc: "Sports"}
- {id: "Technical", cat: Books/EBook, desc: "Technical"}
- {id: "Teen/Young Adult", cat: Books/EBook, desc: "Teen/Young Adult"}
- {id: "Textbook", cat: Books/EBook, desc: "Textbook"}
- {id: "Thriller", cat: Books/EBook, desc: "Thriller"}
- {id: "Travel", cat: Books/EBook, desc: "Travel"}
- {id: "Tutorial", cat: Books/EBook, desc: "Tutorial"}
- {id: "Western", cat: Books/EBook, desc: "Western"}
modes:
search: [q]
book-search: [q]
music-search: [q]
settings: []
download:
infohash:
hash:
selector: td:contains("Info Hash:") ~ td
filters:
- name: regexp
args: ([A-F|a-f|0-9]{40})
title:
selector: div#content > div.poststuff > div.postname
filters:
- name: trim
- name: validfilename
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
- path: /
- path: "page/2/"
- path: "page/3/"
- path: "page/4/"
- path: "page/5/"
inputs:
s: "{{ .Keywords }}"
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"]
rows:
selector: "div#content > div.poststuff:has(~ div.entry a.download), div#content > div.poststuff ~ div.entry:has(a.download)"
after: 1
fields:
category:
text: Other
category|noappend:
selector: span.writer
filters:
- name: re_replace
args: ["(?i)\\bEbooks?\\b", ""]
- name: regexp
args: "E book under:\\s+(.+?)\\s?\\\xA0"
title:
selector: div.postname a
details:
selector: a.detail
attribute: href
download:
selector: a.detail
attribute: href
poster:
selector: img[src^="http"]:not(img[src*="images/default_cover.jpg"])
attribute: src
date:
text: now
size_optional:
optional: true
selector: p:contains("File Size")
filters:
- name: regexp
args: "File Size: (.+?)s?$"
size:
text: "{{ if .Result.size_optional }}{{ .Result.size_optional }}{{ else }}0 B{{ end }}"
seeders_optional:
optional: true
selector: p:contains("Seeds")
filters:
- name: regexp
args: "Seeds: (\\d+)"
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
optional: true
selector: p:contains("Peers")
filters:
- name: regexp
args: "Peers: (\\d+)"
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
grabs_optional:
optional: true
selector: p:contains("Completed Downloads")
filters:
- name: regexp
args: "Completed Downloads: (\\d+)"
grabs:
text: "{{ if .Result.grabs_optional }}{{ .Result.grabs_optional }}{{ else }}0{{ end }}"
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# WordPress 2.5

View File

@@ -1,193 +0,0 @@
---
id: electro-torrent
name: Electro-Torrent
description: "Electro-Torrent is a POLISH Semi-Private Torrent Tracker for MOVIES / TV / GENERAL"
language: pl-PL
type: semi-private
encoding: UTF-8
links:
- https://electro-torrent.pl/
legacylinks:
- http://electro-torrent.pl/
caps:
categorymappings:
# from https://electro-torrent.pl/szukaj.php
# don't forget to update the category case block below
- {id: 1298, cat: Movies/SD, desc: "Filmy - Zwiastuny"}
- {id: 1, cat: Movies/SD, desc: "Filmy XviD/DivX"}
- {id: 769, cat: Movies/HD, desc: "Filmy 1080p AVC"}
- {id: 770, cat: Movies/HD, desc: "Filmy x264/1080p"}
- {id: 4, cat: Movies/HD, desc: "Filmy x264/720p"}
- {id: 642, cat: Movies/HD, desc: "Filmy x264/h264"}
- {id: 723, cat: Movies/UHD, desc: "Filmy 4K UHD"}
- {id: 1160, cat: Movies/UHD, desc: "Filmy x265/2160p"}
- {id: 1116, cat: Movies/HD, desc: "Filmy x265/1080p"}
- {id: 1204, cat: Movies/HD, desc: "Filmy x265/720p"}
- {id: 596, cat: Movies/HD, desc: "Filmy x265/h265"}
- {id: 1072, cat: Movies, desc: "Filmy - WAREZY"}
- {id: 3, cat: Movies/DVD, desc: "Filmy DVD"}
- {id: 5, cat: Movies/3D, desc: "Filmy 3D"}
- {id: 362, cat: Movies/SD, desc: "Filmy IVO"}
- {id: 696, cat: Movies/SD, desc: "Filmy TS/CAM"}
- {id: 1255, cat: TV, desc: "TV/Seriale - Warezy"}
- {id: 7, cat: TV, desc: "TV/Seriale"}
- {id: 8, cat: XXX, desc: "Erotyka"}
- {id: 10, cat: Audio, desc: "Muzyka"}
- {id: 11, cat: PC, desc: "Programy"}
- {id: 12, cat: PC/Mobile-Other, desc: "GSM/PDA"}
- {id: 13, cat: Console, desc: "Konsole"}
- {id: 14, cat: PC/Games, desc: "Gry PC"}
- {id: 1045, cat: PC/Games, desc: "Gry PC - Warezy"}
- {id: 15, cat: Movies, desc: "Dla Dzieci"}
- {id: 16, cat: Books, desc: "Książki"}
- {id: 525, cat: PC/Mac, desc: "Mac"}
- {id: 18, cat: PC, desc: "Linux"}
- {id: 19, cat: TV/Sport, desc: "Sport"}
- {id: 907, cat: TV/Anime, desc: "Anime"}
- {id: 21, cat: Other, desc: "Inne"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: useragent
type: text
label: User-Agent
- name: info_useragent
type: info
label: How to get the User-Agent
default: "<ol><li>From the same place you fetched the cookie,</li><li>Find <b>'user-agent:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole user-agent string <i>(everything after 'user-agent: ')</i> and <b>Paste</b> here.</li></ol>"
- 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: POLISH
options:
POLISH: POLISH
MULTi POLISH: MULTi POLISH
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: /
selector: a[href$="/logout.php"]
search:
# http://electro-torrent.pl/szukaj.php?search=&typ=torrent&cat=0
headers:
User-Agent: ["{{ .Config.useragent }}"]
paths:
- path: szukaj.php
inputs:
# does not support multi cat selection, defaulting to all
# $raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
cat: 0
typ: torrent
search: "{{ .Keywords }}"
rows:
selector: table.test5 > tbody > tr > td > div[id]:has(a[href*="/download/"])
fields:
category:
selector: div#kategoria-gatunek-1
case:
"div#kategoria-gatunek-1:contains(\"Filmy - Zwiastuny\")": 1298
"div#kategoria-gatunek-1:contains(\"Filmy XviD/DivX\")": 1
"div#kategoria-gatunek-1:contains(\"Filmy 1080p AVC\")": 769
"div#kategoria-gatunek-1:contains(\"Filmy x264/1080p\")": 770
"div#kategoria-gatunek-1:contains(\"Filmy x264/720p\")": 4
"div#kategoria-gatunek-1:contains(\"Filmy x264/h264\")": 642
"div#kategoria-gatunek-1:contains(\"Filmy 4K UHD\")": 723
"div#kategoria-gatunek-1:contains(\"Filmy x265/2160p\")": 1160
"div#kategoria-gatunek-1:contains(\"Filmy x265/1080p\")": 1116
"div#kategoria-gatunek-1:contains(\"Filmy x265/720p\")": 1204
"div#kategoria-gatunek-1:contains(\"Filmy x265/h265\")": 596
"div#kategoria-gatunek-1:contains(\"Filmy - WAREZY\")": 1072
"div#kategoria-gatunek-1:contains(\"Filmy DVD\")": 3
"div#kategoria-gatunek-1:contains(\"Filmy 3D\")": 5
"div#kategoria-gatunek-1:contains(\"Filmy IVO\")": 362
"div#kategoria-gatunek-1:contains(\"Filmy TS/CAM\")": 696
"div#kategoria-gatunek-1:contains(\"TV/Seriale - Warezy\")": 1255
"div#kategoria-gatunek-1:contains(\"TV/Seriale\")": 7
"div#kategoria-gatunek-1:contains(\"Erotyka\")": 8
"div#kategoria-gatunek-1:contains(\"Muzyka\")": 10
"div#kategoria-gatunek-1:contains(\"Programy\")": 11
"div#kategoria-gatunek-1:contains(\"GSM/PDA\")": 12
"div#kategoria-gatunek-1:contains(\"Konsole\")": 13
"div#kategoria-gatunek-1:contains(\"Gry PC - Warezy\")": 1045
"div#kategoria-gatunek-1:contains(\"Gry PC\")": 14
"div#kategoria-gatunek-1:contains(\"Dla Dzieci\")": 15
"div#kategoria-gatunek-1:contains(\"Książki\")": 16
"div#kategoria-gatunek-1:contains(\"Mac\")": 525
"div#kategoria-gatunek-1:contains(\"Linux\")": 18
"div#kategoria-gatunek-1:contains(\"Sport\")": 19
"div#kategoria-gatunek-1:contains(\"Anime\")": 907
"div#kategoria-gatunek-1:contains(\"Inne\")": 21
title_phase1:
selector: a[href^="/torrent/"]
attribute: title
title_multilang:
selector: a[href^="/torrent/"]
attribute: title
filters:
- name: re_replace
args: ["(?i)\\b(MULTI(?!.*(?:POLISH|ENGLISH|\\bPL\\b)))\\b", "{{ .Config.multilanguage }}"]
- name: re_replace
args: ["(?i)\\b(pl)\\b", "POLISH"]
title:
text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase1 }}{{ end }}"
details:
selector: a[href^="/torrent/"]
attribute: href
download:
selector: a[href*="/download/"]
attribute: href
poster:
selector: img.browse_poster
attribute: src
date:
selector: td.descr3
filters:
- name: regexp
args: (\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})
- name: append
args: " +01:00" # CET
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
size:
selector: td.descr3
filters:
- name: regexp
args: (\d{1,4}\.\d{2}\s+?[T|G|M|k]B)
seeders:
selector: font[color="green"] > b, font[color="red"] > b
leechers:
selector: font[color="green"]:nth-of-type(2) > b, font[color="red"]:nth-of-type(2) > b
grabs:
selector: td.descr3
filters:
- name: regexp
args: (\d{1,4}) razy
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -1,154 +0,0 @@
---
id: extratorrent-st
name: ExtraTorrent.st
description: "ExtraTorrent.st is a Public tracker for MOVIE / TV / GENERAL magnets"
language: en-US
type: public
encoding: UTF-8
links:
- https://extratorrent.st/
- https://extratorrent.ninjaproxy1.com/
- https://extratorrent.proxyninja.org/
legacylinks:
- https://extratorrent.nocensor.art/
- https://extratorrent.unblockit.bio/
- https://extratorrent.unblockit.boo/
- https://extratorrent.mrunblock.guru/
- https://extratorrent.unblockit.click/
- https://extratorrent.unblockit.asia/
- https://extratorrent.unblockit.mov/
- https://extratorrent.mrunblock.life/
- https://extratorrent.unblockit.rsvp/
- https://extratorrent.nocensor.click/
- https://extratorrent.unblockit.vegas/
- https://extratorrent.unblockit.esq/
- https://extratorrent.unblockit.zip/
- https://extratorrent.unblockit.foo/
- https://extratorrent.unblockit.ing/
- https://extratorrent.mrunblock.bond/
- https://extratorrent.nocensor.cloud/
- https://extratorrent.unblockit.date/
- https://extratorrent.unblockit.dad/
- https://extratorrent.unblockit.africa/
- https://extratorrent.unblockit.casa/ # 502
caps:
categorymappings:
- {id: Movies, cat: Movies, desc: Movies}
- {id: Highres Movies, cat: Movies/HD, desc: Movies HD}
- {id: UltraHD, cat: Movies/UHD, desc: Movies UHD}
- {id: 3D Movies, cat: Movies/3D, desc: Movies 3D}
- {id: Bollywood, cat: Movies, desc: Bollywood}
- {id: Movie clips, cat: Movies, desc: Movies clips}
- {id: DVD, cat: Movies/DVD, desc: Movies DVD}
- {id: MP4, cat: Movies, desc: Movies MP4}
- {id: Dubbed Movies, cat: Movies/Foreign, desc: Movies Dubbed}
- {id: Other Movies, cat: Movies/Other, desc: Movies Other}
- {id: Documentary, cat: TV/Documentary, desc: Documentary}
- {id: TV, cat: TV, desc: TV}
- {id: MP3, cat: Audio/MP3, desc: Music MP3}
- {id: AAC, cat: Audio, desc: Music AAC}
- {id: Lossless, cat: Audio/Lossless, desc: Music Lossless}
- {id: Music videos, cat: Audio/Video, desc: Music Videos}
- {id: Other Music, cat: Audio/Other, desc: Music Other}
- {id: Radio Shows, cat: Audio/Other, desc: Music Radio}
- {id: Video, cat: XXX, desc: Adult / Porn}
- {id: "Adult / Porn", cat: XXX, desc: Adult / Porn}
- {id: Pictures, cat: XXX/ImageSet, desc: Adult Pictures}
- {id: Magazines, cat: XXX/Other, desc: Adult Magazines}
- {id: Games, cat: XXX/Other, desc: Adult Games}
- {id: Hentai, cat: XXX/Other, desc: Adult Hentai}
- {id: Windows, cat: PC, desc: Software Windows}
- {id: Android, cat: PC/Mobile-Android, desc: Software Android}
- {id: Mac, cat: PC/Mac, desc: Software Mac}
- {id: Linux, cat: PC, desc: Software Linux}
- {id: PC Games, cat: PC/Games, desc: PC Games}
- {id: NDS, cat: Console/NDS, desc: Games NDS}
- {id: PS3, cat: Console/PS3, desc: Games PS3}
- {id: PS4, cat: Console/PS4, desc: Games PS4}
- {id: PSP, cat: Console/PSP, desc: Games PSP}
- {id: Wii, cat: Console/Wii, desc: Games Wii}
- {id: Xbox360, cat: Console/XBox 360, desc: Games Xbox360}
- {id: Switch, cat: Console/Other, desc: Games Switch}
- {id: Other Games, cat: Console/Other, desc: Games Other}
- {id: English-translated, cat: TV/Anime, desc: Anime English-translated}
- {id: Anime, cat: TV/Anime, desc: Anime}
- {id: Audio books, cat: Audio/Audiobook, desc: Books Audiobook}
- {id: Comics, cat: Books/Comics, desc: Books Comics}
- {id: Ebooks, cat: Books/EBook, desc: Books Ebook}
- {id: Other, cat: Other/Misc, desc: Other}
- {id: Other Applications, cat: PC, desc: Other Applications}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: flaresolverr
type: info
label: FlareSolverr
default: This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href="https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers" target="_blank" rel="noreferrer">FlareSolverr</a> to access it.
search:
paths:
# https://extratorrent.st/search/?srt=added&order=desc&search=captain&new=1&x=0&y=0
- path: "{{ if .Keywords }}search/?srt=added&order=desc&search={{ .Keywords }}&new=1&x=0&y=0{{ else }}{{ end }}"
keywordsfilters:
- name: re_replace
args: ["[\\s]+", "."]
rows:
selector: tr[class^="tl"]:has(a[href^="magnet:?xt="])
filters:
- name: andmatch
fields:
category:
selector: span.c_tor
filters:
- name: replace
args: ["in ", ""]
- name: trim
title:
selector: a[href^="/torrent/"]
details:
selector: a[href^="/torrent/"]
attribute: href
download:
selector: a[href^="magnet:?xt="]
attribute: href
date:
# 8m , 13h, 2d , 3w , 1m , 1y # site uses m for both minutes and months!?!?
selector: td:nth-last-of-type(5)
filters:
- name: replace
args: ["m", " minutes"]
- name: replace
args: ["h", " hours"]
- name: replace
args: ["y", " years"]
- name: replace
args: ["d", " days"]
- name: replace
args: ["w", " weeks"]
- name: timeago
size:
selector: td:nth-last-of-type(4)
seeders_optional:
optional: true
selector: td.sy, td.sn
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
optional: true
selector: td.ly, td.ln
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -1,156 +0,0 @@
---
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/english-translated/", cat: TV/Anime, desc: "Anime English Translated"}
- {id: "/applications/", cat: PC, desc: Apps}
- {id: "/applications/android/", cat: PC/Mobile-Android, desc: "Apps Android"}
- {id: "/applications/ios/", cat: PC/Mobile-iOS, desc: "Apps iOS"}
- {id: "/applications/linux/", cat: PC, desc: "Apps Linux"}
- {id: "/applications/mac/", cat: PC/Mac, desc: "Apps Mac"}
- {id: "/applications/other-applications/", cat: PC/Mobile-Other, desc: "Apps Other"}
- {id: "/applications/windows/", cat: PC/0day, desc: "Apps Windows"}
- {id: "/books/", cat: Books, desc: Books}
- {id: "/books/audio-books/", cat: Audio/Audiobook, desc: "Books Audiobooks"}
- {id: "/books/comics/", cat: Books/Comics, desc: "Books Comics"}
- {id: "/books/ebooks/", cat: Books/EBook, desc: "Books Ebooks"}
- {id: "/games/", cat: PC/Games, desc: Games}
- {id: "/games/nds/", cat: Console/NDS, desc: "Games NDS"}
- {id: "/games/other-games/", cat: Console/Other, desc: "Games Other"}
- {id: "/games/pc-games/", cat: PC/Games, desc: "Games PC"}
- {id: "/games/ps3/", cat: Console/PS3, desc: "Games PS3"}
- {id: "/games/ps4/", cat: Console/PS4, desc: "Games PS4"}
- {id: "/games/psp/", cat: Console/PSP, desc: "Games PSP"}
- {id: "/games/switch/", cat: Console/Other, desc: "Games Switch"}
- {id: "/games/wii/", cat: Console/Wii, desc: "Games Wii"}
- {id: "/games/xbox360/", cat: Console/XBox 360, desc: "Games Xbox360"}
- {id: "/games/mac/", cat: PC/Mac, desc: "Games Mac"}
- {id: "/movies/", cat: Movies, desc: Movies}
- {id: "/movies/3d-movies/", cat: Movies/3D, desc: "Movies 3D"}
- {id: "/movies/bollywood/", cat: Movies, desc: "Movies Bollywood"}
- {id: "/movies/documentary/", cat: Movies, desc: "Movies Documentary"}
- {id: "/movies/dubbed-movies/", cat: Movies, desc: "Movies Dubbed"}
- {id: "/movies/dvd/", cat: Movies/DVD, desc: "Movies DVD"}
- {id: "/movies/highres-movies/", cat: Movies/HD, desc: "Movies Highres"}
- {id: "/movies/mp4/", cat: Movies, desc: "Movies MP4"}
- {id: "/movies/other-movies/", cat: Movies, desc: "Movies Other Movies"}
- {id: "/movies/ultrahd/", cat: Movies/UHD, desc: "Movies UltraHD"}
- {id: "/movies/music-videos/", cat: Audio/Video, desc: "Movies Music videos"}
- {id: "/movies/movie-clips/", cat: Movies/Other, desc: "Movies Movie clips"}
- {id: "/music/", cat: Audio, desc: Music}
- {id: "/music/aac/", cat: Audio, desc: "Music AAC"}
- {id: "/music/lossless/", cat: Audio/Lossless, desc: "Music Lossless"}
- {id: "/music/mp3/", cat: Audio/MP3, desc: "Music MP3"}
- {id: "/music/other-music/", cat: Audio/Other, desc: "Music Other"}
- {id: "/music/radio-shows/", cat: Audio, desc: "Music Radio Shows"}
- {id: "/other/", cat: Other, desc: Other}
- {id: "/tv/", cat: TV, desc: TV}
- {id: "/xxx/", cat: XXX, desc: XXX}
- {id: "/xxx/games/", cat: XXX/Other, desc: "XXX Games"}
- {id: "/xxx/hentai/", cat: XXX/Other, desc: "XXX Hentai"}
- {id: "/xxx/magazines/", cat: XXX/Other, desc: "XXX Magazines"}
- {id: "/xxx/pictures/", cat: XXX/ImageSet, desc: "XXX Pictures"}
- {id: "/xxx/video/", cat: XXX, desc: "XXX Video"}
- {id: "/video/", cat: XXX, desc: "XXX Video"}
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: 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: flaresolverr
type: info
label: FlareSolverr
default: This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href="https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers" target="_blank" rel="noreferrer">FlareSolverr</a> to access it.
download:
selectors:
- selector: a[href^="magnet:?xt="]
attribute: href
search:
paths:
- path: "{{ if .Keywords }}search/{{ .Keywords }}/?order={{ .Config.sort }}&sort={{ .Config.type }}{{ else }}latest/{{ end }}"
- path: "{{ if .Keywords }}search/{{ .Keywords }}/2/?order={{ .Config.sort }}&sort={{ .Config.type }}{{ else }}latest/2/{{ end }}"
followredirect: true
keywordsfilters:
- name: tolower
- name: trim
- name: re_replace
args: ["[^\\w]+", "-"]
rows:
selector: table.table-striped > tbody > tr
fields:
category_optional:
selector: td:nth-child(1) div div a:last-child
attribute: href
optional: true
category:
text: "{{ if .Result.category_optional }}{{ .Result.category_optional }}{{ else }}/other/{{ end }}"
title:
selector: td:nth-child(1) div a
details:
selector: td:nth-child(1) div a
attribute: href
download:
selector: td:nth-child(1) div a
attribute: href
size:
selector: td:nth-child(2)
files_optional:
selector: td:nth-child(3)
optional: true
files:
text: "{{ if .Result.files_optional }}{{ .Result.files_optional }}{{ else }}0{{ end }}"
date:
selector: td:nth-child(4)
seeders:
selector: td:nth-child(5)
leechers:
selector: td:nth-child(6)
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -1,114 +0,0 @@
---
id: eztv
name: EZTV
description: "EZTV is a Public torrent site for TV shows"
language: en-US
type: public
encoding: UTF-8
links:
- https://eztvx.to/
- https://eztv.wf/
- https://eztv.tf/
- https://eztv.yt/
- https://eztv1.xyz/
- https://eztv.abcproxy.org/
- https://eztv.unblockit.casa/
- https://eztv.unblockninja.com/
- https://eztv.ninjaproxy1.com/
- https://eztv.proxyninja.org/
legacylinks:
- https://eztv.ag/ # redirects to .re
- https://eztv.it/ # redirects to .re
- https://eztv.ch/ # redirects to .re
- https://eztv.io/
- https://eztv.mrunblock.guru/
- https://eztv.unblockit.click/
- https://eztv.unblockit.asia/
- https://eztv.unblockit.mov/
- https://eztv.mrunblock.life/
- https://eztv.unblockit.rsvp/
- https://eztv.nocensor.click/
- https://eztv.unblockit.vegas/
- https://eztv.unblockit.esq/
- https://eztv.unblockit.zip/
- https://eztv.re/
- https://eztv.li/
- https://eztv.unblockit.foo/
- https://eztv.unblockit.ing/
- https://eztv.mrunblock.bond/
- https://eztv.nocensor.cloud/
- https://eztv.unblockit.date/
- https://eztv.unblockit.dad/
- https://eztv.unblockit.africa/
caps:
categories:
1: TV
modes:
search: [q]
tv-search: [q, season, ep]
settings: []
search:
paths:
- path: "{{ if .Keywords }}search/{{ .Keywords }}{{ else }}home{{ end }}"
keywordsfilters:
- name: re_replace
args: ["S[0-9]{2}([^E]|$)", ""] # remove season tag without episode (search doesn't support it)
# fixes for site search issues - Prowlarr #1094
- name: replace
args: ["-", ""]
- name: replace
args: [" ", "-"]
- name: replace
args: ["&", ""]
headers:
cookie: ["sort_no=100; q_filter=all; q_filter_web=on; q_filter_reality=on; q_filter_x265=on; layout=def_wlinks"] # show 100 results for keywordless search and show links in results
rows:
# only use latest added torrents table for keywordless search to avoid duplicates, some torrents don't have any download links so skip them
selector: "table.forum_header_border:contains('Latest') tr[name='hover'].forum_header_border:has(a.magnet), table.forum_header_border:contains('Releases') tr[name='hover'].forum_header_border:has(a.magnet)"
filters:
- name: andmatch
fields:
category:
text: 1
title:
selector: td:nth-child(2) a
attribute: title
filters:
- name: replace
args: ["[eztv]", ""]
- name: re_replace
args: ["\\(.*\\)$", ""]
- name: trim
details:
selector: td:nth-child(2) a
attribute: href
download:
selector: td:nth-child(3) a.magnet, td:nth-child(3) a
attribute: href
size_optional:
optional: true
selector: td:nth-child(4)
size:
text: "{{ if .Result.size_optional }}{{ .Result.size_optional }}{{ else }}512 MB{{ end }}"
date:
selector: td:nth-child(5)
filters:
- name: append
args: " ago"
seeders:
selector: td:nth-child(6)
leechers:
text: 0
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -1,165 +0,0 @@
# Femdomcult uses the Luminance code, which is based on gazelle
# ajax.php API additionally needs the auth=$authkey argument
# Because the API is e.g. missing poster images we use screen scraping instead of the generic gazelle based approach
---
id: femdomcult
name: Femdomcult
description: "Femdomcult is a Private Torrent Tracker for FETISH 3X"
language: en-US
type: private
encoding: UTF-8
links:
- https://femdomcult.org/
caps:
categorymappings:
- {id: 58, cat: XXX, desc: "Amateur/Mainstream"}
- {id: 60, cat: XXX, desc: "Anime Comics"}
- {id: 73, cat: XXX, desc: "Asian Femdom"}
- {id: 61, cat: XXX, desc: "Audio"}
- {id: 78, cat: XXX, desc: "EBook"}
- {id: 74, cat: XXX, desc: "Female Muscles"}
- {id: 59, cat: XXX, desc: "Femdom"}
- {id: 62, cat: XXX, desc: "Femdom Vip"}
- {id: 63, cat: XXX, desc: "Fetish"}
- {id: 68, cat: XXX, desc: "Fetish Vip"}
- {id: 76, cat: XXX, desc: "Game"}
- {id: 64, cat: XXX, desc: "Gts-Vore-Crush"}
- {id: 72, cat: XXX, desc: "Images"}
- {id: 69, cat: XXX, desc: "Lezdom"}
- {id: 70, cat: XXX, desc: "Pov"}
- {id: 65, cat: XXX, desc: "Scat"}
- {id: 71, cat: XXX, desc: "Strapon"}
- {id: 66, cat: XXX, desc: "Transdom"}
- {id: 77, cat: XXX, desc: "Unknown & Low Quality"}
- {id: 75, cat: XXX, desc: "Virtual Reality"}
- {id: 0, cat: XXX/Other, desc: "Other"}
modes:
search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: time
options:
time: created
seeders: seeders
size: size
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_activity
type: info
label: Account Inactivity
default: "User classes Beginner and Perv have to be inactive (= not logged in on the site, tracker activity/seeding does not count) for 4 months before getting disabled automatically. Member class and higher are exempt."
login:
path: login.php
method: form
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
cinfo: "2550|1350|24|-60"
keeplogged: 1
error:
- selector: form#loginform > span.warning
test:
path: torrents.php
selector: "#nav_userinfo"
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
title: "{{ .Keywords }}"
order_by: "{{ .Config.sort }}"
order_way: "{{ .Config.type }}"
action: advanced
filter_freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
rows:
selector: table#torrent_table > tbody > tr[class^="torrent row"]:has(a[href*="action=download"])
fields:
download:
selector: a[href^="torrents.php?action=download&id="]
attribute: href
description_tags:
selector: div.tags
description:
case:
span.icon_okay: "Verified: {{ .Result.description_tags }}"
"*": "Unverified: {{ .Result.description_tags }}"
title:
selector: a[href^="torrents.php?id="]
category:
selector: a[href*="filter_cat"]
attribute: href
filters:
- name: regexp
args: "(\\d+)]=1"
details:
selector: a[href^="torrents.php?id="]
attribute: href
poster:
selector: td:nth-child(2) > script
filters:
- name: regexp
args: "src=(.*?)>"
- name: re_replace
args: ["\\\\(.)", "$1"]
- name: replace
args: ["/static/common/noartwork/noimage.png", ""]
files:
selector: td:nth-child(3)
date_optional:
selector: td:nth-child(5) > span
attribute: title
# auto adjusted by site account profile
optional: true
filters:
- name: dateparse
args: "MMM dd yyyy, HH:mm"
date: # some torrents have "Never" date
text: "{{ if .Result.date_optional }}{{ .Result.date_optional }}{{ else }}20 years ago{{ end }}"
size:
selector: td:nth-child(6)
grabs:
selector: td:nth-child(7)
seeders:
selector: td:nth-child(8)
leechers:
selector: td:nth-child(9)
downloadvolumefactor:
case:
"img[alt=\"Freeleech\"]": 0
"*": 1
uploadvolumefactor:
case:
span.icon[title*="DoubleSeed"]: 2
"img[alt=\"DoubleSeed\"]": 2
"*": 1
minimumratio:
text: 0.5
# MR is reduced but not removed if MST is met
# minimumseedtime:
# # 3 days (as seconds = 3 x 24 x 60 x 60)
# text: 259200
# luminance

View File

@@ -1,92 +0,0 @@
---
id: gamestorrents
name: GamesTorrents
description: "GamesTorrents is a SPANISH Public tracker for GAMES"
language: es-ES
type: public
encoding: UTF-8
links:
- https://www.gamestorrents.fm/
legacylinks:
- https://www.gamestorrents.com/
- https://www.gamestorrents.tv/
- https://www.gamestorrents.nu/
- https://gamestorrents.nocensor.space/
- https://gamestorrents.nocensor.work/
- https://gamestorrents.nocensor.biz/
- https://gamestorrents.nocensor.sbs/
- https://gamestorrents.nocensor.world/
caps:
categorymappings:
- {id: juegos-pc, cat: PC/Games, desc: "Games PC"}
- {id: juegos-psp, cat: Console/PSP, desc: "Games PSP"}
- {id: juegos-ps3, cat: Console/PS3, desc: "Games PS3"}
- {id: juegos-ps4, cat: Console/PS4, desc: "Games PS4"}
- {id: juegos-ps2, cat: Console/PS Vita, desc: "Games PS2"}
- {id: juegos-mac, cat: PC/Mac, desc: "Games Mac"}
- {id: juegos-xbox360, cat: Console/XBox 360, desc: "Games Xbox 360"}
- {id: juegos-wii, cat: Console/Wii, desc: "Games Wii"}
- {id: juegos-nds, cat: Console/NDS, desc: "Games NDS"}
modes:
search: [q]
settings: []
download:
selectors:
- selector: a#download_torrent
attribute: href
search:
paths:
- path: /
inputs:
s: "{{ .Keywords }}"
rows:
selector: table.metalion > tbody > tr
filters:
- name: andmatch
fields:
title:
selector: td:nth-child(1) a
details:
selector: td:nth-child(1) a
attribute: href
category:
selector: td:nth-child(1) a
attribute: href
filters:
- name: split
args: ["/", 3]
download:
selector: td:nth-child(1) a
attribute: href
date:
selector: td:nth-child(2)
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "dd-MM-yyyy zzz"
size:
selector: td:nth-child(3)
filters:
- name: replace
args: ["Undefined", "0 B"]
- name: replace
args: ["s", ""]
description:
selector: td:nth-child(4)
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -1,210 +0,0 @@
---
id: generationfree-api
name: Generation-Free (API)
description: "Generation-Free (GF-Free) is a FRENCH Private Torrent Tracker for MOVIES / TV / GENERAL"
language: fr-FR
type: private
encoding: UTF-8
links:
- https://generation-free.org/
legacylinks:
- https://generation-free.biz/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Film"}
- {id: 2, cat: TV, desc: "Série"}
- {id: 3, cat: Audio, desc: "Musique"}
- {id: 4, cat: Console, desc: "Jeux"}
- {id: 5, cat: PC, desc: "Logiciel"}
- {id: 6, cat: Books, desc: "Ebook"}
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://generation-free.org/\" target=\"_blank\">Generation-Free</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: multilang
type: checkbox
label: Replace MULTi by another language in release name
default: false
- name: multilanguage
type: select
label: Replace MULTi by this language
default: FRENCH
options:
FRENCH: FRENCH
MULTi FRENCH: MULTi FRENCH
ENGLISH: ENGLISH
MULTi ENGLISH: MULTi ENGLISH
VOSTFR: VOSTFR
MULTi VOSTFR: MULTi VOSTFR
- name: vostfr
type: checkbox
label: Replace VOSTFR and SUBFRENCH with ENGLISH
default: false
- name: 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
- name: info_activity
type: info
label: Account Inactivity
default: "Accounts will be automatically deleted after 45 days of inactivity, regardless of class. To maintain an active account, all you have to do is authenticate yourself regularly and participate: In the life of the site, in the forum, in the shoot, in the games of the forum and not only in the downloads. Log in regularly to the site the Rules may change, view your messages."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free[]=100{{ else }}{{ end }}"
name: "{{ .Keywords }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title_phase1:
selector: name
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
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)^None$", ""]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .Result.genre }}"
files:
selector: num_file
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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
case:
0: 1 # normal
1: 2 # double
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# json UNIT3D 6.5.0

View File

@@ -1,192 +0,0 @@
---
id: gigatorrents
name: GigaTorrents
description: "Giga Torrents is a Hungarian Private site for TV / MOVIES / GENERAL"
language: hu-HU
type: private
encoding: UTF-8
links:
- https://gigatorrents.ws/
caps:
categorymappings:
- {id: 91, cat: Movies/UHD, desc: "4K Blu-Ray"}
- {id: 62, cat: Movies/BluRay, desc: "Bluray Disc"}
- {id: 80, cat: Movies/SD, desc: "CAM/Eng"}
- {id: 79, cat: Movies/SD, desc: "CAM/Hun"}
- {id: 71, cat: Movies/DVD, desc: "DVD 9"}
- {id: 67, cat: Movies/DVD, desc: "DVD 9 Hun"}
- {id: 74, cat: Movies/HD, desc: "Film HD/Eng"}
- {id: 75, cat: Movies/HD, desc: "Film HD/Hun"}
- {id: 73, cat: Movies/SD, desc: "Film x264/Eng"}
- {id: 72, cat: Movies/SD, desc: "Film x264/Hun"}
- {id: 19, cat: Movies/SD, desc: "Film Xvid/Eng"}
- {id: 37, cat: Movies/SD, desc: "Film Xvid/Hun"}
- {id: 20, cat: Movies/DVD, desc: "Film/DVD-R"}
- {id: 45, cat: Movies/DVD, desc: "Film/DVD-R Hun"}
- {id: 47, cat: PC/Games, desc: "Játékok/ISO"}
- {id: 64, cat: PC/Games, desc: "Játékok/Rip"}
- {id: 48, cat: Other, desc: "Képek"}
- {id: 49, cat: XXX/ImageSet, desc: "Képek XXX"}
- {id: 51, cat: Audio/Video, desc: "Klip"}
- {id: 39, cat: Books, desc: "Könyvek/Eng"}
- {id: 52, cat: Books, desc: "Könyvek/Hun"}
- {id: 33, cat: Console, desc: "Konzol"}
- {id: 1, cat: Audio/Lossless, desc: "Lossless"}
- {id: 55, cat: PC/Mobile-Other, desc: "Mobil/PDA"}
- {id: 85, cat: TV/HD, desc: "Sorozat HD/Eng"}
- {id: 84, cat: TV/HD, desc: "Sorozat HD/Hun"}
- {id: 8, cat: TV/SD, desc: "Sorozat/SD-x264/Eng"}
- {id: 81, cat: TV/SD, desc: "Sorozat/SD-x264/Hun"}
- {id: 83, cat: TV/SD, desc: "Sorozat/SD-Xvid/Eng"}
- {id: 7, cat: TV/SD, desc: "Sorozat/SD-Xvid/Hun"}
- {id: 46, cat: XXX, desc: "XXX"}
- {id: 42, cat: Audio, desc: "Zene/Eng"}
- {id: 53, cat: Audio, desc: "Zene/Hun"}
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: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 3
options:
3: created
5: seeders
4: size
2: title
- name: type
type: select
label: Order requested from site
default: 2
options:
2: desc
1: asc
- name: info
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: "Rules for deletion:<ol><li>Users who have registered at least 4 weeks ago and have uploaded 0 bytes will be deleted</li><li>Users who have not accessed the site for 1 year will be permanently deleted</li><li>Users who have not accessed the site for 4 weeks will be deleted.</li></ol>"
login:
path: login.php
method: form
form: form
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: div.box:has(div.title:contains("bejelentkez"))
test:
path: index.php
selector: a[href^="logout.php"]
search:
paths:
- path: torrentek.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active, 1 incldead, 2 onlydead, 5 freeleech, 6 2x upload, 7 highlighted
incldead: "{{ if .Config.freeleech }}5{{ else }}1{{ end }}"
blah: 0
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"
rows:
selector: table#torrenttable > tbody > tr:has()
error:
- selector: div.content:contains("Meg van vonva a letöltési jogod")
fields:
download:
selector: a[href^="/details.php?id="]
attribute: href
filters:
- name: replace
args: ["details.php?id=", "download.php?id="]
title:
selector: a[href^="/details.php?id="]
details:
selector: a[href^="/details.php?id="]
attribute: href
imdbid:
selector: a[href^="imdb.com/title/tt"]
attribute: href
poster:
selector: img.imdb-info
attribute: data-url
category:
selector: a[href^="/torrentek.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
seeders:
selector: td:nth-child(8)
filters:
- name: split
args: ["/", 0]
leechers:
selector: td:nth-child(8)
filters:
- name: split
args: ["/", 1]
grabs:
selector: td:nth-child(7)
files:
selector: td:nth-child(4)
description:
case:
img[src="pic/staff/yes.png"]: Verified
"*": Unverified
downloadvolumefactor_optional:
selector: td:nth-child(6) > span:nth-last-child(2)
optional: true
filters:
- name: trim
args: x
downloadvolumefactor:
text: "{{ if .Result.downloadvolumefactor_optional }}{{ .Result.downloadvolumefactor_optional }}{{ else }}1{{ end }}"
uploadvolumefactor_optional:
selector: td:nth-child(6) > span:nth-last-child(1)
optional: true
filters:
- name: trim
args: x
uploadvolumefactor:
text: "{{ if .Result.uploadvolumefactor_optional }}{{ .Result.uploadvolumefactor_optional }}{{ else }}1{{ end }}"
minimumratio:
text: 0.5
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
date:
selector: td:nth-child(2)
remove: a
filters:
- name: regexp
args: "Feltöltve:\\s*([\\d-]+\\s*[\\d:]+)"
size:
selector: td:nth-child(6)
remove: span
# xbtitFM v2.2.09

View File

@@ -1,177 +0,0 @@
---
id: haitang
name: Hǎitáng (海棠PT)
description: "Hǎitáng (海棠PT) is a CHINESE Private Torrent Tracker for OPERA / CROSSTALK"
language: zh-CN
type: private
encoding: UTF-8
requestDelay: 2
links:
- https://www.htpt.cc/
caps:
categorymappings:
- {id: 1, cat: Audio, desc: "相声 Crosstalk", default: true}
- {id: 4091, cat: Audio, desc: "评书 Storytelling", default: true}
- {id: 4097, cat: Audio, desc: "戏曲 Opera", default: true}
- {id: 4098, cat: Audio, desc: "鼓/琴 Drum / Piano", default: true}
- {id: 4099, cat: Audio, desc: "小曲 Small Song", default: true}
- {id: 4101, cat: Audio, desc: "小品 Sketch", default: true}
- {id: 4104, cat: Audio, desc: "二人转 Duets", default: true}
- {id: 4105, cat: TV, desc: "小剧种 Puppet shows", default: true}
- {id: 4103, cat: Audio/Audiobook, desc: "广播剧 Audiobooks", default: false}
modes:
search: [q]
tv-search: [q, season, ep]
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: 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>Users with Veteran User (Wen Chou) and above will be retained forever</li><li>Elite User (Wu Sheng) and above will not be deleted after parking (in the control panel)</li><li>Users with a parked account who do not log in for 365 consecutive days will be deleted</li><li>Users with a non-parked account who have not logged in for 180 consecutive days be deleted</li><li>Users who have no traffic (i.e. upload/download The data is all 0) will be deleted If they do not log in for 90 consecutive days.</li></ol>"
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
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
categories: [1, 4091, 4097, 4098, 4099, 4101, 4104, 4105]
- path: live.php
categories: [4103]
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 incldead, 1 onlyactive, 2 onlydead
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
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(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td: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: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:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 1
minimumseedtime:
# 1 day (as seconds = 24 x 60 x 60)
text: 86400
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.1 2021-10-15

View File

@@ -1,153 +0,0 @@
---
id: hawke-uno
name: hawke-uno
description: "hawke-uno (HUNO) is a Private Torrent Tracker for (X265 / HEVC) MOVIES / TV"
language: en-US
type: private
encoding: UTF-8
links:
- https://hawke.uno/
legacylinks:
- https://www.hawke.uno/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movie"}
- {id: 2, cat: TV, desc: "TV"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
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://www.hawke.uno/\" target=\"_blank\">hawke-uno</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
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
- name: info_activity
type: info
label: Account Inactivity
default: "SS and IF members must either login or register any seeding activity in a rolling window of 180 days to retain their account. Failure to do so will result in their account being disabled by the site automatically."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
categorydesc:
selector: category
title:
selector: name
filters:
- name: re_replace
args: ["\\(((?>[^()]+|(?<o>)\\(|(?<-o>)\\))*(?(o)(?!)))(?<!\\bHONE)(?<=\\s*- [\\w]+)\\)$", "$1"]
- name: re_replace
args: ["\\s*-\\s+(\\w+)$", "-$1"]
details:
selector: details_link
download:
selector: download_link
poster:
selector: poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
files:
selector: num_file
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
downloadvolumefactor:
# api returns 0=false, 1=true
selector: freeleech
case:
0: 1 # not free
1: 0 # freeleech
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
case:
0: 1 # normal
1: 2 # double
# global MR is 0.25 but torrents must be seeded for 5 days regardless of ratio
# minimumratio:
# text: 0.25
minimumseedtime:
# 5 days (as seconds = 5 x 24 x 60 x 60)
text: 432000
# json UNIT3D 5.3.0

View File

@@ -1,172 +0,0 @@
---
id: hd-unit3d-api
name: HD-UNiT3D (API)
description: "HD-UNiT3D is a Private Torrent Tracker for HD MOVIES / TV"
language: en-US
type: private
encoding: UTF-8
links:
- https://hd-united.vn/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movie"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Audio"}
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://hd-united.vn/\" target=\"_blank\">HD-UNiT3D</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: "Inactive accounts will be deleted as scheduled by Staff."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free[]=100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# json UNIT3D 8.0.2

View File

@@ -1,190 +0,0 @@
---
id: hd4fans
name: HD4FANS
description: "HD4FANS is a CHINESE Private Torrent Tracker for HD MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://pt.hd4fans.org/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries"}
- {id: 405, cat: TV/Anime, desc: "Animations"}
- {id: 402, cat: TV, desc: "TV Series"}
- {id: 403, cat: TV, desc: "TV Shows"}
- {id: 406, cat: Audio/Video, desc: "Music Videos"}
- {id: 407, cat: TV/Sport, desc: "Sports"}
- {id: 409, cat: Other, desc: "Misc"}
- {id: 408, cat: Audio, desc: "Music"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
music-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: 2facode
type: text
label: 2FA code
- name: info_2fa
type: info
label: "About 2FA code"
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> on the Free Farm Web Site. Otherwise just leave it empty."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs:
secret: ""
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
two_step_code: "{{ .Config.2facode }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:has(h2:contains("失败"))
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_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: img[data-src]
attribute: data-src
imdbid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="movie.douban.com/subject/"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.8 2023-09-25

View File

@@ -1,179 +0,0 @@
---
id: hdarea
name: HDArea
description: "HDArea is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://hdarea.club/
legacylinks:
- https://www.hdarea.co/
- https://www.hdarea.club/
caps:
categorymappings:
- {id: 300, cat: Movies/UHD, desc: "Movies UHD-4K"}
- {id: 401, cat: Movies/BluRay, desc: "Movies Blu-ray"}
- {id: 415, cat: Movies/HD, desc: "Movies REMUX"}
- {id: 416, cat: Movies/3D, desc: "Movies 3D"}
- {id: 410, cat: Movies/HD, desc: "Movies 1080p"}
- {id: 411, cat: Movies/HD, desc: "Movies 720p"}
- {id: 414, cat: Movies/DVD, desc: "Movies DVD"}
- {id: 412, cat: Movies/WEB-DL, desc: "Movies WEB-DL"}
- {id: 413, cat: Movies/HD, desc: "Movies HDTV"}
- {id: 417, cat: Movies/Other, desc: "Movies iPad"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries"}
- {id: 405, cat: TV/Anime, desc: "Animations"}
- {id: 402, cat: TV, desc: "TV Series"}
- {id: 403, cat: TV, desc: "TV Shows"}
- {id: 406, cat: Audio/Video, desc: "Music Videos"}
- {id: 407, cat: TV/Sport, desc: "Sports"}
- {id: 409, cat: Other, desc: "Misc"}
- {id: 408, cat: Audio, desc: "HQ Audio"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: 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 Users and above will be retained forever</li><li> Insane User and above will not be deleted after parking (in the control panel)</li><li>Users with a parked account will be deleted if they do not log in for 150 consecutive days</li><li>Users with a non-parked account will be deleted if they do not log in for 60 consecutive days.</li><li> Newly registered users who have no traffic for 7 days (i.e., upload/download data is 0) will be deleted.</li></ol>"
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="usercp.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ 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
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td: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: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:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 0.8
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP Standard v1.5 Beta 4

View File

@@ -1,183 +0,0 @@
---
id: hdatmos
name: HDAtmos
description: "HDAtmos is a CHINESE Private Torrent Tracker for HD MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://hdatmos.club/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
- {id: 402, cat: TV, desc: "TV Series/电视剧"}
- {id: 406, cat: Audio/Video, desc: "Music Videos/MV演唱会"}
- {id: 407, cat: TV/Sport, desc: "Sports/体育"}
- {id: 408, cat: Audio, desc: "HQ Audio/音乐"}
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 HDAtmos 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: "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
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("失败"))
message:
selector: td.text
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(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td: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: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:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.8 2023-09-25

View File

@@ -1,170 +0,0 @@
---
id: hdc
name: HDCiTY
description: "HDCiTY (HDC) is a CHINESE Private Torrent Tracker for HD MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://hdcity.city/
- https://hdcity.work/
- https://hdcity.leniter.org/
- https://hdcity4.leniter.org/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 402, cat: TV, desc: "Series/剧集"}
- {id: 404, cat: TV/Documentary, desc: "Doc/档案记录"}
- {id: 405, cat: TV/Anime, desc: "Anim/动漫"}
- {id: 403, cat: TV, desc: "Shows/节目"}
- {id: 406, cat: Audio/Video, desc: "MV/音乐视频"}
- {id: 407, cat: TV/Sport, desc: "Sports/体育"}
- {id: 408, cat: Audio, desc: "Audio/音频"}
- {id: 727, cat: XXX, desc: "XXX/家长指引"}
- {id: 728, cat: Other, desc: "Edu/文档/教材"}
- {id: 729, cat: PC, desc: "Soft/软件"}
- {id: 409, cat: Other, desc: "Other/其他"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_Results
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>"
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: pt
selector: a[href^="logout?key="]
search:
paths:
# https://hdcity.city/pt?incldead=0&spstate=0&inclbookmarked=0&iwannaseethis=shanghai+triad&search_area=0&search_mode=0
# https://hdcity.city/pt?incldead=0&spstate=0&inclbookmarked=0&iwannaseethis=115012&search_area=4&search_mode=0
- path: pt
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
iwannaseethis: "{{ if .Query.IMDBID }}{{ .Query.IMDBIDShort }}{{ else }}{{ .Keywords }}{{ 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 imdb number
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: div.trblock
fields:
title:
selector: div.trtop a[href^="t-"]
category:
selector: div.trm
attribute: style
filters:
- name: regexp
args: (\d+)
details:
selector: div.trtop a[href^="t-"]
attribute: href
download:
selector: a[href^="download?id="]
attribute: href
poster:
selector: div.trp: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)
remove: i
seeders_optional:
selector: div.trbo div:nth-last-child(7)
optional: true
filters:
- name: re_replace
args: ["\\s", "0"]
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
selector: div.trbo div:nth-last-child(6)
optional: true
filters:
- name: re_replace
args: ["\\s", "0"]
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
grabs_optional:
selector: div.trbo div:nth-last-child(5)
optional: true
filters:
- name: re_replace
args: ["\\s", "0"]
grabs:
text: "{{ if .Result.grabs_optional }}{{ .Result.grabs_optional }}{{ else }}0{{ end }}"
date:
remove: a, span
selector: div[style="float:right;"]
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
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
# engine n/a (likely based on NexusPHP)

View File

@@ -1,211 +0,0 @@
---
id: hdfans
name: HDFans
description: "HDFans is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://hdfans.org/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 402, cat: TV, desc: "TV Series/电视剧"}
- {id: 403, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 406, cat: Audio, desc: "Music/音乐"}
- {id: 416, cat: TV, desc: "TV Shows/综艺"}
- {id: 417, cat: TV/Anime, desc: "Animations/动漫"}
- {id: 407, cat: Audio/Video, desc: "Music Videos/音乐视频"}
- {id: 408, cat: Audio/Video, desc: "Concert/演唱会"}
- {id: 404, cat: Other, desc: "Education/教育"}
- {id: 405, cat: Audio/Audiobook, desc: "Audio Books/有声读物"}
- {id: 409, cat: Movies/Other, desc: "Drama/戏剧"}
- {id: 418, cat: TV/Sport, desc: "Sports/体育"}
- {id: 419, cat: PC/0day, desc: "Software/软件"}
- {id: 421, cat: PC/Games, desc: "Games/游戏"}
- {id: 423, cat: Books/EBook, desc: "E-Books/电子书"}
- {id: 410, cat: Other, desc: "Others/其他"}
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: 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 HDFans Web Site. Otherwise just leave it empty."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Account retention rules:<ol><li>Extreme User and above will be retained forever</li><li>Veteran 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 180 consecutive days</li><li>Users with a non-parked account will be deleted if they do not log in for 90 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 15 consecutive days.</li></ol>"
login:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs:
secret: ""
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
two_step_code: "{{ .Config.2facode }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:has(h2:contains("失败"))
message:
selector: td.text
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(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
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: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: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:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 0.81
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 }} "
# NexusPHP v1.8.9 2023-11-15

View File

@@ -1,227 +0,0 @@
---
id: hdfun
name: HDFun
description: "HDFun (HDZone) is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://hdzone.me/
- https://hdfun.me/
caps:
categorymappings:
- {id: 411, cat: Movies/SD, desc: "Movies SD"}
- {id: 412, cat: Movies, desc: "Movies IPad"}
- {id: 413, cat: Movies/HD, desc: "Movies 720p"}
- {id: 414, cat: Movies/HD, desc: "Movies 1080p"}
- {id: 415, cat: Movies, desc: "Movies REMUX"}
- {id: 450, cat: Movies/BluRay, desc: "Movies Bluray"}
- {id: 499, cat: Movies/UHD, 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: 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: Audio/Video, desc: "TVMusic 720p"}
- {id: 424, cat: Audio/Video, desc: "TVMusic 1080i"}
- {id: 425, cat: TV/SD, desc: "TVShow SD"}
- {id: 426, cat: TV, desc: "TVShow IPad"}
- {id: 471, cat: TV, desc: "TVShow IPad"}
- {id: 427, cat: TV/HD, desc: "TVShow 720p"}
- {id: 472, 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, desc: "TVShow REMUX"}
- {id: 452, cat: TV/HD, desc: "TVShow Bluray"}
- {id: 431, cat: TV/UHD, desc: "TVShow 2160p"}
- {id: 432, cat: TV/SD, desc: "TVSeries SD"}
- {id: 433, cat: TV, desc: "TVSeries IPad"}
- {id: 434, cat: TV/HD, desc: "TVSeries 720p"}
- {id: 435, cat: TV/HD, desc: "TVSeries 1080i"}
- {id: 436, cat: TV/HD, desc: "TVSeries 1080p"}
- {id: 437, cat: TV, desc: "TVSeries REMUX"}
- {id: 453, cat: TV/HD, desc: "TVSeries Bluray"}
- {id: 438, cat: TV/UHD, desc: "TVSeries 2160p"}
- {id: 439, cat: Audio, desc: "Music APE"}
- {id: 440, cat: Audio/Lossless, desc: "Music FLAC"}
- {id: 441, cat: Audio/Video, desc: "Music MV"}
- {id: 442, cat: TV/Sport, desc: "Sports 720p"}
- {id: 443, cat: TV/Sport, desc: "Sports 1080i"}
- {id: 444, cat: TV/Anime, desc: "Anime SD"}
- {id: 445, cat: TV/Anime, desc: "Anime IPad"}
- {id: 446, cat: TV/Anime, desc: "Anime 720p"}
- {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: 409, cat: Other, desc: "Misc"}
- {id: 449, cat: TV/Anime, desc: "Anime 2160p"}
- {id: 501, cat: TV/Anime, desc: "Anime UHD Blu-ray"}
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: 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: "Cherish your user account. Inactive accounts would be deleted based on the following rules:<ol><li>Nexus Master or above would never be deleted</li><li>Insane 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 120 days in a row</li><li>Un-parked 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 7 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
inputs:
secret: ""
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:has(h2:contains("失败"))
test:
path: torrents.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
# currently supports only one query id at one time.
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 onlydead
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 imdb
search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td: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: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:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 1.2
# does not appear to be implemented, no h&r tag found
# minimumseedtime:
# # 14 days (as seconds = 2 x 24 x 60 x 60)
# text: 1209600
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP Standard v1.5 Beta 4

View File

@@ -1,268 +0,0 @@
---
id: hdgalaktik
name: HDGalaKtik
description: "HDGalaKtik is a RUSSIAN Semi-Private tracker for MOVIES / TV / GENERAL"
language: ru-RU
type: semi-private
encoding: UTF-8
links:
- https://www.trackerpmr.com/
- https://freetmd.com/
- https://kinoradiomagia.tv/
legacylinks:
- https://hdgalaktik.com/
caps:
categorymappings:
- {id: 13, cat: Movies, desc: "Фильмы (Movies)"}
- {id: 6, cat: TV, desc: "Мультфильмы (Cartoons)"}
- {id: 10, cat: Audio, desc: "Музыка (Music)"}
- {id: 26, cat: PC, desc: "Программы (Programs)"}
- {id: 5, cat: Console, desc: "Игры (Games)"}
- {id: 25, cat: Other, desc: "Картинки (Pictures)"}
- {id: 11, cat: TV, desc: "Сериалы (TV Series)"}
- {id: 12, cat: TV/Anime, desc: "Аниме (Anime)"}
- {id: 16, cat: Books, desc: "Книги (Books)"}
- {id: 18, cat: Audio/Video, desc: "Клипы / Ролики (Clips / Trailers)"}
- {id: 22, cat: TV, desc: "ТВ / Передачи (TV)"}
- {id: 27, cat: PC/Mobile-Other, desc: "Игры - Мобила / КПК (Mobile)"}
- {id: 1, cat: PC/ISO, desc: "Образы (ISO)"}
- {id: 4, cat: Other, desc: "Другое (Other)"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: stripcyrillic
type: checkbox
label: Strip Cyrillic Letters
default: false
- name: addrussiantotitle
type: checkbox
label: Add RUS to end of all titles to improve language detection by Sonarr and Radarr. Will cause English-only results to be misidentified.
default: false
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
1: title
5: size
8: seeders
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: /
selector: a[href="mybonus.php"]
search:
# https://www.trackerpmr.com/browse.php?search=&stype=0&s=0&cat=0&gr=0&kp=0&im=0&incldead=1&sort=0&type=desc
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 title, 1 descr, 2 filename, 4 infohash
stype: 0
# 0 AND 1 OR
s: 0
# release group
gr: 0
# ratings
kp: 0
# 1 active, 2 dead, 3 gold, 4 sticky, lots of others
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
keywordsfilters:
- name: re_replace # S01 to сезон 1
args: ["(?i)\\bS0*(\\d+)\\b", "сезон $1"]
- name: re_replace # E02 to сери 1
args: ["(?i)\\bE0*(\\d+)\\b", "сери $1"]
- name: re_replace # S01E02 to сезон 1 сери 2
args: ["(?i)\\bS0*(\\d+)E0*(\\d+)\\b", "сезон $1 сери $2"]
- name: re_replace # replace special characters with "%" (wildcard)
args: ["[^a-zA-Z0-9]+", "%"]
rows:
selector: table.embedded > tbody > tr.torcontduo
fields:
category_optional:
selector: a[href^="browse.php?cat="]
attribute: href
optional: true
filters:
- name: querystring
args: cat
category:
text: "{{ if .Result.category_optional }}{{ .Result.category_optional }}{{ else }}4{{ end }}"
title:
selector: a.alink
attribute: onmouseover
filters:
- name: regexp
args: \'>(.+?)</div
# normalize to SXXEYY format
- name: re_replace
args: ["(?i)[CС]езоны?[\\s:]*(\\d+(?:-\\d+)?).+?(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))[\\s:]*(\\d+(?:-\\d+)?)\\s*из\\s*(\\w?)", "S$1E$2 of $3"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s*[CС]езоны?.+?(\\d+(?:-\\d+)?)\\s*из\\s*(\\w?)(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))?", "S$1E$2 of $3"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s*[CС]езоны?.+?(\\d+(?:-\\d+)?)\\s*(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))\\s+из\\s*(\\w?)", "S$1E$2 of $3"]
- name: re_replace
args: ["(?i)[CС]езоны?[\\s:]*(\\d+(?:-\\d+)?).+?(\\d+(?:-\\d+)?)\\s*из\\s*(\\w?)(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))?", "S$1E$2 of $3"]
- name: re_replace
args: ["(?i)[CС]езоны?[\\s:]*(\\d+(?:-\\d+)?).+?(\\d+(?:-\\d+)?)\\s*(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))\\s+из\\s*(\\w?)", "S$1E$2 of $3"]
- name: re_replace
args: ["(?i)[CС]езоны?[\\s:]*(\\d+(?:-\\d+)?).+?(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))[\\s:]*(\\d+(?:-\\d+)?)", "S$1E$2"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s*[CС]езоны?.+?(\\d+(?:-\\d+)?)(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))", "S$1E$2"]
- name: re_replace
args: ["(?i)[CС]езоны?[\\s:]*(\\d+(?:-\\d+)?).+?(\\d+(?:-\\d+)?)(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))", "S$1E$2"]
- name: re_replace
args: ["(?i)[CС]езоны?[\\s:]*(\\d+(?:-\\d+)?)", "S$1"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s+[CС]езоны?", "S$1"]
- name: re_replace
args: ["(?i)(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))[\\s:]*(\\d+(?:-\\d+)?)\\s*из\\s*(\\w?)", "E$1 of $2"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s*из\\s*(\\w?)(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))", "E$1 of $2"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s+(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))\\s+из\\s*(\\w?)", "E$1 of $2"]
- name: re_replace
args: ["(?i)(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))[\\s:]*(\\d+(?:-\\d+)?)", "E$1"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s+(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))", "E$1"]
- name: re_replace
args: ["(?i)\\bFiles-х\\b", "Files-x"]
- name: re_replace
args: ["(?i)\\sот\\s([\\w\\p{P}\\p{S}]+)$", "-$1"]
- name: re_replace
args: ["\\s\\|\\s(\\w{4,})$", "-$1"]
- name: re_replace
args: ["(\\([\\p{IsCyrillic}\\W]+\\))|(^[\\p{IsCyrillic}\\W\\d]+\\/ )|([\\p{IsCyrillic} \\-]+,+)|([\\p{IsCyrillic}]+)", "{{ if .Config.stripcyrillic }}{{ else }}$1$2$3$4{{ end }}"]
- name: re_replace
args: ["(?i)\\bHDTV[-\\s]?Rip\\b", "HDTV"]
- name: re_replace
args: ["(?i)\\bSAT[-\\s]?Rip\\b", "HDTV"]
- name: re_replace
args: ["(?i)\\bWEB[-\\s]?DL[-\\s]?Rip\\b", "WEB-DL"]
- name: re_replace
args: ["(?i)\\bWEB\\sRip\\b", "WEBRip"]
- name: re_replace
args: ["(?i)\\bWEB\\sDL\\b", "WEB-DL"]
- name: re_replace
args: ["[\\[\\(\\{<«][\\s\\W]*[\\]\\)\\}>»]", ""]
- name: re_replace
args: ["^[\\s&,\\.!\\?\\+\\-_\\|\\/':]+", ""]
- name: re_replace
args: ["(?i)^\\(\\s*([SE]\\d+.*?)\\s*\\)[\\s\\/\\|]*(.+)", "$2 $1"]
- name: append
args: "{{ if .Config.addrussiantotitle }} RUS{{ else }}{{ end }}"
details:
selector: a.alink
attribute: href
download:
selector: a.alink
attribute: href
filters:
- name: replace
args: ["details", "download"]
poster:
selector: img.s
attribute: src
imdbid:
selector: a[href^="browse.php?imdb="]
attribute: href
filters:
- name: querystring
args: imdb
size:
selector: td:nth-child(4)
seeders:
selector: td:nth-child(6)
filters:
- name: split
args: ["|", 0]
leechers:
selector: td:nth-child(6)
filters:
- name: split
args: ["|", 1]
date_today:
# Сегодня в 18:22
selector: a[href^="browse.php?date="]:contains("Сегодня")
optional: true
filters:
- name: regexp
args: "(Сегодня в \\d{2}:\\d{2})"
- name: replace
args: ["Сегодня в", "Today"]
- name: fuzzytime
date_yday:
# Вчера в 20:52
selector: a[href^="browse.php?date="]:contains("Вчера")
optional: true
filters:
- name: regexp
args: "(Вчера в \\d{2}:\\d{2})"
- name: replace
args: ["Вчера в", "Yesterday"]
- name: fuzzytime
date_year:
# 23:48 24/07
selector: a[href^="browse.php?date="]:contains("/")
optional: true
filters:
- name: regexp
args: "(\\d{2}:\\d{2} \\d{2}/\\d{2})"
- name: append
args: " +03:00" # MSK
- name: dateparse
args: "HH:mm dd/MM zzz"
date:
text: "{{ if or .Result.date_year .Result.date_today .Result.date_yday }}{{ or .Result.date_year .Result.date_today .Result.date_yday }}{{ else }}now{{ end }}"
downloadvolumefactor:
case:
img[src="/pic/freedownload.gif"]: 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
description:
selector: a.alink
attribute: title
# engine n/a

View File

@@ -1,210 +0,0 @@
---
id: hdmayi
name: HDMaYi (小蚂蚁PT站)
description: "HDMaYi (小蚂蚁PT站) is a CHINESE Private Torrent Tracker for HD MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://hdmayi.com/
legacylinks:
- http://hdmayi.com/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
- {id: 402, cat: TV, desc: "TV Series/电视剧"}
- {id: 403, cat: TV, desc: "TV Shows/综艺"}
- {id: 406, cat: Audio/Video, desc: "MusicVideo/MV"}
- {id: 407, cat: TV/Sport, desc: "Sports/体育"}
- {id: 409, cat: Other, desc: "Misc/其他"}
- {id: 408, cat: Audio, desc: "Music/音乐"}
- {id: 410, cat: PC, desc: "Softs/软件"}
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 HDMaYi 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: "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>Un-parked 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
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 (4 does not appear to work)
search_area: "{{ if or .Query.IMDBID .Query.DoubanID }}1{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(a[href^="details.php?id="])
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: img[data-src]
attribute: data-src
imdbid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="movie.douban.com/subject/"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 1 day (as seconds = 24 x 60 x 60)
text: 86400
description_verified:
case:
span[title="通过"], span[title="通過"], span[title="Allowed"]: "Verified:"
span[title="未审"], span[title="未審"], span[title="Not reviewed"]: "Unverified:"
span[title="拒绝"], span[title="拒絕"], span[title="Denied"]: "Banned:"
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
filters:
- name: prepend
args: "{{ .Result.description_verified }} "
# NexusPHP v1.8.6 2023-08-18

View File

@@ -1,200 +0,0 @@
---
id: hdolimpo-api
name: HD-Olimpo (API)
description: "HD-Olimpo is a SPANISH site for HD content"
language: es-ES
type: private
encoding: UTF-8
links:
- https://hd-olimpo.club/
legacylinks:
- https://hdolimpo.co/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Películas"}
- {id: 2, cat: TV, desc: "Series"}
- {id: 3, cat: Audio, desc: "Música"}
- {id: 4, cat: TV/Documentary, desc: "Documentales"}
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 account <i>My configuration / Mi configuración => Secutiy / Seguridad</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
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
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
rows:
selector: data
attribute: attributes
fields:
categorydesc:
selector: category
title:
selector: name
filters:
- name: re_replace
args: ["\\[", " "]
- name: re_replace
args: ["\\]", " "]
- name: re_replace
args: ["(?i)(full(bluray)?)", "BRDISK"] # FULL(BR/UHD) -> BRDISK
- name: replace
args: ["HDOlimpo", ""] # Delete HDOlimpo
- name: replace
args: ["HD-Olimpo", ""] # Delete HD-Olimpo
- name: replace
args: ["E-AC-3", "EAC3"]
- name: re_replace
args: ["[ -](?i)español[ -]", " SPANiSH "]
- name: re_replace
args: ["[ -](?i)castellano[ -]", " SPANiSH "]
- name: re_replace
args: ["[ -](?i)spa[ -]", " SPANiSH "]
- name: re_replace
args: ["[ -](?i)esp[ -]", " SPANiSH "]
- name: re_replace
args: [" ES ", " SPANiSH "]
- name: re_replace
args: ["[ -](?i)ingl[eé]s[ -]", " English "]
- name: re_replace
args: ["[ -](?i)[ei]ng[ -]", " English "]
- name: re_replace
args: ["[ -](?i)cat[ -]", " Catalan "]
- name: re_replace
args: ["[ -](?i)vas[ -]", " Basque "]
- name: re_replace
args: ["[ -](?i)fr[ae][ -]", " French "]
- name: re_replace
args: ["[ -](?i)jap[ -]", " Japanese "]
- name: re_replace
args: ["[ -](?i)ita[ -]", " Italian "]
- name: re_replace
args: ["[ -](?i)rus[ -]", " Russian "]
- name: re_replace
args: ["[ -](?i)ger[ -]", " German "]
- name: re_replace
args: ["(?i)(triaudio)", "MULTi SPANiSH English"]
- name: re_replace
args: ["(?i)(dual)", " MULTi SPANiSH "]
- name: re_replace
args: ["(?i)(es-en)", " MULTi SPANiSH "]
- name: re_replace
args: ["(?i)(en-es)", " MULTi SPANiSH "]
- name: re_replace
args: ["\\.+", "."] # More than 1 dot -> .
- name: re_replace
args: ["^\\.", ""] # Delete first dot
- name: re_replace
args: ["\\s+", " "] # More than 1 space to 1 space
details:
selector: details_link
download:
selector: download_link
poster:
selector: poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
files:
selector: num_file
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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
case:
0: 1 # normal
1: 2 # double
minimumseedtime:
# 4 days (as seconds = 4 x 24 x 60 x 60)
text: 345600
# json UNIT3D 6.0.x (custom)

View File

@@ -1,196 +0,0 @@
---
id: hdtime
name: HDtime
description: "HDtime is a CHINESE Private Torrent Tracker for HD MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://hdtime.org/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 424, cat: Movies/BluRay, desc: "Blu-Ray原盘"}
- {id: 402, cat: TV, desc: "TV Series/剧集"}
- {id: 403, cat: TV, desc: "TV Shows/综艺"}
- {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
- {id: 414, cat: PC, desc: "Apps/软件"}
- {id: 407, cat: TV/Sport, desc: "Sports/运体"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 406, cat: Audio/Video, desc: "MusicVideo/音乐MV"}
- {id: 408, cat: Audio, desc: "Music/音乐"}
- {id: 410, cat: PC/Games, desc: "Games/游戏"}
- {id: 411, cat: Books, desc: "Books/文档"}
- {id: 409, cat: Other, desc: "Misc/其他"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: 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 HDtime Web Site. Otherwise just leave it empty."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Account retention rules:<ol><li>Veteran User and above will be retained forever</li><li>Elite User and above will not 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 with no traffic (ie, upload/download data are both 0) will be deleted if they do not log in for 100 consecutive days.</li></ol>"
login:
path: takelogin.php
method: post
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, 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_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: img[data-src]
attribute: data-src
imdbid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="movie.douban.com/subject/"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 0.81
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP vv1.8.7 2023-08-22

View File

@@ -1,180 +0,0 @@
---
id: hdu
name: HDU
description: "HDU is a CHINESE Private Torrent Tracker for HD MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://pt.upxin.net/
legacylinks:
- http://pt.upxin.net/
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: "Animations/动画"}
- {id: 406, cat: Audio/Video, desc: "Music Videos/音乐 MV"}
- {id: 407, cat: TV/Sport, desc: "Sports/体育"}
- {id: 408, cat: Audio, desc: "HQ Audio/无损音乐"}
- {id: 411, cat: Other, desc: "Misc/其他"}
- {id: 410, cat: PC/Games, desc: "Games/游戏"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
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: 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: "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 365 days in a row.</li><li>Unparked accounts would be deleted if users have not logged in for more than 120 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 3 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
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
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 }}{{ .Keywords }}{{ end }}"
# 0=incldead, 1=active, 2=dead
incldead: 0
# show promotions: 0=all, 1=normal, 2=free, 3=2x, 4=2xFree, 5=50%, 6=2x50%, 7=30%, 8 all promotions
spstate: "{{ if .Config.freeleech }}8{{ else }}0{{ end }}"
# 0=title, 1=descr, 3=uploader, 4=imdb URL
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:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP Standard v1.5 Beta 4

View File

@@ -1,197 +0,0 @@
---
id: icc2022
name: ICC2022 (冰淇淋)
description: "ICC2022 (冰淇淋) is a CHINESE Private Torrent Tracker for HD MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
requestDelay: 2
links:
- https://www.icc2022.com/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影", default: true}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片", default: true}
- {id: 405, cat: TV/Anime, desc: "Animations/动漫", default: true}
- {id: 402, cat: TV, desc: "TV Series/电视剧", default: true}
- {id: 403, cat: TV, desc: "TV Shows/综艺", default: true}
- {id: 406, cat: Audio/Video, desc: "MusicVideo/MV", default: true}
- {id: 407, cat: TV/Sport, desc: "Sports/体育", default: true}
- {id: 409, cat: Other, desc: "Misc/其他", default: true}
- {id: 408, cat: Audio, desc: "Music/音乐", default: true}
# special
- {id: 410, cat: Movies, desc: "Video/视频资料", default: false}
- {id: 411, cat: Audio, desc: "Audio/音频资料", default: false}
- {id: 412, cat: Other, desc: "Other/其他资料", default: false}
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 ICC2022 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: "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
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
categories: [401, 402, 403, 404, 405, 406, 407, 408, 409]
- path: special.php
categories: [410, 411, 412]
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 (4 does not appear to work)
search_area: "{{ if or .Query.IMDBID .Query.DoubanID }}1{{ else }}0{{ end }}"
# 0 AND, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(a[href^="details.php?id="])
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
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)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
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.8.11 2024-03-27

View File

@@ -1,128 +0,0 @@
---
id: idope
name: iDope
description: "iDope is a Public torrent search engine presenting direct magnet links"
language: en-US
type: public
encoding: UTF-8
requestDelay: 2
links:
- https://idope.se/
legacylinks:
- https://idope.black-mirror.xyz/
- https://idope.unblocked.casa/
- https://idope.proxyportal.fun/
- https://idope.uk-unblock.xyz/
- https://idope.ind-unblock.xyz/
- https://idope.unblocked.bar/
- https://idope.proxyportal.pw/
- https://idope.uk-unblock.pro/
- https://idope.unblocked.rest/
- https://idope.unblocked.monster/
caps:
categorymappings:
- {id: 0, cat: Other, desc: Others}
- {id: 1, cat: Movies, desc: Movies}
- {id: 2, cat: Other, desc: Video}
- {id: 3, cat: TV, desc: TV}
- {id: 4, cat: TV/Anime, desc: Anime}
- {id: 5, cat: XXX, desc: XXX}
- {id: 6, cat: Audio, desc: Music}
- {id: 7, cat: PC/Games, desc: Games}
- {id: 8, cat: PC, desc: Apps}
- {id: 9, cat: Books, desc: Books}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: itorrents-links
type: checkbox
label: Add download links via itorrents.org
default: false
- name: info
type: info
label: ITorrents Note
default: Without the itorrents option only magnet links will be provided.
- name: sort
type: select
label: Sort requested from site (Applies only to search with Keywords)
default: -3
options:
-3: "created desc"
-1: "seeders desc"
-2: "size desc"
3: "created asc"
1: "seeders asc"
2: "size asc"
- name: flaresolverr
type: info
label: FlareSolverr
default: This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href="https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers" target="_blank" rel="noreferrer">FlareSolverr</a> to access it.
search:
paths:
# present trending results if there are no search parms supplied
# sort torrent-list by age in descending order
- path: "{{ if .Keywords }}torrent-list/{{ .Keywords }}?o={{ .Config.sort }}&c={{ range .Categories }}{{.}}{{end}}{{ else }}browse.html{{ end }}"
- path: "{{ if .Keywords }}torrent-list/{{ .Keywords }}?p=2&o={{ .Config.sort }}&c={{ range .Categories }}{{.}}{{end}}{{ else }}browse.html?&p=2{{ end }}"
rows:
selector: div.resultdiv
fields:
category:
text: 0
category|noappend:
optional: true
selector: div.resultdivbotton div.resultdivbottoncategory
case:
":contains(\"Others\")": 0
":contains(\"Movies\")": 1
":contains(\"Video\")": 2
":contains(\"TV\")": 3
":contains(\"Anime\")": 4
":contains(\"XXX\")": 5
":contains(\"Music\")": 6
":contains(\"Games\")": 7
":contains(\"Apps\")": 8
":contains(\"Books\")": 9
title:
selector: div.resultdivtop a div.resultdivtopname
details:
selector: div.resultdivtop a
attribute: href
download_itorrents:
selector: div.resultdivbotton div.hideinfohash
filters:
- name: toupper
- name: prepend
args: http://itorrents.org/torrent/
- name: append
args: ".torrent"
download:
text: "{{ if .Config.itorrents-links }}{{ .Result.download_itorrents }}{{ else }}{{ end }}"
infohash:
selector: div.resultdivbotton div.hideinfohash
date:
selector: div.resultdivbotton div.resulttime div.resultdivbottontime
filters:
- name: timeago
size:
selector: div.resultdivbotton div.resultlength div.resultdivbottonlength
files:
selector: div.resultdivbotton div.resultfile div.resultdivbottonfiles
seeders:
selector: div.resultdivbotton div.resultseed div.resultdivbottonseed
leechers:
text: 0
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -1,111 +0,0 @@
---
id: internetarchive
name: Internet Archive
description: "Internet Archive is a non-profit digital library offering free universal access to books, movies & music, as well as 406 billion archived web pages"
language: en-US
type: public
encoding: UTF-8
links:
- https://archive.org/
caps:
categorymappings:
- {id: audio, cat: Audio, desc: audio}
- {id: etree, cat: Audio, desc: etree}
- {id: movies, cat: Movies, desc: movies}
- {id: movies, cat: TV, desc: movies}
- {id: image, cat: Other/Misc, desc: image}
- {id: texts, cat: Books, desc: texts}
- {id: software, cat: PC, desc: software}
- {id: web, cat: Other, desc: web}
- {id: collection, cat: Other, desc: collection}
- {id: account, cat: Other, desc: account}
- {id: data, cat: Other, desc: data}
- {id: other, cat: Other, desc: other}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: titleOnly
type: checkbox
label: Search only in title
default: true
- name: noMagnet
type: checkbox
label: Download using .torrent only. No Magnets.
default: false
- name: sort
type: select
label: Sort requested from site
default: publicdate
options:
publicdate: created
downloads: downloads
item_size: size
- name: type
type: select
label: Order requested from site
default: "-"
options:
"-": desc
"_": asc
search:
paths:
- path: advancedsearch.php
response:
type: json
inputs:
q: "{{ if and .Config.titleOnly .Keywords }}title:({{ else }}{{ end }}{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ end }}{{ if and .Config.titleOnly .Keywords }}){{ else }}{{ end }}{{ if .Keywords }} AND {{ else }}{{ end }}format:(\"Archive BitTorrent\"){{ if .Categories }} AND mediatype:({{ join .Categories \" OR \" }}){{ else }}{{ end }}"
fl[]: "identifier,title,mediatype,item_size,downloads,btih,publicdate"
sort: "{{ if .Keywords }}{{ re_replace .Config.type \"_\" \"\" }}{{ .Config.sort }}{{ else }}-publicdate{{ end }}"
rows: 100
output: json
rows:
selector: response.docs
count:
selector: response.numFound
fields:
_id:
selector: identifier
category:
selector: mediatype
title_optional:
selector: title
optional: true
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}Missing title for {{ .Result._id }}{{ end }}"
details:
text: "details/{{ .Result._id }}"
download:
text: "download/{{ .Result._id }}/{{ .Result._id }}_archive.torrent"
_btih:
selector: btih
optional: true
infohash:
text: "{{ if .Config.noMagnet }}{{ else }}{{ .Result._btih }}{{ end }}"
date:
# 2021-10-25T16:44:43Z
selector: publicdate
size:
selector: item_size
grabs:
selector: downloads
optional: true
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# json Elasticsearch

View File

@@ -1,158 +0,0 @@
---
id: jme-reunit3d-api
name: JME-REUNIT3D (API)
description: "JME-REUNIT3D is a GERMAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: de-DE
type: private
encoding: UTF-8
links:
- https://jme-reunit3d.de/
legacylinks:
- https://jme-reunit3d.eu/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Music"}
- {id: 4, cat: Console, desc: "Game"}
- {id: 5, cat: PC, desc: "Application"}
- {id: 6, cat: XXX, desc: "XXX"}
- {id: 7, cat: TV/Sport, desc: "Sport"}
- {id: 8, cat: Books, desc: "E-Books"}
- {id: 9, cat: Audio/Audiobook, desc: "Audio-Books"}
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://jme-reunit3d.de/\" target=\"_blank\">JME-REUNIT3D</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
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
- name: info_activity
type: info
label: Account Inactivity
default: "You must seed at least 1 torrent or log in every 90 days to avoid being pruned."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
categorydesc:
selector: category
title:
selector: name
details:
selector: details_link
download:
selector: download_link
poster:
selector: poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
files:
selector: num_file
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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
case:
0: 1 # normal
1: 2 # double
minimumseedtime:
# 5 days (as seconds = 5 x 24 x 60 x 60)
text: 432000
# json UNIT3D 6.0.4

View File

@@ -1,175 +0,0 @@
---
id: joyhd
name: JoyHD
description: "JoyHD (JHD) is a CHINESE Private Torrent Tracker for HD MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://www.joyhd.net/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "电影Movies"}
- {id: 402, cat: TV, desc: "剧集TV Series"}
- {id: 403, cat: TV/Other, desc: "综艺TV Shows"}
- {id: 405, cat: TV/Anime, desc: "动漫Animations"}
- {id: 414, cat: Audio, desc: "音乐Music"}
- {id: 407, cat: TV/Sport, desc: "体育Sports"}
- {id: 404, cat: TV/Documentary, desc: "纪录片Documentaries"}
- {id: 406, cat: Audio/Video, desc: "音乐视频Music Videos"}
- {id: 410, cat: PC/Games, desc: "游戏Game"}
- {id: 411, cat: Other, desc: "学习Study"}
- {id: 409, cat: Other, desc: "其他Misc"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
path: takelogin.php
method: post
inputs:
loginmethod: username
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
dutime: month
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}}"
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
inclbookmarked: 0
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 title, 1 descr, 3 uploader, 4 imdburl (4 does not appear to work).
search_area: "{{ if or .Query.IMDBID .Query.DoubanID }}1{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
imdbid:
# currently not present. just in case a future update.
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
# currently 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: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: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:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 0.81
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP Standard v0.3 2013-10-01

View File

@@ -1,167 +0,0 @@
---
id: kamept
name: KamePT
description: "KamePT is a CHINESE Private Torrent Tracker for 3X"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://kamept.com/
caps:
categorymappings:
- {id: 410, cat: XXX, desc: "同人AV"}
- {id: 413, cat: XXX, desc: "男娘"}
- {id: 414, cat: XXX, desc: "同人VR"}
- {id: 417, cat: XXX, desc: "Cosplay套图"}
- {id: 419, cat: XXX, desc: "里番"}
- {id: 411, cat: XXX, desc: "2D动画"}
- {id: 423, cat: XXX, desc: "3D动画"}
- {id: 424, cat: XXX/ImageSet, desc: "单行本"}
- {id: 435, cat: XXX/ImageSet, desc: "同人志"}
- {id: 433, cat: XXX/ImageSet, desc: "画师CG"}
- {id: 415, cat: XXX/Other, desc: "游戏"}
- {id: 418, cat: XXX/Other, desc: "中文游戏"}
- {id: 434, cat: XXX/ImageSet, desc: "游戏CG"}
- {id: 420, cat: XXX/Other, desc: "外语音声"}
- {id: 421, cat: XXX/Other, desc: "中文音声"}
- {id: 422, cat: XXX/Other, desc: "视频音声"}
modes:
search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href*="usercp.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
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^="details.php?id="])
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
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)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 0.9
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP KEMURIKUSA 2019-01-09

View File

@@ -1,189 +0,0 @@
---
id: keepfriends
name: Keep Friends
description: "Keep Friends is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://pt.keepfrds.com/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 301, cat: Movies, desc: "Movie Packs/电影(合集)"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 304, cat: TV/Documentary, desc: "Documentary Packs/纪录片(合集)"}
- {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
- {id: 305, cat: TV/Anime, desc: "Animation Packs/动漫(合集)"}
- {id: 402, cat: TV, desc: "TV Series/剧集"}
- {id: 302, cat: TV, desc: "TV Serie Packs/剧集(合集)"}
- {id: 403, cat: TV, desc: "TV Shows/综艺"}
- {id: 303, cat: TV, desc: "TV Show Packs/综艺(合集)"}
- {id: 407, cat: TV/Sport, desc: "Sports/体育"}
- {id: 307, cat: TV/Sport, desc: "Sport Packs/体育(合集)"}
- {id: 406, cat: Audio/Video, desc: "MusicVideo/音乐录影带"}
- {id: 306, cat: Audio/Video, desc: "MusicVideo Packs/音乐录影带(合集)"}
- {id: 408, cat: Audio, desc: "Music/音乐"}
- {id: 308, cat: Audio, desc: "Music Packs/音乐(合集)"}
- {id: 409, cat: Other, desc: "Misc/其他"}
- {id: 309, cat: Other, desc: "Misc Packs/其他(合集)"}
- {id: 300, cat: Other, desc: "Recycle Bin/回收站"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
music-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: english_title
type: checkbox
label: "Use English titles instead of Chinese ones (when available)."
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
10: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[onclick="document.getElementById('logout').submit();"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
# currently supports only one query id at one time.
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, 5 doubankeywords (not working)
search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
# supports imdbid searches but does not display imdb links in results.
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title_raw:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
# note: final title processing is at the bottom after descrptions is fetched.
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
selector: a[href*="movie.douban.com/subject/"]
attribute: href
_staff_edit:
selector: a[href^="edit.php?"]
attribute: href
optional: true
date_elapsed:
# time type: time elapsed (default)
selector: "{{ if .Result._staff_edit }}td:nth-child(5) > span[title]{{ else }}td:nth-child(4) > span[title]{{ end }}"
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: "{{ if .Result._staff_edit }}td:nth-child(5):not(:has(span)){{ else }}td:nth-child(4):not(:has(span)){{ end }}"
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: "{{ if .Result._staff_edit }}td:nth-child(6){{ else }}td:nth-child(5){{ end }}"
seeders:
selector: "{{ if .Result._staff_edit }}td:nth-child(7){{ else }}td:nth-child(6){{ end }}"
leechers:
selector: "{{ if .Result._staff_edit }}td:nth-child(8){{ else }}td:nth-child(7){{ end }}"
grabs:
selector: "{{ if .Result._staff_edit }}td:nth-child(9){{ else }}td:nth-child(8){{ end }}"
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:
selector: "{{ if .Result._staff_edit }}td:nth-child(3){{ else }}td:nth-child(2){{ end }}"
remove: a, b, font, img, span
title_english:
selector: table.torrentname > tbody > tr > td.embedded
title:
text: "{{ if and .Config.english_title .Result.title_english }}{{ .Result.title_english }}{{ else }}{{ .Result.title_raw }}{{ end }}"
# NexusPHP Standard v1.5 Beta 4 (custom title search)

View File

@@ -1,189 +0,0 @@
---
id: lat-team-api
name: Lat-Team (API)
description: "Lat-Team is a SPANISH Private Torrent Tracker for MOVIES / TV"
language: es-ES
type: private
encoding: UTF-8
links:
- https://lat-team.com/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Peliculas"}
- {id: 2, cat: TV, desc: "TV Series"}
- {id: 5, cat: TV/Anime, desc: "Anime"}
- {id: 20, cat: TV/Foreign, desc: "Doramas & Turcas"}
- {id: 8, cat: TV/Foreign, desc: "Telenovelas"}
- {id: 3, cat: Audio, desc: "Musica"}
- {id: 9, cat: Audio/Video, desc: "Conciertos"}
- {id: 16, cat: TV/Sport, desc: "Eventos Deportivos"}
- {id: 22, cat: TV/Other, desc: "Playlist_Collection"}
- {id: 17, cat: PC, desc: "Software & O.S."}
- {id: 12, cat: XXX, desc: "XXX"}
- {id: 18, cat: Books, desc: "E-Books"}
- {id: 11, cat: Audio/Audiobook, desc: "Audiolibros"}
- {id: 4, cat: Console, desc: "Juegos"}
- {id: 24, cat: Other, desc: "Cursos"}
- {id: 28, cat: TV/Documentary, desc: "Documental"}
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://lat-team.com/\" target=\"_blank\">Lat-Team</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
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free[]=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_vose:
selector: name:contains(VOSE)
optional: true
title:
text: "{{ .Result.title_phase1 }}{{ if .Result.title_vose }} ENGLiSH{{ else }} SPANiSH{{ end }}"
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
# global MR is 0.25 but torrents must be seeded for 3 days regardless of ratio
# minimumratio:
# text: 0.25
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# json UNIT3D 8.0.2 (custom)

View File

@@ -1,154 +0,0 @@
---
id: limetorrents
name: LimeTorrents
description: "LimeTorrents is a Public general torrent index with mostly verified torrents"
language: en-US
type: public
encoding: UTF-8
# changes to this indexer should also be made to limetorrentsclone
links:
- https://www.limetorrents.lol/
- https://limetorrents.abcproxy.org/
- https://limetorrents.unblockit.casa/
- https://limetorrents.unblockninja.com/
- https://limetorrents.ninjaproxy1.com/
- https://limetorrents.proxyninja.org/
- https://limetorrents.torrentbay.st/
legacylinks:
- https://limetorrents.nocensor.art/
- https://limetorrents.unblockit.bio/
- https://limetorrents.unblockit.boo/
- https://limetorrents.mrunblock.guru/
- https://limetorrents.unblockit.click/
- https://limetorrents.unblockit.asia/
- https://limetorrents.unblockit.mov/
- https://limetorrents.mrunblock.life/
- https://limetorrents.unblockit.rsvp/
- https://limetorrents.nocensor.click/
- https://limetorrents.unblockit.vegas/
- https://limetorrents.unblockit.esq/
- https://limetorrents.unblockit.zip/
- https://limetorrents.unblockit.foo/
- https://limetorrents.unblockit.ing/
- https://limetorrents.mrunblock.bond/
- https://limetorrents.nocensor.cloud/
- https://limetorrents.unblockit.date/
- https://limetorrents.unblockit.dad/
- https://limetorrents.unblockit.africa/
caps:
categorymappings:
- {id: "TV shows", cat: TV, desc: "TV shows"}
- {id: Movies, cat: Movies, desc: Movies}
- {id: Music, cat: Audio, desc: Music}
- {id: Games, cat: Console, desc: Games}
- {id: Applications, cat: PC/0day, desc: Applications}
- {id: Other, cat: Other, desc: Other}
- {id: Anime, cat: TV/Anime, desc: Anime}
- {id: E-books, cat: Books/EBook, desc: E-books}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: downloadlink
type: select
label: Download link
default: "magnet:"
options:
"http://itorrents.org/": iTorrents.org
"magnet:": magnet
- name: downloadlink2
type: select
label: Download link (fallback)
default: "http://itorrents.org/"
options:
"http://itorrents.org/": iTorrents.org
"magnet:": magnet
- name: info_download
type: info
label: About the Download links
default: As the .torrent download links on this site are known to fail from time to time, you can optionally set as a fallback an automatic alternate link.
- name: sort
type: select
label: Sort requested from site
default: date
options:
date: created
seeds: seeders
size: size
- name: info_8000
type: info
label: About LimeTorrents Categories
default: LimeTorrents only returns category <b>Other</b> in its <i>Keywordless</i> search results page.</br>To pass your apps' indexer TEST you will need to include the 8000(Other) category.
download:
# the .torrent url is on the on the details page
selectors:
- selector: a.csprite_dltorrent[href^="{{ .Config.downloadlink }}"]
attribute: href
- selector: a.csprite_dltorrent[href^="{{ .Config.downloadlink2 }}"]
attribute: href
search:
paths:
- path: "{{ if .Keywords }}search/all/{{ .Keywords }}/{{ .Config.sort }}/1/{{ else }}/latest100{{ end }}"
keywordsfilters:
- name: re_replace
args: ["S[0-9]{2}([^E]|$)", ""] # remove season tag without episode
rows:
selector: .table2 > tbody > tr[bgcolor]
fields:
title:
selector: div.tt-name > a[href^="/"]
attribute: href
filters:
- name: regexp
args: "/(.+?)-torrent-\\d+\\.html"
- name: re_replace
args: ["-", " "]
category_is_tv_show:
text: "{{ .Result.title }}"
filters:
- name: regexp
args: "\\b(S\\d+(?:E\\d+)?)\\b"
category:
text: "{{ if .Result.category_is_tv_show }}TV shows{{ else }}Other{{ end }}"
category|noappend:
optional: true
selector: td:nth-child(2)
filters:
- name: regexp
args: " in (.+?)[.]?$"
details:
selector: div.tt-name > a[href^="/"]
attribute: href
download:
selector: div.tt-name > a[href^="/"]
attribute: href
date:
selector: td:nth-child(2)
filters:
- name: split
args: ["-", 0]
- name: replace
args: ["Last Month", "1 month ago"]
- name: replace
args: ["+", " ago"]
size:
selector: td:nth-child(3)
seeders:
selector: .tdseed
leechers:
selector: .tdleech
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -1,160 +0,0 @@
---
id: locadora
name: Locadora
description: "Locadora is a BRAZILIAN Private Tracker for MOVIES and TV"
language: pt-BR
type: private
encoding: UTF-8
links:
- https://locadora.cc/
legacylinks:
- https://locadora.xyz/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Filmes"}
- {id: 2, cat: TV, desc: "Series"}
- {id: 6, cat: TV/Anime, desc: "Animes"}
- {id: 7, cat: Audio/Video, desc: "Shows"}
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://locadora.cc/\" target=\"_blank\">Locadora</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
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
- name: info_activity
type: info
label: Account Inactivity
default: "Accounts inactive for 90 days are deactivated."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
# strip season and/or ep
- name: re_replace
args: ["\\b([SE]\\d{1,4}){1,2}\\b", ""]
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title:
selector: name
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
files:
selector: num_file
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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
case:
0: 1 # normal
1: 2 # double
# global MR is 0.4 but torrents must be seeded for 3 days regardless of ratio
# minimumratio:
# text: 0.4
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# json UNIT3D 6.3.0

View File

@@ -1,180 +0,0 @@
---
id: lst
name: LST
description: "LST is an English Private tracker for MOVIES / TV / GENERAL"
language: en-US
type: private
encoding: UTF-8
links:
- https://lst.gg/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 6, cat: TV/Anime, desc: "Anime"}
- {id: 3, cat: Audio, desc: "Music"}
- {id: 4, cat: Console, desc: "Game"}
- {id: 5, cat: PC, desc: "Application"}
- {id: 8, cat: XXX, desc: "XXX"}
- {id: 9, cat: Books/EBook, desc: "Ebook/Manga"}
- {id: 10, cat: Other, desc: "Education"}
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://lst.gg/\" target=\"_blank\">LST</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 get disabled after 90 days of no logins or any sort of activity. Accounts will also get soft deleted after 120 days."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free[]=100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
# global MR is 1.0 but torrents must be seeded for 5 days regardless of ratio
# minimumratio:
# text: 1.0
minimumseedtime:
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 8.0.2

View File

@@ -1,191 +0,0 @@
---
id: madsrevolution
name: MaDs Revolution
description: "MaDs Revolution is a Private GERMAN site for MOVIES / TV / GENERAL"
language: de-DE
type: private
encoding: UTF-8
links:
- https://madsrevolution.net/
caps:
categorymappings:
- {id: 52, cat: Movies/UHD, desc: "Filme UHD"}
- {id: 3, cat: Movies/HD, desc: "Filme 1080p"}
- {id: 4, cat: Movies/HD, desc: "Filme 720p"}
- {id: 47, cat: Movies/HD, desc: "Filme x264"}
- {id: 2, cat: Movies/SD, desc: "Filme DivX/XviD"}
- {id: 1, cat: Movies/DVD, desc: "Filme DVD-R"}
- {id: 20, cat: Movies/3D, desc: "Filme 3D"}
- {id: 54, cat: TV/UHD, desc: "Serien UHD"}
- {id: 28, cat: TV/HD, desc: "Serien 1080p"}
- {id: 26, cat: TV/HD, desc: "Serien 720p"}
- {id: 48, cat: TV/HD, desc: "Serien x264"}
- {id: 27, cat: TV/SD, desc: "Serien DivX/XviD"}
- {id: 25, cat: TV/SD, desc: "Serien DVD-R"}
- {id: 8, cat: TV/Other, desc: "Serien Unsorted"}
- {id: 38, cat: Audio, desc: "Musik Album"}
- {id: 37, cat: Audio, desc: "Musik Single/EP"}
- {id: 40, cat: Audio/Video, desc: "Musik Video"}
- {id: 39, cat: Audio, desc: "Musik Pack"}
- {id: 14, cat: Audio/Other, desc: "Musik Unsorted"}
- {id: 44, cat: PC/0day, desc: "Software Windows"}
- {id: 42, cat: PC/Mac, desc: "Software Mac"}
- {id: 41, cat: PC, desc: "Software Linux"}
- {id: 43, cat: PC/Mobile-Other, desc: "Software Mobile"}
- {id: 11, cat: PC, desc: "Software Unsorted"}
- {id: 12, cat: PC/Games, desc: "Spiele PC"}
- {id: 13, cat: Console, desc: "Spiele Konsole"}
- {id: 17, cat: Console, desc: "Spiele Portable"}
- {id: 46, cat: Console, desc: "Spiele Other"}
- {id: 53, cat: TV/Documentary, desc: "Dokus UHD"}
- {id: 24, cat: TV/Documentary, desc: "Dokus 1080p"}
- {id: 22, cat: TV/Documentary, desc: "Dokus 720p"}
- {id: 49, cat: TV/Documentary, desc: "Dokus x264"}
- {id: 23, cat: TV/Documentary, desc: "Dokus DivX/XviD"}
- {id: 21, cat: TV/Documentary, desc: "Dokus DVD-R"}
- {id: 7, cat: TV/Documentary, desc: "Dokus Unsorted"}
- {id: 55, cat: TV/Sport, desc: "Sport UHD"}
- {id: 32, cat: TV/Sport, desc: "Sport 1080p"}
- {id: 30, cat: TV/Sport, desc: "Sport 720p"}
- {id: 50, cat: TV/Sport, desc: "Sport x264"}
- {id: 31, cat: TV/Sport, desc: "Sport DivX/XviD"}
- {id: 29, cat: TV/Sport, desc: "Sport DVD-R"}
- {id: 9, cat: TV/Sport, desc: "Sport Unsorted"}
- {id: 15, cat: Audio/Audiobook, desc: "Books aBooks"}
- {id: 18, cat: Books/EBook, desc: "Books eBooks"}
- {id: 56, cat: XXX, desc: "XXX UHD"}
- {id: 36, cat: XXX, desc: "XXX 1080p"}
- {id: 34, cat: XXX, desc: "XXX 720p"}
- {id: 51, cat: XXX, desc: "XXX x264"}
- {id: 35, cat: XXX, desc: "XXX DivX/XviD"}
- {id: 33, cat: XXX, desc: "XXX DVD-R"}
- {id: 10, cat: XXX, desc: "XXX Unsorted"}
- {id: 5, cat: TV/Anime, desc: "Misc Anime"}
- {id: 6, cat: XXX, desc: "Misc Hentai"}
- {id: 19, cat: Other, desc: "Misc Other"}
modes:
search: [q]
tv-search: [q, season, ep, genre]
movie-search: [q, genre]
music-search: [q, genre]
book-search: [q, genre]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: sort
type: select
label: Sort requested from site
default: s3
options:
s3: created
s6: seeders
s4: size
s1: 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: "After 8 weeks of inactivity, the account will be automatically deleted."
login:
path: login.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
keeplogged: 1
error:
- selector: div#error-text
test:
path: index.php
selector: a[href^="logout.php?auth="]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}{{ if .Config.freeleech }}action=uploadonly&{{ else }}{{ end }}"
searchstr: "{{ .Keywords }}"
searchtags: "{{ .Query.Genre }}"
# 0 any, 1 all
tags_type: 0
order_by: "{{ .Config.sort }}"
order_way: "{{ .Config.type }}"
# site does not support imdbid searching or present imdb links in results.
rows:
selector: table#torrent_table > tbody > tr.torrent:has(a[href^="torrents.php?action=download&id="])
fields:
category:
selector: a.c-sub
attribute: href
filters:
- name: regexp
args: "\\[(\\d+)\\]"
title:
selector: a[href^="torrents.php?id="]
details:
selector: a[href^="torrents.php?id="]
attribute: href
download:
selector: a[href^="torrents.php?action=download&id="]
attribute: href
poster:
selector: a[href^="torrents.php?id="]
attribute: onmouseover
filters:
- name: regexp
args: "src=(.+?) "
genre:
selector: div.tags
description:
text: "{{ .Result.genre }}"
date:
selector: td:nth-last-child(5)
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "dd MMM yyyy, HH:mm 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:
"strong:contains(\"UploadOnly!\")": 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 0.8
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# engine n/a

View File

@@ -1,191 +0,0 @@
---
id: majomparade
name: Majomparádé
description: "Majomparádé (TurkDepo) is a HUNGARIAN Private Torrent Tracker for 0DAY / GENERAL"
language: hu-HU
type: private
encoding: UTF-8
requestDelay: 2
links:
- https://majomparade.eu/
caps:
categorymappings:
- {id: 4, cat: Movies/3D, desc: "3D/Magyar", default: true}
- {id: 5, cat: Movies/3D, desc: "3D/Külföldi", default: true}
- {id: 48, cat: Movies/HD, desc: "Film/BR-BDRIP/Külföldi", default: true}
- {id: 50, cat: Movies/HD, desc: "Film/BR-BDRIP/Magyar", default: true}
- {id: 75, cat: Movies/SD, desc: "Film/Cam/Külföldi", default: true}
- {id: 76, cat: Movies/SD, desc: "Film/Cam/Magyar", default: true}
- {id: 26, cat: Movies/DVD, desc: "Film/DVD/Külföldi", default: true}
- {id: 25, cat: Movies/DVD, desc: "Film/DVD/Magyar", default: true}
- {id: 58, cat: Movies/DVD, desc: "Film/DVD9/Külföld", default: true}
- {id: 59, cat: Movies/DVD, desc: "Film/DVD9/Magyar", default: true}
- {id: 42, cat: Movies/HD, desc: "Film/HD/Külföldi", default: true}
- {id: 51, cat: Movies/HD, desc: "Film/HD/Magyar", default: true}
- {id: 38, cat: Movies/SD, desc: "Film/XviD/Külföldi", default: true}
- {id: 24, cat: Movies/SD, desc: "Film/XviD/Magyar", default: true}
- {id: 85, cat: TV/Sport, desc: "Sport/Külföldi", default: true}
- {id: 87, cat: TV/Sport, desc: "Sport/Magyar", default: true}
- {id: 47, cat: TV/SD, desc: "Sorozat/Külföldi", default: true}
- {id: 36, cat: TV/SD, desc: "Sorozat/Magyar", default: true}
- {id: 6, cat: TV/HD, desc: "Sorozat/HD/Magyar", default: true}
- {id: 7, cat: TV/HD, desc: "Sorozat/HD/Külföldi", default: true}
- {id: 56, cat: Audio/Audiobook, desc: "Hangoskönyv", default: true}
- {id: 33, cat: Books, desc: "Könyv/Külföldi", default: true}
- {id: 44, cat: Books, desc: "Könyv/Magyar", default: true}
- {id: 28, cat: PC/Games, desc: "Játék/ISO", default: true}
- {id: 32, cat: Console, desc: "Játék/Konzol", default: true}
- {id: 30, cat: PC/Games, desc: "Játék/RIP", default: true}
- {id: 53, cat: Audio/Lossless, desc: "Lossless/Külföldi", default: true}
- {id: 74, cat: Audio/Lossless, desc: "Lossless/Magyar", default: true}
- {id: 40, cat: Audio/Other, desc: "Zene/Külföldi", default: true}
- {id: 41, cat: Audio/Other, desc: "Zene/Magyar", default: true}
- {id: 34, cat: PC/Mobile-Other, desc: "Mobil", default: true}
- {id: 35, cat: PC/ISO, desc: "Programok/ISO", default: true}
- {id: 46, cat: PC/0day, desc: "Programok/RIP", default: true}
- {id: 70, cat: XXX/DVD, desc: "XXX/DVD", default: false}
- {id: 39, cat: XXX/XviD, desc: "XXX/XviD", default: false}
- {id: 57, cat: XXX, desc: "XXX/HD", default: false}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
book-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: useragent
type: text
label: User-Agent
- name: info_useragent
type: info
label: How to get the User-Agent
default: "<ol><li>From the same place you fetched the cookie,</li><li>Find <b>'user-agent:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole user-agent string <i>(everything after 'user-agent: ')</i> and <b>Paste</b> here.</li></ol>"
- name: info_activity
type: info
label: Account Inactivity
default: "Users who have been inactive for more than 25 weeks are automatically deleted."
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: letoltes.php
selector: a[href^="logout.php?getUnique="]
search:
paths:
- path: letoltes.php
categories: [4, 5, 48, 50, 75, 76, 26, 25, 58, 59, 42, 51, 38, 24, 85, 87, 47, 36, 6, 7, 56, 33, 44, 28, 32, 30, 53, 74, 40, 41, 34, 35, 46]
inputs:
tipus: 1
- path: letoltes.php
categories: [4, 5, 48, 50, 75, 76, 26, 25, 58, 59, 42, 51, 38, 24, 85, 87, 47, 36, 6, 7, 56, 33, 44, 28, 32, 30, 53, 74, 40, 41, 34, 35, 46]
inputs:
tipus: 2
- path: xxx.php
categories: [70, 39, 57]
inputs:
$raw: "{{ range .Categories }}category[]={{.}}&{{end}}"
name: "{{ if .Query.IMDBID }}http://www.imdb.com/title/{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
imdb_search: "{{ if .Query.IMDBID }}yes{{ else }}{{ end }}"
k: yes
tipuska: 1
headers:
User-Agent: ["{{ .Config.useragent }}"]
rows:
selector: table#table > tbody > tr:has(a[href^="download.php?torrent="])
fields:
download:
selector: a[href^="download.php?torrent="]
attribute: href
title_default:
selector: a[href^="details.php?id="] > b
attribute: title
title_optional:
selector: a[href^="details.php?id="] > b[title*="Torrent neve:"]
attribute: title
optional: true
filters:
- name: regexp
args: "Torrent neve: (.*?)<"
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
title_hungarian:
selector: a[href^="details.php?id="] > b
attribute: title
filters:
- name: regexp
args: "<br />(.*)"
category:
selector: a[href*="&category[]="]
attribute: href
filters:
- name: querystring
args: category[]
details:
selector: a[href^="details.php?id="]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
poster:
selector: img[src="pic/borito.png"], a[href^="details.php?id="] > b[title*="Torrent neve:"]
attribute: title
filters:
- name: regexp
args: src='(.*?)'
files:
selector: td:nth-child(5)
size:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
seeders:
selector: td:nth-child(9)
leechers:
selector: td:nth-child(10)
date:
selector: td:nth-child(6)
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
downloadvolumefactor:
text: 0
uploadvolumefactor:
case:
img[title="Ennél a torrentnél 2x szorzó van."]: 2
img[title="Ennél a torrentnél 3x szorzó van."]: 3
img[title="Ennél a torrentnél 4x szorzó van."]: 4
"*": 1
genre:
selector: td:nth-child(2)
remove: a, img
filters:
- name: re_replace
args: ["(?i)(0.5x|2x|3x|4x)", ""]
description:
case:
img[src$="/pic/yes.png"]: "Verified: {{ if .Result.genre }}{{ .Result.genre }}<br>{{ else }}{{ end }}{{ .Result.title_hungarian }}"
img[src$="/pic/nincs.png"]: "Unverified: {{ if .Result.genre }}{{ .Result.genre }}<br>{{ else }}{{ end }}{{ .Result.title_hungarian }}"
minimumratio:
text: 1.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# engine n/a

View File

@@ -1,341 +0,0 @@
---
id: marinetracker
name: Marine Tracker
description: "Marine Tracker is a RUSSIAN Semi-Private Torrent Tracker for MARITIME E-LEARNING"
language: ru-RU
type: semi-private
encoding: UTF-8
links:
- https://seatracker.ru/
caps:
categorymappings:
- {id: 5, cat: Books, desc: "Shipbuilding & Shiprepairing"}
- {id: 314, cat: Books, desc: "Shipbuilding & Shiprepairing-Ship supply (chemicals, paints, oils)"}
- {id: 313, cat: Books, desc: "Shipbuilding & Shiprepairing-Shipbuilding materials"}
- {id: 312, cat: Books, desc: "Shipbuilding & Shiprepairing-Shipbuilding Management"}
- {id: 311, cat: Books, desc: "Shipbuilding & Shiprepairing-Mathematical Modeling"}
- {id: 310, cat: Books, desc: "Shipbuilding & Shiprepairing-Hydrodynamics"}
- {id: 309, cat: Books, desc: "Shipbuilding & Shiprepairing-Naval Architecture & Marine Engineering"}
- {id: 308, cat: Books, desc: "Shipbuilding & Shiprepairing-Shipbuilding Standard @ Register"}
- {id: 196, cat: Books, desc: "Shipbuilding & Shiprepairing-Welding"}
- {id: 195, cat: Books, desc: "Shipbuilding & Shiprepairing-Turnary"}
- {id: 226, cat: Books, desc: "Mobile Apps for Seafarers"}
- {id: 6, cat: PC, desc: "Maritime Software"}
- {id: 12, cat: PC, desc: "Maritime Software-Answers to tests"}
- {id: 211, cat: PC, desc: "Maritime Software-Navigation soft & Charts"}
- {id: 13, cat: PC, desc: "Maritime Software-Marine Tests"}
- {id: 19, cat: PC, desc: "Maritime Software-Training software"}
- {id: 14, cat: PC, desc: "Maritime Software-Maritime Simulators"}
- {id: 20, cat: PC, desc: "Maritime Software-Calculation soft"}
- {id: 179, cat: PC, desc: "Maritime Software-Programming and SDK software"}
- {id: 317, cat: PC, desc: "Maritime Software-Shareware (demo, trial)"}
- {id: 188, cat: PC, desc: "Maritime Software-Other soft"}
- {id: 21, cat: Books, desc: "Deckofficer's Library"}
- {id: 283, cat: Books, desc: "Deckofficer's Library-Radar at sea"}
- {id: 114, cat: Books, desc: "Deckofficer's Library-Watch keeping"}
- {id: 115, cat: Books, desc: "Deckofficer's Library-Keeping the ship documentation"}
- {id: 32, cat: Books, desc: "Deckofficer's Library-Cargo operations"}
- {id: 34, cat: Books, desc: "Deckofficer's Library-Navigation"}
- {id: 35, cat: Books, desc: "Deckofficer's Library-Ship handling"}
- {id: 36, cat: Books, desc: "Deckofficer's Library-Technical equipment of navigation"}
- {id: 95, cat: Books, desc: "Deckofficer's Library-Hydrometeorology"}
- {id: 100, cat: Books, desc: "Deckofficer's Library-Ship Theory"}
- {id: 110, cat: Books, desc: "Deckofficer's Library-Nautical Astronomy"}
- {id: 94, cat: Books, desc: "Deckofficer's Library-Nautical charts, tables, sailing directions"}
- {id: 116, cat: Books, desc: "Deckofficer's Library-Global Maritime Distress and Safety System (GMDSS)"}
- {id: 192, cat: Books, desc: "Deckofficer's Library-Navigation in the ice"}
- {id: 42, cat: Books, desc: "Safety of Navigation"}
- {id: 307, cat: Books, desc: "Safety of Navigation-Life Safety at Sea"}
- {id: 306, cat: Books, desc: "Safety of Navigation-Casualties and Incidents"}
- {id: 305, cat: Books, desc: "Safety of Navigation-Safety Digest, Lessons from Marine Accident Reports"}
- {id: 304, cat: Books, desc: "Safety of Navigation-Fire fighting at sea"}
- {id: 303, cat: Books, desc: "Safety of Navigation-Anti-Piracy Security"}
- {id: 302, cat: Books, desc: "Safety of Navigation-Emergency and life-saving equipment"}
- {id: 301, cat: Books, desc: "Safety of Navigation-Cybersecurity"}
- {id: 8, cat: Movies, desc: "Video for Seamen"}
- {id: 234, cat: Movies, desc: "Video for Seamen-Video for Deck Officers"}
- {id: 233, cat: Movies, desc: "Video for Seamen-Video for Marine Engineers"}
- {id: 235, cat: Movies, desc: "Video for Seamen-Other videos"}
- {id: 102, cat: Books, desc: "Marine Engineer's Library"}
- {id: 316, cat: Books, desc: "Marine Engineer's Library-Marine Fuels & Lubricants"}
- {id: 28, cat: Books, desc: Marine Engineer's Library-Ship's systems and mechanisms"}
- {id: 22, cat: Books, desc: Marine Engineer's Library-Daihatsu"}
- {id: 164, cat: Books, desc: Marine Engineer's Library-Operation of ship's power plants"}
- {id: 199, cat: Books, desc: Marine Engineer's Library-Ship Propulsion"}
- {id: 176, cat: Books, desc: Marine Engineer's Library-Marine refrigeration plants"}
- {id: 175, cat: Books, desc: Marine Engineer's Library-Marine boilers"}
- {id: 173, cat: Books, desc: Marine Engineer's Library-MAK & Caterpillar"}
- {id: 166, cat: Books, desc: Marine Engineer's Library-Ship's steam and gas turbines"}
- {id: 134, cat: Books, desc: Marine Engineer's Library-Marine Pumps"}
- {id: 108, cat: Books, desc: Marine Engineer's Library-Hydraulics"}
- {id: 16, cat: Books, desc: Marine Engineer's Library-MAN B&W"}
- {id: 17, cat: Books, desc: Marine Engineer's Library-Wärtsilä & Sulzer"}
- {id: 10, cat: Books, desc: "English for seamen"}
- {id: 266, cat: Books, desc: "English for seamen-English for Deck Officers"}
- {id: 267, cat: Books, desc: "English for seamen-English for Marine Engineers"}
- {id: 268, cat: Books, desc: "English for seamen-English for ETO's"}
- {id: 269, cat: Books, desc: "English for seamen-English for Shipbuilders"}
- {id: 270, cat: Books, desc: "English for seamen-RU↔EN dictionaries & phrasebooks"}
- {id: 265, cat: Books, desc: "English for seamen-Marine dictionaries and glossaries RU↔RU/EN↔EN"}
- {id: 271, cat: Books, desc: "English for seamen-Business English and Correspondence"}
- {id: 205, cat: Books, desc: "General english"}
- {id: 101, cat: Books, desc: "Electrical Technical Officer's Library"}
- {id: 29, cat: Books, desc: "Electrical Technical Officer's Library-Marine Electronics"}
- {id: 103, cat: Books, desc: "Electrical Technical Officer's Library-Ship's automatics"}
- {id: 104, cat: Books, desc: "Electrical Technical Officer's Library-Electrical machines"}
- {id: 210, cat: Books, desc: "Electrical Technical Officer's Library-Programmable Logic Controllers (PLC)"}
- {id: 172, cat: Books, desc: "Electrical Technical Officer's Library-Incinerators"}
- {id: 167, cat: Books, desc: "Electrical Technical Officer's Library-Cranes"}
- {id: 107, cat: Books, desc: "Electrical Technical Officer's Library-ETO Handbooks"}
- {id: 105, cat: Books, desc: "Electrical Technical Officer's Library-Sources of electricity"}
- {id: 37, cat: Books, desc: "Organization and management of maritime transport"}
- {id: 11, cat: Books, desc: "Section for cadets"}
- {id: 285, cat: Books, desc: "Section for cadets-Encyclopedias and atlases"}
- {id: 191, cat: Books, desc: "Maritime Law"}
- {id: 329, cat: Books, desc: "Maritime Law-Lloyd's, ABS, BV, DNV-GL, TÜV, NKK, RMRS and other approvals"}
- {id: 240, cat: Books, desc: "Maritime Law-IMO Resolutions"}
- {id: 212, cat: Books, desc: "Ship's documentation"}
- {id: 190, cat: Books, desc: "Catalogs"}
- {id: 113, cat: Books, desc: "Medicine"}
- {id: 299, cat: Books, desc: "Sailing Kitchen"}
- {id: 39, cat: Books, desc: "Purpose-built ships"}
- {id: 51, cat: Books, desc: "Purpose-built ships-Oil & Chemical Tankers"}
- {id: 52, cat: Books, desc: "Purpose-built ships-Dry cargo vessels"}
- {id: 250, cat: Books, desc: "Purpose-built ships-LNG \ LPG"}
- {id: 284, cat: Books, desc: "Purpose-built ships-Nuclear powered ships"}
- {id: 54, cat: Books, desc: "Purpose-built ships-Passenger ships"}
- {id: 248, cat: Books, desc: "Purpose-built ships-Fishing vessels"}
- {id: 239, cat: Books, desc: "Purpose-built ships-Offshore"}
- {id: 349, cat: Books, desc: "Purpose-built ships-Dynamic positioning vessels"}
- {id: 330, cat: Books, desc: "Examinations"}
- {id: 333, cat: Books, desc: "Examinations-IMU CET"}
- {id: 334, cat: Books, desc: "Examinations-NCV"}
- {id: 336, cat: Books, desc: "Examinations-ASM"}
- {id: 337, cat: Books, desc: "Examinations-TME"}
- {id: 338, cat: Books, desc: "Examinations-MEO"}
- {id: 341, cat: Books, desc: "Examinations-Chief Mates (Phase I)"}
- {id: 343, cat: Books, desc: "Examinations-ROR - Colregs"}
- {id: 335, cat: Books, desc: "Examinations-Second Mates"}
- {id: 342, cat: Books, desc: "Examinations-Chief Mates (Phase II)"}
- {id: 340, cat: Books, desc: "Examinations-Text books"}
- {id: 339, cat: Books, desc: "Examinations-Miscellaneous"}
- {id: 99, cat: Audio, desc: "Audio"}
- {id: 288, cat: Audio, desc: "Audio-♬ Music"}
- {id: 287, cat: Audio, desc: "Audio-Non-Fiction"}
- {id: 286, cat: Audio, desc: "Audio-Fiction"}
- {id: 111, cat: Books, desc: "Yachting, sailing, boating"}
- {id: 345, cat: Books, desc: "Yachting, sailing, boating-Solar boats"}
- {id: 318, cat: Books, desc: "Yachting, sailing, boating-Sailing life"}
- {id: 300, cat: Books, desc: "Yachting, sailing, boating-RYA"}
- {id: 298, cat: Books, desc: "Yachting, sailing, boating-Cruising Guides"}
- {id: 297, cat: Books, desc: "Yachting, sailing, boating-Weather Sailing"}
- {id: 296, cat: Books, desc: "Yachting, sailing, boating-How to Buy a Boat?"}
- {id: 258, cat: Books, desc: "Yachting, sailing, boating-Inflatable boats, boats, kayaks"}
- {id: 237, cat: Books, desc: "Yachting, sailing, boating-Yachting, sailing videos"}
- {id: 257, cat: Books, desc: "Yachting, sailing, boating-Motor Boat & Yachting magazines"}
- {id: 253, cat: Books, desc: "Yachting, sailing, boating-Seamanship practice"}
- {id: 254, cat: Books, desc: "Yachting, sailing, boating-Repair and Restoration"}
- {id: 255, cat: Books, desc: "Yachting, sailing, boating-Sailing Alone"}
- {id: 256, cat: Books, desc: "Yachting, sailing, boating-Rigging, sails, knots"}
- {id: 252, cat: Books, desc: "Yachting, sailing, boating-Projects, design, construction"}
- {id: 251, cat: Books, desc: "Diving"}
- {id: 177, cat: Books, desc: "Shipmodeling"}
- {id: 352, cat: Books, desc: "Shipmodeling-Paper models"}
- {id: 293, cat: Books, desc: "Shipmodeling-Radio controlled models"}
- {id: 292, cat: Books, desc: "Shipmodeling-Marine Modelling Magazines"}
- {id: 291, cat: Books, desc: "Shipmodeling-Drawings and models of ships (CAD, 3D)"}
- {id: 346, cat: Books, desc: "Shipmodeling-Raster drawings (JPG, PDF, TIFF)"}
- {id: 290, cat: Books, desc: "Shipmodeling-Reference Material"}
- {id: 289, cat: Books, desc: "Shipmodeling-Ships in Bottles"}
- {id: 197, cat: Books, desc: "Marine bulletins"}
- {id: 219, cat: Books, desc: "Marine History"}
- {id: 347, cat: Books, desc: "Marine History-Sea Life"}
- {id: 281, cat: Books, desc: "Marine History-History of Merchant Marine"}
- {id: 259, cat: Books, desc: "Marine History-Shipbuilding history"}
- {id: 273, cat: Books, desc: "Marine History-History of Seafaring"}
- {id: 275, cat: Books, desc: "Marine History-Accidents and disasters at sea"}
- {id: 264, cat: Books, desc: "Marine History-Marine cartography"}
- {id: 274, cat: Books, desc: "Marine History-Pirates"}
- {id: 282, cat: Books, desc: "Fleets history"}
- {id: 370, cat: Books, desc: "Fleets history-Maritime museums of the world"}
- {id: 357, cat: Books, desc: "Fleets history-China"}
- {id: 354, cat: Books, desc: "Fleets history-USA"}
- {id: 356, cat: Books, desc: "Fleets history-Russia | USSR"}
- {id: 358, cat: Books, desc: "Fleets history-India"}
- {id: 355, cat: Books, desc: "Fleets history-Japan"}
- {id: 364, cat: Books, desc: "Fleets history-The United Kingdom"}
- {id: 359, cat: Books, desc: "Fleets history-Germany"}
- {id: 360, cat: Books, desc: "Fleets history-France"}
- {id: 368, cat: Books, desc: "Fleets history-Netherlands"}
- {id: 369, cat: Books, desc: "Fleets history-Spain"}
- {id: 277, cat: Books, desc: "Wars at Sea"}
- {id: 276, cat: Books, desc: "Wars at Sea-War at sea (World War I)"}
- {id: 261, cat: Books, desc: "Wars at Sea-War at sea (World War II)"}
- {id: 363, cat: Books, desc: "Wars at Sea-Russo-Japanese War"}
- {id: 362, cat: Books, desc: "History of Naval Shipbuilding"}
- {id: 280, cat: Books, desc: "History of Naval Shipbuilding-Historic ships"}
- {id: 279, cat: Books, desc: "History of Naval Shipbuilding-Marine vessels"}
- {id: 278, cat: Books, desc: "History of Naval Shipbuilding-Warships"}
- {id: 351, cat: Books, desc: "History of Naval Shipbuilding-Battleships"}
- {id: 353, cat: Books, desc: "History of Naval Shipbuilding-Cruisers"}
- {id: 365, cat: Books, desc: "History of Naval Shipbuilding-Aircraft carriers"}
- {id: 366, cat: Books, desc: "History of Naval Shipbuilding-Destroyers"}
- {id: 367, cat: Books, desc: "History of Naval Shipbuilding-Frigates"}
- {id: 371, cat: Books, desc: "History of Naval Shipbuilding-Combat boats"}
- {id: 372, cat: Books, desc: "History of Naval Shipbuilding-Coastal defense ships"}
- {id: 262, cat: Books, desc: "History of Naval Shipbuilding-The history of sailing ships"}
- {id: 323, cat: Books, desc: "History of Naval Shipbuilding-History of Submarines"}
- {id: 198, cat: Books, desc: "Navy"}
- {id: 260, cat: Books, desc: "Navy-Naval shipbuilding (1950 - 20??)"}
- {id: 272, cat: Books, desc: "Navy-Naval magazines"}
- {id: 218, cat: Books, desc: "Maritime Fiction"}
- {id: 243, cat: Books, desc: "Rarity"}
- {id: 244, cat: Books, desc: "Rarity-1900 - 1950"}
- {id: 245, cat: Books, desc: "Rarity-1800 - 1900"}
- {id: 246, cat: Books, desc: "Rarity-1700 - 1800"}
- {id: 247, cat: Books, desc: "Rarity-1600 - 1700"}
- {id: 220, cat: Books, desc: "Fishing & Spearfishing"}
- {id: 319, cat: Books, desc: "Fishing tackle and knots"}
- {id: 294, cat: Books, desc: "Environmental protection"}
- {id: 7, cat: Books, desc: "Technical Books (Not maritime)"}
- {id: 328, cat: Books, desc: "Technical Books (Not maritime)-Hydraulics"}
- {id: 327, cat: Books, desc: "Technical Books (Not maritime)-Mechanics"}
- {id: 326, cat: Books, desc: "Technical Books (Not maritime)-Electricity"}
- {id: 242, cat: Books, desc: "Foreign language books"}
- {id: 344, cat: Books, desc: "Foreign language books-Yachting"}
- {id: 350, cat: Other, desc: "Art"}
- {id: 324, cat: Other, desc: "Posters, placards, signs"}
- {id: 187, cat: Books, desc: "Others (not maritime)"}
- {id: 38, cat: Books, desc: "Archive-Uncategorized"}
- {id: 162, cat: Books, desc: "Archive"}
# - {id: 325, cat: Other, desc: "Corrupt torrents (hash errors)"} # we filter these out in the rows selector
- {id: 322, cat: Books, desc: "Archive-No seeds"}
- {id: 321, cat: Books, desc: "Archive-Outdated software"}
- {id: 295, cat: Books, desc: "Archive-Unregistered"}
modes:
search: [q]
movie-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 and 50% freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 1
options:
1: created
10: seeders
7: size
2: title
- name: type
type: select
label: Order requested from site
default: 2
options:
2: desc
1: asc
- name: flaresolverr
type: info
label: FlareSolverr
default: This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href="https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers" target="_blank" rel="noreferrer">FlareSolverr</a> to access it.
login:
path: /
method: form
form: form.logform
inputs:
login_username: "{{ .Config.username }}"
login_password: "{{ .Config.password }}"
autologin: 1
error:
- selector: div#error_fon
test:
path: /
selector: a[href^="/./login.php?logout="]
search:
paths:
- path: tracker.php
method: post
inputs:
$raw: "{{ if .Categories }}{{ range .Categories }}f[]={{.}}&{{end}}{{ else }}f[]=-1{{ end }}"
nm: "{{ .Keywords }}"
allw: 1
o: "{{ .Config.sort }}"
s: "{{ .Config.type }}"
tm: -1
sns: -1
prev_allw: 1
prev_a: 0
prev_dla: 0
prev_dlc: 0
prev_dld: 0
prev_dlw: 0
prev_my: 0
prev_new: 0
prev_sd: 0
prev_da: 1
prev_dc: 0
prev_df: 1
prev_dl: 1
prev_ds: 0
prev_tor_type: 0
df: 1
da: 1
dl: 1
tor_type: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
submit: "%C2%A0%C2%A0Search%C2%A0%C2%A0"
rows:
selector: tr[id^="tor_"]:has(a[href^="./download.php?id="]):not(:has(a[href="tracker.php?f=325"]))
fields:
title:
selector: a.tLink
details:
selector: a.tLink
attribute: href
download:
selector: a[href^="./download.php?id="]
attribute: href
category:
selector: td a.gen
attribute: href
filters:
- name: querystring
args: f
description:
selector: td span.iconDL
size_optional:
selector: td:nth-last-child(5) > u
optional: true
size:
text: "{{ if .Result.size_optional }}{{ .Result.size_optional }}{{ else }}0 B{{ end }}"
seeders:
selector: td.seedmed
leechers:
selector: td.leechmed
grabs:
selector: td:nth-last-child(2)
date:
selector: td:last-child > u
downloadvolumefactor:
case:
img[src="images/tor_gold.gif"]: 0
img[src="images/tor_silver.gif"]: 0.5
"*": 1
uploadvolumefactor:
text: 1
# Engine n/a

View File

@@ -1,173 +0,0 @@
---
id: masters-tb
name: Masters-TB
description: "Masters-TB is a BULGARIAN Semi-Private Torrent Tracker for 0DAY / GENERAL"
language: bg-BG
type: semi-private
encoding: windows-1251
links:
- https://masters-tb.com/
caps:
categorymappings:
- {id: 23, cat: TV/Anime, desc: "Анимации"}
- {id: 56, cat: PC/Mobile-Android, desc: "Android"}
- {id: 53, cat: Books/EBook, desc: "e-Books"}
- {id: 17, cat: Console, desc: "Игри/конзоли"}
- {id: 4, cat: PC/Games, desc: "Игри/PC ISO"}
- {id: 21, cat: PC/Games, desc: "Игри/PC Rip"}
- {id: 1, cat: PC/ISO, desc: "Програми/PC ISO"}
- {id: 22, cat: PC, desc: "Програми/други"}
- {id: 57, cat: TV, desc: "Препоръчано MastersTB"}
- {id: 57, cat: Movies, desc: "Препоръчано MastersTB"}
- {id: 6, cat: Audio, desc: "Музика"}
- {id: 12, cat: Audio/Video, desc: "Музика/Видео"}
- {id: 33, cat: Audio/Video, desc: "Музика/DVD-R"}
- {id: 52, cat: Audio/Lossless, desc: "Музика/Lossless"}
- {id: 35, cat: TV, desc: "Сериали/BoxSet"}
- {id: 7, cat: TV, desc: "Сериали/TV"}
- {id: 32, cat: Movies, desc: "Филми/БГ"}
- {id: 55, cat: Movies, desc: "Филми/Asian"}
- {id: 36, cat: Movies, desc: "Филми/BoxSet"}
- {id: 28, cat: Movies, desc: "Филми/Руски"}
- {id: 34, cat: Movies/DVD, desc: "Филми/Руски DVD-R"}
- {id: 20, cat: Movies/DVD, desc: "Филми/DVD-R"}
- {id: 37, cat: Movies/HD, desc: "Филми/HD"}
- {id: 30, cat: TV/Sport, desc: "Филми/Спорт"}
- {id: 19, cat: Movies/SD, desc: "Филми/XviD"}
- {id: 29, cat: TV/Documentary, desc: "Филми/Документални"}
- {id: 54, cat: TV, desc: "TV Show"}
- {id: 2, cat: Other, desc: "Други"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: freeleech
type: checkbox
label: Filter 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>Tоренти на страница:</b> setting to <b>100</b> on your account profile. The default is <i>20</i>.
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active, 1 all, 2 dead
incldead: 1
# 0 name, 1 descr
searchrs: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: "table[width=\"65%\\\"\"]:nth-child(3) > tbody > tr[onmouseover]{{ if .Config.freeleech }}:has(img[src=\"pic/freeleech.png\"]){{ else }}{{ end }}"
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="download.php?id="]
attribute: href
filters:
- name: querystring
args: name
- name: regexp
args: ^(.+?)\.torrent
title_optional:
selector: a[href^="details.php?id="]
optional: true
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
magnet:
selector: a[href^="magnet:?xt="]
optional: true
attribute: href
poster:
selector: a[href^="details.php?id="]
attribute: onmouseover
filters:
- name: regexp
args: src=([^\s]+)
- name: replace
args: ["pic/not-available.jpg>');", ""]
files:
selector: td:nth-last-child(8)
date:
# 2023-05-19<br/>14:10:17
selector: td:nth-last-child(6)
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="pic/freeleech.png"]: 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
description:
selector: td:has(a[href^="details.php?id="])
remove: a
# engine tbd

View File

@@ -1,166 +0,0 @@
---
id: mdan
name: MDAN
description: "Mansão dos Animes (MDAN) is a BRAZILIAN Private Torrent Tracker for ANIME"
language: pt-BR
type: private
encoding: UTF-8
links:
- https://bt.mdan.org/
caps:
categorymappings:
- {id: 5, cat: TV/Anime, desc: "Animes Completo"}
- {id: 1, cat: TV/Anime, desc: "Animes Episódios"}
- {id: 2, cat: TV/Anime, desc: "Animes OVAs"}
- {id: 3, cat: Movies, desc: "Filmes"}
- {id: 6, cat: Movies/Other, desc: "Live"}
- {id: 7, cat: Books/Comics, desc: "Mangá"}
- {id: 4, cat: Audio, desc: "OST"}
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: 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 por página (Torrents per Page):</b> setting to <b>100</b> on your Perfil (Profile). The default is <i>30</i>.
- name: info_activity
type: info
label: Account Inactivity
default: "Inactive accounts are automatically deleted."
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: :contains("incorret")
- selector: :root:contains("Too many users. Please")
test:
path: index.php
selector: a[href^="logout.php?hash_please="]
search:
paths:
- path: browse.php
inputs:
# note: site uses the catsX[]=nn method which cardigann does not support.
search: "{{ .Keywords }}"
# title, descr, genre, all
searchin: title
# 0 active, 1 incldead, 2 onlydead
incldead: 1
# 0 no, 1 yes
only_free: "{{ if .Config.freeleech }}1{{else}}{{end}}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table[style^="width"] > tbody > tr:has(a[href^="details.php?id="]), table[style^="width"] > tbody > tr[id^="kdescr"]
after: 1
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
# titles are abbreviated :-(
selector: a[href^="details.php?id="]
details:
selector: a[href^="details.php?id="]
attribute: href
_id:
selector: a[href^="details.php?id="]
attribute: href
filters:
- name: querystring
args: id
download:
text: "download.php?torrent={{ .Result._id }}&ssl=1"
poster:
selector: td:nth-child(9) img
attribute: src
date_day:
# 10:50<br/>Hoje
# 13:15<br/>Ontem
selector: td:nth-child(7):contains("e")
# auto adjusted by site account profile
optional: true
filters:
- name: replace
args: ["Hoje", "Today"]
- name: replace
args: ["Ontem", "Yesterday"]
date_year:
# 18:55<br/>03-05-2023
selector: td:nth-child(7):not(:contains("e"))
# auto adjusted by site account profile
optional: true
filters:
- name: dateparse
args: "HH:mm dd-MM-yyyy"
date:
text: "{{ if or .Result.date_day .Result.date_year }}{{ or .Result.date_day .Result.date_year }}{{ else }}now{{ end }}"
size:
selector: td:nth-child(6)
files:
selector: td:nth-child(5)
grabs:
selector: td:nth-child(4)
seeders_optional:
selector: a[href$="seeders"]
optional: true
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
selector: a[href$="leechers"]
optional: true
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
downloadvolumefactor:
case:
img[src="./pic/free.gif"]: 0
img[src="./pic/silver2.gif"]: 0.5
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 0.4
# U-232

View File

@@ -1,230 +0,0 @@
---
id: mvgroupforum
name: MVGroup Forum
description: "MVGroup is a Semi-Private site dedicated to UK TV and DOCUMENTARIES. This definition is for the Forum Tracker site."
language: en-US
type: semi-private
encoding: UTF-8
links:
- https://forums.mvgroup.org/
legacylinks:
- http://forums.mvgroup.org/
caps:
categories:
Other: Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: info_8000
type: info
label: About MVGroup Categories
default: MVGroup does not return categories in its search results.</br>To add to your Apps' Torznab indexer, replace all categories with 8000(Other).
- name: hidef
type: checkbox
label: Show MVGroup HiDef Releases only
default: false
- name: withsubs
type: select
label: Subtitles
default: _
options:
_: -OFF-
alb: Albanian
ara: Arabic
arm: Armenian
ass: Assyrian
bos: Bosnian
bul: Bulgarian
cat: Catalan
chi: "Chinese, simplified"
zho: "Chinese, traditional"
hrv: Croatian
cze: Czech
dan: Danish
dut: Dutch
eng: English
est: Estonian
fin: Finnish
fre: French
glg: Galician
geo: Georgian
ger: German
ell: Greek
heb: Hebrew
hin: Hindi
hun: Hungarian
ice: Icelandic
ind: Indonesian
ita: Italian
jpn: Japanese
kaz: Kazakh
kor: Korean
lav: Latvian
lit: Lithuanian
ltz: Luxembourgish
mac: Macedonian
may: Malay
nor: Norwegian
per: Persian
pol: Polish
por: Portuguese
rum: Romanian
rus: Russian
scc: Serbian
slo: Slovak
slv: Slovenian
spa: Spanish
swe: Swedish
tha: Thai
tur: Turkish
ukr: Ukrainian
vie: Vietnamese
- name: seed
type: checkbox
label: Only released and seeded torrents
default: false
- name: dropbbc
type: checkbox
label: Drop BBC & other channels from the front of result titles
default: false
- name: stripS01E01
type: checkbox
label: Strip the S01E01 from the Torznab search requests
default: false
- name: sort
type: select
label: Sort requested from site
default: added
options:
added: created
seeders: seeders
filename: title
- name: type
type: select
label: Order requested from site
default: DESC
options:
DESC: desc
ASC: asc
login:
path: index.php?act=Login&CODE=00
method: form
form: form[action$="act=Login&CODE=01"]
inputs:
UserName: "{{ .Config.username }}"
PassWord: "{{ .Config.password }}"
Privacy: 1
CookieDate: 1
CODE: 01
referer: "https://forums.mvgroup.org/index.php?"
act: Login
error:
- selector: div.borderwrap:has(div.tablepad)
message:
selector: div.borderwrap div.tablepad
test:
path: index.php
selector: tr td.nav_mem div span[id="member_menu"], a[href^="/maintracker.php?filter="]
search:
paths:
- path: forumtracker.php
inputs:
seed: "{{ if .Config.seed }}1{{ else }}0{{ end }}"
withsubs: "{{ re_replace .Config.withsubs \"_\" \"\" }}"
filter: "{{ if .Config.hidef }}hd+{{ else }}{{ end }}{{ .Keywords }}"
orderby: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
keywordsfilters:
- name: re_replace
args: ["(?i)S01E01", "{{ if .Config.stripS01E01 }}{{ else }}S01E01{{ end }}"] # optionally remove S01E01 from search
rows:
selector: tr:has(a.magnetlink)
fields:
category:
text: Other
title_default:
# fallback title (to prevent abend if optional is not found)
text: "title not found"
title_optional:
optional: true
selector: td.doubleindent, td.singleindent a[href^="/index.php?showtopic="]
filters:
- name: re_replace
args: ["(?i)^BBC (.*)", "{{ if .Config.dropbbc }}{{ else }}BBC {{ end }}$1"]
- name: re_replace
args: ["(?i)^PBS (.*)", "{{ if .Config.dropbbc }}{{ else }}PBS {{ end }}$1"]
- name: re_replace
args: ["(?i)^CH5 (.*)", "{{ if .Config.dropbbc }}{{ else }}Ch5 {{ end }}$1"]
- name: re_replace
args: ["(?i)^CH4 (.*)", "{{ if .Config.dropbbc }}{{ else }}Ch4 {{ end }}$1"]
- name: re_replace
args: ["(?i)^DC (.*)", "{{ if .Config.dropbbc }}{{ else }}DC {{ end }}$1"]
- name: re_replace
args: ["(?i)^DW (.*)", "{{ if .Config.dropbbc }}{{ else }}DW {{ end }}$1"]
- name: re_replace
args: ["(?i)^HC (.*)", "{{ if .Config.dropbbc }}{{ else }}HC {{ end }}$1"]
- name: re_replace
args: ["(?i)^RTE (.*)", "{{ if .Config.dropbbc }}{{ else }}RTE {{ end }}$1"]
- name: re_replace
args: ["(?i)^ITV (.*)", "{{ if .Config.dropbbc }}{{ else }}ITV {{ end }}$1"]
- name: re_replace
args: ["(?i)^HBO (.*)", "{{ if .Config.dropbbc }}{{ else }}HBO {{ end }}$1"]
- name: re_replace
args: ["(?i)^NHK (.*)", "{{ if .Config.dropbbc }}{{ else }}NHK {{ end }}$1"]
- name: re_replace
args: ["(?i)^UKTV (.*)", "{{ if .Config.dropbbc }}{{ else }}UKTV {{ end }}$1"]
- name: re_replace
args: ["(?i)^NOVA (.*)", "{{ if .Config.dropbbc }}{{ else }}NOVA {{ end }}$1"]
- name: re_replace
args: ["(?i)^TV5Monde (.*)", "{{ if .Config.dropbbc }}{{ else }}TV5Monde {{ end }}$1"]
- name: re_replace
args: ["(?i)^Al-Jazeera (.*)", "{{ if .Config.dropbbc }}{{ else }}Al-Jazeera {{ end }}$1"]
- name: append
args: "{{ if .Config.stripS01E01 }}{{ else }} S01E01{{ end }}"
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
optional: true
selector: td.singleindent a[href^="/index.php?showtopic="]
attribute: href
download:
selector: td a.torrentlink
attribute: href
magnet:
selector: td a.magnetlink
attribute: href
size:
text: "512 MB"
date:
selector: td:nth-of-type(3)
filters:
- name: append
args: " +00:00" # GMT
- name: dateparse
args: "yyyy/MM/dd zzz"
seeders:
selector: td:nth-of-type(4)
leechers:
selector: td:nth-of-type(5)
grabs:
selector: td:nth-of-type(6)
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# Invision Power Board

View File

@@ -1,230 +0,0 @@
---
id: mvgroupmain
name: MVGroup Main
description: "MVGroup is a Semi-Private site dedicated to UK TV and DOCUMENTARIES. This definition is for the Main Tracker site."
language: en-US
type: semi-private
encoding: UTF-8
links:
- https://forums.mvgroup.org/
legacylinks:
- http://forums.mvgroup.org/
caps:
categories:
Other: Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: info_8000
type: info
label: About MVGroup Categories
default: MVGroup does not return categories in its search results.</br>To add to your Apps' Torznab indexer, replace all categories with 8000(Other).
- name: hidef
type: checkbox
label: Show MVGroup HiDef Releases only
default: false
- name: withsubs
type: select
label: Subtitles
default: _
options:
_: -OFF-
alb: Albanian
ara: Arabic
arm: Armenian
ass: Assyrian
bos: Bosnian
bul: Bulgarian
cat: Catalan
chi: "Chinese, simplified"
zho: "Chinese, traditional"
hrv: Croatian
cze: Czech
dan: Danish
dut: Dutch
eng: English
est: Estonian
fin: Finnish
fre: French
glg: Galician
geo: Georgian
ger: German
ell: Greek
heb: Hebrew
hin: Hindi
hun: Hungarian
ice: Icelandic
ind: Indonesian
ita: Italian
jpn: Japanese
kaz: Kazakh
kor: Korean
lav: Latvian
lit: Lithuanian
ltz: Luxembourgish
mac: Macedonian
may: Malay
nor: Norwegian
per: Persian
pol: Polish
por: Portuguese
rum: Romanian
rus: Russian
scc: Serbian
slo: Slovak
slv: Slovenian
spa: Spanish
swe: Swedish
tha: Thai
tur: Turkish
ukr: Ukrainian
vie: Vietnamese
- name: seed
type: checkbox
label: Only released and seeded torrents
default: false
- name: dropbbc
type: checkbox
label: Drop BBC & other channels from the front of result titles
default: false
- name: stripS01E01
type: checkbox
label: Strip the S01E01 from the Torznab search requests
default: false
- name: sort
type: select
label: Sort requested from site
default: added
options:
added: created
seeders: seeders
filename: title
- name: type
type: select
label: Order requested from site
default: DESC
options:
DESC: desc
ASC: asc
login:
path: index.php?act=Login&CODE=00
method: form
form: form[action$="act=Login&CODE=01"]
inputs:
UserName: "{{ .Config.username }}"
PassWord: "{{ .Config.password }}"
Privacy: 1
CookieDate: 1
CODE: 01
referer: "https://forums.mvgroup.org/index.php?"
act: Login
error:
- selector: div.borderwrap:has(div.tablepad)
message:
selector: div.borderwrap div.tablepad
test:
path: index.php
selector: tr td.nav_mem div span[id="member_menu"], a[href^="/forumtracker.php?filter="]
search:
paths:
- path: maintracker.php
inputs:
seed: "{{ if .Config.seed }}1{{ else }}0{{ end }}"
withsubs: "{{ re_replace .Config.withsubs \"_\" \"\" }}"
filter: "{{ if .Config.hidef }}hd+{{ else }}{{ end }}{{ .Keywords }}"
orderby: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
keywordsfilters:
- name: re_replace
args: ["(?i)S01E01", "{{ if .Config.stripS01E01 }}{{ else }}S01E01{{ end }}"] # optionally remove S01E01 from search
rows:
selector: tr:has(a.magnetlink)
fields:
category:
text: Other
title_default:
# fallback title (to prevent abend if optional is not found)
text: "title not found"
title_optional:
optional: true
selector: td.doubleindent, td.singleindent a[href^="/index.php?showtopic="]
filters:
- name: re_replace
args: ["(?i)^BBC (.*)", "{{ if .Config.dropbbc }}{{ else }}BBC {{ end }}$1"]
- name: re_replace
args: ["(?i)^PBS (.*)", "{{ if .Config.dropbbc }}{{ else }}PBS {{ end }}$1"]
- name: re_replace
args: ["(?i)^CH5 (.*)", "{{ if .Config.dropbbc }}{{ else }}Ch5 {{ end }}$1"]
- name: re_replace
args: ["(?i)^CH4 (.*)", "{{ if .Config.dropbbc }}{{ else }}Ch4 {{ end }}$1"]
- name: re_replace
args: ["(?i)^DC (.*)", "{{ if .Config.dropbbc }}{{ else }}DC {{ end }}$1"]
- name: re_replace
args: ["(?i)^DW (.*)", "{{ if .Config.dropbbc }}{{ else }}DW {{ end }}$1"]
- name: re_replace
args: ["(?i)^HC (.*)", "{{ if .Config.dropbbc }}{{ else }}HC {{ end }}$1"]
- name: re_replace
args: ["(?i)^RTE (.*)", "{{ if .Config.dropbbc }}{{ else }}RTE {{ end }}$1"]
- name: re_replace
args: ["(?i)^ITV (.*)", "{{ if .Config.dropbbc }}{{ else }}ITV {{ end }}$1"]
- name: re_replace
args: ["(?i)^HBO (.*)", "{{ if .Config.dropbbc }}{{ else }}HBO {{ end }}$1"]
- name: re_replace
args: ["(?i)^NHK (.*)", "{{ if .Config.dropbbc }}{{ else }}NHK {{ end }}$1"]
- name: re_replace
args: ["(?i)^UKTV (.*)", "{{ if .Config.dropbbc }}{{ else }}UKTV {{ end }}$1"]
- name: re_replace
args: ["(?i)^NOVA (.*)", "{{ if .Config.dropbbc }}{{ else }}NOVA {{ end }}$1"]
- name: re_replace
args: ["(?i)^TV5Monde (.*)", "{{ if .Config.dropbbc }}{{ else }}TV5Monde {{ end }}$1"]
- name: re_replace
args: ["(?i)^Al-Jazeera (.*)", "{{ if .Config.dropbbc }}{{ else }}Al-Jazeera {{ end }}$1"]
- name: append
args: "{{ if .Config.stripS01E01 }}{{ else }} S01E01{{ end }}"
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
optional: true
selector: td.singleindent a[href^="/index.php?showtopic="]
attribute: href
download:
selector: td a.torrentlink
attribute: href
magnet:
selector: td a.magnetlink
attribute: href
size:
text: "512 MB"
date:
selector: td:nth-of-type(3)
filters:
- name: append
args: " +00:00" # GMT
- name: dateparse
args: "yyyy/MM/dd zzz"
seeders:
selector: td:nth-of-type(4)
leechers:
selector: td:nth-of-type(5)
grabs:
selector: td:nth-of-type(6)
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# Invision Power Board

View File

@@ -1,191 +0,0 @@
---
id: nicept
name: NicePT
description: "NicePT is a CHINESE Private Torrent Tracker for 3X"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://www.nicept.net/
caps:
categorymappings:
- {id: 500, cat: XXX, desc: "日本有码"}
- {id: 401, cat: XXX, desc: "日本无码"}
- {id: 402, cat: XXX, desc: "欧美"}
- {id: 501, cat: XXX, desc: "其他(限制级)"}
- {id: 403, cat: XXX/Other, desc: "动漫(限制级)"}
- {id: 503, cat: XXX, desc: "真人秀,自拍(限制级)"}
- {id: 404, cat: XXX/ImageSet, desc: "写真、套图"}
- {id: 504, cat: XXX, desc: "SM调教限制级"}
modes:
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 NicePT Web Site. Otherwise just leave it empty."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Account retention rules:<ol><li>Veteran Users users and above will be retained forever</li><li>Elite Users 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 banned if they do not log in for 40 consecutive days</li><li>Users with no traffic (ie, upload/download data are both 0) will be banned if they do not log in for 7 consecutive days.</li></ol>"
login:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs:
secret: ""
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
two_step_code: "{{ .Config.2facode }}"
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: "{{ .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 (unused)
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^="details.php?id="])
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
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)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
description_verified:
case:
span[title="通过"], span[title="通過"], span[title="Allowed"]: "Verified:"
span[title="未审"], span[title="未審"], span[title="Not reviewed"]: "Unverified:"
span[title="拒绝"], span[title="拒絕"], span[title="Denied"]: "Banned:"
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
filters:
- name: prepend
args: "{{ .Result.description_verified }} "
# NexusPHP v1.8.8 2023-09-25

View File

@@ -1,68 +0,0 @@
---
id: nipponsei
name: Nipponsei
description: "Nipponsei is a Public site for MUSIC fresh from Japan"
language: en-US
type: public
encoding: UTF-8
links:
- https://nipponsei.minglong.org/
caps:
categorymappings:
- {id: music, cat: Audio, desc: Music}
modes:
search: [q]
music-search: [q]
settings: []
search:
# https://nipponsei.minglong.org/index.php?section=Tracker&search=Kanojo+mo+Kanojo+ED+Single
paths:
- path: index.php
inputs:
section: Tracker
search: "{{ .Keywords }}"
rows:
selector: tr.odd, tr.even
fields:
category:
text: music
title:
selector: a
filters:
- name: replace
args: ["[Nipponsei] ", ""]
details:
text: /
download:
selector: a
attribute: href
date_optional:
optional: true
selector: td.date
filters:
- name: dateparse
args: "yyyy-MM-dd HH:mm"
date:
text: "{{ if .Result.date_optional }}{{ .Result.date_optional }}{{ else }}now{{ end }}"
size_optional:
optional: true
selector: td.bytes
size:
text: "{{ if .Result.size_optional }}{{ .Result.size_optional }}{{ else }}128 MB{{ end }}"
seeders:
selector: "{{ if .Keywords }}td:nth-child(2){{ else }}td:nth-child(4){{ end }}"
leechers:
selector: "{{ if .Keywords }}td:nth-child(3){{ else }}td:nth-child(5){{ end }}"
grabs:
selector: td.number
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -1,309 +0,0 @@
---
id: nyaasi
name: Nyaa.si
description: "Nyaa is a Public torrent site focused on Eastern Asian media including anime, manga, literature and music"
language: en-US
type: public
encoding: UTF-8
requestDelay: 2
links:
- https://nyaa.si/
- https://nyaa.iss.ink/
- https://nyaa.land/
- https://nyaa.unblockninja.com/ # for magnets only
legacylinks:
- https://nyaa.black-mirror.xyz/
- https://nyaa.unblocked.casa/
- https://nyaa.proxyportal.fun/
- https://nyaa.uk-unblock.xyz/
- https://nyaa.ind-unblock.xyz/
- https://nyaa.unblocked.bar/
- https://nyaa.proxyportal.pw/
- https://nyaa.uk-unblock.pro/
- https://nyaa.root.yt/
- https://nyaa.lol/ # dropped at request of owner
- https://nyaa.nocensor.world/
- https://nyaa.nocensor.lol/
- https://nyaa.nocensor.art/
- https://nyaa.mrunblock.guru/
- https://nyaa.mrunblock.life/
- https://nyaa.nocensor.click/
- https://nyaa.mrunblock.bond/ # for magnets only
- https://nyaa.nocensor.cloud/
caps:
categorymappings:
# Anime
- {id: 1_0, cat: TV/Anime, desc: "Anime"}
- {id: 1_1, cat: TV/Anime, desc: "Anime music videos"}
- {id: 1_2, cat: TV/Anime, desc: "English subtitled animes"}
- {id: 1_3, cat: TV/Anime, desc: "Non-english subtitled animes"}
- {id: 1_4, cat: TV/Anime, desc: "Raw animes"}
# Anime as Movies (Radarr uses t=movie):
- {id: 1_0, cat: Movies/Other, desc: "Anime"}
- {id: 1_1, cat: Movies/Other, desc: "Anime music videos"}
- {id: 1_2, cat: Movies/Other, desc: "English subtitled animes"}
- {id: 1_3, cat: Movies/Other, desc: "Non-english subtitled animes"}
- {id: 1_4, cat: Movies/Other, desc: "Raw animes"}
# Audio
- {id: 2_0, cat: Audio, desc: "Audio"}
- {id: 2_1, cat: Audio, desc: "Lossless audio"}
- {id: 2_2, cat: Audio, desc: "Lossy audio"}
# Literature
- {id: 3_0, cat: Books, desc: "Literature"}
- {id: 3_1, cat: Books, desc: "Literature english translated"}
- {id: 3_2, cat: Books, desc: "Literature non-english translated"}
- {id: 3_3, cat: Books, desc: "Raw literature"}
# Live
- {id: 4_0, cat: TV, desc: "Live Action"}
- {id: 4_1, cat: TV, desc: "Live Action - English"}
- {id: 4_2, cat: TV, desc: "Live Action - Idol/PV"}
- {id: 4_3, cat: TV, desc: "Live Action - Non-English"}
- {id: 4_4, cat: TV, desc: "Live Action - Raw"}
# Pics
- {id: 5_0, cat: Other, desc: "Pictures"}
- {id: 5_1, cat: Other, desc: "Pictures - Graphics"}
- {id: 5_2, cat: Other, desc: "Pictures - Photos"}
# Software
- {id: 6_0, cat: PC, desc: "Software"}
- {id: 6_1, cat: PC/ISO, desc: "Applications"}
- {id: 6_2, cat: PC/Games, desc: "Games"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
book-search: [q]
allowrawsearch: true
settings:
- name: prefer_magnet_links
type: checkbox
label: Prefer Magnet Links
default: true
- name: sonarr_compatibility
type: checkbox
label: Improve Sonarr compatibility by trying to add Season information into Release Titles
default: false
- name: strip_s01
type: checkbox
label: Remove first season keywords (S1/S01/Season 1), as some results do not include this for first/single season releases
default: false
- name: radarr_compatibility
type: checkbox
label: Improve Radarr compatibility by removing year information from keywords and adding it to Release Titles
default: false
- name: filter-id
type: select
label: Filter
default: 0
options:
0: No filter
1: No remakes
2: Trusted only
- name: cat-id
type: select
label: Category
default: 0_0
options:
0_0: "All categories"
1_0: "Anime"
1_1: "Anime - Anime Music Video"
1_2: "Anime - English-translated"
1_3: "Anime - Non-English-translated"
1_4: "Anime - Raw"
2_0: "Audio"
2_1: "Audio - Lossless"
2_2: "Audio - Lossy"
3_0: "Literature"
3_1: "Literature - English-translated"
3_2: "Literature - Non-English-translated"
3_3: "Literature - Lossy"
4_0: "Live Action"
4_1: "Live Action - English"
4_2: "Live Action - Idol/PV"
4_3: "Live Action - Non-English"
4_4: "Live Action - Raw"
5_0: "Pictures"
5_1: "Pictures - Graphics"
5_2: "Pictures - Photos"
6_0: "Software"
6_1: "Software - Applications"
6_2: "Software - Games"
- name: sort
type: select
label: Sort requested from site
default: id
options:
id: created
seeders: seeders
size: size
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
search:
paths:
- path: /
inputs:
q: "{{ .Keywords }}"
# strip 0 from start of episode number - #11019, or fetch page 2 for keywordless
- path: /
inputs:
q: "{{ if .Keywords }}{{ re_replace .Keywords \"\\b0(\\d{1})\\b\" \"$1\" }}{{ else }}{{ end }}"
p: "{{ if .Keywords }}{{ else }}2{{ end }}"
inputs:
f: "{{ .Config.filter-id }}"
c: "{{ .Config.cat-id }}"
s: "{{ .Config.sort }}"
o: "{{ .Config.type }}"
keywordsfilters:
- name: re_replace
args: [" *\\b((?:19|20)\\d{2})\\b", "{{ if .Config.radarr_compatibility }}{{ else }} $1{{ end }}"]
- name: re_replace
args: ["(?i) *\\b(S(?:0|eason *)?1)\\b", "{{ if .Config.strip_s01 }}{{ else }} $1{{ end }}"]
rows:
selector: tr.default,tr.danger,tr.success
fields:
category:
selector: td:nth-child(1) a
attribute: href
filters:
- name: split
args: ["=", -1]
category_group_id:
selector: td:nth-child(1) a
attribute: href
filters:
- name: split
args: ["=", -1]
- name: split
args: ["_", 0]
title_default:
selector: td:nth-child(2) a:last-of-type
title_phase1:
selector: td:nth-child(2) a:last-of-type:contains("[PuyaSubs!] ")
optional: true
filters:
- name: append
args: " Spanish"
title_keyword_year:
text: "{{ .Query.Keywords }}"
filters:
- name: regexp
args: "\\b((19|20)\\d{2})\\b"
title_phase2:
text: "{{ or (.Result.title_phase1) (.Result.title_default) }}"
filters:
- name: re_replace
args: ["^(\\[.+?\\] ?)?(\\[.+?\\] ?)?(.+?)(\\[)", "$1$2$3{{ if .Config.radarr_compatibility }} {{ .Result.title_keyword_year }} $4{{ else }}$4{{ end }}"]
title_phase3:
text: "{{ .Result.title_phase2 }}"
filters:
- name: re_replace
args: ["(?i)\\b((?:S|Seasons?|EP?|Episodes?)\\s?)(\\d+)(?:\\-|[\\s~\\+àa&]+)(\\d+)\\b", "$1$2-$3"]
- name: re_replace
args: ["(?i)\\b(?:S|Seasons?)\\s?(\\d+(?:-\\d+)?)[\\s\\-]+(?:EP|Episodes?)\\s?(\\d+(?:-\\d+)?)\\b", "$0 S$1E$2"]
- name: re_replace
args: ["(?i)\\b(?:S|Seasons?)\\s?(\\d+(?:-\\d+)?)(?:.+?)(?:EP|Episodes?)\\s?(\\d+(?:-\\d+)?)\\b(?!(?:-\\d+)?\\sS\\d+(?:-\\d+)?E\\d+(?:-\\d+)?)", "$0 S$1E$2"]
- name: re_replace
args: ["\\b (II) - (\\d+)[\\s\\-~\\+àa&]+(\\d+)", " $1 S02 - $2-$3"]
- name: re_replace
args: ["\\b (II) - (\\d+)", " $1 S02 - $2"]
- name: re_replace
args: ["\\b (III) - (\\d+)[\\s\\-~\\+àa&]+(\\d+)", " $1 S03 - $2-$3"]
- name: re_replace
args: ["\\b (III) - (\\d+)", " $1 S03 - $2"]
- name: re_replace
args: ["(?i)\\b(\\d+)(st|nd|rd|th) Season\\b", "$0 S$1"]
- name: re_replace
args: ["(?i)_(\\d+)(st|nd|rd|th)_season_(\\d+)_", "$0S$1E$3_"]
- name: re_replace
args: ["(?i)_(\\d+)(st|nd|rd|th)_season_", "$0S$1_"]
- name: re_replace
args: ["(?i)\\b(S\\d+(?:-\\d+)?) - (\\d+)[\\s\\-~\\+àa&]+(\\d+)\\b", "$1E$2-$3"]
- name: re_replace
args: ["(?i)\\b(S\\d+(?:-\\d+)?) - (\\d+)\\b", "$1E$2"]
- name: re_replace
args: ["(?i)\\b(?:S\\s|Seasons?\\s?)(\\d+(?:-\\d+)?)\\b(?!(?:-\\d+)?\\s(?:EP|Episodes?)?\\s?(?:\\d+(?:-\\d+)?)?\\s?S\\d+(?:E\\d+(?:-\\d+)?)?)", "$0 S$1"]
- name: re_replace
args: ["(?i)\\b(?:EP|Episodes?)\\s?(\\d+(?:-\\d+)?)\\b(?!(?:-\\d+)?\\sS\\d+(?:-\\d+)?(?:E\\d+(?:-\\d+)?)?)", "$0 S01E$1"]
title_has_season:
text: "{{ .Result.title_phase3 }}"
filters:
- name: regexp
args: "(?i)(S\\d{1,3}(E\\d+)?)"
- name: append
args: "NULL"
title_has_episode:
text: "{{ .Result.title_phase3 }}"
filters:
- name: regexp
args: "\\b(.+? - ?)(\\d+(-\\d+)?) ([\\[\\(])\\b"
- name: append
args: "NULL"
title_has_movie_ova:
text: "{{ .Result.title_phase3 }}"
filters:
- name: regexp
args: "(?i)(?<![A-Za-z0-9])(Movies?|OVA|OAV)(?![A-Za-z0-9])"
- name: re_replace
args: ["(?i)(Movies?|OVA|OAV)", "YES"]
title_optional:
text: "{{ .Result.title_phase3 }}"
filters:
- name: re_replace
args: ["^(\\[.+?].+?)\\s*(?<![\\]\\)])((?:\\[|\\(| - ).+)", "{{ if and (and (eq .Result.category_group_id \"1\") (ne .Result.title_has_movie_ova \"YES\")) (and (eq .Result.title_has_season \"NULL\") (eq .Result.title_has_episode \"NULL\")) }}$1 S01 $2{{ else }}$1 $2{{ end }}"]
title:
text: "{{ if .Config.sonarr_compatibility }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_phase2 }}{{ end }}"
details:
selector: td:nth-child(2) a:last-of-type
attribute: href
download_optional:
selector: td:nth-child(3) a[href$=".torrent"]
attribute: href
optional: true
download:
text: "{{ if .Config.prefer_magnet_links }}{{ else }}{{ .Result.download_optional }}{{ end }}"
optional: true
magnet:
selector: td:nth-child(3) a[href^="magnet:?"]
attribute: href
size:
selector: td:nth-child(4)
date:
selector: td:nth-child(5)
filters:
- name: append
args: " -00:00" # GMT
- name: dateparse
args: "yyyy-MM-dd HH:mm zzz"
seeders_optional:
selector: td:nth-child(6):not(:empty)
optional: true
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
selector: td:nth-child(7):not(:empty)
optional: true
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
grabs_optional:
selector: td:nth-child(8):not(:empty)
optional: true
grabs:
text: "{{ if .Result.grabs_optional }}{{ .Result.grabs_optional }}{{ else }}0{{ end }}"
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
description:
selector: td:nth-child(2) a:last-of-type
# engine n/a

View File

@@ -1,195 +0,0 @@
---
id: opencd
name: OpenCD
description: "OpenCD is a CHINESE Private Torrent Tracker for MUSIC"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://open.cd/
caps:
categorymappings:
- {id: 2, cat: Audio, desc: "华语流行(Pop)"}
- {id: 3, cat: Audio, desc: "古典音乐(Classical)"}
- {id: 11, cat: Audio, desc: "民族音乐(Instrumental)"}
- {id: 4, cat: Audio, desc: "原声配乐(OST)"}
- {id: 5, cat: Audio, desc: "泛摇滚乐(Rock)"}
- {id: 8, cat: Audio, desc: "爵士乡村(Jazz)"}
- {id: 12, cat: Audio, desc: "新世纪(NewAge)"}
- {id: 13, cat: Audio, desc: "舞曲(Dance)"}
- {id: 14, cat: Audio, desc: "电子(Electronic)"}
- {id: 15, cat: Audio, desc: "民谣(Folk)"}
- {id: 16, cat: Audio, desc: "独立(Indie)"}
- {id: 17, cat: Audio, desc: "嘻哈(Hip Hop)"}
- {id: 18, cat: Audio, desc: "音乐剧(Musical)"}
- {id: 19, cat: Audio, desc: "乡村(Country)"}
- {id: 20, cat: Audio, desc: "另类(Alternative)"}
- {id: 21, cat: Audio, desc: "世界音樂(World))"}
- {id: 9, cat: Audio, desc: "其它类型(Others)"}
modes:
search: [q]
music-search: [q, artist]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: 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. Default is 50.
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
# https://open.cd/torrents.php?source11=1&source18=1&incldead=0&spstate=0&search=&search_area=0&search_mode=0
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}source{{.}}=1&{{end}}"
search: "{{ if .Query.Artist }}{{ .Query.Artist }}{{ else }}{{ .Keywords }}{{ 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, 5 traklist, 6 artistname
search_area: "{{ if .Query.Artist }}6{{ 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:
category:
selector: td:nth-child(1)
attribute: title
case:
td[title="华语流行"]: 2
td[title="古典音乐"]: 3
td[title="民族音乐"]: 11
td[title="原声配乐"]: 4
td[title="泛摇滚乐"]: 5
td[title="爵士乡村"]: 8
td[title="新世纪"]: 12
td[title="舞曲"]: 13
td[title="电子"]: 14
td[title="民谣"]: 15
td[title="独立"]: 16
td[title="嘻哈"]: 17
td[title="音乐剧"]: 18
td[title="乡村(Country)"]: 19
td[title="另类(Alternative)"]: 20
td[title="世界音樂(World)"]: 21
td[title="其它类型"]: 9
# Some torrents have no title set on td
td:not([title]): 9
title_default:
selector: a[href*="details.php?id="]
title_optional:
optional: true
selector: a[title][href*="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href*="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: img[id^="attach"]
attribute: src
filters:
- name: prepend
args: "https://images.weserv.nl/?url={{ .Config.sitelink }}" # for display on dashboard
- name: append
args: "&w=180&h=270" # for display on dashboard
date_elapsed:
# time type: time elapsed (default)
selector: td:nth-child(6) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td:nth-child(6):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td:nth-child(7)
seeders:
selector: td:nth-child(8)
leechers:
selector: td:nth-child(9)
grabs:
selector: td:nth-child(10)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 36 hours (as seconds = 36 x 60 x 60)
text: 129600
description:
selector: td:nth-child(3)
remove: a, b, font, img, span
# NexusPHP Standard v1.5 Beta 4 (customised)

View File

@@ -1,196 +0,0 @@
---
id: oshenpt
name: OshenPT
description: "OshenPT is a CHINESE Private Torrent Tracker for HD Movies, TV, Music"
language: zh-CN
type: private
encoding: UTF-8
links:
- http://www.oshen.win/
legacylinks:
- https://www.oshen.win/ # forces http
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
- {id: 402, cat: TV, desc: "TV Series/剧集"}
- {id: 403, cat: TV, desc: "TV Shows/综艺"}
- {id: 406, cat: Audio/Video, desc: "MusicVideo/音乐MV"}
- {id: 407, cat: TV/Sport, desc: "Sports/运体"}
- {id: 409, cat: Other, desc: "Misc/音乐"}
- {id: 408, cat: Audio, desc: "HQ Audio/无损音乐"}
- {id: 410, cat: Console, desc: "Games/游戏"}
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 OshenPT 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: "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>Un-parked 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
inputs:
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 (4 does not appear to work).
search_area: "{{ if or .Query.IMDBID .Query.DoubanID }}1{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: img[data-src]
attribute: data-src
imdbid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="movie.douban.com/subject/"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.11 2024-03-27

View File

@@ -1,180 +0,0 @@
---
id: ourbits
name: OurBits
description: "OurBits (HDPter) is a CHINESE Private Torrent Tracker for HD MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://ourbits.club/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies"}
- {id: 402, cat: Movies/3D, desc: "Movies 3D"}
- {id: 405, cat: TV, desc: "TV Packs"}
- {id: 410, cat: TV/Documentary, desc: "Documentaries"}
- {id: 411, cat: TV/Anime, desc: "Animations"}
- {id: 412, cat: TV, desc: "TV Episodes"}
- {id: 413, cat: TV, desc: "TV Shows"}
- {id: 414, cat: Audio/Video, desc: "Music Videos"}
- {id: 415, cat: TV/Sport, desc: "Sports"}
- {id: 416, cat: Audio, desc: "Music"}
- {id: 419, cat: TV, desc: "Concert"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: 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: "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>Un-parked 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 7 days in a row.</li></ol>"
login:
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[]={{.}}&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
# 0=incldead, 1=active, 2=dead
incldead: 0
# show promotions: 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, 3=uploader, 4=imdb URL, 5=douban URL
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_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
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)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
description:
selector: td.rowfollow:nth-child(2) > table > tbody > tr > td
remove: a, b, font, img, span
filters:
- name: replace
args: [" 剩余时间:", ""]
# Ourbits 1.1.0 (Based on NexusPHP Standard v1.5 Beta 4) 9169dad 2023-11-20

View File

@@ -1,209 +0,0 @@
---
id: p2pbg
name: P2PBG
description: "P2PBG is a BULGARIAN Private Torrent Tracker for 0DAY / GENERAL"
language: bg-BG
type: private
encoding: UTF-8
links:
- http://www.p2pbg.com/ # site does not support https ERR_CONNECTION_REFUSED
legacylinks:
- http://p2pbg.com/ # site does not support https ERR_CONNECTION_REFUSED
caps:
categorymappings:
# movies
- {id: 1, cat: Movies/SD, desc: "Movies XviD"}
- {id: 55, cat: Movies/3D, desc: "Movies 3D"}
- {id: 16, cat: Movies/HD, desc: "Movies x264"}
- {id: 11, cat: Movies/DVD, desc: "Movies DVD"}
- {id: 17, cat: Movies/HD, desc: "Movies MPEG2"}
- {id: 18, cat: Movies/BluRay, desc: "Movies BR/HD DVD"}
- {id: 7, cat: TV/Documentary, desc: "Movies Documentaries"}
- {id: 35, cat: Movies, desc: "Movies GSM"}
- {id: 34, cat: Movies, desc: "Movies BG"}
- {id: 24, cat: TV/SD, desc: "TV BG"}
- {id: 14, cat: TV, desc: "TV Shows"}
- {id: 15, cat: TV, desc: "TV Boxset"}
- {id: 38, cat: TV/Anime, desc: "TV Cartoons"}
# music
- {id: 2, cat: Audio/MP3, desc: "Music Song"}
- {id: 28, cat: Audio, desc: "Music Album"}
- {id: 29, cat: Audio, desc: "Music Discography"}
- {id: 3, cat: Audio/Video, desc: "Music DVD"}
- {id: 19, cat: Audio/Video, desc: "Music Video"}
# games
- {id: 8, cat: PC/Games, desc: "Games PC ISO"}
- {id: 9, cat: PC/Games, desc: "Games PC Rips"}
- {id: 33, cat: Console/Wii, desc: "Games Wii"}
- {id: 12, cat: Console/PS3, desc: "Games PS2"}
- {id: 23, cat: Console/PS3, desc: "Games PS3"}
- {id: 20, cat: Console/PSP, desc: "Games PSP"}
- {id: 21, cat: Console/XBox, desc: "Games XboX"}
- {id: 22, cat: Console/XBox 360, desc: "Games X360"}
# appz
- {id: 26, cat: PC/ISO, desc: "Appz PC ISO"}
- {id: 31, cat: PC/0day, desc: "Appz Ripped"}
- {id: 30, cat: PC, desc: "Appz Linux"}
- {id: 49, cat: PC/Mac, desc: "Appz MacOS"}
- {id: 27, cat: PC, desc: "Appz GSM"}
# sports
- {id: 5, cat: TV/Sport, desc: "Sport F1"}
- {id: 51, cat: TV/Sport, desc: "Sport"}
# other
- {id: 6, cat: Books, desc: "Books"}
- {id: 4, cat: Other, desc: "Other"}
- {id: 37, cat: Other/Misc, desc: "Pictures"}
- {id: 39, cat: Other, desc: "e-Learning"}
- {id: 52, cat: PC/Mobile-Other, desc: "Mobile GSM"}
- {id: 40, cat: PC/Mobile-iOS, desc: "Mobile iPhone"}
# 3x
- {id: 13, cat: XXX, desc: "XXX"}
- {id: 54, cat: XXX/x264, desc: "XXX HD"}
- {id: 32, cat: XXX/ImageSet, desc: "XXX Pictures"}
- {id: 48, cat: XXX, desc: "XXX BG Amateurs"}
- {id: 53, cat: XXX, desc: "XXX Hentai"}
- {id: 56, cat: XXX, desc: "XXX 3D"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: info_results
type: info
label: "Search results"
default: "Only the <b>Base</b> style is supported with this indexer.<br />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: data
options:
data: created
size: size
- name: type
type: select
label: Order requested from site
default: DESC
options:
DESC: desc
ASC: asc
login:
path: index.php?page=login
method: form
form: form[action="index.php?page=login"]
inputs:
uid: "{{ .Config.username }}"
pwd: "{{ .Config.password }}"
error:
- selector: td.lista span[style="color:#FF0000;"]
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
# http://p2pbg.com/index.php?page=torrents&search=%D0%9A%D0%B0%D1%82%D0%BE&category=0&active=0
- path: index.php
inputs:
page: torrents
category: "{{ if .Categories }}{{ range .Categories }}{{.}};{{end}}{{ else }}0;{{ end }}"
search: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ end }}"
# 0 all 1, active, 2 dead
active: 0
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"
rows:
selector: table.lista tr td table.lista tr:has(a[href^="index.php?page=torrent-details"])
fields:
category:
selector: td a[href*="category="]
attribute: href
filters:
- name: querystring
args: category
title_default:
# often abbreviated
selector: td:nth-child(2) a
title_optional:
# usually full length
selector: td a[title]
attribute: title
optional: true
filters:
- name: replace
args: ["View details: ", ""]
- name: replace
args: ["Преглед на детайли: ", ""]
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: td a[href*="id="]
attribute: href
download:
selector: td a[href*="id="]
attribute: href
filters:
- name: querystring
args: id
- name: prepend
args: "download.php?id="
- name: append
args: "&f={{ .Result.title }}.torrent"
poster:
selector: td a:has(img[src^="/torrentimg/pic"])
attribute: onmouseover
filters:
- name: regexp
args: src=([^\s]+)
# two flavours
date_day:
# Yesterday
# Вчера
selector: td:nth-last-child(5):not(:contains("/"))
# auto adjusted by site account profile
optional: true
filters:
- name: re_replace
args: ["(?i)сейчас|Сега", "now"]
- name: re_replace
args: ["(?i)сегодня|Днес", "Today"]
- name: re_replace
args: ["(?i)вчера|Вчера", "Yesterday"]
date_year:
# 14/03/2019
selector: td:nth-last-child(5):contains("/")
# auto adjusted by site account profile
optional: true
filters:
- name: dateparse
args: "dd/MM/yyyy"
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)
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
grabs:
selector: td:nth-last-child(1)
downloadvolumefactor:
text: 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
# xbtit customised

View File

@@ -1,248 +0,0 @@
---
id: parnuxi
name: ParnuXi
description: "ParnuXi is a RUSSIAN Public Torrent Tracker for 3X"
language: ru-RU
type: public
encoding: UTF-8
links:
- http://parnuxi.com/ # site does not support https ERR_CONNECTION_REFUSED
caps:
categorymappings:
- {id: 144, cat: XXX, desc: "Форум"}
- {id: 145, cat: XXX, desc: " Свободное общение"}
- {id: 147, cat: XXX, desc: " Помощь в поиске порно"}
- {id: 148, cat: XXX, desc: " Правила, помощь, вопросы, предложения по улучшению трекера"}
- {id: 1, cat: XXX, desc: "Порно торрент"}
- {id: 9, cat: XXX, desc: " Любительское порно"}
- {id: 48, cat: XXX, desc: " HD Любительское порно"}
- {id: 49, cat: XXX, desc: " Гонзо"}
- {id: 50, cat: XXX, desc: " HD Гонзо"}
- {id: 51, cat: XXX, desc: " Любительское. Паки и сборники"}
- {id: 11, cat: XXX, desc: " Русское порно"}
- {id: 150, cat: XXX, desc: " Порно с русскими актрисами"}
- {id: 52, cat: XXX, desc: " Русские порнофильмы"}
- {id: 53, cat: XXX, desc: " HD Порно с Русскими актрисами"}
- {id: 54, cat: XXX, desc: " Русское порно. Паки и сборники"}
- {id: 2, cat: XXX, desc: " Анал"}
- {id: 29, cat: XXX, desc: " HD Анал"}
- {id: 30, cat: XXX, desc: " Анал. Паки и сборники"}
- {id: 10, cat: XXX, desc: " Молоденькие"}
- {id: 36, cat: XXX, desc: " HD Молоденькие"}
- {id: 37, cat: XXX, desc: " Молоденькие. Паки и сборники"}
- {id: 6, cat: XXX, desc: " Групповой секс"}
- {id: 42, cat: XXX, desc: " HD Групповой секс"}
- {id: 3, cat: XXX, desc: " Взрослые"}
- {id: 31, cat: XXX, desc: " HD Взрослые"}
- {id: 32, cat: XXX, desc: " Взрослые. Паки и сборники"}
- {id: 33, cat: XXX, desc: " Бабушки"}
- {id: 7, cat: XXX, desc: " Порнозвезды"}
- {id: 43, cat: XXX, desc: " HD Порнозвезды"}
- {id: 44, cat: XXX, desc: " Порнозвезды. Паки и сборники по актрисам"}
- {id: 18, cat: XXX, desc: " Лесбиянки"}
- {id: 34, cat: XXX, desc: " HD Лесбиянки"}
- {id: 35, cat: XXX, desc: " Лесбиянки. Паки и сборники"}
- {id: 4, cat: XXX, desc: " Оральный секс и сперма"}
- {id: 38, cat: XXX, desc: " HD Оральный секс и сперма"}
- {id: 39, cat: XXX, desc: " Bukkake"}
- {id: 40, cat: XXX, desc: " Glory Hole"}
- {id: 5, cat: XXX, desc: " Толстушки"}
- {id: 41, cat: XXX, desc: " HD Толстушки"}
- {id: 13, cat: XXX, desc: " Фетиш"}
- {id: 56, cat: XXX, desc: " Фистинг, фаллоимитаторы, игрушки"}
- {id: 57, cat: XXX, desc: " Гинекологические осмотры"}
- {id: 58, cat: XXX, desc: " Переодевание, униформа"}
- {id: 59, cat: XXX, desc: " Трусики, чулки, колготки"}
- {id: 60, cat: XXX, desc: " Большие сиськи"}
- {id: 62, cat: XXX, desc: " Фут фетиш"}
- {id: 63, cat: XXX, desc: " Спящие, Пьяные"}
- {id: 64, cat: XXX, desc: " Голый спорт"}
- {id: 65, cat: XXX, desc: " Волосатые"}
- {id: 14, cat: XXX, desc: " Порно со всего мира"}
- {id: 67, cat: XXX, desc: " Азиатки"}
- {id: 68, cat: XXX, desc: " Арабки, мусульманки"}
- {id: 69, cat: XXX, desc: " Индианки"}
- {id: 70, cat: XXX, desc: " Латинки"}
- {id: 71, cat: XXX, desc: " Негритянки"}
- {id: 153, cat: XXX, desc: " Межрасовый секс"}
- {id: 15, cat: XXX, desc: " Японское порно"}
- {id: 72, cat: XXX, desc: " Японское порно с цензурой"}
- {id: 73, cat: XXX, desc: " Японское порно без цензуры"}
- {id: 74, cat: XXX, desc: " HD Японское порно без цензуры"}
- {id: 97, cat: XXX, desc: " Полнометражные фильмы"}
- {id: 98, cat: XXX, desc: " Порно с сюжетом"}
- {id: 99, cat: XXX, desc: " Порно пародии"}
- {id: 100, cat: XXX, desc: " HD Полнометражные с сюжетом"}
- {id: 101, cat: XXX, desc: " Порно без сюжета"}
- {id: 102, cat: XXX, desc: " HD Полнометражные без сюжета"}
- {id: 103, cat: XXX, desc: " Эротические и документальные"}
- {id: 152, cat: XXX, desc: " Фильмы с Русским переводом"}
- {id: 155, cat: XXX, desc: " Этнические фильмы"}
- {id: 156, cat: XXX, desc: " Лесбо-фильмы"}
- {id: 8, cat: XXX, desc: " Ретро"}
- {id: 45, cat: XXX, desc: " 90-е"}
- {id: 46, cat: XXX, desc: " 80-е"}
- {id: 47, cat: XXX, desc: " 70-е"}
- {id: 12, cat: XXX, desc: " Вуайеризм и эксгибиционизм, нудизм"}
- {id: 55, cat: XXX, desc: " HD Вуайеризм и эксгибиционизм, нудизм"}
- {id: 154, cat: XXX, desc: " Casting"}
- {id: 157, cat: XXX, desc: " Public & Reality"}
- {id: 75, cat: XXX, desc: "Нетрадиционное порно"}
- {id: 76, cat: XXX, desc: " Извращения"}
- {id: 77, cat: XXX, desc: " Изнасилования"}
- {id: 78, cat: XXX, desc: " Измена"}
- {id: 79, cat: XXX, desc: " Инцест"}
- {id: 80, cat: XXX, desc: " Писающие"}
- {id: 81, cat: XXX, desc: " Копро"}
- {id: 82, cat: XXX, desc: " Беременные"}
- {id: 89, cat: XXX, desc: " Транссексуалы"}
- {id: 90, cat: XXX, desc: " HD Транссексуалы"}
- {id: 91, cat: XXX, desc: " BDSM"}
- {id: 92, cat: XXX, desc: " HD BDSM"}
- {id: 86, cat: XXX, desc: " Геи"}
- {id: 87, cat: XXX, desc: " HD Геи"}
- {id: 88, cat: XXX, desc: " Бисексуалы"}
- {id: 93, cat: XXX, desc: " Femdom и страпон"}
- {id: 94, cat: XXX, desc: " HD Femdom и страпон"}
- {id: 95, cat: XXX, desc: " Лесби страпон"}
- {id: 83, cat: XXX, desc: " Зоо порно"}
- {id: 84, cat: XXX, desc: " Собаки"}
- {id: 85, cat: XXX, desc: " Лошади"}
- {id: 158, cat: XXX, desc: " LegalPorno"}
- {id: 96, cat: XXX, desc: "Разное"}
- {id: 119, cat: XXX, desc: " Фото, журналы, комиксы"}
- {id: 120, cat: XXX, desc: " Любительские фото"}
- {id: 121, cat: XXX, desc: " Профессиональное, студийное фото"}
- {id: 122, cat: XXX, desc: " Фото эро и порноактрис"}
- {id: 123, cat: XXX, desc: " Журналы"}
- {id: 124, cat: XXX, desc: " Комиксы, картинки"}
- {id: 104, cat: XXX, desc: " Эротика"}
- {id: 105, cat: XXX, desc: " HD Эротика"}
- {id: 106, cat: XXX, desc: " Соло, Мастурбация"}
- {id: 107, cat: XXX, desc: " Стриптиз"}
- {id: 108, cat: XXX, desc: " Web камеры, видео чаты"}
- {id: 125, cat: XXX, desc: " Хентай и мультфильмы"}
- {id: 126, cat: XXX, desc: " Лоликон"}
- {id: 127, cat: XXX, desc: " Тентакли"}
- {id: 128, cat: XXX, desc: " Шотакон"}
- {id: 129, cat: XXX, desc: " Юри"}
- {id: 130, cat: XXX, desc: " Яой"}
- {id: 109, cat: XXX, desc: " Порно для мобильных устройств"}
- {id: 110, cat: XXX, desc: " Порно для смартфонов и КПК"}
- {id: 111, cat: XXX, desc: " Порно на телефон (3GP)"}
- {id: 112, cat: XXX, desc: " Порно для iPhone, iPad"}
- {id: 113, cat: XXX, desc: " 3D Порно"}
- {id: 114, cat: XXX, desc: " Анаглиф"}
- {id: 115, cat: XXX, desc: " Анаморфная стереопара"}
- {id: 116, cat: XXX, desc: " Стереопара"}
- {id: 117, cat: XXX, desc: " Blu-Ray 3D"}
- {id: 118, cat: XXX, desc: " 3D порно фото"}
- {id: 142, cat: XXX, desc: " Порно игры"}
- {id: 131, cat: XXX, desc: " Furry & Yiff"}
- {id: 132, cat: XXX, desc: " Furry Art"}
- {id: 133, cat: XXX, desc: " Yiff Art"}
- {id: 134, cat: XXX, desc: " Yiff Video"}
- {id: 135, cat: XXX, desc: " Furpile"}
- {id: 136, cat: XXX, desc: " Comics Rus"}
- {id: 137, cat: XXX, desc: " Comics Eng"}
- {id: 138, cat: XXX, desc: " Flash"}
- {id: 139, cat: XXX, desc: " Artist"}
- {id: 140, cat: XXX, desc: " Sex in fursuit"}
- {id: 141, cat: XXX, desc: " Furry and Yiff Рассказы"}
- {id: 151, cat: XXX, desc: " Мусор"}
modes:
search: [q]
settings:
- name: sort
type: select
label: Sort requested from site
default: t
options:
t: created
ts: seeders
sz: size
i: title
- name: type
type: select
label: Order requested from site
default: d
options:
d: desc
a: asc
search:
paths:
# http://parnuxi.com/search.php?tracker_search=torrent&keywords=2020&terms=all&fp=1&author=&sc=1&sf=titleonly&sk=t&sd=d&sr=topics&st=0&ch=300&t=0&submit=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA
- path: search.php
inputs:
tracker_search: torrent
keywords: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}"
terms: all
fp: 1
author: ""
sc: 1
sf: titleonly
sr: topics
sk: "{{ .Config.sort }}"
sd: "{{ .Config.type }}"
st: 0
ch: 300
t: 0
submit: Перейти
$raw: "{{ range .Categories }}&fid[]={{.}}{{end}}"
rows:
selector: table.tablebg > tbody > tr:has(a[href^="./download/file.php?id="])
fields:
title:
selector: a.topictitle
details:
selector: a.topictitle
attribute: href
category:
selector: a[href^="./viewtopic.php?f="]
attribute: href
filters:
- name: querystring
args: f
download:
selector: a[href^="./download/file.php?id="]
attribute: href
size:
selector: span[title="Размер"] > b
filters:
- name: replace
args: ["ТБ", "TB"]
- name: replace
args: ["ГБ", "GB"]
- name: replace
args: ["МБ", "MB"]
- name: replace
args: ["КБ", "KB"]
seeders:
selector: span.seed
leechers:
selector: span.leech
grabs:
selector: span.complet
date_optional:
# (09.03.2020)
selector: a.topictitle
optional: true
# do not append TZ else text {{if}} will not work if date not found
filters:
- name: regexp
args: (\d{2}\.\d{2}\.\d{4})
- name: dateparse
args: "dd.MM.yyyy"
date:
text: "{{ if .Result.date_optional }}{{ .Result.date_optional }}{{ else }}now{{ end }}"
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# phpBB

View File

@@ -1,204 +0,0 @@
---
id: pier720
name: 720pier
description: "720pier is a RUSSIAN Private Torrent Tracker for HD SPORTS"
language: ru-RU
type: private
encoding: UTF-8
links:
- https://720pier.ru/
legacylinks:
- http://720pier.ru/
caps:
categorymappings:
- {id: 30, cat: TV/Sport, desc: "Sports"}
- {id: 32, cat: TV/Sport, desc: "Basketball"}
- {id: 34, cat: TV/Sport, desc: "Basketball - NBA"}
- {id: 87, cat: TV/Sport, desc: "Basketball - NBA Playoffs"}
- {id: 119, cat: TV/Sport, desc: "Basketball - NBA Playoffs - 2024"}
- {id: 117, cat: TV/Sport, desc: "Basketball - NBA Playoffs - 2023"}
- {id: 113, cat: TV/Sport, desc: "Basketball - NBA Playoffs - 2022"}
- {id: 111, cat: TV/Sport, desc: "Basketball - NBA Playoffs - 2021"}
- {id: 108, cat: TV/Sport, desc: "Basketball - NBA Playoffs - 2020"}
- {id: 106, cat: TV/Sport, desc: "Basketball - NBA Playoffs - 2019"}
- {id: 103, cat: TV/Sport, desc: "Basketball - NBA Playoffs - 2018"}
- {id: 95, cat: TV/Sport, desc: "Basketball - NBA Playoffs - 2017"}
- {id: 81, cat: TV/Sport, desc: "Basketball - NBA Playoffs - 2016"}
- {id: 58, cat: TV/Sport, desc: "Basketball - NBA Classic Games"}
- {id: 105, cat: TV/Sport, desc: "Basketball - NBA The Finals"}
- {id: 52, cat: TV/Sport, desc: "Basketball - NCAA"}
- {id: 82, cat: TV/Sport, desc: "Basketball - WNBA"}
- {id: 36, cat: TV/Sport, desc: "Basketball - European basketball"}
- {id: 37, cat: TV/Sport, desc: "Basketball - World Championship"}
- {id: 51, cat: TV/Sport, desc: "Basketball - Reviews and highlights"}
- {id: 41, cat: TV/Sport, desc: "Basketball - Other"}
- {id: 38, cat: TV/Sport, desc: "Basketball - Olympic Games"}
- {id: 42, cat: TV/Sport, desc: "Football"}
- {id: 43, cat: TV/Sport, desc: "Football - NFL"}
- {id: 66, cat: TV/Sport, desc: "Football - Super Bowls"}
- {id: 53, cat: TV/Sport, desc: "Football - NCAA"}
- {id: 99, cat: TV/Sport, desc: "Football - CFL"}
- {id: 110, cat: TV/Sport, desc: "Football - USFL"}
- {id: 54, cat: TV/Sport, desc: "Football - Reviews and highlights"}
- {id: 97, cat: TV/Sport, desc: "Football - Documentaries"}
- {id: 44, cat: TV/Sport, desc: "Football - Other"}
- {id: 101, cat: TV/Sport, desc: "Football - AAF"}
- {id: 46, cat: TV/Sport, desc: "Hockey"}
- {id: 48, cat: TV/Sport, desc: "Hockey - NHL"}
- {id: 88, cat: TV/Sport, desc: "Hockey - NHL Playoffs"}
- {id: 120, cat: TV/Sport, desc: "Hockey - NHL Playoffs - 2024"}
- {id: 118, cat: TV/Sport, desc: "Hockey - NHL Playoffs - 2023"}
- {id: 114, cat: TV/Sport, desc: "Hockey - NHL Playoffs - 2022"}
- {id: 112, cat: TV/Sport, desc: "Hockey - NHL Playoffs - 2021"}
- {id: 102, cat: TV/Sport, desc: "Hockey - NHL Playoffs 2018-2020"}
- {id: 93, cat: TV/Sport, desc: "Hockey - NHL Playoffs - 2017"}
- {id: 80, cat: TV/Sport, desc: "Hockey - NHL Playoffs - 2016"}
- {id: 65, cat: TV/Sport, desc: "Hockey - Stanley Cup Finals"}
- {id: 92, cat: TV/Sport, desc: "Hockey - NCAA"}
- {id: 49, cat: TV/Sport, desc: "Hockey - World Championship"}
- {id: 68, cat: TV/Sport, desc: "Hockey - Documentaries"}
- {id: 64, cat: TV/Sport, desc: "Hockey - Reviews and highlights"}
- {id: 50, cat: TV/Sport, desc: "Hockey - Other"}
- {id: 55, cat: TV/Sport, desc: "Baseball"}
- {id: 71, cat: TV/Sport, desc: "Baseball - MLB"}
- {id: 107, cat: TV/Sport, desc: "Baseball - MLB World Series"}
- {id: 72, cat: TV/Sport, desc: "Baseball - Other"}
- {id: 85, cat: TV/Sport, desc: "Baseball - Reviews, highlights, documentaries"}
- {id: 45, cat: TV/Sport, desc: "Other sports"}
- {id: 79, cat: TV/Sport, desc: "Other sports - Rugby"}
- {id: 78, cat: TV/Sport, desc: "Other sports - Lacrosse"}
- {id: 77, cat: TV/Sport, desc: "Other sports - Cricket"}
- {id: 76, cat: TV/Sport, desc: "Other sports - Volleyball"}
- {id: 75, cat: TV/Sport, desc: "Other sports - Tennis"}
- {id: 74, cat: TV/Sport, desc: "Other sports - Fighting"}
- {id: 94, cat: TV/Sport, desc: "Other sports - Misc"}
- {id: 100, cat: TV/Sport, desc: "Soccer"}
- {id: 98, cat: TV/Sport, desc: "Soccer - FIFA World Cup"}
- {id: 56, cat: TV/Sport, desc: "Sports on tv"}
- {id: 70, cat: TV/Sport, desc: "Sports on tv ESPN Films"}
# not in search_forum drop down
- {id: 73, cat: TV/Sport, desc: "Other sports - Auto, moto racing"}
# left out 39, 60 and 40 since they are not torrent forums
modes:
search: [q]
tv-search: [q, season, ep]
settings:
- name: cookie
type: text
label: Cookie
- name: info_cookie
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: useragent
type: text
label: User-Agent
- name: info_useragent
type: info
label: How to get the User-Agent
default: "<ol><li>From the same place you fetched the cookie,</li><li>Find <b>'user-agent:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole user-agent string <i>(everything after 'user-agent: ')</i> and <b>Paste</b> here.</li></ol>"
- name: sort
type: select
label: Sort requested from site
default: t
options:
t: created
ts: seeders
sz: size
i: title
- name: type
type: select
label: Order requested from site
default: d
options:
d: desc
a: asc
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: /
selector: :has(a[href^="./ucp.php?mode=logout&"])
download:
selectors:
- selector: a[href*="/download/torrent?id="]
attribute: href
search:
headers:
User-Agent: ["{{ .Config.useragent }}"]
paths:
- path: search.php
inputs:
keywords: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}"
terms: all
author: ""
sc: 1
sf: firstpost
sr: topics
sk: "{{ .Config.sort }}"
sd: "{{ .Config.type }}"
st: 0
ch: 300
t: 0
submit: Search
rows:
# drop topics without size as they will not have download links in details page
selector: li.row:has(div.list-inner div[style="float:right;"])
filters:
- name: andmatch
fields:
title:
selector: a.topictitle
details:
selector: a.topictitle
attribute: href
category:
selector: a[href^="./viewforum.php?f="]
attribute: href
filters:
- name: querystring
args: f
download:
selector: a.topictitle
attribute: href
size_optional:
selector: div.list-inner div[style="float:right;"]
optional: true
size:
text: "{{ if .Result.size_optional }}{{ .Result.size_optional }}{{ else }}1 GB{{ end }}"
seeders_optional:
selector: dd.posts span.my_tt.seed
optional: true
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
selector: dd.posts span.my_tt.leech
optional: true
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
grabs_optional:
selector: dd.views span.my_tt.complet
optional: true
grabs:
text: "{{ if .Result.grabs_optional }}{{ .Result.grabs_optional }}{{ else }}0{{ end }}"
date:
selector: div.left-box time
downloadvolumefactor:
text: 1
uploadvolumefactor:
text: 1
minimumratio:
text: 0.8
minimumseedtime:
# 60 hours (as seconds = 60 x 60 x 60)
text: 216000
# phpBB

View File

@@ -1,194 +0,0 @@
---
id: pignetwork
name: PigNetwork (猪猪网)
description: "PigNetwork (猪猪网) is a CHINESE Private Torrent Tracker for HD MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
requestDelay: 2
links:
- https://piggo.me/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影", default: true}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片", default: true}
- {id: 405, cat: TV/Anime, desc: "Animations/动漫", default: true}
- {id: 402, cat: TV, desc: "TV Series/电视剧", default: true}
- {id: 403, cat: TV, desc: "TV Shows/综艺", default: true}
- {id: 406, cat: Audio/Video, desc: "MusicVideo/MV", default: true}
- {id: 407, cat: TV/Sport, desc: "Sports/体育", default: true}
- {id: 409, cat: Other, desc: "Misc/其他", default: true}
- {id: 408, cat: Audio, desc: "Music/音乐", default: true}
# kids zone
- {id: 908, cat: TV, desc: "TV Series/剧集", default: false}
- {id: 909, cat: Movies, desc: "Movies/电影", default: false}
- {id: 905, cat: Audio/Video, desc: "MusicVideo/MV", default: false}
- {id: 907, cat: Audio, desc: "Music/音乐", default: false}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
music-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: useragent
type: text
label: User-Agent
- name: info_useragent
type: info
label: How to get the User-Agent
default: "<ol><li>From the same place you fetched the cookie,</li><li>Find <b>'user-agent:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole user-agent string <i>(everything after 'user-agent: ')</i> and <b>Paste</b> here.</li></ol>"
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 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_date
type: info
label: Date Setting
default: Access your <a href="https://piggo.me/usercp.php?action=tracker" target =_blank>个人中心 网站设定 (UserCP Website settings) </a> and set <b>时间显示类型 (Time Display Type)</b> to <b>发生时间 (Time of Occurence)</b>. <i>Elapsed Time</i> is not supported by this indexer and will see zero results.
- name: info_activity
type: info
label: Account Inactivity
default: "Account retention rules:<ul><li>Nexus Master users and above will be retained forever</li><li>Elite User users and above will not have their accounts deleted after parking their accounts (in the control panel)</li><li>Users who have parked their accounts will be deleted if they do not log in for 180 consecutive days</li><li>Users whose accounts have not been parked will have their accounts deleted if they do not log in for 90 consecutive days</li><li>Users who have no traffic for 7 consecutive days or who have not logged in for 30 consecutive days (that is, the upload/download data are both 0) will be automatically banned by the system.</li></ul>"
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href^="/usercp.php"]
search:
paths:
- path: torrents.php
categories: [401, 402, 403, 404, 405, 406, 407, 408, 409]
- path: special.php
categories: [905, 907, 908, 909]
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 (4 does not appear to work)
search_area: "{{ if or .Query.IMDBID .Query.DoubanID }}1{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
headers:
User-Agent: ["{{ .Config.useragent }}"]
rows:
selector: table.torrents > tbody > tr:has(a[href^="details.php?id="])
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
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:
# time added
selector: td.rowfollow:nth-child(4)
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
description_verified:
case:
span[title="通过"], span[title="通過"], span[title="Allowed"]: "Verified:"
span[title="未审"], span[title="未審"], span[title="Not reviewed"]: "Unverified:"
span[title="拒绝"], span[title="拒絕"], span[title="Denied"]: "Banned:"
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
filters:
- name: prepend
args: "{{ .Result.description_verified }} "
# NexusPHP v1.8.0 2023-04-16

View File

@@ -1,178 +0,0 @@
---
id: portugas-api
name: Portugas (API)
description: "Portugas is a Private PORTUGUESE Tracker"
language: pt-PT
type: private
encoding: UTF-8
links:
- https://portugas.org/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Filmes"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Músicas"}
- {id: 4, cat: PC/Games, desc: "Jogos"}
- {id: 5, cat: PC/0day, desc: "Appz"}
- {id: 7, cat: XXX, desc: "XXX"}
- {id: 9, cat: Books, desc: "E-Books"}
- {id: 10, cat: Movies, desc: "Animação Filmes"}
- {id: 11, cat: TV/Anime, desc: "Animação TV"}
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://portugas.org/\" target=\"_blank\">Portugas</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
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
- name: info_activity
type: info
label: Account Inactivity
default: "All users must log into their account at least once every 60 days, otherwise the account will be deactivated."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ 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
_audiopt:
selector: audio_pt
title:
selector: name
filters:
- name: append
args: "{{ if eq .Result._audiopt \"1\" }} Portuguese PT-PT{{ else }}{{ end }}"
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)^None$", ""]
- name: re_replace
args: ["(?i)(Ficção científica)", "Ficção_científica"]
- name: re_replace
args: ["(?i)(Cinema TV)", "Cinema_TV"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .Result.genre }}"
files:
selector: num_file
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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
case:
0: 1 # normal
1: 2 # double
minimumratio:
text: 1.1
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# json UNIT3D 6.3.0 (custom)

View File

@@ -1,201 +0,0 @@
---
id: ptchina
name: PTChina (铂金学院)
description: "PTChina (铂金学院) is a CHINESE Private site for MOVIES / TV"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://ptchina.org/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 402, cat: TV, desc: "TV Series/电视剧"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: 2facode
type: text
label: 2FA code
- name: info_2fa
type: info
label: "About 2FA code"
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> on the PTChina Web Site. Otherwise just leave it empty."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Account retention rules:<ol><li>Veteran User and above will be retained forever</li><li>Elite User and above will not be deleted after parking (in the control panel)</li><li>Users with a parked account will be deleted if they do not log in for 400 consecutive days</li><li>Users with a non-parked account will be deleted if they do not log in for 150 consecutive days</li><li>Users with no traffic (ie, upload/download data are both 0) will be deleted if they do not log in for 100 consecutive days.</li></ol>"
login:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs:
secret: ""
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
two_step_code: "{{ .Config.2facode }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:has(h2:contains("失败"))
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}"
# 0 incldead, 1 active, 2 dead
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl (not working)
search_area: "{{ if or .Query.IMDBID .Query.DoubanID }}1{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(a[href^="details.php?id="])
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
# site does not have posters enabled. just in case a future update.
poster:
selector: img[data-src]
attribute: data-src
imdbid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="movie.douban.com/subject/"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 1 day (as seconds = 24 x 60 x 60)
text: 86400
description_verified:
case:
span[title="通过"], span[title="通過"], span[title="Allowed"]: "Verified:"
span[title="未审"], span[title="未審"], span[title="Not reviewed"]: "Unverified:"
span[title="拒绝"], span[title="拒絕"], span[title="Denied"]: "Banned:"
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
filters:
- name: prepend
args: "{{ .Result.description_verified }} "
# NexusPHP v1.8.12 2024-04-13

View File

@@ -1,194 +0,0 @@
---
id: pterclub
name: PTerClub (PT之友俱乐部)
description: "PTerClub (PT之友俱乐部) is a CHINESE Private Torrent Tracker for HD MUSIC VIDEOS, MOVIES, TV & ANIME"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://pterclub.com/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "电影 (Movie)"}
- {id: 404, cat: TV, desc: "电视剧 (TV Play)"}
- {id: 403, cat: TV/Anime, desc: "动漫 (Anime)"}
- {id: 405, cat: TV, desc: "综艺 (TV Show)"}
- {id: 413, cat: Audio/Video, desc: "音乐短片 (MV)"}
- {id: 418, cat: Audio/Video, desc: "舞台演出(Stage Performance)"}
- {id: 406, cat: Audio, desc: "音乐 (Music)"}
- {id: 402, cat: TV/Documentary, desc: "纪录片 (Documentary)"}
- {id: 407, cat: TV/Sport, desc: "体育 (Sport)"}
- {id: 408, cat: Books, desc: "电子书 (Ebook)"}
- {id: 409, cat: Console, desc: "游戏 (Game)"}
- {id: 410, cat: PC, desc: "软件 (Software)"}
- {id: 411, cat: Other, desc: "学习 (Study)"}
- {id: 412, cat: Other, desc: "其它 (Other)"}
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
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: useragent
type: text
label: User-Agent
- name: info_useragent
type: info
label: How to get the User-Agent
default: "<ol><li>From the same place you fetched the cookie,</li><li>Find <b>'user-agent:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole user-agent string <i>(everything after 'user-agent: ')</i> and <b>Paste</b> here.</li></ol>"
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 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>All accounts will be permanently protected and will not be deleted; however, due to site security, some users will be temporarily banned due to activity rules</li><li>New users with no traffic changes will be disabled after 7 days of registration (not the actual download volume)</li><li>Those who download free torrents without generating any upload volume, or simply auxiliary torrents that generate magic power without any uploads will still be banned</li><li>Users with a non-parked account will be disabled if they do not log in for 60 consecutive days</li><li>Users with a parked account will be disabled if they do not log in for 180 consecutive days</li><li>Angora/Veteran User and above will not be disabled after parking</li><li>Sichuan Jianzhou Cat/Nexus Master users and above will be retained forever.</li></ol>"
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php?&noredir=1
selector: a[data-url="logout.php"]
search:
headers:
User-Agent: ["{{ .Config.useragent }}"]
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
# currently supports only one query id at one time.
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, 3 uploader, 4 imdburl, 5 DoubanID
search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}5{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="], a[href^="detailsgame.php?"]
title_optional:
optional: true
selector: a[title][href^="details.php?id="], a[title][href^="detailsgame.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="], a[href^="detailsgame.php?"]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: img[data-src]
attribute: data-src
imdbid:
selector: a[href$="&search_area=4"]
attribute: href
doubanid:
selector: a[href$="&search_area=5"]
attribute: href
# staff have extra columns at the start and end of a row, so we have to float the next lot of selectors off an anchor
_anchor1:
selector: td:has(a[href^="comment.php?"])
optional: true
date_elapsed:
# time type: time elapsed (default)
selector: "td:has(a[{{ if .Result._anchor1 }}href^=\"comment.php\"{{ else }}href$=\"startcomments\"{{ end }}]) ~ td > 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:has(a[{{ if .Result._anchor1 }}href^=\"comment.php\"{{ else }}href$=\"startcomments\"{{ end }}]) ~ td:not(:has(span[title]))"
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:has(a[{{ if .Result._anchor1 }}href^=\"comment.php\"{{ else }}href$=\"startcomments\"{{ end }}]) ~ td ~ td"
seeders:
selector: "td:has(a[{{ if .Result._anchor1 }}href^=\"comment.php\"{{ else }}href$=\"startcomments\"{{ end }}]) ~ td ~ td ~ td"
leechers:
selector: "td:has(a[{{ if .Result._anchor1 }}href^=\"comment.php\"{{ else }}href$=\"startcomments\"{{ end }}]) ~ td ~ td ~ td ~ td"
grabs:
selector: "td:has(a[{{ if .Result._anchor1 }}href^=\"comment.php\"{{ else }}href$=\"startcomments\"{{ end }}]) ~ td ~ td ~ td ~ td ~ td"
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: 0.9
description:
selector: td:has(table.torrentname)
remove: a, img
# NexusPHP prod#60d2fdc724a 2023-05-10

View File

@@ -1,163 +0,0 @@
---
id: ptsbao
name: PTSBAO (烧包)
description: "PTSBAO (烧包) is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
language: zh-CN
type: private
encoding: UTF-8
followredirect: true
links:
- https://ptsbao.club/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies(电影)"}
- {id: 402, cat: TV, desc: "TV Series(电视剧)"}
- {id: 403, cat: TV/Other, desc: "TV Shows(电视节目)"}
- {id: 405, cat: TV/Anime, desc: "Animations(动漫)"}
- {id: 414, cat: Audio, desc: "Music(音乐)"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries(记录片)"}
- {id: 423, cat: Movies, desc: "Movies Original(原创)"}
- {id: 409, cat: Other, desc: "Misc(其他)"}
- {id: 424, cat: Other, desc: "Limit(限制)"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
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 }}{{ .Keywords }}{{ 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 }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
# does not return imdb link in results
rows:
selector: table.torrents > tbody > tr:has(a[href^="download.php?id="])
fields:
category:
selector: a[href^="torrents.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: table.torrentname td a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: img.tooltip
attribute: src
filters:
- name: replace
args: ["pic/imdb_pic/nophoto.gif", ""]
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(5) > span[title]
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(5):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(6)
seeders:
selector: td.rowfollow:nth-child(7)
leechers:
selector: td.rowfollow:nth-child(8)
grabs:
selector: td.rowfollow:nth-child(9)
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
# NexusPHP custom 22082802

View File

@@ -1,199 +0,0 @@
---
id: pttime
name: PTTime
description: "PTTime is a ratioless CHINESE Private Torrent Tracker for HD MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
requestDelay: 2
links:
- https://www.pttime.org/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies(电影)", default: true}
- {id: 402, cat: TV, desc: "TV Series(电视剧)", default: true}
- {id: 403, cat: TV, desc: "TV Shows(综艺)", default: true}
- {id: 404, cat: TV/Documentary, desc: "Documentaries(纪录片)", default: true}
- {id: 405, cat: TV/Sport, desc: "Sport(体育、竞技、武术及相关)", default: true}
- {id: 406, cat: PC/Games, desc: "Games(游戏及相关)", default: true}
- {id: 408, cat: Audio, desc: "Music(音乐、专辑、MV、演唱会)", default: true}
- {id: 409, cat: Other, desc: "Art(舞蹈、歌剧、戏曲、相声、评书等)", default: true}
- {id: 411, cat: Other, desc: "Science(科学、知识、技能)", default: true}
- {id: 412, cat: Other, desc: "School(应试、考级、初中以上教育)", default: true}
- {id: 413, cat: Books, desc: "Book(书籍、有声书)", default: true}
- {id: 420, cat: PC, desc: "Code(IT、编程、大数据、人工智能", default: true}
- {id: 430, cat: TV/Anime, desc: "Animate(3D动画、2.5次元)", default: true}
- {id: 431, cat: TV/Anime, desc: "ACGN(二次元)", default: true}
- {id: 432, cat: TV/Other, desc: "Baby(婴幼、早教、小学及相关)", default: true}
- {id: 450, cat: Other, desc: "Resource(资源、素材、模板)", default: true}
- {id: 451, cat: PC, desc: "Software(软件、系统、 程序、APP等)", default: true}
- {id: 490, cat: Other, desc: "Other(其它)", default: true}
- {id: 440, cat: XXX, desc: "9kg-AV(步兵/无码)", default: false}
- {id: 441, cat: XXX, desc: "9kg-Sex(骑兵/有码)", default: false}
- {id: 442, cat: XXX, desc: "9kg-III(三级片、限制级电影)", default: false}
- {id: 443, cat: XXX, desc: "9kg-H动漫", default: false}
- {id: 444, cat: XXX, desc: "9kg-H游戏", default: false}
- {id: 445, cat: XXX, desc: "9kg-H书籍(书籍、有声书)", default: false}
- {id: 446, cat: XXX, desc: "9kg-H写真(图片、私拍、短视频)", default: false}
- {id: 447, cat: XXX, desc: "9kg-H音频(ASMR、音乐、音频)", default: false}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: 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:
path: takelogin.php
method: post
inputs:
loginmethod: username
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
dutime: month
ssl: yes
error:
- selector: td.embedded:has(h2:contains("失败"))
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
categories: [401, 402, 403, 404, 405, 406, 408, 409, 411, 412, 413, 420, 430, 431, 432, 450, 451, 490]
- path: adults.php
categories: [440, 441, 442, 443, 444, 445, 446, 447]
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
# currently supports only one query id at one time.
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, 2 smalldesc, 3 uploader, 4 imdburl, 5 doubanurl
search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}5{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(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_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: td.torrentimg > img
attribute: src
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:nth-child(5) > 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:nth-child(5):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:nth-child(6)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
grabs:
selector: td:nth-child(9)
downloadvolumefactor:
case:
font.promotion.free: 0
font.promotion.twoupfree: 0
font.promotion.halfdown: 0.5
font.promotion.twouphalfdown: 0.5
font.promotion.thirtypercent: 0.3
"*": 1
uploadvolumefactor:
case:
font.promotion.twoup: 2
font.promotion.twoupfree: 2
font.promotion.twouphalfdown: 2
"*": 1
description:
selector: td:nth-child(2) > font:last-child
# NexusPHP Standard v1.5 Beta 4

View File

@@ -1,175 +0,0 @@
---
id: punkshorror
name: Punk's Horror Tracker
description: "Punk's Horror Tracker is a HUNGARIAN Private Tracker for Horror MOVIES / TV"
language: hu-HU
type: private
encoding: ISO-8859-2
links:
- https://punck-tracker.net/
caps:
categorymappings:
- {id: 87, cat: Movies, desc: "Action Eng"}
- {id: 88, cat: Movies, desc: "Action Hun"}
- {id: 79, cat: TV/Documentary, desc: "Dokumentumfilm"}
- {id: 72, cat: Movies/HD, desc: "HD Eng"}
- {id: 71, cat: Movies/HD, desc: "HD Hun"}
- {id: 89, cat: Movies, desc: "Horror Anime"}
- {id: 78, cat: Books, desc: "Horror Ebook"}
- {id: 66, cat: Movies, desc: "Horror Eng"}
- {id: 73, cat: PC/Games, desc: "Horror Game"}
- {id: 65, cat: Movies, desc: "Horror Hun"}
- {id: 82, cat: XXX, desc: "Horror XXX"}
- {id: 94, cat: Movies, desc: "Kamerás filmek"}
- {id: 98, cat: Movies/HD, desc: "MD-HD"}
- {id: 86, cat: Movies, desc: "Mystery-Fantasy Eng"}
- {id: 85, cat: Movies, desc: "Mystery-Fantasy Hun"}
- {id: 83, cat: Movies, desc: "Punk Release"}
- {id: 76, cat: Movies, desc: "Retro Film"}
- {id: 70, cat: Movies, desc: "Scfi Eng"}
- {id: 69, cat: Movies, desc: "Scfi Hun"}
- {id: 75, cat: TV, desc: "Sorozat Eng"}
- {id: 74, cat: TV, desc: "Sorozat Hun"}
- {id: 68, cat: Movies, desc: "Thriller Eng"}
- {id: 67, cat: Movies, desc: "Thriller Hun"}
- {id: 84, cat: Movies/SD, desc: "VHS Ritkaságok"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-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: added
5: size
7: seeders
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info
type: info
label: Results Per Page
default: For best results, change the <b>Torrentek száma egy oldalon</b> setting to <b>100</b> on your account profile.
login:
path: login.php
method: form
form: form[action="takelogin.php"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: "td:contains(\"Belépési hiba\")"
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
onlyname: 1
search: "{{ .Keywords }}"
# 0 active, 1 all, 2 deadonly, 3 freeleech
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
# does not support imdbid searches
rows:
selector: table.alap99 > tbody#linkhatter > tr
filters:
- name: andmatch
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
# can be abbreviated
selector: a[href^="details.php?id="]
title_optional:
# usually full length
selector: a[href^="details.php?id="]
attribute: title
optional: true
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
date:
selector: td:nth-child(2) > b > font
filters:
- name: replace
args: ["\xA0", ""]
- name: replace
args: ["Feltöltve:", ""]
- name: append
args: " +01:00" # CET
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
poster:
selector: a[onmouseover]
attribute: onmouseover
filters:
- name: regexp
args: src=([^\s]+)
size:
selector: td:nth-child(7)
grabs:
selector: td:nth-last-child(4)
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
description:
case:
img[src="pic/yes.png"]: Verified
img[src="pic/nincs.png"]: Unverified
downloadvolumefactor:
case:
img[src="pic/golden.gif"]: 0
"*": 1
uploadvolumefactor:
selector: td:nth-child(7) > center > b > font
filters:
- name: regexp
args: (\d+)
minimumratio:
text: 0.8
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# engine n/a

View File

@@ -1,202 +0,0 @@
---
id: putao
name: PuTao (葡萄)
description: "PuTao (葡萄) is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://pt.sjtu.edu.cn/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies CHN 华语电影"}
- {id: 402, cat: Movies, desc: "Movies Eng 欧美电影"}
- {id: 403, cat: Movies, desc: "Movies Asian 亚洲电影"}
- {id: 406, cat: TV/Documentary, desc: "Documentary 纪录片"}
- {id: 407, cat: TV, desc: "TV Series HKTW 港台电视剧"}
- {id: 408, cat: TV, desc: "TV Series Asian 亚洲电视剧"}
- {id: 409, cat: TV, desc: "TV Series CHN 大陆电视剧"}
- {id: 410, cat: TV, desc: "TV Series Eng 欧美电视剧"}
- {id: 411, cat: TV, desc: "TV CHN 大陆综艺节目"}
- {id: 412, cat: TV, desc: "TV HKTW 港台综艺节目"}
- {id: 413, cat: TV, desc: "TV Eng 欧美综艺节目"}
- {id: 414, cat: TV, desc: "TV JPKR 日韩综艺节目"}
- {id: 420, cat: Audio, desc: "Music CHN 华语音乐"}
- {id: 421, cat: Audio, desc: "Music JPKR 日韩音乐"}
- {id: 422, cat: Audio, desc: "Music Eng 欧美音乐"}
- {id: 423, cat: Audio, desc: "Music OST 原声音乐"}
- {id: 425, cat: Audio, desc: "Music Classic 古典音乐"}
- {id: 426, cat: Audio/MP3, desc: "Music mp3合辑"}
- {id: 427, cat: Audio/Video, desc: "Music Videos"}
- {id: 429, cat: Console, desc: "Games 游戏"}
- {id: 431, cat: TV/Anime, desc: "Anime 动漫"}
- {id: 432, cat: TV/Sport, desc: "Sport 体育"}
- {id: 434, cat: PC, desc: "Software 软件"}
- {id: 435, cat: Other, desc: "Study 学习"}
- {id: 440, cat: PC/Mac, desc: "Software Mac"}
- {id: 451, cat: Other, desc: "Campus 校园原创"}
- {id: 450, cat: Other/Misc, desc: "Misc 其他"}
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: 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>每页种子数:每页显示</b><i>(Torrents per page:)</i> 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 240 consecutive days</li><li>Users with a non-parked account will be deleted if they do not log in for 120 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 30 consecutive days.</li></ol>"
login:
path: login.php
method: form
form: form[action="takelogin.php"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
checkcode: XxXx
logout: ""
error:
- selector: td.embedded:has(h2:contains("失败"))
test:
path: index.php
selector: a[href^="logout.php?hash="]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
# currently supports only one query id at one time.
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 onlyactive, 2 onlydead
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 30%, 7 70%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 all, 1 popular, 2 classic, 3 recommended, 4 normal, 5 seeds
picktype: 0
# 0 title, 1 descr, 3 uploader, 4 imdbid
search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
# does not return imdb or doubanid in results
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title_optional:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
title:
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
date_elapsed:
# time elapsed (default)
# 19时<br/>3分 (19 hours 3 minutes)
# 2天<br/>21时 (2 days 21 hours)
selector: td:nth-child(4):not(:contains("-"))
optional: true
filters:
- name: replace
args: ["年", "years"]
- name: replace
args: ["月", "months"]
- name: replace
args: ["天", "days"]
- name: replace
args: ["时", " hours"]
- name: replace
args: ["分", "minutes"]
- name: append
args: " ago"
- name: timeago
date_added:
# time added
selector: td:nth-child(4):contains("-")
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:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_2up: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_30pctdown: 0.3
img.pro_70pctdown: 0.7
"*": 1
uploadvolumefactor:
case:
img.pro_2up: 2
img.pro_free2up: 2
"*": 1
minimumratio:
text: 0.7
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP Standard v1.0 Beta 2

View File

@@ -1,179 +0,0 @@
---
id: racing4everyone-api
name: Racing4Everyone (API)
description: "Racing4Everyone (R4E) is a Private Torrent Tracker for RACING"
language: en-US
type: private
encoding: UTF-8
links:
- https://racing4everyone.eu/
legacylinks:
- https://racing4everyone.jp/
caps:
categorymappings:
- {id: 1, cat: TV/Sport, desc: "BTCC"}
- {id: 2, cat: TV/Sport, desc: "TV-Documentaries"}
- {id: 3, cat: TV/Sport, desc: "DTM"}
- {id: 22, cat: TV/Sport, desc: "Formula 2"}
- {id: 23, cat: TV/Sport, desc: "Formula E"}
- {id: 24, cat: TV/Sport, desc: "Misc"}
- {id: 25, cat: TV/Sport, desc: "Other Bikes"}
- {id: 26, cat: TV/Sport, desc: "MotoGP-2-3-E"}
- {id: 31, cat: TV/Sport, desc: "Nascar"}
- {id: 32, cat: TV/Sport, desc: "Stock Car Brazil"}
- {id: 50, cat: TV/Sport, desc: "WRC"}
- {id: 55, cat: TV/Sport, desc: "Season Reviews"}
- {id: 56, cat: TV/Sport, desc: "WRX"}
- {id: 57, cat: TV/Sport, desc: "WEC"}
- {id: 58, cat: TV/Sport, desc: "W Series"}
- {id: 60, cat: TV/Sport, desc: "Drag Racing"}
- {id: 61, cat: TV/Sport, desc: "ERC"}
- {id: 62, cat: TV/Sport, desc: "Indycar Series"}
- {id: 63, cat: TV/Sport, desc: "Supercars"}
- {id: 66, cat: TV/Sport, desc: "Documentaries"}
- {id: 67, cat: TV/Sport, desc: "Formula 1"}
- {id: 68, cat: TV/Sport, desc: "Formula 3"}
- {id: 69, cat: TV/Sport, desc: "Other Cars"}
- {id: 70, cat: TV/Sport, desc: "Motorsport Movies"}
- {id: 71, cat: TV/Sport, desc: "WSBK"}
- {id: 72, cat: TV/Sport, desc: "AMA Pro Motocross"}
- {id: 73, cat: TV/Sport, desc: "AMA Supercross"}
- {id: 74, cat: TV/Sport, desc: "WTCR"}
- {id: 76, cat: TV/Sport, desc: "ARCA"}
- {id: 77, cat: TV/Sport, desc: "Blancpain GT"}
- {id: 78, cat: TV/Sport, desc: "Porsche Supercup"}
- {id: 79, cat: TV/Sport, desc: "TV Series"}
- {id: 80, cat: TV/Sport, desc: "Touring Cars"}
- {id: 81, cat: TV/Sport, desc: "Extreme E"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
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://racing4everyone.eu/\" target=\"_blank\">Racing4Everyone</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
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
- name: info_activity
type: info
label: Account Inactivity
default: "After 6 months without any log in or usage of your account, it will be pruned and can only be reactivated by a staff member. Make sure to keep your account active and do not use programs to keep your account active, as your account may still get pruned."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
categorydesc:
selector: category
title:
selector: name
details:
selector: details_link
download:
selector: download_link
poster:
selector: poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
files:
selector: num_file
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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
case:
0: 1 # normal
1: 2 # double
minimumratio:
text: 1.0
# json UNIT3D 6.0.4

View File

@@ -1,192 +0,0 @@
---
id: redbits-api
name: RedBits (API)
description: "RedBits is a SPANISH site for classic content"
language: es-ES
type: private
encoding: UTF-8
links:
- https://redbits.xyz/
legacylinks:
- https://red-bits.com/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Películas"}
- {id: 2, cat: TV, desc: "Series"}
- {id: 10, cat: TV, desc: "Series Completas"}
- {id: 6, cat: TV/Documentary, desc: "Documentales"}
- {id: 7, cat: TV/Sport, desc: "Deportes"}
- {id: 8, cat: Movies, desc: "Hagbard"}
- {id: 9, cat: Movies, desc: "Studio Ghibli"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
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://redbits.xyz/\" target=\"_blank\">RedBits</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
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
- name: info_activity
type: info
label: Account Inactivity
default: "Not entering in a month leads to the account being deactivated or banned. If the account does not register downloads in a month, it will be banned with the User rank, the other ranks will be given a time determined by the staff."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ 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_vose:
selector: name:contains(VOSE)
optional: true
filters:
- name: append
args: " English" # Add english to fix Sonarr/Radarr language
title_notvose:
selector: name:not(:contains(VOSE))
optional: true
filters:
- name: append
args: " Spanish" # Add spanish to fix Sonarr/Radarr language
title:
text: "{{ if .Result.title_vose }}{{ .Result.title_vose }}{{ else }}{{ .Result.title_notvose }}{{ end }}"
filters:
- name: re_replace
args: ["(?i)bdfull", "BluRay"] # BDfull -> BluRay
- name: re_replace
args: ["(?i)RedBits", ""] # Delete RedBits
- name: re_replace
args: ["\\[|\\]", " "]
- name: re_replace
args: [" ", " "]
- name: re_replace
args: ["(?i)T(\\d{1,2})\\b", "S$1"]
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)^None$", ""]
- name: re_replace
args: ["(?i)(Película de TV)", "Película_de_TV"]
- name: re_replace
args: ["(?i)(Ciencia ficción)", "Ciencia_ficción"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .Result.genre }}"
files:
selector: num_file
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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
case:
0: 1 # normal
1: 2 # double
minimumseedtime:
# 4 days (as seconds = 4 x 24 x 60 x 60)
text: 345600
# json UNIT3D 6.4.1

View File

@@ -1,171 +0,0 @@
---
id: reelflix-api
name: ReelFLiX (API)
description: "ReelFLiX (HD4Free,LegacyHD) is a Private Torrent Tracker for HD MOVIES"
language: en-US
type: private
encoding: UTF-8
links:
- https://reelflix.xyz/
legacylinks:
- https://legacyhd.org/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movie"}
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://reelflix.xyz/\" target=\"_blank\">ReelFlix</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: "To avoid your account being disabled, you must login at least once every 90 days OR have a .torrent actively announcing to the tracker. Please be aware! If you are using any form of automation and it has been 90+ days since your last login, and your client stops seeding, your account will be immediately disabled at midnight UTC if you don't login or resume seeding. There is no 90-day grace period if seeding stops; only logging into the site counts. It is always a good idea to periodically login to check the status of your account."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free[]=100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
minimumratio:
text: 1.0
# json UNIT3D 8.0.2

File diff suppressed because it is too large Load Diff

View File

@@ -1,161 +0,0 @@
---
id: satclubbing
name: SATClubbing
description: "SATClubbing is a RUSSIAN/ENGLISH Private Torrent Tracker for ELECTRONIC MUSIC"
language: en-US
type: private
encoding: UTF-8
links:
- https://satclubbing.club/
caps:
categorymappings:
- {id: 23, cat: Audio, desc: "Albums - Trance"}
- {id: 34, cat: Audio, desc: "Singles - Trance"}
- {id: 24, cat: Audio, desc: "Livesets - Trance"}
- {id: 30, cat: Audio, desc: "Albums - House"}
- {id: 25, cat: Audio, desc: "Singles - House"}
- {id: 32, cat: Audio, desc: "Livesets - House"}
- {id: 18, cat: Audio, desc: "Albums - Techno"}
- {id: 29, cat: Audio, desc: "Singles - Techno"}
- {id: 21, cat: Audio, desc: "Livesets - Techno"}
- {id: 35, cat: Audio, desc: "Albums - Hardstyle"}
- {id: 20, cat: Audio, desc: "Singles - Hardstyle"}
- {id: 28, cat: Audio, desc: "Livesets - Hardstyle"}
- {id: 22, cat: Audio, desc: "Albums - Goa/Psy"}
- {id: 33, cat: Audio, desc: "Singles - Goa/Psy"}
- {id: 26, cat: Audio, desc: "Livesets - Goa/Psy"}
- {id: 31, cat: Audio, desc: "Beat/Breaks"}
- {id: 40, cat: Audio, desc: "Electronic"}
- {id: 42, cat: Audio, desc: "Albums - Drum and Bass"}
- {id: 43, cat: Audio, desc: "Singles - Drum and Bass"}
- {id: 44, cat: Audio, desc: "Livesets - Drum and Bass"}
- {id: 45, cat: Audio, desc: "Albums - Dance"}
- {id: 46, cat: Audio, desc: "Singles - Dance"}
- {id: 36, cat: Audio, desc: "Unreleased Tracks"}
- {id: 41, cat: Audio, desc: "Bass"}
- {id: 39, cat: Audio, desc: "Ambient / Chill"}
- {id: 27, cat: Other, desc: "Music Plugins/Apps/Misc"}
- {id: 19, cat: Audio/Video, desc: "DVD/Video/Clips"}
- {id: 38, cat: Audio, desc: "SCMT Pack"}
- {id: 47, cat: Audio, desc: "Albums - Hardcore"}
- {id: 48, cat: Audio, desc: "Singles - Hardcore"}
- {id: 49, cat: Audio, desc: "Livesets - Hardcore"}
- {id: 50, cat: Audio, desc: "Rave"}
- {id: 51, cat: Audio, desc: "Acid"}
- {id: 52, cat: Audio, desc: "Dubstep"}
modes:
search: [q]
music-search: [q, artist]
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 options.
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: div.error
test:
path: /
selector: a[href="logout.php"]
search:
paths:
# https://satclubbing.club/browse.php?search=&cat=0&incldead=1&age=0&quality=0&c23=1&c34=1
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ if .Query.Artist }}{{ .Query.Artist }}{{ else }}{{ .Keywords }}{{ end }}"
# 0 active, 1 incldead, 2 onlydead, 3 freeleech, 4 seedless
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
# 0 any, 1 fresh, 2 classic, 3 not classic
age: 0
# 0 any, 320 mp3 cbr, 1000 mp3 vbr, 2000 lossless
quality: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table > tbody > tr > td.index > table.embedded[cellspacing="0"][cellpadding="5"][width="100%"] > tbody > tr:has(a[href^="details.php?id="])
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?id="]
attribute: href
date:
selector: td:last-child
filters:
- name: replace
args: ["added ", ""]
- name: timeago
files:
selector: a[href$="filelist=1"]
size:
selector: td:has(a[href$="filelist=1"]) + td + td
seeders_optional:
selector: a[href$="toseeders=1"]
optional: true
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
selector: td:has(a[href$="toseeders=1"])
optional: true
filters:
- name: split
args: ["|", 1]
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
downloadvolumefactor:
case:
img[src$="pic/free_icon.gif"]: 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 0.60
# engine n/a

View File

@@ -1,212 +0,0 @@
---
id: shareisland-api
name: Shareisland (API)
description: "A general italian tracker"
language: it-IT
type: private
encoding: UTF-8
links:
- https://shareisland.org/
legacylinks:
- http://shareisland.org/
- http://www.shareisland.org/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movie"}
- {id: 2, cat: TV, desc: "Serie TV"}
- {id: 15, cat: Books/EBook, desc: "Ebook"}
- {id: 17, cat: Books/Mags, desc: "Riviste e Giornali"}
- {id: 19, cat: XXX, desc: "XXX"}
- {id: 3, cat: Audio, desc: "Music"}
- {id: 7, cat: PC/Games, desc: "Games"}
- {id: 23, cat: PC, desc: "Software"}
- {id: 24, cat: TV/Sport, desc: "EVENTI SPORTIVI"}
- {id: 25, cat: Other, desc: "Misc"}
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://shareisland.org/\" target=\"_blank\">Shareisland</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: "After 60 days of no activity, your account will be automatically deleted."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- 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
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free[]=100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
# strip season and/or ep
- name: re_replace
args: ["\\b([SE]\\d{1,4}){1,2}\\b", ""]
- name: diacritics
args: replace
- 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 }}"
filters:
- name: re_replace # replace special characters with " " (space)
args: ["[\\[!\"#$%&'()*+,\\-.\\/:;<=>?@[\\]^_`{|}~]", " "]
- name: diacritics
args: replace
- name: re_replace # replace multiple spaces
args: ["[ ]{2,}", " "]
# normalize to SXXEYY format
- name: re_replace # S01 E01 to S01E01
args: ["(?i)\\bS(\\d+)\\sE(\\d+)\\b", "S$1E$2"]
- name: re_replace # 01x01 to S01E01
args: ["(?i)(\\d{2})x(\\d+)", "S$1E$2"]
- name: re_replace # 1x01 to S01E01
args: ["(?i)\\b(\\d{1})x(\\d+)", "S0$1E$2"]
- name: re_replace # Stagione X --> S0X
args: ["(?i)\\bStagion[ei]\\s?(\\d{1})\\b|\\bSeason'?s?\\s?(\\d{1})\\b", "S0$1$2"]
- name: re_replace # Stagione XX --> SXX
args: ["(?i)\\bStagion[ei]\\s?(\\d{2,})\\b|\\bSeason'?s?\\s?(\\d{2,})\\b", "S$1$2"]
- name: re_replace # Episodio 4 to E4
args: ["(?i)\\b(?:[\\/\\|]?Episodio\\s?(\\d+)|Puntata\\s?(\\d+))", "E$1$2"]
- name: re_replace # Episodi 4 5 to E04-05
args: ["(?i)\\b(?:Puntate\\s*)(\\d+)\\s?(\\d+)", "E0$1-0$2"]
- name: re_replace # rimozioni varie
args: ["(?i)(Serie completa|Completat?a?|in pausa)", ""]
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)(televisione film)", "televisione_film"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .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
downloadvolumefactor:
# 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
uploadvolumefactor:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
# minimumratio:
# text: 0.4
minimumseedtime:
# 6 day (as seconds = 6 x 24 x 60 x 60)
text: 518400
# json UNIT3D 8.0.2 (custom)

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