Compare commits

...

10 Commits

945 changed files with 164235 additions and 6243 deletions
+1
View File
@@ -0,0 +1 @@
.idea
+23 -14
View File
@@ -10,27 +10,36 @@ curl https://raw.githubusercontent.com/Dark-Alex-17/managarr-demo/main/managarr-
**Note**: This script will only work on systems with `bash` installed.
## Running the demo
To run this demo, simply run the following command:
To run this demo, simply run the [demo script](./managarr-demo.sh):
```shell
docker compose up --rm managarr && docker compose down
```
## Cleanup
This demo will download a handful of docker images. To clean up after this demo, run the following command:
```shell
docker image rm darkalex17/managarr &&\
docker image rm lscr.io/linuxserver/radarr &&\
docker image rm lscr.io/linuxserver/prowlarr &&\
rm -rf /tmp/managarr-demo &&\
rm -rf /tmp/managarr-demo.sh
./managarr-demo.sh
```
## Limitations
This demo has no download functionality. It is an eventual goal to have a mock API for one of the BitTorrent clients like Transmission
to emulate this functionality for a full demo experience.
## Building
To build and push both the [prowlarr](./prowlarr.Dockerfile) and [radarr](./radarr.Dockerfile) images, it is easiest to just use the [build script](./build.sh):
```shell
./build.sh
```
## Running directly with docker compose
If you wish to run the demo directly from the [docker-compose.yml](./docker-compose.yml),
you can either run it simply with
```shell
docker compose run --rm managarr
```
which will use the [default managarr configuration file](./mock-htpc/managarr/config.yml), or you can specify it manually with the `MANAGARR_CONFIG` environment variable:
```shell
MANAGARR_CONFIG=/tmp/managarr.yml docker compose run --rm managarr
```
## Creator
* [Alex Clarke](https://github.com/Dark-Alex-17)
Executable
+9
View File
@@ -0,0 +1,9 @@
#!/bin/bash
docker build -f radarr.Dockerfile -t darkalex17/radarr-mock:latest .
docker push darkalex17/radarr-mock:latest
docker build -f sonarr.Dockerfile -t darkalex17/sonarr-mock:latest .
docker push darkalex17/sonarr-mock:latest
docker build -f prowlarr.Dockerfile -t darkalex17/prowlarr-mock:latest .
docker push darkalex17/prowlarr-mock:latest
+12 -24
View File
@@ -1,32 +1,18 @@
---
services:
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- ./mock-htpc/movies:/movies
- ./mock-htpc/films:/films
- ./mock-htpc/downloads:/downloads
- ./mock-htpc/radarr:/config
ports:
- 7878:7878
image: darkalex17/radarr-mock:latest
container_name: radarr-mock
restart: unless-stopped
sonarr:
image: darkalex17/sonarr-mock:latest
container_name: sonarr-mock
restart: unless-stopped
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- ./mock-htpc/prowlarr:/config
ports:
- 9696:9696
image: darkalex17/prowlarr-mock:latest
container_name: prowlarr-mock
restart: unless-stopped
managarr:
@@ -34,9 +20,11 @@ services:
stdin_open: true
tty: true
volumes:
- ./mock-htpc/managarr:/root/.config/managarr/
- "${MANAGARR_CONFIG:-./mock-htpc/managarr/config.yml}:/root/.config/managarr/config.yml:ro"
depends_on:
radarr:
condition: service_started
sonarr:
condition: service_started
prowlarr:
condition: service_started
+24 -8
View File
@@ -1,21 +1,37 @@
#!/bin/bash
DEMO_TEMP_DIR=/tmp/managarr-demo
DEMO_TEMP_COMPOSE_FILE=/tmp/docker-compose.yml
DEMO_TEMP_CONFIG_FILE=/tmp/config.yml
cleanup() {
docker compose -f "$DEMO_TEMP_COMPOSE_FILE" down
docker rmi -f $(docker images | grep "darkalex17" | awk '{print $3}')
rm -rf "$DEMO_TEMP_COMPOSE_FILE"
rm -rf "$DEMO_TEMP_CONFIG_FILE"
rm -rf /tmp/managarr-demo.sh
}
fail() {
result=$?
cleanup
if [ "$result" != "0" ]; then
echo "Fail to run the Managarr demo"
echo "Failed to run the Managarr demo"
fi
exit $result
}
main() {
[ -f "$DEMO_TEMP_COMPOSE_FILE" ] || curl https://raw.githubusercontent.com/Dark-Alex-17/managarr-demo/main/docker-compose.yml > "$DEMO_TEMP_COMPOSE_FILE"
[ -f "$DEMO_TEMP_CONFIG_FILE" ] || curl https://raw.githubusercontent.com/Dark-Alex-17/managarr-demo/main/mock-htpc/managarr/config.yml > "$DEMO_TEMP_CONFIG_FILE"
MANAGARR_CONFIG="$DEMO_TEMP_CONFIG_FILE" docker compose -f "$DEMO_TEMP_COMPOSE_FILE" run --rm managarr
cleanup
}
trap "fail" EXIT
set -e
main
[ -d "$DEMO_TEMP_DIR" ] || git clone git@github.com:Dark-Alex-17/managarr-demo.git "$DEMO_TEMP_DIR"
docker compose -f "$DEMO_TEMP_DIR/docker-compose.yml" run --rm managarr &&\
docker compose -f "$DEMO_TEMP_DIR/docker-compose.yml" down &&\
docker image rm darkalex17/managarr &&\
rm -rf /tmp/managarr-demo.sh
+9 -3
View File
@@ -1,5 +1,11 @@
---
radarr:
host: radarr
port: 7878
api_token: 2374332474216e6720407021206b6579
- name: Movies
host: radarr-mock
port: 7878
api_token: 2374332474216e6720407021206b6579
sonarr:
- name: TV Shows
host: sonarr-mock
port: 8989
api_token: 08717304eb94465f81c5129bb46cc2f9
+3 -3
View File
@@ -15,12 +15,12 @@ caps:
- {id: 10, cat: Movies, desc: "Фильмы (Movies)"}
- {id: 16, cat: Movies/HD, desc: "HD / Фильмы (HD / Movies)"}
- {id: 30, cat: TV/HD, desc: "HD / Сериалы (HD / TV Shows)"}
- {id: 27, cat: TV/HD, desc: "HD / Мультфильмы (HD / Cartoons)"}
- {id: 27, cat: Movies/HD, desc: "HD / Мультфильмы (HD / Cartoons)"}
- {id: 17, cat: PC/Games, desc: "Игры / ПК (Games / PC)"}
- {id: 14, cat: Audio, desc: "Музыка / Аудио (Music / Audio)"}
- {id: 29, cat: TV, desc: "Мультсериалы (TV Series)"}
- {id: 11, cat: TV, desc: "Мультфильмы (Cartoons)"}
- {id: 28, cat: TV/HD, desc: "HD / Документальное (HD / Documentary)"}
- {id: 11, cat: Movies, desc: "Мультфильмы (Cartoons)"}
- {id: 28, cat: TV/Documentary, desc: "HD / Документальное (HD / Documentary)"}
- {id: 18, cat: PC/0day, desc: "Софт / Windows (Software / Windows)"}
- {id: 19, cat: TV, desc: "TV / Сериалы (TV shows)"}
- {id: 31, cat: Other, desc: "Прочее (Other)"}
+2 -2
View File
@@ -6,12 +6,12 @@ language: en-US
type: public
encoding: UTF-8
links:
- https://0magnet.co/
- https://13mag.net/
- https://16mag.net/
legacylinks:
- https://0magnet.com/
- https://9mag.net/
- https://0magnet.co/
caps:
categories:
@@ -42,7 +42,7 @@ search:
paths:
- path: search
inputs:
q: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}"
q: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}.{{ end }}"
rows:
selector: table > tbody > tr:has(td)
+25 -29
View File
@@ -6,40 +6,27 @@ language: en-US
type: public
encoding: UTF-8
requestDelay: 2
# get status and news on domains at the official site https://1337x-status.org/
links:
- https://1337x.to/
- https://1337x.st/
- https://x1337x.ws/
- https://x1337x.eu/
- https://x1337x.se/
- https://1337x.so/
- https://1337x.unblockit.africa/
- https://1337x.unblockninja.com/
- https://1337x.ninjaproxy1.com/
- https://1337x.proxyninja.org/
- https://1337x.torrentbay.st/
- https://x1337x.cc/
legacylinks:
- https://1337x.is/
- https://1337x.gd/
- https://1337x.nocensor.lol/
- https://1337x.unblockit.ink/
- https://1337x.nocensor.art/
- https://1337x.unblockit.bio/
- https://1337x.unblockit.boo/
- https://1337x.mrunblock.guru/
- https://1337x.mrunblock.life/
- https://1337x.unblockit.click/
- https://1337x.unblockit.asia/
- https://1337x.unblockit.mov/
- https://1337x.unblockit.rsvp/
- https://1337x.unblockit.vegas/
- https://1337x.unblockit.esq/
- https://1337x.unblockit.zip/
- https://1337x.unblockit.foo/
- https://1337x.unblockit.ing/
- https://1337x.mrunblock.bond/
- https://1337x.unblockit.date/
- https://1337x.unblockit.dad/
- https://1337x.abcproxy.org/
- https://1337x.so/
- https://1337x.unblockit.download/
- https://1337x.unblockninja.com/ # keyword search not working
- https://1337x.ninjaproxy1.com/ # keyword search not working
- https://1337x.proxyninja.org/ # keyword search not working
- https://1337x.proxyninja.net/ # keyword search not working
- https://1337x.torrentbay.st/ # keyword search not working
- https://1337x.torrentsbay.org/ # keyword search not working
- https://x1337x.se/
caps:
categorymappings:
@@ -133,10 +120,15 @@ caps:
allowrawsearch: true
settings:
- name: flaresolverr
- name: uploader
type: text
label: Filter by Uploader
- name: info_uploader
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.
label: About filtering by Uploader
default: "You can filter by Uploader by entering a Case Sensitive username, or leave empty to get all results.<br>Note: this is the username of the Uploader and not the Groupname that often show up at the end of 1337x titles, eg -GalaxyRG."
- name: info_flaresolverr
type: info_flaresolverr
- name: downloadlink
type: select
label: Download link
@@ -192,7 +184,7 @@ search:
args: ["\\bS(20\\d{2})\\b", "$1"]
rows:
selector: tr:has(a[href^="/torrent/"])
selector: "tr:has(a[href^=\"/torrent/\"]){{ if .Config.uploader }}:has(td[class^=\"coll-5\"]:contains({{ .Config.uploader }})){{ else }}{{ end }}"
fields:
title_default:
@@ -288,6 +280,10 @@ search:
selector: td[class^="coll-2"]
leechers:
selector: td[class^="coll-3"]
_username:
selector: td[class^="coll-5"]
description:
text: "Uploader: {{ .Result._username }}"
downloadvolumefactor:
text: 0
uploadvolumefactor:
+185
View File
@@ -0,0 +1,185 @@
---
id: 13city
name: 13City
description: "13City is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://13city.org/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "电影/Movies"}
- {id: 402, cat: TV, desc: "电视剧/TVSeries"}
- {id: 403, cat: TV, desc: "综艺/TV Shows"}
- {id: 405, cat: TV/Anime, desc: "动漫/Animations"}
- {id: 406, cat: Audio/Video, desc: "演唱会、MV/Music Videos"}
- {id: 408, cat: Audio, desc: "音乐/Music"}
- {id: 409, cat: Books/EBook, desc: "电子书/E-book"}
- {id: 409, cat: Audio/Audiobook, desc: "有声读物/A-book"}
- {id: 413, cat: TV/Documentary, desc: "纪录片/Documentary"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
music-search: [q]
book-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Account retention rules:<ol><li>If there is no valid traffic within 7 days of registration (participation in the calculation of sharing rate), the account will be blocked</li><li>After the level is reduced to \"Peasant\", if the sharing rate is not improved within 7 days, the account will be blocked</li><li>Long-term non-login:<ul>- UnParked account: 60 consecutive days of non-login → banned</ul><ul>- Parked account: 180 consecutive days of non-login → banned</ul><ul>- Nexus Master and above levels are not subject to long-term non-login ban restrictions</ul></li></ol>"
login:
# using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}"
# 0 incldead, 1 active, 2 dead
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl
search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
# 0 AND, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(a[href^="download.php?id="])
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title:
selector: a[title][href^="details.php?id="]
attribute: title
optional: true
default: "{{ .Result.title_default }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: img[data-src]
attribute: data-src
imdbid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="movie.douban.com/subject/"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 2.0
minimumseedtime:
# 1 day (as seconds = 24 x 60 x 60)
text: 86400
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.9.10 2025-10-30
+42 -14
View File
@@ -5,29 +5,48 @@ description: "1ptbar is a CHINESE Private Torrent Tracker for MOVIES / TV / E-LE
language: zh-CN
type: private
encoding: UTF-8
requestDelay: 2
links:
- https://1ptba.com/
caps:
# dont forget to update the path categories in the search block
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/软件"}
- {id: 401, cat: Movies, desc: "Movie(電影)", 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/Anime, desc: "Animations(卡通動漫)", default: true}
- {id: 406, cat: Audio/Video, desc: "Music Videos(音樂短片/演唱會)", default: true}
- {id: 407, cat: TV/Sport, desc: "Sports(體育賽事)", default: true}
- {id: 408, cat: Audio, desc: "HQ Audio(高品质音频)", default: true}
- {id: 410, cat: PC/0day, desc: "Software(軟體)", default: true}
- {id: 411, cat: PC/Games, desc: "Games(電子遊戲)", default: true}
- {id: 412, cat: Books/EBook, desc: "eBook(電子書)", default: true}
- {id: 409, cat: Other, desc: "Misc(其他)", default: true}
- {id: 610, cat: XXX/x264, desc: "AV(有碼)/HD Censored", default: false}
- {id: 611, cat: XXX/x264, desc: "AV(無碼)/HD Uncensored", default: false}
- {id: 612, cat: XXX/SD, desc: "AV(有碼)/SD Censored", default: false}
- {id: 613, cat: XXX/SD, desc: "AV(無碼)/SD Uncensored", default: false}
- {id: 614, cat: XXX/DVD, desc: "AV(無碼)/DVDiSo Uncensored", default: false}
- {id: 615, cat: XXX/DVD, desc: "AV(有碼)/DVDiSo Censored", default: false}
- {id: 616, cat: XXX/UHD, desc: "AV(有碼)/Blu-Ray Censored", default: false}
- {id: 617, cat: XXX/UHD, desc: "AV(無碼)/Blu-Ray Uncensored", default: false}
- {id: 618, cat: XXX/Pack, desc: "AV(網站)/0Day", default: false}
- {id: 619, cat: XXX/Pack, desc: "IV(寫真影集)/Video Collection", default: false}
- {id: 620, cat: XXX/ImageSet, desc: "IV(寫真圖集)/Picture Collection", default: false}
- {id: 621, cat: XXX/Other, desc: "H-Game(遊戲)", default: false}
- {id: 622, cat: XXX/Other, desc: "H-Anime(動畫)", default: false}
- {id: 623, cat: XXX/Other, desc: "H-Comic(漫畫)", default: false}
- {id: 624, cat: XXX/Other, desc: "Adult film(成人電影)", default: false}
- {id: 625, cat: XXX/Other, desc: "AV(Gay)/HD", 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
@@ -63,6 +82,8 @@ settings:
options:
desc: desc
asc: asc
- name: info_flaresolverr
type: info_flaresolverr
- name: info_tpp
type: info
label: Results Per Page
@@ -70,7 +91,11 @@ settings:
- 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 packed (at User CP).</li><li>Packed accounts would be deleted if users have not logged in for more than 400 days in a row.</li><li>Unpacked 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>"
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>"
- name: info_special
type: info
label: Special Categories
default: "Only <b>Power User</b> or above can view Special section. Searching for XXX categories by users below this class will result in search errors."
login:
path: login.php
@@ -98,6 +123,9 @@ login:
search:
paths:
- path: torrents.php
categories: [401, 402, 403, 404, 405, 406, 407, 408, 410, 411, 412, 409]
- path: special.php
categories: [610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625]
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 }}"
@@ -193,4 +221,4 @@ search:
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.9 2023-11-15
# NexusPHP v1.9.9 2025-10-02
+26 -40
View File
@@ -18,9 +18,7 @@ caps:
- {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"}
- {id: 409, cat: Other, desc: "Misc"}
modes:
search: [q]
@@ -30,12 +28,11 @@ caps:
book-search: [q]
settings:
- name: username
- name: cookie
type: text
label: Username
- name: password
type: password
label: Password
label: Cookie
- name: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -56,6 +53,8 @@ settings:
options:
desc: desc
asc: asc
- name: info_flaresolverr
type: info_flaresolverr
- name: info_tpp
type: info
label: Results Per Page
@@ -66,23 +65,10 @@ settings:
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
# using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php
method: cookie
inputs:
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)
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="logout.php"]
@@ -99,7 +85,7 @@ search:
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
# 0 AND, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
@@ -110,23 +96,23 @@ search:
fields:
category:
selector: a[href^="?cat="]
selector: a[href*="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
selector: a[href*="details.php?id="]
title:
selector: a[title][href^="details.php?id="]
selector: a[title][href*="details.php?id="]
attribute: title
optional: true
default: "{{ .Result.title_default }}"
details:
selector: a[href^="details.php?id="]
selector: a[href*="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
selector: a[href*="download.php?id="]
attribute: href
poster:
selector: img[data-src]
@@ -136,7 +122,7 @@ search:
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(5) > span[title]
selector: td.rowfollow:nth-child(4) > span[title]
attribute: title
optional: true
filters:
@@ -146,7 +132,7 @@ search:
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(5):not(:has(span))
selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
@@ -156,13 +142,13 @@ search:
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(6)
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow:nth-child(7)
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(8)
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(9)
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
@@ -178,9 +164,9 @@ search:
img.pro_2up: 2
"*": 1
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# 5 days (as seconds = 5 x 24 x 60 x 60)
text: 432000
description:
selector: td:nth-child(3)
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP 3ChangTrai v3.0 2020-04-30
# NexusPHP v1.9.9 2025-10-02
@@ -18,8 +18,10 @@ caps:
- {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: 22, cat: Movies, desc: "Movies Home Conversions"}
- {id: 32, cat: Movies, desc: "Movies Bluray MKV Remux"}
- {id: 38, cat: Movies, desc: "Movies Studio Conversion"}
- {id: 39, cat: Movies/3D, desc: "Movies VR 360"}
- {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"}
@@ -69,6 +71,10 @@ settings:
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."
- name: info_captcha
type: info
label: About Captcha
default: "Note that the captcha on the 3Dtorrents login page is Case Sensitive."
login:
path: index.php?page=login
+118
View File
@@ -0,0 +1,118 @@
---
id: 52bt
name: 52BT
description: "52BT is a CHINESE Public tracker for MOVIES / TV / MUSIC / GENERAL"
language: zh-CN
type: public
encoding: UTF-8
requestDelay: 2
links:
# Send any content to 52btbtbt@gmail.com to get the latest address. or visit https://52btbt.icu/
- https://www.529069.xyz/
- https://www.529067.xyz/
legacylinks:
- https://www.529052.xyz/
- https://www.529053.xyz/
- https://www.529055.xyz/
- https://www.529057.xyz/
- https://www.529056.xyz/
- https://www.529058.xyz/
- https://www.52bt059.buzz/
- https://www.529060.xyz/
- https://www.529061.xyz/
- https://www.529059.xyz/
- https://www.529062.xyz/
- https://www.529063.xyz/
- https://www.529064.xyz/
- https://www.529066.xyz/
- https://www.529065.xyz/
- https://www.529068.xyz/
caps:
categorymappings:
- {id: 影视, cat: TV, desc: 影视}
- {id: 影视, cat: Movies, desc: 影视}
- {id: 音乐, cat: Audio, desc: 音乐}
- {id: 图像, cat: Other, desc: 图像}
- {id: 文档书籍, cat: Books, desc: 文档书籍}
- {id: 压缩文件, cat: Other, desc: 压缩文件}
- {id: 安装包, cat: PC, desc: 安装包}
- {id: 其他, cat: Other, desc: 其他}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: cat-id
type: select
label: Category
default: 0
options:
0: All categories
1: Film and Television
2: Music
3: Images
4: Books
5: Zip Files
6: Software
7: Other
- name: sort
type: select
label: Sort requested from site
default: 2
options:
2: created
1: size
0: relevance
- name: info_flaresolverr
type: info_flaresolverr
search:
paths:
- path: "search-{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}-{{ .Config.cat-id }}-{{ .Config.sort }}-1.html"
- path: "search-{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}-{{ .Config.cat-id }}-{{ .Config.sort }}-2.html"
error:
- selector: :root:contains("Internal Server Error")
rows:
selector: div.ssbox
fields:
categorydesc:
selector: div.title > h3 > span
filters:
- name: re_replace
args: ["([\\[\\]]+)", ""]
title:
selector: a[href^="/hash/"]
details:
selector: a[href^="/hash/"]
attribute: href
infohash:
selector: a[href^="magnet:?xt="]
attribute: href
filters:
- name: regexp
args: ([A-F|a-f|0-9]{40})
date:
selector: div.sbar > span:contains("添加时间:") > b
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd zzz"
size:
selector: div.sbar > span:contains("大小:") > b
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a
+1 -1
View File
@@ -173,7 +173,7 @@ search:
img.pro_2up: 2
"*": 1
minimumratio:
text: 1
text: 1.1
minimumseedtime:
# 1 day (as seconds = 24 x 60 x 60)
text: 86400
@@ -1,7 +1,7 @@
---
id: Bittorrentfiles
name: Bittorrentfiles
description: "Bittorrentfiles is a Private GERMAN tracker"
description: "Bittorrentfiles is a Private GERMAN Torrent Tracker for MOVIES / TV / GENERAL"
language: de-DE
type: private
encoding: UTF-8
@@ -208,7 +208,7 @@ search:
- name: replace
args: ["Gestern", "Yesterday"]
- name: append
args: " +01:00" # CET
args: "+01:00" # CET
date_year:
# 30.02.2018 23:12:50
selector: td:nth-child(10):contains("."):contains(":")
@@ -217,7 +217,7 @@ search:
- name: split
args: ["b", 0]
- name: append
args: " +01:00" # CET
args: "+01:00" # CET
- name: dateparse
args: "dd.MM.yyyy HH:mm:ss zzz"
date:
+1 -1
View File
@@ -1,7 +1,7 @@
---
id: abnormal
name: Abnormal
description: "General French Private Tracker"
description: "ABNormal (ABN) is a FRENCH Private Torrent Tracker for MOVIES / TV / GENERAL"
language: fr-FR
type: private
encoding: UTF-8
+58 -52
View File
@@ -1,82 +1,86 @@
---
id: abtorrents
replaces:
- audiobooktorrents
name: ABtorrents
description: "ABtorrents (ABT) is a Private Torrent Tracker for AUDIOBOOKS"
language: en-US
type: private
encoding: UTF-8
links:
- https://usefultrash.net/
legacylinks:
- https://abtorrents.me/
- https://abtorrents.xyz/
caps:
categorymappings:
- {id: 10, cat: Audio/Audiobook, desc: "Action/Adventure"}
- {id: 20, cat: Audio/Audiobook, desc: "Biography/Memoirs"}
- {id: 30, cat: Audio/Audiobook, desc: "Business "}
- {id: 10, cat: Audio/Audiobook, desc: "Action & Adventure"}
- {id: 80, cat: Audio/Audiobook, desc: "Adult & Erotica"}
- {id: 20, cat: Audio/Audiobook, desc: "Biography & Memoirs"}
- {id: 30, cat: Audio/Audiobook, desc: "Business"}
- {id: 40, cat: Audio/Audiobook, desc: "Childrens"}
- {id: 50, cat: Audio/Audiobook, desc: "Humor (Comedy)"}
- {id: 60, cat: Audio/Audiobook, desc: "Comics"}
- {id: 70, cat: Audio/Audiobook, desc: "Computers "}
- {id: 80, cat: Audio/Audiobook, desc: "Adult/Erotica"}
- {id: 70, cat: Audio/Audiobook, desc: "Computers"}
- {id: 260, cat: Audio/Audiobook, desc: "Crime & Thriller"}
- {id: 90, cat: Audio/Audiobook, desc: "Fantasy-General"}
- {id: 100, cat: Audio/Audiobook, desc: "Fantasy-Youth"}
- {id: 110, cat: Audio/Audiobook, desc: "Files"}
- {id: 120, cat: Audio/Audiobook, desc: "Foreign Language"}
- {id: 130, cat: Audio/Audiobook, desc: "General Fiction"}
- {id: 140, cat: Audio/Audiobook, desc: "Historical Fiction"}
- {id: 150, cat: Audio/Audiobook, desc: "History"}
- {id: 160, cat: Audio/Audiobook, desc: "Horror"}
- {id: 50, cat: Audio/Audiobook, desc: "Humor (Comedy)"}
- {id: 170, cat: Audio/Audiobook, desc: "Literature"}
- {id: 175, cat: Audio/Audiobook, desc: "LitRPG"}
- {id: 180, cat: Audio/Audiobook, desc: "Mystery "}
- {id: 190, cat: Audio/Audiobook, desc: "Non-Fiction"}
- {id: 180, cat: Audio/Audiobook, desc: "Mystery"}
- {id: 215, cat: Audio/Audiobook, desc: "Paranormal Romance"}
- {id: 200, cat: Audio/Audiobook, desc: "Radio Drama"}
- {id: 205, cat: Audio/Audiobook, desc: "Reference & Educational"}
- {id: 207, cat: Audio/Audiobook, desc: "Religion & Spirituality"}
- {id: 210, cat: Audio/Audiobook, desc: "Romance"}
- {id: 220, cat: Audio/Audiobook, desc: "Science"}
- {id: 230, cat: Audio/Audiobook, desc: "Science Fiction "}
- {id: 240, cat: Audio/Audiobook, desc: "Sci-Fi Apocalypse"}
- {id: 220, cat: Audio/Audiobook, desc: "Science"}
- {id: 230, cat: Audio/Audiobook, desc: "Science Fiction"}
- {id: 250, cat: Audio/Audiobook, desc: "Self Improvement"}
- {id: 265, cat: Audio/Audiobook, desc: "Sports & Fitness"}
- {id: 270, cat: Audio/Audiobook, desc: "Suspense"}
- {id: 280, cat: Audio/Audiobook, desc: "Talk Radio"}
- {id: 260, cat: Audio/Audiobook, desc: "Crime/Thriller/Mystery"}
- {id: 290, cat: Audio/Audiobook, desc: "Urban Fantasy"}
- {id: 285, cat: Audio/Audiobook, desc: "Travel"}
- {id: 290, cat: Audio/Audiobook, desc: "Urban Fantasy & Paranormal"}
- {id: 300, cat: Audio/Audiobook, desc: "Western"}
- {id: 400, cat: Books/EBook, desc: "[E] Action/Adventure"}
- {id: 410, cat: Books/EBook, desc: "[E] Adult / Erotica"}
- {id: 310, cat: Audio/Audiobook, desc: "Young Adult"}
- {id: 400, cat: Books/EBook, desc: "[E] Action & Adventure"}
- {id: 410, cat: Books/EBook, desc: "[E] Adult & Erotica"}
- {id: 420, cat: Books/EBook, desc: "[E] Arts & Crafts (Hobbies)"}
- {id: 430, cat: Books/EBook, desc: "[E] Biography/Memoirs"}
- {id: 730, cat: Books/EBook, desc: "[E] Collections"}
- {id: 440, cat: Books/EBook, desc: "[E] Comic Books"}
- {id: 430, cat: Books/EBook, desc: "[E] Biography & Memoirs"}
- {id: 435, cat: Books/EBook, desc: "[E] Business"}
- {id: 720, cat: Books/EBook, desc: "[E] Childrens"}
- {id: 450, cat: Books/EBook, desc: "[E] Computer Learning"}
- {id: 460, cat: Books/EBook, desc: "[E] Cookery"}
- {id: 470, cat: Books/EBook, desc: "[E] Crime/Thriller/Mystery"}
- {id: 470, cat: Books/EBook, desc: "[E] Crime & Thriller"}
- {id: 480, cat: Books/EBook, desc: "[E] Fantasy"}
- {id: 490, cat: Books/EBook, desc: "[E] Forteana"}
- {id: 490, cat: Books/EBook, desc: "[E] Fantasy-Youth"}
- {id: 500, cat: Books/EBook, desc: "[E] General Fiction"}
- {id: 510, cat: Books/EBook, desc: "[E] Historical Fiction"}
- {id: 520, cat: Books/EBook, desc: "[E] History/Documentary"}
- {id: 520, cat: Books/EBook, desc: "[E] History & Documentary"}
- {id: 530, cat: Books/EBook, desc: "[E] Horror"}
- {id: 540, cat: Books/EBook, desc: "[E] Humor (Comedy)"}
- {id: 550, cat: Books/EBook, desc: "[E] LGBT"}
- {id: 560, cat: Books/EBook, desc: "[E] Literary Fiction"}
- {id: 565, cat: Books/EBook, desc: "[E] LitRPG"}
- {id: 570, cat: Books/EBook, desc: "[E] Magazines - all"}
- {id: 580, cat: Books/EBook, desc: "[E] Non-Fiction"}
- {id: 585, cat: Books/EBook, desc: "[E] Other Languages"}
- {id: 570, cat: Books/EBook, desc: "[E] Mystery"}
- {id: 590, cat: Books/EBook, desc: "[E] Paranormal Romance"}
- {id: 600, cat: Books/EBook, desc: "[E] Reference/Educational"}
- {id: 610, cat: Books/EBook, desc: "[E] Religion and Spirituality"}
- {id: 600, cat: Books/EBook, desc: "[E] Reference & Educational"}
- {id: 610, cat: Books/EBook, desc: "[E] Religion & Spirituality"}
- {id: 620, cat: Books/EBook, desc: "[E] Romance"}
- {id: 630, cat: Books/EBook, desc: "[E] Sci-Fi"}
- {id: 640, cat: Books/EBook, desc: "[E] Sci-Fi/Apocalyptic"}
- {id: 640, cat: Books/EBook, desc: "[E] Sci-Fi & Apocalyptic"}
- {id: 645, cat: Books/EBook, desc: "[E] Science"}
- {id: 650, cat: Books/EBook, desc: "[E] Self-Help"}
- {id: 660, cat: Books/EBook, desc: "[E] Sports/Fitness"}
- {id: 660, cat: Books/EBook, desc: "[E] Sports & Fitness"}
- {id: 665, cat: Books/EBook, desc: "[E] Suspense"}
- {id: 670, cat: Books/EBook, desc: "[E] Travel"}
- {id: 680, cat: Books/EBook, desc: "[E] Unsorted"}
- {id: 690, cat: Books/EBook, desc: "[E] Urban Fantasy/Paranormal"}
- {id: 690, cat: Books/EBook, desc: "[E] Urban Fantasy & Paranormal"}
- {id: 700, cat: Books/EBook, desc: "[E] Western"}
- {id: 710, cat: Books/EBook, desc: "[E] Young Adult"}
- {id: 720, cat: Books/EBook, desc: "[E] Young Children"}
modes:
search: [q]
@@ -86,10 +90,8 @@ 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: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -104,7 +106,10 @@ settings:
default: "Account retention rules:<ol><li>Any account that has unread PMs older than 14 days or has not logged in for 30 days will be suspended</li><li>Any account that has not been logged into for 90 days is deemed inactive and will thus be purged</li><li>Any account that has not been logged into for 30 days is deemed inactive and will be put on suspension until User logs in again</li><li>Users stats, points, and history are irrevocably lost when purged</li><li>Logging into the site is the ONLY way to keep an account active</li><li>SEEDING ONLY does NOT constitute site activity.</li></ol>"
login:
# using cookie method because login page simplecaptcha generates Exception: Cannot access child value on Newtonsoft.Json.Linq.JValue.
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href*="logout.php?hash_please="]
@@ -115,26 +120,23 @@ search:
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# title, descr
# title, descr, series, additional_info, author, author, uploader
searchin: title
# 0 active, 1 incldead, 2 onlydead
# 0 active, 1 incldead, 2 onlydead, 3 My Unsatisfied Torrents, 4 My Watch List, 5 My Uploads
incldead: 1
# 1 onlyfree, null all
only_free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
# 0 All Torrents, 1 Only Free Torrents
only_free: "{{ if .Config.freeleech }}1{{ else }}0{{ end }}"
rows:
selector: table.table-striped > tbody > tr:has(a[href^="download.php?torrent="])
fields: # some users (rank specific?) have an extra column (td:nth-child(4)) with bookmark features
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
categorydesc:
selector: img[src^="./pic/caticons"]
attribute: alt
title:
selector: a[href^="details.php?id="]
remove: span
remove: span.has-text-red
details:
selector: a[href^="details.php?id="]
attribute: href
@@ -157,7 +159,7 @@ search:
optional: true
filters:
- name: dateparse
args: "MMM d yyyy h:mm tt"
args: "MMM d yyyyh:mm tt"
date:
text: "{{ if or .Result.date_day .Result.date_year }}{{ or .Result.date_day .Result.date_year }}{{ else }}now{{ end }}"
size:
@@ -165,9 +167,13 @@ search:
grabs:
selector: a[href^="snatches.php?id="]
seeders:
selector: td:nth-last-child(3) div:nth-last-child(2)
selector: a[title="Seeders"]
optional: true
default: 0
leechers:
selector: td:nth-last-child(3) div:last-child
selector: a[title="Leechers"]
optional: true
default: 0
downloadvolumefactor:
case:
tr.freeleech_color: 0
+5 -8
View File
@@ -29,10 +29,10 @@ search:
selector: tbody tr
fields:
title:
selector: td.title > span.title a
category:
text: 1
title:
selector: td.title > span.title a
details:
selector: td.title > span.title a
attribute: href
@@ -42,16 +42,13 @@ search:
size:
selector: td.size
seeders:
selector: td.peers div.seed
text: 1
leechers:
selector: td.peers div.leech
grabs:
selector: td.peers div.done
text: 1
date:
# unix
selector: td.date time
attribute: datetime
filters:
- name: fuzzytime
downloadvolumefactor:
text: 0
uploadvolumefactor:
@@ -1,7 +1,7 @@
---
id: acrossthetasman
name: Across The Tasman
description: "ATT is a torrent site for Rugby and other sports played in Australia"
description: "ATT is a Private torrent site for Rugby and other sports played in Australia"
language: en-AU
type: private
encoding: UTF-8
@@ -47,9 +47,11 @@ login:
vb_login_password: "{{ .Config.password }}"
cookieuser: 1
do: login
error:
- selector: div.restore:contains("invalid username or password")
test:
path: torrents.php
selector: a[href*="logout.php"]
selector: a[href*="login.php?do=logout"]
search:
paths:
+12 -10
View File
@@ -101,7 +101,7 @@ login:
selector: td.text
test:
path: /
selector: a[href="/logout.php"]
selector: a[href*="/logout.php"]
search:
paths:
@@ -115,11 +115,17 @@ search:
type: "{{ .Config.type }}"
rows:
selector: table tbody#torrent_background tr:has(a.index)
selector: table tbody#torrent_background tr:has(a.index):has(span.icon_check_alt)
filters:
- name: andmatch
fields:
category:
selector: a[href*="/browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a.index
attribute: href
@@ -127,17 +133,11 @@ search:
- name: querystring
args: name
- name: urldecode
category:
selector: td a[href^="/browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
details:
selector: a.index
selector: a[href*="/details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
selector: a.index
attribute: href
filters:
- name: urldecode
@@ -147,6 +147,8 @@ search:
filters:
- name: regexp
args: src=([^\s]+)
- name: replace
args: ["\"", ""]
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
+180
View File
@@ -0,0 +1,180 @@
---
id: afun
name: AFUN
description: "AFUN is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://www.ptlover.cc/
caps:
categorymappings:
- {id: 407, cat: TV/Sport, desc: "Sports/赛事"}
- {id: 414, cat: TV, desc: "TV Shows/综艺"}
- {id: 408, cat: Audio, desc: "HQ Audio/HQ音频"}
- {id: 409, cat: Other, desc: "Misc/其他"}
- {id: 407, cat: TV/Sport, desc: "TV Sport/体育"}
- {id: 406, cat: Audio/Video, desc: "Music Videos/MV"}
- {id: 403, cat: TV, desc: "TV Talk Shows/脱口秀"}
- {id: 402, cat: TV, desc: "TV Series/电视剧"}
- {id: 405, cat: TV/Anime, desc: "Anime/动画"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 401, cat: Movies, desc: "Movies/电影"}
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_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Cherish your user account. Inactive accounts will be deleted based on the following rules:<ol><li>Veteran User or above will never be deleted.</li><li>Elite User or above will never be deleted if parked (at User CP).</li><li>Parked accounts will be deleted if users have not logged in for more than 400 days in a row.</li><li>Unparked accounts will 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 will be deleted if users have not logged in for more than 100 days in a row.</li></ol>"
login:
# using cookie method because site regularly disables login page for certain events during the year
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}}"
# searching in description causes HTTP 500 so we will not support doubanid searching
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
# 0: include dead, 1: alive, 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: description, 3: uploader, 4: imdburl
search_area: "{{ if .Query.IMDBID }}4{{ else }}0{{ end }}"
# 0: AND, 2: exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
# Support in NexusPHP so bots don't pollute trending searches:
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(a[href^="download.php?id="])
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title:
selector: a[title][href^="details.php?id="]
attribute: title
optional: true
default: "{{ .Result.title_default }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: img[data-src]
attribute: data-src
imdbid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="movie.douban.com/subject/"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td: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
minimumratio:
text: 1.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# NexusPHP v1.9.0 2025-02-06
+7 -5
View File
@@ -7,9 +7,13 @@ type: private
encoding: UTF-8
requestDelay: 2
links:
- https://www.agsvpt.com/
- https://pt.agsvpt.cn/
legacylinks:
- https://abroad.agsvpt.com/
caps:
# dont forget to update the path categories in the search block
categorymappings:
- {id: 401, cat: Movies, desc: "Movie(电影)", default: true}
- {id: 402, cat: TV, desc: "TV Series(电视剧)", default: true}
@@ -21,7 +25,6 @@ caps:
- {id: 406, cat: Audio/Video, desc: "MV(演唱", default: true}
- {id: 407, cat: TV/Sport, desc: "Sports(体育)", default: true}
- {id: 408, cat: Audio/Audiobook, desc: "Audio(音频)", default: true}
# special
- {id: 413, cat: PC/Games, desc: "Game(游戏)", default: false}
- {id: 416, cat: Books/Comics, desc: "Comic(漫画)", default: false}
- {id: 412, cat: PC/0day, desc: "Software(软件)", default: false}
@@ -80,9 +83,8 @@ settings:
default: "Account retention rules:<ol><li>Elite User and above will not have their account deleted after parking (in the Control Panel)</li><li>Users who do not log in for 400 consecutive days will be disabled.</li><li>Users with a parked account will be disabled if they do not log in for 150 consecutive days</li><li>Users who have no traffic (i.e., uploading/downloading data is 0) within 7 days of new registration will be disabled</li><li>Users with no traffic (i.e. both upload/download data is 0) who do not log in for 30 consecutive days will be disabled.</li></ol>"
login:
path: agsvpt
method: form
form: form[action="takelogin.php"]
path: takelogin.php
method: post
inputs:
secret: ""
username: "{{ .Config.username }}"
@@ -206,4 +208,4 @@ search:
filters:
- name: prepend
args: "{{ .Result.description_verified }} "
# NexusPHP v1.8.8 2023-09-25
# NexusPHP v1.8.12 2024-04-05
@@ -1,7 +1,7 @@
---
id: aidoruonline
name: Aidoru!Online
description: "Aidoru!Online is a Private Torrent Tracker for Female Japanese Idol related files"
description: "Aidoru!Online is a JAPANESE Private Torrent Tracker for Female Japanese Idol related files"
language: en-US
type: private
encoding: UTF-8
@@ -35,10 +35,8 @@ 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: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -59,8 +57,13 @@ settings:
options:
desc: desc
asc: asc
- name: info_results
type: info
label: Search results
default: "If you are getting the error <b>Found no results while trying to browse this tracker</b> then first access the site with your browser and check that your ratio is <b>not below 0.8</b>, otherwise the site will not return download links to the indexer. This does not apply to freeleech torrents."
login:
# using cookie method because login page returns 0 bytes with a cookie flog=6
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
+36 -17
View File
@@ -5,6 +5,7 @@ description: "Aither is a Private Torrent Tracker for HD MOVIES / TV"
language: en-US
type: private
encoding: UTF-8
# status https://status.aither.cc/
links:
- https://aither.cc/
@@ -13,13 +14,11 @@ caps:
- {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:
@@ -34,6 +33,10 @@ settings:
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
@@ -53,7 +56,7 @@ settings:
- 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."
default: "You must log in to the Aither web site with your browser once every90 days to prevent your account from getting disabled."
login:
path: /api/torrents
@@ -63,12 +66,13 @@ login:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
- selector: :root:contains("Account is Banned")
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
# https://hdinnovations.github.io/UNIT3D/torrent_api.html
# https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
- path: api/torrents/filter
response:
type: json
@@ -100,14 +104,19 @@ search:
fields:
category:
selector: category_id
title:
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
@@ -122,18 +131,19 @@ search:
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)^None$", ""]
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
description:
text: "{{ .Result.genre }}"
files:
selector: num_file
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
@@ -150,7 +160,12 @@ search:
args: "MM/dd/yyyy HH:mm:ss zzz"
size:
selector: size
downloadvolumefactor:
_featured:
selector: featured
case:
False: "{{ .False }}"
True: "{{ .True }}"
downloadvolumefactor_freeleech:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
@@ -160,16 +175,20 @@ search:
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
uploadvolumefactor:
downloadvolumefactor:
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
uploadvolumefactor_double_upload:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
uploadvolumefactor:
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
# global MR is 0.4 but torrents must be seeded for 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 7.2.5
# json UNIT3D 9.1.7
+170
View File
@@ -0,0 +1,170 @@
---
id: alingpt
name: alingPT
description: "alingPT is a CHINESE Private Torrent Tracker for MOVIES / TV"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://pt.aling.de/
caps:
categorymappings:
- {id: 405, cat: TV/Anime, desc: "Animations/动画"}
- {id: 402, cat: TV, desc: "TV Series/电视剧"}
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 404, cat: TV/Documentary, desc: "Documentary/纪录片"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: cookie
type: text
label: Cookie
- name: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Account retention rules:<ol><li>Veteran User and above will be retained forever</li><li>Accounts parked will not be deleted</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 200 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 60 consecutive days.</li></ol>"
login:
# using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}"
# 0 incldead, 1 active, 2 dead
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl
search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
# 0 AND, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title:
selector: a[title][href^="details.php?id="]
attribute: title
optional: true
default: "{{ .Result.title_default }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: img[data-src]
attribute: data-src
imdbid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="movie.douban.com/subject/"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow.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: 2.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.9.4 2025-06-01
+57 -141
View File
@@ -1,7 +1,7 @@
---
id: amigosshare
name: Amigos Share Club
description: "Amigos Share Club is a Brazilian Private site for TV / MOVIES / GENERAL"
description: "Amigos Share Club (ASC) is a BRAZILIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: pt-BR
type: private
encoding: UTF-8
@@ -14,81 +14,60 @@ legacylinks:
caps:
categorymappings:
- {id: 107, cat: XXX, desc: "Adultos: Gay"}
- {id: 75, cat: XXX, desc: "Adultos: Hentai"}
- {id: 107, cat: XXX, desc: "Adultos: Gay"}
- {id: 108, cat: XXX, desc: "Adultos: Transex/Female"}
- {id: 74, cat: XXX, desc: "Adultos: XXX"}
- {id: 146, cat: XXX, desc: "Adultos: OnlyFans"}
- {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: 21, cat: PC/0day, desc: "Aplicativos: Windows"}
- {id: 28, cat: PC/Mobile-iOS, desc: "Aplicativos: iPod"}
- {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: 23, cat: PC/Mobile-Android, desc: "Aplicativos: Android"}
- {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: 73, cat: Other, desc: "Cursos: Video Aula"}
- {id: 72, cat: Other, desc: "Cursos: Apostila"}
- {id: 71, cat: Other, desc: "Cursos: Cursos"}
- {id: 67, cat: Books/EBook, desc: "Ebook: Livros"}
- {id: 112, cat: Books/Comics, desc: "Ebook: HQs"}
- {id: 147, cat: Books/Comics, desc: "Ebook: Mangas"}
- {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: 68, cat: Books/Mags, 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: 70, cat: XXX, desc: "Fotos: Revistas, Livros e Fotos"}
- {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: 109, cat: Console, desc: "Jogos: Emulação"}
- {id: 110, cat: Console, desc: "Jogos: Nintendo Switch"}
- {id: 52, cat: Console, desc: "Jogos: Dreamcast"}
- {id: 50, cat: Console, desc: "Jogos: Ps2"}
- {id: 49, cat: Console, desc: "Jogos: Ps1"}
- {id: 48, cat: PC/Mac, desc: "Jogos: Mac"}
- {id: 55, cat: Console/Wii, desc: "Jogos: Wii"}
- {id: 82, cat: Console/PSP, desc: "Jogos: PSP"}
- {id: 47, cat: PC/Games, desc: "Jogos: Pc"}
- {id: 61, cat: Console, desc: "Jogos: Emuladores e Roms"}
- {id: 58, cat: Console/NDS, desc: "Jogos: Nintendo DS"}
- {id: 57, cat: Console, desc: "Jogos: Android"}
- {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: 79, cat: Console/PS4, desc: "Jogos: Ps4"}
- {id: 129, cat: Other, desc: "Outros: Fonts"}
- {id: 128, cat: Other, desc: "Outros: Scripts"}
- {id: 127, cat: Other, desc: "Outros: Add-ons"}
- {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"}
- {id: 122, cat: Other, desc: "Outros: Plug-ins"}
- {id: 126, cat: Other, desc: "Outros: Extensões"}
- {id: 120, cat: TV, desc: "Series:"}
- {id: 64, cat: TV, desc: "Tv: Fechada"}
- {id: 62, cat: TV/Sport, desc: "Tv: Esportes"}
- {id: 63, cat: TV, desc: "Tv: Aberta"}
modes:
search: [q]
@@ -173,12 +152,29 @@ search:
keywordsfilters:
# drop the year from searches since site titles do not include year
- name: re_replace
args: ["(19|20[0-9]{2})", ""]
args: ["(\\s*\\b((19|20)\\d{2})\\b)", ""]
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:
category_default:
# tv and movie just have an image :-b
selector: div.list-group-item-addon img
attribute: src
optional: true
case:
"[src$=\"/filmes2.fw.png\"]": 119
"[src$=\"/seriados.fw.png\"]": 120
category:
# while the rest have a href with a cat number \o/
selector: a[href*="cat="]
attribute: href
optional: true
default: "{{ .Result.category_default }}"
filters:
- name: querystring
args: cat
_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
@@ -194,10 +190,6 @@ search:
_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:
@@ -224,86 +216,6 @@ search:
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:
selector: p:contains("Lançado:")
# auto adjusted by site account profile
@@ -324,6 +236,10 @@ search:
selector: div.list-group-item-controls a:nth-child(2)
grabs:
selector: div.list-group-item-controls a:nth-child(3)
genre:
selector: div.list-group-item-content p.m-0 span.badge-primary[style$="#1c38c2;"]
description:
text: "{{ .Result.genre }}"
downloadvolumefactor:
case:
"span.badge-success:contains(\"FREE\")": 0
+181 -1
View File
@@ -23,6 +23,10 @@ settings:
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.
@@ -60,6 +64,58 @@ search:
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
@@ -72,19 +128,143 @@ search:
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
title:
_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:
@@ -0,0 +1,201 @@
---
id: animelovers-api
name: AnimeLovers (API)
description: "AnimeLovers is a Private tracker for ANIME / MANGA / DOUNGUA / MANHWA"
language: en-US
type: private
encoding: UTF-8
links:
- https://animelovers.club/
caps:
categorymappings:
- {id: 1, cat: Movies/Other, desc: "Anime Movies"}
- {id: 2, cat: TV/Anime, desc: "Anime Series"}
- {id: 3, cat: TV/Anime, desc: "Anime OVA"}
- {id: 11, cat: TV/Anime, desc: "Donghua Anime"}
- {id: 9, cat: XXX, desc: "Doujinshi"}
- {id: 4, cat: Books/Comics, desc: "Manhua/Manhwa"}
- {id: 8, cat: Books/Comics, desc: "Manga"}
- {id: 7, cat: XXX, desc: "Hentai"}
- {id: 10, cat: Audio/Lossless, desc: "Lossless Music"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
book-search: [q]
settings:
- name: apikey
type: text
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://animelovers.club/\" target=\"_blank\">AnimeLovers</a> account <i>My Settings</i> page and clicking on the <b>API Key</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: single_file_release_use_filename
type: checkbox
label: Use filename as title for single file releases
default: true
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_activity
type: info
label: Account Inactivity
default: "In order to not be disabled, you are required to login to AnimeLovers at least once every 90 days."
login:
path: /api/torrents
method: get
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
- selector: :root:contains("Account is Banned")
search:
paths:
# https://hdinnovations.github.io/UNIT3D/torrent_api.html
# https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
- path: api/torrents/filter
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"
episodeNumber: "{{ .Query.Ep }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tmdbId: "{{ .Query.TMDBID }}"
tvdbId: "{{ .Query.TVDBID }}"
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
description:
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: times_completed
date:
# "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50
selector: created_at
filters:
- name: append
args: " +00:00" # GMT
- name: dateparse
args: "MM/dd/yyyy HH:mm:ss zzz"
size:
selector: size
_featured:
selector: featured
case:
False: "{{ .False }}"
True: "{{ .True }}"
downloadvolumefactor_freeleech:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
0%: 1 # not free
25%: 0.75
50%: 0.5
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
downloadvolumefactor:
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
uploadvolumefactor_double_upload:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
uploadvolumefactor:
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
# minimumratio:
# text: 0.4
minimumseedtime:
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 9.1.5
@@ -65,14 +65,17 @@ settings:
default: "Inactive accounts under VIP and without parked are automatically deleted after about a year."
login:
path: takelogin.php
method: post
path: login.php
method: form
form: form
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
x: 0
y: 0
referer: /
selectorinputs:
csrf_token:
selector: input[name="csrf_token"]
attribute: value
error:
- selector: table.main:contains("esuat")
test:
@@ -1,7 +1,7 @@
---
id: animeworld-api
name: AnimeWorld (API)
description: "AnimeWorld (AW) is a GERMAN Private site for ANIME / MANGA / HENTAI"
description: "AnimeWorld (AW) is a GERMAN Private Torrent Tracker for ANIME / MANGA / HENTAI"
language: de-DE
type: private
encoding: UTF-8
@@ -40,11 +40,15 @@ settings:
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://animeworld.cx/\" target=\"_blank\">AnimeWorld</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
default: "Find or Generate a new API Token by accessing your <a href=\"https://animeworld.cx/\" target=\"_blank\">AnimeWorld</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
@@ -74,12 +78,13 @@ login:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
- selector: :root:contains("Account is Banned")
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
# https://hdinnovations.github.io/UNIT3D/torrent_api.html
# https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
- path: api/torrents/filter
response:
type: json
@@ -90,8 +95,8 @@ search:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"
episodeNumber: "{{ .Query.Ep }}"
# seasonNumber: "{{ .Query.Season }}" # disabled due to Prowlarr/Indexers#486
# episodeNumber: "{{ .Query.Ep }}" # disabled due to Prowlarr/Indexers#486
# imdbId: "{{ .Query.IMDBIDShort }}" # disabled due to #14776
tmdbId: "{{ .Query.TMDBID }}"
tvdbId: "{{ .Query.TVDBID }}"
@@ -111,8 +116,15 @@ search:
fields:
category:
selector: category_id
title:
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
details:
selector: details_link
download:
@@ -134,17 +146,16 @@ search:
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"]
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: replace
args: [" & ", "_&_"]
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
description:
text: "{{ .Result.genre }}"
files:
selector: num_file
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
@@ -161,7 +172,12 @@ search:
args: "MM/dd/yyyy HH:mm:ss zzz"
size:
selector: size
downloadvolumefactor:
_featured:
selector: featured
case:
False: "{{ .False }}"
True: "{{ .True }}"
downloadvolumefactor_freeleech:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
@@ -171,13 +187,20 @@ search:
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
uploadvolumefactor:
# api returns 0=false, 1=true
downloadvolumefactor:
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
uploadvolumefactor_double_upload:
# api returns False, True
selector: double_upload
case:
0: 1 # normal
1: 2 # double
False: 1 # normal
True: 2 # double
uploadvolumefactor:
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
# global MR is 1.0 but torrents must be seeded for 7 days regardless of ratio
# minimumratio:
# text: 1.0
minimumseedtime:
# 7 day (as seconds = 7 x 24 x 60 x 60)
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 6.5.0
# json UNIT3D 8.1.3 (custom)
+2 -4
View File
@@ -9,10 +9,8 @@ links:
- https://www.anirena.com/
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_flaresolverr
type: info_flaresolverr
caps:
categorymappings:
@@ -1,10 +1,14 @@
---
id: anthelion-api
replaces:
- tehconnectionme
- anthelion
name: Anthelion (API)
description: "Anthelion is a Private MOVIES tracker"
description: "Anthelion (ANT) is a Private Torrent Tracker for MOVIES"
language: en-US
type: private
encoding: UTF-8
# Status: https://ant.trackerstatus.info/
links:
- https://anthelion.me/
@@ -87,6 +91,8 @@ search:
selector: codec
_container:
selector: container
filters:
- name: toupper
_media:
selector: media
filters:
@@ -118,7 +124,11 @@ search:
filters:
- name: htmldecode
- 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 }}"
args: " {{ .Result.year }} {{ .Result._resolution }} {{ .Result._media }} {{ .Result._container }} {{ .Result._codec }} {{ .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 }}"
- name: replace
args: ["M2TS H265", "M2TS HEVC"]
- name: replace
args: ["M2TS H264", "M2TS AVC"]
details:
selector: guid
download:
@@ -1,7 +1,7 @@
---
id: arabafenice
name: ArabaFenice
description: "Araba Fenice (Phoenix) is an ITALIAN Private site for TV / MOVIES / GENERAL"
description: "Araba Fenice (Phoenix) is an ITALIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: it-IT
type: private
encoding: UTF-8
+21 -24
View File
@@ -52,7 +52,6 @@ caps:
- {id: 52, cat: TV, desc: "مسرحيات (Plays)"}
- {id: 71, cat: TV, desc: "مسلسلات مدبلجه عربي (Arabic Dubbed Series)"}
- {id: 90, cat: TV, desc: "برامج ومسابقات (Shows)"}
- {id: 117, cat: TV, desc: "رمضان 2024 (Ramadan)"}
# المرئيات الاجنبية Foreign Movies
- {id: 92, cat: TV/Foreign, desc: "تعليمي (Educational)"}
- {id: 93, cat: TV/Documentary, desc: "وثائقي (Documentary)"}
@@ -79,18 +78,10 @@ caps:
- {id: 25, cat: Audio, desc: "القران الكريم (The Holy Quran)"}
- {id: 27, cat: Audio, desc: "محاضرات (Lectures)"}
- {id: 26, cat: Audio, desc: "اناشيد (Chants)"}
- {id: 118, cat: Audio, desc: "برامج صوتية (Programs)"}
# برامج Software
- {id: 22, cat: PC, desc: "برامج عربية (Arabic Software)"}
- {id: 23, cat: PC, desc: "برامج عامه (Public Software)"}
- {id: 78, cat: PC/Mobile-iOS, desc: "iPad/iPhone"}
- {id: 79, cat: PC/Mobile-Android, desc: "android"}
# العاب Games
- {id: 30, cat: PC/Games, desc: "PC"}
- {id: 31, cat: Console/PS3, desc: "PS2"}
- {id: 53, cat: Console/Wii, desc: "wii"}
- {id: 55, cat: Console/PSP, desc: "PSP"}
- {id: 63, cat: Console/XBox, desc: "XBOX"}
- {id: 64, cat: Console/PS3, desc: "PS3"}
# اخرى Other
- {id: 17, cat: Books, desc: "كتب (Books)"}
- {id: 65, cat: Other, desc: "صور (Images)"}
@@ -119,12 +110,13 @@ login:
search:
paths:
# https://www.arabp2p.com/index.php?page=torrents&search=&category=0&active=0&internel=0
# https://www.arabp2p.net/index.php?page=torrents&search=&category=0&active=0&internel=0&order=3&by=2
- path: index.php
inputs:
page: torrents
search: "{{ .Keywords }}"
category: "{{ if .Categories }}{{ range .Categories }}{{.}};{{end}}{{ else }}0{{ end }}"
# does not support multi categories, default to All
category: 0
# 0 all 1 activeonly 2 deadonly
active: 0
# 0 all 1 internal 2 external
@@ -134,38 +126,43 @@ search:
# does not support imdbid search or provide imdb link in results
rows:
selector: table.torrent tr.torrent
selector: table#torrents_list_p > tbody > tr:has(a[href^="download.php?id="]), table#torrents_list_p > tbody > tr:has(a[href^="magnet:?xt="])
filters:
- name: andmatch
fields:
category:
selector: td a[href^="index.php?page=torrents&category="]
selector: a[href^="index.php?page=torrents&category="]:last-child
attribute: href
filters:
- name: querystring
args: category
title:
selector: td a[href^="index.php?page=torrent-details"]
selector: a[href^="index.php?page=torrent-details"]
details:
selector: td a[href^="index.php?page=torrent-details"]
selector: a[href^="index.php?page=torrent-details"]
attribute: href
download:
selector: td a[href^="download.php"]
selector: a[href^="download.php?id="]
attribute: href
optional: true
magnet:
selector: a[href^="magnet:?xt="]
attribute: href
optional: true
date:
selector: td:nth-child(4) span
selector: span.upload-date > span
attribute: title
# auto adjusted by site account profile
filters:
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss"
seeders:
selector: td:nth-child(5)
leechers:
selector: td:nth-child(6)
args: "MM-yy-dd HH:mm:ss tt"
size:
selector: td:nth-child(7)
selector: span.size
seeders:
selector: span[title="Seeders"]
leechers:
selector: span[title="Leechers"]
downloadvolumefactor:
case:
span.free: 0
@@ -5,6 +5,8 @@ description: "ArenaBG is a BULGARIAN Semi-Private Torrent Tracker for 0DAY / GEN
language: bg-BG
type: semi-private
encoding: UTF-8
certificates:
- c25aba843f815e92d0da0bbe3191326d16a81a32 # expired 15th Oct 2025
links:
- https://arenabg.com/
legacylinks:
@@ -34,6 +36,7 @@ caps:
- {id: 24, cat: TV, desc: "Series / TV Episodes"}
- {id: 25, cat: TV, desc: "Series / TV Boxset"}
- {id: 26, cat: TV/HD, desc: "Series / TV Boxset HD"}
- {id: 60, cat: TV/UHD, desc: "Series / 4K"}
- {id: 3, cat: Audio, desc: "Music"}
- {id: 27, cat: Audio/MP3, desc: "Music / MP3"}
- {id: 28, cat: Audio/Video, desc: "Music / Video"}
@@ -1,11 +1,13 @@
---
id: asiancinema
name: AsianCinema
description: "Tracker Movies/TV/Music"
description: "AsianCinema is a Private Tracker for ASIAN MOVIES / TV / MUSIC"
language: en-US
type: private
encoding: UTF-8
links:
- https://eiga.moi/
legacylinks:
- https://asiancinema.me/
caps:
@@ -53,6 +55,7 @@ settings:
default: "Your account will be automatically deleted from the database after 90 days of inactivity. If you return or visit the site with your account before that amount of time passes, then the inactivity timer will reset and your account will be fine for another 90 days.<br>Keep in mind that 'activity' is considered a visit to any page and that torrent traffic is not counted as account activity. In order to reset the inactivity timer all you have to do is visit a single page while logged in with your account. If your account is deleted for inactivity, please do not ask the site staff to un-delete it for you. The deletion is performed automatically by the server and, as such, your account cannot be recovered after it has been deleted."
login:
# note APIKEY is broken on this 5.3.0 site
path: login
method: form
form: form[action$="/login"]
@@ -188,4 +191,4 @@ search:
minimumseedtime:
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
# UNIT3D 3.0.0
# UNIT3D 5.3.0
@@ -1,7 +1,7 @@
---
id: asiandvdclub
name: AsianDVDClub
description: "AsianDVDClub (ADC) is a Private Torrent Tracker for Asian DVD and BluRay"
description: "AsianDVDClub (ADC) is a Private Torrent Tracker for ASIAN DVD and BluRay"
language: en-US
type: private
encoding: UTF-8
@@ -157,5 +157,5 @@ search:
False: 1 # normal
True: 2 # double
minimumratio:
text: 0.4
text: 1.0
# json UNIT3D 7.0.3
+3 -4
View File
@@ -33,10 +33,8 @@ 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: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -67,6 +65,7 @@ settings:
default: "Account retention rules:<ol><li>Users with Extreme User and above will be retained forever</li><li>Starting from 20230701, the non-login ban time will be adjusted to:<ul><li>(Home Alone) User - 40 days</li><li>(Young and vigorous) Power User - 60 days</li><li>(Children of Jianghu) Elite User - 80 days</li><li>(Street Fighter) Crazy User - 100 days</li><li>(non-stop) Insane User - 120 days</li><li>(Outstanding Citizen) Veteran User - 180 days</li></ul></li><li>Users with no traffic (i.e. uploading/downloading data) If it is 0) If you do not log in for 7 consecutive days will be disabled</li><li>'Parked accounts' no longer enjoy the benefits of retaining accounts, and are also subject to the above rules.</li></ol>"
login:
# using cookie method because site regularly disables login page for certain events during the year
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
+1 -1
View File
@@ -306,7 +306,7 @@ search:
- name: querystring
args: f
size:
selector: td:contains(\00a0GB), td:contains(\00a0MB), td:contains(\00a0kB), td:contains(\00a0B)
selector: td:contains(\00a0GB), td:contains(\00a0MB), td:contains(\00a0KB), td:contains(\00a0B)
optional: true
default: 0
seeders:
@@ -1,7 +1,7 @@
---
id: aussierules
name: Aussierul.es
description: "Aussierul.es is a torrent site for Aussie Rules Football played in Australia"
description: "AussieRul.es is a Private Torrent Tracker for AUSTRALIAN RULES FOOTBALL"
language: en-AU
type: private
encoding: UTF-8
@@ -35,7 +35,7 @@ settings:
- name: dead
label: Include Dead Torrents
type: select
default: No
default: no
options:
yes: Yes
no: No
+24 -37
View File
@@ -1,7 +1,7 @@
---
id: azusa
name: Azusa (梓喵)
description: "Azusa (梓喵) is a CHINESE Private Torrent Tracker focusing on Comics"
description: "Azusa (梓喵) is a CHINESE Private Torrent Tracker focusing on COMICS"
language: zh-CN
type: private
encoding: UTF-8
@@ -22,19 +22,11 @@ caps:
book-search: [q]
settings:
- name: username
- name: cookie
type: text
label: Username
- name: password
type: password
label: Password
- name: 2facode
type: text
label: 2FA code
- name: info_2fa
type: info
label: "About 2FA code"
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> on the Uploads Web Site. Otherwise just leave it empty."
label: Cookie
- name: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -61,45 +53,34 @@ settings:
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
# using cookie method because site regularly disables login page for certain events during the year
method: cookie
inputs:
secret: ""
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
two_step_code: "{{ .Config.2facode }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: ""
error:
- selector: td.embedded:has(h2:contains("失败"))
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="logout.php"]
selector: a[href^="logout.php?csrf_token="]
search:
paths:
- path: torrents.php
allowEmptyInputs: true
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 }}"
inclbookmarked: 0
approval_status: ""
trackerStatus: ""
search: "{{ .Keywords }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl
search_area: 0
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
@@ -148,11 +129,17 @@ search:
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow:nth-child(6)
selector: a[href$="dllist=1#seeders"]
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
selector: a[href$="dllist=1#leechers"]
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
selector: a[href^="viewsnatches.php?id="]
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0
@@ -170,4 +157,4 @@ search:
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.7.20 2022-08-05
# NexusPHP v1.7.20 2022-08-05 (custom)
+28 -13
View File
@@ -10,6 +10,7 @@ links:
caps:
categorymappings:
- {id: 100, cat: Console, desc: "Anbernic"}
- {id: 15, cat: PC/Mobile-Android, desc: "Android"}
- {id: 35, cat: TV/Anime, desc: "Anime"}
- {id: 51, cat: PC/Mac, desc: "Apple"}
@@ -17,9 +18,9 @@ caps:
- {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: 22, cat: Console, desc: "CoinOps"}
- {id: 63, cat: Books/Comics, desc: "Comics"}
- {id: 60, cat: Console, desc: "Core"}
- {id: 72, cat: Console, desc: "CORE Community"}
@@ -27,31 +28,45 @@ caps:
- {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: 80, cat: PC, desc: "Emulation Media"}
- {id: 61, cat: PC, desc: "emuxtras"}
- {id: 89, cat: PC, desc: "Ghostware"}
- {id: 84, cat: TV, desc: "GOG DRM FREE"}
- {id: 77, cat: PC, desc: "Hyperspin"}
- {id: 34, cat: TV, desc: "Kids"}
- {id: 43, cat: Console, desc: "LB No Intro"}
- {id: 85, cat: PC, desc: "MAME Rom Sets"}
- {id: 33, cat: TV/Sport, desc: "MMA/Boxing"}
- {id: 32, cat: Movies, desc: "Movie Pack"}
- {id: 6, cat: Movies, desc: "Movies/XVID"}
- {id: 106, cat: Movies/UHD, desc: "Movie Pack 4K"}
- {id: 6, cat: Movies, desc: "Movies"}
- {id: 105, cat: Movies/UHD, desc: "Movies 4K"}
- {id: 82, cat: PC, desc: "MS-DOS"}
- {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: 87, cat: Console, desc: "Playnite"}
- {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: 62, cat: PC, desc: "Raspberry Pi"}
- {id: 83, cat: PC, desc: "Retro eXo"}
- {id: 56, cat: PC, desc: "Retro Minis"}
- {id: 81, cat: PC, desc: "Retro Scene Releases"}
- {id: 67, cat: PC, desc: "Retrobat"}
- {id: 88, cat: PC, desc: "RetroFE"}
- {id: 79, cat: PC, desc: "RGB-Pi"}
- {id: 76, cat: Console, desc: "RGS"}
- {id: 27, cat: Console, desc: "Roms and Emulators"}
- {id: 68, cat: Console, desc: "Schmoomer's"}
- {id: 27, cat: PC, desc: "Roms and Emulators"}
- {id: 68, cat: PC, desc: "Schmoomer's"}
- {id: 57, cat: Console, desc: "Sega"}
- {id: 40, cat: TV, desc: "Soaps"}
- {id: 74, cat: PC, desc: "Sleyk/SGC"}
- {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: 90, cat: PC, desc: "TeknoParrot"}
- {id: 9, cat: TV, desc: "TV Packs"}
- {id: 11, cat: TV, desc: "TV Shows"}
- {id: 97, cat: TV/Other, desc: "Video Courses"}
- {id: 75, cat: TV, desc: "Video Game Music"}
- {id: 73, cat: Console, desc: "Wolfanoz"}
- {id: 14, cat: TV/Sport, desc: "WWE"}
- {id: 26, cat: Console, desc: "Xbox"}
@@ -9,15 +9,6 @@ requestDelay: 5
links:
- https://badasstorrents.com/
legacylinks:
- https://badasstorrents.nocensor.work/
- https://badasstorrents.nocensor.biz/
- https://badasstorrents.nocensor.sbs/
- https://badasstorrents.nocensor.world/
- https://badasstorrents.nocensor.lol/
- https://badasstorrents.nocensor.art/
- https://badasstorrents.mrunblock.guru/
- https://badasstorrents.mrunblock.life/
- https://badasstorrents.nocensor.click/
- https://badasstorrents.mrunblock.bond/
- https://badasstorrents.nocensor.cloud/
@@ -39,20 +30,23 @@ caps:
movie-search: [q]
music-search: [q, album, artist]
book-search: [q]
settings:
- name: info_flaresolverr
type: info_flaresolverr
- name: downloadlink
type: select
label: Download link
default: "magnet:?xt="
options:
"/download/": ".torrent"
"/d/": ".torrent"
"magnet:?xt=": "magnet"
- name: downloadlink2
type: select
label: Download link (fallback)
default: "/download/"
default: "/d/"
options:
"/download/": ".torrent"
"/d/": ".torrent"
"magnet:?xt=": "magnet"
- name: info_download
type: info
@@ -69,32 +63,36 @@ download:
search:
paths:
# search has 10 torrents per page, latest has 100 torrents per page.
- path: "{{ if .Keywords }}search/{{ .Keywords }}{{ else }}latest.html{{ end }}"
- path: "{{ if .Keywords }}/search/{{ .Keywords }}&page=10{{ else }}{{ end }}"
- path: "{{ if .Keywords }}s/{{ .Keywords }}{{ else }}latest.html{{ end }}"
- path: "{{ if .Keywords }}s/{{ .Keywords }}&page=10{{ else }}{{ end }}"
keywordsfilters:
- name: re_replace
args: ["[\\s]+", "-"]
- name: tolower
rows:
selector: table.table-hover > tbody > tr:has(a[href*="/torrent/"])
selector: table.table-hover > tbody > tr
filters:
- name: andmatch
fields:
category:
selector: a[href*="/category/"]
selector: a[href^="/c/"]
title:
selector: a[href*="/torrent/"]
selector: a[href*="/v/"]
details:
selector: a[href*="/torrent/"]
selector: a[href*="/v/"]
attribute: href
download:
selector: a[href*="/torrent/"]
selector: a[href*="/v/"]
attribute: href
date:
selector: td:nth-child(3)
filters:
- name: timeago
- name: append
args: " +00:00" # GMT
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
size:
selector: td:nth-child(4)
seeders:
+3 -4
View File
@@ -55,10 +55,8 @@ 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: info_cookie
type: info_cookie
- name: sort
type: select
label: Sort requested from site
@@ -77,6 +75,7 @@ settings:
asc: asc
login:
# using cookie method because login page has embedded Google reCAPTCHA
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
@@ -0,0 +1,120 @@
---
id: best-torrents
name: Best-Torrents
description: "Best-Torrents is a POLISH Semi-Private PAY2DL Torrent Tracker for MOVIES / TV / GENERAL"
language: pl-PL
type: semi-private
encoding: UTF-8
links:
- https://best-torrents.com/
caps:
categorymappings:
- {id: 774, cat: Movies, desc: Filmy Polskie}
- {id: 642, cat: Movies, desc: Filmy/Bajki}
- {id: 1, cat: Movies/SD, desc: Filmy XviD/DivX}
- {id: 20, cat: Movies/DVD, desc: Filmy DVD}
- {id: 23, cat: Movies/HD, desc: Filmy x264}
- {id: 573, cat: Movies/UHD, desc: Filmy 4K UHD}
- {id: 17, cat: Movies/HD, desc: Filmy HD}
- {id: 265, cat: Movies/HD, desc: Filmy x265 HEVC}
- {id: 12, cat: Movies/3D, desc: Filmy 3D}
- {id: 530, cat: Movies/SD, desc: Filmy TS/CAM}
- {id: 9, cat: PC, desc: Programy}
- {id: 7, cat: Console, desc: Konsole}
- {id: 6, cat: PC/Games, desc: Gry}
- {id: 5, cat: Audio, desc: Muzyka}
- {id: 305, cat: Audio/Video, desc: Teledyski}
- {id: 22, cat: TV, desc: TV}
- {id: 228, cat: XXX, desc: Erotyka}
- {id: 25, cat: Books/EBook, desc: Książki}
- {id: 739, cat: Audio/Audiobook, desc: AudioBooki}
- {id: 26, cat: Books/Comics, desc: Komiksy}
- {id: 27, cat: PC/Mac, desc: Linux/Mac}
- {id: 28, cat: TV/Sport, desc: Sport}
- {id: 29, cat: TV/Anime, desc: Anime}
- {id: 31, cat: PC/Mobile-Other, desc: GSM/PDA}
- {id: 32, cat: Other, desc: Inne}
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
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: td.komunikaty:contains("Nazwa użytkownika bądź hasło jest nieprawidłowe")
test:
path: /
selector: a[href$="/logout.php"]
search:
# https://best-torrents.com/szukaj.php?search=%25&cat=774&full_name=no
paths:
- path: szukaj.php
inputs:
# does not appear to support multi category searches
cat: 0
# no, 0 Standard mode, 1 Initial mode, 2 Full Phrase mode, 3 Final mode
full_name: no
search: "{{ if .Keywords }}{{ .Keywords }}{{ else }}%{{ end }}"
rows:
selector: div#torrents_browse-standard-all
fields:
categorydesc:
selector: div#torrents_browse-standard-category a
attribute: href
filters:
- name: regexp
args: kategorii/(.+?)/gatunku
title:
selector: div#torrents_browse-standard-torrent-name a
details:
selector: div#torrents_browse-standard-torrent-name a
attribute: href
download:
selector: div#torrents_browse-standard-download a
attribute: href
poster:
selector: div#torrents_browse-standard-poster img
attribute: src
date:
selector: div#torrents_browse-standard-time
remove: b
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
size:
selector: div#torrents_browse-standard-size
remove: b
filters:
- name: regexp
args: (\d{1,4}\.\d{2}\s+?[T|G|M|k]B)
seeders:
selector: div#torrents_browse-standard-seeds span font
leechers:
selector: div#torrents_browse-standard-peers span font
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a
+3 -1
View File
@@ -1,7 +1,7 @@
---
id: bestcore
name: Best-Core
description: "Best-Core is a HUNGARIAN Private Tracker for MOVIES / TV"
description: "Best-Core is a HUNGARIAN Private Tracker for MOVIES / TV / GENERAL"
language: hu-HU
type: private
encoding: ISO-8859-2
@@ -106,6 +106,8 @@ login:
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: :root:contains("Sikertelen bejelentkezés")
test:
path: index.php
selector: a[href^="logout.php?c="]
+1 -1
View File
@@ -1,7 +1,7 @@
---
id: bibliotik
name: Bibliotik
description: "Bibliotik is a private site for eBooks and audiobooks"
description: "Bibliotik is a Private Torrent Tracker for EBOOKS and AUDIOBOOKS"
language: en-US
type: private
encoding: UTF-8
+152
View File
@@ -0,0 +1,152 @@
---
id: bigcore
name: BigCore
description: "BigCore is a HUNGARIAN Private Tracker for MOVIES / TV / GENERAL"
language: hu-HU
type: private
encoding: UTF-8
links:
- https://bigcore.eu/
caps:
categorymappings:
- {id: 48, cat: Movies/SD, desc: "CAM/Hun"}
- {id: 49, cat: Movies/SD, desc: "CAM/Eng"}
- {id: 50, cat: Movies/SD, desc: "SD/Hun"}
- {id: 51, cat: Movies/SD, desc: "SD/Eng"}
- {id: 52, cat: Movies/DVD, desc: "DVD/Hun"}
- {id: 53, cat: Movies/DVD, desc: "DVD/Eng"}
- {id: 54, cat: Movies/HD, desc: "HD/Hun"}
- {id: 55, cat: Movies/HD, desc: "HD/Eng"}
- {id: 56, cat: TV, desc: "Sorozat/Hun"}
- {id: 57, cat: TV, desc: "Sorozat/Eng"}
- {id: 58, cat: PC/Games, desc: "Játék/ISO"}
- {id: 59, cat: PC/ISO, desc: "Program/ISO"}
- {id: 60, cat: PC/Games, desc: "Játék/RIP"}
- {id: 61, cat: PC/0day, desc: "Program/RIP"}
- {id: 62, cat: Audio, desc: "Zene/Hun"}
- {id: 63, cat: Audio, desc: "Zene/Eng"}
- {id: 64, cat: Books, desc: "Könyv"}
- {id: 65, cat: PC/Mobile-Other, desc: "Mobil"}
- {id: 66, cat: XXX/x264, desc: "XXX/Video"}
- {id: 67, cat: XXX/ImageSet, desc: "XXX/Kép"}
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_cookie
type: info_cookie
- name: sort
type: select
label: Sort requested from site
default: 4
options:
1: title
4: created
7: seeders
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>100</b> on your account profile. The default is <i>30</i>.
login:
# using cookie method because login page has embedded Google reCAPTCHA
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="/logout.php"]
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active, 1 incldead, 2 onlydead, 3 myupload, 4 waiting for seed
incldead: 1
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: tr[id^="torrent_row_"], tr[id^="hidden_torrent_row_"]
after: 1
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a#torrentName
attribute: title
_id:
selector: a[href^="download.php?torrent="]
attribute: href
filters:
- name: querystring
args: torrent
details:
text: "details.php?id={{ .Result._id }}"
download:
selector: a[href^="download.php?torrent="]
attribute: href
poster:
selector: a[href^="kepek/"]
attribute: href
files:
selector: a.viewFileList
date:
selector: td:nth-child(7) a[title]
attribute: title
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
size:
selector: td:nth-child(8)
grabs:
selector: td:nth-child(9)
seeders:
selector: td:nth-child(10)
leechers:
selector: td:nth-child(11)
description:
case:
i.fa-check: "Verified"
i.fa-question: "Unverified"
downloadvolumefactor:
case:
span:contains("0x"): 0
"*": 1
uploadvolumefactor:
case:
span:contains("2x"): 2
span:contains("3x"): 3
span:contains("4x"): 4
span:contains("5x"): 5
"*": 1
minimumseedtime:
# 1 days (as seconds = 1 x 24 x 60 x 60)
text: 86400
# engine n/a
@@ -89,22 +89,19 @@ settings:
asc: asc
search:
# https://bigfangroup.org/browse.php?search=black+lightning&cat=0&incldead=0&year=0&format=0
headers:
Referer: ["{{ .Config.sitelink }}browse.php?search={{ .Keywords }}&cat=0&incldead=1&year=0&format=0"]
paths:
# https://bigfangroup.org/browse.php?ajax=1&search=the+librarian&cat=0&incldead=0&year=0&format=0
- path: browse.php
inputs:
ajax: 1
search: "{{ .Keywords }}"
cat: 0
cat: "{{ if .Keywords }}0{{ else }}{{ end }}"
# 0 active, 1 incldead, 2 onlydead, 3 gold, 4 noseed, 5 silver, 7 BFG
incldead: 1
year: 0
format: 0
s: "{{ .Config.sort }}"
d: "{{ .Config.type }}"
incldead: "{{ if .Keywords }}1{{ else }}{{ end }}"
year: "{{ if .Keywords }}0{{ else }}1{{ end }}"
format: "{{ if .Keywords }}0{{ else }}{{ end }}"
s: "{{ if .Keywords }}{{ .Config.sort }}{{ else }}{{ end }}"
d: "{{ if .Keywords }}{{ .Config.type }}{{ else }}{{ end }}"
keywordsfilters:
# strip season and/or ep
+30 -39
View File
@@ -10,30 +10,29 @@ links:
- https://bitbazis.net/
caps:
# dont forget to update the path categories in the search block
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: 85, cat: Movies/SD, desc: "Film-Cam", 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: 27, cat: Books/EBook, desc: "Könyv", default: true}
- {id: 81, cat: PC/0day, desc: "Program", default: true}
- {id: 14, cat: Other, desc: "Egyéb", default: true}
- {id: 31, cat: PC/Games, desc: "Játék", default: true}
- {id: 69, cat: TV/Anime, desc: "Mese-SD", default: true}
- {id: 91, cat: TV/Anime, desc: "Mese-HD", default: true}
- {id: 64, cat: Movies, desc: "Film-Pack", default: true}
- {id: 92, cat: Movies/UHD, desc: "Film-UHD", 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}
- {id: 24, cat: Audio/Video, desc: "Klip", default: true}
- {id: 14, cat: Other, desc: "Egyéb", default: true}
modes:
search: [q]
@@ -46,10 +45,8 @@ 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: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Filter freeleech only
@@ -84,18 +81,19 @@ login:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: li[onclick^="window.open('logout.php?k="]
selector: a[onclick="confirmLogout()"]
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]
categories: [15, 83, 94, 85, 22, 25, 26, 84, 71, 27, 81, 31, 69, 91, 64, 92, 24, 14]
inputs:
# 0 all, 1 active, 2 deadonly, 3 myuploads, 4 zeroseed, 6 re-seeded
incldead: 0
- path: browse_xxx.php
- path: browse.php
categories: [33, 66, 89]
inputs:
xxx: 1
# 0 active, 1 all, 2 deadonly, 3 myuploads, 4 zeroseed, 6 re-seeded
incldead: 1
inputs:
@@ -107,7 +105,7 @@ search:
# 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 }}"
selector: "tr[class^=\"toriadatok\"]:has(i.status-yes){{ if .Config.freeleech }}:has(i:contains(\"(Free)\")){{ else }}{{ end }}"
fields:
categorydesc:
@@ -117,19 +115,12 @@ search:
- name: replace
args: ["catpic_", ""]
title:
selector: font[class="tori"], a.preview
selector: span.torrent-name
_id:
selector: td.tori_infok
attribute: id
optional: true
filters:
- name: regexp
args: (\d+)
selector: tr[data-torrent-id]
attribute: data-torrent-id
details:
selector: a[href^="details.php?id="]
attribute: href
optional: true
default: "details.php?id={{ .Result._id }}#adatlap"
text: "details.php?id={{ .Result._id }}#adatlap"
download:
text: "download.php?torrent={{ .Result._id }}"
poster:
@@ -139,14 +130,14 @@ search:
selector: a[href*="imdb.com/title/tt"]
attribute: href
size:
selector: td[id^="tsize"]
selector: td.torrent-size
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
selector: span.uploader
filters:
- name: replace
args: ["és ", " "]
@@ -161,20 +152,20 @@ search:
- name: replace
args: ["éve", "year"]
- name: timeago
grabs:
selector: td.letoltok
optional: true
default: 0
seeders:
selector: td.seeders
selector: td:nth-child(5)
optional: true
default: 0
leechers:
selector: td.leechers
selector: td:nth-child(6)
optional: true
default: 0
grabs:
selector: td:nth-child(7)
optional: true
default: 0
genre:
selector: span[style="font-size:small;"]
selector: span.torrent-genre
description:
text: "{{ .Result.genre }}"
downloadvolumefactor:
+160
View File
@@ -0,0 +1,160 @@
---
id: bitgamer
name: bitGAMER
description: "bitGAMER is a Private Torrent Tracker for GAMES"
language: en-US
type: private
encoding: UTF-8
links:
- https://bitgamer.ch/
caps:
categorymappings:
- {id: 1, cat: XXX/Other, desc: "Adult Games"}
- {id: 3, cat: PC/0day, desc: "Burning/Ripping Tools"}
- {id: 4, cat: Books/Other, desc: "Guides/Game Documents"}
- {id: 13, cat: Movies/Other, desc: "Movies/TV/Video"}
- {id: 48, cat: Audio/Other, desc: "Music/OST"}
- {id: 52, cat: Console/Other, desc: "Amiga"}
- {id: 18, cat: PC/Mobile-iOS, desc: "Apple - iPhone/iPod/iPad"}
- {id: 54, cat: Console/Other, desc: "Arcade"}
- {id: 19, cat: Console/Other, desc: "Atari"}
- {id: 51, cat: Console/Other, desc: "Commodore 64"}
- {id: 22, cat: PC/Mobile-Android, desc: "Google - Android"}
- {id: 61, cat: Console/Other, desc: "Hyperspin"}
- {id: 24, cat: Console/XBox, desc: "Microsoft - Xbox"}
- {id: 25, cat: Console/XBox 360, desc: "Microsoft - Xbox 360"}
- {id: 49, cat: Console/XBox 360, desc: "Microsoft - Xbox 360 JTAG"}
- {id: 57, cat: Console/XBox One, desc: "Microsoft - Xbox One"}
- {id: 27, cat: Console/Other, desc: "Neo Geo"}
- {id: 55, cat: Console/3DS, desc: "Nintendo - 3DS"}
- {id: 28, cat: Console/NDS, desc: "Nintendo - DS"}
- {id: 29, cat: Console/Other, desc: "Nintendo - Game Boy Advance"}
- {id: 30, cat: Console/Other, desc: "Nintendo - Gameboy"}
- {id: 31, cat: Console/Other, desc: "Nintendo - Gamecube "}
- {id: 33, cat: Console/Other, desc: "Nintendo - N64 "}
- {id: 35, cat: Console/Other, desc: "Nintendo - NES"}
- {id: 50, cat: Console/Other, desc: "Nintendo - SNES"}
- {id: 63, cat: Console/Other, desc: "Nintendo - Switch"}
- {id: 37, cat: Console/Wii, desc: "Nintendo - Wii"}
- {id: 59, cat: Console/WiiU, desc: "Nintendo - Wii U"}
- {id: 53, cat: PC/Games, desc: "PC - DOS"}
- {id: 64, cat: PC/Games, desc: "PC - Linux"}
- {id: 39, cat: PC/Mac, desc: "PC - Mac OS X"}
- {id: 40, cat: PC/Games, desc: "PC - Windows"}
- {id: 41, cat: Console/Other, desc: "Sega"}
- {id: 42, cat: Console/Other, desc: "Sega - Dreamcast"}
- {id: 43, cat: Console/Other, desc: "Sega - Megadrive"}
- {id: 44, cat: Console/Other, desc: "Sony - Playstation"}
- {id: 45, cat: Console/Other, desc: "Sony - Playstation 2"}
- {id: 46, cat: Console/PS3, desc: "Sony - Playstation 3"}
- {id: 56, cat: Console/PS4, desc: "Sony - Playstation 4"}
- {id: 47, cat: Console/PSP, desc: "Sony - Playstation Portable "}
- {id: 58, cat: Console/PS Vita, desc: "Sony - Playstation Vita"}
modes:
search: [q]
book-search: [q]
allowrawsearch: true
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
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: td:has(:contains("Login failed"))
test:
path: my.php
selector: a[href^="logout.php"]
search:
paths:
- path: browse.php
inputs:
search: "{{ .Keywords }}"
# multi-cat search appears to be broken on site
category: 0
# 0: name, 1: descr, 2: both
blah: 0
# 0: include dead, 1: alive, 2: dead, 3: freeleech
incldead: "{{ if .Config.freeleech }}3{{ else }}0{{ end }}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: .outer > form > table > 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"][title]
attribute: title
details:
selector: a[href^="details.php"]
attribute: href
download:
selector: a[href^="download.php"]
attribute: href
date:
# several old torrents with `0000-00-00 00:00:00` dates
selector: td:nth-child(5):not(:contains("000-00-0000:00:00"))
filters:
- name: append
args: " +00:00" # GMT
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
optional: true
default: now
size:
selector: td:nth-child(6)
seeders:
selector: td:nth-child(10)
leechers:
selector: td:nth-child(11)
grabs:
selector: td:nth-child(7)
downloadvolumefactor:
case:
img[src*="/freeleech.png"]: 0
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# engine n/a
+65 -65
View File
@@ -4,7 +4,7 @@ name: Bithorlo
description: "Bithorlo (BHO) is a HUNGARIAN Private Torrent Tracker for MOVIES / GENERAL"
language: hu-HU
type: private
encoding: ISO-8859-2
encoding: UTF-8
links:
- https://www.bithorlo.info/
@@ -15,40 +15,40 @@ caps:
- {id: 19, cat: Books, desc: "E-book/Hun"}
# Játék
- {id: 38, cat: Console, desc: "Játék/Consol"}
- {id: 15, cat: PC/Games, desc: "Játék/ISO"}
- {id: 37, cat: PC/Games, desc: "Játék/Rip"}
- {id: 15, cat: PC/Games, desc: "Játék/ISO"}
# Filmek
- {id: 2, cat: Movies/DVD, desc: "DVD/Eng"}
- {id: 51, cat: Movies/SD, desc: "Cam/Eng"}
- {id: 50, cat: Movies/SD, desc: "Cam/Hun"}
- {id: 2, cat: Movies/DVD, desc: "DVD/Eng"}
- {id: 1, cat: Movies/DVD, desc: "DVD/Hun"}
- {id: 42, cat: Movies/DVD, desc: "Dvd9/Eng"}
- {id: 41, cat: Movies/DVD, desc: "Dvd9/Hun"}
- {id: 33, cat: TV, desc: "Sorozat/Eng"}
- {id: 29, cat: Movies/HD, desc: "HD/Eng"}
- {id: 28, cat: Movies/HD, desc: "HD/Hun"}
- {id: 33, cat: TV, desc: "Sorozat/Eng"}
- {id: 5, cat: TV, desc: "Sorozat/Hun"}
- {id: 52, cat: TV/HD, desc: "Sorozat/Eng/HD"}
- {id: 53, cat: TV/HD, desc: "Sorozat/Hun/HD"}
- {id: 1, cat: Movies/DVD, desc: "DVD/Hun"}
- {id: 5, cat: TV, desc: "Sorozat/Hun"}
- {id: 4, cat: Movies/SD, desc: "Xvid/Eng"}
- {id: 3, cat: Movies/SD, desc: "Xvid/Hun"}
# Zene
- {id: 12, cat: Audio, desc: "Zene/Eng"}
- {id: 13, cat: Audio, desc: "Zene/Hun"}
- {id: 12, cat: Audio, desc: "Zene/Eng"}
# Egyéb
- {id: 20, cat: Other, desc: "Képek"}
- {id: 21, cat: PC/Mobile-Other, desc: "Mobil"}
- {id: 20, cat: Other, desc: "Képek"}
# Program
- {id: 54, cat: PC/0day, desc: "Win/Program/ISO"}
- {id: 23, cat: PC/0day, desc: "Win/Program/Rip"}
# Felnőtt tartalom
- {id: 9, cat: XXX, desc: "XXX/Film"}
- {id: 10, cat: XXX, desc: "XXX/Kép"}
- {id: 9, cat: XXX, desc: "XXX/Film"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
book-search: [q]
@@ -56,121 +56,121 @@ 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: info_cookie
type: info_cookie
- 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>"
type: info_useragent
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
- name: sortBy
type: select
label: Sort requested from site
default: 4
label: SortBy requested from site
default: 2
options:
4: created
7: seeders
5: size
2: created
5: seeders
3: size
1: title
- name: type
- name: orderBy
type: select
label: Order requested from site
default: desc
label: OrderBy requested from site
default: 0
options:
desc: desc
asc: asc
0: desc
1: asc
- name: info_activity
type: info
label: Account Inactivity
default: "Vacation mode is used to avoid deletion due to inactivity for 90 days. You can turn it on or off in the Profile menu, set the appropriate option and save your changes."
login:
# using cookie method because login page has embedded Google reCAPTCHA
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="logout.php"]
path: index/
selector: a[href="/logout/"]
search:
paths:
- path: browse.php
# https://www.bithorlo.info/torrents/?action=search&categories[]=29&categories[]=4&search_text=&incldead=1&torrent_tags=
- path: torrents/
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active, 1 incldead, 2 onlydead, 3 freeleech
action: search
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
search_text: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
# 0 active, 1 incldead, 2 onlydead, 3 freeleech, 5 waiting for seed, 6 multiple upload
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
sort: "{{ .Config.sortBy }}"
order_by: "{{ .Config.orderBy }}"
headers:
User-Agent: ["{{ .Config.useragent }}"]
rows:
selector: tr[class^="browse"]
selector: table#TorrentTable > tbody > tr
fields:
category:
selector: a[href^="browse.php?cat="]
selector: td.fixed-width-category > a
attribute: href
filters:
- name: querystring
args: cat
- name: trim # some torrents have an extra space
args: categories[]
title:
selector: a[href^="torrent.php?id="]
attribute: title
selector: a.torrent-name
details:
selector: a[href^="torrent.php?id="]
selector: a.torrent-name
attribute: href
download:
selector: a[href^="download.php?id="]
selector: a[href^="/download/"]
attribute: href
poster:
selector: a[href^="torrent.php?id="][onmouseover]
attribute: onmouseover
selector: span.custom-popover
attribute: data-bs-content
filters:
- name: regexp
args: ", '(.*)'"
size:
selector: td:nth-child(4)
grabs:
selector: td:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
args: \"(.+?)\"
date:
selector: "a[style=\"font-size: 8pt;cursor: pointer;\"][title]"
selector: span.bg-green
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
size:
selector: td.fixed-width-size > span
grabs:
selector: td.fixed-width-completed
seeders:
selector: td.fixed-width-seeders
leechers:
selector: td.fixed-width-leechers
description:
case:
img[src="./themes/Born/nemlatta.png"]: Unverified
"*": Verified
downloadvolumefactor:
case:
img[title="Ingyenes letöltés"]: 0
"span:contains(\"FREE\")": 0
"*": 1
uploadvolumefactor:
selector: span:contains("Feltöltési szorzó")
filters:
- name: replace
args: ["Feltöltési szorzó × ", ""]
case:
"span:contains(\"2x\")": 2
"span:contains(\"3x\")": 3
"span:contains(\"4x\")": 4
"span:contains(\"5x\")": 5
"span:contains(\"6x\")": 6
"span:contains(\"7x\")": 7
"span:contains(\"8x\")": 8
"span:contains(\"9x\")": 9
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# engine n/a
+63 -41
View File
@@ -1,7 +1,7 @@
---
id: bithumen
name: BitHUmen
description: "BitHUmen is a Hungarian Private site for TV / MOVIES / GENERAL"
description: "BitHUmen is a HUNGARIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: hu-HU
type: private
encoding: ISO-8859-2
@@ -48,44 +48,61 @@ caps:
music-search: [q]
book-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info_cookie
type: info_cookie
- name: sort
type: select
label: Sort requested from site
default: added
options:
added: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: DESC
options:
DESC: desc
ASC: asc
- name: info_activity
type: info
label: Account Inactivity
default: "If you do not visit the site for 1 year, you will be banned for inactivity. The permanent deletion of your account after the ban is 2 years."
login:
path: takelogin.php
method: post
method: cookie
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: td.embedded:has(h2:contains("bejelentkezés"))
cookie: "{{ .Config.cookie }}"
test:
path: browse.php
selector: a[href*="logout.php"]
path: index.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
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
onlytitle: "{{ if .Query.IMDBID }}{{ else }}yes{{ end }}"
sort: "{{ .Config.sort }}"
d: "{{ .Config.type }}"
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="]
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: replace
args: ["details.php?id=", "download.php/"]
- name: append
args: "/invalid.torrent"
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title:
@@ -96,21 +113,30 @@ search:
details:
selector: a[href^="details.php?id="]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
# download button can be disabled in the profile, use details link instead
download:
selector: a[href^="details.php?id="]
attribute: href
filters:
- name: replace
args: ["details.php?id=", "download.php/"]
- name: append
args: "/invalid.torrent"
poster:
selector: a[onmouseover^="bithumen.UI.images.coverShow"]
attribute: onmouseover
filters:
- name: regexp
args: "\"(.*?)\""
category:
selector: a[href^="?cat="]
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
filters:
- name: querystring
args: cat
size:
selector: td:nth-child(6) > u
files:
selector: td:nth-child(3)
grabs:
selector: td:nth-child(7)
seeders:
selector: td:nth-child(8)
leechers:
@@ -118,21 +144,19 @@ search:
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
genre:
selector: span:has(a[href^="browse.php?genre="])
downloadvolumefactor:
text: 0
uploadvolumefactor:
selector: td:nth-child(5) > nobr > font:contains(" × ")
optional: true
default: 1
filters:
- name: replace
args: ["×", ""]
minimumseedtime:
# 1 day (as seconds = 24 x 60 x 60)
text: 86400
description:
selector: td:nth-child(2) > div
date_year:
selector: td:nth-child(5):contains('.')
optional: true
@@ -155,6 +179,4 @@ search:
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
+4 -3
View File
@@ -3,10 +3,11 @@ id: bitmagnet
name: BitMagnet (Local DHT)
description: "BitMagnet is a self-hosted BitTorrent DHT search engine"
language: en-US
type: private
type: semi-private
encoding: UTF-8
links:
- http://127.0.0.1:3333/
- http://bitmagnet:3333/
caps:
categorymappings:
@@ -48,8 +49,8 @@ search:
t: "{{ .Query.Type }}"
q: "{{ .Keywords }}"
cat: "{{ join .Categories \",\" }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tmdbId: "{{ .Query.TMDBID }}"
imdbid: "{{ .Query.IMDBIDShort }}"
tmdbid: "{{ .Query.TMDBID }}"
season: "{{ .Query.Season }}"
ep: "{{ .Query.Ep }}"
limit: 100
@@ -0,0 +1,166 @@
---
id: bitpalace
name: Bitpalace
description: "Bitpalace is a HUNGARIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: hu-HU
type: private
encoding: UTF-8
links:
- https://bitpalace.cc/
caps:
categorymappings:
- {id: 8, cat: Movies/BluRay, desc: "BLUERAY ENG"}
- {id: 7, cat: Movies/BluRay, desc: "BLUERAY HUN"}
- {id: 15, cat: Movies/DVD, desc: "DVD-R ENG"}
- {id: 2, cat: Movies/DVD, desc: "DVD-R HUN"}
- {id: 9, cat: Books, desc: "Ebook ENG"}
- {id: 5, cat: Books, desc: "Ebook HUN"}
- {id: 40, cat: Other, desc: "EGYÉBB"}
- {id: 16, cat: Movies/HD, desc: "HD ENG"}
- {id: 1, cat: Movies/HD, desc: "HD HUN"}
- {id: 25, cat: TV/Anime, desc: "MESE ENG"}
- {id: 24, cat: TV/Anime, desc: "MESE HUN"}
- {id: 18, cat: PC/Games, desc: "PC game ISO"}
- {id: 21, cat: Console, desc: "PC game KONZOL"}
- {id: 17, cat: PC/Games, desc: "PC game RIP"}
- {id: 27, cat: PC/ISO, desc: "Program ISO"}
- {id: 26, cat: PC/Mobile-Other, desc: "Program MOBIL"}
- {id: 78, cat: PC/0day, desc: "Program RIP"}
- {id: 23, cat: TV/SD, desc: "Sor.DVD-R ENG"}
- {id: 22, cat: TV/SD, desc: "Sor.DVD-R HUN"}
- {id: 14, cat: TV/SD, desc: "Sor.XVID ENG"}
- {id: 4, cat: TV, desc: "Sorozat HUN"}
- {id: 13, cat: Movies/SD, desc: "XVID ENG"}
- {id: 3, cat: Movies/SD, desc: "XVID HUN"}
- {id: 12, cat: XXX/DVD, desc: "XXX DVD-R"}
- {id: 6, cat: XXX/x264, desc: "XXX HD"}
- {id: 10, cat: XXX/ImageSet, desc: "XXX KÉPEK"}
- {id: 11, cat: XXX/XviD, desc: "XXX XVID"}
- {id: 19, cat: Audio/Video, desc: "ZENE Klipp"}
- {id: 20, cat: Audio/MP3, desc: "ZENE MP3"}
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: 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
method: form
form: form[action="/login_check"]
inputs:
_username: "{{ .Config.username }}"
_password: "{{ .Config.password }}"
logout: ""
error:
- selector: h3[style="color:red"]
test:
path: my
selector: a[href="/logout"]
search:
paths:
- path: browse
keywordsfilters:
# the site uses % for wildcard
- name: re_replace
args: ["[^a-zA-Z0-9]+", "%"]
inputs:
$raw: "{{ range .Categories }}cat[]={{.}}&{{end}}"
search: "{{ .Keywords }}"
# 0 active, 1 incldead, 2 onlydead
incldead: 1
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
# does not support imdbid searches
rows:
selector: "table#torrenttable > tbody > tr:has(a[onclick]):not(:contains(\"Törölt\")){{ if .Config.freeleech }}:has(img[src$=\"/freeicon.png\"]){{ else }}{{ end }}"
fields:
categorydesc:
selector: img
attribute: alt
title:
selector: a[onclick]
remove: style
_id:
selector: a[onclick]
attribute: onclick
filters:
- name: regexp
args: (\d+)
details:
text: "details?id={{ .Result._id }}"
download:
text: "/raw/download?id={{ .Result._id }}&name={{ .Result.title }}.torrent"
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
description:
case:
img[src$="/yes.png"]: "Verified"
img[src$="/nincs.png"]: "Unverified"
poster:
selector: img[width="200"][height="250"]
attribute: src
date:
selector: td:nth-last-child(6)
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
size:
selector: td:nth-last-child(5)
grabs:
selector: td:nth-last-child(4)
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
downloadvolumefactor:
case:
img[src$="/freeicon.png"]: 0
"*": 1
uploadvolumefactor:
case:
img[src$="/2xup.jpg"]: 2
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# engine n/a
+134 -149
View File
@@ -1,7 +1,7 @@
---
id: bitporn
name: BitPorn
description: "BitPorn is a HUNGARIAN Private Torrent Tracker for 3X"
name: BitPorn (API)
description: "BitPorn (Malacka) is a HUNGARIAN Private Torrent Tracker for 3X"
language: hu-HU
type: private
encoding: UTF-8
@@ -10,65 +10,68 @@ links:
caps:
categorymappings:
- {id: 418, cat: XXX, desc: "Amateur"}
- {id: 410, cat: XXX, desc: "Anal"}
- {id: 414, cat: XXX, desc: "Animal"}
- {id: 415, cat: XXX, desc: "Asian"}
- {id: 416, cat: XXX, desc: "BBW"}
- {id: 417, cat: XXX, desc: "BDSM"}
- {id: 419, cat: XXX, desc: "Big Ass"}
- {id: 420, cat: XXX, desc: "Big Tits"}
- {id: 421, cat: XXX, desc: "Black"}
- {id: 447, cat: XXX, desc: "Cartoon"}
- {id: 448, cat: XXX, desc: "Casting"}
- {id: 422, cat: XXX, desc: "Classic"}
- {id: 434, cat: XXX, desc: "Collection"}
- {id: 423, cat: XXX, desc: "Creampie"}
- {id: 424, cat: XXX, desc: "Cumshot"}
- {id: 451, cat: XXX, desc: "Deepthroat"}
- {id: 455, cat: XXX, desc: "Extreme"}
- {id: 454, cat: XXX, desc: "Family"}
- {id: 425, cat: XXX, desc: "Feature"}
- {id: 426, cat: XXX, desc: "Fetish"}
- {id: 457, cat: XXX, desc: "Fisting"}
- {id: 453, cat: XXX, desc: "Gangbang"}
- {id: 427, cat: XXX, desc: "Gay / Bi"}
- {id: 412, cat: XXX, desc: "Hair"}
- {id: 411, cat: XXX, desc: "Hardcore"}
- {id: 456, cat: XXX, desc: "HiddenCam"}
- {id: 428, cat: XXX, desc: "Homemade"}
- {id: 429, cat: XXX, desc: "Interracial"}
- {id: 430, cat: XXX, desc: "Lesbian"}
- {id: 431, cat: XXX, desc: "Magyar"}
- {id: 432, cat: XXX, desc: "Masturbation"}
- {id: 433, cat: XXX, desc: "Mature"}
- {id: 435, cat: XXX, desc: "Milf"}
- {id: 436, cat: XXX, desc: "Old and Young"}
- {id: 437, cat: XXX, desc: "Parody"}
- {id: 449, cat: XXX, desc: "Pictures"}
- {id: 438, cat: XXX, desc: "Pissing"}
- {id: 439, cat: XXX, desc: "POV"}
- {id: 440, cat: XXX, desc: "Pregnant"}
- {id: 452, cat: XXX, desc: "Public"}
- {id: 441, cat: XXX, desc: "Shemale"}
- {id: 442, cat: XXX, desc: "Softcore"}
- {id: 443, cat: XXX, desc: "Squirt"}
- {id: 444, cat: XXX, desc: "Straight"}
- {id: 445, cat: XXX, desc: "Teen"}
- {id: 450, cat: XXX, desc: "Threesome"}
- {id: 446, cat: XXX, desc: "VR"}
- {id: 458, cat: XXX, desc: "Uncategorized"}
- {id: 4, cat: XXX, desc: Amateur"}
- {id: 5, cat: XXX, desc: Anal"}
- {id: 6, cat: XXX, desc: Asian"}
- {id: 7, cat: XXX, desc: BBW"}
- {id: 8, cat: XXX, desc: BDSM"}
- {id: 9, cat: XXX, desc: Big Ass"}
- {id: 10, cat: XXX, desc: Big Tits"}
- {id: 11, cat: XXX, desc: Black"}
- {id: 12, cat: XXX, desc: Cartoon"}
- {id: 13, cat: XXX, desc: Casting"}
- {id: 14, cat: XXX, desc: Classic"}
- {id: 15, cat: XXX, desc: Collection"}
- {id: 16, cat: XXX, desc: Creampie"}
- {id: 17, cat: XXX, desc: Cumshot"}
- {id: 18, cat: XXX, desc: Deepthroat"}
- {id: 19, cat: XXX, desc: Extreme"}
- {id: 20, cat: XXX, desc: Fansite"}
- {id: 21, cat: XXX, desc: Family"}
- {id: 22, cat: XXX, desc: Feature"}
- {id: 23, cat: XXX, desc: Fetish"}
- {id: 24, cat: XXX, desc: Fisting"}
- {id: 25, cat: XXX, desc: Gangbang"}
- {id: 26, cat: XXX, desc: Game"}
- {id: 27, cat: XXX, desc: Gay / Bi"}
- {id: 28, cat: XXX, desc: Hair"}
- {id: 29, cat: XXX, desc: Hardcore"}
- {id: 30, cat: XXX, desc: HiddenCam"}
- {id: 31, cat: XXX, desc: Homemade"}
- {id: 32, cat: XXX, desc: Interracial"}
- {id: 33, cat: XXX, desc: Lesbian"}
- {id: 34, cat: XXX, desc: Magyar"}
- {id: 35, cat: XXX, desc: Masturbation"}
- {id: 36, cat: XXX, desc: Mature"}
- {id: 37, cat: XXX, desc: Milf"}
- {id: 53, cat: XXX, desc: Movie"}
- {id: 38, cat: XXX, desc: Old and Young"}
- {id: 39, cat: XXX, desc: Parody"}
- {id: 40, cat: XXX, desc: Pictures"}
- {id: 41, cat: XXX, desc: Pissing"}
- {id: 42, cat: XXX, desc: POV"}
- {id: 43, cat: XXX, desc: Pregnant"}
- {id: 44, cat: XXX, desc: Public"}
- {id: 45, cat: XXX, desc: Shemale"}
- {id: 46, cat: XXX, desc: Softcore"}
- {id: 47, cat: XXX, desc: Squirt"}
- {id: 48, cat: XXX, desc: Straight"}
- {id: 49, cat: XXX, desc: Teen"}
- {id: 50, cat: XXX, desc: Threesome"}
- {id: 51, cat: XXX, desc: VR"}
- {id: 52, cat: XXX, desc: Uncategorized"}
modes:
search: [q]
settings:
- name: username
- name: apikey
type: text
label: Username
- name: password
type: password
label: Password
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://bitporn.eu/\" target=\"_blank\">BitPorn</a> account <i>My Settings</i> page and clicking on the <b>API Key</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -76,12 +79,12 @@ settings:
- name: sort
type: select
label: Sort requested from site
default: 4
default: created_at
options:
4: created
7: seeders
5: size
1: title
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
@@ -89,121 +92,103 @@ settings:
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: "Inactive accounts will be deleted based on the following rules:<ul><li>Elite-ranked or higher-ranked accounts are never deleted after parking (in the control panel).</li><li>Veteran-ranked or higher-ranked accounts are never deleted.</li><li>Parked accounts are deleted if users haven't logged in for more than 400 days.</li><li>Non-parked accounts are deleted if users haven't logged in for more than 150 days.</li><li>Accounts with both uploaded and downloaded quantities at 0 will be deleted if users haven't logged in for more than 100 consecutive days.</li></ul>"
default: "You must log in to the site at least once a month; otherwise, your account will be suspended."
login:
path: takelogin.php
method: post
inputs:
secret: ""
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
path: /api/torrents
method: get
error:
- selector: td.embedded:has(h2:contains("Bejelentkezés sikertelen!"))
test:
path: index.php
selector: a[href="logout.php"]
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
- selector: :root:contains("Account is Banned")
search:
paths:
- path: torrents.php
# https://hdinnovations.github.io/UNIT3D/torrent_api.html
# https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
- path: api/torrents/filter
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 incldead, 1 active, 2 dead
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl
search_area: 0
# 0 AND, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: table.torrents > tbody > tr:has(a[href^="details.php?id="])
selector: data
attribute: attributes
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
selector: category_id
title:
selector: a[title][href^="details.php?id="]
attribute: title
optional: true
default: "{{ .Result.title_default }}"
selector: name
details:
selector: a[href^="details.php?id="]
attribute: href
selector: details_link
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: " +01:00" # CET
- 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: " +01:00" # CET
- 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)
selector: download_link
files:
selector: num_file
seeders:
selector: td.rowfollow:nth-child(6)
selector: seeders
leechers:
selector: td.rowfollow:nth-child(7)
selector: leechers
grabs:
selector: td.rowfollow:nth-child(8)
selector: times_completed
date:
# "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50
selector: created_at
filters:
- name: append
args: " +00:00" # GMT
- name: dateparse
args: "MM/dd/yyyy HH:mm:ss zzz"
size:
selector: size
_featured:
selector: featured
case:
False: "{{ .False }}"
True: "{{ .True }}"
downloadvolumefactor_freeleech:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
0%: 1 # not free
25%: 0.75
50%: 0.5
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
downloadvolumefactor:
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
uploadvolumefactor_double_upload:
# api returns False, True
selector: double_upload
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
False: 1 # normal
True: 2 # double
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
minimumratio:
text: 1.0
minimumseedtime:
# 48 hours (as seconds = 2 x 24 x 60 x 60)
text: 172800
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.5 2023-07-06
# json UNIT3D 9.1.7 (custom)
+80 -128
View File
@@ -1,54 +1,68 @@
---
id: bitsearch
replaces:
- solidtorrents
name: BitSearch
description: "BitSearch is a Public torrent meta-search engine"
description: "BitSearch (Solid Torrents) is a Public torrent meta-search engine"
language: en-US
type: public
encoding: UTF-8
requestDelay: 2
links:
- https://bitsearch.to/
- https://solidtorrents.to/
legacylinks:
- https://bitsearch.nocensor.biz/
- https://bitsearch.nocensor.sbs/
- https://bitsearch.nocensor.world/
- https://bitsearch.nocensor.lol/
- https://bitsearch.mrunblock.guru/
- https://bitsearch.mrunblock.life/
- https://bitsearch.nocensor.click/
- https://bitsearch.nocensor.cloud/
- https://bitsearch.mrunblock.bond/
- https://solidtorrents.net/
- https://solidtorrents.nocensor.cloud/
- https://solidtorrents.eu/
caps:
categories:
Anime: TV/Anime
Anime/Dub/Dual Audio: TV/Anime
Anime/Raw: TV/Anime
Anime/Subbed: TV/Anime
AudioBook: Audio/Audiobook
eBook: Books/EBook
"Ebook/Course": Books/EBook
Games: PC/Games
"Games/PC": PC/Games
Books: Books
Books/Academic: Books/EBook
Books/Comics: Books/Comics
Books/Fiction: Books/EBook
Books/Magazines: Books/Mags
Books/Non-fiction: Books/EBook
Ebook/Course: Books/EBook
Games: Console
Games/Console: Console
Games/Mobile: PC/Mobile-Other
Games/PC: PC/Games
Games/RIP: PC/Games
Movies: Movies
Movies/Dub/Dual Audio: Movies
Music: Audio
"Music/Album": Audio
"Music/mp3": Audio/MP3
"Music/Lossless": Audio/Lossless
"Music/Video": Audio/Video
Music/Album: Audio
Music/Discography: Audio
Music/FLAC: Audio/Lossless
Music/Lossless: Audio/Lossless
Music/MP3: Audio/MP3
Music/Single: Audio
Other: Other
"Other/Android": PC/Mobile-Android
"Other/Archive": Other
"Other/Audio": Audio
"Other/Database": PC
"Other/DiskImage": PC/ISO
"Other/Document": Books/Comics
"Other/Image": Other/Misc
"Other/Program": PC/0day
"Other/Sourcecode": PC
"Other/Source Code": PC
"Other/Video": TV
Other/Android: PC/Mobile-Android
Other/Archive: Other
Other/Audio: Audio
Other/Database: PC
Other/DiskImage: PC/ISO
Other/Document: Books/Comics
Other/Image: Other/Misc
Other/Program: PC
Other/Source Code: PC
Other/Video: TV
Softwares: PC/0day
"Softwares/Windows": PC/0day
Softwares/Android: PC/Mobile-Android
Softwares/Linux: PC
Softwares/MacOS: PC/Mac
Softwares/Windows: PC/0day
Softwares/iOS: PC/Mobile-iOS
TV: TV
Unknown: Other
XXX: XXX
modes:
search: [q]
@@ -58,135 +72,73 @@ caps:
book-search: [q]
settings:
- name: prefer_magnet_links
type: checkbox
label: Prefer Magnet Links
default: false
- name: sort
type: select
label: Sort requested from site
default: date
label: Sort requested from site.
default: created
options:
date: created
created: created
seeders: seeders
size: size
- name: type
type: select
label: Order requested from site
label: Order requested from site.
default: desc
options:
desc: desc
asc: asc
download:
selectors:
- selector: a[href^="magnet:?xt"]
attribute: href
search:
paths:
# https://bitsearch.to/search?q=&sort=date&order=desc
- path: search
inputs:
q: "{{ .Keywords }}"
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
limit: 100
page: 1
# https://bitsearch.to/search?q=spongebob&sortBy=created&order=desc&page=1
- path: "{{ if .Keywords }}search?q={{ .Keywords }}&sortBy={{ .Config.sort }}&order={{ .Config.type }}&page=1{{ else }}latest{{ end }}"
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: div.search-result:has(a.dl-torrent), li.search-result:has(a.dl-torrent)
selector: div.space-y-4 > div.bg-white > div.items-start
fields:
category:
selector: a.category
# latest, search
selector: div.space-y-2 > span:nth-child(1), span.space-x-1:nth-child(1)
title:
selector: h5 a
selector: h3 > a
details:
selector: h5 a
selector: h3 > a
attribute: href
download_optional:
selector: a.dl-torrent
attribute: href
optional: true
download:
text: "{{ if .Config.prefer_magnet_links }}{{ else }}{{ .Result.download_optional }}{{ end }}"
optional: true
magnet:
selector: a[href^="magnet:?xt"]
selector: h3 > a
attribute: href
infohash:
selector: a[href^="magnet:?xt"]
attribute: href
filters:
- name: regexp
args: ([A-F|a-f|0-9]{40})
grabs_dot:
selector: div.stats div:has(img[alt="Download"]):contains(".")
optional: true
filters:
- name: replace
args: [".", ""]
- name: replace
args: ["K", "00"]
- name: replace
args: ["M", "00000"]
grabs_nodot:
selector: div.stats div:has(img[alt="Download"]):not(:contains("."))
optional: true
filters:
- name: replace
args: ["K", "000"]
- name: replace
args: ["M", "000000"]
grabs:
text: "{{ if or .Result.grabs_dot .Result.grabs_nodot }}{{ or .Result.grabs_dot .Result.grabs_nodot }}{{ else }}0{{ end }}"
size:
selector: div.stats div:has(img[alt="Size"])
seeders_dot:
selector: div.stats div:has(img[alt="Seeder"]):contains(".")
selector: div.space-y-2 > span:nth-child(2), span.space-x-1:nth-child(2)
date_year:
selector: div.space-y-2 > span:nth-child(3):contains("/"), span.space-x-1:nth-child(3):contains("/")
optional: true
filters:
- name: replace
args: [".", ""]
- name: replace
args: ["K", "00"]
- name: replace
args: ["M", "00000"]
seeders_nodot:
selector: div.stats div:has(img[alt="Seeder"]):not(:contains("."))
optional: true
filters:
- name: replace
args: ["K", "000"]
- name: replace
args: ["M", "000000"]
seeders:
text: "{{ if or .Result.seeders_dot .Result.seeders_nodot }}{{ or .Result.seeders_dot .Result.seeders_nodot }}{{ else }}0{{ end }}"
leechers_dot:
selector: div.stats div:has(img[alt="Leecher"]):contains(".")
optional: true
filters:
- name: replace
args: [".", ""]
- name: replace
args: ["K", "00"]
- name: replace
args: ["M", "00000"]
leechers_nodot:
selector: div.stats div:has(img[alt="Leecher"]):not(:contains("."))
optional: true
filters:
- name: replace
args: ["K", "000"]
- name: replace
args: ["M", "000000"]
leechers:
text: "{{ if or .Result.leechers_dot .Result.leechers_nodot }}{{ or .Result.leechers_dot .Result.leechers_nodot }}{{ else }}0{{ end }}"
date:
selector: div.stats div:has(img[alt="Date"])
filters:
- name: dateparse
args: "MMM d, yyyy"
args: "M/d/yyyy"
date_ago:
selector: div.space-y-2 > span:nth-child(3):contains("ago"), span.space-x-1:nth-child(3):contains("ago")
optional: true
filters:
- name: timeago
date:
text: "{{ if or .Result.date_year .Result.date_ago }}{{ or .Result.date_year .Result.date_ago }}{{ else }}now{{ end }}"
seeders:
selector: div.space-x-3 > span:nth-child(1), span:contains("seeders")
leechers:
selector: div.space-x-3 > span:nth-child(2), span:contains("leechers")
grabs:
selector: span:contains("downloads")
optional: true
downloadvolumefactor:
text: 0
uploadvolumefactor:
@@ -0,0 +1,181 @@
---
id: bitsexy-api
name: BitSexy (API)
description: "BitSexy is a Private Torrent Tracker for 3X"
language: en-US
type: private
encoding: UTF-8
links:
- https://bitsexy.cc/
caps:
categorymappings:
- {id: 1, cat: XXX/x264, desc: "Movies"}
- {id: 2, cat: XXX/Pack, desc: "Pack"}
- {id: 3, cat: XXX/ImageSet, desc: "Images"}
- {id: 4, cat: Console, desc: "Games"}
- {id: 5, cat: Books, desc: "Books"}
modes:
search: [q]
movie-search: [q]
book-search: [q]
settings:
- name: apikey
type: text
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://bitsexy.cc/\" target=\"_blank\">BitSexy</a> account <i>My Settings</i> page and clicking on the <b>API Key</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: single_file_release_use_filename
type: checkbox
label: Use filename as title for single file releases
default: true
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_activity
type: info
label: Account Inactivity
default: "<ul><li>You must log in once every 60 days or seed at least 1 torrent to not get disabled</li><li>Once disabled, you have another 60 days to log back in and have your account re-activated. You may need to contact Helpdesk to do so</li><li>Disabled account will be deleted after 180 days of inactivity</li><ul>"
login:
path: /api/torrents
method: get
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
- selector: :root:contains("Account is Banned")
search:
paths:
# https://hdinnovations.github.io/UNIT3D/torrent_api.html
# https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
- path: api/torrents/filter
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
details:
selector: details_link
download:
selector: download_link
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: replace
args: [" & ", "_&_"]
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
description:
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: times_completed
date:
# "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50
selector: created_at
filters:
- name: append
args: " +00:00" # GMT
- name: dateparse
args: "MM/dd/yyyy HH:mm:ss zzz"
size:
selector: size
_featured:
selector: featured
case:
False: "{{ .False }}"
True: "{{ .True }}"
downloadvolumefactor_freeleech:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
0%: 1 # not free
25%: 0.75
50%: 0.5
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
downloadvolumefactor:
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
uploadvolumefactor_double_upload:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
uploadvolumefactor:
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# json UNIT3D 9.1.7 (custom)
+16 -57
View File
@@ -1,7 +1,7 @@
---
id: bitturk
name: BiTTuRK
description: "BiTTuRK is a Turkish Private Torrent Tracker for HD MOVIES / TV / GENERAL. This Indexer is for English only."
description: "BiTTuRK is a TURKISH Private Torrent Tracker for HD MOVIES / TV / GENERAL. This Indexer is for English only."
language: en-US
type: private
encoding: UTF-8
@@ -13,67 +13,23 @@ legacylinks:
caps:
categorymappings:
- {id: 56, cat: Movies, desc: "BTRG"}
- {id: 95, cat: Movies, desc: "BTRG HMAX"}
- {id: 57, cat: Movies, desc: "Yerli Dizi"}
- {id: 62, cat: Movies, desc: "Yab@ncı Dizi"}
- {id: 63, cat: Movies, desc: "Türkçe Film"}
- {id: 64, cat: Movies, desc: "Türk Filmi"}
- {id: 66, cat: Movies/HD, desc: "x265"}
- {id: 67, cat: XXX, desc: "XxX"}
- {id: 68, cat: Movies, desc: "Dual (TR-~)"}
- {id: 71, cat: Movies, desc: "NFLIX"}
- {id: 78, cat: TV, desc: "EXXEN"}
- {id: 79, cat: TV, desc: "BLUTV"}
- {id: 90, cat: TV, desc: "Disney+"}
- {id: 91, cat: TV, desc: "Prime Video"}
- {id: 93, cat: TV, desc: "Gain"}
- {id: 94, cat: TV, desc: "ATVP"}
- {id: 58, cat: Movies, desc: "Film"}
- {id: 72, cat: Movies, desc: "Belgesel"}
- {id: 60, cat: Movies/3D, desc: "3D"}
- {id: 76, cat: Movies/UHD, desc: "4K UHD"}
- {id: 80, cat: TV/Sport, desc: "Formula-1"}
- {id: 45, cat: Other, desc: "Eğitim / Prog"}
- {id: 1, cat: Movies, desc: "Filmler"}
- {id: 14, cat: Movies/3D, desc: "3D Film"}
- {id: 77, cat: Movies/UHD, desc: "4K UHD"}
- {id: 16, cat: Movies, desc: "Animasyon"}
- {id: 17, cat: TV/Anime, desc: "Anime"}
- {id: 31, cat: Movies, desc: "Belgesel"}
- {id: 32, cat: Movies/BluRay, desc: "Bluray"}
- {id: 33, cat: Movies/HD, desc: "BRRiP"}
- {id: 34, cat: Movies, desc: "Çizgi Film"}
- {id: 35, cat: Movies, desc: "D-Z0N3"}
- {id: 36, cat: Movies/DVD, desc: "DVD"}
- {id: 37, cat: Movies, desc: "MP4"}
- {id: 38, cat: Movies, desc: "Türk Filmi"}
- {id: 39, cat: Movies, desc: "Türkçe BoX"}
- {id: 40, cat: Movies, desc: "Türkçe Film"}
- {id: 41, cat: Movies, desc: "ViP"}
- {id: 42, cat: Movies/SD, desc: "XviD"}
- {id: 43, cat: Movies/SD, desc: "XviD BoX"}
- {id: 55, cat: Movies/WEB-DL, desc: "WEB-DL"}
- {id: 7, cat: Audio, desc: "Müzik"}
- {id: 20, cat: Audio, desc: "Türkçe MüziK"}
- {id: 46, cat: Audio, desc: "Yab@ncı MüziK"}
- {id: 21, cat: Audio/Video, desc: "Video Klipler"}
- {id: 2, cat: Console, desc: "Oyun"}
- {id: 74, cat: PC/Games, desc: "Oyun PC"}
- {id: 84, cat: Console/PS3, desc: "Oyun Playstation"}
- {id: 82, cat: Console/PSP, desc: " Oyun PSP"}
- {id: 83, cat: Console/Other, desc: "Oyun Gameboy"}
- {id: 87, cat: Console/XBox, desc: "Oyun XBOX"}
- {id: 88, cat: Console/Other, desc: "Oyun NEO-GEO"}
- {id: 89, cat: Console/Wii, desc: "Oyun Nintendo Wii"}
- {id: 6, cat: PC/0day, desc: "Program"}
- {id: 92, cat: PC/Mobile-Android, desc: "Android"}
- {id: 47, cat: Other, desc: "Resimler"}
- {id: 113, cat: Movies, desc: "Yabancı Dil"}
- {id: 77, cat: Movies/UHD, desc: "4K UHD / 3D"}
- {id: 16, cat: Movies, desc: "Animasyon"}
- {id: 31, cat: Movies, desc: "Belgesel"}
- {id: 112, cat: XXX, desc: "XxX"}
- {id: 48, cat: TV, desc: "Televizyon"}
- {id: 49, cat: TV/HD, desc: "Tv HD"}
- {id: 50, cat: TV, desc: "Yab@ncı Dizi"}
- {id: 51, cat: TV, desc: "Yerli Dizi"}
- {id: 44, cat: Books, desc: "E-BooK"}
- {id: 7, cat: Audio, desc: "Müzik"}
- {id: 20, cat: Audio, desc: "Türkçe MüziK"}
- {id: 46, cat: Audio, desc: "Yab@ncı MüziK"}
- {id: 2, cat: Console, desc: "Oyun / Program"}
- {id: 44, cat: Books, desc: "E-BooK / Eğitim"}
modes:
search: [q]
@@ -96,7 +52,7 @@ settings:
- name: info
type: info
label: Layout
default: "<ol><li>Only the English Classic profile is supported.</li><li>Make sure to set the <b>Torrent Listing (Listeleme Biçimi)</b> option in your profile to <b>Classic (Klasik)</b></li><li>And set the <b>Language (Dil)</b> to <b>English</b></li><li>Using the <i>Modern</i> theme will prevent results, and using <i>Turkish</i> will prevent upload dates.</li></ol>"
default: "<ul><li>Only the English Classic profile is supported.</li><li>Make sure to set the <b>Torrent Listing (Listeleme Biçimi)</b> option in your profile to <b>Classic (Klasik)</b></li><li>And set the <b>Language (Dil)</b> to <b>English</b></li><li>Using the <i>Modern</i> theme will prevent results, and using <i>Turkish</i> will prevent upload dates.</li></ul>"
- name: sort
type: select
label: Sort requested from site
@@ -112,6 +68,10 @@ settings:
options:
desc: desc
asc: asc
- name: info_results
type: info
label: Search results
default: "If you are getting the error <b>Found no results while trying to browse this tracker</b> then first access the site with your browser and check that you are not being forced to change your password because it has expired after 365 days."
login:
path: ?p=home&pid=1
@@ -148,7 +108,6 @@ search:
keywords: "{{ .Keywords }}"
# name, description, both, uploader
search_type: name
searchin: title
"sortOptions[sortBy]": "{{ .Config.sort }}"
"sortOptions[sortOrder]": "{{ .Config.type }}"
# Drop error trap to stop Sonarr disabling indexer, see https://github.com/Jackett/Jackett/issues/1415
+1 -3
View File
@@ -44,9 +44,7 @@ settings:
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>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
+119
View File
@@ -0,0 +1,119 @@
---
id: blueroms
name: BlueRoms
description: "BlueRoms is a Public Torrent Tracker for ROMS"
language: en-US
type: public
encoding: UTF-8
links:
- https://www.blueroms.ws/
caps:
categorymappings:
- {id: "/arcade", cat: Console/Other, desc: "Arcade"}
- {id: "/dreamcast", cat: Console/Other, desc: "Dreamcast"}
- {id: "/gba", cat: Console/Other, desc: "Game Boy Advance"}
- {id: "/genesis", cat: Console/Other, desc: "Mega Drive - Genesis"}
- {id: "/neogeo", cat: Console/Other, desc: "Neo Geo"}
- {id: "/3ds", cat: Console/3DS, desc: "Nintendo 3DS"}
- {id: "/n64", cat: Console/NDS, desc: "Nintendo 64"}
- {id: "/nds", cat: Console/NDS, desc: "Nintendo DS"}
- {id: "/gamecube", cat: Console/Other, desc: "Nintendo GameCube"}
- {id: "/switch", cat: Console/NDS, desc: "Nintendo Switch"}
- {id: "/wii", cat: Console/Wii, desc: "Nintendo Wii"}
- {id: "/wiiu", cat: Console/WiiU, desc: "Nintendo Wii U"}
- {id: "/ps1", cat: Console/PS3, desc: "PlayStation"}
- {id: "/ps2", cat: Console/PS3, desc: "PlayStation 2"}
- {id: "/ps3", cat: Console/PS3, desc: "PlayStation 3"}
- {id: "/ps4", cat: Console/PS4, desc: "PlayStation 4"}
- {id: "/psp", cat: Console/PSP, desc: "PlayStation Portable"}
- {id: "/psvita", cat: Console/PS Vita, desc: "PlayStation Vita"}
- {id: "/saturn", cat: Console/Other, desc: "Saturn"}
- {id: "/snes", cat: Console/NDS, desc: "Super Nintendo"}
- {id: "/xbox", cat: Console/XBox, desc: "Xbox"}
modes:
search: [q]
settings:
- name: sort
type: select
label: Sort requested from site
default: date
options:
date: created
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
download:
selectors:
- selector: a[href^="magnet:?xt="]
attribute: href
search:
paths:
# https://www.blueroms.ws/search?page=1&q=&g=0&p=0&ord=desc&at=date
- path: search
allowEmptyInputs: true
inputs:
page: 1
q: "{{ .Keywords }}"
# genre: 0 all, 200 action, 207 adventure, etc
g: 0
# categories does not support multi selection so defaulting to all
p: 0
ord: "{{ .Config.type }}"
at: "{{ .Config.sort }}"
rows:
selector: div.row > div.col-xs-12
fields:
category:
selector: p.card-text a
attribute: href
title_platform:
selector: p.card-text a
title:
selector: h4.card-title a
filters:
- name: append
args: " - {{ .Result.title_platform }}"
details:
selector: h4.card-title a
attribute: href
download:
selector: div.card-footer a
attribute: href
poster:
selector: img
attribute: src
size:
selector: p.card-text
filters:
- name: regexp
args: ([\d\.]+[T|G|M|K]iB)
date:
# release date is for game, not torrent
text: now
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
description:
selector: p.card-text
filters:
- name: regexp
args: "(Score: .+)"
# engine n/a
@@ -0,0 +1,179 @@
---
id: bluraytracker
name: BlurayTracker
description: "BlurayTracker is a CZECH Private Torrent Tracker for MOVIES / TV / GENERAL"
language: cs-CZ
type: private
encoding: UTF-8
links:
- https://bluraytracker.cz/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "-----Filmy-----"}
- {id: 34, cat: Movies, desc: " |- Filmy CZ/SK Dabing"}
- {id: 33, cat: Movies, desc: " |- Filmy CZ/SK Titulky"}
- {id: 49, cat: Movies/HD, desc: " |- HD/FHD Filmy"}
- {id: 17, cat: Movies/UHD, desc: " |- 4k/UHD Filmy "}
- {id: 31, cat: Movies/BluRay, desc: " |- Bluray DB/BD/DVD"}
- {id: 51, cat: Movies/3D, desc: " |- 3D Filmy"}
- {id: 45, cat: Movies/Other, desc: " |- Kreslené/Anime"}
- {id: 40, cat: TV, desc: "-----TV-----"}
- {id: 32, cat: TV, desc: " |- Serialy CZ/SK/EN"}
- {id: 47, cat: TV, desc: " |- Serialy"}
- {id: 38, cat: TV/Documentary, desc: " |- Dokumenty / TV Reality"}
- {id: 35, cat: TV/Sport, desc: " |- Sport"}
- {id: 6, cat: PC, desc: "Aplikace/Programy"}
- {id: 18, cat: PC/0day, desc: " |- Programy PC"}
- {id: 19, cat: PC/Mac, desc: " |- Programy MacOS"}
- {id: 7, cat: Audio, desc: "-----Hudba-----"}
- {id: 39, cat: Audio/Audiobook, desc: " |- Mluvene Slovo"}
- {id: 21, cat: Audio/MP3, desc: " |- MP3"}
- {id: 43, cat: Audio/Other, desc: " |- SoundTrack"}
- {id: 53, cat: Audio/Lossless, desc: " |- Flac"}
- {id: 2, cat: PC/Games, desc: "--Hry--"}
- {id: 3, cat: Console/PS3, desc: " |- Sony PS"}
- {id: 4, cat: Console/Wii, desc: " |- Wii"}
- {id: 26, cat: Console/XBox, desc: " |- XboX"}
- {id: 27, cat: PC/Games, desc: " |- PC"}
- {id: 28, cat: Console/NDS, desc: " |- Nintendo"}
- {id: 42, cat: Books, desc: "Knihy A Časopisy"}
- {id: 36, cat: Other, desc: "Ostatní"}
# not listed
- {id: 41, cat: Movies, desc: "VIP Torrent"}
- {id: 48, cat: Movies, desc: " |- RLS"}
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: sort
type: select
label: Sort requested from site
default: added
options:
added: created
seeders: seeders
size: size
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: ?p=home&pid=1
method: form
form: form#sls_form
submitpath: ajax/login.php
inputs:
action: login
loginbox_membername: "{{ .Config.username }}"
loginbox_password: "{{ .Config.password }}"
loginbox_remember: true
error:
- selector: div.error
test:
path: ?p=home&pid=1
selector: div#member_info_bar
search:
paths:
- path: /
inputs:
p: torrents
pid: 32
$raw: "{{ range .Categories }}cid[]={{.}}&{{end}}"
keywords: "{{ .Keywords }}"
# name, description, both, uploader
search_type: name
"sortOptions[sortBy]": "{{ .Config.sort }}"
"sortOptions[sortOrder]": "{{ .Config.type }}"
# does not support imdbid search but has imdbid links in results.
error:
- selector: div.error:not(:contains("There are no results found."))
rows:
selector: "div.torrent-box[id^=\"torrent_\"]{{ if .Config.freeleech }}:has(img[src$=\"/torrent_free.png\"]){{ else }}{{ end }}"
fields:
category:
selector: a[href*="?p=torrents&pid=10&cid="]
attribute: href
filters:
- name: querystring
args: cid
title:
selector: a[href*="?p=torrents&pid=10&action=details&tid="]
details:
selector: a[href*="?p=torrents&pid=10&action=details&tid="]
attribute: href
download:
selector: a[href*="?p=torrents&pid=10&action=download&tid="]
attribute: href
magnet:
selector: a[href^="magnet:?xt="]
attribute: href
optional: true
poster:
selector: a[href*="data/torrents/torrent_images/"]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
size:
selector: a[rel="torrent_size"]
grabs:
selector: a[rel="times_completed"]
seeders:
selector: a[rel="torrent_seeders"]
leechers:
selector: a[rel="torrent_leechers"]
date_day:
selector: div.torrentOwner:contains("day")
# auto adjusted by site account profile
optional: true
filters:
- name: regexp
args: "Uploaded (.+?) by"
- name: fuzzytime
date_year:
selector: div.torrentOwner:contains("-")
# auto adjusted by site account profile
optional: true
filters:
- name: regexp
args: "Uploaded (.+?) by"
- name: dateparse
args: "dd-MM-yyyy HH:mm"
date_unix:
selector: div.torrentOwner abbr
optional: true
attribute: data-time
date:
text: "{{ if or .Result.date_day .Result.date_year .Result.date_unix }}{{ or .Result.date_day .Result.date_year .Result.date_unix }}{{ else }}now{{ end }}"
downloadvolumefactor:
case:
img[src$="/torrent_free.png"]: 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 0.5
# TSUE 2.2
+33 -18
View File
@@ -13,14 +13,17 @@ legacylinks:
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movie"}
- {id: 8, cat: Other, desc: "Other"}
- {id: 2, cat: TV, desc: "TV Show"}
- {id: 3, cat: Movies/Other, desc: "FANRES"}
- {id: 5, cat: Movies/Other, desc: "Trailer"}
- {id: 9, cat: Audio/Video, desc: "Live Concert"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
settings:
- name: apikey
@@ -62,17 +65,17 @@ settings:
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 }}."
- selector: :root:contains("Account is Banned")
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
# https://hdinnovations.github.io/UNIT3D/torrent_api.html
# https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
- path: api/torrents/filter
response:
type: json
@@ -106,12 +109,17 @@ search:
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:
@@ -132,10 +140,13 @@ search:
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
description:
text: "{{ .Result.genre }}"
files:
selector: num_file
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
@@ -152,7 +163,12 @@ search:
args: "MM/dd/yyyy HH:mm:ss zzz"
size:
selector: size
downloadvolumefactor:
_featured:
selector: featured
case:
False: "{{ .False }}"
True: "{{ .True }}"
downloadvolumefactor_freeleech:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
@@ -162,21 +178,20 @@ search:
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
uploadvolumefactor:
downloadvolumefactor:
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
uploadvolumefactor_double_upload:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
uploadvolumefactor:
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
# minimumratio:
# text: 0.4
minimumseedtime:
# 7 day (as seconds = 7 x 24 x 60 x 60)
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
title_filename:
selector: "files[0].name"
optional: true
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 }}"
# json UNIT3D 8.0.0b
# json UNIT3D 9.1.7
+2 -1
View File
@@ -1,10 +1,11 @@
---
id: bootytape
name: BootyTape
description: "BootyTape is a Semi-Private site for 3X"
description: "BootyTape is a Semi-Private Torrent Tracker for 3X"
language: en-US
type: semi-private
encoding: UTF-8
requestDelay: 3
links:
- https://ssl.bootytape.com/
@@ -9,8 +9,22 @@ links:
- https://brasiltracker.org/
caps:
categories:
Other: Other
categorymappings:
- {id: 16, cat: Audio/Audiobook, desc: "Audiobooks"}
- {id: 6, cat: TV/Anime, desc: "Animes"}
- {id: 11, cat: PC/0day, desc: "Aplicativos"}
- {id: 15, cat: Other, desc: "Cursos"}
- {id: 8, cat: TV/Documentary, desc: "Documentários"}
- {id: 14, cat: TV/Sport, desc: "Esportes"}
- {id: 3, cat: XXX, desc: "Filmes XXX"}
- {id: 1, cat: Movies, desc: "Filmes"}
- {id: 12, cat: Books/Comics, desc: "Histórias em Quadrinhos"}
- {id: 9, cat: PC/Games, desc: "Jogos"}
- {id: 13, cat: Books/EBook, desc: "Livros"}
- {id: 10, cat: Books/Mags, desc: "Revistas"}
- {id: 2, cat: TV, desc: "Séries"}
- {id: 5, cat: Audio/Video, desc: "Show"}
- {id: 7, cat: TV, desc: "Televisão"}
modes:
search: [q]
@@ -22,13 +36,7 @@ settings:
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: info_8000
type: info
label: About BrasilTracker Categories
default: BrasilTracker does not return categories in its search results.</br>To add to your Apps' Torznab indexer, replace all categories with 8000(Other).
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -64,6 +72,7 @@ search:
# https://brasiltracker.org/torrents.php?searchstr=tt8179024&order_by=time&order_way=desc&action=basic&searchsubmit=1
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
searchstr: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
order_by: "{{ .Config.sort }}"
order_way: "{{ .Config.type }}"
@@ -77,7 +86,24 @@ search:
fields:
category:
text: Other
selector: td.big_info div.group_info
case:
"div:contains(\"[Audiobooks]\")": 16
"div:contains(\"[Animes]\")": 6
"div:contains(\"[Aplicativos]\")": 11
"div:contains(\"[Cursos]\")": 15
"div:contains(\"[Documentários]\")": 8
"div:contains(\"[Esportes]\")": 14
"div:contains(\"[Filmes XXX]\")": 3
"div:contains(\"[Filmes]\")": 1
"div:contains(\"[Histórias em Quadrinhos]\")": 12
"div:contains(\"[Jogos]\")": 9
"div:contains(\"[Livros]\")": 13
"div:contains(\"[Revistas]\")": 10
"div:contains(\"[Séries]\")": 2
"div:contains(\"[Show]\")": 5
"div:contains(\"[Televisão]\")": 7
"*": 0 # catch errors
details:
selector: a[href^="torrents.php?id="]
attribute: href
@@ -122,11 +148,33 @@ search:
title_details:
selector: div.torrent_info
remove: strong
year:
selector: td.big_info div.group_info
optional: true
filters:
- name: regexp
args: "\\[((?:19|20)\\d{2})\\]"
title:
selector: a[href^="torrents.php?id="]
filters:
- name: re_replace
args: ["\\[([^\\]]+)\\]", " / $1"]
- name: append
args: "{{ if .Result.year }} ({{ .Result.year }}){{ else }}{{ end }}"
- name: append
args: " {{ .Result.title_details }}"
- name: re_replace
args: ["\\bWEB\\b(?![-_. ]?DL)", "WEB-DL"]
- name: re_replace
args: ["(?i)\\b4K\\b", "2160p"]
- name: re_replace
args: ["(?i)\\bFull HD\\b", "1080p"]
- name: re_replace
args: ["(?i)\\b(?<!Full )HD\\b", "720p"]
- name: re_replace
args: ["(?i)\\bLegendado\\b", "Subs"]
- name: re_replace
args: ["(Dual|[Nn]acional|[Dd]ublado)", "Brazilian $1"]
minimumratio:
text: 1.0
minimumseedtime:
+1 -1
View File
@@ -57,7 +57,7 @@ settings:
- name: type
type: select
label: Order requested from site
default: desc
default: DESC
options:
DESC: desc
ASC: asc
@@ -0,0 +1,88 @@
---
id: btdirectory
name: BTdirectory
description: "BTdirectory (BT目录) is a Public DHT Crawler"
language: en-US
type: public
encoding: UTF-8
# current domain at https://cursor.vip/btmulu then follow links to the final search-movie link
links:
- https://btmulu.live/
- https://www.btmulu.cyou/
- https://www.btmulu.quest/
- https://www.btmulu.cfd/
- https://www.btmulu.help/
legacylinks:
- https://www.btmulu.asia/
- https://www.btmulu.digital/
- https://www.btmulu.pw/
- https://www.btmulu.one/
- https://btmulu.work/
caps:
categorymappings:
- {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: info_category_8000
type: info_category_8000
search:
paths:
# https://www.btmulu.digital/search-create.html
# https://btmulu.work/search.html?name=the+boys+s04e08
- path: "{{ if .Keywords }}search.html{{ else }}search-create.html{{ end }}"
inputs:
name: "{{ re_replace .Keywords \"[\\s]+\" \"+\" }}"
rows:
selector: article.item:has(a[href^="/hash/"])
filters:
- name: andmatch
fields:
category:
text: Other
title:
selector: h4
remove: span
details:
selector: a[href^="/hash/"]
attribute: href
infohash:
selector: a[href^="/hash/"]
attribute: href
filters:
- name: regexp
args: ([A-F|a-f|0-9]{40})
date:
selector: p
filters:
- name: regexp
args: (\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})
files:
selector: p
filters:
- name: regexp
args: "File Count(\\d+)"
size:
selector: p
filters:
- name: regexp
args: "Size(\\d+\\.?\\d+ [K|M|G]B)"
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a
+4 -5
View File
@@ -34,6 +34,8 @@ settings:
0: relevance
1: created
2: size
- name: info_flaresolverr
type: info_flaresolverr
search:
paths:
@@ -41,10 +43,6 @@ search:
- path: search.php
inputs:
q: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}"
# does not support multi cats so defaulting to all
c: ""
# 1 Chinese, 2 Japanese, 3 Korean
l: ""
o: "{{ if .Keywords }}{{ .Config.sort }}{{ else }}1{{ end }}"
rows:
@@ -63,7 +61,7 @@ search:
- name: replace
args: ["Video", "TV"]
title:
selector: a.smashTitle > script
selector: a.smashTitle > script:contains("decodeURIComponent")
filters:
- name: urldecode
- name: replace
@@ -74,6 +72,7 @@ search:
args: ["<b style='color:#ea644a'>", ""]
- name: replace
args: ["</b>", ""]
- name: htmldecode
details:
selector: a.smashTitle
attribute: href
+4 -6
View File
@@ -1,7 +1,7 @@
---
id: btschool
name: BTSCHOOL
description: "BTSCHOOL is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL"
description: "BTSCHOOL is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
language: zh-CN
type: private
encoding: UTF-8
@@ -39,10 +39,8 @@ settings:
type: checkbox
label: Search freeleech only
default: false
- 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_flaresolverr
type: info_flaresolverr
- name: info_tpp
type: info
label: Results Per Page
@@ -50,7 +48,7 @@ settings:
- 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>Extreme User or above would never be deleted.</li><li>Veteran User or above would never be deleted if packed (at User CP).</li><li>Packed accounts would be deleted if users have not logged in for more than 365 days in a row.</li><li>Unpacked 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 30 days in a row.</li></ol>"
default: "Cherish your user account. Inactive accounts would be deleted based on the following rules:<ol><li>Extreme User or above would never be deleted.</li><li>Veteran 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 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 30 days in a row.</li></ol>"
login:
path: login.php
+3 -5
View File
@@ -9,7 +9,6 @@ encoding: UTF-8
links:
- https://btsow.motorcycles/
legacylinks:
- https://btsow.rest/
- https://btsow.bar/
- https://btsow.click/
- https://btsow.cfd/
@@ -24,6 +23,7 @@ legacylinks:
- https://btsow.skin/
- https://btsow.makeup/
- https://btsow.homes/
- https://btsow.yachts/
caps:
categories:
@@ -37,10 +37,8 @@ caps:
book-search: [q]
settings:
- name: info_8000
type: info
label: About BTSOW Categories
default: BTSOW does not return categories in its search results.</br>To add to your Apps' Torznab indexer, replace all categories with 8000(Other).
- name: info_category_8000
type: info_category_8000
download:
selectors:
@@ -0,0 +1,72 @@
---
id: btstate
replaces:
- btsate
name: btstate
description: "btstate is a Public BitTorrent DHT search engine."
language: en-US
type: public
encoding: UTF-8
links:
- https://btstate.com/
caps:
categories:
Other: Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: info_category_8000
type: info_category_8000
search:
paths:
# https://btstate.com/api/searchByKeyword/2025?take=100&skip=0&page=1&pageSize=100
- path: "api/searchByKeyword/{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}"
response:
type: json
inputs:
take: 100
skip: 0
page: 1
pageSize: 100
rows:
selector: items
attribute: _source
filters:
- name: andmatch
fields:
category:
text: Other
title:
selector: name
details:
text: "{{ .Config.sitelink }}"
infohash:
selector: infohash
date:
# unix
selector: createTime
filters:
- name: regexp
args: ^(\d{10})
size:
selector: size
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# json api
@@ -1,19 +1,21 @@
---
id: bwtorrents
name: BwTorrents
description: "BwTorrents is a Private Torrent Tracker for BollyWood MOVIES / TV / GENERAL"
description: "BwTorrents is an INDIAN Private Torrent Tracker for MOVIES / TV"
language: en-US
type: private
encoding: UTF-8
links:
- https://bwtorrents.tv/
- https://bwtorrents.co/
- https://www.bwtorrents.pro/
- https://bwtorrents.cc/
- https://bwtorrents.live/
legacylinks:
- https://bwtorrents.fun/
- https://bwtorrents.xyz/
- https://bwtorrents.us/
- https://bwtorrents.live/
- https://bwtorrents.co/
- https://www.bwtorrents.life/
caps:
categorymappings:
@@ -144,6 +146,8 @@ settings:
type: checkbox
label: Search freeleech only
default: false
- name: info_flaresolverr
type: info_flaresolverr
- name: info_activity
type: info
label: Account Inactivity
@@ -176,6 +180,8 @@ search:
rows:
selector: table[width="1200"] > tbody > tr:has(a[href^="download.php/"])
filters:
- name: andmatch
fields:
category:
+7 -14
View File
@@ -28,12 +28,11 @@ caps:
music-search: [q]
settings:
- name: username
- name: cookie
type: text
label: Username
- name: password
type: password
label: Password
label: Cookie
- name: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -68,16 +67,10 @@ settings:
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"]
# using cookie method because login page is dynamically generated with JS
method: cookie
inputs:
logintype: username
userinput: "{{ .Config.username }}"
password: "{{ .Config.password }}"
autologin: yes
error:
- selector: td.embedded:has(h2:contains("失败"))
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href^="logout.php?key="]
+16 -20
View File
@@ -6,11 +6,13 @@ language: ru-RU
type: public
encoding: UTF-8
links:
- https://thebyrut.org/
- https://byrutgame.org/
legacylinks:
- https://byrutor.org/
- https://byrutdb.org/
- https://byrut.org/
- https://thebyrut.org/
- https://byruthub.org/
caps:
categorymappings:
@@ -354,44 +356,32 @@ search:
rows:
# results without sizes are just pre-release announcements
selector: div.short_search:has(div.shor_subtitles span:nth-child(2):contains(" "))
selector: a.search_res:has(div.search_res_sub span:nth-child(2):contains(" "))
fields:
category:
text: 1
year:
selector: div.shor_subtitles span
selector: div.search_res_sub span
filters:
- name: regexp
args: (\d+)
title:
selector: div.short_titles > a
selector: a.search_res
filters:
- name: append
args: " [{{ .Result.year }}]"
details:
selector: div.short_titles > a
selector: a.search_res
attribute: href
download:
selector: div.short_titles > a
selector: a.search_res
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("Б")
selector: div.search_res_sub span:nth-child(2):contains("Б")
optional: true
default: "0 B"
filters:
@@ -404,9 +394,15 @@ search:
- name: replace
args: ["КБ", "KB"]
size:
selector: div.shor_subtitles span:nth-child(2):contains("B")
selector: div.search_res_sub span:nth-child(2):contains("B")
optional: true
default: "{{ .Result.size_rus }}"
date:
text: now
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: 0
uploadvolumefactor:
@@ -0,0 +1,180 @@
---
id: cangbaoge
name: cangbaoge (CBG)
description: "cangbaoge (CBG) is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://cangbao.ge/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 402, cat: TV, desc: "TV Series/剧集"}
- {id: 403, cat: TV, desc: "Playlet/短剧"}
- {id: 404, cat: TV/Anime, desc: "Animations/动画"}
- {id: 405, cat: TV/Anime, desc: "Anime/动漫"}
- {id: 406, cat: TV/Other, desc: "Children/儿童"}
- {id: 407, cat: TV, desc: "TV Shows/综艺"}
- {id: 408, cat: TV/Documentary, desc: "Documentary/纪录"}
- {id: 409, cat: Audio, desc: "Music/音乐"}
- {id: 410, cat: Books, desc: "Books/书籍"}
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_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Account retention rules:<ol><li>Veteran User and above will be retained forever</li><li>Elite User and above will not have their account deleted after parking (in the control panel)</li><li>Users with a parked account will be deleted if they do not log in for 400 consecutive days</li><li>Users with a non-parked account will be deleted if they do not log in for 150 consecutive days</li><li>Users who have no traffic (i.e. upload/download data are both 0) will be deleted if they do not log in for 100 consecutive days.</li></ol>"
login:
# using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}"
# 0 incldead, 1 active, 2 dead
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl
search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
# 0 AND, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(a[href^="download.php?id="])
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title:
selector: a[title][href^="details.php?id="]
attribute: title
optional: true
default: "{{ .Result.title_default }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: img[data-src]
attribute: data-src
imdbid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="movie.douban.com/subject/"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 2.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.9.6 2025-06-25
@@ -0,0 +1,204 @@
---
id: capybarabr
name: CapybaraBR (API)
description: "CapybaraBR is a BRAZILIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: pt-BR
type: private
encoding: UTF-8
links:
- https://capybarabr.com/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Filmes"}
- {id: 2, cat: TV, desc: "Series"}
- {id: 4, cat: TV/Anime, desc: "Animes"}
- {id: 8, cat: TV/Sport, desc: "Esportes"}
- {id: 6, cat: Movies, desc: "Desenhos Animados"}
- {id: 5, cat: Console, desc: "Jogos"}
- {id: 9, cat: PC, desc: "Programas"}
- {id: 10, cat: Books/Comics, desc: "HQs"}
- {id: 11, cat: Books/EBook, desc: "Livros"}
- {id: 12, cat: Other, desc: "Cursos"}
- {id: 13, cat: Books/Mags, desc: "Revistas"}
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://capybarabr.com/\" target=\"_blank\">CapybaraBR</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: use_single_file_release_use_filename
type: checkbox
label: Use filename as the title for single file releases
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: "The system automatically makes an account inactive when not logged in for a period of 90 days. So just log in within this time so that it is not inactivated."
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 }}."
- selector: :root:contains("Account is Banned")
search:
paths:
# https://hdinnovations.github.io/UNIT3D/torrent_api.html
# https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
- path: api/torrents/filter
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"
episodeNumber: "{{ .Query.Ep }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tmdbId: "{{ .Query.TMDBID }}"
tvdbId: "{{ .Query.TVDBID }}"
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
text: "{{ if and (.Config.use_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)(Ficção científica)", "Ficção_científica"]
- name: re_replace
args: ["(?i)(Cinema TV)", "Cinema_TV"]
- name: replace
args: [" & ", "_&_"]
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
description:
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: times_completed
date:
# "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50
selector: created_at
filters:
- name: append
args: " -03:00" # BRT
- name: dateparse
args: "MM/dd/yyyy HH:mm:ss zzz"
size:
selector: size
_featured:
selector: featured
case:
False: "{{ .False }}"
True: "{{ .True }}"
downloadvolumefactor_freeleech:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
0%: 1 # not free
25%: 0.75
50%: 0.5
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
downloadvolumefactor:
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
uploadvolumefactor_double_upload:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
uploadvolumefactor:
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
# global MR is 1.0 but torrents must be seeded for 7 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.3.3 (custom)
@@ -72,6 +72,8 @@ login:
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: table.main:contains("Sikertelen bejelentkezés")
test:
path: index.php
selector: a[href^="logout.php"]
@@ -10,6 +10,7 @@ links:
- https://carp-hunter.hu/
caps:
# dont forget to update the path categories in the search block
categorymappings:
- {id: 1, cat: Movies/SD, desc: "Film/Cam/Eng", default: true}
- {id: 2, cat: Movies/SD, desc: "Film/Cam/Hun", default: true}
@@ -54,10 +55,8 @@ 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: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -77,8 +76,13 @@ settings:
options:
desc: desc
asc: asc
- name: info_settings
type: info
label: Settings Requirement
default: This indexer only supports the details link option.<br>Navigate to the web site account <b>Beállítások (Settings)</b>, change the <b>Letöltések (Download)</b> option to <b>Link a részletekhez (Link to Details)</b>, and click <b>Mentés (Save)</b>. Selecting <i>Lenyíló menü (Dropdown Menu)</i> will return no results.
login:
# using cookie method because login page has embedded Google reCAPTCHA
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
+4 -4
View File
@@ -1,7 +1,7 @@
---
id: carpt
name: CarPT
description: "CarPT is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
description: "CarPT is a CHINESE Private Torrent Tracker for HD MOVIES / TV / MUSIC"
language: zh-CN
type: private
encoding: UTF-8
@@ -65,7 +65,7 @@ settings:
- 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>"
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 150 consecutive days</li><li>Users with a non-parked account will be banned if they do not log in for 90 consecutive days</li><li> Users with no traffic (i.e., upload/download data is 0) who do not log in for 14 consecutive days will be banned.</li></ol>"
login:
path: login.php
@@ -186,11 +186,11 @@ search:
img.pro_2up: 2
"*": 1
minimumratio:
text: 1.0
text: 10
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.8 2023-09-25
# NexusPHP v1.8.15 2024-12-10
@@ -80,7 +80,8 @@ search:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
searchtext: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
searchtext: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}"
title: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ end }}"
order_by: "{{ .Config.sort }}"
order_way: "{{ .Config.type }}"
action: advanced
+8 -25
View File
@@ -1,11 +1,13 @@
---
id: catorrent
name: Catorrent
description: "Catorrent is a RUSSIAN Semi-Private Torrent Tracker for GAMES"
description: "Catorrent is a RUSSIAN Public Torrent Tracker for GAMES"
language: ru-RU
type: semi-private
type: public
encoding: UTF-8
links:
- https://catorrent.net/
legacylinks:
- https://catorrent.org/
caps:
@@ -33,28 +35,7 @@ caps:
modes:
search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
login:
path: index.php
method: form
form: form[action=""]
inputs:
login_name: "{{ .Config.username }}"
login_password: "{{ .Config.password }}"
login_not_save: ""
login: submit
error:
- selector: div.berrors
test:
path: /
selector: a[href$="/index.php?action=logout"]
settings: []
download:
selectors:
@@ -78,6 +59,8 @@ search:
fields:
category:
selector: div.icon_default
optional: true
default: PS1
title:
selector: div.short_game_title
details:
@@ -105,4 +88,4 @@ search:
text: 0
uploadvolumefactor:
text: 1
# engine n/a
# DataLife v25
+184
View File
@@ -0,0 +1,184 @@
---
id: cdfile
name: CD File
description: "CD File is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://pt.cdfile.org/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 406, cat: Audio/Video, desc: "Music Videos/MV"}
- {id: 402, cat: TV, desc: "TV Series/电视剧"}
- {id: 408, cat: Audio, desc: "Music/音轨"}
- {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
- {id: 403, cat: TV, desc: "TV Shows/综艺"}
- {id: 407, cat: TV/Sport, desc: "Sports/体育"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 409, cat: Other, desc: "Others/其他"}
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_cookie
type: info_cookie
- name: useragent
type: text
label: User-Agent
- name: info_useragent
type: info_useragent
- 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 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 7 consecutive days.</li></ol>"
login:
# using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}"
# 0 incldead, 1 active, 2 dead
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl
search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
# 0 AND, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
headers:
User-Agent: ["{{ .Config.useragent }}"]
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:
selector: a[title][href^="details.php?id="]
attribute: title
optional: true
default: "{{ .Result.title_default }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: img[data-src]
attribute: data-src
imdbid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="movie.douban.com/subject/"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow.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: 2.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.9.6 2025-06-25
+131
View File
@@ -0,0 +1,131 @@
# CGPeers 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: cgpeers
name: CGPeers
description: "CGPeers is a Private Torrent Tracker for GRAPHICS SOFTWARE / TUTORIALS / ETC"
language: en-US
type: private
encoding: UTF-8
links:
- https://cgpeers.to/
legacylinks:
- https://www.cgpeers.com/
caps:
categorymappings:
- {id: 1, cat: PC/ISO, desc: "Applications"}
- {id: 8, cat: PC/ISO, desc: "Audio"}
- {id: 7, cat: Other, desc: "Game Development"}
- {id: 5, cat: Other, desc: "Materials"}
- {id: 6, cat: Other/Misc, desc: "Miscellaneous"}
- {id: 4, cat: Other, desc: "Models"}
- {id: 2, cat: PC/0day, desc: "Plugins"}
- {id: 3, cat: Other, desc: "Tutorials"}
- {id: 9, cat: Other, desc: "Web Development"}
modes:
search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: time
options:
time: created
seeders: seeders
size: size
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href^="/user.php?id="]
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:has(a[href*="action=download"])
fields:
download:
selector: a[href^="/torrents.php?action=download&id="]
attribute: href
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: ["[\\\\\"]", ""]
- name: re_replace
args: ["/static/common/noartwork/.+", ""]
files:
selector: td:nth-child(3)
date:
selector: td:nth-child(6) > span
attribute: title
# auto adjusted by site account profile
filters:
- name: dateparse
args: "MMM dd yyyy, HH:mm"
size:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
seeders:
selector: td:nth-child(9)
leechers:
selector: td:nth-child(10)
downloadvolumefactor:
case:
i.unlimited_leech: 0
i.sitewide_leech: 0
img[alt="Freeleech"]: 0
"*": 1
uploadvolumefactor:
case:
span.icon[title*="DoubleSeed"]: 2
img[alt="DoubleSeed"]: 2
"*": 1
# luminance
+25 -14
View File
@@ -7,7 +7,6 @@ type: private
encoding: UTF-8
links:
- https://ptchdbits.co/
legacylinks:
- https://chdbits.co/
caps:
@@ -40,6 +39,8 @@ settings:
type: checkbox
label: Search freeleech only
default: false
- name: info_flaresolverr
type: info_flaresolverr
- name: info_tpp
type: info
label: Results Per Page
@@ -65,6 +66,8 @@ login:
path: login.php
method: form
form: form[action="takelogin.php"]
headers:
user-agent: ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
@@ -79,9 +82,17 @@ login:
error:
- selector: td.embedded:has(h2:contains("失败"))
- selector: td.embedded:has(h2:contains("failed"))
- selector: td.embedded:has(h2:contains("错误"))
- selector: td.embedded:has(h2:contains("error"))
- selector: font[color="red"]
test:
path: torrents.php
selector: a[href*="logout.php"]
selector: a[href*="logout"]
download:
selectors:
- selector: a[href^="download.php?id="]
attribute: href
search:
paths:
@@ -121,19 +132,11 @@ search:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
selector: a[href^="details.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]
selector: td.rowfollow:nth-last-child(7) > span[title]
attribute: title
optional: true
filters:
@@ -143,7 +146,7 @@ search:
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td:nth-child(4):not(:has(span))
selector: td.rowfollow:nth-last-child(7):not(:has(span))
optional: true
filters:
- name: append
@@ -152,6 +155,14 @@ search:
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-child(6)
seeders:
selector: td.rowfollow:nth-last-child(5)
leechers:
selector: td.rowfollow:nth-last-child(4)
grabs:
selector: td.rowfollow:nth-last-child(3)
downloadvolumefactor:
case:
img.pro_free: 0
@@ -169,4 +180,4 @@ search:
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP 73f201530b 2023-08-07
# NexusPHP Standard v1.5 Beta 4 (customised)
@@ -0,0 +1,199 @@
---
id: chilebt-api
name: ChileBT (API)
description: "ChileBT is a CHILEAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: es-CL
type: private
encoding: UTF-8
links:
- https://chilebt.com/
caps:
categorymappings:
- {id: 10, cat: Movies, desc: "Movies"}
- {id: 11, cat: TV, desc: "TV"}
- {id: 9, cat: Audio, desc: "Music"}
- {id: 7, cat: Other, desc: "Cultura / Educativos"}
- {id: 8, cat: PC/Games, desc: "Juegos"}
- {id: 6, cat: Books, desc: "EBook"}
- {id: 4, cat: TV/Anime, desc: "Anime"}
- {id: 5, cat: PC/0day, desc: "Aplicaciones / Programas"}
- {id: 14, cat: Movies, desc: "Infantil"}
- {id: 12, cat: Other/Misc, desc: "VIP"}
- {id: 13, 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://chilebt.com/\" target=\"_blank\">ChileBT</a> account <i>My Settings</i> page and clicking on the <b>API Key</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: single_file_release_use_filename
type: checkbox
label: Use filename as title for single file releases
default: true
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: /api/torrents
method: get
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
- selector: :root:contains("Account is Banned")
search:
paths:
# https://hdinnovations.github.io/UNIT3D/torrent_api.html
# https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
- path: api/torrents/filter
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"
episodeNumber: "{{ .Query.Ep }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tmdbId: "{{ .Query.TMDBID }}"
tvdbId: "{{ .Query.TVDBID }}"
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
description:
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: times_completed
date:
# "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50
selector: created_at
filters:
- name: append
args: " +00:00" # GMT
- name: dateparse
args: "MM/dd/yyyy HH:mm:ss zzz"
size:
selector: size
_featured:
selector: featured
case:
False: "{{ .False }}"
True: "{{ .True }}"
downloadvolumefactor_freeleech:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
0%: 1 # not free
25%: 0.75
50%: 0.5
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
downloadvolumefactor:
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
uploadvolumefactor_double_upload:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
uploadvolumefactor:
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
# global MR is 0.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 8.2.0
@@ -1,7 +1,7 @@
---
id: cinemageddon
name: Cinemageddon
description: "B-movie tracker"
description: "Cinemageddon is a Private Torrent Tracker for B-movies"
language: en-US
type: private
encoding: UTF-8
@@ -38,6 +38,14 @@ caps:
search: [q]
movie-search: [q, imdbid]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
login:
path: takelogin.php
method: post
@@ -42,10 +42,8 @@ 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: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -87,6 +85,7 @@ settings:
default: "Failure to use an account for a period of 180 days will result in the removal of the account from the CMS_ZT community."
login:
# using cookie method because login page has embedded Google reCAPTCHA
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
+40 -23
View File
@@ -1,7 +1,7 @@
---
id: cinematik
name: Cinematik
description: "A tracker for full BD and DVD discs of non-mainstream movies, niche cinema and arthouse."
name: Cinematik (API)
description: "Cinematik is a Private tracker for full BD and DVD discs of non-mainstream movies, niche cinema and arthouse."
language: en-US
type: private
encoding: UTF-8
@@ -12,8 +12,12 @@ legacylinks:
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movie"}
- {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]
@@ -65,12 +69,13 @@ login:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
- selector: :root:contains("Account is Banned")
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
# https://hdinnovations.github.io/UNIT3D/torrent_api.html
# https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
- path: api/torrents/filter
response:
type: json
@@ -104,12 +109,17 @@ search:
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:
@@ -130,10 +140,13 @@ search:
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
description:
text: "{{ .Result.genre }}"
files:
selector: num_file
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
@@ -150,7 +163,12 @@ search:
args: "MM/dd/yyyy HH:mm:ss zzz"
size:
selector: size
downloadvolumefactor:
_featured:
selector: featured
case:
False: "{{ .False }}"
True: "{{ .True }}"
downloadvolumefactor_freeleech:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
@@ -160,21 +178,20 @@ search:
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
uploadvolumefactor:
downloadvolumefactor:
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
uploadvolumefactor_double_upload:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
uploadvolumefactor:
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
# global MR is 0.6 but torrents must be seeded for 3 days regardless of ratio
# minimumratio:
# text: 0.4
# text: 0.6
minimumseedtime:
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
title_filename:
selector: "files[0].name"
optional: true
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 }}"
# json UNIT3D 8.0.0
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# json UNIT3D 9.1.7
@@ -0,0 +1,146 @@
---
id: clearjav-api
name: ClearJAV (API)
description: "ClearJAV is a Private Torrent Tracker for Japanese Adult Video (JAV) content from official JAV studios only."
language: en-US
type: private
encoding: UTF-8
links:
- https://clearjav.com/
caps:
categorymappings:
- {id: 1, cat: XXX, desc: "JAV"}
modes:
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://clearjav.com/\" target=\"_blank\">ClearJAV</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: "You must download or upload data within 30 days of joining, or your account may be pruned for lurking."
login:
path: /api/torrents
method: get
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
- selector: :root:contains("Account is Banned")
search:
paths:
# https://hdinnovations.github.io/UNIT3D/torrent_api.html
# https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
- path: api/torrents/filter
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
name: "{{ .Keywords }}"
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
# there are no categories on the site so using XXX as a default
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
text: 1
title:
selector: name
details:
selector: details_link
download:
selector: download_link
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
_featured:
selector: featured
case:
False: "{{ .False }}"
True: "{{ .True }}"
downloadvolumefactor_freeleech:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
0%: 1 # not free
25%: 0.75
50%: 0.5
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
downloadvolumefactor:
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
uploadvolumefactor_double_upload:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
uploadvolumefactor:
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
# minimumratio:
# text: 0.4
minimumseedtime:
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 9.1.7 (custom)
+144 -96
View File
@@ -1,7 +1,7 @@
---
id: coastalcrew
name: Coastal-Crew
description: "Coastal-Crew is a GERMAN Private Torrent Tracker for MOVIES / TV / GENERAL"
name: Coastal-Music-Crew
description: "Coastal-Music-Crew (C-M-C) is a GERMAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: de-DE
type: private
encoding: UTF-8
@@ -10,47 +10,90 @@ links:
caps:
categorymappings:
- {id: 30, cat: TV/Anime, desc: "Filme - Animie"}
- {id: 28, cat: Movies/BluRay, desc: "Filme - Bluray"}
- {id: 31, cat: Movies/Other, desc: "Filme - Bollywood"}
- {id: 77, cat: TV/Documentary, desc: "Filme - DokusHD"}
- {id: 32, cat: Movies/DVD, desc: "Filme - DVD"}
- {id: 33, cat: Movies/HD, desc: "Filme - HD"}
- {id: 34, cat: Movies, desc: "Filme - Klassiker"}
- {id: 35, cat: Movies, desc: "Filme - Pack"}
- {id: 36, cat: Movies/SD, desc: "Filme - SD"}
- {id: 37, cat: Movies/UHD, desc: "Filme - UHD"}
- {id: 38, cat: Movies/HD, desc: "Filme - x264"}
- {id: 39, cat: Audio, desc: "Musik - Alben"}
- {id: 72, cat: Audio, desc: "Musik - Charts"}
- {id: 40, cat: Audio, desc: "Musik - Diskografie"}
- {id: 75, cat: Audio/Lossless, desc: "Musik - Flac"}
- {id: 41, cat: Audio/Audiobook, desc: "Musik - Hoerbuch"}
- {id: 74, cat: Audio/Other, desc: "Musik - Kids"}
- {id: 42, cat: Audio, desc: "Musik - Mixe"}
- {id: 66, cat: Audio, desc: "Musik - Pack"}
- {id: 70, cat: Audio, desc: "Musik - Sampler Deu."}
- {id: 71, cat: Audio, desc: "Musik - Sampler Int."}
- {id: 76, cat: Audio/Other, desc: "Musik - Soundtrack"}
- {id: 44, cat: Audio/Video, desc: "Musik - Video"}
- {id: 45, cat: PC, desc: "Programme - Linux"}
- {id: 48, cat: PC/Mac, desc: "Programme - Mac"}
- {id: 49, cat: PC/0day, desc: "Programme - Windows"}
- {id: 65, cat: TV, desc: "Serien - Allgemein"}
- {id: 50, cat: TV/Documentary, desc: "Serien - Dokus"}
- {id: 51, cat: TV, desc: "Serien - Klassiker"}
- {id: 52, cat: TV, desc: "Serien - Pack"}
- {id: 53, cat: TV/Sport, desc: "Serien - Sport"}
- {id: 62, cat: Books/EBook, desc: "EBook"}
- {id: 63, cat: Movies, desc: "Fuer Unsere Kleinsten"}
- {id: 64, cat: PC/Mobile-Other, desc: "Handy-Stuff"}
- {id: 60, cat: Other, desc: "Sonstiges"}
- {id: 69, cat: Books/Mags, desc: "Zeitung"}
- {id: 54, cat: PC/Mobile-Other, desc: "Spiele - Handy"}
- {id: 55, cat: Console, desc: "Spiele - Konsolen"}
- {id: 57, cat: PC/Games, desc: "Spiele - Mac / Linux / PC"}
- {id: 58, cat: Console/Other, desc: "Spiele - Wimmel"}
- {id: 59, cat: XXX, desc: "XXX"}
- {id: 122, cat: Movies, desc: "Movie Klassiker"}
- {id: 124, cat: Movies, desc: "Movie Kids"}
- {id: 127, cat: Movies, desc: "Movie Pack"}
- {id: 138, cat: Movies/BluRay, desc: "Movie BluRay"}
- {id: 140, cat: Movies/3D, desc: "Movie 3D"}
- {id: 114, cat: Movies/DVD, desc: "Movie DVD-R"}
- {id: 28, cat: Movies/SD, desc: "Movie SD"}
- {id: 32, cat: Movies/HD, desc: "Movie HD"}
- {id: 26, cat: Movies/UHD, desc: "Movie 4K"}
- {id: 133, cat: TV/Anime, desc: "Serien Anime"}
- {id: 57, cat: TV/HD, desc: "Serien HD"}
- {id: 59, cat: TV, desc: "Serien Pack"}
- {id: 60, cat: TV/SD, desc: "Serien SD"}
- {id: 56, cat: TV/SD, desc: "Serien DVD-R"}
- {id: 123, cat: TV, desc: "Serien Klassiker"}
- {id: 126, cat: TV, desc: "Serien Kids"}
- {id: 132, cat: TV/UHD, desc: "Serien UHD"}
- {id: 92, cat: TV/Documentary, desc: "Doku Avi"}
- {id: 94, cat: TV/Documentary, desc: "Doku Audio"}
- {id: 135, cat: TV/Documentary, desc: "Doku UHD"}
- {id: 13, cat: TV/Documentary, desc: "Doku DVD-R"}
- {id: 14, cat: TV/Documentary, desc: "Doku HD"}
- {id: 15, cat: TV/Documentary, desc: "Doku SD"}
- {id: 136, cat: TV/Documentary, desc: "Doku Pack"}
- {id: 9, cat: PC, desc: "App Linux"}
- {id: 10, cat: PC/Mac, desc: "App Mac"}
- {id: 11, cat: PC/Mobile-Other, desc: "App Other"}
- {id: 12, cat: PC/0day, desc: "App Win"}
- {id: 139, cat: PC/Mobile-Android, desc: "App Android Apps"}
- {id: 16, cat: Console, desc: "Game Misc"}
- {id: 17, cat: PC/Games, desc: "Game PC"}
- {id: 18, cat: Console/PS3, desc: "Game PS2"}
- {id: 19, cat: Console/PS3, desc: "Game PS3"}
- {id: 20, cat: Console/PSP, desc: "Game PSP"}
- {id: 21, cat: Console/PS4, desc: "Game PSX"}
- {id: 22, cat: Console/Wii, desc: "Game Wii"}
- {id: 23, cat: Console/XBox, desc: "Game XBOX"}
- {id: 24, cat: Console/XBox 360, desc: "Game XBOX360"}
- {id: 137, cat: Audio, desc: "Music OST"}
- {id: 54, cat: Audio, desc: "Music Single"}
- {id: 48, cat: Audio, desc: "Music Album"}
- {id: 49, cat: Audio, desc: "Music Charts"}
- {id: 52, cat: Audio, desc: "Music Pack"}
- {id: 53, cat: Audio, desc: "Music Sampler"}
- {id: 120, cat: Audio, desc: "Music Xmas"}
- {id: 121, cat: Audio/Lossless, desc: "Music Flac"}
- {id: 55, cat: Audio/Video, desc: "Music Video SD"}
- {id: 109, cat: Audio/Video, desc: "Music Video HD"}
- {id: 110, cat: Audio/Video, desc: "Music DVD-R"}
- {id: 128, cat: Audio, desc: "Music EP"}
- {id: 125, cat: Audio, desc: "Music Kids"}
- {id: 61, cat: TV/Sport, desc: "Sport HD"}
- {id: 62, cat: TV/Sport, desc: "Sport SD"}
- {id: 116, cat: TV/Sport, desc: "Sport DVD-R"}
- {id: 117, cat: TV/Sport, desc: "Sport DVD-R"}
- {id: 134, cat: Other, desc: "Sonstiges Pack"}
- {id: 63, cat: Audio/Audiobook, desc: "Sonstiges A-Book"}
- {id: 96, cat: Books/EBook, desc: "Sonstiges E-Book"}
- {id: 69, cat: Other, desc: "Sonstiges Tutorial"}
- {id: 71, cat: Other/Misc, desc: "Sonstiges Other"}
- {id: 131, cat: TV/UHD, desc: "Internt'l Serie UHD"}
- {id: 103, cat: Movies/SD, desc: "Internt'l Movie SD"}
- {id: 98, cat: Movies/HD, desc: "Internt'l Movie HD"}
- {id: 102, cat: TV/SD, desc: "Internt'l Serie SD"}
- {id: 99, cat: TV/HD, desc: "Internt'l Serie HD"}
- {id: 115, cat: Movies/DVD, desc: "Internt'l DVD-R"}
- {id: 107, cat: Audio/Audiobook, desc: "Internt'l A-Book"}
- {id: 106, cat: Books/EBook, desc: "Internt'l E-Book"}
- {id: 105, cat: TV/Documentary, desc: "Internt'l Doku"}
- {id: 104, cat: Other, desc: "Internt'l Misc"}
- {id: 73, cat: XXX/x264, desc: "XXX HD"}
- {id: 74, cat: XXX/Other, desc: "XXX Other"}
- {id: 75, cat: XXX/Pack, desc: "XXX Pack"}
- {id: 76, cat: XXX/SD, desc: "XXX SD"}
- {id: 113, cat: XXX/DVD, desc: "XXX DVD-R"}
modes:
search: [q]
@@ -66,18 +109,6 @@ settings:
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Filter FreeLeech only
default: false
- name: onlyupload
type: checkbox
label: Filter OnlyUpload only
default: false
- name: info_free
type: info
label: About Freeleech and OnlyUpload at Coastal Crew
default: "<ul><li>FreeLeech are torrents where neither the download or upload is counted. (On the Prowlarr search results page these are tagged as NoUpload).</li><li>OnlyUpload are torrents where download is not counted but upload is. Good for building your Ratio up. (On the Prowlarr search results page these are tagged as Freeleech).</li></ul>"
- name: sort
type: select
label: Sort requested from site
@@ -97,85 +128,102 @@ settings:
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents pro Seite:</b> setting to <b>100</b> on your Control Panel. The default is <i>15</i>.
default: For best results, change the <b>Anzahl der Torrents beim Durchsuchen</b> <i>Torrents per page:</i> setting to <b>60</b> on your account profile. The default is <i>15</i>.
- name: info_activity
type: info
label: Account Inactivity
default: "If you do not log in, your account will be automatically deleted after 28 days."
login:
path: takelogin.php
method: post
path: login.php
method: form
form: form[action="/login.php"]
cookies: ["JAVA=OK"] # avoid jscheck redirect
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: .tablea:contains("Fehler")
- selector: div#login_error
test:
path: index.php
selector: a[href="logout.php"]
search:
# https://coastal-crew.bounceme.net/browse.php?showsearch=1&c62=1&c33=1&search=&incldead=1&orderby=added&sort=desc
path: browse.php
paths:
- path: selection.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
showsearch: 1
search: "{{ .Keywords }}"
# 0 active, 1 all, 2 dead
incldead: 1
# 0 name, 1 descr, 2 both (options 1 and 2 are disabled)
blah: 0
orderby: "{{ .Config.sort }}"
sort: "{{ .Config.type }}"
# site does not support imdbid search from the browse.php page or return imdb links in results
rows:
selector: "table.tableinborder[cellspacing=\"1\"][cellpadding=\"0\"]:not(:has(a[href=\"index.php\"])) > tbody > tr:has(a[href^=\"download.php\"]){{ if .Config.onlyupload }}:has(img[src=\"pic/oupic.gif\"]){{ else }}{{ end }}"
selector: div.selection_wrap
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
category_p1:
selector: div.kat_cat_pic_name
category_p2:
selector: div.kat_cat_pic_name_b
categorydesc:
text: "{{ .Result.category_p1 }} {{ .Result.category_p2 }}"
title:
selector: a[href^="details.php"]
selector: a.selection_a
filters:
- name: re_replace
args: ["^\\[[\\w ]*\\]\\s?", ""]
details:
selector: a[href^="details.php"]
selector: a.selection_a
attribute: href
download:
selector: a[href^="download.php"]
selector: a[href^="download_ssl.php?torrent="]
attribute: href
poster:
selector: img[id="img-1"]
selector: div[id^="details"] img
attribute: src
size:
selector: td.tablea table tbody tr:nth-child(2) td:nth-child(1) b:nth-child(1)
files:
selector: td.tablea table tbody tr:nth-child(2) td:nth-child(1) b:nth-child(2)
seeders:
selector: td.tablea table tbody tr:nth-child(2) td:nth-child(2) b:nth-child(1)
leechers:
selector: td.tablea table tbody tr:nth-child(2) td:nth-child(2) > b:nth-of-type(2)
selector: div.selection_unter_ad
grabs:
selector: td.tablea table tbody tr:nth-child(2) td:nth-child(3) b:nth-child(1)
date:
selector: td.tablea table tbody tr:nth-child(2) td:nth-child(5)
selector: div.selection_unter_ae
date_day:
# Heute 13:30:04
# Gestern 09:10:10
selector: div.selection_unter_ab:not(:contains("."))
optional: true
filters:
- name: replace
args: ["Heute", "Today"]
- name: replace
args: ["Gestern", "Yesterday"]
- name: append
args: " +01:00" # CET
date_year:
# 30.02.2018 um 23:12:50
selector: div.selection_unter_ab:contains(".")
optional: true
filters:
- name: replace
args: ["\xA0", " "]
args: [" um", ""]
- 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 }}"
seeders:
selector: div.selection_unter_aa
leechers:
selector: div.selection_unter_aaa
downloadvolumefactor:
case:
img[src="pic/oupic.gif"]: 0 # only upload is counted
"*": 1
text: 1
uploadvolumefactor:
case:
img[src="pic/freeleech.gif"]: 0 # nothing is counted
"*": 1
minimumratio:
text: 0.7
# engine n/a
text: 1
# global MR is 1.0 but torrents must be seeded for 3 days regardless of ratio
# minimumratio:
# text: 1.0
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# 3xT
+13 -8
View File
@@ -1,16 +1,14 @@
---
id: comicat
name: comicat
description: "comicat is a CHINESE Public tracker for Anime / Hentai / Manga"
description: "comicat is a CHINESE Semi-Private tracker for Anime / Hentai / Manga"
language: zh-CN
type: public
type: semi-private
encoding: UTF-8
requestDelay: 2
links:
- https://www.comicat.org/
settings: []
caps:
categorymappings:
- {id: 1, cat: TV/Anime, desc: "动画(Anime)"}
@@ -27,6 +25,15 @@ caps:
music-search: [q]
book-search: [q]
settings: []
login:
path: addon.php?r=document/view&page=visitor-test
method: form
form: form#visitor-test-form
inputs:
visitor_test: human
search:
paths:
# https://www.comicat.org/ (latest)
@@ -58,8 +65,6 @@ search:
args: "-(\\w+).html"
size:
selector: td:nth-child(4)
grabs:
selector: td:nth-child(7) span
date_year:
selector: td:nth-child(1):contains("/")
optional: true
@@ -95,9 +100,9 @@ search:
date:
text: "{{ if or .Result.date_year .Result.date_today .Result.date_yday .Result.date_ago }}{{ or .Result.date_year .Result.date_today .Result.date_yday .Result.date_ago }}{{ else }}now{{ end }}"
seeders:
selector: td:nth-child(5) span
text: 1
leechers:
selector: td:nth-child(6) span
text: 1
downloadvolumefactor:
text: 0
uploadvolumefactor:
+130 -66
View File
@@ -1,7 +1,7 @@
---
id: concertos
name: Concertos
description: "Concertos - Private site for Live Concerts with Strict Quality Control"
name: Concertos (API)
description: "Concertos is a Private Torrent Tracker for Live Concerts with Strict Quality Control"
language: en-US
type: private
encoding: UTF-8
@@ -17,24 +17,29 @@ caps:
- {id: 7, cat: TV, desc: "Opera"}
- {id: 8, cat: TV, desc: "Musical"}
- {id: 9, cat: Audio, desc: "Podcast"}
- {id: 10, cat: TV, desc: "Educational"}
modes:
search: [q]
tv-search: [q, imdbid]
movie-search: [q, imdbid]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
music-search: [q]
settings:
- name: username
- name: apikey
type: text
label: Username
- name: password
type: password
label: Password
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://concertos.live/\" target=\"_blank\">Concertos</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
@@ -43,6 +48,7 @@ settings:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
@@ -50,83 +56,141 @@ settings:
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: login
method: form
form: form[action$="/login"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: on
selectorinputs:
_token:
selector: input[name="_token"]
attribute: value
path: /api/torrents
method: get
error:
- selector: form[action$="/login"] .text-red
# test:
# path: /
# selector: a[href$="/logout"]
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
- selector: :root:contains("Account is Banned")
search:
paths:
- path: torrents
# https://hdinnovations.github.io/UNIT3D/torrent_api.html
# https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
- path: api/torrents/filter
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
title: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
imdb: "{{ .Query.IMDBIDShort }}"
freeleech: "{{ if .Config.freeleech }}on{{ else }}{{ end }}"
order_by: "{{ .Config.sort }}"
direction: "{{ .Config.type }}"
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"
episodeNumber: "{{ .Query.Ep }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tmdbId: "{{ .Query.TMDBID }}"
tvdbId: "{{ .Query.TVDBID }}"
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: table > tbody > tr
selector: data
attribute: attributes
fields:
category:
selector: a[href*="?category_"]
attribute: href
filters:
- name: regexp
args: "category_(\\d+)"
selector: category_id
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
selector: a[href*="/torrent/"]
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
details:
selector: a[href*="/torrent/"]
attribute: href
selector: details_link
download:
selector: a[href*="/torrent/"]
attribute: href
selector: download_link
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
description:
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: times_completed
date:
# "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50
selector: created_at
filters:
- name: append
args: "/download"
args: " +00:00" # GMT
- name: dateparse
args: "MM/dd/yyyy HH:mm:ss zzz"
size:
selector: td.torrents__size
date:
selector: td.torrents__age
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
grabs:
selector: td:nth-last-child(1)
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
selector: size
_featured:
selector: featured
case:
False: "{{ .False }}"
True: "{{ .True }}"
downloadvolumefactor_freeleech:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
0%: 1 # not free
25%: 0.75
50%: 0.5
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
downloadvolumefactor:
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
uploadvolumefactor_double_upload:
# api returns False, True
selector: double_upload
case:
i.fa-star: 0 # Freeleech
i.fa-certificate: 0 # Featured
"*": 1
False: 1 # normal
True: 2 # double
uploadvolumefactor:
case:
i.fa-certificate: 2 # Featured
i.fa-gem: 2 # Double Upload
"*": 1
minimumratio:
text: 1.0
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
# global MR is 1.0 but torrents must be seeded for 7 days regardless of ratio
# minimumratio:
# text: 1.0
minimumseedtime:
# 7 day (as seconds = 7 x 24 x 60 x 60)
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
# UNIT3D
# json UNIT3D 9.1.7
+16 -15
View File
@@ -7,7 +7,7 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://cpasbien-vf.pics/
- https://feminalpes.fr/
legacylinks:
- https://www.cpasbiens.cz/
- https://www.cpasbiens.bz/
@@ -25,6 +25,8 @@ legacylinks:
- https://cpasbiens911.fr/
- https://jardattraction.fr/
- https://cpasbien-vf.fr/
- https://cpasbien-vf.pics/
- https://cpasbien-vf.li/
caps:
categories:
@@ -36,14 +38,10 @@ caps:
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: info_flaresolverr
type: info_flaresolverr
- name: info_category_8000
type: info_category_8000
- name: multilang
type: checkbox
label: Replace MULTi by another language in release name
@@ -78,11 +76,16 @@ search:
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"]
headers:
# site blocks Linux UAs, so slightly alter the Windows UA here (e.g. Safari/537.36 > Safari/537.35)
User-Agent: ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.35"]
rows:
selector: div#gauche > table > tbody > tr:has(a), div#dle-content > a.cover2
@@ -133,16 +136,14 @@ search:
default: "512 MB"
date:
text: now
seeders_optional:
seeders:
selector: div.up
optional: true
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
default: 0
leechers:
selector: div.down
optional: true
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
default: 0
downloadvolumefactor:
text: 0
uploadvolumefactor:
@@ -1,13 +1,13 @@
---
id: cpasbienclone
name: cpasbien clone
description: "cpasbien clone is a FRENCH Public site for TV / MOVIES / GENERAL"
description: "cpasbien clone is a FRENCH Public site for MOVIES / TV / GENERAL"
language: fr-FR
type: public
encoding: UTF-8
followredirect: true
links:
- https://www.cpasbien.tw/
- https://www1.cpasbien.to/
legacylinks:
- https://www1.cpasbiens.ws/
- https://www2.cpasbiens.ws/
@@ -22,6 +22,8 @@ legacylinks:
- https://www.cpasbien.gg/
- https://www.cpasbien.vip/
- https://cpasbien.to/
- https://www.cpasbien.tw/
- https://www.cpasbien.love/
caps:
categories:
@@ -34,10 +36,8 @@ caps:
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: info_category_8000
type: info_category_8000
- name: multilang
type: checkbox
label: Replace MULTi by another language in release name
@@ -93,7 +93,7 @@ search:
selector: a
filters:
- name: re_replace
args: ["(?i)\\b(FRENCH|MULTI|TRUEFRENCH|VOSTFR|SUBFRENCH)\\b(.+?)(\\b(19|20\\d{2})\\b)$", "$3 $1$2"]
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:
+34 -11
View File
@@ -5,20 +5,28 @@ description: "CrabPT (蟹黄堡) is a CHINESE Private Torrent Tracker for MOVIES
language: zh-CN
type: private
encoding: UTF-8
requestDelay: 2
links:
- https://crabpt.vip/
caps:
# dont forget to update the path categories in the search block
categorymappings:
- {id: 408, cat: Audio, desc: "音乐"}
- {id: 409, cat: Other, desc: "其他"}
- {id: 407, cat: TV/Sport, desc: "体育竞技"}
- {id: 406, cat: Audio/Video, desc: "MV"}
- {id: 403, cat: Movies, desc: "综艺/真人秀"}
- {id: 402, cat: TV, desc: "电视剧"}
- {id: 405, cat: TV, desc: "动画"}
- {id: 404, cat: TV/Anime, desc: "纪录片"}
- {id: 401, cat: Movies, desc: "电影"}
- {id: 401, cat: Movies, desc: "电影 / Movies", default: true}
- {id: 402, cat: TV, desc: "电视剧 / TVSeries", default: true}
- {id: 413, cat: TV/Other, desc: "短剧 / Playlet", default: true}
- {id: 408, cat: Audio, desc: "音乐 / Music", default: true}
- {id: 405, cat: TV/Anime, desc: "动漫 / Anime", default: true}
- {id: 406, cat: Audio/Video, desc: "MV", default: true}
- {id: 403, cat: TV, desc: "综艺 / TV Shows", default: true}
- {id: 407, cat: TV/Sport, desc: "体育竞技 / Sports", default: true}
- {id: 404, cat: TV/Documentary, desc: "纪录片 / Documentary", default: true}
- {id: 409, cat: Other, desc: "其他 / Other", default: true}
- {id: 415, cat: Books/Comics, desc: "漫画 / Cartoon", default: true}
- {id: 414, cat: Console, desc: "游戏 / Game", default: true}
- {id: 412, cat: Other, desc: "学习 / Study", default: true}
- {id: 411, cat: Audio/Audiobook, desc: "有声书 / Audiobook", default: true}
- {id: 410, cat: Books/EBook, desc: "电子书 / Ebook", default: true}
modes:
search: [q]
@@ -65,6 +73,10 @@ settings:
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: 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: login.php
@@ -92,6 +104,9 @@ login:
search:
paths:
- path: torrents.php
categories: [401, 402, 413, 408, 405, 406, 403, 407, 404, 409]
- path: special.php
categories: [415, 414, 412, 411, 410]
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 }}"
@@ -108,7 +123,7 @@ search:
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(a[href^="details.php?id="])
selector: table.torrents > tbody > tr:has(a[href^="download.php?id="])
fields:
category:
@@ -164,12 +179,20 @@ search:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0
@@ -192,4 +215,4 @@ search:
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.8 2023-09-25
# NexusPHP v1.9.6 2025-06-25
@@ -6,6 +6,8 @@ language: fr-FR
type: private
encoding: UTF-8
links:
- https://www.crazyspirits.ca/
legacylinks:
- https://www.crazyspirits.com/
caps:
@@ -113,10 +115,8 @@ 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: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -158,6 +158,7 @@ settings:
asc: asc
login:
# using cookie method because login page has embedded Google reCAPTCHA
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
@@ -276,7 +277,7 @@ search:
# auto adjusted by site account profile
filters:
- name: regexp
args: "Partagé Voilà : </b>(.*?)<br"
args: "Partagé Le : </b>(.*?)<br"
- name: dateparse
args: "MM-dd-yyyy"
downloadvolumefactor:

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