This commit is contained in:
jkenney85 2026-02-02 13:54:24 -06:00
parent 531b60f066
commit 5e5ae3b943
1689 changed files with 2272958 additions and 1890050 deletions

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<key id="539ccf7b-ace6-4362-be4a-10fa7bf749a6" version="1">
<creationDate>2025-11-14T17:35:48.7938942Z</creationDate>
<activationDate>2025-11-14T17:35:48.7838491Z</activationDate>
<expirationDate>2026-02-12T17:35:48.7838491Z</expirationDate>
<descriptor deserializerType="Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60">
<descriptor>
<encryption algorithm="AES_256_CBC" />
<validation algorithm="HMACSHA256" />
<masterKey p4:requiresEncryption="true" xmlns:p4="http://schemas.asp.net/2015/03/dataProtection">
<!-- Warning: the key below is in an unencrypted form. -->
<value>gNp1guKn4EAQCsDfxvmHzbPpsKkA+S/9kXh+VLhr8L3kZsvDbrSZbtL1NmfvrRQRdcxJ+HwPIQXn0C+yWnU1uA==</value>
</masterKey>
</descriptor>
</descriptor>
</key>

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<key id="91dfd536-d65c-4d5f-9dbb-b8465c03f698" version="1">
<creationDate>2025-08-15T00:45:53.1117316Z</creationDate>
<activationDate>2025-08-16T21:55:14.6409163Z</activationDate>
<expirationDate>2025-11-13T00:45:53.0957866Z</expirationDate>
<descriptor deserializerType="Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60">
<descriptor>
<encryption algorithm="AES_256_CBC" />
<validation algorithm="HMACSHA256" />
<masterKey p4:requiresEncryption="true" xmlns:p4="http://schemas.asp.net/2015/03/dataProtection">
<!-- Warning: the key below is in an unencrypted form. -->
<value>LXiAqDrsUeVWGCRl4NgHZXrZRDBDVvPFCpfYtj2K9+kcfEqgXUqm26PxhBNdBWahXbcrKRrTfrLIOyscnZBrtw==</value>
</masterKey>
</descriptor>
</descriptor>
</key>

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<key id="a9274913-ed11-4086-a4cb-1a6b4e0923ea" version="1">
<creationDate>2025-05-18T21:55:14.6634962Z</creationDate>
<activationDate>2025-05-18T21:55:14.6409163Z</activationDate>
<expirationDate>2025-08-16T21:55:14.6409163Z</expirationDate>
<descriptor deserializerType="Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption.ConfigurationModel.AuthenticatedEncryptorDescriptorDeserializer, Microsoft.AspNetCore.DataProtection, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60">
<descriptor>
<encryption algorithm="AES_256_CBC" />
<validation algorithm="HMACSHA256" />
<masterKey p4:requiresEncryption="true" xmlns:p4="http://schemas.asp.net/2015/03/dataProtection">
<!-- Warning: the key below is in an unencrypted form. -->
<value>bJodaNmpw/+USiqRz+28o0p87bSBAwNrF2jQUCWYQAVWmGBHXwJJNoBrpGoVEXM1FPN6nZz+3eWfsOUzZPEOKg==</value>
</masterKey>
</descriptor>
</descriptor>
</key>

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
144
152

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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)

View File

@ -1,7 +1,7 @@
---
id: 1337x
name: 1337x
description: "1337X is a Public torrent site that offers verified torrent downloads"
description: "1337x is a Public torrent site that offers verified torrent downloads"
language: en-US
type: public
encoding: UTF-8
@ -12,14 +12,7 @@ links:
- https://1337x.st/
- https://x1337x.ws/
- https://x1337x.eu/
- https://x1337x.se/
- https://x1337x.cc/
- https://1337x.unblockninja.com/
- https://1337x.ninjaproxy1.com/
- https://1337x.proxyninja.org/
- https://1337x.proxyninja.net/
- https://1337x.torrentbay.st/
- https://1337x.torrentsbay.org/
legacylinks:
- https://1337x.is/
- https://1337x.gd/
@ -27,6 +20,13 @@ legacylinks:
- 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:
@ -115,11 +115,18 @@ caps:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q, album, artist]
music-search: [q]
book-search: [q]
allowrawsearch: true
settings:
- name: uploader
type: text
label: Filter by Uploader
- name: info_uploader
type: info
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
@ -140,6 +147,10 @@ settings:
type: info
label: About the Download links
default: As the iTorrents .torrent download link on this site is known to fail from time to time, we suggest using the magnet link as a fallback. The BTCache and Torrage services are not supported because they require additional user interaction (a captcha for BTCache and a download button on Torrage.)
- name: disablesort
type: checkbox
label: Disable sorting - 1337x prevents sorting searches during high server load, which breaks the indexer when performing a keyword search - disable if you get zero results
default: false
- name: sort
type: select
label: Sort requested from site
@ -167,17 +178,17 @@ download:
search:
paths:
# present first page of movies tv and music results if there are no search parms supplied (20 hits per page)
- path: "{{ if or .Query.Album .Query.Artist .Keywords }}sort-search{{ else }}cat/Movies{{ end }}{{ if or .Query.Album .Query.Artist }}/{{ or .Query.Album .Query.Artist }}{{ else }}/{{ .Keywords }}{{ end }}{{ if or .Query.Album .Query.Artist .Keywords }}/{{ else }}{{ end }}{{ .Config.sort }}/{{ .Config.type }}/1/"
- path: "{{ if or .Query.Album .Query.Artist .Keywords }}sort-search{{ else }}cat/TV{{ end }}{{ if or .Query.Album .Query.Artist }}/{{ or .Query.Album .Query.Artist }}{{ else }}/{{ .Keywords }}{{ end }}{{ if or .Query.Album .Query.Artist .Keywords }}/{{ else }}{{ end }}{{ .Config.sort }}/{{ .Config.type }}/{{ if or .Query.Album .Query.Artist .Keywords }}2{{ else }}1{{ end }}/"
- path: "{{ if or .Query.Album .Query.Artist .Keywords }}sort-search{{ else }}cat/Music{{ end }}{{ if or .Query.Album .Query.Artist }}/{{ or .Query.Album .Query.Artist }}{{ else }}/{{ .Keywords }}{{ end }}{{ if or .Query.Album .Query.Artist .Keywords }}/{{ else }}{{ end }}{{ .Config.sort }}/{{ .Config.type }}/{{ if or .Query.Album .Query.Artist .Keywords }}3{{ else }}1{{ end }}/"
- path: "{{ if or .Query.Album .Query.Artist .Keywords }}sort-search{{ else }}cat/Other{{ end }}{{ if or .Query.Album .Query.Artist }}/{{ or .Query.Album .Query.Artist }}{{ else }}/{{ .Keywords }}{{ end }}{{ if or .Query.Album .Query.Artist .Keywords }}/{{ else }}{{ end }}{{ .Config.sort }}/{{ .Config.type }}/{{ if or .Query.Album .Query.Artist .Keywords }}4{{ else }}1{{ end }}/"
- path: "{{ if and (.Keywords) (eq .Config.disablesort .False) }}sort-{{ else }}{{ end }}{{ if .Keywords }}search/{{ .Keywords }}{{ else }}cat/Movies{{ end }}{{ if and (.Keywords) (eq .Config.disablesort .False) }}/{{ .Config.sort }}/{{ .Config.type }}{{ else }}{{ end }}/1/"
- path: "{{ if and (.Keywords) (eq .Config.disablesort .False) }}sort-{{ else }}{{ end }}{{ if .Keywords }}search/{{ .Keywords }}{{ else }}cat/TV{{ end }}{{ if and (.Keywords) (eq .Config.disablesort .False)) }}/{{ .Config.sort }}/{{ .Config.type }}{{ else }}{{ end }}/{{ if .Keywords }}2{{ else }}1{{ end }}/"
- path: "{{ if and (.Keywords) (eq .Config.disablesort .False) }}sort-{{ else }}{{ end }}{{ if .Keywords }}search/{{ .Keywords }}{{ else }}cat/Music{{ end }}{{ if and (.Keywords) (eq .Config.disablesort .False) }}/{{ .Config.sort }}/{{ .Config.type }}{{ else }}{{ end }}/{{ if .Keywords }}3{{ else }}1{{ end }}/"
- path: "{{ if and (.Keywords) (eq .Config.disablesort .False) }}sort-{{ else }}{{ end }}{{ if .Keywords }}search/{{ .Keywords }}{{ else }}cat/Other{{ end }}{{ if and (.Keywords) (eq .Config.disablesort .False) }}/{{ .Config.sort }}/{{ .Config.type }}{{ else }}{{ end }}/{{ if .Keywords }}4{{ else }}1{{ end }}/"
keywordsfilters:
- name: re_replace # daily standard S2023 > 2023
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:
@ -273,6 +284,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:

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.11 2025-11-02

View File

@ -221,4 +221,4 @@ search:
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.13 2024-07-23
# NexusPHP v1.9.13 2025-12-28

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
@ -68,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"]
@ -101,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 }}"
@ -112,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]
@ -138,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:
@ -148,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
@ -158,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
@ -180,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 v2.0 2026-01-01

View File

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

View File

@ -7,14 +7,26 @@ type: public
encoding: UTF-8
requestDelay: 2
links:
# Send any content to 52btbtbt@gmail.com to get the latest address. or visit https://521.52btbt.cyou/
- https://www.529053.xyz/
- https://www.529055.xyz/
# Send any content to 52btbtbt@gmail.com to get the latest address. or visit https://52btbt.icu/
- https://www.529072.xyz/
- https://www.529073.xyz/
legacylinks:
- https://529050.xyz/
- https://529048.xyz/
- https://529049.xyz/
- https://www.529052.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/
- https://www.529069.xyz/
- https://www.529067.xyz/
- https://www.529070.xyz/
- https://www.529071.xyz/
caps:
categorymappings:

View File

@ -8,17 +8,20 @@ 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: 80, cat: Audio/Audiobook, desc: "Adult/Erotica"}
- {id: 20, cat: Audio/Audiobook, desc: "Biography/Memoirs"}
- {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: 70, cat: Audio/Audiobook, desc: "Computers "}
- {id: 260, cat: Audio/Audiobook, desc: "Crime/Thriller"}
- {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: 130, cat: Audio/Audiobook, desc: "General Fiction"}
@ -29,57 +32,55 @@ caps:
- {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: 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 and Spirituality"}
- {id: 205, cat: Audio/Audiobook, desc: "Reference & Educational"}
- {id: 207, cat: Audio/Audiobook, desc: "Religion & Spirituality"}
- {id: 210, cat: Audio/Audiobook, desc: "Romance"}
- {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: 265, cat: Audio/Audiobook, desc: "Sports & Fitness"}
- {id: 270, cat: Audio/Audiobook, desc: "Suspense"}
- {id: 280, cat: Audio/Audiobook, desc: "Talk Radio"}
- {id: 285, cat: Audio/Audiobook, desc: "Travel"}
- {id: 290, cat: Audio/Audiobook, desc: "Urban Fantasy/Paranormal"}
- {id: 290, cat: Audio/Audiobook, desc: "Urban Fantasy & Paranormal"}
- {id: 300, cat: Audio/Audiobook, desc: "Western"}
- {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: 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: 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"}
- {id: 470, cat: Books/EBook, desc: "[E] Crime & Thriller"}
- {id: 480, cat: Books/EBook, desc: "[E] Fantasy"}
- {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: 560, cat: Books/EBook, desc: "[E] Literary Fiction"}
- {id: 565, cat: Books/EBook, desc: "[E] LitRPG"}
- {id: 570, cat: Books/EBook, desc: "[E] Mystery"}
- {id: 580, cat: Books/EBook, desc: "[E] Non-Fiction"}
- {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: 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]
@ -127,11 +128,11 @@ search:
only_free: "{{ if .Config.freeleech }}1{{ else }}0{{ end }}"
rows:
selector: table.table-striped > tbody > tr:has(a[href^="download.php?torrent="])
selector: table.browse.table.striped > tbody > tr:has(a[href^="download.php?torrent="])
fields: # some users (rank specific?) have an extra column (td:nth-child(4)) with bookmark features
categorydesc:
selector: div[data-tid] > img
selector: img[src^="./pic/caticons"]
attribute: alt
title:
selector: a[href^="details.php?id="]

View File

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

View File

@ -101,7 +101,7 @@ login:
selector: td.text
test:
path: /
selector: a[href="/logout.php"]
selector: a[href*="/logout.php"]
search:
paths:
@ -120,6 +120,12 @@ search:
- 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

View File

@ -29,19 +29,11 @@ caps:
music-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 HDBao Web Site. Otherwise just leave it empty."
label: Cookie
- name: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
@ -69,27 +61,13 @@ 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 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></ol>"
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:
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: yes
error:
- selector: td.embedded:contains("失败")
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="logout.php"]

View File

@ -8,6 +8,8 @@ encoding: UTF-8
requestDelay: 2
links:
- https://www.agsvpt.com/
- https://pt.agsvpt.cn/
legacylinks:
- https://abroad.agsvpt.com/
caps:

View File

@ -57,6 +57,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 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

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,14 +14,13 @@ 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]
allowtvsearchimdb: true
settings:
- name: apikey
@ -71,8 +71,8 @@ login:
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
# 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
@ -118,8 +118,6 @@ search:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
@ -140,8 +138,13 @@ search:
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
description:
text: "{{ .Result.genre }}"
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
@ -189,4 +192,4 @@ search:
minimumseedtime:
# 5 days (as seconds = 5 x 24 x 60 x 60)
text: 432000
# json UNIT3D 9.0.1
# json UNIT3D 9.2.0

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

View File

@ -152,7 +152,7 @@ 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 }}"

View File

@ -75,8 +75,8 @@ login:
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
# 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
@ -144,8 +144,13 @@ search:
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
description:
text: "{{ .Result.genre }}"
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
@ -193,4 +198,4 @@ search:
minimumseedtime:
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 8.3.4
# json UNIT3D 9.1.5

View File

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

View File

@ -28,8 +28,8 @@ caps:
modes:
search: [q]
tv-search: [q, season, ep, tvdbid, tmdbid]
movie-search: [q, tmdbid]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
book-search: [q]
@ -45,6 +45,10 @@ settings:
type: checkbox
label: Search freeleech only
default: false
- name: tmdbidonly
type: checkbox
label: Disable IMDB and TVDB ID search (only support TMDB ID) to potentially improve Sonarr and Radarr results
default: false
- name: single_file_release_use_filename
type: checkbox
label: Use filename as title for single file releases
@ -82,8 +86,8 @@ login:
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
# 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
@ -95,11 +99,11 @@ search:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
# seasonNumber: "{{ .Query.Season }}" # disabled due to Prowlarr/Indexers#486
# episodeNumber: "{{ .Query.Ep }}" # disabled due to Prowlarr/Indexers#486
# imdbId: "{{ .Query.IMDBIDShort }}" # disabled due to #14776
# seasonNumber: "{{ .Query.Season }}" # not supported
# episodeNumber: "{{ .Query.Ep }}" # not supported
imdbId: "{{ if .Config.tmdbidonly }}{{ else }}{{ .Query.IMDBIDShort }}{{ end }}"
tmdbId: "{{ .Query.TMDBID }}"
tvdbId: "{{ .Query.TVDBID }}"
tvdbId: "{{ if .Config.tmdbidonly }}{{ else }}{{ .Query.TVDBID }}{{ end }}"
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
@ -149,8 +153,13 @@ search:
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: replace
args: [" & ", "_&_"]
_internal:
selector: internal
case:
0: "{{ .False }}"
1: "{{ .True }}"
description:
text: "{{ .Result.genre }}"
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:
selector: seeders
leechers:

View File

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

View File

@ -0,0 +1,202 @@
---
id: arabicsource-api
name: ArabicSource (API)
description: "ArabicSource is an ARABIC Private Torrent Tracker for MOVIES / TV"
language: ar-SA
type: private
encoding: UTF-8
links:
- https://arabicsource.net/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "أفلام رسوم مدبلجة (Dubbed Animated Films)"}
- {id: 2, cat: Movies, desc: "أفلام الرسوم المدبلجة (Subtitled Animated Films)"}
- {id: 3, cat: Movies, desc: "الأفلام العربية (Arabic Films)"}
- {id: 4, cat: Movies, desc: "أفلام أجنبية (Foreign Films)"}
- {id: 5, cat: TV, desc: "مسلسلات رسوم مدبلجة (Dubbed Animated Series)"}
- {id: 6, cat: TV, desc: "مسلسلات رسوم مترجمة (Subtitled Animated Series)"}
- {id: 7, cat: TV, desc: "مسلسلات عربية (Arabic Series)"}
- {id: 8, cat: TV, desc: "مسرحيات (Plays)"}
- {id: 10, cat: Other, desc: "إسلاميات (Islamic Content)"}
- {id: 11, cat: Other, desc: "رمضانيات (Ramadan Content)"}
- {id: 12, cat: Other, desc: "منوعات (Variety)"}
- {id: 13, cat: Audio, desc: "صوتيات (Audio)"}
- {id: 14, cat: Movies, desc: "كرتون كلاسيك (Classic Cartoons)"}
- {id: 15, cat: Other, desc: "تورنت خام (Raw Torrents)"}
- {id: 20, cat: TV/Documentary, desc: "مسلسلات وثائقيات (Documentary Series)"}
- {id: 9, cat: Movies, desc: "أفلام وثائقيات (Documentary Films)"}
- {id: 19, cat: Other, desc: "تورينتات ضائعة (Lost Torrents)"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
settings:
- name: apikey
type: text
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://arabicsource.net/\" target=\"_blank\">ArabicSource</a> account <i>My Settings</i> page and clicking on the <b>API Key</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: single_file_release_use_filename
type: checkbox
label: Use filename as title for single file releases
default: true
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_activity
type: info
label: Account Inactivity
default: "The maximum number of days you can stay away from the site is 40 days, and only if you suspend the account, you will get a grace period of 180 days, but you must contact the administration in advance so that this is added to your personal account and you are not exposed to expulsion."
login:
path: /api/torrents
method: get
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
- selector: :root:contains("Account is Banned")
search:
paths:
# https://hdinnovations.github.io/UNIT3D/torrent_api.html
# https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
- path: api/torrents/filter
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"
episodeNumber: "{{ .Query.Ep }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tmdbId: "{{ .Query.TMDBID }}"
tvdbId: "{{ .Query.TVDBID }}"
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
details:
selector: details_link
download:
selector: download_link
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
description:
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: times_completed
date:
# "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50
selector: created_at
filters:
- name: append
args: " +00:00" # GMT
- name: dateparse
args: "MM/dd/yyyy HH:mm:ss zzz"
size:
selector: size
_featured:
selector: featured
case:
False: "{{ .False }}"
True: "{{ .True }}"
downloadvolumefactor_freeleech:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
0%: 1 # not free
25%: 0.75
50%: 0.5
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
downloadvolumefactor:
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
uploadvolumefactor_double_upload:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
uploadvolumefactor:
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
minimumratio:
text: 1.05
# json UNIT3D 9.2.0

View File

@ -51,7 +51,6 @@ caps:
- {id: 89, cat: TV, desc: "مسلسلات عربية كامله (Full Arabic Series)"}
- {id: 52, cat: TV, desc: "مسرحيات (Plays)"}
- {id: 71, cat: TV, desc: "مسلسلات مدبلجه عربي (Arabic Dubbed Series)"}
- {id: 117, cat: TV, desc: "رمضان 2025 (Ramadan 2025)"}
- {id: 90, cat: TV, desc: "برامج ومسابقات (Shows)"}
# المرئيات الاجنبية Foreign Movies
- {id: 92, cat: TV/Foreign, desc: "تعليمي (Educational)"}
@ -116,7 +115,8 @@ search:
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
@ -124,9 +124,23 @@ search:
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"
# does not support imdbid search or provide imdb link in results
keywordsfilters:
# Keep SxxEyy format for tv-search (Sonarr/Radarr). ArabP2P search does not reliably match
# when we convert to the Arabic bracket format unless the Arabic title is also present.
- name: re_replace # normalize "1x09" => "S1E09" (then pad below)
args: ["(?i)\\b(\\d{1,2})x(\\d{1,3})\\b", "S$1E$2"]
- name: re_replace # normalize "S01 E09" => "S01E09"
args: ["(?i)\\bS(\\d{1,2})\\s+E(\\d{1,3})\\b", "S$1E$2"]
- name: re_replace # pad season: S1E09 => S01E09
args: ["(?i)\\bS(\\d)(?=E)", "S0$1"]
- name: re_replace # pad episode: S01E9 => S01E09
args: ["(?i)E(\\d)\\b", "E0$1"]
- name: re_replace
args: ["\\s{2,}", " "]
- name: trim
rows:
selector: table#torrents_list_p > tbody > tr:has(a[href^="download.php?id="])
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
@ -139,6 +153,28 @@ search:
args: category
title:
selector: a[href^="index.php?page=torrent-details"]
filters:
- name: re_replace
args: ["(?<=\\d)\\s+(?=\\d)", " "]
- name: re_replace
args: ["\\[(\\d+(?:[\\s-]+\\d+)*)\\]\\s*\\[(\\d{4})\\]\\s*\\[م(\\d+)\\]", "S$3E$1 [$2]"]
- name: re_replace
args: ["\\[(\\d+(?:[\\s-]+\\d+)*)\\]\\s*\\[م(\\d+)\\]", "S$2E$1"]
- name: re_replace
args: ["^\\[(\\d+(?:[\\s-]+\\d+)*)\\](?!\\s*\\[م)", "S01E$1"]
- name: re_replace
args: ["E(\\d+)[\\s-]+(\\d+)", "E$1-E$2"]
- name: re_replace
args: ["\\[\\s*\\]", ""]
- name: re_replace
args: ["(?<=\\S)(\\[)", " $1"]
- name: re_replace
args: ["S(\\d)(?=E)", "S0$1"]
- name: re_replace
args: ["E(\\d)(?=\\D)", "E0$1"]
- name: re_replace
args: ["\\s{2,}", " "]
- name: trim
details:
selector: a[href^="index.php?page=torrent-details"]
attribute: href

View File

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

View File

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

View File

@ -0,0 +1,191 @@
---
id: aura4k-api
name: AURA4K (API)
description: "AURA4K is a Private Torrent Tracker for MOVIES / TV"
language: en-US
type: private
encoding: UTF-8
links:
- https://aura4k.net/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: TV, desc: "TV"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
allowtvsearchimdb: true
settings:
- name: apikey
type: text
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://aura4k.net/\" target=\"_blank\">AURA4K</a> account <i>My Settings</i> page and clicking on the <b>API Key</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: single_file_release_use_filename
type: checkbox
label: Use filename as title for single file releases
default: true
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_activity
type: info
label: Account Inactivity
default: "Accounts with no activity (login/traffic) for more than 90 days may be automatically pruned."
login:
path: /api/torrents
method: get
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
- selector: :root:contains("Account is Banned")
search:
paths:
# https://hdinnovations.github.io/UNIT3D/torrent_api.html
# https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
- path: api/torrents/filter
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"
episodeNumber: "{{ .Query.Ep }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tmdbId: "{{ .Query.TMDBID }}"
tvdbId: "{{ .Query.TVDBID }}"
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
details:
selector: details_link
download:
selector: download_link
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
description:
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: times_completed
date:
# "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50
selector: created_at
filters:
- name: append
args: " +00:00" # GMT
- name: dateparse
args: "MM/dd/yyyy HH:mm:ss zzz"
size:
selector: size
_featured:
selector: featured
case:
False: "{{ .False }}"
True: "{{ .True }}"
downloadvolumefactor_freeleech:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
0%: 1 # not free
25%: 0.75
50%: 0.5
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
downloadvolumefactor:
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
uploadvolumefactor_double_upload:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
uploadvolumefactor:
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
# global MR is 0.4 but torrents must be seeded for 72 hours OR 1:1
minimumratio:
text: 1.0
minimumseedtime:
# 72 hours (as seconds = 3 x 24 x 60 x 60)
text: 259200
# json UNIT3D 9.2.0

View File

@ -64,20 +64,23 @@ login:
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)

View File

@ -10,17 +10,19 @@ 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"}
- {id: 3, cat: PC, desc: "Apps"}
- {id: 109, cat: PC, desc: "Attract-Mode"}
- {id: 64, cat: Audio/Audiobook, desc: "Audiobooks"}
- {id: 71, cat: Console, desc: "Batocera"}
- {id: 4, cat: Movies/BluRay, desc: "Blu-Ray"}
- {id: 86, cat: Console, desc: "Chinese Systems"}
- {id: 22, cat: Console, desc: "CoinOps"}
- {id: 112, cat: Console, desc: "Brojack & Laws"}
- {id: 42, cat: Console, desc: "CoinOPS Official"}
- {id: 65, cat: Console, desc: "CoinOps Unofficial"}
- {id: 22, cat: Console, desc: "CoinOps"}
- {id: 63, cat: Books/Comics, desc: "Comics"}
- {id: 60, cat: Console, desc: "Core"}
- {id: 72, cat: Console, desc: "CORE Community"}
@ -28,45 +30,43 @@ caps:
- {id: 16, cat: TV/Documentary, desc: "Docu"}
- {id: 41, cat: Console, desc: "Dragon"}
- {id: 5, cat: Books, desc: "EBooks"}
- {id: 80, cat: PC, desc: "Emulation Media"}
- {id: 61, cat: PC, desc: "emuxtras"}
- {id: 69, cat: TV, desc: "Entertainment"}
- {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: 107, cat: Console, desc: "KinHanK"}
- {id: 43, cat: Console, desc: "LaunchBox"}
- {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: PC, desc: "RaspberryPi"}
- {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: PC, desc: "Roms and Emulators"}
- {id: 62, cat: PC, desc: "RPi"}
- {id: 81, cat: PC, desc: "Scene"}
- {id: 68, cat: PC, desc: "Schmoomer's"}
- {id: 110, cat: Console, desc: "ScummVM"}
- {id: 57, cat: Console, desc: "Sega"}
- {id: 74, cat: PC, desc: "Sleyk/SGC"}
- {id: 40, cat: TV, desc: "Soaps"}
- {id: 75, cat: Audio, desc: "Soundtracks"}
- {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: 75, cat: Audio, desc: "Video Game Music"}
- {id: 90, cat: PC, desc: "TeknoParrot"}
- {id: 97, cat: TV/Other, desc: "Tutorials"}
- {id: 9, cat: TV, desc: "TV Packs"}
- {id: 11, cat: TV, desc: "TV Shows"}
- {id: 73, cat: Console, desc: "Wolfanoz"}
- {id: 14, cat: TV/Sport, desc: "WWE"}
- {id: 26, cat: Console, desc: "Xbox"}
- {id: 12, cat: Console, desc: "XBOX360"}
- {id: 23, cat: XXX, desc: "xxx18+"}
@ -128,29 +128,31 @@ search:
# sort is done via do=quick_sort, and freeleech sorting is part of that set
rows:
selector: "table#sortabletable > tbody > tr:has(a[href*=\"/details.php?id=\"]){{ if .Config.freeleech }}:has(img[src$=\"freedownload.gif\"]){{ else }}{{ end }}"
selector: "table#sortabletable > tbody > tr:has(a[href*=\"download.php?id=\"]){{ if .Config.freeleech }}:has(img[src$=\"freedownload.gif\"]){{ else }}{{ end }}"
filters:
- name: andmatch
args: 66
fields:
category:
selector: a[href*="/browse.php?category="]
selector: a[href*="browse.php?category="]
attribute: href
filters:
- name: querystring
args: category
title_default:
selector: a[href*="/details.php?id="]
# is often abbreviated
selector: a[href*="details.php?id="]
title:
# can be abbreviated but usually longer than title_default
selector: div.tooltip-content > div
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
magnet:
selector: a[href^="magnet:?xt="]
@ -183,4 +185,9 @@ search:
args: " +00:00" # GMT
- name: dateparse
args: "dd-MM-yyyy HH:mm zzz"
minimumratio:
text: 1.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# TS Special Edition v.8.0

View File

@ -0,0 +1,186 @@
---
id: baozipt
name: baoziPT
description: "baoziPT is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://p.t-baozi.cc/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "电影/Movies"}
- {id: 402, cat: TV, desc: "剧集/TV Series"}
- {id: 403, cat: TV, desc: "综艺/TV Shows"}
- {id: 404, cat: TV/Documentary, desc: "纪录片/Documentaries"}
- {id: 405, cat: TV/Anime, desc: "动漫/Anime"}
- {id: 406, cat: Audio/Video, desc: "音乐视频/Music Videos"}
- {id: 407, cat: TV/Sport, desc: "体育运动/Sports"}
- {id: 408, cat: Audio, desc: "高品质音频/HQ Audio"}
- {id: 409, cat: Other, desc: "其他/Other"}
- {id: 410, cat: TV, desc: "短剧/Playlet"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
music-search: [q]
book-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Account retention rules:<ol><li>Veteran User and above will be retained forever</li><li>Elite User and above will not have their account deleted after parking (in the control panel)</li><li>Users with a parked account will be deleted if they do not log in for 400 consecutive days</li><li>Users with a non-parked account will be deleted if they do not log in for 150 consecutive days</li><li>Users who have no traffic (i.e. upload/download data are both 0) will be deleted if they do not log in for 100 consecutive days.</li></ol>"
login:
# using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}"
# 0 incldead, 1 active, 2 dead
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl
search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
# 0 AND, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(a[href^="download.php?id="])
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title:
selector: a[title][href^="details.php?id="]
attribute: title
optional: true
default: "{{ .Result.title_default }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: img[data-src]
attribute: data-src
imdbid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="movie.douban.com/subject/"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
optional: true
default: 512MB
seeders:
selector: td.rowfollow:nth-child(6)
optional: true
default: 0
leechers:
selector: td.rowfollow:nth-child(7)
optional: true
default: 0
grabs:
selector: td.rowfollow:nth-child(8)
optional: true
default: 0
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 2.0
minimumseedtime:
# 1 day (as seconds = 24 x 60 x 60)
text: 86400
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.9.11 2025-11-02

View File

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

View File

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

View File

@ -81,7 +81,7 @@ login:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: i.fa-arrow-right-from-bracket[title="Kilépés"]
selector: a[onclick="confirmLogout()"]
search:
paths:

View File

@ -145,7 +145,7 @@ search:
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
size:
selector: td.fixed-width-size > span
selector: td.fixed-width-size > a
grabs:
selector: td.fixed-width-completed
seeders:

View File

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

View File

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

View File

@ -6,6 +6,7 @@ language: hu-HU
type: private
encoding: UTF-8
links:
- https://bitpalace.hu/
- https://bitpalace.cc/
caps:
@ -35,10 +36,10 @@ caps:
- {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: 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: 26, cat: Audio/MP3, desc: "ZENE MP3"}
- {id: 20, cat: Audio/MP3, desc: "ZENE MP3"}
modes:
search: [q]

View File

@ -1,6 +1,6 @@
---
id: bitporn
name: BitPorn
name: BitPorn (API)
description: "BitPorn (Malacka) is a HUNGARIAN Private Torrent Tracker for 3X"
language: hu-HU
type: private
@ -10,67 +10,69 @@ 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: 460, cat: XXX, desc: "Fansite"}
- {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: 459, cat: XXX, desc: "Game"}
- {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: 54, cat: XXX, desc: Ai Generated"}
- {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
@ -78,12 +80,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
@ -91,121 +93,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: "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.contenttable > 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 v2.4 (custom)
# json UNIT3D 9.2.0 (custom)

View File

@ -1,47 +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.eu/
legacylinks:
- https://bitsearch.nocensor.cloud/
- https://bitsearch.mrunblock.bond/
- https://solidtorrents.net/
- https://solidtorrents.nocensor.cloud/
- https://solidtorrents.to/
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": 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
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]
@ -51,139 +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
- name: info_category_8000
type: info
label: About BitSearch Categories
default: BitSearch does not properly return categories in its search results for some releases.</br>To add to your Apps' Torznab indexer, you will need to include the 8000(Other) category.
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:

View File

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

View File

@ -13,67 +13,23 @@ legacylinks:
caps:
categorymappings:
- {id: 56, cat: Movies, desc: "BTRG"}
- {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: 95, cat: Movies, desc: "HMAX"}
- {id: 98, cat: Movies, desc: "PUHUTV"}
- {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: 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: "Playstation"}
- {id: 82, cat: Console/PSP, desc: "PSP"}
- {id: 83, cat: Console/Other, desc: "Gameboy"}
- {id: 87, cat: Console/XBox, desc: "XBOX"}
- {id: 88, cat: Console/Other, desc: "NEO-GEO"}
- {id: 89, cat: Console/Wii, desc: "Nintendo Wii"}
- {id: 6, cat: PC/0day, desc: "Program"}
- {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: 105, 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]
@ -152,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

View File

@ -10,23 +10,26 @@ links:
caps:
categorymappings:
- {id: "/3ds", cat: Console/3DS, desc: "3DS"}
- {id: "/arcade", cat: Console/Other, desc: "Arcade"}
- {id: "/dreamcast", cat: Console/Other, desc: "Dreamcast"}
- {id: "/nds", cat: Console/Other, desc: "DS"}
- {id: "/gba", cat: Console/Other, desc: "Game Boy Advance"}
- {id: "/gamecube", cat: Console/Other, desc: "GameCube"}
- {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: "psp", cat: Console/PSP, desc: "PlayStation Portable"}
- {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: "/wii", cat: Console/Wii, desc: "Wii"}
- {id: "/xbox", cat: Console/XBox, desc: "Xbox"}
modes:
@ -76,31 +79,30 @@ search:
category:
selector: p.card-text a
attribute: href
_platform:
title_platform:
selector: p.card-text a
title:
selector: h4.card-title a
filters:
- name: append
args: " - {{ .Result._platform }}"
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+\.?\d+[T|G|K]iB)
args: ([\d\.]+[T|G|M|K]iB)
date:
selector: p.card-text
filters:
- name: regexp
args: (\d{4}-\d{2}-\d{2})
- name: dateparse
args: "yyyy-MM-dd"
# release date is for game, not torrent
text: now
seeders:
text: 1
leechers:
@ -109,4 +111,9 @@ search:
text: 0
uploadvolumefactor:
text: 1
description:
selector: p.card-text
filters:
- name: regexp
args: "(Score: .+)"
# engine n/a

View File

@ -24,6 +24,7 @@ caps:
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
allowtvsearchimdb: true
settings:
- name: apikey
@ -73,8 +74,8 @@ login:
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
# 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
@ -120,8 +121,6 @@ search:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
@ -142,8 +141,13 @@ search:
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
description:
text: "{{ .Result.genre }}"
text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
@ -191,4 +195,4 @@ search:
minimumseedtime:
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 9.0.5
# json UNIT3D 9.2.0

View File

@ -7,13 +7,17 @@ type: public
encoding: UTF-8
# current domain at https://cursor.vip/btmulu then follow links to the final search-movie link
links:
- https://btmulu.work/
- 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:
@ -39,7 +43,7 @@ search:
name: "{{ re_replace .Keywords \"[\\s]+\" \"+\" }}"
rows:
selector: article.item
selector: article.item:has(a[href^="/hash/"])
filters:
- name: andmatch

View File

@ -0,0 +1,70 @@
---
id: btsate
name: btsate
description: "btsate 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

View File

@ -7,9 +7,8 @@ type: public
encoding: UTF-8
# use https://tellme.pw/btsow to find the new domain
links:
- https://btsow.pics/
- https://btsow.lol/
legacylinks:
- https://btsow.click/
- https://btsow.cfd/
- https://btsow.sbs/
- https://btsow.quest/
@ -24,6 +23,7 @@ legacylinks:
- https://btsow.homes/
- https://btsow.yachts/
- https://btsow.motorcycles/
- https://btsow.pics/
caps:
categories:

View File

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

View File

@ -7,15 +7,15 @@ type: private
encoding: UTF-8
links:
- https://bwtorrents.tv/
- https://www.bwtorrents.life/
- 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:

View File

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

View File

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

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