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 type: public
encoding: UTF-8 encoding: UTF-8
links: links:
- https://0magnet.co/
- https://13mag.net/ - https://13mag.net/
- https://16mag.net/ - https://16mag.net/
legacylinks: legacylinks:
- https://0magnet.com/ - https://0magnet.com/
- https://9mag.net/ - https://9mag.net/
- https://0magnet.co/
caps: caps:
categories: categories:
@ -42,7 +42,7 @@ search:
paths: paths:
- path: search - path: search
inputs: inputs:
q: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}" q: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}.{{ end }}"
rows: rows:
selector: table > tbody > tr:has(td) selector: table > tbody > tr:has(td)

View File

@ -1,7 +1,7 @@
--- ---
id: 1337x id: 1337x
name: 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 language: en-US
type: public type: public
encoding: UTF-8 encoding: UTF-8
@ -12,14 +12,7 @@ links:
- https://1337x.st/ - https://1337x.st/
- https://x1337x.ws/ - https://x1337x.ws/
- https://x1337x.eu/ - https://x1337x.eu/
- https://x1337x.se/
- https://x1337x.cc/ - 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: legacylinks:
- https://1337x.is/ - https://1337x.is/
- https://1337x.gd/ - https://1337x.gd/
@ -27,6 +20,13 @@ legacylinks:
- https://1337x.abcproxy.org/ - https://1337x.abcproxy.org/
- https://1337x.so/ - https://1337x.so/
- https://1337x.unblockit.download/ - 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: caps:
categorymappings: categorymappings:
@ -115,11 +115,18 @@ caps:
search: [q] search: [q]
tv-search: [q, season, ep] tv-search: [q, season, ep]
movie-search: [q] movie-search: [q]
music-search: [q, album, artist] music-search: [q]
book-search: [q] book-search: [q]
allowrawsearch: true allowrawsearch: true
settings: 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 - name: info_flaresolverr
type: info_flaresolverr type: info_flaresolverr
- name: downloadlink - name: downloadlink
@ -140,6 +147,10 @@ settings:
type: info type: info
label: About the Download links 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.) 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 - name: sort
type: select type: select
label: Sort requested from site label: Sort requested from site
@ -167,17 +178,17 @@ download:
search: search:
paths: paths:
# present first page of movies tv and music results if there are no search parms supplied (20 hits per page) # 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 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 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 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 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 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 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/Other{{ end }}{{ if and (.Keywords) (eq .Config.disablesort .False) }}/{{ .Config.sort }}/{{ .Config.type }}{{ else }}{{ end }}/{{ if .Keywords }}4{{ else }}1{{ end }}/"
keywordsfilters: keywordsfilters:
- name: re_replace # daily standard S2023 > 2023 - name: re_replace # daily standard S2023 > 2023
args: ["\\bS(20\\d{2})\\b", "$1"] args: ["\\bS(20\\d{2})\\b", "$1"]
rows: 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: fields:
title_default: title_default:
@ -273,6 +284,10 @@ search:
selector: td[class^="coll-2"] selector: td[class^="coll-2"]
leechers: leechers:
selector: td[class^="coll-3"] selector: td[class^="coll-3"]
_username:
selector: td[class^="coll-5"]
description:
text: "Uploader: {{ .Result._username }}"
downloadvolumefactor: downloadvolumefactor:
text: 0 text: 0
uploadvolumefactor: 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: description:
selector: td:nth-child(2) selector: td:nth-child(2)
remove: a, b, font, img, span 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: 406, cat: Audio/Video, desc: "Music Videos"}
- {id: 407, cat: TV/Sport, desc: "Sports"} - {id: 407, cat: TV/Sport, desc: "Sports"}
- {id: 408, cat: Audio, desc: "HQ Audio"} - {id: 408, cat: Audio, desc: "HQ Audio"}
- {id: 410, cat: PC, desc: "Software"} - {id: 409, cat: Other, desc: "Misc"}
- {id: 411, cat: Books, desc: "Documents"}
- {id: 412, cat: PC/Games, desc: "Games"}
modes: modes:
search: [q] search: [q]
@ -30,12 +28,11 @@ caps:
book-search: [q] book-search: [q]
settings: settings:
- name: username - name: cookie
type: text type: text
label: Username label: Cookie
- name: password - name: info_cookie
type: password type: info_cookie
label: Password
- name: freeleech - name: freeleech
type: checkbox type: checkbox
label: Search freeleech only 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>" 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: login:
path: login.php # using cookie method because site does a JS call to API/Challenge via JQuery to load response parm required for takelogin.php
method: form method: cookie
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs: inputs:
username: "{{ .Config.username }}" cookie: "{{ .Config.cookie }}"
password: "{{ .Config.password }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:has(h2:contains("Đăng nhập thất bại!")) # Login failed!
- selector: td.embedded:has(h2:contains("Thất bại")) # Failure (captcha)
test: test:
path: index.php path: index.php
selector: a[href="logout.php"] selector: a[href="logout.php"]
@ -101,7 +85,7 @@ search:
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}" spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl # 0 title, 1 descr, 3 uploader, 4 imdburl
search_area: "{{ if .Query.IMDBID }}4{{ else }}0{{ end }}" search_area: "{{ if .Query.IMDBID }}4{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact # 0 AND, 2 exact
search_mode: 0 search_mode: 0
sort: "{{ .Config.sort }}" sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}" type: "{{ .Config.type }}"
@ -112,23 +96,23 @@ search:
fields: fields:
category: category:
selector: a[href^="?cat="] selector: a[href*="?cat="]
attribute: href attribute: href
filters: filters:
- name: querystring - name: querystring
args: cat args: cat
title_default: title_default:
selector: a[href^="details.php?id="] selector: a[href*="details.php?id="]
title: title:
selector: a[title][href^="details.php?id="] selector: a[title][href*="details.php?id="]
attribute: title attribute: title
optional: true optional: true
default: "{{ .Result.title_default }}" default: "{{ .Result.title_default }}"
details: details:
selector: a[href^="details.php?id="] selector: a[href*="details.php?id="]
attribute: href attribute: href
download: download:
selector: a[href^="download.php?id="] selector: a[href*="download.php?id="]
attribute: href attribute: href
poster: poster:
selector: img[data-src] selector: img[data-src]
@ -138,7 +122,7 @@ search:
attribute: href attribute: href
date_elapsed: date_elapsed:
# time type: time elapsed (default) # time type: time elapsed (default)
selector: td.rowfollow:nth-child(5) > span[title] selector: td.rowfollow:nth-child(4) > span[title]
attribute: title attribute: title
optional: true optional: true
filters: filters:
@ -148,7 +132,7 @@ search:
args: "yyyy-MM-dd HH:mm:ss zzz" args: "yyyy-MM-dd HH:mm:ss zzz"
date_added: date_added:
# time added # time added
selector: td.rowfollow:nth-child(5):not(:has(span)) selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true optional: true
filters: filters:
- name: append - name: append
@ -158,13 +142,13 @@ search:
date: date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}" text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size: size:
selector: td.rowfollow:nth-child(6) selector: td.rowfollow:nth-child(5)
seeders: seeders:
selector: td.rowfollow:nth-child(7) selector: td.rowfollow:nth-child(6)
leechers: leechers:
selector: td.rowfollow:nth-child(8) selector: td.rowfollow:nth-child(7)
grabs: grabs:
selector: td.rowfollow:nth-child(9) selector: td.rowfollow:nth-child(8)
downloadvolumefactor: downloadvolumefactor:
case: case:
img.pro_free: 0 img.pro_free: 0
@ -180,9 +164,9 @@ search:
img.pro_2up: 2 img.pro_2up: 2
"*": 1 "*": 1
minimumseedtime: minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60) # 5 days (as seconds = 5 x 24 x 60 x 60)
text: 259200 text: 432000
description: description:
selector: td:nth-child(3) selector: td:nth-child(2)
remove: a, b, font, img, span 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: 17, cat: Movies/BluRay, desc: "Movies Blu-ray"}
- {id: 27, cat: Movies/BluRay, desc: "Movies BD25 Encode"} - {id: 27, cat: Movies/BluRay, desc: "Movies BD25 Encode"}
- {id: 33, cat: Movies/BluRay, desc: "Movies BD9 AVCHD"} - {id: 33, cat: Movies/BluRay, desc: "Movies BD9 AVCHD"}
- {id: 22, cat: Movies, desc: "Movies 2D to 3D Conv"} - {id: 22, cat: Movies, desc: "Movies Home Conversions"}
- {id: 32, cat: Movies, desc: "Bluray MKV Remux"} - {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: 23, cat: Movies/3D, desc: "Movies Evo 3D"}
- {id: 36, cat: Movies/UHD, desc: "Movies 4K UHD Bluray"} - {id: 36, cat: Movies/UHD, desc: "Movies 4K UHD Bluray"}
- {id: 37, cat: Movies/UHD, desc: "Movies 4K UHD Encode"} - {id: 37, cat: Movies/UHD, desc: "Movies 4K UHD Encode"}
@ -69,6 +71,10 @@ settings:
type: info type: info
label: Account Inactivity 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." 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: login:
path: index.php?page=login path: index.php?page=login

View File

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

View File

@ -8,17 +8,20 @@ language: en-US
type: private type: private
encoding: UTF-8 encoding: UTF-8
links: links:
- https://usefultrash.net/
legacylinks:
- https://abtorrents.me/ - https://abtorrents.me/
- https://abtorrents.xyz/
caps: caps:
categorymappings: categorymappings:
- {id: 10, cat: Audio/Audiobook, desc: "Action/Adventure"} - {id: 10, cat: Audio/Audiobook, desc: "Action & Adventure"}
- {id: 80, cat: Audio/Audiobook, desc: "Adult/Erotica"} - {id: 80, cat: Audio/Audiobook, desc: "Adult & Erotica"}
- {id: 20, cat: Audio/Audiobook, desc: "Biography/Memoirs"} - {id: 20, cat: Audio/Audiobook, desc: "Biography & Memoirs"}
- {id: 30, cat: Audio/Audiobook, desc: "Business"} - {id: 30, cat: Audio/Audiobook, desc: "Business"}
- {id: 40, cat: Audio/Audiobook, desc: "Childrens"} - {id: 40, cat: Audio/Audiobook, desc: "Childrens"}
- {id: 70, cat: Audio/Audiobook, desc: "Computers"} - {id: 70, cat: Audio/Audiobook, desc: "Computers"}
- {id: 260, cat: Audio/Audiobook, desc: "Crime/Thriller"} - {id: 260, cat: Audio/Audiobook, desc: "Crime & Thriller"}
- {id: 90, cat: Audio/Audiobook, desc: "Fantasy-General"} - {id: 90, cat: Audio/Audiobook, desc: "Fantasy-General"}
- {id: 100, cat: Audio/Audiobook, desc: "Fantasy-Youth"} - {id: 100, cat: Audio/Audiobook, desc: "Fantasy-Youth"}
- {id: 130, cat: Audio/Audiobook, desc: "General Fiction"} - {id: 130, cat: Audio/Audiobook, desc: "General Fiction"}
@ -29,57 +32,55 @@ caps:
- {id: 170, cat: Audio/Audiobook, desc: "Literature"} - {id: 170, cat: Audio/Audiobook, desc: "Literature"}
- {id: 175, cat: Audio/Audiobook, desc: "LitRPG"} - {id: 175, cat: Audio/Audiobook, desc: "LitRPG"}
- {id: 180, cat: Audio/Audiobook, desc: "Mystery"} - {id: 180, cat: Audio/Audiobook, desc: "Mystery"}
- {id: 190, cat: Audio/Audiobook, desc: "Non-Fiction"}
- {id: 215, cat: Audio/Audiobook, desc: "Paranormal Romance"} - {id: 215, cat: Audio/Audiobook, desc: "Paranormal Romance"}
- {id: 200, cat: Audio/Audiobook, desc: "Radio Drama"} - {id: 200, cat: Audio/Audiobook, desc: "Radio Drama"}
- {id: 205, cat: Audio/Audiobook, desc: "Reference/Educational"} - {id: 205, cat: Audio/Audiobook, desc: "Reference & Educational"}
- {id: 207, cat: Audio/Audiobook, desc: "Religion and Spirituality"} - {id: 207, cat: Audio/Audiobook, desc: "Religion & Spirituality"}
- {id: 210, cat: Audio/Audiobook, desc: "Romance"} - {id: 210, cat: Audio/Audiobook, desc: "Romance"}
- {id: 240, cat: Audio/Audiobook, desc: "Sci-Fi Apocalypse"} - {id: 240, cat: Audio/Audiobook, desc: "Sci-Fi Apocalypse"}
- {id: 220, cat: Audio/Audiobook, desc: "Science"} - {id: 220, cat: Audio/Audiobook, desc: "Science"}
- {id: 230, cat: Audio/Audiobook, desc: "Science Fiction"} - {id: 230, cat: Audio/Audiobook, desc: "Science Fiction"}
- {id: 250, cat: Audio/Audiobook, desc: "Self Improvement"} - {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: 270, cat: Audio/Audiobook, desc: "Suspense"}
- {id: 280, cat: Audio/Audiobook, desc: "Talk Radio"} - {id: 280, cat: Audio/Audiobook, desc: "Talk Radio"}
- {id: 285, cat: Audio/Audiobook, desc: "Travel"} - {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: 300, cat: Audio/Audiobook, desc: "Western"}
- {id: 310, cat: Audio/Audiobook, desc: "Young Adult"} - {id: 310, cat: Audio/Audiobook, desc: "Young Adult"}
- {id: 400, cat: Books/EBook, desc: "[E] Action/Adventure"} - {id: 400, cat: Books/EBook, desc: "[E] Action & Adventure"}
- {id: 410, cat: Books/EBook, desc: "[E] Adult/Erotica"} - {id: 410, cat: Books/EBook, desc: "[E] Adult & Erotica"}
- {id: 420, cat: Books/EBook, desc: "[E] Arts & Crafts (Hobbies)"} - {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: 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: 450, cat: Books/EBook, desc: "[E] Computer Learning"}
- {id: 460, cat: Books/EBook, desc: "[E] Cookery"} - {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: 480, cat: Books/EBook, desc: "[E] Fantasy"}
- {id: 490, cat: Books/EBook, desc: "[E] Fantasy-Youth"} - {id: 490, cat: Books/EBook, desc: "[E] Fantasy-Youth"}
- {id: 500, cat: Books/EBook, desc: "[E] General Fiction"} - {id: 500, cat: Books/EBook, desc: "[E] General Fiction"}
- {id: 510, cat: Books/EBook, desc: "[E] Historical 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: 530, cat: Books/EBook, desc: "[E] Horror"}
- {id: 540, cat: Books/EBook, desc: "[E] Humor (Comedy)"} - {id: 540, cat: Books/EBook, desc: "[E] Humor (Comedy)"}
- {id: 560, cat: Books/EBook, desc: "[E] Literary Fiction"} - {id: 560, cat: Books/EBook, desc: "[E] Literary Fiction"}
- {id: 565, cat: Books/EBook, desc: "[E] LitRPG"} - {id: 565, cat: Books/EBook, desc: "[E] LitRPG"}
- {id: 570, cat: Books/EBook, desc: "[E] Mystery"} - {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: 590, cat: Books/EBook, desc: "[E] Paranormal Romance"}
- {id: 600, cat: Books/EBook, desc: "[E] Reference/Educational"} - {id: 600, cat: Books/EBook, desc: "[E] Reference & Educational"}
- {id: 610, cat: Books/EBook, desc: "[E] Religion and Spirituality"} - {id: 610, cat: Books/EBook, desc: "[E] Religion & Spirituality"}
- {id: 620, cat: Books/EBook, desc: "[E] Romance"} - {id: 620, cat: Books/EBook, desc: "[E] Romance"}
- {id: 630, cat: Books/EBook, desc: "[E] Sci-Fi"} - {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: 645, cat: Books/EBook, desc: "[E] Science"}
- {id: 650, cat: Books/EBook, desc: "[E] Self-Help"} - {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: 665, cat: Books/EBook, desc: "[E] Suspense"}
- {id: 670, cat: Books/EBook, desc: "[E] Travel"} - {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: 700, cat: Books/EBook, desc: "[E] Western"}
- {id: 710, cat: Books/EBook, desc: "[E] Young Adult"} - {id: 710, cat: Books/EBook, desc: "[E] Young Adult"}
- {id: 720, cat: Books/EBook, desc: "[E] Young Children"}
modes: modes:
search: [q] search: [q]
@ -127,11 +128,11 @@ search:
only_free: "{{ if .Config.freeleech }}1{{ else }}0{{ end }}" only_free: "{{ if .Config.freeleech }}1{{ else }}0{{ end }}"
rows: 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 fields: # some users (rank specific?) have an extra column (td:nth-child(4)) with bookmark features
categorydesc: categorydesc:
selector: div[data-tid] > img selector: img[src^="./pic/caticons"]
attribute: alt attribute: alt
title: title:
selector: a[href^="details.php?id="] selector: a[href^="details.php?id="]

View File

@ -1,7 +1,7 @@
--- ---
id: acrossthetasman id: acrossthetasman
name: Across The Tasman 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 language: en-AU
type: private type: private
encoding: UTF-8 encoding: UTF-8

View File

@ -101,7 +101,7 @@ login:
selector: td.text selector: td.text
test: test:
path: / path: /
selector: a[href="/logout.php"] selector: a[href*="/logout.php"]
search: search:
paths: paths:
@ -120,6 +120,12 @@ search:
- name: andmatch - name: andmatch
fields: fields:
category:
selector: a[href*="/browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title: title:
selector: a.index selector: a.index
attribute: href attribute: href
@ -127,17 +133,11 @@ search:
- name: querystring - name: querystring
args: name args: name
- name: urldecode - name: urldecode
category:
selector: td a[href^="/browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
details: details:
selector: a.index selector: a[href*="/details.php?id="]
attribute: href attribute: href
download: download:
selector: a[href^="download.php?id="] selector: a.index
attribute: href attribute: href
filters: filters:
- name: urldecode - name: urldecode
@ -147,6 +147,8 @@ search:
filters: filters:
- name: regexp - name: regexp
args: src=([^\s]+) args: src=([^\s]+)
- name: replace
args: ["\"", ""]
imdbid: imdbid:
selector: a[href*="imdb.com/title/tt"] selector: a[href*="imdb.com/title/tt"]
attribute: href attribute: href

View File

@ -29,19 +29,11 @@ caps:
music-search: [q] music-search: [q]
settings: settings:
- name: username - name: cookie
type: text type: text
label: Username label: Cookie
- name: password - name: info_cookie
type: password type: info_cookie
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."
- name: freeleech - name: freeleech
type: checkbox type: checkbox
label: Search freeleech only label: Search freeleech only
@ -69,27 +61,13 @@ settings:
- name: info_activity - name: info_activity
type: info type: info
label: Account Inactivity 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: login:
path: login.php # using cookie method because site regularly disables login page for certain events during the year
method: form method: cookie
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs: inputs:
secret: "" cookie: "{{ .Config.cookie }}"
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
two_step_code: "{{ .Config.2facode }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:contains("失败")
test: test:
path: index.php path: index.php
selector: a[href="logout.php"] selector: a[href="logout.php"]

View File

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

View File

@ -57,6 +57,10 @@ settings:
options: options:
desc: desc desc: desc
asc: asc 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: login:
# using cookie method because login page returns 0 bytes with a cookie flog=6 # 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 language: en-US
type: private type: private
encoding: UTF-8 encoding: UTF-8
# status https://status.aither.cc/
links: links:
- https://aither.cc/ - https://aither.cc/
@ -13,14 +14,13 @@ caps:
- {id: 1, cat: Movies, desc: "Movie"} - {id: 1, cat: Movies, desc: "Movie"}
- {id: 9, cat: TV/Sport, desc: "Sport"} - {id: 9, cat: TV/Sport, desc: "Sport"}
- {id: 2, cat: TV, desc: "TV"} - {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Music"}
modes: modes:
search: [q] search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid] tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid] movie-search: [q, imdbid, tmdbid]
music-search: [q]
book-search: [q] book-search: [q]
allowtvsearchimdb: true
settings: settings:
- name: apikey - name: apikey
@ -71,8 +71,8 @@ login:
search: search:
paths: paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x) # https://hdinnovations.github.io/UNIT3D/torrent_api.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476 # https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
- path: api/torrents/filter - path: api/torrents/filter
response: response:
type: json type: json
@ -118,8 +118,6 @@ search:
selector: details_link selector: details_link
download: download:
selector: download_link selector: download_link
infohash:
selector: info_hash
poster: poster:
selector: meta.poster selector: meta.poster
filters: filters:
@ -140,8 +138,13 @@ search:
args: ["(?i)(TV Movie)", "TV_Movie"] args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace - name: replace
args: [" & ", "_&_"] args: [" & ", "_&_"]
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
description: description:
text: "{{ .Result.genre }}" text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders: seeders:
selector: seeders selector: seeders
leechers: leechers:
@ -189,4 +192,4 @@ search:
minimumseedtime: minimumseedtime:
# 5 days (as seconds = 5 x 24 x 60 x 60) # 5 days (as seconds = 5 x 24 x 60 x 60)
text: 432000 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: keywordsfilters:
# drop the year from searches since site titles do not include year # drop the year from searches since site titles do not include year
- name: re_replace - name: re_replace
args: ["(19|20[0-9]{2})", ""] args: ["(\\s*\\b((19|20)\\d{2})\\b)", ""]
rows: rows:
selector: "div#fancy-list-group ul.list-group li.list-group-item{{ if .Config.freeleech }}:has(span.badge-success:contains(\"FREE\")){{ else }}{{ end }}" 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: search:
paths: paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x) # https://hdinnovations.github.io/UNIT3D/torrent_api.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476 # https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
- path: api/torrents/filter - path: api/torrents/filter
response: response:
type: json type: json
@ -144,8 +144,13 @@ search:
args: ["(?i)(TV Movie)", "TV_Movie"] args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace - name: replace
args: [" & ", "_&_"] args: [" & ", "_&_"]
_internal:
selector: internal
case:
False: "{{ .False }}"
True: "{{ .True }}"
description: description:
text: "{{ .Result.genre }}" text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders: seeders:
selector: seeders selector: seeders
leechers: leechers:
@ -193,4 +198,4 @@ search:
minimumseedtime: minimumseedtime:
# 7 days (as seconds = 7 x 24 x 60 x 60) # 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800 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: modes:
search: [q] search: [q]
tv-search: [q, season, ep, tvdbid, tmdbid] tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, tmdbid] movie-search: [q, imdbid, tmdbid]
music-search: [q] music-search: [q]
book-search: [q] book-search: [q]
@ -45,6 +45,10 @@ settings:
type: checkbox type: checkbox
label: Search freeleech only label: Search freeleech only
default: false 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 - name: single_file_release_use_filename
type: checkbox type: checkbox
label: Use filename as title for single file releases label: Use filename as title for single file releases
@ -82,8 +86,8 @@ login:
search: search:
paths: paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x) # https://hdinnovations.github.io/UNIT3D/torrent_api.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476 # https://github.com/HDInnovations/UNIT3D/blob/master/app/Http/Controllers/API/TorrentController.php#L657
- path: api/torrents/filter - path: api/torrents/filter
response: response:
type: json 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 # 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}}" $raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}" name: "{{ .Keywords }}"
# seasonNumber: "{{ .Query.Season }}" # disabled due to Prowlarr/Indexers#486 # seasonNumber: "{{ .Query.Season }}" # not supported
# episodeNumber: "{{ .Query.Ep }}" # disabled due to Prowlarr/Indexers#486 # episodeNumber: "{{ .Query.Ep }}" # not supported
# imdbId: "{{ .Query.IMDBIDShort }}" # disabled due to #14776 imdbId: "{{ if .Config.tmdbidonly }}{{ else }}{{ .Query.IMDBIDShort }}{{ end }}"
tmdbId: "{{ .Query.TMDBID }}" tmdbId: "{{ .Query.TMDBID }}"
tvdbId: "{{ .Query.TVDBID }}" tvdbId: "{{ if .Config.tmdbidonly }}{{ else }}{{ .Query.TVDBID }}{{ end }}"
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}" "free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}" sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}" sortDirection: "{{ .Config.type }}"
@ -149,8 +153,13 @@ search:
args: ["(?i)(Science Fiction)", "Science_Fiction"] args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: replace - name: replace
args: [" & ", "_&_"] args: [" & ", "_&_"]
_internal:
selector: internal
case:
0: "{{ .False }}"
1: "{{ .True }}"
description: description:
text: "{{ .Result.genre }}" text: "{{ if .Result._internal }}Internal{{ else }}{{ end }}{{ if and .Result._internal .Result.genre }} | {{ else }}{{ end }}{{ .Result.genre }}"
seeders: seeders:
selector: seeders selector: seeders
leechers: leechers:

View File

@ -84,6 +84,8 @@ search:
filters: filters:
- name: split - name: split
args: [",", -1] args: [",", -1]
- name: re_replace
args: ["1\\d{5}", "2000"]
year: year:
selector: year selector: year
optional: true 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: 89, cat: TV, desc: "مسلسلات عربية كامله (Full Arabic Series)"}
- {id: 52, cat: TV, desc: "مسرحيات (Plays)"} - {id: 52, cat: TV, desc: "مسرحيات (Plays)"}
- {id: 71, cat: TV, desc: "مسلسلات مدبلجه عربي (Arabic Dubbed Series)"} - {id: 71, cat: TV, desc: "مسلسلات مدبلجه عربي (Arabic Dubbed Series)"}
- {id: 117, cat: TV, desc: "رمضان 2025 (Ramadan 2025)"}
- {id: 90, cat: TV, desc: "برامج ومسابقات (Shows)"} - {id: 90, cat: TV, desc: "برامج ومسابقات (Shows)"}
# المرئيات الاجنبية Foreign Movies # المرئيات الاجنبية Foreign Movies
- {id: 92, cat: TV/Foreign, desc: "تعليمي (Educational)"} - {id: 92, cat: TV/Foreign, desc: "تعليمي (Educational)"}
@ -116,7 +115,8 @@ search:
inputs: inputs:
page: torrents page: torrents
search: "{{ .Keywords }}" 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 # 0 all 1 activeonly 2 deadonly
active: 0 active: 0
# 0 all 1 internal 2 external # 0 all 1 internal 2 external
@ -124,9 +124,23 @@ search:
order: "{{ .Config.sort }}" order: "{{ .Config.sort }}"
by: "{{ .Config.type }}" by: "{{ .Config.type }}"
# does not support imdbid search or provide imdb link in results # 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: 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: filters:
- name: andmatch - name: andmatch
@ -139,6 +153,28 @@ search:
args: category args: category
title: title:
selector: a[href^="index.php?page=torrent-details"] 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: details:
selector: a[href^="index.php?page=torrent-details"] selector: a[href^="index.php?page=torrent-details"]
attribute: href 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: search:
paths: paths:
- path: torrents.php - path: torrents.php
allowEmptyInputs: true
inputs: inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}" $raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 incldead, 1 active, 2 dead # 0 incldead, 1 active, 2 dead
incldead: 0 incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30% # 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}" spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
inclbookmarked: 0
approval_status: ""
trackerStatus: ""
search: "{{ .Keywords }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl # 0 title, 1 descr, 3 uploader, 4 imdburl
search_area: 0 search_area: 0
# 0 AND, 1 OR, 2 exact # 0 AND, 1 OR, 2 exact
search_mode: 0 search_mode: 0
sort: "{{ .Config.sort }}" sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}" type: "{{ .Config.type }}"
notnewword: 1
rows: rows:
selector: table.torrents > tbody > tr:has(table.torrentname) selector: table.torrents > tbody > tr:has(table.torrentname)

View File

@ -10,17 +10,19 @@ links:
caps: caps:
categorymappings: categorymappings:
- {id: 100, cat: Console, desc: "Anbernic"}
- {id: 15, cat: PC/Mobile-Android, desc: "Android"} - {id: 15, cat: PC/Mobile-Android, desc: "Android"}
- {id: 35, cat: TV/Anime, desc: "Anime"} - {id: 35, cat: TV/Anime, desc: "Anime"}
- {id: 51, cat: PC/Mac, desc: "Apple"} - {id: 51, cat: PC/Mac, desc: "Apple"}
- {id: 3, cat: PC, desc: "Apps"} - {id: 3, cat: PC, desc: "Apps"}
- {id: 109, cat: PC, desc: "Attract-Mode"}
- {id: 64, cat: Audio/Audiobook, desc: "Audiobooks"} - {id: 64, cat: Audio/Audiobook, desc: "Audiobooks"}
- {id: 71, cat: Console, desc: "Batocera"} - {id: 71, cat: Console, desc: "Batocera"}
- {id: 4, cat: Movies/BluRay, desc: "Blu-Ray"} - {id: 4, cat: Movies/BluRay, desc: "Blu-Ray"}
- {id: 86, cat: Console, desc: "Chinese Systems"} - {id: 112, cat: Console, desc: "Brojack & Laws"}
- {id: 22, cat: Console, desc: "CoinOps"}
- {id: 42, cat: Console, desc: "CoinOPS Official"} - {id: 42, cat: Console, desc: "CoinOPS Official"}
- {id: 65, cat: Console, desc: "CoinOps Unofficial"} - {id: 65, cat: Console, desc: "CoinOps Unofficial"}
- {id: 22, cat: Console, desc: "CoinOps"}
- {id: 63, cat: Books/Comics, desc: "Comics"} - {id: 63, cat: Books/Comics, desc: "Comics"}
- {id: 60, cat: Console, desc: "Core"} - {id: 60, cat: Console, desc: "Core"}
- {id: 72, cat: Console, desc: "CORE Community"} - {id: 72, cat: Console, desc: "CORE Community"}
@ -28,45 +30,43 @@ caps:
- {id: 16, cat: TV/Documentary, desc: "Docu"} - {id: 16, cat: TV/Documentary, desc: "Docu"}
- {id: 41, cat: Console, desc: "Dragon"} - {id: 41, cat: Console, desc: "Dragon"}
- {id: 5, cat: Books, desc: "EBooks"} - {id: 5, cat: Books, desc: "EBooks"}
- {id: 80, cat: PC, desc: "Emulation Media"} - {id: 89, cat: PC, desc: "Ghostware"}
- {id: 61, cat: PC, desc: "emuxtras"}
- {id: 69, cat: TV, desc: "Entertainment"}
- {id: 84, cat: TV, desc: "GOG DRM FREE"} - {id: 84, cat: TV, desc: "GOG DRM FREE"}
- {id: 77, cat: PC, desc: "Hyperspin"} - {id: 77, cat: PC, desc: "Hyperspin"}
- {id: 34, cat: TV, desc: "Kids"} - {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: 85, cat: PC, desc: "MAME Rom Sets"}
- {id: 33, cat: TV/Sport, desc: "MMA/Boxing"}
- {id: 32, cat: Movies, desc: "Movie Pack"} - {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: 82, cat: PC, desc: "MS-DOS"}
- {id: 7, cat: Audio, desc: "Music"} - {id: 7, cat: Audio, desc: "Music"}
- {id: 31, cat: Console, desc: "Nintendo"} - {id: 31, cat: Console, desc: "Nintendo"}
- {id: 59, cat: Console, desc: "P-R-U"} - {id: 59, cat: Console, desc: "P-R-U"}
- {id: 8, cat: PC/Games, desc: "PC Games"} - {id: 8, cat: PC/Games, desc: "PC Games"}
- {id: 50, cat: Console, desc: "PlayBox"}
- {id: 87, cat: Console, desc: "Playnite"} - {id: 87, cat: Console, desc: "Playnite"}
- {id: 30, cat: Console, desc: "Playstation"} - {id: 30, cat: Console, desc: "Playstation"}
- {id: 62, cat: PC, desc: "RaspberryPi"}
- {id: 83, cat: PC, desc: "Retro eXo"} - {id: 83, cat: PC, desc: "Retro eXo"}
- {id: 56, cat: PC, desc: "Retro Minis"} - {id: 56, cat: PC, desc: "Retro Minis"}
- {id: 81, cat: PC, desc: "Retro Scene Releases"}
- {id: 67, cat: PC, desc: "Retrobat"} - {id: 67, cat: PC, desc: "Retrobat"}
- {id: 88, cat: PC, desc: "RetroFE"} - {id: 88, cat: PC, desc: "RetroFE"}
- {id: 79, cat: PC, desc: "RGB-Pi"}
- {id: 76, cat: Console, desc: "RGS"} - {id: 76, cat: Console, desc: "RGS"}
- {id: 27, cat: PC, desc: "Roms and Emulators"} - {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: 68, cat: PC, desc: "Schmoomer's"}
- {id: 110, cat: Console, desc: "ScummVM"}
- {id: 57, cat: Console, desc: "Sega"} - {id: 57, cat: Console, desc: "Sega"}
- {id: 74, cat: PC, desc: "Sleyk/SGC"} - {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: 29, cat: TV/Sport, desc: "Sport"}
- {id: 9, cat: TV, desc: "TV-Boxsets"} - {id: 90, cat: PC, desc: "TeknoParrot"}
- {id: 11, cat: TV, desc: "TV/x264"} - {id: 97, cat: TV/Other, desc: "Tutorials"}
- {id: 10, cat: TV, desc: "TV/Xvid"} - {id: 9, cat: TV, desc: "TV Packs"}
- {id: 75, cat: Audio, desc: "Video Game Music"} - {id: 11, cat: TV, desc: "TV Shows"}
- {id: 73, cat: Console, desc: "Wolfanoz"} - {id: 73, cat: Console, desc: "Wolfanoz"}
- {id: 14, cat: TV/Sport, desc: "WWE"}
- {id: 26, cat: Console, desc: "Xbox"} - {id: 26, cat: Console, desc: "Xbox"}
- {id: 12, cat: Console, desc: "XBOX360"} - {id: 12, cat: Console, desc: "XBOX360"}
- {id: 23, cat: XXX, desc: "xxx18+"} - {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 # sort is done via do=quick_sort, and freeleech sorting is part of that set
rows: 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: filters:
- name: andmatch - name: andmatch
args: 66 args: 66
fields: fields:
category: category:
selector: a[href*="/browse.php?category="] selector: a[href*="browse.php?category="]
attribute: href attribute: href
filters: filters:
- name: querystring - name: querystring
args: category args: category
title_default: title_default:
selector: a[href*="/details.php?id="] # is often abbreviated
selector: a[href*="details.php?id="]
title: title:
# can be abbreviated but usually longer than title_default
selector: div.tooltip-content > div selector: div.tooltip-content > div
optional: true optional: true
default: "{{ .Result.title_default }}" default: "{{ .Result.title_default }}"
details: details:
selector: a[href*="/details.php?id="] selector: a[href*="details.php?id="]
attribute: href attribute: href
download: download:
selector: a[href*="/download.php?id="] selector: a[href*="download.php?id="]
attribute: href attribute: href
magnet: magnet:
selector: a[href^="magnet:?xt="] selector: a[href^="magnet:?xt="]
@ -183,4 +185,9 @@ search:
args: " +00:00" # GMT args: " +00:00" # GMT
- name: dateparse - name: dateparse
args: "dd-MM-yyyy HH:mm zzz" 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 # 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 }}" cookie: "{{ .Config.cookie }}"
test: test:
path: index.php path: index.php
selector: i.fa-arrow-right-from-bracket[title="Kilépés"] selector: a[onclick="confirmLogout()"]
search: search:
paths: paths:

View File

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

View File

@ -48,44 +48,61 @@ caps:
music-search: [q] music-search: [q]
book-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: login:
path: takelogin.php method: cookie
method: post
inputs: inputs:
username: "{{ .Config.username }}" cookie: "{{ .Config.cookie }}"
password: "{{ .Config.password }}"
error:
- selector: td.embedded:has(h2:contains("bejelentkezés"))
test: test:
path: browse.php path: index.php
selector: a[href*="logout.php"] selector: a[href^="/logout.php?"]
search: search:
paths: paths:
- path: browse.php - path: browse.php
inputs: inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}" $raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
incldead: 1 onlytitle: "{{ if .Query.IMDBID }}{{ else }}yes{{ end }}"
sort: "{{ .Config.sort }}"
d: "{{ .Config.type }}"
rows: rows:
selector: table#torrenttable > tbody > tr:has(a[href^="details.php?id="]) selector: table#torrenttable > tbody > tr:has(a[href^="details.php?id="])
filters:
- name: andmatch
fields: fields:
# download button can be disbled in the profile, use details link instead category:
# download: selector: a[href^="?cat="]
# selector: a[href^="download.php/"]
# attribute: href
download:
selector: a[href^="details.php?id="]
attribute: href attribute: href
filters: filters:
- name: replace - name: querystring
args: ["details.php?id=", "download.php/"] args: cat
- name: append
args: "/invalid.torrent"
title_default: title_default:
selector: a[href^="details.php?id="] selector: a[href^="details.php?id="]
title: title:
@ -96,21 +113,30 @@ search:
details: details:
selector: a[href^="details.php?id="] selector: a[href^="details.php?id="]
attribute: href attribute: href
imdbid: # download button can be disabled in the profile, use details link instead
selector: a[href*="imdb.com/title/tt"] download:
selector: a[href^="details.php?id="]
attribute: href attribute: href
filters:
- name: replace
args: ["details.php?id=", "download.php/"]
- name: append
args: "/invalid.torrent"
poster: poster:
selector: a[onmouseover^="bithumen.UI.images.coverShow"] selector: a[onmouseover^="bithumen.UI.images.coverShow"]
attribute: onmouseover attribute: onmouseover
filters: filters:
- name: regexp - name: regexp
args: "\"(.*?)\"" args: "\"(.*?)\""
category: imdbid:
selector: a[href^="?cat="] selector: a[href*="imdb.com/title/tt"]
attribute: href attribute: href
filters: size:
- name: querystring selector: td:nth-child(6) > u
args: cat files:
selector: td:nth-child(3)
grabs:
selector: td:nth-child(7)
seeders: seeders:
selector: td:nth-child(8) selector: td:nth-child(8)
leechers: leechers:
@ -118,21 +144,19 @@ search:
filters: filters:
- name: regexp - name: regexp
args: /\s*([\d,]+) args: /\s*([\d,]+)
grabs: genre:
selector: td:nth-child(7) selector: span:has(a[href^="browse.php?genre="])
files:
selector: td:nth-child(3)
size:
selector: td:nth-child(6) > u
downloadvolumefactor: downloadvolumefactor:
text: 0 text: 0
uploadvolumefactor: uploadvolumefactor:
selector: td:nth-child(5) > nobr > font:contains(" × ") selector: td:nth-child(5) > nobr > font:contains(" × ")
optional: true optional: true
default: 1 default: 1
filters: minimumseedtime:
- name: replace # 1 day (as seconds = 24 x 60 x 60)
args: ["×", ""] text: 86400
description:
selector: td:nth-child(2) > div
date_year: date_year:
selector: td:nth-child(5):contains('.') selector: td:nth-child(5):contains('.')
optional: true optional: true
@ -155,6 +179,4 @@ search:
args: ["tegnap", "yesterday"] args: ["tegnap", "yesterday"]
date: date:
text: "{{ if or .Result.date_day .Result.date_year }}{{ or .Result.date_day .Result.date_year }}{{ else }}now{{ end }}" 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 # engine tbd

View File

@ -49,8 +49,8 @@ search:
t: "{{ .Query.Type }}" t: "{{ .Query.Type }}"
q: "{{ .Keywords }}" q: "{{ .Keywords }}"
cat: "{{ join .Categories \",\" }}" cat: "{{ join .Categories \",\" }}"
imdbId: "{{ .Query.IMDBIDShort }}" imdbid: "{{ .Query.IMDBIDShort }}"
tmdbId: "{{ .Query.TMDBID }}" tmdbid: "{{ .Query.TMDBID }}"
season: "{{ .Query.Season }}" season: "{{ .Query.Season }}"
ep: "{{ .Query.Ep }}" ep: "{{ .Query.Ep }}"
limit: 100 limit: 100

View File

@ -6,6 +6,7 @@ language: hu-HU
type: private type: private
encoding: UTF-8 encoding: UTF-8
links: links:
- https://bitpalace.hu/
- https://bitpalace.cc/ - https://bitpalace.cc/
caps: caps:
@ -35,10 +36,10 @@ caps:
- {id: 3, cat: Movies/SD, desc: "XVID HUN"} - {id: 3, cat: Movies/SD, desc: "XVID HUN"}
- {id: 12, cat: XXX/DVD, desc: "XXX DVD-R"} - {id: 12, cat: XXX/DVD, desc: "XXX DVD-R"}
- {id: 6, cat: XXX/x264, desc: "XXX HD"} - {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: 11, cat: XXX/XviD, desc: "XXX XVID"}
- {id: 19, cat: Audio/Video, desc: "ZENE Klipp"} - {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: modes:
search: [q] search: [q]

View File

@ -1,6 +1,6 @@
--- ---
id: bitporn id: bitporn
name: BitPorn name: BitPorn (API)
description: "BitPorn (Malacka) is a HUNGARIAN Private Torrent Tracker for 3X" description: "BitPorn (Malacka) is a HUNGARIAN Private Torrent Tracker for 3X"
language: hu-HU language: hu-HU
type: private type: private
@ -10,67 +10,69 @@ links:
caps: caps:
categorymappings: categorymappings:
- {id: 418, cat: XXX, desc: "Amateur"} - {id: 54, cat: XXX, desc: Ai Generated"}
- {id: 410, cat: XXX, desc: "Anal"} - {id: 4, cat: XXX, desc: Amateur"}
- {id: 414, cat: XXX, desc: "Animal"} - {id: 5, cat: XXX, desc: Anal"}
- {id: 415, cat: XXX, desc: "Asian"} - {id: 6, cat: XXX, desc: Asian"}
- {id: 416, cat: XXX, desc: "BBW"} - {id: 7, cat: XXX, desc: BBW"}
- {id: 417, cat: XXX, desc: "BDSM"} - {id: 8, cat: XXX, desc: BDSM"}
- {id: 419, cat: XXX, desc: "Big Ass"} - {id: 9, cat: XXX, desc: Big Ass"}
- {id: 420, cat: XXX, desc: "Big Tits"} - {id: 10, cat: XXX, desc: Big Tits"}
- {id: 421, cat: XXX, desc: "Black"} - {id: 11, cat: XXX, desc: Black"}
- {id: 447, cat: XXX, desc: "Cartoon"} - {id: 12, cat: XXX, desc: Cartoon"}
- {id: 448, cat: XXX, desc: "Casting"} - {id: 13, cat: XXX, desc: Casting"}
- {id: 422, cat: XXX, desc: "Classic"} - {id: 14, cat: XXX, desc: Classic"}
- {id: 434, cat: XXX, desc: "Collection"} - {id: 15, cat: XXX, desc: Collection"}
- {id: 423, cat: XXX, desc: "Creampie"} - {id: 16, cat: XXX, desc: Creampie"}
- {id: 424, cat: XXX, desc: "Cumshot"} - {id: 17, cat: XXX, desc: Cumshot"}
- {id: 451, cat: XXX, desc: "Deepthroat"} - {id: 18, cat: XXX, desc: Deepthroat"}
- {id: 455, cat: XXX, desc: "Extreme"} - {id: 19, cat: XXX, desc: Extreme"}
- {id: 460, cat: XXX, desc: "Fansite"} - {id: 20, cat: XXX, desc: Fansite"}
- {id: 454, cat: XXX, desc: "Family"} - {id: 21, cat: XXX, desc: Family"}
- {id: 425, cat: XXX, desc: "Feature"} - {id: 22, cat: XXX, desc: Feature"}
- {id: 426, cat: XXX, desc: "Fetish"} - {id: 23, cat: XXX, desc: Fetish"}
- {id: 457, cat: XXX, desc: "Fisting"} - {id: 24, cat: XXX, desc: Fisting"}
- {id: 453, cat: XXX, desc: "Gangbang"} - {id: 25, cat: XXX, desc: Gangbang"}
- {id: 459, cat: XXX, desc: "Game"} - {id: 26, cat: XXX, desc: Game"}
- {id: 427, cat: XXX, desc: "Gay / Bi"} - {id: 27, cat: XXX, desc: Gay / Bi"}
- {id: 412, cat: XXX, desc: "Hair"} - {id: 28, cat: XXX, desc: Hair"}
- {id: 411, cat: XXX, desc: "Hardcore"} - {id: 29, cat: XXX, desc: Hardcore"}
- {id: 456, cat: XXX, desc: "HiddenCam"} - {id: 30, cat: XXX, desc: HiddenCam"}
- {id: 428, cat: XXX, desc: "Homemade"} - {id: 31, cat: XXX, desc: Homemade"}
- {id: 429, cat: XXX, desc: "Interracial"} - {id: 32, cat: XXX, desc: Interracial"}
- {id: 430, cat: XXX, desc: "Lesbian"} - {id: 33, cat: XXX, desc: Lesbian"}
- {id: 431, cat: XXX, desc: "Magyar"} - {id: 34, cat: XXX, desc: Magyar"}
- {id: 432, cat: XXX, desc: "Masturbation"} - {id: 35, cat: XXX, desc: Masturbation"}
- {id: 433, cat: XXX, desc: "Mature"} - {id: 36, cat: XXX, desc: Mature"}
- {id: 435, cat: XXX, desc: "Milf"} - {id: 37, cat: XXX, desc: Milf"}
- {id: 436, cat: XXX, desc: "Old and Young"} - {id: 53, cat: XXX, desc: Movie"}
- {id: 437, cat: XXX, desc: "Parody"} - {id: 38, cat: XXX, desc: Old and Young"}
- {id: 449, cat: XXX, desc: "Pictures"} - {id: 39, cat: XXX, desc: Parody"}
- {id: 438, cat: XXX, desc: "Pissing"} - {id: 40, cat: XXX, desc: Pictures"}
- {id: 439, cat: XXX, desc: "POV"} - {id: 41, cat: XXX, desc: Pissing"}
- {id: 440, cat: XXX, desc: "Pregnant"} - {id: 42, cat: XXX, desc: POV"}
- {id: 452, cat: XXX, desc: "Public"} - {id: 43, cat: XXX, desc: Pregnant"}
- {id: 441, cat: XXX, desc: "Shemale"} - {id: 44, cat: XXX, desc: Public"}
- {id: 442, cat: XXX, desc: "Softcore"} - {id: 45, cat: XXX, desc: Shemale"}
- {id: 443, cat: XXX, desc: "Squirt"} - {id: 46, cat: XXX, desc: Softcore"}
- {id: 444, cat: XXX, desc: "Straight"} - {id: 47, cat: XXX, desc: Squirt"}
- {id: 445, cat: XXX, desc: "Teen"} - {id: 48, cat: XXX, desc: Straight"}
- {id: 450, cat: XXX, desc: "Threesome"} - {id: 49, cat: XXX, desc: Teen"}
- {id: 446, cat: XXX, desc: "VR"} - {id: 50, cat: XXX, desc: Threesome"}
- {id: 458, cat: XXX, desc: "Uncategorized"} - {id: 51, cat: XXX, desc: VR"}
- {id: 52, cat: XXX, desc: Uncategorized"}
modes: modes:
search: [q] search: [q]
settings: settings:
- name: username - name: apikey
type: text type: text
label: Username label: APIKey
- name: password - name: info_key
type: password type: info
label: Password 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 - name: freeleech
type: checkbox type: checkbox
label: Search freeleech only label: Search freeleech only
@ -78,12 +80,12 @@ settings:
- name: sort - name: sort
type: select type: select
label: Sort requested from site label: Sort requested from site
default: 4 default: created_at
options: options:
4: created created_at: created
7: seeders seeders: seeders
5: size size: size
1: title name: title
- name: type - name: type
type: select type: select
label: Order requested from site label: Order requested from site
@ -91,121 +93,103 @@ settings:
options: options:
desc: desc desc: desc
asc: asc 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 - name: info_activity
type: info type: info
label: Account Inactivity label: Account Inactivity
default: "You must log in to the site at least once a month; otherwise, your account will be suspended." default: "You must log in to the site at least once a month; otherwise, your account will be suspended."
login: login:
path: takelogin.php path: /api/torrents
method: post method: get
inputs:
secret: ""
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error: error:
- selector: td.embedded:has(h2:contains("Bejelentkezés sikertelen!")) - selector: a[href*="/login"]
test: message:
path: index.php text: "The API key was not accepted by {{ .Config.sitelink }}."
selector: a[href="logout.php"] - selector: :root:contains("Account is Banned")
search: search:
paths: 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: inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}" # 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
search: "{{ .Keywords }}" $raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
# 0 incldead, 1 active, 2 dead name: "{{ .Keywords }}"
incldead: 0 "free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30% sortField: "{{ .Config.sort }}"
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}" sortDirection: "{{ .Config.type }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl perPage: 100
search_area: 0
# 0 AND, 2 exact keywordsfilters:
search_mode: 0 - name: re_replace
sort: "{{ .Config.sort }}" args: ["\\.", " "]
type: "{{ .Config.type }}"
notnewword: 1
rows: rows:
selector: table.contenttable > tbody > tr:has(a[href^="details.php?id="]) selector: data
attribute: attributes
fields: fields:
category: category:
selector: a[href^="?cat="] selector: category_id
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title: title:
selector: a[title][href^="details.php?id="] selector: name
attribute: title
optional: true
default: "{{ .Result.title_default }}"
details: details:
selector: a[href^="details.php?id="] selector: details_link
attribute: href
download: download:
selector: a[href^="download.php?id="] selector: download_link
attribute: href files:
poster: selector: num_file
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)
seeders: seeders:
selector: td.rowfollow:nth-child(6) selector: seeders
leechers: leechers:
selector: td.rowfollow:nth-child(7) selector: leechers
grabs: 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: downloadvolumefactor:
text: "{{ if .Result._featured }}0{{ else }}{{ .Result.downloadvolumefactor_freeleech }}{{ end }}"
uploadvolumefactor_double_upload:
# api returns False, True
selector: double_upload
case: case:
img.pro_free: 0 False: 1 # normal
img.pro_free2up: 0 True: 2 # double
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor: uploadvolumefactor:
case: text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio: minimumratio:
text: 1.0 text: 1.0
minimumseedtime: minimumseedtime:
# 48 hours (as seconds = 2 x 24 x 60 x 60) # 48 hours (as seconds = 2 x 24 x 60 x 60)
text: 172800 text: 172800
description: # json UNIT3D 9.2.0 (custom)
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v2.4 (custom)

View File

@ -1,47 +1,68 @@
--- ---
id: bitsearch id: bitsearch
replaces:
- solidtorrents
name: BitSearch 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 language: en-US
type: public type: public
encoding: UTF-8 encoding: UTF-8
requestDelay: 2
links: links:
- https://bitsearch.to/ - https://bitsearch.to/
- https://solidtorrents.eu/
legacylinks: legacylinks:
- https://bitsearch.nocensor.cloud/ - https://bitsearch.nocensor.cloud/
- https://bitsearch.mrunblock.bond/ - https://bitsearch.mrunblock.bond/
- https://solidtorrents.net/
- https://solidtorrents.nocensor.cloud/
- https://solidtorrents.to/
caps: caps:
categories: categories:
Anime: TV/Anime
Anime/Dub/Dual Audio: TV/Anime
Anime/Raw: TV/Anime
Anime/Subbed: TV/Anime
AudioBook: Audio/Audiobook AudioBook: Audio/Audiobook
eBook: Books/EBook Books: Books
"Ebook/Course": Books/EBook Books/Academic: Books/EBook
Games: PC/Games Books/Comics: Books/Comics
"Games/PC": PC/Games 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: Movies
Movies/Dub/Dual Audio: Movies
Music: Audio Music: Audio
"Music/Album": Audio Music/Album: Audio
"Music/mp3": Audio/MP3 Music/Discography: Audio
"Music/Lossless": Audio/Lossless Music/FLAC: Audio/Lossless
"Music/Video": Audio/Video Music/Lossless: Audio/Lossless
Music/MP3: Audio/MP3
Music/Single: Audio
Other: Other Other: Other
"Other/Android": PC/Mobile-Android Other/Android: PC/Mobile-Android
"Other/Archive": Other Other/Archive: Other
"Other/Audio": Audio Other/Audio: Audio
"Other/Database": PC Other/Database: PC
"Other/DiskImage": PC/ISO Other/DiskImage: PC/ISO
"Other/Document": Books/Comics Other/Document: Books/Comics
"Other/Image": Other/Misc Other/Image: Other/Misc
"Other/Program": PC/0day Other/Program: PC
"Other/Sourcecode": PC Other/Source Code: PC
"Other/Source Code": PC Other/Video: TV
"Other/Video": Other
Softwares: PC/0day 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 TV: TV
Unknown: Other
XXX: XXX
modes: modes:
search: [q] search: [q]
@ -51,139 +72,73 @@ caps:
book-search: [q] book-search: [q]
settings: settings:
- name: prefer_magnet_links
type: checkbox
label: Prefer Magnet Links
default: false
- name: sort - name: sort
type: select type: select
label: Sort requested from site label: Sort requested from site.
default: date default: created
options: options:
date: created created: created
seeders: seeders seeders: seeders
size: size size: size
- name: type - name: type
type: select type: select
label: Order requested from site label: Order requested from site.
default: desc default: desc
options: options:
desc: desc desc: desc
asc: asc asc: asc
- name: info_category_8000
type: info download:
label: About BitSearch Categories selectors:
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. - selector: a[href^="magnet:?xt"]
attribute: href
search: search:
paths: paths:
# https://bitsearch.to/search?q=&sort=date&order=desc # https://bitsearch.to/search?q=spongebob&sortBy=created&order=desc&page=1
- path: search - path: "{{ if .Keywords }}search?q={{ .Keywords }}&sortBy={{ .Config.sort }}&order={{ .Config.type }}&page=1{{ else }}latest{{ end }}"
inputs:
q: "{{ .Keywords }}"
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
limit: 100
page: 1
keywordsfilters: keywordsfilters:
- name: re_replace - name: re_replace
args: ["\\.", " "] args: ["\\.", " "]
rows: 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: fields:
category: category:
selector: a.category # latest, search
selector: div.space-y-2 > span:nth-child(1), span.space-x-1:nth-child(1)
title: title:
selector: h5 a selector: h3 > a
details: details:
selector: h5 a selector: h3 > a
attribute: href attribute: href
download_optional:
selector: a.dl-torrent
attribute: href
optional: true
download: download:
text: "{{ if .Config.prefer_magnet_links }}{{ else }}{{ .Result.download_optional }}{{ end }}" selector: h3 > a
optional: true
magnet:
selector: a[href^="magnet:?xt"]
attribute: href 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: size:
selector: div.stats div:has(img[alt="Size"]) selector: div.space-y-2 > span:nth-child(2), span.space-x-1:nth-child(2)
seeders_dot: date_year:
selector: div.stats div:has(img[alt="Seeder"]):contains(".") selector: div.space-y-2 > span:nth-child(3):contains("/"), span.space-x-1:nth-child(3):contains("/")
optional: true 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: filters:
- name: dateparse - 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: downloadvolumefactor:
text: 0 text: 0
uploadvolumefactor: 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: caps:
categorymappings: 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: 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: 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: 40, cat: Movies, desc: "Türkçe Film"}
- {id: 42, cat: Movies/SD, desc: "XviD"} - {id: 113, cat: Movies, desc: "Yabancı Dil"}
- {id: 43, cat: Movies/SD, desc: "XviD BoX"} - {id: 77, cat: Movies/UHD, desc: "4K UHD / 3D"}
- {id: 55, cat: Movies/WEB-DL, desc: "WEB-DL"} - {id: 16, cat: Movies, desc: "Animasyon"}
- {id: 7, cat: Audio, desc: "Müzik"} - {id: 31, cat: Movies, desc: "Belgesel"}
- {id: 20, cat: Audio, desc: "Türkçe MüziK"} - {id: 112, cat: XXX, desc: "XxX"}
- {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: 48, cat: TV, desc: "Televizyon"} - {id: 48, cat: TV, desc: "Televizyon"}
- {id: 49, cat: TV/HD, desc: "Tv HD"} - {id: 49, cat: TV/HD, desc: "Tv HD"}
- {id: 50, cat: TV, desc: "Yab@ncı Dizi"} - {id: 50, cat: TV, desc: "Yab@ncı Dizi"}
- {id: 51, cat: TV, desc: "Yerli Dizi"} - {id: 51, cat: TV, desc: "Yerli Dizi"}
- {id: 105, cat: TV, desc: "Yerli Dizi"} - {id: 7, cat: Audio, desc: "Müzik"}
- {id: 44, cat: Books, desc: "E-BooK"} - {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: modes:
search: [q] search: [q]
@ -152,7 +108,6 @@ search:
keywords: "{{ .Keywords }}" keywords: "{{ .Keywords }}"
# name, description, both, uploader # name, description, both, uploader
search_type: name search_type: name
searchin: title
"sortOptions[sortBy]": "{{ .Config.sort }}" "sortOptions[sortBy]": "{{ .Config.sort }}"
"sortOptions[sortOrder]": "{{ .Config.type }}" "sortOptions[sortOrder]": "{{ .Config.type }}"
# Drop error trap to stop Sonarr disabling indexer, see https://github.com/Jackett/Jackett/issues/1415 # Drop error trap to stop Sonarr disabling indexer, see https://github.com/Jackett/Jackett/issues/1415

View File

@ -10,23 +10,26 @@ links:
caps: caps:
categorymappings: categorymappings:
- {id: "/3ds", cat: Console/3DS, desc: "3DS"}
- {id: "/arcade", cat: Console/Other, desc: "Arcade"} - {id: "/arcade", cat: Console/Other, desc: "Arcade"}
- {id: "/dreamcast", cat: Console/Other, desc: "Dreamcast"} - {id: "/dreamcast", cat: Console/Other, desc: "Dreamcast"}
- {id: "/nds", cat: Console/Other, desc: "DS"}
- {id: "/gba", cat: Console/Other, desc: "Game Boy Advance"} - {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: "/genesis", cat: Console/Other, desc: "Mega Drive - Genesis"}
- {id: "/neogeo", cat: Console/Other, desc: "Neo Geo"} - {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: "/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: "/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: "/ps1", cat: Console/PS3, desc: "PlayStation"}
- {id: "/ps2", cat: Console/PS3, desc: "PlayStation 2"} - {id: "/ps2", cat: Console/PS3, desc: "PlayStation 2"}
- {id: "/ps3", cat: Console/PS3, desc: "PlayStation 3"} - {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: "/saturn", cat: Console/Other, desc: "Saturn"}
- {id: "/snes", cat: Console/NDS, desc: "Super Nintendo"} - {id: "/snes", cat: Console/NDS, desc: "Super Nintendo"}
- {id: "/wii", cat: Console/Wii, desc: "Wii"}
- {id: "/xbox", cat: Console/XBox, desc: "Xbox"} - {id: "/xbox", cat: Console/XBox, desc: "Xbox"}
modes: modes:
@ -76,31 +79,30 @@ search:
category: category:
selector: p.card-text a selector: p.card-text a
attribute: href attribute: href
_platform: title_platform:
selector: p.card-text a selector: p.card-text a
title: title:
selector: h4.card-title a selector: h4.card-title a
filters: filters:
- name: append - name: append
args: " - {{ .Result._platform }}" args: " - {{ .Result.title_platform }}"
details: details:
selector: h4.card-title a selector: h4.card-title a
attribute: href attribute: href
download: download:
selector: div.card-footer a selector: div.card-footer a
attribute: href attribute: href
poster:
selector: img
attribute: src
size: size:
selector: p.card-text selector: p.card-text
filters: filters:
- name: regexp - name: regexp
args: (\d+\.?\d+[T|G|K]iB) args: ([\d\.]+[T|G|M|K]iB)
date: date:
selector: p.card-text # release date is for game, not torrent
filters: text: now
- name: regexp
args: (\d{4}-\d{2}-\d{2})
- name: dateparse
args: "yyyy-MM-dd"
seeders: seeders:
text: 1 text: 1
leechers: leechers:
@ -109,4 +111,9 @@ search:
text: 0 text: 0
uploadvolumefactor: uploadvolumefactor:
text: 1 text: 1
description:
selector: p.card-text
filters:
- name: regexp
args: "(Score: .+)"
# engine n/a # engine n/a

View File

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

View File

@ -7,13 +7,17 @@ type: public
encoding: UTF-8 encoding: UTF-8
# current domain at https://cursor.vip/btmulu then follow links to the final search-movie link # current domain at https://cursor.vip/btmulu then follow links to the final search-movie link
links: links:
- https://btmulu.work/ - https://btmulu.live/
- https://www.btmulu.cyou/ - https://www.btmulu.cyou/
- https://www.btmulu.quest/
- https://www.btmulu.cfd/
- https://www.btmulu.help/
legacylinks: legacylinks:
- https://www.btmulu.asia/ - https://www.btmulu.asia/
- https://www.btmulu.digital/ - https://www.btmulu.digital/
- https://www.btmulu.pw/ - https://www.btmulu.pw/
- https://www.btmulu.one/ - https://www.btmulu.one/
- https://btmulu.work/
caps: caps:
categorymappings: categorymappings:
@ -39,7 +43,7 @@ search:
name: "{{ re_replace .Keywords \"[\\s]+\" \"+\" }}" name: "{{ re_replace .Keywords \"[\\s]+\" \"+\" }}"
rows: rows:
selector: article.item selector: article.item:has(a[href^="/hash/"])
filters: filters:
- name: andmatch - 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 encoding: UTF-8
# use https://tellme.pw/btsow to find the new domain # use https://tellme.pw/btsow to find the new domain
links: links:
- https://btsow.pics/ - https://btsow.lol/
legacylinks: legacylinks:
- https://btsow.click/
- https://btsow.cfd/ - https://btsow.cfd/
- https://btsow.sbs/ - https://btsow.sbs/
- https://btsow.quest/ - https://btsow.quest/
@ -24,6 +23,7 @@ legacylinks:
- https://btsow.homes/ - https://btsow.homes/
- https://btsow.yachts/ - https://btsow.yachts/
- https://btsow.motorcycles/ - https://btsow.motorcycles/
- https://btsow.pics/
caps: caps:
categories: 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 encoding: UTF-8
links: links:
- https://bwtorrents.tv/ - https://bwtorrents.tv/
- https://www.bwtorrents.life/
- https://www.bwtorrents.pro/ - https://www.bwtorrents.pro/
- https://bwtorrents.cc/ - https://bwtorrents.cc/
- https://bwtorrents.live/
legacylinks: legacylinks:
- https://bwtorrents.fun/ - https://bwtorrents.fun/
- https://bwtorrents.xyz/ - https://bwtorrents.xyz/
- https://bwtorrents.us/ - https://bwtorrents.us/
- https://bwtorrents.live/
- https://bwtorrents.co/ - https://bwtorrents.co/
- https://www.bwtorrents.life/
caps: caps:
categorymappings: 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