Reorganize repo: one folder per application under apps/.

Move docker/ and configs/ into apps/<name>/ with config/ subfolders.
Proxmox split into hosts/pve and hosts/dell-proxmox. Nginx under
infrastructure/. Update sync script, RESTORE.md, and per-app READMEs.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
mo
2026-05-17 13:23:38 +02:00
parent 290da02936
commit 04162745e9
684 changed files with 605 additions and 169 deletions
+55
View File
@@ -0,0 +1,55 @@
# Apps — overzicht
Elke map = **één applicatie**. Bevat `docker-compose.yml`, `.env`, en/of `config/` waar van toepassing.
**NAS-repo:** `/volume1/docker/homelab-configs`
**Starten:** `cd apps/<naam> && docker compose up -d`
## Docker op Synology (192.168.1.211)
| App | Map | Poort | Container | Data op NAS |
|-----|-----|-------|-----------|-------------|
| PostgreSQL | [postgres](postgres/) | 5433 | postgres-homelab | `/volume1/docker/postgres/data` |
| pgAdmin | [pgadmin](pgadmin/) | 5434 | pgadmin | volume |
| Gitea | [gitea](gitea/) | 3000 | gitea | docker volumes |
| AdGuard Home | [adguard](adguard/) | 53, 3001 | Adguard | config in repo → `/volume1/docker/Configs/adguard` |
| DuckDNS | [duckdns](duckdns/) | — | duckdns | — |
| Neo4j | [neo4j](neo4j/) | 4915349155 | neo4j | `/volume1/docker/neo4j` |
| Homarr | [homarr](homarr/) | 4755 | homarr | `/volume1/docker/homarr` |
| Portainer | [portainer](portainer/) | 9000 | portainer | `/volume1/docker/portainer` |
| Remotely | [remotely](remotely/) | 8080 | remotely | `/volume1/docker/remotely` |
| Excalidraw | [excalidraw](excalidraw/) | 3765 | Excalidraw | — |
| Guacamole | [guacamole](guacamole/) | 8348 | Guacamole | `/volume1/docker/guacamole` |
| Wazuh | [wazuh](wazuh/) | — | — | `/volume1/docker/wazuh` |
| HA Voice MCP | [ha-voice-control](ha-voice-control/) | 8765 | ha-voice-control | build |
| Monitoring | [monitoring](monitoring/) | 9090, 3002, 9187 | prometheus, grafana, exporter | volumes |
| Homelab Command | [homelab-command](homelab-command/) | 8765 | homelab-command | aparte repo |
## Media / automation (configs, draaien op Proxmox LXC)
| App | Map | Config-bron op NAS |
|-----|-----|-------------------|
| Sonarr | [sonarr](sonarr/) | `/volume1/docker/Configs/Sonarr` |
| Radarr | [radarr](radarr/) | `/volume1/docker/Configs/Radarr` |
| Prowlarr | [prowlarr](prowlarr/) | `/volume1/docker/Configs/Prowlarr` |
| qBittorrent | [qbittorrent](qbittorrent/) | `/volume1/docker/Configs/QBitTorrent` |
| SABnzbd | [sabnzbd](sabnzbd/) | `/volume1/docker/Configs/Sabnzb` |
| Home Assistant | [home-assistant](home-assistant/) | `/volume1/docker/Configs/HA/config` |
## Proxmox hosts
| Host | Map | IP |
|------|-----|-----|
| pve (RTX 3090, PVE 9) | [proxmox/hosts/pve](proxmox/hosts/pve/) | 192.168.1.216 |
| dell-proxmox (Dell, PVE 8) | [proxmox/hosts/dell-proxmox](proxmox/hosts/dell-proxmox/) | 192.168.1.56 |
Zie [proxmox/README.md](proxmox/README.md).
## Reverse proxy
Nginx-configs: [../infrastructure/nginx/](../infrastructure/nginx/)
## Aparte Gitea-repos
- **homelab-command** — dashboard, Grafana-build, NATS mesh
- **ha-voice-control-mcp** — MCP server
+8
View File
@@ -0,0 +1,8 @@
# adguard
| | |
|---|---|
| **Poort** | zie compose |
| **Start** | `docker compose up -d` |
Zie [apps/README.md](../README.md) en [RESTORE.md](../../RESTORE.md).
+344
View File
@@ -0,0 +1,344 @@
http:
pprof:
port: 6060
enabled: false
address: 192.168.1.211:3001
session_ttl: 720h
users:
- name: mo
password: $2a$10$hTko3Z04gyjeG1PwE1AIDObRmamgNOGzH9b66G/FRK75HIhVjhILO
auth_attempts: 5
block_auth_min: 15
http_proxy: ""
language: ""
theme: auto
dns:
bind_hosts:
- 0.0.0.0
port: 53
anonymize_client_ip: false
ratelimit: 20
ratelimit_subnet_len_ipv4: 24
ratelimit_subnet_len_ipv6: 56
ratelimit_whitelist: []
refuse_any: true
upstream_dns:
- https://dns10.quad9.net/dns-query
upstream_dns_file: ""
bootstrap_dns:
- 9.9.9.10
- 149.112.112.10
- 2620:fe::10
- 2620:fe::fe:10
fallback_dns: []
upstream_mode: load_balance
fastest_timeout: 1s
allowed_clients: []
disallowed_clients: []
blocked_hosts:
- version.bind
- id.server
- hostname.bind
trusted_proxies:
- 127.0.0.0/8
- ::1/128
cache_enabled: true
cache_size: 4194304
cache_ttl_min: 0
cache_ttl_max: 0
cache_optimistic: false
cache_optimistic_answer_ttl: 30s
cache_optimistic_max_age: 12h
bogus_nxdomain: []
aaaa_disabled: false
enable_dnssec: false
edns_client_subnet:
custom_ip: ""
enabled: false
use_custom: false
max_goroutines: 300
handle_ddr: true
ipset: []
ipset_file: ""
bootstrap_prefer_ipv6: false
upstream_timeout: 10s
private_networks: []
use_private_ptr_resolvers: true
local_ptr_upstreams: []
use_dns64: false
dns64_prefixes: []
serve_http3: false
use_http3_upstreams: false
serve_plain_dns: true
hostsfile_enabled: true
pending_requests:
enabled: true
tls:
enabled: false
server_name: ""
force_https: false
port_https: 443
port_dns_over_tls: 853
port_dns_over_quic: 853
port_dnscrypt: 0
dnscrypt_config_file: ""
allow_unencrypted_doh: false
certificate_chain: ""
private_key: ""
certificate_path: ""
private_key_path: ""
strict_sni_check: false
querylog:
dir_path: ""
ignored: []
interval: 2160h
size_memory: 1000
enabled: true
ignored_enabled: false
file_enabled: true
statistics:
dir_path: ""
ignored: []
interval: 24h
enabled: true
ignored_enabled: false
filters:
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt
name: AdGuard DNS filter
id: 1
- enabled: false
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_2.txt
name: AdAway Default Blocklist
id: 2
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_34.txt
name: HaGeZi's Normal Blocklist
id: 1771582373
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_48.txt
name: HaGeZi's Pro Blocklist
id: 1771582374
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_51.txt
name: HaGeZi's Pro++ Blocklist
id: 1771582375
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_29.txt
name: 'CHN: AdRules DNS List'
id: 1771582376
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_21.txt
name: 'CHN: anti-AD'
id: 1771582377
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_35.txt
name: 'HUN: Hufilter'
id: 1771582378
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_22.txt
name: 'IDN: ABPindo'
id: 1771582379
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_19.txt
name: 'IRN: PersianBlocker list'
id: 1771582380
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_43.txt
name: 'ISR: EasyList Hebrew'
id: 1771582381
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_25.txt
name: 'KOR: List-KR DNS'
id: 1771582382
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_15.txt
name: 'KOR: YousList'
id: 1771582383
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_36.txt
name: 'LIT: EasyList Lithuania'
id: 1771582384
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_20.txt
name: 'MKD: Macedonian Pi-hole Blocklist'
id: 1771582385
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_13.txt
name: 'NOR: Dandelion Sprouts nordiske filtre'
id: 1771582386
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_41.txt
name: 'POL: CERT Polska List of malicious domains'
id: 1771582387
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_14.txt
name: 'POL: Polish filters for Pi-hole'
id: 1771582388
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_17.txt
name: 'SWE: Frellwit''s Swedish Hosts File'
id: 1771582389
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_26.txt
name: 'TUR: turk-adlist'
id: 1771582390
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_40.txt
name: 'TUR: Turkish Ad Hosts'
id: 1771582391
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_16.txt
name: 'VNM: ABPVN List'
id: 1771582392
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_30.txt
name: Phishing URL Blocklist (PhishTank and OpenPhish)
id: 1771582393
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_18.txt
name: Phishing Army
id: 1771582394
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_9.txt
name: The Big List of Hacked Malware Web Sites
id: 1771582395
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_50.txt
name: uBlock₀ filters Badware risks
id: 1771582396
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_11.txt
name: Malicious URL Blocklist (URLHaus)
id: 1771582397
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_47.txt
name: HaGeZi's Gambling Blocklist
id: 1771582398
whitelist_filters: []
user_rules:
- '@@||g.live.com^$important'
- '@@||ashemaletube.com^$client=''192.168.1.235'''
- '@@||o540343.ingest.sentry.io^$important'
- '@@||console.bce.baidu.com^$important'
- ""
dhcp:
enabled: false
interface_name: ""
local_domain_name: lan
dhcpv4:
gateway_ip: ""
subnet_mask: ""
range_start: ""
range_end: ""
lease_duration: 86400
icmp_timeout_msec: 1000
options: []
dhcpv6:
range_start: ""
lease_duration: 86400
ra_slaac_only: false
ra_allow_slaac: false
filtering:
blocking_ipv4: ""
blocking_ipv6: ""
blocked_services:
schedule:
time_zone: UTC
ids:
- 4chan
- 500px
- 9gag
- activision_blizzard
- amino
- battle_net
- betano
- betfair
- betway
- blaze
- blizzard_entertainment
- bluesky
- douban
- electronic_arts
- epic_games
- facebook
- gog
- instagram
- io_interactive
- kook
- leagueoflegends
- line
- mail_ru
- minecraft
- nintendo
- odysee
- ok
- onlyfans
- origin
- playstation
- plenty_of_fish
- qq
- riot_games
- rockstar_games
- snapchat
- steam
- tiktok
- tinder
- tumblr
- ubisoft
- valorant
- vk
- wargaming
- warnerbrosgames
- wizz
- xboxlive
- zhihu
protection_disabled_until: null
safe_search:
enabled: true
bing: true
duckduckgo: true
ecosia: true
google: true
pixabay: true
yandex: true
youtube: true
blocking_mode: default
parental_block_host: family-block.dns.adguard.com
safebrowsing_block_host: standard-block.dns.adguard.com
rewrites: []
safe_fs_patterns:
- /opt/adguardhome/work/userfilters/*
safebrowsing_cache_size: 1048576
safesearch_cache_size: 1048576
parental_cache_size: 1048576
cache_time: 30
filters_update_interval: 24
blocked_response_ttl: 10
filtering_enabled: true
rewrites_enabled: true
parental_enabled: false
safebrowsing_enabled: true
protection_enabled: true
clients:
runtime_sources:
whois: true
arp: true
rdns: true
dhcp: true
hosts: true
persistent: []
log:
enabled: true
file: ""
max_backups: 0
max_size: 100
max_age: 3
compress: false
local_time: false
verbose: false
os:
group: ""
user: ""
rlimit_nofile: 0
schema_version: 33
+21
View File
@@ -0,0 +1,21 @@
# AdGuard Home — DNS + filtering (host network, poort 53 + web UI).
# Config: apps/adguard/config/AdGuardHome.yaml → /volume1/docker/Configs/adguard/
services:
adguard:
image: adguard/adguardhome:latest
container_name: Adguard
restart: always
network_mode: host
volumes:
- ${ADGUARD_CONFIG_DIR:-/volume1/docker/Configs/adguard}:/opt/adguardhome/conf
- adguard-work:/opt/adguardhome/work
command:
- --no-check-update
- -c
- /opt/adguardhome/conf/AdGuardHome.yaml
- -w
- /opt/adguardhome/work
volumes:
adguard-work:
+7
View File
@@ -0,0 +1,7 @@
PUID=1026
PGID=100
TZ=Europe/Brussels
DUCKDNS_SUBDOMAINS=mohome020
DUCKDNS_TOKEN=8787f708-da03-41ed-97de-306436021d91
DUCKDNS_UPDATE_IP=true
DUCKDNS_INTERVAL=300
+7
View File
@@ -0,0 +1,7 @@
PUID=1026
PGID=100
TZ=Europe/Brussels
DUCKDNS_SUBDOMAINS=mohome020
DUCKDNS_TOKEN=8787f708-da03-41ed-97de-306436021d91
DUCKDNS_UPDATE_IP=true
DUCKDNS_INTERVAL=300
+8
View File
@@ -0,0 +1,8 @@
# duckdns
| | |
|---|---|
| **Poort** | zie compose |
| **Start** | `docker compose up -d` |
Zie [apps/README.md](../README.md) en [RESTORE.md](../../RESTORE.md).
+16
View File
@@ -0,0 +1,16 @@
# DuckDNS — dynamisch DNS voor mohome020.duckdns.org
# Start: cp .env.example .env && docker compose up -d
services:
duckdns:
image: linuxserver/duckdns:latest
container_name: duckdns
restart: unless-stopped
environment:
PUID: ${PUID:-1026}
PGID: ${PGID:-100}
TZ: ${TZ:-Europe/Brussels}
SUBDOMAINS: ${DUCKDNS_SUBDOMAINS:-mohome020}
TOKEN: ${DUCKDNS_TOKEN:-8787f708-da03-41ed-97de-306436021d91}
UPDATE_IP: ${DUCKDNS_UPDATE_IP:-true}
INTERVAL: ${DUCKDNS_INTERVAL:-300}
+8
View File
@@ -0,0 +1,8 @@
# excalidraw
| | |
|---|---|
| **Poort** | 3765 |
| **Start** | `docker compose up -d` |
Zie [apps/README.md](../README.md) en [RESTORE.md](../../RESTORE.md).
+13
View File
@@ -0,0 +1,13 @@
version: "3.9"
services:
excalidraw:
container_name: Excalidraw
healthcheck:
test: curl -f http://localhost:80/ || exit 1
image: excalidraw/excalidraw:latest
ports:
- 3765:80
restart: on-failure:5
stdin_open: true
environment:
- NODE_ENV=production
+8
View File
@@ -0,0 +1,8 @@
# gitea
| | |
|---|---|
| **Poort** | 3000 |
| **Start** | `docker compose up -d` |
Zie [apps/README.md](../README.md) en [RESTORE.md](../../RESTORE.md).
+35
View File
@@ -0,0 +1,35 @@
# docker-compose.yml — Gitea self-hosted Git op Synology NAS
# Plaats op NAS: /volume1/docker/gitea/
#
# Bouwen & starten: docker-compose up -d
# Web UI: http://192.168.1.211:3000
# Git SSH clone: git clone ssh://git@192.168.1.211:2222/gebruiker/repo.git
services:
gitea:
image: gitea/gitea:latest
container_name: gitea
restart: unless-stopped
network_mode: host
environment:
- USER_UID=1026
- USER_GID=100
- TZ=Europe/Brussels
# SSH op alternatieve poort (2222) — NAS gebruikt poort 22
- GITEA__server__SSH_PORT=2222
- GITEA__server__SSH_LISTEN_PORT=2222
- GITEA__server__DOMAIN=192.168.1.211
- GITEA__server__ROOT_URL=http://192.168.1.211:3000
- GITEA__server__HTTP_PORT=3000
- GITEA__server__DISABLE_SSH=false
- GITEA__server__START_SSH_SERVER=true
volumes:
- gitea-data:/data
- gitea-config:/etc/gitea
volumes:
gitea-data:
gitea-config:
+8
View File
@@ -0,0 +1,8 @@
# guacamole
| | |
|---|---|
| **Poort** | 8348 |
| **Start** | `docker compose up -d` |
Zie [apps/README.md](../README.md) en [RESTORE.md](../../RESTORE.md).
+20
View File
@@ -0,0 +1,20 @@
services:
guacamole:
container_name: Guacamole
image: jwetzell/guacamole
healthcheck:
test: curl -f http://localhost:8080/ || exit 1
mem_limit: 6g
cpu_shares: 1024
security_opt:
- no-new-privileges:false
restart: on-failure:5
ports:
- 8348:8080
volumes:
- /volume1/docker/guacamole:/config:rw
environment:
PUID: 1026
PGID: 100
TZ: Europe/Bucharest
+17
View File
@@ -0,0 +1,17 @@
postgresql-hostname: localhost
postgresql-port: 5432
postgresql-database: guacamole_db
postgresql-username: guacamole
postgresql-password: null
# ldap-hostname: ldap.example.net
# ldap-port: 389
# ldap-encryption-method: none
# ldap-max-search-results: 1000
# ldap-search-bind-dn:
# ldap-search-bind-password:
# ldap-user-base-dn: ou=people,dc=example,dc=net
# ldap-username-attribute: uid
# ldap-user-search-filter: (objectClass=*)
enable-clipboard-integration: true
+8
View File
@@ -0,0 +1,8 @@
# ha-voice-control
| | |
|---|---|
| **Poort** | zie compose |
| **Start** | `docker compose up -d` |
Zie [apps/README.md](../README.md) en [RESTORE.md](../../RESTORE.md).
+38
View File
@@ -0,0 +1,38 @@
# docker-compose.yml — HA Voice Control voor Synology NAS
# Plaats op je NAS: /volume1/docker/ha-voice-control/
#
# Bouwen & starten: docker-compose up -d --build
# Stoppen: docker-compose down
# Logs: docker-compose logs -f
services:
ha-voice-control:
build: .
container_name: ha-voice-control
restart: unless-stopped
network_mode: host # directe toegang tot PostgreSQL + Neo4j op de NAS
environment:
- HA_URL=http://192.168.1.235:8123
- HA_TOKEN=${HA_TOKEN:-}
- WHISPER_MODE=local
- WHISPER_MODEL=tiny
- WHISPER_DEVICE=cpu
- WEB_HOST=0.0.0.0
- WEB_PORT=8765
- CORS_ORIGINS=*
- PG_HOST=localhost
- PG_PORT=5433
- PG_USER=mo
- PG_PASSWORD=${PG_PASSWORD:-WaQTUw2t}
- PG_DATABASE=homelab
- NEO4J_URI=neo4j://localhost:49153
- NEO4J_USER=neo4j
- NEO4J_PASSWORD=${NEO4J_PASSWORD:-WaQTUw2t}
volumes:
- whisper-cache:/root/.cache/huggingface
volumes:
whisper-cache:
+8
View File
@@ -0,0 +1,8 @@
# homarr
| | |
|---|---|
| **Poort** | 4755 |
| **Start** | `docker compose up -d` |
Zie [apps/README.md](../README.md) en [RESTORE.md](../../RESTORE.md).
+61
View File
@@ -0,0 +1,61 @@
{
"schemaVersion": 1,
"configProperties": {
"name": "Fatima"
},
"categories": [
{
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f",
"position": 1,
"name": "Welcome to Homarr 🎉"
}
],
"wrappers": [
{
"id": "default",
"position": 0
},
{
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a326",
"position": 1
}
],
"apps": [],
"widgets": [],
"settings": {
"common": {
"searchEngine": {
"type": "google",
"properties": {}
}
},
"customization": {
"layout": {
"enabledLeftSidebar": false,
"enabledRightSidebar": false,
"enabledDocker": false,
"enabledPing": false,
"enabledSearchbar": true
},
"pageTitle": "Homarr ⭐️",
"logoImageUrl": "/imgs/logo/logo.png",
"faviconUrl": "/imgs/favicon/favicon-squared.png",
"backgroundImageUrl": "",
"customCss": "",
"colors": {
"primary": "red",
"secondary": "yellow",
"shade": 7
},
"appOpacity": 100,
"gridstack": {
"columnCountSmall": 3,
"columnCountMedium": 6,
"columnCountLarge": 10
}
},
"access": {
"allowGuests": false
}
}
}
+61
View File
@@ -0,0 +1,61 @@
{
"schemaVersion": 1,
"configProperties": {
"name": "Hodeifa"
},
"categories": [
{
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f",
"position": 1,
"name": "Welcome to Homarr 🎉"
}
],
"wrappers": [
{
"id": "default",
"position": 0
},
{
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a326",
"position": 1
}
],
"apps": [],
"widgets": [],
"settings": {
"common": {
"searchEngine": {
"type": "google",
"properties": {}
}
},
"customization": {
"layout": {
"enabledLeftSidebar": false,
"enabledRightSidebar": false,
"enabledDocker": false,
"enabledPing": false,
"enabledSearchbar": true
},
"pageTitle": "Homarr ⭐️",
"logoImageUrl": "/imgs/logo/logo.png",
"faviconUrl": "/imgs/favicon/favicon-squared.png",
"backgroundImageUrl": "",
"customCss": "",
"colors": {
"primary": "red",
"secondary": "yellow",
"shade": 7
},
"appOpacity": 100,
"gridstack": {
"columnCountSmall": 3,
"columnCountMedium": 6,
"columnCountLarge": 10
}
},
"access": {
"allowGuests": false
}
}
}
File diff suppressed because it is too large Load Diff
+61
View File
@@ -0,0 +1,61 @@
{
"schemaVersion": 1,
"configProperties": {
"name": "isra"
},
"categories": [
{
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a33f",
"position": 1,
"name": "Welcome to Homarr 🎉"
}
],
"wrappers": [
{
"id": "default",
"position": 0
},
{
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a326",
"position": 1
}
],
"apps": [],
"widgets": [],
"settings": {
"common": {
"searchEngine": {
"type": "google",
"properties": {}
}
},
"customization": {
"layout": {
"enabledLeftSidebar": false,
"enabledRightSidebar": false,
"enabledDocker": false,
"enabledPing": false,
"enabledSearchbar": true
},
"pageTitle": "Homarr ⭐️",
"logoImageUrl": "/imgs/logo/logo.png",
"faviconUrl": "/imgs/favicon/favicon-squared.png",
"backgroundImageUrl": "",
"customCss": "",
"colors": {
"primary": "red",
"secondary": "yellow",
"shade": 7
},
"appOpacity": 100,
"gridstack": {
"columnCountSmall": 3,
"columnCountMedium": 6,
"columnCountLarge": 10
}
},
"access": {
"allowGuests": false
}
}
}
+17
View File
@@ -0,0 +1,17 @@
# Homarr — startdashboard (poort 4755).
# Configs: configs/homarr/ → /app/data/configs
services:
homarr:
image: ghcr.io/ajnart/homarr:latest
container_name: homarr
restart: always
ports:
- "${HOMARR_PORT:-4755}:7575"
environment:
TZ: ${TZ:-Europe/Brussels}
volumes:
- ${HOMARR_CONFIG_DIR:-/volume1/docker/homarr}:/app/data/configs
- ${HOMARR_ICONS_DIR:-/volume1/docker/homarr/icons}:/app/public/icons
- ${HOMARR_DATA_DIR:-/volume1/docker/homarr/data}:/data
- /var/run/docker.sock:/var/run/docker.sock
+10
View File
@@ -0,0 +1,10 @@
# Home Assistant
Config-only — HA draait op `192.168.1.235:8123`.
| | |
|---|---|
| **Git** | `config/*.yaml` |
| **NAS backup** | `/volume1/docker/Configs/HA/config` |
Sync: `sh scripts/sync-from-nas.sh`
@@ -0,0 +1 @@
[]
@@ -0,0 +1,11 @@
# Loads default set of integrations. Do not remove.
default_config:
# Load frontend themes from the themes folder
frontend:
themes: !include_dir_merge_named themes
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
+4
View File
@@ -0,0 +1,4 @@
# Use this file to store secrets like usernames and passwords.
# Learn more at https://www.home-assistant.io/docs/configuration/secrets/
some_password: welcome
+15
View File
@@ -0,0 +1,15 @@
# Homelab Command
Applicatiecode en monitoring-build staan in een aparte repo:
- **Gitea:** http://192.168.1.211:3000/mo/homelab-command
- **NAS-pad:** `/volume1/homes/mo/homelab-command`
```bash
git clone http://192.168.1.211:3000/mo/homelab-command.git /volume1/homes/mo/homelab-command
cd /volume1/homes/mo/homelab-command
cp .env.example .env # vul in
docker compose -f docker-compose.homelab.yml up -d --build
```
Zie ook `apps/monitoring/` in homelab-configs voor Prometheus/Grafana compose.
+16
View File
@@ -0,0 +1,16 @@
# Monitoring (Prometheus + Grafana + postgres-exporter)
Prometheus-config staat in deze map. **Grafana-image** en dashboards bouw je vanuit [homelab-command](http://192.168.1.211:3000/mo/homelab-command):
```bash
cd /volume1/homes/mo/homelab-command
export PG_PASSWORD='...'
export GRAFANA_ADMIN_PASSWORD='...'
docker build -f Dockerfile.grafana -t grafana-homelab:latest .
docker compose -f docker-compose.grafana.yml up -d
# of: sh scripts/recreate_monitoring_docker.sh
```
Na start: `docker network create homelab-monitor` en verbind postgres-homelab, neo4j, prometheus, exporter, grafana.
Mesh (NATS + normalizer): `docker compose -f docker-compose.mesh.yml --env-file .env up -d` in homelab-command.
@@ -0,0 +1,81 @@
# Grafana — aparte stack (projectmap: homelab-command).
#
# Start (vanuit deze map):
# export PG_PASSWORD='jouw_postgres_wachtwoord'
# docker compose -f docker-compose.grafana.yml up -d --build
#
# UI: http://<NAS-IP>:3002 (standaard host-poort; 3001 was bezet op deze host)
# login: admin / GRAFANA_ADMIN_PASSWORD
#
# Vereist: postgres container heet postgres-homelab en luistert intern op 5432.
# Eénmalig (DNS tussen Prometheus en postgres-exporter op Synology bridge):
# sh scripts/docker_monitoring_join.sh homelab-monitor
# Daarna: docker network connect homelab-monitor postgres-homelab # als exporter DB niet bereikt
#
# Dashboards (Grafana.com IDs): PostgreSQL 9628, Proxmox 10347, Neo4j 10371,
# Synology overview 14364, Node Exporter 1860 — onder folder "Infrastructure".
# Prometheus scrape: postgres-exporter + optioneel Neo4j :2004 / Proxmox via targets/extra.yml.
services:
prometheus:
image: prom/prometheus:v2.53.2
container_name: prometheus-homelab
restart: unless-stopped
ports:
- "${PROMETHEUS_PORT:-9090}:9090"
volumes:
- ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- ./monitoring/prometheus/targets:/etc/prometheus/targets:ro
- prometheus-homelab-data:/prometheus
command:
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --web.enable-lifecycle
networks:
- homelab-monitor
postgres-exporter:
image: prometheuscommunity/postgres-exporter:latest
container_name: postgres-exporter-homelab
restart: unless-stopped
ports:
- "${POSTGRES_EXPORTER_PORT:-9187}:9187"
environment:
DATA_SOURCE_NAME: "postgresql://${PG_USER:-mo}:${PG_PASSWORD}@postgres-homelab:5432/${PG_DATABASE:-homelab}?sslmode=disable"
networks:
- homelab-monitor
grafana:
build:
context: .
dockerfile: Dockerfile.grafana
image: grafana-homelab:latest
container_name: grafana-homelab
restart: unless-stopped
ports:
- "${GRAFANA_PORT:-3002}:3000"
environment:
GF_SECURITY_ADMIN_USER: ${GRAFANA_ADMIN_USER:-admin}
GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_ADMIN_PASSWORD:-changeme_grafana}
GF_USERS_DEFAULT_THEME: dark
GF_SERVER_ROOT_URL: ${GRAFANA_ROOT_URL:-http://localhost:3002}
PG_USER: ${PG_USER:-mo}
PG_DATABASE: ${PG_DATABASE:-homelab}
HOMELAB_PG_PASSWORD: ${PG_PASSWORD:-}
volumes:
- grafana-homelab-data:/var/lib/grafana
- ./grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards:ro
- ./grafana/dashboards/homelab:/var/lib/grafana/dashboards/homelab:ro
- ./grafana/dashboards/imported:/var/lib/grafana/dashboards/imported:ro
depends_on:
- prometheus
networks:
- homelab-monitor
volumes:
grafana-homelab-data:
prometheus-homelab-data:
networks:
homelab-monitor:
driver: bridge
+31
View File
@@ -0,0 +1,31 @@
# Security Mesh stack — NATS + Go-normalizer (Zeek/Suricata JSON → Postgres).
# Start vanuit homelab-command: docker compose -f docker-compose.mesh.yml --env-file .env.mesh up -d
# Stop bestaande NATS op poort 4222 of wijzig poorten hieronder.
services:
nats:
image: nats:2.10-alpine
command: ["-js", "-m", "8222"]
ports:
- "${NATS_CLIENT_PORT:-4222}:4222"
- "${NATS_HTTP_PORT:-8222}:8222"
restart: unless-stopped
mesh-normalizer:
image: mesh-normalizer:local
build:
context: ./mesh-ingest
dockerfile: Dockerfile
environment:
NATS_URL: nats://nats:4222
MESH_DEFAULT_TENANT_ID: ${MESH_DEFAULT_TENANT_ID:-00000000-0000-4000-8000-000000000001}
PG_HOST: ${PG_HOST:-172.17.0.1}
PG_PORT: ${PG_PORT:-5433}
PG_USER: ${PG_USER:-mo}
PG_PASSWORD: ${PG_PASSWORD:-}
PG_DATABASE: ${PG_DATABASE:-homelab}
depends_on:
- nats
restart: unless-stopped
extra_hosts:
- "host.docker.internal:host-gateway"
+44
View File
@@ -0,0 +1,44 @@
# Prometheus — scrape targets op Docker bridge (naast postgres-homelab, neo4j, …).
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ["localhost:9090"]
- job_name: postgres-exporter
static_configs:
- targets: ["postgres-exporter-homelab:9187"]
labels:
instance: postgres-homelab
# Neo4j 4.4+ enterprise metrics.prometheus.enabled → endpoint op poort 2004
- job_name: neo4j
scrape_interval: 30s
metrics_path: /metrics
static_configs:
- targets: ["neo4j:2004"]
labels:
instance: neo4j
# Proxmox VE — prometheus-pve-exporter; vul monitoring/prometheus/targets/extra.yml
- job_name: proxmox-pve
scrape_interval: 30s
file_sd_configs:
- files:
- /etc/prometheus/targets/extra.yml
refresh_interval: 1m
# Synology / SNMP: zet targets in monitoring/prometheus/targets/snmp.yml en uncomment hieronder.
# - job_name: snmp
# scrape_interval: 60s
# metrics_path: /snmp
# params:
# module: [synology]
# static_configs:
# - targets:
# - 192.168.1.211
# labels:
# job: snmp-nas
@@ -0,0 +1,9 @@
# Voeg hier scrape-targets toe (YAML array van scrape_configs entries wordt NIET ondersteund —
# dit bestand is voor **file_sd** formaat: lijst van static_configs targets).
#
# Voorbeeld Proxmox (prometheus-pve-exporter op host of VM):
# - targets:
# - '192.168.1.10:9221'
# labels:
# instance: pve
[]
@@ -0,0 +1,7 @@
# Hernoem naar extra.yml of merge handmatig. Formaat: lijst van static config groepen.
#
# Proxmox VE exporter (github.com/prometheus-pve/prometheus-pve-exporter):
- targets:
- "192.168.1.50:9221"
labels:
instance: proxmox
@@ -0,0 +1,2 @@
# SNMP exporter targets (Synology via snmp_exporter). Leeg = geen scrapes.
[]
@@ -0,0 +1,5 @@
# snmp_exporter (poort 9116) die naar je Synology SNMP wijst.
- targets:
- "snmp-exporter:9116"
labels:
job: synology
+8
View File
@@ -0,0 +1,8 @@
# neo4j
| | |
|---|---|
| **Poort** | 49153 |
| **Start** | `docker compose up -d` |
Zie [apps/README.md](../README.md) en [RESTORE.md](../../RESTORE.md).
+16
View File
@@ -0,0 +1,16 @@
# Neo4j — graph database (bolt 49153, browser 49154/49155).
# Data: /volume1/docker/neo4j
services:
neo4j:
image: neo4j:latest
container_name: neo4j
restart: unless-stopped
ports:
- "${NEO4J_BOLT_PORT:-49153}:7687"
- "${NEO4J_HTTP_PORT:-49154}:7474"
- "${NEO4J_HTTPS_PORT:-49155}:7473"
environment:
NEO4J_AUTH: ${NEO4J_AUTH:-neo4j/WaQTUw2t}
volumes:
- ${NEO4J_DATA_DIR:-/volume1/docker/neo4j}:/data
+8
View File
@@ -0,0 +1,8 @@
# pgadmin
| | |
|---|---|
| **Poort** | 5434 |
| **Start** | `docker compose up -d` |
Zie [apps/README.md](../README.md) en [RESTORE.md](../../RESTORE.md).
+31
View File
@@ -0,0 +1,31 @@
# docker-compose.yml — pgAdmin 4 voor PostgreSQL op Synology NAS
# Plaats op NAS: /volume1/docker/postgres-web/
#
# Starten: docker-compose up -d
# Web UI: http://192.168.1.211:5434
# Stoppen: docker-compose down
# Logs: docker-compose logs -f
services:
pgadmin:
image: dpage/pgadmin4:latest
container_name: pgadmin
restart: unless-stopped
ports:
- "5434:80" # Web UI: http://NAS_IP:5434
environment:
# Standaard inlog voor de web UI
- PGADMIN_DEFAULT_EMAIL=mo@el-kadi.nl
- PGADMIN_DEFAULT_PASSWORD=${PGADMIN_PASSWORD:-WaQTUw2t}
# Masquerade root URL voor nginx reverse proxy
- PGADMIN_CONFIG_SERVER_MODE=True
- PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED=False
volumes:
- pgadmin-data:/var/lib/pgadmin # persistentie: server lijst, instellingen
- ./servers.json:/pgadmin4/servers.json # pre-configureer database connecties
volumes:
pgadmin-data:
+19
View File
@@ -0,0 +1,19 @@
{
"Servers": {
"1": {
"Name": "Homelab PostgreSQL",
"Group": "Servers",
"Host": "192.168.1.211",
"Port": 5433,
"MaintenanceDB": "homelab",
"Username": "mo",
"Password": "WaQTUw2t",
"SSLMode": "prefer",
"PassFile": "",
"SSLCert": "",
"SSLKey": "",
"SSLRootCert": "",
"Comment": "Synology NAS — Homelab dashboard database"
}
}
}
+15
View File
@@ -0,0 +1,15 @@
{
"Servers": {
"1": {
"Name": "Homelab PostgreSQL",
"Group": "Servers",
"Host": "192.168.1.211",
"Port": 5433,
"MaintenanceDB": "homelab",
"Username": "mo",
"Password": "WaQTUw2t",
"SSLMode": "prefer",
"Comment": "Synology NAS — Homelab dashboard database"
}
}
}
+8
View File
@@ -0,0 +1,8 @@
# portainer
| | |
|---|---|
| **Poort** | 9000 |
| **Start** | `docker compose up -d` |
Zie [apps/README.md](../README.md) en [RESTORE.md](../../RESTORE.md).
+13
View File
@@ -0,0 +1,13 @@
# Portainer CE — Docker UI (poorten 8000, 9000).
services:
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
ports:
- "${PORTAINER_EDGE:-8000}:8000"
- "${PORTAINER_HTTP:-9000}:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${PORTAINER_DATA_DIR:-/volume1/docker/portainer}:/data
+5
View File
@@ -0,0 +1,5 @@
POSTGRES_USER=mo
POSTGRES_PASSWORD=WaQTUw2t
POSTGRES_DB=homelab
PG_HOST_PORT=5433
PG_DATA_DIR=/volume1/docker/postgres/data
+5
View File
@@ -0,0 +1,5 @@
POSTGRES_USER=mo
POSTGRES_PASSWORD=WaQTUw2t
POSTGRES_DB=homelab
PG_HOST_PORT=5433
PG_DATA_DIR=/volume1/docker/postgres/data
+8
View File
@@ -0,0 +1,8 @@
# postgres
| | |
|---|---|
| **Poort** | 5433 |
| **Start** | `docker compose up -d` |
Zie [apps/README.md](../README.md) en [RESTORE.md](../../RESTORE.md).
+17
View File
@@ -0,0 +1,17 @@
# PostgreSQL — centrale homelab-database (poort 5433 op host).
# NAS-pad: /volume1/docker/postgres/
# Start: cp .env.example .env && docker compose up -d
services:
postgres-homelab:
image: postgres:16-alpine
container_name: postgres-homelab
restart: unless-stopped
ports:
- "${PG_HOST_PORT:-5433}:5432"
environment:
POSTGRES_USER: ${POSTGRES_USER:-mo}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-WaQTUw2t}
POSTGRES_DB: ${POSTGRES_DB:-homelab}
volumes:
- ${PG_DATA_DIR:-/volume1/docker/postgres/data}:/var/lib/postgresql/data
+10
View File
@@ -0,0 +1,10 @@
# Prowlarr
Config-only (draait op Proxmox LXC).
| | |
|---|---|
| **Git** | `config/config.xml`, `config/Definitions/` |
| **NAS** | `/volume1/docker/Configs/Prowlarr` |
Sync: `sh scripts/sync-from-nas.sh`
@@ -0,0 +1,218 @@
---
id: 0daykiev
name: 0day.kiev
description: "0day.kiev.ua is a UKRAINIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: uk-UA
type: private
encoding: windows-1251
links:
- https://tracker.0day.community/
legacylinks:
- https://tracker.0day.kiev.ua/
caps:
categorymappings:
- {id: 10, cat: Movies, desc: "Фильмы (Movies)"}
- {id: 16, cat: Movies/HD, desc: "HD / Фильмы (HD / Movies)"}
- {id: 30, cat: TV/HD, desc: "HD / Сериалы (HD / TV Shows)"}
- {id: 27, cat: Movies/HD, desc: "HD / Мультфильмы (HD / Cartoons)"}
- {id: 17, cat: PC/Games, desc: "Игры / ПК (Games / PC)"}
- {id: 14, cat: Audio, desc: "Музыка / Аудио (Music / Audio)"}
- {id: 29, cat: TV, desc: "Мультсериалы (TV Series)"}
- {id: 11, cat: Movies, desc: "Мультфильмы (Cartoons)"}
- {id: 28, cat: TV/Documentary, desc: "HD / Документальное (HD / Documentary)"}
- {id: 18, cat: PC/0day, desc: "Софт / Windows (Software / Windows)"}
- {id: 19, cat: TV, desc: "TV / Сериалы (TV shows)"}
- {id: 31, cat: Other, desc: "Прочее (Other)"}
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: stripcyrillic
type: checkbox
label: Strip Cyrillic Letters
default: true
- 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_activity
type: info
label: Account Inactivity
default: "The tracker has a system for deleting inactive accounts after 6 months from your last visit to the tracker."
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
returnto: "/browse.php"
error:
- selector: div.maintitle:contains("Ошибка")
message:
selector: div.borderwrap table.embedded
test:
path: browse.php
selector: a[href="/logout.php"]
search:
paths:
# https://tracker.0day.kiev.ua/browse.php?c10=1&c27=1&search=endgame&incldead=1&where=0
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active, 1 incldead, 2 onlydead, 3 gold, 4 noseed, 5 silver
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
# 0 title, 1 title and descr
where: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
keywordsfilters:
- name: diacritics
args: replace
- name: re_replace # S01 to сезон 1
args: ["(?i)\\bS0*(\\d+)\\b", "сезон $1"]
- name: re_replace # E01 to сері 1
args: ["(?i)\\bE0*(\\d+)\\b", "сері $1"]
- name: re_replace # S01E01 to сезон 1 сері 1
args: ["(?i)\\bS0*(\\d+)E0*(\\d+)\\b", "сезон $1 сері $2"]
rows:
selector: table > tbody > tr.rowtorrentinfo
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="]
filters:
# normalize to SXXEYY format
- name: re_replace
args: ["(?i)[CС]езони?[\\s:]*(\\d+(?:-\\d+)?).+?(?:[CС]ері[їяй]|Епізоди?)[\\s:]*(\\d+(?:-\\d+)?)\\s*з\\s*(\\w?)", "S$1E$2 of $3"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s*[CС]езони?.+?(\\d+(?:-\\d+)?)\\s*з\\s*(\\w?)(?:\\s*(?:[CС]ері[їяй]|Епізоди?))?", "S$1E$2 of $3"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s*[CС]езони?.+?(\\d+(?:-\\d+)?)\\s*(?:[CС]ері[їяй]|Епізоди?)\\s+з\\s*(\\w?)", "S$1E$2 of $3"]
- name: re_replace
args: ["(?i)[CС]езони?[\\s:]*(\\d+(?:-\\d+)?).+?(\\d+(?:-\\d+)?)\\s*з\\s*(\\w?)(?:\\s*(?:[CС]ері[їяй]|Епізоди?))?", "S$1E$2 of $3"]
- name: re_replace
args: ["(?i)[CС]езони?[\\s:]*(\\d+(?:-\\d+)?).+?(\\d+(?:-\\d+)?)\\s*(?:[CС]ері[їяй]|Епізоди?)\\s+з\\s*(\\w?)", "S$1E$2 of $3"]
- name: re_replace
args: ["(?i)[CС]езони?[\\s:]*(\\d+(?:-\\d+)?).+?(?:[CС]ері[їяй]|Епізоди?)[\\s:]*(\\d+(?:-\\d+)?)", "S$1E$2"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s*[CС]езони?.+?(\\d+(?:-\\d+)?)(?:\\s*(?:[CС]ері[їяй]|Епізоди?))", "S$1E$2"]
- name: re_replace
args: ["(?i)[CС]езони?[\\s:]*(\\d+(?:-\\d+)?).+?(\\d+(?:-\\d+)?)(?:\\s*(?:[CС]ері[їяй]|Епізоди?))", "S$1E$2"]
- name: re_replace
args: ["(?i)[CС]езони?[\\s:]*(\\d+(?:-\\d+)?)", "S$1"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s+[CС]езони?", "S$1"]
- name: re_replace
args: ["(?i)(?:[CС]ері[їяй]|Епізоди?)[\\s:]*(\\d+(?:-\\d+)?)\\s*з\\s*(\\w?)", "E$1 of $2"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s*з\\s*(\\w?)(?:\\s*(?:[CС]ері[їяй]|Епізоди?))", "E$1 of $2"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s+(?:[CС]ері[їяй]|Епізоди?)\\s+з\\s*(\\w?)", "E$1 of $2"]
- name: re_replace
args: ["(?i)(?:[CС]ері[їяй]|Епізоди?)[\\s:]*(\\d+(?:-\\d+)?)", "E$1"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s+(?:[CС]ері[їяй]|Епізоди?)", "E$1"]
- name: re_replace
args: ["(\\([\\p{IsCyrillic}\\W]+\\))|(^[\\p{IsCyrillic}\\W\\d]+\\/ )|([\\p{IsCyrillic} \\-]+,+)|([\\p{IsCyrillic}]+)", "{{ if .Config.stripcyrillic }}{{ else }}$1$2$3$4{{ end }}"]
- name: re_replace
args: ["(?i)\\bHDTV\\s?Rip\\b", "HDTV"]
- name: re_replace
args: ["(?i)\\bSAT\\s?Rip\\b", "HDTV"]
- name: re_replace
args: ["(?i)\\bWEB\\s?DL\\s?Rip\\b", "WEBDL"]
- name: re_replace
args: ["(?i)\\bWEB Rip\\b", "WEBRip"]
- name: re_replace
args: ["(?i)\\bWEB DL\\b", "WEBDL"]
- name: re_replace
args: ["[\\[\\(\\{<«][\\s\\W]*[\\]\\)\\}>»]", ""]
- name: re_replace
args: ["^[\\s&,\\.!\\?\\+\\-_\\|\\/':]+", ""]
- name: re_replace
args: ["(?i)^\\(\\s*([SE]\\d+.*?)\\s*\\)[\\s\\/\\|]*(.+)", "$2 $1"]
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
date:
selector: td:nth-child(2) i
filters:
- name: append
args: " +02:00" # EET
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
size:
selector: td:nth-child(4)
filters:
- name: replace
args: ["ТБ", "TB"]
- name: replace
args: ["ГБ", "GB"]
- name: replace
args: ["МБ", "MB"]
- name: replace
args: ["КБ", "KB"]
grabs:
selector: td:nth-child(5)
seeders:
selector: td:nth-child(6)
filters:
- name: split
args: ["|", 0]
leechers:
selector: td:nth-child(6)
filters:
- name: split
args: ["|", 1]
downloadvolumefactor:
case:
img[src="pic/freedownload.gif"]: 0
img[src="pic/silverdownload.gif"]: 0.5
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 0.2
description:
selector: a[href^="details.php?id="]
# engine n/a
@@ -0,0 +1,76 @@
---
id: 0magnet
name: 0Magnet
description: "ØMagnet is a CHINESE Public tracker for Asian 3X (JAV)"
language: en-US
type: public
encoding: UTF-8
links:
- https://0magnet.co/
- https://13mag.net/
- https://16mag.net/
legacylinks:
- https://0magnet.com/
- https://9mag.net/
caps:
categories:
XXX: XXX
modes:
search: [q]
settings: []
download:
infohash:
hash:
selector: a[href^="magnet:?xt"]
attribute: href
filters:
- name: regexp
args: ([A-F|a-f|0-9]{40})
title:
selector: a[href^="magnet:?xt"]
attribute: href
filters:
- name: regexp
args: "&dn=(.+?)&"
- name: validfilename
search:
paths:
- path: search
inputs:
q: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}"
rows:
selector: table > tbody > tr:has(td)
filters:
- name: andmatch
fields:
category:
text: XXX
title:
selector: a
remove: p
details:
selector: a
attribute: href
download:
selector: a
attribute: href
date:
text: now
size:
selector: td.td-size
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a
+295
View File
@@ -0,0 +1,295 @@
---
id: 1337x
name: 1337x
description: "1337X is a Public torrent site that offers verified torrent downloads"
language: en-US
type: public
encoding: UTF-8
requestDelay: 2
# get status and news on domains at the official site https://1337x-status.org/
links:
- https://1337x.to/
- https://1337x.st/
- https://x1337x.ws/
- https://x1337x.eu/
- https://x1337x.se/
- https://x1337x.cc/
- https://1337x.unblockit.black/
- https://1337x.unblockninja.com/
- https://1337x.ninjaproxy1.com/
- https://1337x.proxyninja.org/
- https://1337x.proxyninja.net/
- https://1337x.torrentbay.st/
- https://1337x.torrentsbay.org/
legacylinks:
- https://1337x.is/
- https://1337x.gd/
- https://1337x.mrunblock.life/
- https://1337x.unblockit.asia/
- https://1337x.unblockit.mov/
- https://1337x.unblockit.rsvp/
- https://1337x.unblockit.vegas/
- https://1337x.unblockit.esq/
- https://1337x.unblockit.zip/
- https://1337x.unblockit.foo/
- https://1337x.unblockit.ing/
- https://1337x.mrunblock.bond/
- https://1337x.unblockit.date/
- https://1337x.unblockit.dad/
- https://1337x.unblockit.africa/
- https://1337x.unblockit.casa/ # 502
- https://1337x.unblockit.sbs/ # 502
- https://1337x.unblockit.ong/ # 502
- https://1337x.abcproxy.org/
- https://1337x.so/
caps:
categorymappings:
# Anime
- {id: 28, cat: TV/Anime, desc: "Anime/Anime"}
- {id: 78, cat: TV/Anime, desc: "Anime/Dual Audio"}
- {id: 79, cat: TV/Anime, desc: "Anime/Dubbed"}
- {id: 80, cat: TV/Anime, desc: "Anime/Subbed"}
- {id: 81, cat: TV/Anime, desc: "Anime/Raw"}
# Audio
- {id: 22, cat: Audio/MP3, desc: "Music/MP3"}
- {id: 23, cat: Audio/Lossless, desc: "Music/Lossless"}
- {id: 24, cat: Audio, desc: "Music/DVD"}
- {id: 25, cat: Audio/Video, desc: "Music/Video"}
- {id: 26, cat: Audio, desc: "Music/Radio"}
- {id: 27, cat: Audio/Other, desc: "Music/Other"}
- {id: 53, cat: Audio, desc: "Music/Album"}
- {id: 58, cat: Audio, desc: "Music/Box set"}
- {id: 59, cat: Audio, desc: "Music/Discography"}
- {id: 60, cat: Audio, desc: "Music/Single"}
- {id: 68, cat: Audio, desc: "Music/Concerts"}
- {id: 69, cat: Audio, desc: "Music/AAC"}
# Movies
- {id: 1, cat: Movies/DVD, desc: "Movies/DVD"}
- {id: 2, cat: Movies/SD, desc: "Movies/Divx/Xvid"}
- {id: 3, cat: Movies, desc: "Movies/SVCD/VCD"}
- {id: 4, cat: Movies/Foreign, desc: "Movies/Dubs/Dual Audio"}
- {id: 42, cat: Movies/HD, desc: "Movies/HD"}
- {id: 54, cat: Movies/HD, desc: "Movies/h.264/x264"}
- {id: 55, cat: Movies, desc: "Movies/Mp4"}
- {id: 66, cat: Movies/3D, desc: "Movies/3D"}
- {id: 70, cat: Movies/HD, desc: "Movies/HEVC/x265"}
- {id: 73, cat: Movies, desc: "Movies/Bollywood"}
- {id: 76, cat: Movies/UHD, desc: "Movies/UHD"}
# TV
- {id: 5, cat: TV, desc: "TV/DVD"}
- {id: 6, cat: TV, desc: "TV/Divx/Xvid"}
- {id: 7, cat: TV, desc: "TV/SVCD/VCD"}
- {id: 41, cat: TV/HD, desc: "TV/HD"}
- {id: 71, cat: TV, desc: "TV/HEVC/x265"}
- {id: 74, cat: TV, desc: "TV/Cartoons"}
- {id: 75, cat: TV/SD, desc: "TV/SD"}
- {id: 9, cat: TV/Documentary, desc: "TV/Documentary"}
# Apps
- {id: 18, cat: PC, desc: "Apps/PC Software"}
- {id: 19, cat: PC/Mac, desc: "Apps/Mac"}
- {id: 20, cat: PC, desc: "Apps/Linux"}
- {id: 21, cat: PC, desc: "Apps/Other"}
- {id: 56, cat: PC/Mobile-Android, desc: "Apps/Android"}
- {id: 57, cat: PC/Mobile-iOS, desc: "Apps/iOS"}
# Games
- {id: 10, cat: PC/Games, desc: "Games/PC Game"}
- {id: 11, cat: Console/PS3, desc: "Games/PS2"}
- {id: 12, cat: Console/PSP, desc: "Games/PSP"}
- {id: 13, cat: Console/XBox, desc: "Games/Xbox"}
- {id: 14, cat: Console/XBox 360, desc: "Games/Xbox360"}
- {id: 15, cat: Console/PS3, desc: "Games/PS1"}
- {id: 16, cat: Console/Other, desc: "Games/Dreamcast"}
- {id: 17, cat: PC/Mobile-Other, desc: "Games/Other"}
- {id: 43, cat: Console/PS3, desc: "Games/PS3"}
- {id: 44, cat: Console/Wii, desc: "Games/Wii"}
- {id: 45, cat: Console/NDS, desc: "Games/DS"}
- {id: 46, cat: Console/Other, desc: "Games/GameCube"}
- {id: 72, cat: Console/3DS, desc: "Games/3DS"}
- {id: 77, cat: Console/PS4, desc: "Games/PS4"}
- {id: 82, cat: Console/Other, desc: "Games/Switch"}
# XXX
- {id: 48, cat: XXX/DVD, desc: "XXX/Video"}
- {id: 49, cat: XXX/ImageSet, desc: "XXX/Picture"}
- {id: 50, cat: XXX, desc: "XXX/Magazine"}
- {id: 51, cat: XXX, desc: "XXX/Hentai"}
- {id: 67, cat: XXX, desc: "XXX/Games"}
# Other
- {id: 33, cat: Other, desc: "Other/Emulation"}
- {id: 34, cat: Books, desc: "Other/Tutorial"}
- {id: 35, cat: Other, desc: "Other/Sounds"}
- {id: 36, cat: Books/EBook, desc: "Other/E-books"}
- {id: 37, cat: Other, desc: "Other/Images"}
- {id: 38, cat: Other, desc: "Other/Mobile Phone"}
- {id: 39, cat: Books/Comics, desc: "Other/Comics"}
- {id: 40, cat: Other/Misc, desc: "Other/Other"}
- {id: 47, cat: Other, desc: "Other/Nulled Script"}
- {id: 52, cat: Audio/Audiobook, desc: "Other/Audiobook"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q, album, artist]
book-search: [q]
allowrawsearch: true
settings:
- name: info_flaresolverr
type: info_flaresolverr
- name: downloadlink
type: select
label: Download link
default: "http://itorrents.org/"
options:
"http://itorrents.org/": iTorrents.org
"magnet:": magnet
- name: downloadlink2
type: select
label: Download link (fallback)
default: "magnet:"
options:
"http://itorrents.org/": iTorrents.org
"magnet:": magnet
- name: info_download
type: info
label: About the Download links
default: As the iTorrents .torrent download link on this site is known to fail from time to time, we suggest using the magnet link as a fallback. The BTCache and Torrage services are not supported because they require additional user interaction (a captcha for BTCache and a download button on Torrage.)
- name: sort
type: select
label: Sort requested from site
default: time
options:
time: created
seeders: seeders
size: size
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
download:
# the .torrent URL and magnet URI are on the details page
selectors:
- selector: ul li a[href^="{{ .Config.downloadlink }}"]
attribute: href
- selector: ul li a[href^="{{ .Config.downloadlink2 }}"]
attribute: href
search:
paths:
# present first page of movies tv and music results if there are no search parms supplied (20 hits per page)
- path: "{{ if or .Query.Album .Query.Artist .Keywords }}sort-search{{ else }}cat/Movies{{ end }}{{ if or .Query.Album .Query.Artist }}/{{ or .Query.Album .Query.Artist }}{{ else }}/{{ .Keywords }}{{ end }}{{ if or .Query.Album .Query.Artist .Keywords }}/{{ else }}{{ end }}{{ .Config.sort }}/{{ .Config.type }}/1/"
- path: "{{ if or .Query.Album .Query.Artist .Keywords }}sort-search{{ else }}cat/TV{{ end }}{{ if or .Query.Album .Query.Artist }}/{{ or .Query.Album .Query.Artist }}{{ else }}/{{ .Keywords }}{{ end }}{{ if or .Query.Album .Query.Artist .Keywords }}/{{ else }}{{ end }}{{ .Config.sort }}/{{ .Config.type }}/{{ if or .Query.Album .Query.Artist .Keywords }}2{{ else }}1{{ end }}/"
- path: "{{ if or .Query.Album .Query.Artist .Keywords }}sort-search{{ else }}cat/Music{{ end }}{{ if or .Query.Album .Query.Artist }}/{{ or .Query.Album .Query.Artist }}{{ else }}/{{ .Keywords }}{{ end }}{{ if or .Query.Album .Query.Artist .Keywords }}/{{ else }}{{ end }}{{ .Config.sort }}/{{ .Config.type }}/{{ if or .Query.Album .Query.Artist .Keywords }}3{{ else }}1{{ end }}/"
- path: "{{ if or .Query.Album .Query.Artist .Keywords }}sort-search{{ else }}cat/Other{{ end }}{{ if or .Query.Album .Query.Artist }}/{{ or .Query.Album .Query.Artist }}{{ else }}/{{ .Keywords }}{{ end }}{{ if or .Query.Album .Query.Artist .Keywords }}/{{ else }}{{ end }}{{ .Config.sort }}/{{ .Config.type }}/{{ if or .Query.Album .Query.Artist .Keywords }}4{{ else }}1{{ end }}/"
keywordsfilters:
- name: re_replace # daily standard S2023 > 2023
args: ["\\bS(20\\d{2})\\b", "$1"]
rows:
selector: tr:has(a[href^="/torrent/"])
fields:
title_default:
# the movies, tv and music pages abbreviate the title
selector: td[class^="coll-1"] a[href^="/torrent/"]
title_optional:
# the movies, tv and music pages abbreviate the title so we process the href instead. #8137
optional: true
selector: td[class^="coll-1"] a[href^="/torrent/"]:contains("...")
attribute: href
filters:
- name: urldecode
- name: split
args: ["/", 3]
title:
# title_optional can be empty so use the title_default instead #8586
text: "{{ if .Result.title_optional }}{{ .Result.title_optional }}{{ else }}{{ .Result.title_default }}{{ end }}"
filters:
- name: re_replace
args: ["-([\\w]+(?:[\\[\\]\\(\\)\\w]+)?)$", "~$1"]
- name: replace
args: ["-", " "]
- name: re_replace
args: ["~([\\w]+(?:[\\[\\]\\(\\)\\w]+)?)$", "-$1"]
- name: replace
args: ["\u000f", ""] # get rid of unwanted character #6582
# cleanup for Sonarr
- name: re_replace # EP 3 4 to E3-4
args: ["(?i)\\sEP\\s(\\d{1,2})\\s(E?\\s?\\d{1,2})\\s", " E$1-$2 "]
- name: re_replace # S02E04 05 to S02E04-05
args: ["(?i)\\sS(\\d{1,2})\\s?E\\s?(\\d{1,2})\\s(E?\\s?\\d{1,2})\\s", " S$1E$2-$3 "]
- name: re_replace
args: ["(?i)AC3\\s?(\\d)\\s(\\d)", "AC3 $1.$2"]
- name: re_replace
args: ["(?i) DD\\s?(\\d)\\s(\\d)", " DD $1.$2"]
- name: re_replace
args: ["(?i) DDP\\s?(\\d)\\s(\\d)", " DDP $1.$2"]
- name: re_replace
args: ["(?i)\\sE\\s?AC3", " EAC3"]
- name: re_replace
args: ["(?i)WEB\\sDL", "WEB-DL"]
- name: re_replace
args: ["(?i)HDTVRIP", "HDTV"]
category_optional:
optional: true
selector: td[class^="coll-1"] a[href^="/sub/"]
attribute: href
filters:
# extract the third part
- name: split
args: ["/", 2]
category:
text: "{{ if .Result.category_optional }}{{ .Result.category_optional }}{{ else }}40{{ end }}"
details:
selector: td[class^="coll-1"] a[href^="/torrent/"]
attribute: href
download:
# .torrent link is on the details page
selector: td[class^="coll-1"] a[href^="/torrent/"]
attribute: href
# dates come in three flavours:
date_year:
# (within this year) 7am Sep. 14th
optional: true
selector: td[class^="coll-date"]:not(:contains(":")):not(:contains("'"))
filters:
- name: re_replace
args: ["st|nd|rd|th", ""]
- name: dateparse
args: "htt MMM. d"
date_years:
# (more than a year ago) Apr. 18th '11
optional: true
selector: td[class^="coll-date"]:contains("'")
filters:
- name: replace
args: ["'", ""]
- name: re_replace
args: ["st|nd|rd|th", ""]
- name: dateparse
args: "MMM. d yy"
date_today:
# (today) 12:25am
optional: true
selector: td[class^="coll-date"]:contains(":")
filters:
- name: fuzzytime
date:
text: "{{ if or .Result.date_year .Result.date_years .Result.date_today }}{{ or .Result.date_year .Result.date_years .Result.date_today }}{{ else }}now{{ end }}"
size:
selector: td[class^="coll-4"]
seeders:
selector: td[class^="coll-2"]
leechers:
selector: td[class^="coll-3"]
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a
+198
View File
@@ -0,0 +1,198 @@
---
id: 1ptbar
name: 1ptbar
description: "1ptbar is a CHINESE Private Torrent Tracker for MOVIES / TV / E-LEARNING"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://1ptba.com/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
- {id: 402, cat: TV, desc: "TV Series/电视剧"}
- {id: 403, cat: TV, desc: "TV Shows/综艺节目"}
- {id: 406, cat: Audio/Video, desc: "Music Videos/音乐MV"}
- {id: 407, cat: TV/Sport, desc: "Sports/体育"}
- {id: 409, cat: Other, desc: "Misc/其他"}
- {id: 408, cat: Audio, desc: "HQ Audio/高品质音频"}
- {id: 412, cat: Other, desc: "Edu/教育"}
- {id: 411, cat: PC/Games, desc: "Games/游戏"}
- {id: 410, cat: PC/0day, desc: "Software/软件"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
music-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: 2facode
type: text
label: 2FA code
- name: info_2fa
type: info
label: "About 2FA code"
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> on the 1ptbar Web Site. Otherwise just leave it empty."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_flaresolverr
type: info_flaresolverr
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Cherish your user account. Inactive accounts would be deleted based on the following rules:<ol><li>Veteran User or above would never be deleted.</li><li>Elite User or above would never be deleted if parked (at User CP).</li><li>Parked accounts would be deleted if users have not logged in for more than 400 days in a row.</li><li>Unparked accounts would be deleted if users have not logged in for more than 150 days in a row.</li><li>Accounts with both uploaded and downloaded amount being 0 would be deleted if users have not logged in for more than 100 days in a row.</li></ol>"
login:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs:
secret: ""
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
two_step_code: "{{ .Config.2facode }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:has(h2:contains("失败"))
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}"
# 0 incldead, 1 active, 2 dead
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl
search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
# 0 AND, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title:
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-last-of-type(6) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00"
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-last-of-type(6):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-last-of-type(5)
seeders:
selector: td.rowfollow:nth-last-of-type(4)
leechers:
selector: td.rowfollow:nth-last-of-type(3)
grabs:
selector: td.rowfollow:nth-last-of-type(2)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.8.12 2024-05-20
@@ -0,0 +1,227 @@
---
id: 2fast4you
name: 2 Fast 4 You
description: "2 Fast 4 You is a FRENCH Private site for TV / MOVIES / GENERAL"
language: fr-FR
type: private
encoding: UTF-8
links:
- https://2f4y.me/
legacylinks:
- http://www.2f4y.me/
- https://www.2f4y.me/
caps:
categorymappings:
- {id: 10, cat: TV/Anime, desc: "Animation: HD720P"}
- {id: 11, cat: TV/Anime, desc: "Animation: HD1080P"}
- {id: 56, cat: TV/Anime, desc: "Animation: DVDRip"}
- {id: 18, cat: PC/0day, desc: "Applications: PC"}
- {id: 16, cat: PC/Games, desc: "Applications: Jeux"}
- {id: 19, cat: PC/Mobile-Android, desc: "Applications: Android"}
- {id: 17, cat: PC/0day, desc: "Applications: Autres"}
- {id: 67, cat: TV, desc: "Autres: Emission TV"}
- {id: 68, cat: TV/Sport, desc: "Autres: Sport"}
- {id: 40, cat: Other, desc: "Autres: Autres"}
- {id: 14, cat: TV/Documentary, desc: "Documentaires: DivX"}
- {id: 15, cat: TV/Documentary, desc: "Documentaires: HD"}
- {id: 76, cat: TV/Documentary, desc: "Documentaires: TVRip"}
- {id: 62, cat: Audio/Audiobook, desc: "E-Books: E-Books Audio"}
- {id: 50, cat: Books, desc: "E-Books: Manuel Français"}
- {id: 49, cat: Books, desc: "E-Books: Manuel Anglais"}
- {id: 36, cat: Books, desc: "E-Books: Livres Français"}
- {id: 53, cat: Books, desc: "E-Books: Livre Anglais"}
- {id: 52, cat: Books, desc: "E-Books: Revue - Journaux"}
- {id: 51, cat: Books, desc: "E-Books: BD"}
- {id: 95, cat: Movies, desc: "Films: Film Divx XviD"}
- {id: 66, cat: Movies, desc: "Films: VOSTFR"}
- {id: 71, cat: Movies/WEB-DL, desc: "Films: WEB-DL"}
- {id: 65, cat: Movies, desc: "Films: VO"}
- {id: 72, cat: Movies/SD, desc: "Films: TVRip/HDTV"}
- {id: 70, cat: Movies/HD, desc: "Films: MHD X265"}
- {id: 57, cat: Movies/SD, desc: "Films: TS/CAM"}
- {id: 59, cat: Movies, desc: "Films: Spectacle"}
- {id: 55, cat: Movies/HD, desc: "Films: MHD 720P"}
- {id: 54, cat: Movies/HD, desc: "Films: MHD 1080P"}
- {id: 1, cat: Movies/HD, desc: "Films: HD720P"}
- {id: 2, cat: Movies/HD, desc: "Films: HD1080P"}
- {id: 90, cat: Movies/HD, desc: "Films: HD X265"}
- {id: 92, cat: Movies/HD, desc: "Films: 4K"}
- {id: 69, cat: Movies/3D, desc: "Films: Film 3D"}
- {id: 3, cat: Movies/DVD, desc: "Films: DVDRIP"}
- {id: 5, cat: Movies/DVD, desc: "Films: DVD9"}
- {id: 91, cat: Movies/HD, desc: "Films: RemuX"}
- {id: 89, cat: Movies/HD, desc: "Films: BD/BR Rip"}
- {id: 88, cat: Movies/BluRay, desc: "Films: Full BD/BR"}
- {id: 97, cat: Movies, desc: "Films: Cours Métrage"}
- {id: 79, cat: TV/Anime, desc: "Mangas: HD"}
- {id: 81, cat: TV/Anime, desc: "Mangas: HD VOSTFR"}
- {id: 85, cat: TV/Anime, desc: "Mangas: Web-DL"}
- {id: 86, cat: TV/Anime, desc: "Mangas: TV-RIP"}
- {id: 75, cat: Audio, desc: "Musique: Concert TVRip"}
- {id: 25, cat: Audio/MP3, desc: "Musique: Single MP3"}
- {id: 24, cat: Audio/Lossless, desc: "Musique: Single Flac"}
- {id: 22, cat: Audio/MP3, desc: "Musique: Album MP3"}
- {id: 23, cat: Audio/Lossless, desc: "Musique: Album Flac"}
- {id: 64, cat: Audio, desc: "Musique: Mégamix Maison"}
- {id: 96, cat: Audio/MP3, desc: "Musique: PlayList MP3"}
- {id: 94, cat: Audio, desc: "Musique: Podcast"}
- {id: 58, cat: Audio, desc: "Musique: Concert"}
- {id: 93, cat: TV, desc: "Serie TV: Saison VOSTFR"}
- {id: 61, cat: TV, desc: "Serie TV: Episode VOSTFR"}
- {id: 63, cat: TV, desc: "Serie TV: Episode VO"}
- {id: 12, cat: TV/Anime, desc: "Serie TV: Animation"}
- {id: 74, cat: TV, desc: "Serie TV: TVRip"}
- {id: 73, cat: TV/WEB-DL, desc: "Serie TV: WEB-DL"}
- {id: 7, cat: TV, desc: "Serie TV: Episode FR"}
- {id: 6, cat: TV, desc: "Serie TV: Saison FR"}
- {id: 98, cat: TV/Anime, desc: "Serie TV: Manga VOSTFR"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: multilang
type: checkbox
label: Replace MULTi by another language in release name
default: false
- name: multilanguage
type: select
label: Replace MULTi by this language
default: FRENCH
options:
FRENCH: FRENCH
MULTi FRENCH: MULTi FRENCH
ENGLISH: ENGLISH
MULTi ENGLISH: MULTi ENGLISH
VOSTFR: VOSTFR
MULTi VOSTFR: MULTi VOSTFR
- name: vostfr
type: checkbox
label: Replace VOSTFR and SUBFRENCH with ENGLISH
default: false
- name: sort
type: select
label: Sort requested from site
default: id
options:
id: created
seeders: seeders
size: size
name: title
- name: order
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: account-login.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: form:contains("Erreur")
message:
selector: form
remove: table
test:
path: torrents-search.php
selector: a[href="account-logout.php"]
search:
paths:
- path: torrents-search.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active, 1 incldead, 2 onlydead
incldead: 1
# 0 all, 1 notfree, 2 onlyfree
freeleech: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 any, 1 French, 2 English, 3 Multi, 4-8 32-41
lang: 0
sort: "{{ .Config.sort}}"
order: "{{ .Config.order}}"
keywordsfilters:
- name: re_replace
args: ["^$", "%"] # replace empty search string with %
rows:
selector: table.ttable_headinner > tbody > tr[class^="t-row"]
fields:
category:
selector: a[href^="torrents.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_phase1:
selector: a[href^="torrents-details.php?id="]
filters:
- name: replace
args: [" - (Nouveau!)", ""]
title_vostfr:
text: "{{ .Result.title_phase1 }}"
filters:
- name: re_replace
args: ["(?i)\\b(vostfr|subfrench)\\b", "ENGLISH"]
title_phase2:
text: "{{ if .Config.vostfr }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_phase1 }}{{ end }}"
title_multilang:
text: "{{ .Result.title_phase2 }}"
filters:
- name: re_replace
args: ["(?i)\\b(MULTI(?!.*(?:FRENCH|ENGLISH|VOSTFR)))\\b", "{{ .Config.multilanguage }}"]
title:
text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase2 }}{{ end }}"
details:
selector: a[href^="torrents-details.php?id="]
attribute: href
download:
selector: a[href^="torrents-details.php?id="]
attribute: href
filters:
- name: replace
args: ["torrents-details.php", "download.php"]
poster:
selector: img.rounded-img
attribute: src
size:
selector: td:nth-child(5)
grabs:
selector: td:nth-child(6)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
date:
text: now
downloadvolumefactor:
case:
img[title="freeleech"]: 0
"*": 1
uploadvolumefactor:
case:
"*": 1
minimumratio:
text: 0.75
# engine n/a
@@ -0,0 +1,188 @@
---
id: 3changtrai
name: 3ChangTrai
description: "3ChangTrai (3CT) is a VIETNAMESE Private Torrent Tracker for HD MOVIES / TV / GENERAL"
language: vi-VN
type: private
encoding: UTF-8
links:
- https://3changtrai.com/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies"}
- {id: 402, cat: TV, desc: "TV Series"}
- {id: 403, cat: TV, desc: "TV Shows"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries"}
- {id: 405, cat: TV/Anime, desc: "Animations"}
- {id: 406, cat: Audio/Video, desc: "Music Videos"}
- {id: 407, cat: TV/Sport, desc: "Sports"}
- {id: 408, cat: Audio, desc: "HQ Audio"}
- {id: 410, cat: PC, desc: "Software"}
- {id: 411, cat: Books, desc: "Documents"}
- {id: 412, cat: PC/Games, desc: "Games"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_flaresolverr
type: info_flaresolverr
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Cherish your account. Inactive accounts will be deleted based on the following provisions:<ol><li>Nexus Master or later will not be deleted account.</li><li>Veteran User or higher will not be deleted if temporarily locked (at User Settings).</li><li>Temporarily locked accounts will be deleted if not logged in within 90 days.</li><li>Accounts that are not temporarily locked will be deleted if they do not log in within 60 days.</li><li>Accounts with no storage for uploads and downloads will be deleted if they do not log in within 30 days or have registered within 14 days.</li></ol>"
login:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:has(h2:contains("Đăng nhập thất bại!")) # Login failed!
- selector: td.embedded:has(h2:contains("Thất bại")) # Failure (captcha)
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
# 0 incldead, 1 active, 2 dead
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl
search_area: "{{ if .Query.IMDBID }}4{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title:
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:
selector: a[href*="imdb.com/title/tt"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(5) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +07:00" # ICT
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(5):not(:has(span))
optional: true
filters:
- name: append
args: " +07:00" # ICT
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(6)
seeders:
selector: td.rowfollow:nth-child(7)
leechers:
selector: td.rowfollow:nth-child(8)
grabs:
selector: td.rowfollow:nth-child(9)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
description:
selector: td:nth-child(3)
remove: a, b, font, img, span
# NexusPHP 3ChangTrai v3.0 2020-04-30
@@ -0,0 +1,164 @@
---
id: 3dtorrents
name: 3D Torrents
description: "3D Torrents (3DT) is a Private Torrent Tracker for 3D HD / BLURAY MOVIES"
language: en-US
type: private
encoding: UTF-8
links:
- http://www.3dtorrents.org/ # site does not support https ERR_CONNECTION_CLOSED
caps:
categorymappings:
- {id: 14, cat: Movies/SD, desc: "Movies XviD"}
- {id: 15, cat: Movies/DVD, desc: "Movies DVD-R"}
- {id: 11, cat: Movies/HD, desc: "Movies 720p"}
- {id: 13, cat: Movies/HD, desc: "Movies 1080p"}
- {id: 16, cat: Movies/3D, desc: "Movies 3DTV"}
- {id: 17, cat: Movies/BluRay, desc: "Movies Blu-ray"}
- {id: 27, cat: Movies/BluRay, desc: "Movies BD25 Encode"}
- {id: 33, cat: Movies/BluRay, desc: "Movies BD9 AVCHD"}
- {id: 22, cat: Movies, desc: "Movies 2D to 3D Conv"}
- {id: 32, cat: Movies, desc: "Bluray MKV Remux"}
- {id: 23, cat: Movies/3D, desc: "Movies Evo 3D"}
- {id: 36, cat: Movies/UHD, desc: "Movies 4K UHD Bluray"}
- {id: 37, cat: Movies/UHD, desc: "Movies 4K UHD Encode"}
- {id: 21, cat: PC, desc: "3D Software"}
- {id: 28, cat: XXX, desc: "Adult 720p"}
- {id: 29, cat: XXX, desc: "Adult 1080p"}
- {id: 30, cat: XXX, desc: "Adult Blu-ray"}
- {id: 31, cat: Other, desc: "Misc"}
- {id: 19, cat: Audio, desc: "Audio Packs"}
modes:
search: [q]
movie-search: [q]
music-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Filter freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 3
options:
3: created
5: seeders
2: title
- name: type
type: select
label: Order requested from site
default: 2
options:
1: desc
2: asc
- name: info
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Inactivity grace period is three months which means that if you do not log in to the 3Dtorrents web site for 90 days, your account will be deleted. If you are VIP your will stay until the VIP period is over."
login:
path: index.php?page=login
method: form
form: form
inputs:
uid: "{{ .Config.username }}"
pwd: "{{ .Config.password }}"
captcha:
type: image
selector: img.captcha
input: private_key
error:
- selector: span.errormsg
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: index.php
inputs:
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
search: "{{ .Keywords }}"
page: torrents
category: 0
# 0 all, 1 Anaglyph 3D, 2 Side by Side,3 Over Under
3dformat: 0
# 0 all, 1 active only, 2 dead only
active: 0
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"
rows:
selector: "table[cellspacing!=\"1\"].lista > tbody > tr:has(a[href^=\"index.php?page=torrents&category=\"]){{ if .Config.freeleech }}:has(img[src=\"images/sign_free.png\"]){{ else }}{{ end }}"
fields:
category:
selector: a[href^="index.php?page=torrents&category="]
attribute: href
filters:
- name: querystring
args: category
- name: re_replace
args: ["(\\b0\\b)", "31"]
title:
selector: a[href^="index.php?page=torrent-details&id="]
details:
selector: a[href^="index.php?page=torrent-details&id="]
attribute: href
download:
selector: a[href^="index.php?page=torrent-details&id="]
attribute: href
filters:
- name: replace
args: ["index.php?page=torrent-details&id=", "download.php?id="]
poster:
selector: a[href^="index.php?page=torrent-details&id="]
attribute: onmouseover
filters:
- name: regexp
args: ",\\'(.+?)\\'"
genre:
selector: td:nth-child(2) span
description:
text: "{{ .Result.genre }}"
date:
selector: td:nth-last-child(5)
filters:
- name: append
args: " -07:00" # PDT
- name: dateparse
args: "dd/MM/yyyy zzz"
size:
selector: td:nth-last-child(4)
seeders:
selector: a[href^="index.php?page=peers"]
leechers:
selector: td:has(a[href^="index.php?page=peers"]) + td
grabs:
selector: a[href^="index.php?page=torrent_history"]
optional: true
default: 0
downloadvolumefactor:
case:
img[src="images/sign_free.png"]: 0
img[src="images/50off.png"]: 0.5
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
# xbtit
+149
View File
@@ -0,0 +1,149 @@
---
id: 4thd
name: 4thD
description: "4th Dimension is a Private Torrent Tracker for MOVIES / TV / GENERAL"
language: en-US
encoding: UTF-8
type: private
links:
- https://4thd.xyz/
caps:
categorymappings:
- {id: 38, cat: Movies, desc: "Movie Pack"}
- {id: 36, cat: Movies, desc: "Movies/Classic Films"}
- {id: 13, cat: Movies, desc: "Movies/Documentary"}
- {id: 21, cat: Movies/Foreign, desc: "Movies/Foreign"}
- {id: 27, cat: Movies/HD, desc: "MoviesHD"}
- {id: 29, cat: Movies/SD, desc: "Movies/SD"}
- {id: 26, cat: Movies/SD, desc: "Movies/XviD"}
- {id: 45, cat: Movies, desc: "Movies/Kids"}
- {id: 41, cat: TV/Foreign, desc: "Foreign tv"}
- {id: 40, cat: TV, desc: "Mini-Series"}
- {id: 43, cat: TV/HD, desc: "TV H265"}
- {id: 42, cat: TV, desc: "TV Movie"}
- {id: 4, cat: TV/HD, desc: "TV/HD-x720"}
- {id: 14, cat: TV, desc: "TV/Packs"}
- {id: 2, cat: TV/SD, desc: "TV/SD MP4/mkv"}
- {id: 31, cat: TV/SD, desc: "TV/XviD"}
- {id: 18, cat: PC/Games, desc: "Games/PC"}
- {id: 44, cat: Audio, desc: "Music/Pack"}
- {id: 12, cat: Audio/Lossless, desc: "Music/FLAC"}
- {id: 15, cat: Audio/MP3, desc: "Music/MP3"}
- {id: 37, cat: Audio, desc: "Radio"}
- {id: 9, cat: PC/0day, desc: "Apps/PC"}
- {id: 34, cat: Audio/Audiobook, desc: "Audiobooks"}
- {id: 25, cat: Books/EBook, desc: "eBooks"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: time
options:
time: created
seeders: seeders
size: size
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: login.php
method: form
form: form#loginform
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
keeplogged: 1
error:
- selector: form#loginform .warning
test:
path: index.php
selector: a[href^="logout.php?auth="]
search:
paths:
# https://4thd.xyz/torrents.php?order_by=time&order_way=desc&filter_freeleech=1&title=twilight+zone&search_type=1&taglist=&tags_type=0
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
order_by: "{{ .Config.sort }}"
order_way: "{{ .Config.type }}"
# 0 all, 1 onlyfree
filter_freeleech: "{{ if .Config.freeleech }}1{{ else }}0{{ end }}"
title: "{{ .Keywords }}"
search_type: 1
taglist: ""
tags_type: 0
rows:
selector: table#torrent_table > tbody > tr.torrent:has(a[href^="torrents.php?action=download&id="])
fields:
category:
selector: td.cats_col div a
attribute: href
filters:
- name: regexp
args: \[(\d+)\]
title:
selector: a[href^="torrents.php?id="]
details:
selector: a[href^="torrents.php?id="]
attribute: href
download:
selector: a[href^="torrents.php?action=download&id="]
attribute: href
description:
selector: div.tags
poster:
selector: td:nth-child(2) script
filters:
- name: regexp
args: "src=(.*?)>"
- name: re_replace
args: ["\\\\", ""]
files:
selector: td:nth-child(3)
date:
selector: td:nth-child(5)
filters:
- name: replace
args: ["Never", "99 years ago"]
size:
selector: td:nth-child(6)
grabs:
selector: td:nth-child(7)
seeders:
selector: td:nth-child(8)
leechers:
selector: td:nth-child(9)
downloadvolumefactor:
case:
img[src$="/freedownload.gif"]: 0
"*": 1
uploadvolumefactor:
text: 1
# Engine n/a
+103
View File
@@ -0,0 +1,103 @@
---
id: 52bt
name: 52BT
description: "52BT is a CHINESE Public tracker for TV / MOVIES / MUSIC / GENERAL"
language: zh-CN
type: public
encoding: UTF-8
links:
# Send any content to 52btbtbt@gmail.com to get the latest address. or visit https://521.52btbt.cyou/
- https://www.529053.xyz/
- https://www.529055.xyz/
legacylinks:
- https://529050.xyz/
- https://529048.xyz/
- https://529049.xyz/
- https://www.529052.xyz/
caps:
categorymappings:
- {id: 影视, cat: TV, desc: 影视}
- {id: 影视, cat: Movies, desc: 影视}
- {id: 音乐, cat: Audio, desc: 音乐}
- {id: 图像, cat: Other, desc: 图像}
- {id: 文档书籍, cat: Books, desc: 文档书籍}
- {id: 压缩文件, cat: Other, desc: 压缩文件}
- {id: 安装包, cat: PC, desc: 安装包}
- {id: 其他, cat: Other, desc: 其他}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: cat-id
type: select
label: Category
default: 0
options:
0: All categories
1: Film and Television
2: Music
3: Images
4: Books
5: Zip Files
6: Software
7: Other
- name: sort
type: select
label: Sort requested from site
default: 2
options:
2: created
1: size
0: relevance
- name: info_flaresolverr
type: info_flaresolverr
search:
paths:
- path: "search-{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}-{{ .Config.cat-id }}-{{ .Config.sort }}-1.html"
error:
- selector: :root:contains("Internal Server Error")
rows:
selector: div.ssbox
fields:
categorydesc:
selector: div.title > h3 > span
filters:
- name: re_replace
args: ["([\\[\\]]+)", ""]
title:
selector: a[href^="/hash/"]
details:
selector: a[href^="/hash/"]
attribute: href
magnet:
selector: a[href^="magnet:?xt="]
attribute: href
date:
selector: div.sbar > span:contains("添加时间:")
filters:
- name: replace
args: ["添加时间:", ""]
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd zzz"
size:
selector: div.sbar > span:contains("大小:")
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a
+183
View File
@@ -0,0 +1,183 @@
---
id: 52pt
name: 52PT
description: "52PT is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://52pt.site/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
- {id: 402, cat: TV, desc: "TV Series/剧集"}
- {id: 403, cat: TV, desc: "TV Shows/综艺"}
- {id: 406, cat: Audio/Video, desc: "MusicVideo/音乐MV"}
- {id: 407, cat: TV/Sport, desc: "Sports/运体"}
- {id: 409, cat: Other, desc: "Misc/其他"}
- {id: 410, cat: Other, desc: "Opera/戏曲 曲艺"}
- {id: 408, cat: Audio, desc: "HQ Audio/无损音乐"}
- {id: 411, cat: XXX, desc: "Erotic/情色"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
music-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Account retention rules:<ol><li>Veteran User (junior college) and above will be retained forever</li><li>Elite User (junior high school) and above will not be deleted after parking (in the control panel)</li><li>Users with a parked account who do not log in for 400 consecutive days will be deleted</li><li>Users with non-parked account will be deleted if they do not log in for 150 consecutive days</li><li>Users with no traffic (that is, upload/download data are both 0) will be deleted if they do not log in for 15 consecutive days, or if the registration time reaches 60 days.</li></ol>"
login:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs:
secret: ""
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:has(h2:contains("失败"))
test:
path: index.php
selector: a[href="usercp.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
# currently supports only one query id at one time.
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }} {{ else }}{{ .Keywords }}{{ end }}{{ if .Query.DoubanID }}{{ .Query.DoubanID }}{{ else }}{{ end }}"
# 0 incldead, 1 active, 2 dead
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl
search_area: "{{ if .Query.IMDBID }}4{{ else }}{{ end }}{{ if .Query.DoubanID }}1{{ else }}{{ end }}{{ if or .Query.IMDBID .Query.DoubanID }}{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
# does not return imdb or doubanid in results
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title:
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
date_elapsed:
# time type: time elapsed (default)
selector: td:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 1
minimumseedtime:
# 1 day (as seconds = 24 x 60 x 60)
text: 86400
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP Standard v1.5 Beta 4
@@ -0,0 +1,240 @@
---
id: Bittorrentfiles
name: Bittorrentfiles
description: "Bittorrentfiles is a Private GERMAN tracker"
language: de-DE
type: private
encoding: UTF-8
links:
- https://bittorrentfiles.me/
legacylinks:
- https://www.Bittorrentfiles.me/
caps:
categorymappings:
# Movie
- {id: 48, cat: Movies/HD, desc: "Movie 1080p"}
- {id: 31, cat: Movies/3D, desc: "Movie 3D"}
- {id: 21, cat: Movies/HD, desc: "Movie 720p"}
- {id: 28, cat: Movies/SD, desc: "Movie AVI"}
- {id: 20, cat: Movies/DVD, desc: "Movie DVD-R"}
- {id: 40, cat: Movies/HD, desc: Movie "h264/x264"}
- {id: 30, cat: Movies/HD, desc: "Movie HD/BD"}
- {id: 49, cat: Movies/Foreign, desc: "Movie International"}
- {id: 78, cat: Movies/UHD, desc: "Movie UHD"}
- {id: 85, cat: Movies/HD, desc: "Movie x265"}
# Serien
- {id: 79, cat: TV/HD, desc: "Staffeln HD"}
- {id: 56, cat: TV/SD, desc: "Staffeln SD"}
- {id: 88, cat: TV/UHD, desc: "Staffeln UHD"}
- {id: 86, cat: TV/UHD, desc: "Folgen UHD"}
- {id: 54, cat: TV/HD, desc: "Folgen HD"}
- {id: 80, cat: TV/HD, desc: "Folgen HD/BD"}
- {id: 7, cat: TV/SD, desc: "Folgen SD"}
- {id: 55, cat: TV/Foreign, desc: "Folgen International"}
# Doku
- {id: 91, cat: TV/Documentary, desc: "Doku UHD"}
- {id: 64, cat: TV/Documentary, desc: "Doku HD"}
- {id: 36, cat: TV/Documentary, desc: "Doku SD"}
- {id: 81, cat: TV/Documentary, desc: "Doku 3D"}
- {id: 82, cat: TV/Documentary, desc: "Doku Packs"}
# Spiele
- {id: 4, cat: PC/Games, desc: "Spiele Windows"}
- {id: 92, cat: PC/Mac, desc: "Spiele Mac"}
- {id: 93, cat: PC, desc: "Spiele Linux"}
- {id: 97, cat: Console/XBox, desc: "Spiele XBOX"}
- {id: 94, cat: PC/Mobile-Other, desc: "Spiele Mobile"}
- {id: 95, cat: Console/NDS, desc: "Spiele Nintendo"}
- {id: 96, cat: Console/PSP, desc: "Spiele Playstation"}
- {id: 42, cat: Console/Other, desc: "Spiele Andere"}
# Musik
- {id: 66, cat: Audio, desc: "Musik Alben"}
- {id: 75, cat: Audio, desc: "Musik Singles"}
- {id: 50, cat: Audio, desc: "Musik Charts"}
- {id: 52, cat: Audio, desc: "Musik Packs"}
- {id: 53, cat: Audio/Video, desc: "Musik Video"}
- {id: 61, cat: Audio/Video, desc: "Musik DVD-R"}
- {id: 83, cat: Audio/Lossless, desc: "Musik Flac"}
- {id: 68, cat: Audio, desc: "Musik Live"}
- {id: 6, cat: Audio, desc: "Musik Misc"}
- {id: 51, cat: Audio, desc: "Musik OST"}
- {id: 67, cat: Audio, desc: "Musik Sampler"}
# App
- {id: 98, cat: PC/0day, desc: "App Windows"}
- {id: 62, cat: PC/Mac, desc: "App Mac OS"}
- {id: 63, cat: PC/0day, desc: "App Linux"}
- {id: 34, cat: PC, desc: "App Andere"}
# Sport
- {id: 74, cat: TV/Sport, desc: "Sport HD"}
- {id: 39, cat: TV/Sport, desc: "Sport SD"}
# Sonstiges
- {id: 41, cat: Audio/Audiobook, desc: "Sonstiges A-Book"}
- {id: 33, cat: TV/Anime, desc: "Sonstiges Anime"}
- {id: 35, cat: Books/EBook, desc: "Sonstiges e-Book-DE"}
- {id: 90, cat: Books/EBook, desc: "Sonstiges e-Book-INT"}
- {id: 65, cat: Other, desc: "Sonstiges E-Learning"}
- {id: 37, cat: PC, desc: "Sonstiges Mobile"}
- {id: 87, cat: Books/Mags, desc: "Sonstiges E-Paper"}
- {id: 38, cat: Other, desc: "Sonstiges Kids"}
- {id: 47, cat: Other, desc: "Sonstiges Line"}
- {id: 9, cat: Other, desc: "Sonstiges Andere"}
# XXX
- {id: 58, cat: XXX/x264, desc: "XXX HD"}
- {id: 46, cat: XXX, desc: "XXX Hentai"}
- {id: 59, cat: XXX/Pack, desc: "XXX Pack"}
- {id: 27, cat: XXX/SD, desc: "XXX SD"}
- {id: 76, cat: XXX, desc: "XXX Andere"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
book-search: [q]
settings:
- name: user
type: text
label: Username
- name: pass
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: added
options:
added: created
seeds: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_account
type: info
label: Account Settings
default: In order to see the correct date and size in the torrent rows, change the <b>Torrentliste:</b> setting to <b>Modern</b> on your account profile.
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Inactive accounts of users, power users and mega users will be permanently deleted from the database after 125 days! Torrents in your share don't count as activity - only logging in again counts! You can extend this period to 250 days by setting your account to parking. You can find the option to do this under Edit Profile."
login:
path: signin.php
method: post
inputs:
user: "{{ .Config.user }}"
pass: "{{ .Config.pass }}"
returnto: "%2Fbrowse.php"
error:
- selector: .error
test:
path: index.php
selector: a[href^="/logout.php?c="]
search:
path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
# 0=title, 1=descr, 2=nfo, 3=all, 4=imdb
search_where: "{{ if .Query.IMDBID }}3{{ else }}0{{ end }}"
# 0=active, 1=all, 2=onlydead, 4=only upload, 5=doubleup, 6=halfdown, 7=highlight, 8=request
status: "{{ if .Config.freeleech }}4{{ else }}1{{ end }}"
orderby: "{{ .Config.sort }}"
sort: "{{ .Config.type }}"
rows:
selector: table.tableinborder > tbody > tr:has(a[href^="/download.php"])
fields:
category:
selector: a[href^="/browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php"]
attribute: title
details:
selector: a[href^="details.php"]
attribute: href
download:
selector: a[href^="/download.php"]
attribute: href
grabs:
selector: a[title="Snatcher"]
optional: true
default: 0
files:
selector: a[title="Files"]
optional: true
default: 0
size:
selector: td:nth-child(6)
seeders:
selector: a[title="Seeder"]
optional: true
default: 0
leechers:
selector: a[title="Leecher"]
optional: true
default: 0
# 2 flavours of dates
date_day:
# Heute 13:30:04
# Gestern 09:10:10
selector: td:nth-child(10):contains("Heute"), td:nth-child(10):contains("Gestern")
optional: true
filters:
- name: split
args: ["b", 0]
- name: replace
args: ["Heute", "Today"]
- name: replace
args: ["Gestern", "Yesterday"]
- name: append
args: "+01:00" # CET
date_year:
# 30.02.2018 23:12:50
selector: td:nth-child(10):contains("."):contains(":")
optional: true
filters:
- name: split
args: ["b", 0]
- name: append
args: "+01:00" # CET
- name: dateparse
args: "dd.MM.yyyy HH:mm:ss zzz"
date:
text: "{{ if or .Result.date_year .Result.date_day }}{{ or .Result.date_year .Result.date_day }}{{ else }}now{{ end }}"
downloadvolumefactor:
case:
img[alt="OU"]: 0
img[alt="D/2"]: 0.5
img[alt="D / 2"]: 0.5
"*": 1
uploadvolumefactor:
case:
img[alt="2xU"]: 2
"*": 1
minimumratio:
text: 0.8
minimumseedtime:
# 60 hours (as seconds = 60 x 60 x 60)
text: 216000
# engine n/a
@@ -0,0 +1,177 @@
---
id: abnormal
name: Abnormal
description: "General French Private Tracker"
language: fr-FR
type: private
encoding: UTF-8
requestDelay: 2.1
links:
- https://abn.lol/
legacylinks:
- https://abnormal.ws
caps:
categorymappings:
- {id: 1, cat: TV, desc: "Series"}
- {id: 2, cat: Movies, desc: "Movies"}
- {id: 3, cat: TV/Documentary, desc: "Documentaries"}
- {id: 4, cat: TV/Anime, desc: "Anime"}
- {id: 5, cat: PC/Games, desc: "Games"}
- {id: 6, cat: PC, desc: "Applications"}
- {id: 7, cat: Books/EBook, desc: "Ebooks"}
- {id: 9, cat: TV, desc: "Emissions"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: 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: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: Created
options:
Created: created
Seeders: seeders
Size: size
ReleaseName: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_activity
type: info
label: Account Inactivity
default: "Accounts are automatically deactivated after 4 months of inactivity (no connection to the site)."
login:
method: form
path: Home/Login
form: "#account"
inputs:
Username: "{{ .Config.username }}"
Password: "{{ .Config.password }}"
RememberMe: true
selectorinputs:
__RequestVerificationToken:
selector: input[name="__RequestVerificationToken"]
attribute: value
error:
- selector: div.validation-summary-errors[data-valmsg-summary="true"]
message:
text: " - Bad username/password."
test:
path: /
selector: form#logoutForm
search:
paths:
- path: Torrent
inputs:
$raw: "{{ range .Categories }}SelectedCats={{.}}&{{end}}"
Search: "{{ .Keywords }}"
UserId: ""
YearOperator:
Year: ""
RatingOperator:
Rating: ""
Pending: ""
Pack: ""
Scene: ""
Freeleech: "{{ if .Config.freeleech }}true{{ else }}{{ end }}"
SortOn: "{{ .Config.sort }}"
SortOrder: "{{ .Config.type }}"
rows:
selector: table.table-rows > tbody > tr:has(a[href^="/Torrent/Download?ReleaseId="])
fields:
category:
selector: a[href^="/Torrent?SelectedCats="]
attribute: href
filters:
- name: querystring
args: SelectedCats
title_phase1:
selector: td.grid-release-column > a
title_vostfr:
text: "{{ .Result.title_phase1 }}"
filters:
- name: re_replace
args: ["(?i)\\b(vostfr|subfrench)\\b", "ENGLISH"]
title_phase2:
text: "{{ if .Config.vostfr }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_phase1 }}{{ end }}"
title_multilang:
text: "{{ .Result.title_phase2 }}"
filters:
- name: re_replace
args: ["(?i)\\b(MULTI(?!.*(?:FRENCH|ENGLISH|VOSTFR)))\\b", "{{ .Config.multilanguage }}"]
title:
text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase2 }}{{ end }}"
details:
selector: a[href^="/Torrent/Details?ReleaseId="]
attribute: href
download:
selector: a[href^="/Torrent/Download?ReleaseId="]
attribute: href
date:
text: now
size:
selector: td:nth-child(6)
filters:
- name: re_replace
args: [",", "."]
- name: replace
args: ["o", "B"]
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img[title="Freeleech"]: 0
"*": 1
uploadvolumefactor:
case:
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 4 days (as seconds = 4 x 24 x 60 x 60)
text: 345600
# Gazelle
@@ -0,0 +1,180 @@
---
id: abtorrents
replaces:
- audiobooktorrents
name: ABtorrents
description: "ABtorrents (ABT) is a Private Torrent Tracker for AUDIOBOOKS"
language: en-US
type: private
encoding: UTF-8
links:
- https://abtorrents.me/
caps:
categorymappings:
- {id: 10, cat: Audio/Audiobook, desc: "Action/Adventure"}
- {id: 20, cat: Audio/Audiobook, desc: "Biography/Memoirs"}
- {id: 30, cat: Audio/Audiobook, desc: "Business "}
- {id: 40, cat: Audio/Audiobook, desc: "Childrens"}
- {id: 50, cat: Audio/Audiobook, desc: "Humor (Comedy)"}
- {id: 60, cat: Audio/Audiobook, desc: "Comics"}
- {id: 70, cat: Audio/Audiobook, desc: "Computers "}
- {id: 80, cat: Audio/Audiobook, desc: "Adult/Erotica"}
- {id: 90, cat: Audio/Audiobook, desc: "Fantasy-General"}
- {id: 100, cat: Audio/Audiobook, desc: "Fantasy-Youth"}
- {id: 110, cat: Audio/Audiobook, desc: "Files"}
- {id: 120, cat: Audio/Audiobook, desc: "Foreign Language"}
- {id: 130, cat: Audio/Audiobook, desc: "General Fiction"}
- {id: 140, cat: Audio/Audiobook, desc: "Historical Fiction"}
- {id: 150, cat: Audio/Audiobook, desc: "History"}
- {id: 160, cat: Audio/Audiobook, desc: "Horror"}
- {id: 170, cat: Audio/Audiobook, desc: "Literature"}
- {id: 175, cat: Audio/Audiobook, desc: "LitRPG"}
- {id: 180, cat: Audio/Audiobook, desc: "Mystery "}
- {id: 190, cat: Audio/Audiobook, desc: "Non-Fiction"}
- {id: 200, cat: Audio/Audiobook, desc: "Radio Drama"}
- {id: 210, cat: Audio/Audiobook, desc: "Romance"}
- {id: 220, cat: Audio/Audiobook, desc: "Science"}
- {id: 230, cat: Audio/Audiobook, desc: "Science Fiction "}
- {id: 240, cat: Audio/Audiobook, desc: "Sci-Fi Apocalypse"}
- {id: 250, cat: Audio/Audiobook, desc: "Self Improvement"}
- {id: 270, cat: Audio/Audiobook, desc: "Suspense"}
- {id: 280, cat: Audio/Audiobook, desc: "Talk Radio"}
- {id: 260, cat: Audio/Audiobook, desc: "Crime/Thriller/Mystery"}
- {id: 290, cat: Audio/Audiobook, desc: "Urban Fantasy"}
- {id: 300, cat: Audio/Audiobook, desc: "Western"}
- {id: 400, cat: Books/EBook, desc: "[E] Action/Adventure"}
- {id: 410, cat: Books/EBook, desc: "[E] Adult / Erotica"}
- {id: 420, cat: Books/EBook, desc: "[E] Arts & Crafts (Hobbies)"}
- {id: 430, cat: Books/EBook, desc: "[E] Biography/Memoirs"}
- {id: 730, cat: Books/EBook, desc: "[E] Collections"}
- {id: 440, cat: Books/EBook, desc: "[E] Comic Books"}
- {id: 450, cat: Books/EBook, desc: "[E] Computer Learning"}
- {id: 460, cat: Books/EBook, desc: "[E] Cookery"}
- {id: 470, cat: Books/EBook, desc: "[E] Crime/Thriller/Mystery"}
- {id: 480, cat: Books/EBook, desc: "[E] Fantasy"}
- {id: 490, cat: Books/EBook, desc: "[E] Forteana"}
- {id: 500, cat: Books/EBook, desc: "[E] General Fiction"}
- {id: 510, cat: Books/EBook, desc: "[E] Historical Fiction"}
- {id: 520, cat: Books/EBook, desc: "[E] History/Documentary"}
- {id: 530, cat: Books/EBook, desc: "[E] Horror"}
- {id: 540, cat: Books/EBook, desc: "[E] Humor (Comedy)"}
- {id: 550, cat: Books/EBook, desc: "[E] LGBT"}
- {id: 560, cat: Books/EBook, desc: "[E] Literary Fiction"}
- {id: 565, cat: Books/EBook, desc: "[E] LitRPG"}
- {id: 570, cat: Books/EBook, desc: "[E] Magazines - all"}
- {id: 580, cat: Books/EBook, desc: "[E] Non-Fiction"}
- {id: 585, cat: Books/EBook, desc: "[E] Other Languages"}
- {id: 590, cat: Books/EBook, desc: "[E] Paranormal Romance"}
- {id: 600, cat: Books/EBook, desc: "[E] Reference/Educational"}
- {id: 610, cat: Books/EBook, desc: "[E] Religion and Spirituality"}
- {id: 620, cat: Books/EBook, desc: "[E] Romance"}
- {id: 630, cat: Books/EBook, desc: "[E] Sci-Fi"}
- {id: 640, cat: Books/EBook, desc: "[E] Sci-Fi/Apocalyptic"}
- {id: 650, cat: Books/EBook, desc: "[E] Self-Help"}
- {id: 660, cat: Books/EBook, desc: "[E] Sports/Fitness"}
- {id: 670, cat: Books/EBook, desc: "[E] Travel"}
- {id: 680, cat: Books/EBook, desc: "[E] Unsorted"}
- {id: 690, cat: Books/EBook, desc: "[E] Urban Fantasy/Paranormal"}
- {id: 700, cat: Books/EBook, desc: "[E] Western"}
- {id: 710, cat: Books/EBook, desc: "[E] Young Adult"}
- {id: 720, cat: Books/EBook, desc: "[E] Young Children"}
modes:
search: [q]
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: info_results
type: info
label: Search results
default: "If you are getting the error <b>Login Failed, got redirected</b> then access the site with your browser and <b>mark as read</b> all PMs."
- name: info_activity
type: info
label: Account Inactivity
default: "Account retention rules:<ol><li>Any account that has unread PMs older than 14 days or has not logged in for 30 days will be suspended</li><li>Any account that has not been logged into for 90 days is deemed inactive and will thus be purged</li><li>Any account that has not been logged into for 30 days is deemed inactive and will be put on suspension until User logs in again</li><li>Users stats, points, and history are irrevocably lost when purged</li><li>Logging into the site is the ONLY way to keep an account active</li><li>SEEDING ONLY does NOT constitute site activity.</li></ol>"
login:
method: cookie
test:
path: index.php
selector: a[href*="logout.php?hash_please="]
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# title, descr
searchin: title
# 0 active, 1 incldead, 2 onlydead
incldead: 1
# 1 onlyfree, null all
only_free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
rows:
selector: table.table-striped > tbody > tr:has(a[href^="download.php?torrent="])
fields: # some users (rank specific?) have an extra column (td:nth-child(4)) with bookmark features
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="]
remove: span
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?torrent="]
attribute: href
files:
selector: a[href^="filelist.php?id="]
date_day:
# auto adjusted by site account profile
# Yesterday 6:00 AM
selector: td:nth-last-child(2) > div:contains("day")
optional: true
filters:
- name: fuzzytime
date_year:
# auto adjusted by site account profile
# Aug 6 2021 7:25 PM
selector: td:nth-last-child(2) > div:not(:contains("day"))
optional: true
filters:
- name: dateparse
args: "MMM d yyyyh:mm tt"
date:
text: "{{ if or .Result.date_day .Result.date_year }}{{ or .Result.date_day .Result.date_year }}{{ else }}now{{ end }}"
size:
selector: td:nth-last-child(4) div:first-child
grabs:
selector: a[href^="snatches.php?id="]
seeders:
selector: td:nth-last-child(3) div:nth-last-child(2)
leechers:
selector: td:nth-last-child(3) div:last-child
downloadvolumefactor:
case:
tr.freeleech_color: 0
"*": 1
uploadvolumefactor:
text: 1
minimumseedtime:
# 14 days (as seconds = 14 x 24 x 60 x 60)
text: 1209600
# U-232 V4.5
@@ -0,0 +1,59 @@
---
id: acgrip
name: ACG.RIP
description: "ACG.RIP is a CHINESE Public torrent tracker for the latest anime and Japanese related torrents"
language: zh-CN
type: public
followredirect: true
encoding: UTF-8
links:
- https://acg.rip/
caps:
categories:
1: TV
modes:
search: [q]
tv-search: [q, season, ep]
settings: []
search:
paths:
- path: /
inputs:
term: "{{ .Keywords }}"
rows:
selector: tbody tr
fields:
title:
selector: td.title > span.title a
category:
text: 1
details:
selector: td.title > span.title a
attribute: href
download:
selector: td.action a
attribute: href
size:
selector: td.size
seeders:
selector: td.peers div.seed
leechers:
selector: td.peers div.leech
grabs:
selector: td.peers div.done
date:
selector: td.date time
attribute: datetime
filters:
- name: fuzzytime
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a
@@ -0,0 +1,188 @@
---
id: acidlounge
name: Acid-Lounge
description: "Acid Lounge (A-L) is a Private Torrent Tracker for 0DAY / GENERAL"
language: en-US
type: private
encoding: UTF-8
links:
- https://www.acid-lounge.org.uk/
caps:
categorymappings:
- {id: 79, cat: PC/Mobile-Android, desc: "Android"}
- {id: 61, cat: TV/Anime, desc: "Anime"}
- {id: 55, cat: PC/0day, desc: "Appz/0-Day"}
- {id: 59, cat: PC/Mac, desc: "Appz/Mac"}
- {id: 22, cat: PC, desc: "Appz/Misc"}
- {id: 32, cat: PC, desc: "Appz/PC"}
- {id: 48, cat: Audio/Audiobook, desc: "Audio/Books"}
- {id: 84, cat: Other, desc: "Damaged Torrent"}
- {id: 14, cat: Books/EBook, desc: "eBooks"}
- {id: 82, cat: Books/Comics, desc: "eBooks/Comics"}
- {id: 81, cat: Books/Mags, desc: "eBooks/Mags"}
- {id: 60, cat: PC/Mac, desc: "Games/Mac"}
- {id: 54, cat: Console/NDS, desc: "Games/NDS"}
- {id: 4, cat: PC/Games, desc: "Games/PC"}
- {id: 42, cat: Console/PS3, desc: "Games/PS3"}
- {id: 56, cat: Console/Wii, desc: "Games/Wii"}
- {id: 36, cat: Console/XBox 360, desc: "Games/xbox360"}
- {id: 69, cat: Other, desc: "Halloween"}
- {id: 80, cat: PC/Mobile-iOS, desc: "iPhone / iPad"}
- {id: 46, cat: Other, desc: "Kids"}
- {id: 63, cat: PC, desc: "Linux"}
- {id: 49, cat: Other, desc: "Misc"}
- {id: 77, cat: Movies/3D, desc: "Movies/3D BLURAY"}
- {id: 73, cat: Movies/HD, desc: "Movies/Boxsets HD"}
- {id: 74, cat: Movies/SD, desc: "Movies/Boxsets SD"}
- {id: 25, cat: Movies/DVD, desc: "Movies/DVD-R"}
- {id: 51, cat: Movies/HD, desc: "Movies/HD"}
- {id: 26, cat: Movies, desc: "Movies/Retro"}
- {id: 29, cat: Movies/SD, desc: "Movies/SD"}
- {id: 52, cat: Movies/SD, desc: "Movies/WMV"}
- {id: 85, cat: Movies/HD, desc: "Movies/X265"}
- {id: 66, cat: Audio/Lossless, desc: "Music/Flac"}
- {id: 35, cat: Audio/MP3, desc: "Music/MP3"}
- {id: 31, cat: Audio/Video, desc: "Music/Videos"}
- {id: 72, cat: Movies, desc: "Sci-Fi"}
- {id: 83, cat: Movies, desc: "Tribute Packs"}
- {id: 30, cat: TV, desc: "TV"}
- {id: 50, cat: TV/HD, desc: "TV-HD/X264"}
- {id: 71, cat: TV/SD, desc: "TV-SD/X264"}
- {id: 75, cat: TV/HD, desc: "TV/Boxsets HD"}
- {id: 76, cat: TV/SD, desc: "TV/Boxsets SD"}
- {id: 37, cat: XXX, desc: "XXX"}
- {id: 68, cat: XXX, desc: "XXX/0-Day"}
- {id: 78, cat: XXX, desc: "XXX/3D"}
- {id: 67, cat: XXX/ImageSet, desc: "XXX/Imagesets"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: dateAdded
options:
dateAdded: 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 nothing uploaded/ downloaded will be disabled after 4 weeks."
login:
path: Main/?act=Login
method: form
form: form#login
captcha:
type: image
selector: img[alt="Security code"]
input: code
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: div.errorWrap
test:
path: index.php
selector: a[href$="logout.php"]
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}cat[]={{.}}&{{end}}"
search: "{{ .Keywords }}"
# alive, aliveanddead, nobot, dead, free, nuked
status: "{{ if .Config.freeleech }}free{{ else }}aliveanddead{{ end }}"
# title, desc, both
search_type: title
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
rows:
selector: table#browse_torrents_table > tbody > tr[id^="torrent_row_"]
fields:
category:
selector: a[href^="browse.php?cat[]="]
attribute: href
filters:
- name: querystring
args: cat[]
title:
selector: a.torrent_name
attribute: title
details:
selector: a.torrent_name
attribute: href
download:
selector: a[href^="download.php?"]
attribute: href
description:
selector: span.torrent_small_desc
genre:
selector: span.torrent_small_desc
filters:
- name: regexp
args: "\\[.+?\\] \\[(.+?)\\]"
- name: replace
args: [" ", "_"]
files:
selector: td.torrent_table_files
date:
selector: td.torrent_table_dateAdded
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
size:
selector: td.torrent_table_size
grabs:
selector: td.torrent_table_snatched
filters:
- name: regexp
args: (\d+)
seeders:
selector: td.torrent_table_seeders
leechers:
selector: td.torrent_table_leechers
downloadvolumefactor:
case:
":root div#notice_ratioBoostingMadness": 0
img[src$="images/freedownload.gif"]: 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
minimumseedtime:
# 5 day (as seconds = 5 x 24 x 60 x 60)
text: 432000 # 3 days for torrents under 20GB
# engine n/a
@@ -0,0 +1,90 @@
---
id: acrossthetasman
name: Across The Tasman
description: "ATT is a torrent site for Rugby and other sports played in Australia"
language: en-AU
type: private
encoding: UTF-8
links:
- https://acrossthetasman.com/
caps:
categories:
1: TV/Sport
modes:
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: date
options:
date: created
filename: title
size: size
seeders: seeders
- name: order
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
method: post
path: login.php
inputs:
vb_login_username: "{{ .Config.username }}"
vb_login_password: "{{ .Config.password }}"
cookieuser: 1
do: login
test:
path: torrents.php
selector: a[href*="logout.php"]
search:
paths:
- path: torrents.php
inputs:
sort: "{{ .Config.sort }}"
order: "{{ .Config.order }}"
query: "{{ .Keywords }}"
rows:
selector: table[width='100%'][align='center']:not([class]) > tbody > tr
fields:
category:
text: 1
date:
# Feb 12, 2021
selector: td:nth-child(1)
filters:
- name: dateparse
args: "MMM dd, yyyy"
title:
selector: td:nth-child(4) > span:nth-child(1)
filters:
- name: re_replace
args: ["[\\s]+Uploaded.*", ""]
download:
selector: a[href*="attachment.php?attachmentid="]
attribute: href
seeders:
selector: td:nth-child(5)
leechers:
selector: td:nth-child(6)
grabs:
selector: td:nth-child(7)
size:
selector: td:nth-child(10)
# engine n/a
@@ -0,0 +1,186 @@
---
id: aftershock
name: Aftershock
description: "Aftershock is a HUNGARIAN Private Torrent Tracker for MOVIES / GENERAL"
language: hu-HU
type: private
encoding: iso-8859-1
links:
- https://aftershock-tracker.net/
legacylinks:
- https://aftershock-tracker.eu/
caps:
categorymappings:
- {id: 7, cat: Movies/SD, desc: "XvidEng"}
- {id: 2, cat: Movies, desc: "AfterShock Release"}
- {id: 190, cat: Movies/DVD, desc: "DVD-9Eng"}
- {id: 191, cat: Movies/DVD, desc: "DVD-9Hun"}
- {id: 1, cat: Movies/DVD, desc: "DVDEng"}
- {id: 4, cat: Movies/DVD, desc: "DVDHun"}
- {id: 23, cat: Books/EBook, desc: "E-Book"}
- {id: 3, cat: Movies, desc: "Film Pack"}
- {id: 185, cat: Audio/Lossless, desc: "FLACeng"}
- {id: 188, cat: Audio/Lossless, desc: "FLAChu"}
- {id: 173, cat: Audio/Audiobook, desc: "Hangoskönyv"}
- {id: 34, cat: Movies/HD, desc: "HDEng"}
- {id: 33, cat: Movies/HD, desc: "HDHun"}
- {id: 182, cat: XXX/x264, desc: "HDXXX"}
- {id: 12, cat: PC/Games, desc: "JátékIso"}
- {id: 130, cat: Console, desc: "JátékKonzol"}
- {id: 38, cat: Console/PSP, desc: "JátékPS2"}
- {id: 44, cat: Console, desc: "Jatekrip"}
- {id: 131, cat: Console/XBox, desc: "JátékX-box"}
- {id: 140, cat: Other, desc: "Képek"}
- {id: 141, cat: Other, desc: "Klipek"}
- {id: 154, cat: Other, desc: "MeseEng"}
- {id: 155, cat: Other, desc: "MeseHun"}
- {id: 176, cat: Other, desc: "Mikro HDEng"}
- {id: 174, cat: Other, desc: "Mikro HDHun"}
- {id: 37, cat: PC/Mobile-Other, desc: "MobilPDA"}
- {id: 35, cat: PC, desc: "ProgramEgyéb"}
- {id: 170, cat: PC/ISO, desc: "ProgramIso"}
- {id: 24, cat: TV, desc: "Sorozat Eng"}
- {id: 25, cat: TV, desc: "Sorozat Hun"}
- {id: 167, cat: Movies/SD, desc: "Xvid CamEng"}
- {id: 166, cat: Movies/SD, desc: "Xvid CamHun"}
- {id: 9, cat: Movies/SD, desc: "XvidHun"}
- {id: 169, cat: XXX/ImageSet, desc: "XXX Képek"}
- {id: 39, cat: XXX, desc: "XXXFilm"}
- {id: 28, cat: Audio, desc: "ZeneEng"}
- {id: 29, cat: Audio, desc: "ZeneHun"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 0
options:
0: created
6: seeders
4: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_activity
type: info
label: Account Inactivity
default: "You will be immediately banned if you have not logged in for more than 6 weeks."
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: td.text:contains("Hiba")
message:
selector: td.text
test:
path: /
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 freeleech, 4 2x, 5 server
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table tbody#torrent_background tr:has(a.index)
filters:
- name: andmatch
fields:
title:
selector: a.index
attribute: href
filters:
- name: querystring
args: name
- name: urldecode
category:
selector: td a[href^="/browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
details:
selector: a.index
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
filters:
- name: urldecode
poster:
selector: a[onmouseover]
attribute: onmouseover
filters:
- name: regexp
args: src=([^\s]+)
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
genre:
selector: span.box
description:
text: "{{ .Result.genre }}"
files:
selector: td:nth-last-child(6)
size:
selector: td:nth-last-child(5)
seeders:
selector: td:nth-last-child(4)
leechers:
selector: td:nth-last-child(3)
grabs:
selector: td:nth-last-child(2)
date:
selector: td font
filters:
- name: re_replace
args: ["\\s", " "]
- name: append
args: " +01:00" # CET
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
downloadvolumefactor:
case:
span.icon_gift: 0
"*": 1
uploadvolumefactor:
case:
span.icon_upload: 2
"*": 1
minimumratio:
text: 0.31
# XBT v3
+209
View File
@@ -0,0 +1,209 @@
---
id: agsvpt
name: AGSVPT
description: "AGSVPT (Arctic Global Seed Vault) is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
requestDelay: 2
links:
- https://www.agsvpt.com/
- https://abroad.agsvpt.com/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movie(电影)", default: true}
- {id: 402, cat: TV, desc: "TV Series(电视剧)", default: true}
- {id: 403, cat: TV, desc: "TV Shows(综艺)", default: true}
- {id: 405, cat: TV/Anime, desc: "Anime(动漫)", default: true}
- {id: 404, cat: TV/Documentary, desc: "Documentaries(纪录片)", default: true}
- {id: 419, cat: TV, desc: "Playlet(短剧)", default: true}
- {id: 411, cat: Audio, desc: "Music(音乐)", default: true}
- {id: 406, cat: Audio/Video, desc: "MV(演唱", default: true}
- {id: 407, cat: TV/Sport, desc: "Sports(体育)", default: true}
- {id: 408, cat: Audio/Audiobook, desc: "Audio(音频)", default: true}
# special
- {id: 413, cat: PC/Games, desc: "Game(游戏)", default: false}
- {id: 416, cat: Books/Comics, desc: "Comic(漫画)", default: false}
- {id: 412, cat: PC/0day, desc: "Software(软件)", default: false}
- {id: 418, cat: Other, desc: "Picture(图片)", default: false}
- {id: 415, cat: Books/EBook, desc: "E-Book(电子书/有声书)", default: false}
- {id: 417, cat: Other, desc: "Education(学习资料)", default: false}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: 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 AGSVPT Web Site. Otherwise just leave it empty."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>每页种子数:每页显示</b><i>(Torrents per page:)</i> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Account retention rules:<ol><li>Elite User and above will not have their account deleted after parking (in the Control Panel)</li><li>Users who do not log in for 400 consecutive days will be disabled.</li><li>Users with a parked account will be disabled if they do not log in for 150 consecutive days</li><li>Users who have no traffic (i.e., uploading/downloading data is 0) within 7 days of new registration will be disabled</li><li>Users with no traffic (i.e. both upload/download data is 0) who do not log in for 30 consecutive days will be disabled.</li></ol>"
login:
path: takelogin.php
method: post
inputs:
secret: ""
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
two_step_code: "{{ .Config.2facode }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: yes
error:
- selector: td.embedded:has(h2:contains("失败"))
message:
selector: td.text
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
categories: [401, 402, 403, 405, 404, 419, 411, 406, 407, 408]
- path: special.php
categories: [413, 416, 412, 418, 415, 417]
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
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
description_verified:
case:
span[title="通过"]: "Verified:"
span[title="未审"]: "Unverified:"
span[title="拒绝"]: "Banned:"
description:
selector: td.rowfollow:nth-child(2)
remove: a, b, font, img, span
filters:
- name: prepend
args: "{{ .Result.description_verified }} "
# NexusPHP v1.8.12 2024-04-05
@@ -0,0 +1,131 @@
---
id: aidoruonline
name: Aidoru!Online
description: "Aidoru!Online is a Private Torrent Tracker for Female Japanese Idol related files"
language: en-US
type: private
encoding: UTF-8
links:
- https://aidoru-online.me/
legacylinks:
- https://aidoru-online.org/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "BD/DVDISO"}
- {id: 2, cat: Movies, desc: "BD/DVD-RIP"}
- {id: 3, cat: TV, desc: "TV"}
- {id: 4, cat: TV, desc: "Perf"}
- {id: 5, cat: TV, desc: "PV"}
- {id: 6, cat: TV, desc: "Webstream"}
- {id: 7, cat: Other, desc: "Image"}
- {id: 8, cat: Audio, desc: "Audio"}
- {id: 9, cat: Audio, desc: "Album"}
- {id: 10, cat: Audio, desc: "Single"}
- {id: 11, cat: Audio, desc: "Radio"}
- {id: 12, cat: Other, desc: "Misc"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: id
options:
id: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: /
selector: a[href^="torrents-details.php?id="]
search:
paths:
# https://aidoru-online.me/get_ttable.php?pcat=Show+All&scat=3%2C4%2C5%2C6&subbed=&fl=&resd=&p=0&searchstr=peace&deadlive=0&sortcol=id&sortorder=desc&startdt=&enddt=
- path: get_ttable.php
inputs:
pcat: "Show+All"
scat: "{{ join .Categories \",\" }}"
subbed: ""
fl: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
resd: ""
p: 0
searchstr: "{{ .Keywords }}"
deadlive: 1
sortcol: "{{ .Config.sort }}"
sortorder: "{{ .Config.type }}"
startdt: ""
enddt: ""
# does not support imdbid search and does not return imdb link in results
rows:
selector: table.ttable_headinner tr.t-row:has(a[href^="download.php?id="])
fields:
categorydesc:
selector: a.category-link
filters:
- name: split
args: [" ", 1]
title:
selector: a[href^="torrents-details.php?id="]
attribute: title
details:
selector: a[href^="torrents-details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
size:
selector: td.ttable_size
seeders:
selector: td:nth-last-child(4)
leechers:
selector: td:nth-last-child(3)
grabs:
selector: td:nth-last-child(2)
date:
selector: td:last-child
# auto adjusted by site account profile
filters:
- name: dateparse
args: "yyMMdd HH:mm:ss"
downloadvolumefactor:
case:
img[src="images/freeleech.png"]: 0 # dl not counted
img[src="images/freeleech2.png"]: 0 # dl not counted & upload 2x
"*": 1
uploadvolumefactor:
case:
img[src="images/freeleech2.png"]: 2
"*": 1
minimumratio:
text: 0.8
# TorrentTrader v2-svn
@@ -0,0 +1,182 @@
---
id: aither-api
name: Aither (API)
description: "Aither is a Private Torrent Tracker for HD MOVIES / TV"
language: en-US
type: private
encoding: UTF-8
links:
- https://aither.cc/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movie"}
- {id: 9, cat: TV/Sport, desc: "Sport"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Music"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
book-search: [q]
settings:
- name: apikey
type: text
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://aither.cc/\" target=\"_blank\">Aither</a> account <i>My Settings</i> page and clicking on the <b>API Key</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: single_file_release_use_filename
type: checkbox
label: Use filename as title for single file releases
default: true
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_activity
type: info
label: Account Inactivity
default: "You must log in to the Aither web site with your browser once every 120 days to prevent your account from getting disabled."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"
episodeNumber: "{{ .Query.Ep }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tmdbId: "{{ .Query.TMDBID }}"
tvdbId: "{{ .Query.TVDBID }}"
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: times_completed
date:
# "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50
selector: created_at
filters:
- name: append
args: " +00:00" # GMT
- name: dateparse
args: "MM/dd/yyyy HH:mm:ss zzz"
size:
selector: size
downloadvolumefactor:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
0%: 1 # not free
25%: 0.75
50%: 0.5
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
uploadvolumefactor:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
# global MR is 0.4 but torrents must be seeded for 5 days regardless of ratio
# minimumratio:
# text: 0.4
minimumseedtime:
# 5 days (as seconds = 5 x 24 x 60 x 60)
text: 432000
# json UNIT3D 8.1.3
@@ -0,0 +1,251 @@
---
id: amigosshare
name: Amigos Share Club
description: "Amigos Share Club is a Brazilian Private site for TV / MOVIES / GENERAL"
language: pt-BR
type: private
encoding: UTF-8
requestDelay: 2
links:
- https://cliente.amigos-share.club/
legacylinks:
- http://amigos-share.club/
- https://amigos-share.club/
caps:
categorymappings:
- {id: 75, cat: XXX, desc: "Adultos: Hentai"}
- {id: 107, cat: XXX, desc: "Adultos: Gay"}
- {id: 108, cat: XXX, desc: "Adultos: Transex/Female"}
- {id: 74, cat: XXX, desc: "Adultos: XXX"}
- {id: 146, cat: XXX, desc: "Adultos: OnlyFans"}
- {id: 69, cat: TV/Anime, desc: "Anime: Anime"}
- {id: 116, cat: TV/Anime, desc: "Anime: Filmes"}
- {id: 118, cat: TV/Anime, desc: "Anime: Séries"}
- {id: 21, cat: PC/0day, desc: "Aplicativos: Windows"}
- {id: 28, cat: PC/Mobile-iOS, desc: "Aplicativos: iPod"}
- {id: 27, cat: PC/Mobile-iOS, desc: "Aplicativos: iPad"}
- {id: 26, cat: PC/Mobile-iOS, desc: "Aplicativos: iPhone"}
- {id: 25, cat: PC, desc: "Aplicativos: Linux"}
- {id: 23, cat: PC/Mobile-Android, desc: "Aplicativos: Android"}
- {id: 22, cat: PC/Mac, desc: "Aplicativos: Mac"}
- {id: 73, cat: Books, desc: "Cursos: Video Aula"}
- {id: 72, cat: Books, desc: "Cursos: Apostila"}
- {id: 71, cat: Books, desc: "Cursos: Cursos"}
- {id: 67, cat: Books, desc: "Ebook: Livros"}
- {id: 112, cat: Books, desc: "Ebook: HQs"}
- {id: 147, cat: Books, desc: "Ebook: Mangas"}
- {id: 121, cat: Audio/Audiobook, desc: "Ebook: Audio-book"}
- {id: 68, cat: Books, desc: "Ebook: Revistas"}
- {id: 119, cat: Movies, desc: "Filmes:"}
- {id: 70, cat: XXX, desc: "Fotos: Revistas, Livros e Fotos"}
- {id: 51, cat: Console/PS3, desc: "Jogos: Ps3"}
- {id: 54, cat: Console/XBox 360, desc: "Jogos: Xbox360"}
- {id: 109, cat: Console, desc: "Jogos: Emulação"}
- {id: 110, cat: Console, desc: "Jogos: Nintendo Switch"}
- {id: 52, cat: Console, desc: "Jogos: Dreamcast"}
- {id: 50, cat: Console, desc: "Jogos: Ps2"}
- {id: 49, cat: Console, desc: "Jogos: Ps1"}
- {id: 48, cat: PC/Mac, desc: "Jogos: Mac"}
- {id: 55, cat: Console/Wii, desc: "Jogos: Wii"}
- {id: 82, cat: Console/PSP, desc: "Jogos: PSP"}
- {id: 47, cat: PC/Games, desc: "Jogos: Pc"}
- {id: 61, cat: Console, desc: "Jogos: Emuladores e Roms"}
- {id: 58, cat: Console/NDS, desc: "Jogos: Nintendo DS"}
- {id: 57, cat: Console, desc: "Jogos: Android"}
- {id: 56, cat: Console/XBox, desc: "Jogos: Xbox"}
- {id: 78, cat: Console/XBox One, desc: "Jogos: Xbox One"}
- {id: 79, cat: Console/PS4, desc: "Jogos: Ps4"}
- {id: 129, cat: Other, desc: "Outros: Fonts"}
- {id: 128, cat: Other, desc: "Outros: Scripts"}
- {id: 127, cat: Other, desc: "Outros: Add-ons"}
- {id: 130, cat: Other, desc: "Outros: MOD"}
- {id: 125, cat: Other, desc: "Outros: Pack de Imagens"}
- {id: 124, cat: Other, desc: "Outros: Vetores"}
- {id: 122, cat: Other, desc: "Outros: Plug-ins"}
- {id: 126, cat: Other, desc: "Outros: Extensões"}
- {id: 120, cat: TV, desc: "Series:"}
- {id: 64, cat: TV, desc: "Tv: Fechada"}
- {id: 62, cat: TV/Sport, desc: "Tv: Esportes"}
- {id: 63, cat: TV, desc: "Tv: Aberta"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: info_results
type: info
label: "Search results"
default: "Set <b>Exibição De Torrents</b> to <b>Lista</b> in your <b>Minhas Configurações</b>.<br />Using <b>Capas</b> is not supported and will return 0 results."
- name: freeleech
type: checkbox
label: Filter freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: id
options:
id: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_activity
type: info
label: Account Inactivity
default: "Inactive accounts, that is, without access for 90 days (3 months), will be automatically deleted by the system; with no possibility of reactivation."
login:
path: account-login.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: yes
error:
- selector: div.alert-error
test:
path: torrents-search.php
selector: a[href="account-logout.php"]
search:
paths:
# http://amigos-share.club/torrents-search.php?search=&sort=id&order=desc&page=1
- path: torrents-search.php
# site displays just 20 results, no profile options found to change this, so we attempt to fetch 5 pages
- path: torrents-search.php
inputs:
page: 1
- path: torrents-search.php
inputs:
page: 2
- path: torrents-search.php
inputs:
page: 3
- path: torrents-search.php
inputs:
page: 4
inputs:
# note: site does not support multi cat search.
# replace spaces with wildcard (percent symbol) as site's default search is exact string.
search: "{{ re_replace .Keywords \"[\\s]+\" \"%\" }}"
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
# torrents-search.php does not support imdbid search or return imdb links.
keywordsfilters:
# drop the year from searches since site titles do not include year
- name: re_replace
args: ["(19|20[0-9]{2})", ""]
rows:
selector: "div#fancy-list-group ul.list-group li.list-group-item{{ if .Config.freeleech }}:has(span.badge-success:contains(\"FREE\")){{ else }}{{ end }}"
fields:
category_default:
# tv and movie just have an image :-b
selector: div.list-group-item-addon img
attribute: src
optional: true
case:
"[src$=\"/filmes2.fw.png\"]": 119
"[src$=\"/seriados.fw.png\"]": 120
category:
# while the rest have a href with a cat number \o/
selector: a[href*="cat="]
attribute: href
optional: true
default: "{{ .Result.category_default }}"
filters:
- name: querystring
args: cat
_quality:
selector: div.list-group-item-content p.m-0 span.badge-primary:contains("1080p"), div.list-group-item-content p.m-0 span.badge-primary:contains("720p"), div.list-group-item-content p.m-0 span.badge-primary:contains("4k")
optional: true
filters:
- name: replace
args: ["4k", "2160p"]
_year:
selector: div.list-group-item-content p.m-0 span.badge-primary[style$="#246AB6;"]
optional: true
_type:
selector: div.list-group-item-content p.m-0 span.badge-info:contains("Rip"), div.list-group-item-content p.m-0 span.badge-info:contains("WEB-"), div.list-group-item-content p.m-0 span.badge-info:contains("TV"), div.list-group-item-content p.m-0 span.badge-info:contains("Blu-Ray"), div.list-group-item-content p.m-0 span.badge-info:contains("BD50"), div.list-group-item-content p.m-0 span.badge-info:contains("MUX"), div.list-group-item-content p.m-0 span.badge-info:contains("DVD"), div.list-group-item-content p.m-0 span.badge-info:contains("320"), div.list-group-item-content p.m-0 span.badge-info:contains("CAM"), div.list-group-item-content p.m-0 span.badge-info:contains("rip")
optional: true
_language:
selector: div.list-group-item-content p.m-0 span.badge-primary[style$="#b6249d;"]
optional: true
title:
selector: a[href*="torrents-details.php?id="], a[href*="details-misc.php?id="]
filters:
# strip out the non-english title [to the left of the brackets] and drop the brackets enclosing the english title
- name: re_replace
args: ["^(.*?)[\\(](.*?)[\\)](.*?)$", "$2$3"]
# add the year to the title
- name: append
args: "{{ if .Result._year }} {{ .Result._year }}{{ else }}{{ end }}"
# add the quality to the title
- name: append
args: "{{ if .Result._quality }} {{ .Result._quality }}{{ else }}{{ end }}"
# add the type to the title
- name: append
args: "{{ if .Result._type }} {{ .Result._type }}{{ else }}{{ end }}"
# add audio to the title
- name: append
args: "{{ if .Result._language }} {{ .Result._language }}{{ else }}{{ end }}"
- name: re_replace
args: ["(Dual|[Nn]acional|[Dd]ublado)", "Brazilian $1"]
details:
selector: a[href*="torrents-details.php?id="], a[href*="details-misc.php?id="]
attribute: href
download:
selector: a[href*="download.php?id="]
attribute: href
date:
selector: p:contains("Lançado:")
# auto adjusted by site account profile
optional: true
default: now
filters:
- name: regexp
args: "Lançado: (.+?)$"
- name: re_replace
args: [" (\\d:)", " 0$1"]
- name: dateparse
args: "dd/MM/yy HH:mm:ss"
size:
selector: div.list-group-item-content p.m-0 span.badge-info
seeders:
selector: div.list-group-item-controls a:nth-child(1)
leechers:
selector: div.list-group-item-controls a:nth-child(2)
grabs:
selector: div.list-group-item-controls a:nth-child(3)
genre:
selector: div.list-group-item-content p.m-0 span.badge-primary[style$="#1c38c2;"]
description:
text: "{{ .Result.genre }}"
downloadvolumefactor:
case:
"span.badge-success:contains(\"FREE\")": 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
# engine n/a
@@ -0,0 +1,300 @@
---
id: anilibria
name: AniLibria
description: "AniLibria is a Public torrent tracker for anime, voiced on russian by AniLibria team"
language: ru-RU
type: public
encoding: UTF-8
links:
- https://www.anilibria.tv/
caps:
categories:
Anime: TV/Anime
Movies: Movies/Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: stripcyrillic
type: checkbox
label: Strip Cyrillic Letters
default: false
- name: sonarr_compatibility
type: checkbox
label: Improve Sonarr compatibility by trying to better parse Season information in release titles.
default: false
- name: addrussiantotitle
type: checkbox
label: Add RUS to end of all titles to improve language detection by Sonarr and Radarr. Will cause English-only results to be misidentified.
default: false
search:
paths:
# https://github.com/anilibria/docs/blob/master/api_v3.md
- path: "https://api.anilibria.tv/v3/title/{{ if .Keywords }}search{{ else }}updates{{ end }}"
response:
type: json
inputs:
search: "{{ .Keywords }}"
filter: "names,posters.small.url,code,torrents.list,season.year,description"
limit: 100
keywordsfilters:
# strip season and/or ep
- name: re_replace
args: ["(?i)\\b(?:[SE]\\d{1,4}){1,2}\\b\\s?", ""]
rows:
selector: list
attribute: torrents.list
multiple: true
fields:
_episodes:
selector: episodes.string
optional: true
category:
text: "{{ if eq .Result._episodes \"Фильм\" }}Movies{{ else }}Anime{{ end }}"
title_ru:
selector: ..names.ru
title_en:
selector: ..names.en
title_en_parsed:
selector: ..names.en
filters:
- name: re_replace
args: ["(?i)\\bPart\\s*1\\b", "Part One"]
- name: re_replace
args: ["(?i)\\bPart\\s*2\\b", "Part Two"]
- name: re_replace
args: ["(?i)\\bPart\\s*3\\b", "Part Three"]
- name: re_replace
args: ["(?i)\\bPart\\s*4\\b", "Part Four"]
- name: re_replace
args: ["(?i)\\bPart\\s*5\\b", "Part Five"]
- name: re_replace
args: ["(?i)\\bPart\\s*6\\b", "Part Six"]
- name: re_replace
args: ["(?i)\\bPart\\s*7\\b", "Part Seven"]
- name: re_replace
args: ["(?i)\\bPart\\s*8\\b", "Part Eight"]
- name: re_replace
args: ["(?i)\\bPart\\s*9\\b", "Part Nine"]
- name: re_replace
args: ["(?i)\\bseason\\s*(\\d+)\\b", ""]
- name: re_replace
args: ["(?i)\\b(\\d+)(st|nd|rd|th)\\s*season[\\s\\.]*", ""]
- name: re_replace
args: ["(?i)\\b(\\d+)\\s*season\\b[\\s\\.]*", ""]
- name: re_replace
args: ["(?i)\\bseason\\s*([IVXLCDM]+)\\b", ""]
- name: re_replace
args: ["\\bI$", ""]
- name: re_replace
args: ["\\bII$", ""]
- name: re_replace
args: ["\\bIII$", ""]
- name: re_replace
args: ["\\bIV$", ""]
- name: re_replace
args: ["\\bV$", ""]
- name: re_replace
args: ["\\bVI$", ""]
- name: re_replace
args: ["\\bVII$", ""]
- name: re_replace
args: ["\\bVIII$", ""]
- name: re_replace
args: ["\\bIX$", ""]
- name: re_replace
args: ["\\bX$", ""]
- name: re_replace
args: ["(?i)\\b(\\d+)(?:st|nd|rd|th)?\\b", ""]
- name: trim
title_alternative:
selector: ..names.alternative
optional: true
filters:
- name: re_replace
args: ["(\\([\\p{IsCyrillic}\\W]+\\))|(^[\\p{IsCyrillic}\\W\\d]+\\/ )|([\\p{IsCyrillic} \\-]+,+)|([\\p{IsCyrillic}]+)", "{{ if .Config.stripcyrillic }}{{ else }}$1$2$3$4{{ end }}"]
- name: re_replace
args: ["[\\[\\(\\{<«][\\s\\W]*[\\]\\)\\}>»]", ""]
- name: re_replace
args: ["^[\\s&,\\.!\\?\\+\\-_\\|\\/':]+", ""]
- name: re_replace
args: ["^OVA$", ""]
_season_number_en:
selector: ..names.en
filters:
- name: re_replace
args: ["(?i)\\bPart\\s*\\d+\\s*$", ""]
- name: re_replace
args: ["(?i)(^.*\\bseason\\s*(\\d+)\\b\\s*$)", "S$2"]
- name: re_replace
args: ["(?i)(^.*\\b(\\d+)(st|nd|rd|th)\\s*season\\b.*$)", "S$2"]
- name: re_replace
args: ["(?i)(^.*\\b(\\d+)\\s*season\\b.*$)", "S$2"]
- name: re_replace
args: ["(?i)(^.*\\bseason\\s*([IVXLCDM]+)\\b\\s*$)", "$1"]
- name: re_replace
args: ["(^.*X$)", "S10"]
- name: re_replace
args: ["(^.*IX$)", "S9"]
- name: re_replace
args: ["(^.*VIII$)", "S8"]
- name: re_replace
args: ["(^.*VII$)", "S7"]
- name: re_replace
args: ["(^.*VI$)", "S6"]
- name: re_replace
args: ["(^.*V$)", "S5"]
- name: re_replace
args: ["(^.*IV$)", "S4"]
- name: re_replace
args: ["(^.*III$)", "S3"]
- name: re_replace
args: ["(^.*II$)", "S2"]
- name: re_replace
args: ["(^.*I$)", "S1"]
- name: re_replace
args: ["(?i)(^.*\\b(\\d+)(?:st|nd|rd|th)?\\b\\s*$)", "S$2"]
- name: re_replace
args: ["(?i)^(?!S\\d+).*", ""]
_season_number_alternative:
selector: ..names.alternative
optional: true
filters:
- name: re_replace
args: ["(?i)\\bPart\\s*\\d+\\s*$", ""]
- name: re_replace
args: ["(?i)(^.*\\bseason\\s*(\\d+)\\b\\s*$)", "S$2"]
- name: re_replace
args: ["(?i)(^.*\\b(\\d+)(st|nd|rd|th)\\s*season\\b\\s*$)", "S$2"]
- name: re_replace
args: ["(?i)(^.*\\b(\\d+)\\s*season\\b\\s*$)", "S$2"]
- name: re_replace
args: ["(?i)(^.*\\bseason\\s*([IVXLCDM]+)\\b\\s*$)", "$1"]
- name: re_replace
args: ["(^.*X$)", "S10"]
- name: re_replace
args: ["(^.*IX$)", "S9"]
- name: re_replace
args: ["(^.*VIII$)", "S8"]
- name: re_replace
args: ["(^.*VII$)", "S7"]
- name: re_replace
args: ["(^.*VI$)", "S6"]
- name: re_replace
args: ["(^.*V$)", "S5"]
- name: re_replace
args: ["(^.*IV$)", "S4"]
- name: re_replace
args: ["(^.*III$)", "S3"]
- name: re_replace
args: ["(^.*II$)", "S2"]
- name: re_replace
args: ["(^.*I$)", "S1"]
- name: re_replace
args: ["(?i)(^.*\\b(\\d+)(?:st|nd|rd|th)?\\b\\s*$)", "S$2"]
- name: re_replace
args: ["(?i)^(?!S\\d+).*", ""]
_season_number:
text: "{{ .Result._season_number_en }}"
filters:
- name: append
args: "{{ .Result._season_number_alternative }}"
- name: re_replace
args: ["^S1S1$", "S1"]
- name: re_replace
args: ["^S1(.+)$", "$1"]
- name: re_replace
args: ["^(S\\d+).*$", "$1"]
- name: re_replace
args: ["^$", "S1"]
year:
selector: ..season.year
_quality:
selector: quality.string
_quality_type:
selector: quality.type
_quality_resolution:
selector: quality.resolution
_quality_encoder:
selector: quality.encoder
filters:
- name: re_replace
args: ["(?i)^h", "x"]
title_parsed:
text: "{{ if .Config.stripcyrillic }}{{ else }}{{ .Result.title_ru }} / {{ end }}{{ .Result.title_en_parsed }} {{ .Result._season_number}}E{{ .Result._episodes }} [{{ .Result._quality_type }} {{ .Result._quality_resolution }} {{ .Result._quality_encoder }}]"
filters:
- name: re_replace
args: ["\\bS\\d+EФильм\\b", "({{ .Result.year }}) MOVIE"]
- name: re_replace
args: ["\\bS\\d+EOVA\\b", "({{ .Result.year }}) OVA"]
- name: re_replace
args: ["\\bS\\d+EONA\\b", "({{ .Result.year }}) ONA"]
- name: re_replace
args: ["\\bS\\d+EMovie\\b", "({{ .Result.year }}) MOVIE"]
- name: re_replace
args: ["\\bS\\d+EП/м фильм\\b", "({{ .Result.year }}) MOVIE"]
- name: re_replace
args: ["\\bS\\d+EРекап\\b", "({{ .Result.year }}) RECAP"]
- name: re_replace
args: ["\\bS\\d+ETV-Special\\b", "({{ .Result.year }}) SPECIAL"]
- name: append
args: "{{ if .Config.addrussiantotitle }} - RUS{{ else }}{{ end }}"
title_original:
text: "{{ if .Config.stripcyrillic }}{{ else }}{{ .Result.title_ru }} / {{ end }}{{ .Result.title_en }}{{ if .Result.title_alternative }} / AKA {{ .Result.title_alternative }}{{ else }}{{ end }} ({{ .Result.year }}) [{{ .Result._quality }}]{{ if .Result._episodes }} - E{{ .Result._episodes }}{{ else }}{{ end }}"
filters:
- name: re_replace
args: [" - \\bEФильм\\b", " - MOVIE"]
- name: re_replace
args: [" - \\bEMovie\\b", " - MOVIE"]
- name: re_replace
args: [" - \\bEП/м фильм\\b", " - MOVIE"]
- name: re_replace
args: [" - \\bEOVA\\b", " - OVA"]
- name: re_replace
args: [" - \\bEONA\\b", " - ONA"]
- name: append
args: "{{ if .Config.addrussiantotitle }} - RUS{{ else }}{{ end }}"
title:
text: "{{ if .Config.sonarr_compatibility }}{{ .Result.title_parsed }}{{ else }}{{ .Result.title_original }}{{ end }}"
_code:
selector: ..code
details:
text: "{{ .Config.sitelink }}release/{{ .Result._code }}.html"
download_url:
selector: url
download:
text: "{{ .Config.sitelink }}{{ .Result.download_url }}"
magnet:
selector: magnet
poster:
selector: ..posters.small.url
filters:
- name: prepend
args: "https://static.anilibria.tv"
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: downloads
date:
# unix
selector: uploaded_timestamp
size:
selector: total_size
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
description:
selector: ..description
# json api v3
@@ -0,0 +1,201 @@
---
id: animelayer
name: AnimeLayer
description: "AnimeLayer is a RUSSIAN Semi-Private Torrent Tracker for ANIME"
language: ru-RU
type: semi-private
encoding: UTF-8
links:
- https://www.animelayer.ru/
caps:
categorymappings:
- {id: аниме, cat: TV/Anime, desc: Аниме}
- {id: музыка, cat: Audio, desc: Музыка}
- {id: манга, cat: Books, desc: Манга}
- {id: дорама, cat: TV, desc: Дорама}
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: category-id
type: select
label: Category
default: anime
options:
anime: Аниме
music: Музыка
manga: Манга
dorama: Дорама
login:
path: login.php
method: form
form: form#loginForm
inputs:
login: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: div.error
test:
path: /
selector: a[href^="/auth/logout/"]
search:
paths:
- path: "torrents/{{ .Config.category-id }}/"
inputs:
q: "{{ .Keywords }}"
rows:
selector: ul.torrents-list li.torrent-item:has(a[href^="/torrent/"])
fields:
category:
selector: label.category
_resolution:
selector: div.description
filters:
- name: regexp
args: "Разрешение:\\s+\\d{3,4}\\D(\\d{3,4})"
title:
selector: img
attribute: alt
filters:
- name: append
args: "{{ if .Result._resolution }} [{{ .Result._resolution }}p]{{ else }}{{ end }}"
details:
selector: a[href^="/torrent/"]
attribute: href
download:
selector: a[href^="/torrent/"]
attribute: href
filters:
- name: append
args: download/
poster:
selector: img
attribute: data-original
size:
selector: div.info
filters:
- name: split
args: ["|", 2]
date_noyear:
# <span class="gray">Добавлен:</span>&nbsp;18 августа в&nbsp;21:39
selector: div.info
filters:
- name: regexp
args: "н:\\s(\\d{1,2} \\D{3,8} в\\s\\d{1,2}:\\d{2})"
- name: replace
args: ["\xA0", " "]
- name: replace
args: ["Обновлён:", ""]
- name: replace
args: ["Добавлен:", ""]
- name: replace
args: [" в ", " "]
- name: replace
args: ["января", "January {{ .Today.Year }}"]
- name: replace
args: ["февраля", "February {{ .Today.Year }}"]
- name: replace
args: ["марта", "March {{ .Today.Year }}"]
- name: replace
args: ["апреля", "April {{ .Today.Year }}"]
- name: replace
args: ["мая", "May {{ .Today.Year }}"]
- name: replace
args: ["июня", "June {{ .Today.Year }}"]
- name: replace
args: ["июля", "July {{ .Today.Year }}"]
- name: replace
args: ["августа", "August {{ .Today.Year }}"]
- name: replace
args: ["сентября", "September {{ .Today.Year }}"]
- name: replace
args: ["октября", "October {{ .Today.Year }}"]
- name: replace
args: ["ноября", "November {{ .Today.Year }}"]
- name: replace
args: ["декабря", "December {{ .Today.Year }}"]
- name: re_replace
args: ["\\s(\\d\\:)", " 0$1"]
date_year:
# <span class="gray">Обновлён:</span>&nbsp;3 октября 2019 в&nbsp;6:02
selector: div.info
filters:
- name: regexp
args: "н:\\s(\\d{1,2} \\D{3,8} \\d{4} в\\s\\d{1,2}:\\d{2})"
- name: replace
args: ["\xA0", " "]
- name: replace
args: ["Обновлён:", ""]
- name: replace
args: ["Добавлен:", ""]
- name: replace
args: [" в ", " "]
- name: replace
args: ["января", "January"]
- name: replace
args: ["февраля", "February"]
- name: replace
args: ["марта", "March"]
- name: replace
args: ["апреля", "April"]
- name: replace
args: ["мая", "May"]
- name: replace
args: ["июня", "June"]
- name: replace
args: ["июля", "July"]
- name: replace
args: ["августа", "August"]
- name: replace
args: ["сентября", "September"]
- name: replace
args: ["октября", "October"]
- name: replace
args: ["ноября", "November"]
- name: replace
args: ["декабря", "December"]
- name: re_replace
args: ["\\s(\\d\\:)", " 0$1"]
date:
text: "{{ if or .Result.date_year .Result.date_noyear }}{{ or .Result.date_year .Result.date_noyear }}{{ else }}now{{ end }}"
seeders:
selector: div.info
filters:
- name: split
args: ["|", 0]
leechers:
selector: div.info
filters:
- name: split
args: ["|", 1]
_subtitles:
filters:
- name: regexp
args: "Субтитры:(.+?)\\n"
_language:
filters:
- name: regexp
args: "Язык:(.+?)\\n"
description:
text: "{{ if .Result._subtitles }}Субтитры: {{ .Result._subtitles }}{{ else }}{{ end }} - {{ if .Result._language }}Язык: {{ .Result._language }}{{ else }}{{ end }}"
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a
@@ -0,0 +1,81 @@
---
id: animetime
name: Anime Time
description: "Anime Time is a PUBLIC torrent tracker for ANIME"
language: en-US
type: public
encoding: UTF-8
requestDelay: 2
links:
- https://animetime.cc/
caps:
categories:
anime: TV/Anime
books: Books
modes:
search: [q]
tv-search: [q, season, ep]
book-search: [q]
settings: []
search:
paths:
# https://animetime.cc/search?query=
- path: "{{ if .Keywords }}search{{ else }}{{ end }}"
inputs:
query: "{{ .Keywords }}"
keywordsfilters:
- name: trim
- name: re_replace
args: ["\\W+", "%"]
rows:
selector: div.flow-root > div.divide-y > div.p-2.space-y-2
fields:
category:
selector: span.badge.badge-primary
title:
selector: a[href*="/view/"]
details:
selector: a[href*="/view/"]
attribute: href
download:
selector: a[href*="/download/"]
attribute: href
magnet:
selector: a[href^="magnet:?xt="]
attribute: href
date:
selector: span[data-tip]
attribute: data-tip
filters:
- name: append
args: " +02:00" # EET
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
size:
selector: span.badge.badge-ghost
seeders:
text: 1
leechers:
text: 1
genre:
selector: span.badge.badge-secondary
filters:
- name: replace
args: ["non english", "non_english"]
- name: replace
args: ["music video", "music_video"]
- name: replace
args: ["Anime Time", "Anime_Time"]
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a
@@ -0,0 +1,157 @@
---
id: animetorrentsro
name: AnimeTorrents.ro
description: "AnimeTorrents.ro (Anime Torrents Romania) is a ROMANIAN Private Torrent Tracker for ANIME / MANGA"
language: ro-RO
type: private
encoding: UTF-8
links:
- https://animetorrents.ro/
caps:
categorymappings:
- {id: 1, cat: TV/Anime, desc: "ANIME"}
- {id: 1, cat: Movies/Other, desc: "ANIME"} # for Radarr
- {id: 2, cat: Books/Comics, desc: "MANGA"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: cat-id
type: select
label: Category
default: 0
options:
0: All categories
1: Anime
2: Manga
- 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
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "Inactive accounts under VIP and without parked are automatically deleted after about a year."
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
x: 0
y: 0
referer: /
error:
- selector: table.main:contains("esuat")
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
# https://animetorrents.ro/browse.php?search=2023&incldead=1&blah=0&cat=0
- path: browse.php
inputs:
search: "{{ .Keywords }}"
# 0 active, 1 all, 2 dead, 3 free
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
# 0 name, 1 genre
blah: 0
# site does not support multiple cats
cat: "{{ .Config.cat-id }}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
# does not support imdbid search
rows:
selector: td > table > tbody > tr:has(a[href^="download.php/"])
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="]
filters:
- name: re_replace
args: ["^(\\[.+?\\]).(.+)", "$2.$1"]
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php/"]
attribute: href
poster:
selector: a[onmouseover]
attribute: onmouseover
filters:
- name: regexp
args: "src=(.+?) width"
files:
selector: td:nth-last-child(8)
date:
selector: td:nth-last-child(6)
filters:
- name: append
args: " +00:00" # auto adjusted by site account profile
- name: dateparse
args: "dd-MM-yyyyHH:mm:ss zzz"
size:
selector: td:nth-last-child(5)
grabs:
selector: td:nth-last-child(4)
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
downloadvolumefactor:
case:
img[alt="Free"]: 0
"*": 1
uploadvolumefactor:
text: 1
genre:
selector: a[href^="download.php/"]
description:
text: "{{ .Result.genre }}"
minimumratio:
text: 1.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# engine n/a
@@ -0,0 +1,191 @@
---
id: animeworld-api
name: AnimeWorld (API)
description: "AnimeWorld (AW) is a GERMAN Private site for ANIME / MANGA / HENTAI"
language: de-DE
type: private
encoding: UTF-8
links:
- https://animeworld.cx/
caps:
categorymappings:
- {id: 1, cat: Movies/Other, desc: "Anime Filme"}
- {id: 2, cat: TV/Anime, desc: "Anime Serien"}
- {id: 3, cat: Audio, desc: "Anime Musik / OSTs"}
- {id: 4, cat: PC/Games, desc: "Anime Spiele"}
- {id: 5, cat: XXX, desc: "Anime Hentai"}
- {id: 6, cat: PC, desc: "Software"}
- {id: 7, cat: Other, desc: "Sonstiges"}
- {id: 8, cat: Movies, desc: "Filme"}
- {id: 9, cat: TV, desc: "Serien"}
- {id: 10, cat: PC/Games, desc: "Spiele"}
- {id: 11, cat: Audio, desc: "Musik"}
- {id: 12, cat: Books, desc: "Manga"}
- {id: 13, cat: Movies, desc: "Cartoon Filme"}
- {id: 14, cat: TV, desc: "Cartoon Serie"}
- {id: 15, cat: XXX, desc: "H-Manga / Doujinshi"}
modes:
search: [q]
tv-search: [q, season, ep, tvdbid, tmdbid]
movie-search: [q, tmdbid]
music-search: [q]
book-search: [q]
settings:
- name: apikey
type: text
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://animeworld.cx/\" target=\"_blank\">AnimeWorld</a> account <i>My 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 are set as inactive by the system after 180 days. After 270 days in inactive status, the accounts are automatically deleted from the system."
login:
path: /api/torrents
method: get
inputs: {} # TODO: remove in v10
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v8.x.x)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L476
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"
episodeNumber: "{{ .Query.Ep }}"
# imdbId: "{{ .Query.IMDBIDShort }}" # disabled due to #14776
tmdbId: "{{ .Query.TMDBID }}"
tvdbId: "{{ .Query.TVDBID }}"
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title_optional:
selector: name
title_filename:
selector: "files[0].name"
optional: true
files:
selector: num_file
title:
text: "{{ if and (.Config.single_file_release_use_filename) (eq .Result.files \"1\") (.Result.title_filename) }}{{ .Result.title_filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .Result.genre }}"
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: times_completed
date:
# "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50
selector: created_at
filters:
- name: append
args: " +00:00" # GMT
- name: dateparse
args: "MM/dd/yyyy HH:mm:ss zzz"
size:
selector: size
downloadvolumefactor:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
0%: 1 # not free
25%: 0.75
50%: 0.5
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
uploadvolumefactor:
# api returns False, True
selector: double_upload
case:
False: 1 # normal
True: 2 # double
# global MR is 1.0 but torrents must be seeded for 7 days regardless of ratio
# minimumratio:
# text: 1.0
minimumseedtime:
# 7 day (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 8.0.0
@@ -0,0 +1,87 @@
---
id: aniRena
name: AniRena
description: "AniRena is a Public torrent tracker for the latest anime and Japanese related torrents"
language: en-US
type: public
encoding: UTF-8
links:
- https://www.anirena.com/
settings:
- name: info_flaresolverr
type: info_flaresolverr
caps:
categorymappings:
# Anime
- {id: 1, cat: TV/Anime, desc: "Raw Animes"}
- {id: 2, cat: TV/Anime, desc: "Anime"}
- {id: 3, cat: TV/Anime, desc: "Hentai"}
- {id: 4, cat: TV/Anime, desc: "Drama"}
- {id: 9, cat: TV/Anime, desc: "Anime Music Videos"}
- {id: 10, cat: TV/Anime, desc: "Non-English"}
# Software
- {id: 5, cat: PC/ISO, desc: "DVD/ISO"}
- {id: 6, cat: PC, desc: "Hentai-Game"}
# Literature
- {id: 7, cat: Books, desc: "Manga"}
# Audio
- {id: 8, cat: Audio, desc: "Audio"}
# Other
- {id: 11, cat: Other, desc: "Other"}
modes:
search: [q]
tv-search: [q, season, ep]
music-search: [q]
book-search: [q]
search:
paths:
- path: /
inputs:
s: "{{ .Keywords }}"
rows:
selector: table tbody tr:has(td.torrents_small_type_data1)
fields:
title:
selector: .torrents_small_info_data1 div
download:
selector: .torrents_small_info_data2 a[title="Download Torrent"]
attribute: href
magnet:
selector: .torrents_small_info_data2 a[title="Magnet Link"]
attribute: href
date:
text: now
size:
selector: .torrents_small_size_data1
seeders:
selector: .torrents_small_seeders_data1 b big
leechers:
selector: .torrents_small_leechers_data1 b big
grabs:
selector: .torrents_small_downloads_data1
category:
selector: .torrents_small_type_data1 img
attribute: src
case:
"[src=\"./styles/tracker/imageset/cat_raw_small.png\"]": 1
"[src=\"./styles/tracker/imageset/cat_anime_small.png\"]": 2
"[src=\"./styles/tracker/imageset/cat_hentai_small.png\"]": 3
"[src=\"./styles/tracker/imageset/cat_drama_small.png\"]": 4
"[src=\"./styles/tracker/imageset/cat_dvd_small.png\"]": 5
"[src=\"./styles/tracker/imageset/cat_hgame2_small.png\"]": 6
"[src=\"./styles/tracker/imageset/cat_manga_small.png\"]": 7
"[src=\"./styles/tracker/imageset/cat_music_small.png\"]": 8
"[src=\"./styles/tracker/imageset/cat_musicvid_small.png\"]": 9
"[src=\"./styles/tracker/imageset/cat_noneng_small.png\"]": 10
"[src=\"./styles/tracker/imageset/cat_other_small.png\"]": 11
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a
@@ -0,0 +1,87 @@
---
id: anisource
name: AniSource
description: "AniSource is a Public site for HD Anime raws."
language: en-US
type: public
encoding: UTF-8
requestDelay: 5
links:
- https://asnet.pw/
settings: []
caps:
categorymappings:
- {id: 1, cat: TV/Anime, desc: "Raw Animes"}
modes:
search: [q]
tv-search: [q, season, ep]
search:
paths:
- path: /
- path: /
inputs:
tpage: 2
inputs:
search: "{{ .Keywords }}"
headers:
# site blocks Jackett's User-Agents, so slightly alter it here (e.g. Chrome/87.0. > Chrome/97.0.)
User-Agent: ["Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4280.88 Safari/537.36"]
rows:
selector: div[class^="item"]
fields:
category:
text: 1
title:
selector: a[href*="/showprofile/"]
filters:
# move group to the end
- name: re_replace
args: ["^(\\[.+?\\]) (.+?)$", "$2 $1"]
details:
selector: a[href*="/showprofile/"]
attribute: href
infohash:
selector: a[href*="/showprofile/"]
attribute: href
filters:
- name: regexp
args: ([A-F|a-f|0-9]{40})
date:
selector: font[color="Black"]
filters:
- name: regexp
args: "Date: (.+?) Central"
- name: replace
args: [" at ", " "]
- name: append
args: " -09:00" # CUS
- name: dateparse
args: "yyyy-MM-dd HH:mm zzz"
size:
selector: font[color="Black"]
filters:
- name: regexp
args: "Size: (.+?) \\|"
- name: replace
args: ["b", "B"]
files:
selector: font[color="Black"]
filters:
- name: regexp
args: (\d+)$
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a
@@ -0,0 +1,174 @@
---
id: anthelion-api
replaces:
- tehconnectionme
- anthelion
name: Anthelion (API)
description: "Anthelion is a Private MOVIES tracker"
language: en-US
type: private
encoding: UTF-8
# Status: https://ant.trackerstatus.info/
links:
- https://anthelion.me/
caps:
categorymappings:
- {id: 2000, cat: Movies}
- {id: 2030, cat: Movies/SD}
- {id: 2040, cat: Movies/HD}
- {id: 2045, cat: Movies/UHD}
- {id: 2050, cat: Movies/BluRay}
- {id: 2080, cat: Movies/WEB-DL}
- {id: 8000, cat: Other}
modes:
search: [q]
movie-search: [q, imdbid, tmdbid]
# note: the api any supports movie search so there is no tv season/episode support.
# not using year search because torznab adds it to the q= which results in &q=keyword+2022&year=2022 sent to api !?!
settings:
- name: apikey
type: text
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Key by accessing your <a href=\"https://anthelion.me/\" target=\"_blank\">Anthelion</a> account <i>Settings</i> page and scrolling down to the <b>API Key</b> section.<br>Tick the <b>Search</b> and <b>Download</b> checkboxes and click the <b>save profile</b> button to generate the key."
- name: info_activity
type: info
label: Account Inactivity
default: "Activity is defined as actually using your account, including the snatch/grab/seeding of torrents. You are also required to sign-in to the web frontend of Anthelion at least once per 3mo (90 days) (Note, using autodl/ARR does not satisfy this)."
login:
path: api.php
method: get
inputs:
api_key: "{{ .Config.apikey }}"
error:
- selector: ":root:contains(\"Unrecognized key\")"
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
- selector: ":root:contains(\"No API_KEY provided\")"
message:
text: "You did not enter an API key."
search:
paths:
# docs: https://anthelion.me/forums.php?action=viewthread&threadid=1026
- path: api.php
response:
type: json
inputs:
api_key: "{{ .Config.apikey }}"
o: json
t: movie
q: "{{ .Keywords }}"
tmdb: "{{ .Query.TMDBID }}"
imdb: "{{ .Query.IMDBIDShort }}"
# category filtering is disabled since it seems to rely on the AND operator that prevents some releases to show on search.
# cat: "{{ join .Categories \",\" }}"
limit: 100
offset: 0
rows:
selector: item
count:
selector: response.total
fields:
category:
selector: category
filters:
- name: split
args: [",", -1]
year:
selector: year
optional: true
_codec:
selector: codec
_container:
selector: container
_media:
selector: media
filters:
- name: replace
args: ["WEB", "WEB-DL"]
_resolution:
selector: resolution
_audioFormat:
selector: audioFormat
_subbing:
selector: subbing
optional: true
_flags:
selector: flags
optional: true
filters:
- name: replace
args: [",", " "]
_language:
selector: language
optional: true
_releaseGroup:
selector: releaseGroup
optional: true
filters:
- name: trim
title_optional:
selector: title
filters:
- name: htmldecode
- name: append
args: " {{ .Result.year }} {{ .Result._codec }} {{ .Result._container }} {{ .Result._media }} {{ .Result._resolution }} {{ .Result._audioFormat }}{{ if .Result._subbing }} Subs{{ else }}{{ end }}{{ if .Result._flags }} {{ .Result._flags }}{{ else }}{{ end }}{{ if .Result._language }} {{ .Result._language }}{{ else }}{{ end }}{{ if and (.Result._releaseGroup) (ne .Result._releaseGroup \"NULL\") }}-{{ .Result._releaseGroup }}{{ else }}{{ end }}"
details:
selector: guid
download:
selector: link
filters:
- name: htmldecode
infohash:
selector: infohash
imdbid:
selector: imdb
tmdbid:
selector: tmdb
genre:
selector: tags
filters:
- name: replace
args: [".", "_"]
description:
text: "{{ .Result.genre }}"
files:
selector: fileCount
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: grabs
date:
# 2022-08-07T20:56:06+0200
selector: pubDate
size:
selector: size
downloadvolumefactor:
text: 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
minimumseedtime:
# 3 day (as seconds = 3 x 24 x 60 x 60)
text: 259200
_filename:
selector: "files[0].name"
filters:
- name: htmldecode
optional: true
title:
text: "{{ if and (eq .Result.files \"1\") (.Result._filename) }}{{ .Result._filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
# json api
@@ -0,0 +1,235 @@
---
id: arabafenice
name: ArabaFenice
description: "Araba Fenice (Phoenix) is an ITALIAN Private site for TV / MOVIES / GENERAL"
language: it-IT
type: private
encoding: UTF-8
links:
- https://www.arabafenice.me/
legacylinks:
- http://www.arabafenice.me/
caps:
categorymappings:
# HRS
- {id: 34, cat: Movies/HD, desc: "1080p HRS x264"}
- {id: 47, cat: Movies/UHD, desc: "2160p 4K UHD HRS"}
- {id: 35, cat: TV, desc: "Serie TV HRS"}
- {id: 36, cat: Movies/SD, desc: "DVDRip HRS"}
- {id: 41, cat: Movies/SD, desc: "BDRip 576p HRS"}
- {id: 39, cat: Movies/HD, desc: "1080p HRS x265 HEVC"}
# AREA SuperVip
- {id: 33, cat: Movies/HD, desc: "[DD] Film 720p MP4"}
- {id: 54, cat: Movies/HD, desc: "[DD] 1080p V.U. MKV"}
- {id: 55, cat: Movies/BluRay, desc: "[DD] FULL BluRay"}
- {id: 57, cat: Movies/UHD, desc: "[DD] 4K FULL BluRay"}
- {id: 58, cat: XXX, desc: "[DD] XXX 1080p"}
- {id: 59, cat: XXX, desc: "[DD] XXX 4K 2160p"}
- {id: 60, cat: XXX, desc: "[DD] XXX 720p"}
# VIDEO
- {id: 1, cat: Movies, desc: "News Cinema"}
- {id: 40, cat: TV/UHD, desc: "4K Video Untouched"}
- {id: 2, cat: Movies/SD, desc: "BD-DVDRip"}
- {id: 3, cat: Movies/DVD, desc: "DVD 5"}
- {id: 50, cat: Movies/UHD, desc: "4K 2160p UHD"}
- {id: 6, cat: Movies/BluRay, desc: "BluRay Full"}
- {id: 4, cat: Movies/HD, desc: "1080p 3D x264"}
- {id: 7, cat: Movies/HD, desc: "1080p x264"}
- {id: 46, cat: Movies/HD, desc: "1080p VideoUntouched"}
- {id: 44, cat: Movies/HD, desc: "1080p x265 HEVC"}
- {id: 5, cat: Movies/DVD, desc: "DVD 9"}
- {id: 9, cat: TV/Anime, desc: "Cartoons"}
- {id: 8, cat: TV/Anime, desc: "720p x264"}
- {id: 12, cat: TV, desc: "Stagioni Concluse"}
- {id: 13, cat: TV, desc: "Stagioni in Onda"}
- {id: 14, cat: TV, desc: "TV Show"}
- {id: 42, cat: TV, desc: "Serie Tv Sub Ita"}
- {id: 15, cat: TV/Documentary, desc: "Documentari"}
- {id: 53, cat: TV/HD, desc: "VIDEO MP4 720p"}
- {id: 38, cat: XXX, desc: "xXx"}
- {id: 43, cat: Other, desc: "Araba per il sociale"}
# MUSICA
- {id: 17, cat: Audio, desc: "Musica Italiana"}
- {id: 45, cat: Audio, desc: "Discografie"}
- {id: 18, cat: Audio, desc: "MusicaInternazionale"}
- {id: 19, cat: Audio, desc: "Compilation"}
# PDF
- {id: 21, cat: Books, desc: "Ebook"}
- {id: 22, cat: Books/Comics, desc: "Comics"}
- {id: 23, cat: Books, desc: "Newsstand"}
- {id: 56, cat: Books/Mags, desc: "Riviste"}
- {id: 48, cat: XXX/Other, desc: "Riviste xXx"}
- {id: 49, cat: XXX/Other, desc: "Fumetti xXx"}
# GAMES
- {id: 25, cat: Console/PS4, desc: "Sony Games"}
- {id: 26, cat: Console/XBox, desc: "XboX Games"}
- {id: 27, cat: Console/Other, desc: "Nintendo Games"}
- {id: 28, cat: PC/Games, desc: "PC Games"}
# SOFTWARE
- {id: 30, cat: PC/ISO, desc: "Windows APP"}
- {id: 31, cat: PC/Mobile-iOS, desc: "Apple APP"}
- {id: 32, cat: PC/Mobile-Android, desc: "Android APP"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: 3
options:
3: created
5: seeders
4: size
2: title
- name: type
type: select
label: Order requested from site
default: 2
options:
2: desc
1: asc
- name: info
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
path: index.php?page=login
method: post
inputs:
uid: "{{ .Config.username }}"
pwd: "{{ .Config.password }}"
error:
- selector: body[onLoad^="makeAlert('"]
message:
selector: body[onLoad^="makeAlert('"]
attribute: onLoad
filters:
- name: replace
args: ["makeAlert('Error' , '", ""]
- name: replace
args: ["');", ""]
test:
path: index.php
selector: a[href="logout.php"]
download:
before:
path: thanks.php
method: post
inputs:
infohash: "{{ .DownloadUri.Query.id }}"
thanks: 1
rndval: "1487013827343"
selectors:
- selector: a[href^="download.php?id="]
attribute: href
filters:
- name: regexp
args: "^(.+?)&key="
search:
paths:
- path: index.php
keywordsfilters:
- name: diacritics
args: replace
- name: re_replace # S01 to 1
args: ["(?i)\\bS0*(\\d+)\\b", "$1"]
- name: re_replace # S01E01 to 1 1
args: ["(?i)\\bS0*(\\d+)E0*(\\d+)\\b", "$1 $2"]
inputs:
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBIDShort }}{{ else }}{{ .Keywords }}{{ end }}"
page: torrents
category: "{{ range .Categories }}{{.}};{{end}}"
options: "{{ if .Query.IMDBID }}4{{ else }}0{{ end }}"
active: 0
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"
rows:
selector: table > tbody > tr > td > table.lista > tbody > tr:has(a[href^="index.php?page=torrent-details&id="])
fields:
download:
selector: a[href^="index.php?page=downloadcheck&id="]
attribute: href
title:
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
filters:
- name: re_replace # S01 E01 to S01E01
args: ["(?i)\\bS(\\d+)\\sE(\\d+)\\b", "S$1E$2"]
- name: re_replace # 01x01 to S01E01
args: ["(?i)(\\d{2})x(\\d+)", "S$1E$2"]
- name: re_replace # 1x01 to S01E01
args: ["(?i)\\b(\\d{1})x(\\d+)", "S0$1E$2"]
- name: re_replace # Stagione X --> S0X
args: ["(?i)\\bStagion[ei]\\s?(\\d{1})\\b|\\bSeason'?s?\\s?(\\d{1})\\b", "S0$1$2"]
- name: re_replace # Stagione XX --> SXX
args: ["(?i)\\bStagion[ei]\\s?(\\d{2,})\\b|\\bSeason'?s?\\s?(\\d{2,})\\b", "S$1$2"]
- name: re_replace # Episodio 4 to E4
args: ["(?i)\\b(?:[\\/\\|]?Episodio\\s?(\\d+)|Puntata\\s?(\\d+))", "E$1$2"]
- name: re_replace # Episodi 4 5 to E04-05
args: ["(?i)\\b(?:Puntate\\s*)(\\d+)\\s?(\\d+)", "E0$1-0$2"]
poster:
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
attribute: onmouseover
filters:
- name: regexp
args: "src=(.*?) "
category:
selector: a[href^="index.php?page=torrents&category="]
attribute: href
filters:
- name: querystring
args: category
details:
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
attribute: href
size:
selector: td:nth-last-child(4)
date:
selector: td:nth-last-child(9)
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "dd/MM/yyyy zzz"
grabs:
selector: td:nth-last-child(6)
seeders:
selector: td:nth-last-child(8)
leechers:
selector: td:nth-last-child(7)
downloadvolumefactor:
case:
img[alt="Gold 100% Free"]: 0
img[alt="Silver 50% Free"]: 0.5
img[alt="Bronze 25% Free"]: 0.75
"*": 1
uploadvolumefactor:
case:
img[alt="2x Upload Multiplier"]: 2
img[alt="3x Upload Multiplier"]: 3
img[alt="4x Upload Multiplier"]: 4
img[alt="5x Upload Multiplier"]: 5
img[alt="6x Upload Multiplier"]: 6
img[alt="7x Upload Multiplier"]: 7
img[alt="8x Upload Multiplier"]: 8
img[alt="9x Upload Multiplier"]: 9
img[alt="10x Upload Multiplier"]: 10
"*": 1
# xbtitFM v1.16
@@ -0,0 +1,179 @@
---
id: arabp2p
name: ArabP2P
description: "ArabP2P is an ARABIC Private Torrent Tracker for MOVIES / TV / GENERAL"
language: ar-AE
type: private
encoding: UTF-8
links:
- https://www.arabp2p.net/
legacylinks:
- http://www.arabp2p.com/
- https://www.arabp2p.com/
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: 3
options:
3: created
5: seeders
4: size
2: title
- name: type
type: select
label: Order requested from site
default: 2
options:
2: desc
1: asc
- name: info_activity
type: info
label: Account Inactivity
default: "You must log in periodically. If the member is absent from the website for a period of 3 months, the account will be deleted without prior warning."
caps:
categorymappings:
# المرئيات العربية Arabic Movies
- {id: 14, cat: Movies, desc: "اسلامي (Islamic)"}
- {id: 19, cat: TV/Documentary, desc: "وثائقي (Documentary)"}
- {id: 70, cat: TV, desc: "تعليمي (Educational)"}
- {id: 41, cat: Movies, desc: "افلام عربيه (Arabic Movies)"}
- {id: 88, cat: Movies, desc: "افلام مدبلجه عربي (Arabic Dubbed Movies)"}
- {id: 44, cat: TV, desc: "مسلسلات عربية (Arabic Series)"}
- {id: 89, cat: TV, desc: "مسلسلات عربية كامله (Full Arabic Series)"}
- {id: 52, cat: TV, desc: "مسرحيات (Plays)"}
- {id: 71, cat: TV, desc: "مسلسلات مدبلجه عربي (Arabic Dubbed Series)"}
- {id: 90, cat: TV, desc: "برامج ومسابقات (Shows)"}
- {id: 117, cat: TV, desc: "رمضان 2024 (Ramadan)"}
# المرئيات الاجنبية Foreign Movies
- {id: 92, cat: TV/Foreign, desc: "تعليمي (Educational)"}
- {id: 93, cat: TV/Documentary, desc: "وثائقي (Documentary)"}
- {id: 45, cat: TV/Foreign, desc: "مسلسلات وبرامج اجنبيه (Serials)"}
- {id: 57, cat: TV/Foreign, desc: "مسلسلات آسيوية (Asian Series)"}
- {id: 42, cat: Movies/Foreign, desc: "افلام اجنبيه (Foreign)"}
- {id: 74, cat: Movies/HD, desc: "جودة عالية HD"}
- {id: 113, cat: TV/Foreign, desc: "مسلسلات لاتينية مترجم.مدبلج(Latin Series"}
- {id: 59, cat: Movies/Foreign, desc: "افلام آسيوية (Asian Movies)"}
- {id: 86, cat: Movies/Foreign, desc: "افلام هنديه (Indian Movies)"}
- {id: 114, cat: Movies/Foreign, desc: "افلام لاتينية مترجم.مدبلج (Latin Movies)"}
- {id: 115, cat: TV/Foreign, desc: "مسلسلات تركية مترجم.مدبلج (Turkish Series)"}
- {id: 116, cat: Movies/Foreign, desc: "افلام تركية مترجم.مدبلج (Turkish Movies)"}
# انمي مدبلج عربي Anime Arabic dubbed
- {id: 98, cat: TV/Anime, desc: "افلام (Movies)"}
- {id: 100, cat: TV/Anime, desc: "مسلسلات (Series)"}
- {id: 102, cat: TV/Anime, desc: "حلقات (Episdoes)"}
# انمي مترجم عربي Anime Arabic translator
- {id: 99, cat: TV/Anime, desc: "افلام (Movies)"}
- {id: 101, cat: TV/Anime, desc: "مسلسلات (Series)"}
- {id: 103, cat: TV/Anime, desc: "حلقات (Episodes)"}
- {id: 85, cat: TV/Anime, desc: "الكارتون الصامت والكلاسيكي (Cartoons)"}
# صوتيات Audio
- {id: 25, cat: Audio, desc: "القران الكريم (The Holy Quran)"}
- {id: 27, cat: Audio, desc: "محاضرات (Lectures)"}
- {id: 26, cat: Audio, desc: "اناشيد (Chants)"}
# برامج Software
- {id: 22, cat: PC, desc: "برامج عربية (Arabic Software)"}
- {id: 23, cat: PC, desc: "برامج عامه (Public Software)"}
- {id: 78, cat: PC/Mobile-iOS, desc: "iPad/iPhone"}
- {id: 79, cat: PC/Mobile-Android, desc: "android"}
# العاب Games
- {id: 30, cat: PC/Games, desc: "PC"}
- {id: 31, cat: Console/PS3, desc: "PS2"}
- {id: 53, cat: Console/Wii, desc: "wii"}
- {id: 55, cat: Console/PSP, desc: "PSP"}
- {id: 63, cat: Console/XBox, desc: "XBOX"}
- {id: 64, cat: Console/PS3, desc: "PS3"}
# اخرى Other
- {id: 17, cat: Books, desc: "كتب (Books)"}
- {id: 65, cat: Other, desc: "صور (Images)"}
- {id: 56, cat: Other, desc: "رياضي (Sport)"}
- {id: 46, cat: Other, desc: "منوع (Misc)"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
login:
path: index.php
method: form
form: form[action^="index.php?page=login"]
inputs:
uid: "{{ .Config.username }}"
pwd: "{{ .Config.password }}"
error:
- selector: tr td span[style="color:#FF0000;"]
test:
path: index.php
selector: a[href^="logout.php?t="]
search:
paths:
# https://www.arabp2p.com/index.php?page=torrents&search=&category=0&active=0&internel=0
- path: index.php
inputs:
page: torrents
search: "{{ .Keywords }}"
category: "{{ if .Categories }}{{ range .Categories }}{{.}};{{end}}{{ else }}0{{ end }}"
# 0 all 1 activeonly 2 deadonly
active: 0
# 0 all 1 internal 2 external
internel: 0
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"
# does not support imdbid search or provide imdb link in results
rows:
selector: table.torrent tr.torrent
filters:
- name: andmatch
fields:
category:
selector: td a[href^="index.php?page=torrents&category="]
attribute: href
filters:
- name: querystring
args: category
title:
selector: td a[href^="index.php?page=torrent-details"]
details:
selector: td a[href^="index.php?page=torrent-details"]
attribute: href
download:
selector: td a[href^="download.php"]
attribute: href
date:
selector: td:nth-child(4) span
attribute: title
# auto adjusted by site account profile
filters:
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss"
seeders:
selector: td:nth-child(5)
leechers:
selector: td:nth-child(6)
size:
selector: td:nth-child(7)
downloadvolumefactor:
case:
span.free: 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 0.8
minimumseedtime:
text: 259200 # 3 days
# xbtit
@@ -0,0 +1,221 @@
---
id: arabtorrents
name: ArabTorrents
description: "ArabTorrents is an ARABIC Private Torrent Tracker for MOVIES / TV / GENERAL"
language: ar-AE
type: private
encoding: windows-1256
requestDelay: 2
links:
- https://arab-torrents.net/
caps:
categorymappings:
# Movies
- {id: 36, cat: Movies, desc: "Movies/Dubbed"}
- {id: 134, cat: Movies, desc: "HD Section"}
- {id: 135, cat: Movies/HD, desc: "Movies/HD Section"}
- {id: 204, cat: Movies/HD, desc: "R5/HD Section"}
- {id: 119, cat: Movies/SD, desc: "Movies/SD TV"}
- {id: 205, cat: Movies/Foreign, desc: "Foreign"}
- {id: 208, cat: Movies/Foreign, desc: "Stranger/Foreign"}
- {id: 209, cat: Movies/Foreign, desc: "Turkish/Foreign"}
- {id: 207, cat: Movies/Foreign, desc: "Indian/Foreign"}
- {id: 191, cat: Movies, desc: "Movies/Golden-VIP"}
- {id: 190, cat: Movies, desc: "Movies/Super VIP"}
- {id: 212, cat: Movies, desc: "Movies/VIP"}
- {id: 181, cat: Movies, desc: "Classic Movies/WEB-DL"}
- {id: 167, cat: Movies, desc: "Movies/WEB-DL"}
# Shows
- {id: 186, cat: TV, desc: "Dubbed"}
- {id: 166, cat: TV/WEB-DL, desc: "WEB-DL"}
- {id: 168, cat: TV/WEB-DL, desc: "Series/WEB-DL"}
- {id: 171, cat: TV/WEB-DL, desc: "TV Shows/WEB-DL"}
- {id: 180, cat: TV/WEB-DL, desc: "Classic Series/WEB-DL"}
- {id: 169, cat: TV/WEB-DL, desc: "Full-Pack/WEB-DL"}
- {id: 210, cat: Other, desc: "VIP"}
- {id: 211, cat: TV, desc: "TV Shows/VIP"}
- {id: 213, cat: TV, desc: "Full-Pack/VIP"}
- {id: 94, cat: TV, desc: "Super VIP"}
- {id: 189, cat: TV, desc: "TV Shows/Super VIP"}
- {id: 201, cat: TV, desc: "Full-Pack/Super VIP"}
- {id: 197, cat: TV, desc: "TV Shows/Ramadan 2022"}
- {id: 148, cat: TV/Other, desc: "Series/OSN"}
- {id: 149, cat: TV/Other, desc: "TV Show/OSN"}
- {id: 165, cat: TV, desc: "Golden-VIP"}
- {id: 185, cat: TV, desc: "Series/Golden-VIP"}
- {id: 200, cat: TV, desc: "Full-Pack/Golden-VIP"}
- {id: 26, cat: TV/SD, desc: "SD TV"}
- {id: 78, cat: TV/SD, desc: "Series/SD TV"}
- {id: 124, cat: TV/SD, desc: "FullPack/SD TV"}
- {id: 136, cat: TV/HD, desc: "Series/HD Section"}
- {id: 137, cat: TV/HD, desc: "TV Shows/HD Section"}
- {id: 182, cat: TV/HD, desc: "Full Pack/HD Section"}
- {id: 187, cat: TV/Foreign, desc: "TV Shows/Dubbed"}
- {id: 188, cat: TV/Foreign, desc: "Full-Pack/Dubbed"}
# Anime
- {id: 33, cat: TV/Anime, desc: "Anime"}
- {id: 51, cat: TV/Anime, desc: "Series/Anime"}
- {id: 129, cat: Movies/BluRay, desc: "Blu-Ray/Anime"}
- {id: 125, cat: TV, desc: "Full-Pack/Anime"}
- {id: 50, cat: Movies, desc: "Movies/Anime"}
# Islamic
- {id: 67, cat: Other, desc: "Islamic"}
- {id: 126, cat: TV, desc: "Full-Packs/Islamic"}
- {id: 91, cat: Audio/MP3, desc: "MP3/Islamic"}
- {id: 92, cat: Other, desc: "Video/Islamic"}
# Music
- {id: 16, cat: Audio, desc: "Music"}
- {id: 177, cat: Audio, desc: "Flac/Music"}
- {id: 127, cat: Audio, desc: "Full-Packs/Music"}
- {id: 17, cat: Audio/MP3, desc: "MP3/Music"}
- {id: 19, cat: Audio/Video, desc: "Videos/Music"}
# OSN
- {id: 146, cat: TV/Other, desc: "OSN"}
- {id: 147, cat: TV/Other, desc: "Arabic/OSN"}
- {id: 153, cat: TV/Other, desc: "English/OSN"}
- {id: 179, cat: TV/Other, desc: "Old/OSN"}
# Ramadan 2022
- {id: 192, cat: Other, desc: "Ramadan 2022"}
- {id: 198, cat: Other, desc: "Full Pack/Ramadan 2022"}
- {id: 193, cat: Other, desc: "Ramadan HD/Ramadan 2022"}
- {id: 195, cat: Other, desc: "Ramadan Khaliji/Ramadan 2022"}
- {id: 194, cat: Other, desc: "Ramadan SD/Ramadan 2022"}
- {id: 196, cat: Other, desc: "Ramadan Web/Ramadan 2022"}
# Sports
- {id: 120, cat: TV/Sport, desc: "Sports"}
- {id: 159, cat: TV/Sport, desc: "Full Matches/Sports"}
- {id: 155, cat: TV/Sport, desc: "Goals/Sports"}
# Rest
- {id: 102, cat: TV/Other, desc: "Other/SD TV"}
- {id: 202, cat: Other, desc: "AT"}
- {id: 203, cat: Other, desc: "AT/AT"}
- {id: 34, cat: Other, desc: "Misc"}
- {id: 132, cat: PC/Mobile-Android, desc: "Android/Misc"}
- {id: 163, cat: TV/Documentary, desc: "Documentary/Misc"}
- {id: 122, cat: Other, desc: "Other/Misc"}
- {id: 121, cat: Other, desc: "Theater/Misc"}
- {id: 214, cat: Other, desc: "Other/VIP"}
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: 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
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: table:has(td.thead:contains("حدث خطأ"))
test:
path: index.php
selector: a[href*="logout.php"]
download:
before:
path: takethanks.php
method: post
inputs:
torrentid: "{{ re_replace .DownloadUri.PathAndQuery \".*download-torrent-(\\d+).*\" \"$1\"}}"
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 }}"
keywordsfilters:
- name: re_replace
args: ["\\W+", "*"]
- name: re_replace
args: ["^(.+)$", "*$1*"]
rows:
selector: table#sortabletable > tbody > tr:has(span > a[href*="details.php?id="])
fields:
category:
selector: td a[href*="/torrent-category-"]
attribute: href
filters:
- name: regexp
args: "torrent-category-(\\d+)\/"
title:
selector: td div.tooltip-target
details:
selector: span a[href*="/details.php?id="]
attribute: href
download:
selector: a[href*="/download-torrent-"]
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.05
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# TS Special Edition v.7.4
@@ -0,0 +1,200 @@
---
id: arenabg
name: ArenaBG
description: "ArenaBG is a BULGARIAN Semi-Private Torrent Tracker for 0DAY / GENERAL"
language: bg-BG
type: semi-private
encoding: UTF-8
links:
- https://arenabg.com/
legacylinks:
- https://arenabg.ch/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 8, cat: Movies, desc: "Movies / ArenaBG.TV"}
- {id: 9, cat: Movies/SD, desc: "Movies / XviD"}
- {id: 10, cat: Movies/DVD, desc: "Movies / DVD-R"}
- {id: 11, cat: Movies/HD, desc: "Movies / x264"}
- {id: 12, cat: TV/Anime, desc: "Movies / Anime & Manga"}
- {id: 13, cat: TV/Documentary, desc: "Movies / Documentaries"}
- {id: 14, cat: Movies/BluRay, desc: "Movies / Blu-ray"}
- {id: 15, cat: Movies, desc: "Movies / Weekend"}
- {id: 16, cat: Movies, desc: "Movies / Boxset"}
- {id: 17, cat: Movies/HD, desc: "Movies / x264 Boxset"}
- {id: 18, cat: Movies/HD, desc: "Movies / HDTV"}
- {id: 19, cat: Movies/3D, desc: "Movies / 3D"}
- {id: 20, cat: Movies/HD, desc: "Movies / Movies HD"}
- {id: 21, cat: Movies/HD, desc: "Movies / x265"}
- {id: 22, cat: Movies/UHD, desc: "Movies / 4K"}
- {id: 59, cat: Movies/HD, desc: "Movies / AV1"}
- {id: 2, cat: TV, desc: "Series"}
- {id: 23, cat: TV/HD, desc: "Series / TV Episodes HD"}
- {id: 24, cat: TV, desc: "Series / TV Episodes"}
- {id: 25, cat: TV, desc: "Series / TV Boxset"}
- {id: 26, cat: TV/HD, desc: "Series / TV Boxset HD"}
- {id: 3, cat: Audio, desc: "Music"}
- {id: 27, cat: Audio/MP3, desc: "Music / MP3"}
- {id: 28, cat: Audio/Video, desc: "Music / Video"}
- {id: 29, cat: Audio/Lossless, desc: "Music / FLAC"}
- {id: 30, cat: Audio, desc: "Music / DVD"}
- {id: 31, cat: Audio/Lossless, desc: "Music / APE"}
- {id: 32, cat: Audio, desc: "Music / DTS"}
- {id: 33, cat: Audio, desc: "Music / WavePack"}
- {id: 34, cat: Audio, desc: "Music / OST"}
- {id: 4, cat: PC/Games, desc: "Games"}
- {id: 35, cat: PC/Games, desc: "Games / PC ISO"}
- {id: 36, cat: PC, desc: "Games / PC RIP"}
- {id: 37, cat: Console, desc: "Games / PS2"}
- {id: 38, cat: Console/PSP, desc: "Games / PSP"}
- {id: 39, cat: Console/XBox, desc: "Games / XBOX"}
- {id: 40, cat: Console/XBox 360, desc: "Games / XBOX-360"}
- {id: 41, cat: Console/PS3, desc: "Games / PS3"}
- {id: 42, cat: Console/Wii, desc: "Games / WII"}
- {id: 43, cat: Console/NDS, desc: "Games / NDS"}
- {id: 44, cat: Console/PS4, desc: "Games / PS4"}
- {id: 5, cat: PC, desc: "Software"}
- {id: 45, cat: PC/ISO, desc: "Software / PC ISO"}
- {id: 46, cat: PC/Mobile-Other, desc: "Software / Smartphone"}
- {id: 47, cat: PC, desc: "Software / Tutorial"}
- {id: 48, cat: PC/Mac, desc: "Software / MAC"}
- {id: 49, cat: PC/Mobile-Android, desc: "Software / Android"}
- {id: 50, cat: PC/Mobile-iOS, desc: "Software / iOS"}
- {id: 51, cat: PC/Mobile-Other, desc: "Software / WM7"}
- {id: 6, cat: XXX, desc: "XXX"}
- {id: 52, cat: XXX, desc: "XXX / Porn"}
- {id: 53, cat: XXX, desc: "XXX / XXX HD"}
- {id: 7, cat: Other, desc: "Misc"}
- {id: 54, cat: Other/Misc, desc: "Misc / Other"}
- {id: 55, cat: Books/EBook, desc: "Misc / e-Books"}
- {id: 56, cat: Other, desc: "Misc / Banned"}
- {id: 57, cat: TV/Sport, desc: "Misc / Sports"}
- {id: 58, cat: PC/0day, desc: "Misc / 0-Day"}
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: downloadlink
type: select
label: Download link
default: "magnet:?xt="
options:
"/en/torrents/download/?key=": ".torrent"
"magnet:?xt=": "magnet"
- name: downloadlink2
type: select
label: Download link (fallback)
default: "/en/torrents/download/?key="
options:
"/en/torrents/download/?key=": ".torrent"
"magnet:?xt=": "magnet"
- name: info_download
type: info
label: About the Download links
default: You can optionally set as a fallback an automatic alternate link, so if the .torrent download link fails your download will still be successful.
login:
path: en/users/signin/
method: form
form: form[action="/en/users/signin/"]
inputs:
username_or_email: "{{ .Config.username }}"
password: "{{ .Config.password }}"
captcha:
type: image
selector: img[src="/captcha.php"]
input: captcha
error:
- selector: div.row div#container div.alert
test:
path: en/
selector: a[href="/en/users/logout/"]
download:
selectors:
- selector: a[href^="{{ .Config.downloadlink }}"]
attribute: href
- selector: a[href^="{{ .Config.downloadlink2 }}"]
attribute: href
search:
paths:
# https://arenabg.com/en/torrents/?text=ice+s01e01
- path: en/torrents/
inputs:
text: "{{ .Keywords }}"
subtitles: ""
audio: ""
# does not support multi-cats so defaulting to all
category: ""
rows:
selector: tr:has(a[href^="/en/torrents/?category="])
fields:
category:
selector: td.category a[href^="/en/torrents/?category="]:last-of-type
attribute: href
filters:
- name: querystring
args: category
_english:
selector: span[title="English"]
attribute: title
optional: true
_bulgarian:
selector: span[title="Bulgarian"]
attribute: title
optional: true
title:
selector: td.filename a.title
filters:
- name: append
args: "{{ if .Result._bulgarian }} {{ .Result._bulgarian }}{{ else }}{{ end }}{{ if .Result._english }} {{ .Result._english }}{{ else }}{{ end }}"
details:
selector: td.filename a.title
attribute: href
download:
selector: td.filename a.title
attribute: href
poster:
selector: td.filename a.title
attribute: onmouseover
filters:
- name: regexp
args: "\"(.+?)\""
- name: replace
args: ["\\", ""]
date:
# 2 January 2021, Saturday @ 20:46
selector: small
filters:
- name: regexp
args: "(.+?, .+? @ [0-9]{2}:[0-9]{2})"
- name: append
args: " +02:00" # EET
- name: dateparse
args: "d MMMM yyyy, dddd @ HH:mm zzz"
size:
selector: td:nth-child(3)
seeders:
selector: td:nth-child(4)
leechers:
selector: td:nth-child(5)
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a
@@ -0,0 +1,194 @@
---
id: asiancinema
name: AsianCinema
description: "Tracker Movies/TV/Music"
language: en-US
type: private
encoding: UTF-8
links:
- https://eiga.moi/
legacylinks:
- https://asiancinema.me/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Music"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
settings:
- name: 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: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_activity
type: info
label: Account Inactivity
default: "Your account will be automatically deleted from the database after 90 days of inactivity. If you return or visit the site with your account before that amount of time passes, then the inactivity timer will reset and your account will be fine for another 90 days.<br>Keep in mind that 'activity' is considered a visit to any page and that torrent traffic is not counted as account activity. In order to reset the inactivity timer all you have to do is visit a single page while logged in with your account. If your account is deleted for inactivity, please do not ask the site staff to un-delete it for you. The deletion is performed automatically by the server and, as such, your account cannot be recovered after it has been deleted."
login:
# note APIKEY is broken on this 5.3.0 site
path: login
method: form
form: form[action$="/login"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: on
selectorinputs:
_token:
selector: input[name="_token"]
attribute: value
error:
- selector: div#ERROR_COPY
# test:
# path: /
# selector: a[href$="/logout"]
search:
paths:
- path: torrents/filter
inputs:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
search: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
imdb: "{{ .Query.IMDBIDShort }}"
tvdb: "{{ .Query.TVDBID }}"
tmdb: "{{ .Query.TMDBID }}"
sorting: "{{ .Config.sort }}"
direction: "{{ .Config.type }}"
qty: 100
freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
# can support genre search but you need to know the id. &genre[]=10759 for Action & Adventure
# does not have genre in results, they are on the details page.
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/(\\d+)"
title:
selector: a.view-torrent
download:
selector: a[href*="/download/"]
attribute: href
details:
selector: a.view-torrent
attribute: href
poster:
selector: div.torrent-poster img
attribute: src
filters:
- name: prepend
args: "https://images.weserv.nl/?url=" # for display on dashboard
- name: append
args: "&w=180&h=270" # for display on dashboard
- name: replace
args: ["https://images.weserv.nl/?url=https://via.placeholder.com/600x900&w=180&h=270", ""]
size:
selector: td:nth-last-child(4)
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
grabs:
selector: td:nth-last-child(1)
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
tmdbid:
selector: a[href*="themoviedb.org/movie/"], a[href*="themoviedb.org/tv/"]
attribute: href
date:
selector: time
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
- name: re_replace
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前|sedan)", " ago"]
- name: re_replace
args: ["(?i)(saniye|sekundit|sekunder|secondi|sekund|segundos|sekundami|секунд|secunde|secondes|Sekunden|секунди|seconden|秒前)", "seconds"]
- name: re_replace
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten|minuter)", "minutes"]
- name: re_replace
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟|分)", " minute"]
- name: re_replace
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden|timmar)", "hours"]
- name: re_replace
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間|timme)", " hour"]
- name: re_replace
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen|dagar)", "days"]
- name: re_replace
args: ["(?i)(gün|päev|dag|giorno|dzień|dia|den|день|zi|día|jour|Tag|ден|天|日)", " day"]
- name: re_replace
args: ["(?i)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken|veckor)", "weeks"]
- name: re_replace
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間|vecka)", " week"]
- name: re_replace
args: ["(?i) (ay)", "month"]
- name: re_replace
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden|månader)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月|månad)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
- name: re_replace
args: ["(?i)(För |und)", ""] # Misc removals
- name: timeago
downloadvolumefactor:
case:
i[class*="fa-id-badge text-orange"]: 0 # 24 Hour FreeLeech From BON Store
i[class*="fa-trophy text-purple"]: 0 # Special FreeLeech For Certain User Groups
i[class*="fa-star text-bold"]: 0 # Freeleech From Token
i[class*="fa-coins text-bold"]: 0 # Freeleech From Token
i[class*="fa-globe text-blue"]: 0 # Global Freeleech
i[class*="fa-star text-gold"]: 0 # Freeleech
i[class*="fa-certificate text-pink"]: 0 # Featured Torrent
"*": 1
uploadvolumefactor:
case:
i[class*="fa-gem text-green"]: 2 # Single Torrent Double Upload
i[class*="fa-globe text-green"]: 2 # Global Double Upload
i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
"*": 1
minimumratio:
text: 0.4
minimumseedtime:
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
# UNIT3D 5.3.0
@@ -0,0 +1,162 @@
---
id: asiandvdclub
name: AsianDVDClub
description: "AsianDVDClub (ADC) is a Private Torrent Tracker for Asian DVD and BluRay"
language: en-US
type: private
encoding: UTF-8
links:
- https://asiandvdclub.org/
caps:
categorymappings:
- {id: 1, cat: TV/Anime, desc: "Anime"}
- {id: 3, cat: Movies, desc: "Japan"}
- {id: 5, cat: Movies, desc: "China"}
- {id: 4, cat: Movies, desc: "Korea"}
- {id: 2, cat: Movies, desc: "Hong Kong"}
- {id: 6, cat: Movies, desc: "Philippines"}
- {id: 7, cat: Movies, desc: "Taiwan"}
- {id: 8, cat: Movies, desc: "Thailand"}
- {id: 9, cat: Movies, desc: "Vietnam"}
- {id: 10, cat: Movies, desc: "Malaysia"}
- {id: 11, cat: Movies, desc: "Other Asian"}
- {id: 12, cat: Other, desc: "Miscellaneous"}
- {id: 15, cat: TV, desc: "TV Series"}
- {id: 16, cat: Audio, desc: "Music/OST"}
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: added
options:
added: created
up: seeders
size: size
title: 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: "No special action required for red ribbons and permanent sponsors and above regardless of time, for others after 1 year of zero activity on tracker and/or website account will be closed."
login:
path: login
method: post
inputs:
apple: evil
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: b:contains("Try again")
test:
path: index.php
selector: a[href="/logout"]
search:
paths:
- path: torrents/
inputs:
$raw: "{{ range .Categories }}countries[]={{.}}&{{end}}"
searchbox: "{{ .Keywords }}"
search: Search
golden: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
column: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
rows:
selector: table.torrenttable_helper > tbody > tr:has(img)
fields:
category_optional:
selector: img[class^="cat-"]
attribute: class
optional: true
case:
img.cat-anime: 1
img.cat-hk: 2
img.cat-japan: 3
img.cat-korea: 4
img.cat-china: 5
img.cat-phil: 6
img.cat-taiwan: 7
img.cat-thai: 8
img.cat-viet: 9
img.cat-malaysia: 10
img.cat-rest: 11
img.cat-india: 11
img.cat-misc: 12
img.cat-pinku: 12
img.cat-drama: 15
img.cat-ost: 16
category:
text: "{{ if .Result.category_optional }}{{ .Result.category_optional }}{{ else }}12{{ end }}"
title:
selector: span[id]
details:
selector: a[href^="/torrent/"]
attribute: href
download:
selector: a[href^="/torrent/"]
attribute: href
filters:
- name: replace
args: ["torrent", "download"]
poster:
selector: span[id]
attribute: data-ot
filters:
- name: regexp
args: src='(.+?)'
size:
selector: td:nth-child(6)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
date:
selector: td:nth-child(9) span.small
filters:
- name: timeago
grabs:
selector: td:nth-child(10)
downloadvolumefactor:
case:
img[src$="images/golden.gif"]: 0
img[src$="images/silver.gif"]: 0.5
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.5
minimumseedtime:
# 45 days (as seconds = 45 x 24 x 60 x 60)
text: 3888000
# Engine n/a
@@ -0,0 +1,169 @@
---
id: audiences
name: Audiences
description: "Audiences is a CHINESE Private Torrent Tracker for MOVIES / TV / GENERAL"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://audiences.me/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "电影/Movies"}
- {id: 402, cat: TV, desc: "剧集/TV-Series"}
- {id: 403, cat: TV, desc: "综艺/TV-Show"}
- {id: 406, cat: TV/Documentary, desc: "纪录片/Documentary"}
- {id: 408, cat: Audio, desc: "音乐/Music"}
- {id: 404, cat: Audio/Audiobook, desc: "有声书/Audiobook"}
- {id: 405, cat: Books, desc: "电子书/Ebook"}
- {id: 407, cat: TV/Sport, desc: "体育/Sports"}
- {id: 410, cat: PC/Games, desc: "游戏/Game"}
- {id: 411, cat: PC/0day, desc: "软件/Software"}
- {id: 410, cat: TV, desc: "学习/Study"}
- {id: 409, cat: Other, desc: "其他/Other"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, doubanid]
movie-search: [q, imdbid, doubanid]
music-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info_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>Users with Extreme User and above will be retained forever</li><li>Starting from 20230701, the non-login ban time will be adjusted to:<ul><li>(Home Alone) User - 40 days</li><li>(Young and vigorous) Power User - 60 days</li><li>(Children of Jianghu) Elite User - 80 days</li><li>(Street Fighter) Crazy User - 100 days</li><li>(non-stop) Insane User - 120 days</li><li>(Outstanding Citizen) Veteran User - 180 days</li></ul></li><li>Users with no traffic (i.e. uploading/downloading data) If it is 0) If you do not log in for 7 consecutive days will be disabled</li><li>'Parked accounts' no longer enjoy the benefits of retaining accounts, and are also subject to the above rules.</li></ol>"
login:
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 justdead
incldead: 0
# promotion: 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x 50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 2 title or imdb or douban url, 3 uploader, 4 imdb
search_area: "{{ if or .Query.IMDBID .Query.DoubanID }}2{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[title][href^="details.php?id="]
attribute: title
details:
selector: a[title][href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
selector: a[href*="movie.douban.com/subject/"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
description:
selector: td:nth-child(2)
remove: a, img
# NexusPHP Standard v1.5 Beta 4
@@ -0,0 +1,334 @@
---
id: audionews
name: AudioNews
description: "AudioNews (AN) is a Private Torrent Tracker for AUDIO SOFTWARE / SAMPLES / ETC"
language: en-US
type: private
encoding: UTF-8
links:
- https://audionews.org/
caps:
categorymappings:
- {id: 106, cat: PC/Mobile-Other, desc: "Mobile Apps"}
- {id: 161, cat: PC/Mobile-iOS, desc: "Mobile Apps iOS"}
- {id: 160, cat: PC/Mobile-Android, desc: "Mobile Apps Android"}
- {id: 12, cat: PC, desc: "AUDIOAPPS"}
- {id: 32, cat: PC, desc: "AUDIOAPPS DAW Apps"}
- {id: 175, cat: PC, desc: "AUDIOAPPS Ableton"}
- {id: 177, cat: PC, desc: "AUDIOAPPS Cakewalk"}
- {id: 176, cat: PC, desc: "AUDIOAPPS REAPER"}
- {id: 174, cat: PC, desc: "AUDIOAPPS Steinberg"}
- {id: 34, cat: PC, desc: "AUDIOAPPS Mastering &Audio Editor Apps"}
- {id: 37, cat: PC, desc: "AUDIOAPPS DJ Apps"}
- {id: 13, cat: Audio, desc: "SAMPLE LIBRARIES"}
- {id: 62, cat: Audio, desc: "SAMPLE LIBRARIES AMG"}
- {id: 117, cat: Audio, desc: "SAMPLE LIBRARIES Bela D Media"}
- {id: 118, cat: Audio, desc: "SAMPLE LIBRARIES Beta Monkey Music"}
- {id: 51, cat: Audio, desc: "SAMPLE LIBRARIES Best Service"}
- {id: 46, cat: Audio, desc: "SAMPLE LIBRARIES Big Fish"}
- {id: 66, cat: Audio, desc: "SAMPLE LIBRARIES Bigga Giggas"}
- {id: 122, cat: Audio, desc: "SAMPLE LIBRARIES Bluezone Corporation"}
- {id: 123, cat: Audio, desc: "SAMPLE LIBRARIES Bunker 8"}
- {id: 126, cat: Audio, desc: "SAMPLE LIBRARIES Cinematique Instruments"}
- {id: 127, cat: Audio, desc: "SAMPLE LIBRARIES CineSamples"}
- {id: 128, cat: Audio, desc: "SAMPLE LIBRARIES ClusterSound"}
- {id: 121, cat: Audio, desc: "SAMPLE LIBRARIES Dan Dean"}
- {id: 195, cat: Audio, desc: "SAMPLE LIBRARIES Diginoiz"}
- {id: 52, cat: Audio, desc: "SAMPLE LIBRARIES Digital Juice"}
- {id: 134, cat: Audio, desc: "SAMPLE LIBRARIES Digital-Redux"}
- {id: 65, cat: Audio, desc: "SAMPLE LIBRARIES Digital Vision"}
- {id: 59, cat: Audio, desc: "SAMPLE LIBRARIES Discovery Firm"}
- {id: 61, cat: Audio, desc: "SAMPLE LIBRARIES Drumdrops"}
- {id: 40, cat: Audio, desc: "SAMPLE LIBRARIES East West"}
- {id: 74, cat: Audio, desc: "SAMPLE LIBRARIES Electronisounds"}
- {id: 80, cat: Audio, desc: "SAMPLE LIBRARIES EMU format"}
- {id: 82, cat: Audio, desc: "SAMPLE LIBRARIES ENSONIQ format"}
- {id: 111, cat: Audio, desc: "SAMPLE LIBRARIES Fatloud"}
- {id: 135, cat: Audio, desc: "SAMPLE LIBRARIES Fox Samples"}
- {id: 41, cat: Audio, desc: "SAMPLE LIBRARIES FxPansion"}
- {id: 130, cat: Audio, desc: "SAMPLE LIBRARIES Goldbaby"}
- {id: 54, cat: Audio, desc: "SAMPLE LIBRARIES Hollywood Edge"}
- {id: 64, cat: Audio, desc: "SAMPLE LIBRARIES IK Multimedia"}
- {id: 75, cat: Audio, desc: "SAMPLE LIBRARIES Ilio"}
- {id: 108, cat: Audio, desc: "SAMPLE LIBRARIES Industrial Strength Records"}
- {id: 81, cat: Audio, desc: "SAMPLE LIBRARIES KURZWEIL format"}
- {id: 91, cat: Audio, desc: "SAMPLE LIBRARIES Loopmasters"}
- {id: 92, cat: Audio, desc: "SAMPLE LIBRARIES Masterbits"}
- {id: 58, cat: Audio, desc: "SAMPLE LIBRARIES M-Audio"}
- {id: 112, cat: Audio, desc: "SAMPLE LIBRARIES Mutekki"}
- {id: 137, cat: Audio, desc: "SAMPLE LIBRARIES Mystic Kingz"}
- {id: 47, cat: Audio, desc: "SAMPLE LIBRARIES Native Instruments"}
- {id: 60, cat: Audio, desc: "SAMPLE LIBRARIES Nine Volt Audio"}
- {id: 129, cat: Audio, desc: "SAMPLE LIBRARIES OrangeTree"}
- {id: 203, cat: Audio, desc: "SAMPLE LIBRARIES Origin Sound"}
- {id: 154, cat: Audio, desc: "SAMPLE LIBRARIES P5Audio"}
- {id: 133, cat: Audio, desc: "SAMPLE LIBRARIES Peace Love Productions"}
- {id: 140, cat: Audio, desc: "SAMPLE LIBRARIES Pound Audio"}
- {id: 110, cat: Audio, desc: "SAMPLE LIBRARIES Prime Loops"}
- {id: 180, cat: Audio, desc: "SAMPLE LIBRARIES Producer Loops"}
- {id: 50, cat: Audio, desc: "SAMPLE LIBRARIES Prominy"}
- {id: 171, cat: Audio, desc: "SAMPLE LIBRARIES Pulsed Records"}
- {id: 132, cat: Audio, desc: "SAMPLE LIBRARIES Puremagnetik"}
- {id: 49, cat: Audio, desc: "SAMPLE LIBRARIES Refills"}
- {id: 99, cat: Audio, desc: "SAMPLE LIBRARIES reFX Nexus"}
- {id: 125, cat: Audio, desc: "SAMPLE LIBRARIES Realsamples"}
- {id: 83, cat: Audio, desc: "SAMPLE LIBRARIES ROLAND format"}
- {id: 109, cat: Audio, desc: "SAMPLE LIBRARIES Sample Magic"}
- {id: 136, cat: Audio, desc: "SAMPLE LIBRARIES Samplephonics"}
- {id: 43, cat: Audio, desc: "SAMPLE LIBRARIES Sampletekk"}
- {id: 48, cat: Audio, desc: "SAMPLE LIBRARIES Scarbee"}
- {id: 178, cat: Audio, desc: "SAMPLE LIBRARIES SFX (Sound FX libraries)"}
- {id: 90, cat: Audio, desc: "SAMPLE LIBRARIES Smartsound"}
- {id: 172, cat: Audio, desc: "SAMPLE LIBRARIES Sonart Audio"}
- {id: 116, cat: Audio, desc: "SAMPLE LIBRARIES SonicCouture"}
- {id: 42, cat: Audio, desc: "SAMPLE LIBRARIES Sonic Implants"}
- {id: 115, cat: Audio, desc: "SAMPLE LIBRARIES Sonic Reality"}
- {id: 53, cat: Audio, desc: "SAMPLE LIBRARIES Sound Ideas"}
- {id: 56, cat: Audio, desc: "SAMPLE LIBRARIES Sony"}
- {id: 139, cat: Audio, desc: "SAMPLE LIBRARIES Sounds To Sample"}
- {id: 76, cat: Audio, desc: "SAMPLE LIBRARIES Spectrasonics"}
- {id: 162, cat: Audio, desc: "SAMPLE LIBRARIES Spitfire Audio"}
- {id: 193, cat: Audio, desc: "SAMPLE LIBRARIES studiolinked"}
- {id: 68, cat: Audio, desc: "SAMPLE LIBRARIES Synthogy"}
- {id: 179, cat: Audio, desc: "SAMPLE LIBRARIES The Loop Loft"}
- {id: 96, cat: Audio, desc: "SAMPLE LIBRARIES Tonehammer, 8dio, SoundIron"}
- {id: 67, cat: Audio, desc: "SAMPLE LIBRARIES Toontrack, Drumkit From Hell, DFHS"}
- {id: 69, cat: Audio, desc: "SAMPLE LIBRARIES Ueberschall"}
- {id: 157, cat: Audio, desc: "SAMPLE LIBRARIES USB Soundscan"}
- {id: 120, cat: Audio, desc: "SAMPLE LIBRARIES Valentino Production"}
- {id: 173, cat: Audio, desc: "SAMPLE LIBRARIES vandalism sounds"}
- {id: 170, cat: Audio, desc: "SAMPLE LIBRARIES Vanilla Groove Studios"}
- {id: 119, cat: Audio, desc: "SAMPLE LIBRARIES Vengeance Sound"}
- {id: 114, cat: Audio, desc: "SAMPLE LIBRARIES Video Helper"}
- {id: 44, cat: Audio, desc: "SAMPLE LIBRARIES Vienna"}
- {id: 77, cat: Audio, desc: "SAMPLE LIBRARIES Vipzone"}
- {id: 131, cat: Audio, desc: "SAMPLE LIBRARIES Wavesfactory"}
- {id: 89, cat: Audio, desc: "SAMPLE LIBRARIES West one"}
- {id: 113, cat: Audio, desc: "SAMPLE LIBRARIES Wusik.com"}
- {id: 78, cat: Audio, desc: "SAMPLE LIBRARIES Yellowtools"}
- {id: 138, cat: Audio, desc: "SAMPLE LIBRARIES YnK.Audio"}
- {id: 100, cat: Audio, desc: "SAMPLE LIBRARIES Zenhiser"}
- {id: 57, cat: Audio, desc: "SAMPLE LIBRARIES Zero-G"}
- {id: 15, cat: PC, desc: "VSTi + FX"}
- {id: 72, cat: PC, desc: "VSTi + FX FX"}
- {id: 181, cat: PC, desc: "VSTi + FX VSTi"}
- {id: 18, cat: PC/Mac, desc: "MAC"}
- {id: 186, cat: PC/Mac, desc: "MAC Apps"}
- {id: 188, cat: PC/Mac, desc: "MAC FX"}
- {id: 189, cat: PC/Mac, desc: "MAC Instruments"}
- {id: 190, cat: PC/Mac, desc: "MAC TUTORIAL"}
- {id: 187, cat: PC/Mac, desc: "MAC Samples"}
- {id: 19, cat: Other, desc: "MISC"}
- {id: 185, cat: Other, desc: "MISC Utilities"}
- {id: 84, cat: Books, desc: "SHEET MUSIC"}
- {id: 87, cat: Books, desc: "SHEET MUSIC Full Score"}
- {id: 86, cat: Books, desc: "SHEET MUSIC Guitar"}
- {id: 88, cat: Books, desc: "SHEET MUSIC Other instruments"}
- {id: 85, cat: Books, desc: "SHEET MUSIC Piano"}
- {id: 20, cat: Books, desc: "LEARNING"}
- {id: 197, cat: Books, desc: "LEARNING Academy.FM"}
- {id: 183, cat: Books, desc: "LEARNING ADSR"}
- {id: 141, cat: Books, desc: "LEARNING Alfred"}
- {id: 142, cat: Books, desc: "LEARNING Ask Video"}
- {id: 27, cat: Books, desc: "LEARNING Books"}
- {id: 143, cat: Books, desc: "LEARNING FaderPro"}
- {id: 144, cat: Books, desc: "LEARNING Groove3"}
- {id: 145, cat: Books, desc: "LEARNING Hal Leonard"}
- {id: 105, cat: Books, desc: "LEARNING Hardware manuals"}
- {id: 196, cat: Books, desc: "LEARNING Jam Track Central"}
- {id: 146, cat: Books, desc: "LEARNING Lick Library"}
- {id: 147, cat: Books, desc: "LEARNING Lynda.com"}
- {id: 148, cat: Books, desc: "LEARNING MacProVideo"}
- {id: 101, cat: Books, desc: "LEARNING Magazines"}
- {id: 93, cat: Books, desc: "LEARNING Music Video (Concerts, DVD, DVDrip)"}
- {id: 199, cat: Books, desc: "LEARNING PUREMIX"}
- {id: 149, cat: Books, desc: "LEARNING Riff Interactive"}
- {id: 194, cat: Books, desc: "LEARNING SkillShare"}
- {id: 150, cat: Books, desc: "LEARNING Sonic Academy"}
- {id: 151, cat: Books, desc: "LEARNING Total training"}
- {id: 152, cat: Books, desc: "LEARNING TrueFire"}
- {id: 182, cat: Books, desc: "LEARNING Udemy"}
- {id: 28, cat: Books, desc: "LEARNING Video"}
- {id: 153, cat: Books, desc: "LEARNING VTC"}
- {id: 29, cat: Audio/Other, desc: "PRESETS"}
- {id: 167, cat: Audio/Other, desc: "PRESETS Ableton Live"}
- {id: 184, cat: Audio/Other, desc: "PRESETS Impulse Responses"}
- {id: 166, cat: Audio/Other, desc: "PRESETS Massive"}
- {id: 163, cat: Audio/Other, desc: "PRESETS Nebula"}
- {id: 200, cat: Audio/Other, desc: "PRESETS Omnisphere"}
- {id: 165, cat: Audio/Other, desc: "PRESETS Reaktor"}
- {id: 201, cat: Audio/Other, desc: "PRESETS Xfer Serum"}
- {id: 164, cat: Audio/Other, desc: "PRESETS Sylenth"}
- {id: 168, cat: Audio/Other, desc: "PRESETS Toontrack"}
- {id: 239, cat: Books, desc: "Service Manuals"}
- {id: 21, cat: Other, desc: "UPDATE"}
- {id: 222, cat: Other, desc: "GFXNEWS 3D"}
- {id: 235, cat: Other, desc: "GFXNEWS APPS ANDROID & IOS"}
- {id: 207, cat: Other, desc: "GFXNEWS APPS WIN"}
- {id: 215, cat: Other, desc: "GFXNEWS APPS LINUX"}
- {id: 214, cat: Other, desc: "GFXNEWS APPS MAC"}
- {id: 211, cat: Other, desc: "GFXNEWS BOOKS"}
- {id: 224, cat: Other, desc: "GFXNEWS CAD/CAM"}
- {id: 237, cat: Other, desc: "GFXNEWS DAZ3D"}
- {id: 212, cat: Other, desc: "GFXNEWS FONTS"}
- {id: 213, cat: Other, desc: "GFXNEWS FOOTAGE"}
- {id: 233, cat: Other, desc: "GFXNEWS GAME DEVELOPMENT"}
- {id: 226, cat: Other, desc: "GFXNEWS MAGAZINE"}
- {id: 234, cat: Other, desc: "GFXNEWS MATERIAL"}
- {id: 243, cat: Other, desc: "GFXNEWS OTHER GRAPHICS"}
- {id: 244, cat: Other, desc: "GFXNEWS OTHER GRAPHICS Zbrush, Substance tools"}
- {id: 216, cat: Other, desc: "GFXNEWS PHOTOSTOCK"}
- {id: 220, cat: Other, desc: "GFXNEWS PHOTOGRAPHY - ART"}
- {id: 227, cat: Other, desc: "GFXNEWS 2D Graphics"}
- {id: 250, cat: Other, desc: "GFXNEWS 2D Graphics Effects"}
- {id: 228, cat: Other, desc: "GFXNEWS 2D Graphics Actions, Pattern & Styles"}
- {id: 229, cat: Other, desc: "GFXNEWS 2D Graphics Background & PSD Source"}
- {id: 230, cat: Other, desc: "GFXNEWS 2D Graphics Brushes & Gradient"}
- {id: 246, cat: Other, desc: "GFXNEWS 2D Graphics Mockup"}
- {id: 247, cat: Other, desc: "GFXNEWS 2D Graphics Overlays"}
- {id: 249, cat: Other, desc: "GFXNEWS 2D Graphics Preset"}
- {id: 231, cat: Other, desc: "GFXNEWS 2D Graphics Toolkits, Papers & Objects"}
- {id: 245, cat: Other, desc: "GFXNEWS GFX Plugins"}
- {id: 210, cat: Other, desc: "GFXNEWS PLUGINS WIN"}
- {id: 223, cat: Other, desc: "GFXNEWS PLUGINS MAC"}
- {id: 225, cat: Other, desc: "GFXNEWS PLUGINS LINUX"}
- {id: 217, cat: Other, desc: "GFXNEWS SCRIPTS - WEB PROGRAMMING"}
- {id: 218, cat: Other, desc: "GFXNEWS TEMPLATES"}
- {id: 232, cat: Other, desc: "GFXNEWS TEXTURES"}
- {id: 219, cat: Other, desc: "GFXNEWS TUTORIALS"}
- {id: 238, cat: Other, desc: "GFXNEWS VECTOR GRAPHICS"}
- {id: 221, cat: Other, desc: "GFXNEWS VIDEO PRODUCTION"}
modes:
search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: 1
options:
1: created
10: seeders
7: size
2: title
- name: type
type: select
label: Order requested from site
default: 2
options:
2: desc
1: asc
- name: info_activity
type: info
label: Account Inactivity
default: "You must stay active on the site...<ol><li>Any New users that have no stats for one month will have their account deleted</li><li>Any disabled accounts will be deleted after 6 months</li><li>Any accounts inactive for more than 6 months will be deleted</li><li>Donor accounts will be left untouched.</li></ol>"
login:
path: login.php
method: post
inputs:
"login_username": "{{ .Config.username }}"
"login_password": "{{ .Config.password }}"
autologin: 1
login: "Log in"
redirect: "/"
error:
- selector: table.error
message:
selector: table.error tr td div.msg
test:
path: /
selector: li a[href^="./login.php?logout=1"]
search:
paths:
- path: tracker.php
method: post
inputs:
$raw: "{{ if .Categories }}{{ range .Categories }}f[]={{.}}&{{end}}{{ else }}f[]=-1{{ end }}"
prev_allw: 1
prev_a: 0
prev_dla: 0
prev_dlc: 0
prev_dld: 0
prev_dlw: 0
prev_my: 0
prev_new: 0
prev_sd: 0
prev_da: 1
prev_dc: 0
prev_df: 1
prev_ds: 0
pre_tor_type: 0
prev_date_from: ""
prev_date_to: ""
prev_hide_rereg: 0
o: "{{ .Config.sort }}"
s: "{{ .Config.type }}"
df: 1
da: 1
nm: "{{ .Keywords }}"
pn: ""
submit: "Search"
rows:
selector: table.forumline > tbody > tr:has(a[href*="/dl.php?id="])
dateheaders:
selector: td[colspan="20"] > strong
filters:
- name: append
args: " -07:00" # PDT
- name: dateparse
args: "MM-dd-yyyy zzz"
fields:
title:
selector: td a[href*="/viewtopic.php?t="]
details:
selector: td a[href*="/viewtopic.php?t="]
attribute: href
download:
selector: td a[href*="/dl.php?id="]
attribute: href
category:
selector: td a[href*="/tracker.php?f="]
attribute: href
filters:
- name: querystring
args: f
size:
selector: td:contains(\00a0GB), td:contains(\00a0MB), td:contains(\00a0KB), td:contains(\00a0B)
optional: true
default: 0
seeders:
selector: td[title="Seeders"]
optional: true
default: 0
leechers:
selector: td[title="Leechers"]
optional: true
default: 0
grabs:
selector: td[title^="Replies:"]
optional: true
default: 0
description:
case:
span.tor-approved: Verified
span.tor-not-approved: Unverified
downloadvolumefactor:
text: 1
uploadvolumefactor:
text: 1
minimumratio:
text: 0.8
# engine n/a
@@ -0,0 +1,92 @@
---
id: aussierules
name: Aussierul.es
description: "Aussierul.es is a torrent site for Aussie Rules Football played in Australia"
language: en-AU
type: private
encoding: UTF-8
links:
- https://aussierul.es/
caps:
categories:
1: TV/Sport
modes:
search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: type
label: Search Type
type: select
default: t_name
options:
t_name: Torrent Name
t_description: Torrent Description
t_both: Name & Description
t_uploader: Uploader
t_genre: IMDB Genre
- name: dead
label: Include Dead Torrents
type: select
default: No
options:
yes: Yes
no: No
login:
method: form
form: form
path: login.php
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: table:contains("An error has occured!")
test:
path: browse.php
selector: a[href*="logout.php"]
search:
paths:
- path: browse.php
inputs:
search_type: "{{ .Config.type }}"
include_dead_torrents: "{{ .Config.dead }}"
keywords: "{{ .Keywords }}"
rows:
selector: table#sortabletable > tbody > tr:not(:first-child)
fields:
category:
text: 1
title:
selector: td:nth-child(2) > div:nth-child(1) > a > strong
details:
selector: td:nth-child(2) > div:nth-child(1) > a
attribute: href
download:
selector: a[href*="download.php?id="]
attribute: href
date:
# 27-03-2021 18:34
selector: td:nth-child(2) > div:nth-child(2)
filters:
- name: dateparse
args: "d-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)
# TS Special Edition v.7.4
+173
View File
@@ -0,0 +1,173 @@
---
id: azusa
name: Azusa (梓喵)
description: "Azusa (梓喵) is a CHINESE Private Torrent Tracker focusing on Comics"
language: zh-CN
type: private
encoding: UTF-8
links:
- https://azusa.wiki/
caps:
categorymappings:
- {id: 404, cat: PC/Games, desc: "Game"}
- {id: 402, cat: Books/Comics, desc: "Comic"}
- {id: 403, cat: Books/EBook, desc: "Light Novel"}
- {id: 407, cat: Other, desc: "CG"}
- {id: 409, cat: Audio, desc: "Music"}
modes:
search: [q]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: 2facode
type: text
label: 2FA code
- name: info_2fa
type: info
label: "About 2FA code"
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> on the Uploads Web Site. Otherwise just leave it empty."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs:
secret: ""
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
two_step_code: "{{ .Config.2facode }}"
logout: ""
securelogin: ""
ssl: yes
trackerssl: ""
error:
- selector: td.embedded:has(h2:contains("失败"))
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 incldead, 1 active, 2 dead
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdburl
search_area: 0
# 0 AND, 1 OR, 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
notnewword: 1
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title_default:
selector: a[href^="details.php?id="]
title:
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
date_elapsed:
# time type: time elapsed (default)
selector: td.rowfollow:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
date_added:
# time added
selector: td.rowfollow:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
size:
selector: td.rowfollow:nth-child(5)
seeders:
selector: td.rowfollow:nth-child(6)
leechers:
selector: td.rowfollow:nth-child(7)
grabs:
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
description:
selector: td:nth-child(2)
remove: a, b, font, img, span
# NexusPHP v1.7.20 2022-08-05
@@ -0,0 +1,173 @@
---
id: backups
name: Back-ups
description: "Back-Ups is a Private Torrent Tracker for MOVIES / TV / GENERAL"
language: en-US
type: private
encoding: UTF-8
links:
- https://back-ups.me/
caps:
categorymappings:
- {id: 15, cat: PC/Mobile-Android, desc: "Android"}
- {id: 35, cat: TV/Anime, desc: "Anime"}
- {id: 51, cat: PC/Mac, desc: "Apple"}
- {id: 3, cat: PC, desc: "Apps"}
- {id: 64, cat: Audio/Audiobook, desc: "Audiobooks"}
- {id: 71, cat: Console, desc: "Batocera"}
- {id: 4, cat: Movies/BluRay, desc: "Blu-Ray"}
- {id: 22, cat: Console, desc: "CoinOps"}
- {id: 42, cat: Console, desc: "CoinOPS Official"}
- {id: 65, cat: Console, desc: "CoinOps Unofficial"}
- {id: 63, cat: Books/Comics, desc: "Comics"}
- {id: 60, cat: Console, desc: "Core"}
- {id: 72, cat: Console, desc: "CORE Community"}
- {id: 44, cat: Console, desc: "CP78"}
- {id: 16, cat: TV/Documentary, desc: "Docu"}
- {id: 41, cat: Console, desc: "Dragon"}
- {id: 5, cat: Books, desc: "EBooks"}
- {id: 61, cat: Console, desc: "emuxtras"}
- {id: 69, cat: TV, desc: "Entertainment"}
- {id: 34, cat: TV, desc: "Kids"}
- {id: 43, cat: Console, desc: "LB No Intro"}
- {id: 33, cat: TV/Sport, desc: "MMA/Boxing"}
- {id: 32, cat: Movies, desc: "Movie Pack"}
- {id: 6, cat: Movies, desc: "Movies/XVID"}
- {id: 7, cat: Audio, desc: "Music"}
- {id: 31, cat: Console, desc: "Nintendo"}
- {id: 59, cat: Console, desc: "P-R-U"}
- {id: 8, cat: PC/Games, desc: "PC Games"}
- {id: 50, cat: Console, desc: "PlayBox"}
- {id: 30, cat: Console, desc: "Playstation"}
- {id: 62, cat: Console, desc: "RaspberryPi"}
- {id: 56, cat: Console, desc: "Retro Minis"}
- {id: 67, cat: Console, desc: "Retrobat"}
- {id: 76, cat: Console, desc: "RGS"}
- {id: 27, cat: Console, desc: "Roms and Emulators"}
- {id: 68, cat: Console, desc: "Schmoomer's"}
- {id: 57, cat: Console, desc: "Sega"}
- {id: 40, cat: TV, desc: "Soaps"}
- {id: 29, cat: TV/Sport, desc: "Sport"}
- {id: 9, cat: TV, desc: "TV-Boxsets"}
- {id: 11, cat: TV, desc: "TV/x264"}
- {id: 10, cat: TV, desc: "TV/Xvid"}
- {id: 73, cat: Console, desc: "Wolfanoz"}
- {id: 14, cat: TV/Sport, desc: "WWE"}
- {id: 26, cat: Console, desc: "Xbox"}
- {id: 12, cat: Console, desc: "XBOX360"}
- {id: 23, cat: XXX, desc: "xxx18+"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Filter freeleech only
default: false
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>40</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "To keep records updated regularly, all inactive accounts will be deleted after 60 days of inactivity."
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: td:contains("remaining tries")
test:
path: browse.php
selector: a[href*="/logout.php"]
search:
paths:
- path: browse.php
keywordsfilters:
# remove words <= 3 characters and surrounding special characters
- name: re_replace
args: ["(?:^|\\s)[_\\+\\/\\.\\-\\(\\)]*[\\S]{0,3}[_\\+\\/\\.\\-\\(\\)]*(?:\\s|$)", " "]
inputs:
do: search
keywords: "{{ .Keywords }}"
# t_name, t_description, t_both, t_uploader, t_genre
search_type: t_name
category: 0 # multi cat search not supported
# yes, no
include_dead_torrents: yes
# sort is done via do=quick_sort, and freeleech sorting is part of that set
rows:
selector: "table#sortabletable > tbody > tr:has(a[href*=\"/details.php?id=\"]){{ if .Config.freeleech }}:has(img[src$=\"freedownload.gif\"]){{ else }}{{ end }}"
filters:
- name: andmatch
args: 66
fields:
category:
selector: a[href*="/browse.php?category="]
attribute: href
filters:
- name: querystring
args: category
title_default:
selector: a[href*="/details.php?id="]
title:
selector: div.tooltip-content > div
optional: true
default: "{{ .Result.title_default }}"
details:
selector: a[href*="/details.php?id="]
attribute: href
download:
selector: a[href*="/download.php?id="]
attribute: href
magnet:
selector: a[href^="magnet:?xt="]
attribute: href
size:
selector: td:nth-child(5)
grabs:
selector: td:nth-child(6)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
poster:
selector: div.tooltip-content > img
attribute: src
downloadvolumefactor:
case:
img[src$="freedownload.gif"]: 0
img[src$="silverdownload.gif"]: 0.5
"*": 1
uploadvolumefactor:
case:
img[src$="x2.gif"]: 2
"*": 1
date:
selector: "td:nth-child(2) > div:has(span[style=\"float: right;\"])"
remove: span
filters:
- name: append
args: " +00:00" # GMT
- name: dateparse
args: "dd-MM-yyyy HH:mm zzz"
# TS Special Edition v.8.0
@@ -0,0 +1,104 @@
---
id: badasstorrents
name: Badass Torrents
description: "Badass Torrents is a Public torrent site for MOVIES / TV / GENERAL"
language: en-US
type: public
encoding: UTF-8
requestDelay: 5
links:
- https://badasstorrents.com/
legacylinks:
- https://badasstorrents.mrunblock.bond/
- https://badasstorrents.nocensor.cloud/
caps:
categories:
Anime: TV/Anime
Apps: PC
Books: Books
Games: PC/Games
Movies: Movies
Music: Audio
Other: Other
TV: TV
XXX: XXX
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q, album, artist]
book-search: [q]
settings:
- name: downloadlink
type: select
label: Download link
default: "magnet:?xt="
options:
"/d/": ".torrent"
"magnet:?xt=": "magnet"
- name: downloadlink2
type: select
label: Download link (fallback)
default: "/d/"
options:
"/d/": ".torrent"
"magnet:?xt=": "magnet"
- name: info_download
type: info
label: About the Download links
default: You can optionally set as a fallback an automatic alternate link, so if the .torrent download link fails your download will still be successful.
download:
selectors:
- selector: a[href*="{{ .Config.downloadlink }}"]
attribute: href
- selector: a[href*="{{ .Config.downloadlink2 }}"]
attribute: href
search:
paths:
# search has 10 torrents per page, latest has 100 torrents per page.
- path: "{{ if .Keywords }}s/{{ .Keywords }}{{ else }}latest.html{{ end }}"
- path: "{{ if .Keywords }}s/{{ .Keywords }}&page=10{{ else }}{{ end }}"
keywordsfilters:
- name: re_replace
args: ["[\\s]+", "-"]
- name: tolower
rows:
selector: table.table-hover > tbody > tr
filters:
- name: andmatch
fields:
category:
selector: a[href^="/c/"]
title:
selector: a[href*="/v/"]
details:
selector: a[href*="/v/"]
attribute: href
download:
selector: a[href*="/v/"]
attribute: href
date:
selector: td:nth-child(3)
filters:
- name: append
args: " +00:00" # GMT
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
size:
selector: td:nth-child(4)
seeders:
selector: td:nth-child(5)
leechers:
selector: td:nth-child(6)
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a
@@ -0,0 +1,81 @@
---
id: bangumi-moe
name: Bangumi Moe
description: "Bangumi Moe is a Public torrent site for ANIME"
language: en-US
type: public
encoding: UTF-8
requestDelay: 3
links:
- https://bangumi.moe/
caps:
categorymappings:
- {id: 549ef207fe682f7549f1ea90, cat: TV/Anime, desc: "Anime"}
- {id: 54967e14ff43b99e284d0bf7, cat: TV/Anime, desc: "Anime Pack"}
- {id: 549cc9369310bc7d04cddf9f, cat: Movies, desc: "Anime Movie"}
- {id: 549eef6ffe682f7549f1ea8b, cat: Audio, desc: "Music"}
- {id: 549eefebfe682f7549f1ea8c, cat: Books/Comics, desc: "Comic"}
- {id: 549ef015fe682f7549f1ea8d, cat: Console, desc: "Game"}
- {id: 549ef250fe682f7549f1ea91, cat: Other, desc: "Other"}
- {id: 549ff1db30bcfc225bf9e607, cat: Console, desc: "Dorama"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings: []
search:
paths:
# https://bangumi.moe/api/torrent/latest
# https://bangumi.moe/api/v2/torrent/search
- path: "{{ if .Keywords }}api/v2/torrent/search{{ else }}api/torrent/latest{{ end }}"
method: "{{ if .Keywords }}post{{ else }}get{{ end }}"
response:
type: json
inputs:
# $raw: "{{ if .Keywords }}query={{ .Keywords }}{{ else }}{{ end }}"
query: "{{ .Keywords }}"
rows:
selector: torrents
fields:
category:
selector: category_tag_id
title:
selector: title
details:
text: /
infohash:
selector: infoHash
poster:
selector: introduction
filters:
- name: regexp
args: "src=\\\"(.+?)\\\""
description:
selector: category_tag.locale.en
date:
# 2021-10-19T06:10:15.772Z
selector: publish_time
size:
selector: size
optional: true
default: 0 B
grabs:
selector: downloads
seeders:
selector: seeders
leechers:
selector: leechers
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# json api v2
+158
View File
@@ -0,0 +1,158 @@
---
id: beload
name: Beload
description: "Beload is a HUNGARIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: hu-HU
type: private
encoding: UTF-8
links:
- https://beload.org/
caps:
categorymappings:
- {id: 27, cat: Movies/DVD, desc: "Animáció/DVD/Eng"}
- {id: 26, cat: Movies/DVD, desc: "Animáció/DVD/Hun"}
- {id: 25, cat: Movies/HD, desc: "Animáció/HD/Eng"}
- {id: 24, cat: Movies/HD, desc: "Animáció/HD/Hun"}
- {id: 28, cat: Movies/SD, desc: "Animáció/SD/Hun"}
- {id: 12, cat: Movies/SD, desc: "Film/Cam/Eng"}
- {id: 11, cat: Movies/SD, desc: "Film/Cam/Hun"}
- {id: 4, cat: Movies/DVD, desc: "Film/DVD-R/Eng"}
- {id: 3, cat: Movies/DVD, desc: "Film/DVD-R/Hun"}
- {id: 6, cat: Movies/DVD, desc: "Film/DVD9/Eng"}
- {id: 5, cat: Movies/DVD, desc: "Film/DVD9/Hun"}
- {id: 2, cat: Movies/Foreign, desc: "Film/HD/Eng"}
- {id: 1, cat: Movies/HD, desc: "Film/HD/Hun"}
- {id: 8, cat: Movies/Foreign, desc: "Film/SD/Eng"}
- {id: 7, cat: Movies/SD, desc: "Film/SD/Hun"}
- {id: 10, cat: Movies/Foreign, desc: "Film/XviD/Eng"}
- {id: 9, cat: Movies/SD, desc: "Film/XviD/Hun"}
- {id: 31, cat: Audio/Audiobook, desc: "Hangoskönyv"}
- {id: 42, cat: PC/Games, desc: "Játék/ISO"}
- {id: 43, cat: PC/Games, desc: "Játék/RIP"}
- {id: 30, cat: Books/Foreign, desc: "Könyv/Eng"}
- {id: 29, cat: Books/EBook, desc: "Könyv/Hun"}
- {id: 44, cat: PC/ISO, desc: "Program/ISO"}
- {id: 45, cat: PC, desc: "Program/RIP"}
- {id: 14, cat: TV/Foreign, desc: "Sorozat/HD/Eng"}
- {id: 13, cat: TV/HD, desc: "Sorozat/HD/Hun"}
- {id: 16, cat: TV/Foreign, desc: "Sorozat/SD/Eng"}
- {id: 15, cat: TV/SD, desc: "Sorozat/SD/hun"}
- {id: 38, cat: XXX/SD, desc: "XXX/HD"}
- {id: 41, cat: XXX/ImageSet, desc: "XXX/Kép"}
- {id: 40, cat: XXX/SD, desc: "XXX/SD"}
- {id: 20, cat: Audio/Foreign, desc: "Zene/Mp3/Eng"}
- {id: 19, cat: Audio/MP3, desc: "Zene/Mp3/Hun"}
modes:
search: [q]
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
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="/logout.php"]
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active, 1 both, 2 dead, 3 my uploa, 4 waiting for seeds
incldead: 1
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
# does not support imdbid searches
rows:
selector: "div.torrents-container > table > tbody > tr > td.text > table > tbody > tr:has(a[href^=\"details.php?id=\"]):not(:has(a[href=\"browse.php?cat=0\"]))"
after: 1
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="][title]
attribute: title
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?torrent="]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
poster:
selector: a.preview
attribute: href
date:
selector: td:nth-last-child(6) > a
attribute: title
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
files:
selector: td:nth-last-child(8)
size:
selector: td:nth-last-child(5) b
grabs:
selector: td:nth-last-child(4)
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
description:
case:
i.fa-check: Verified
i.fa-question: Unverified
downloadvolumefactor:
case:
"span[style=\"font-size: 10px;\"]:contains(\"0x\")": 0
"*": 1
uploadvolumefactor:
case:
"span[style=\"font-size: 10px;\"]:contains(\"2x\")": 2
"span[style=\"font-size: 10px;\"]:contains(\"4x\")": 4
"*": 1
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# engine n/a
@@ -0,0 +1,207 @@
---
id: bestcore
name: Best-Core
description: "Best-Core is a HUNGARIAN Private Tracker for MOVIES / TV"
language: hu-HU
type: private
encoding: ISO-8859-2
links:
- https://best-core.info/
caps:
categorymappings:
- {id: 81, cat: Movies/3D, desc: "3D"}
- {id: 83, cat: Movies/UHD, desc: "4K/UHD"}
- {id: 80, cat: Movies/Other, desc: "Best-Core"}
- {id: 51, cat: Books/EBook, desc: "E-book"}
- {id: 88, cat: Audio/Audiobook, desc: "E-book/Hangoskönyv"}
- {id: 77, cat: Movies/HD, desc: "Film/BDRip/Eng"}
- {id: 86, cat: Movies/HD, desc: "Film/BDRip/Ger"}
- {id: 76, cat: Movies/HD, desc: "Film/BDRip/Hun"}
- {id: 75, cat: Movies/BluRay, desc: "Film/Blu-ray/Eng"}
- {id: 74, cat: Movies/BluRay, desc: "Film/Blu-ray/Hun"}
- {id: 25, cat: Movies/DVD, desc: "Film/DVD/Eng"}
- {id: 24, cat: Movies/DVD, desc: "Film/DVD/Hun"}
- {id: 85, cat: Movies/DVD, desc: "Film/DVD9"}
- {id: 21, cat: Movies/HD, desc: "Film/HD/Eng"}
- {id: 53, cat: Movies/HD, desc: "Film/HD/Hun"}
- {id: 20, cat: Movies/SD, desc: "Film/XviD/Eng"}
- {id: 34, cat: Movies/SD, desc: "Film/XviD/Hun"}
- {id: 90, cat: Movies/SD, desc: "Film/XviD/Pack"}
- {id: 26, cat: PC/Games, desc: "Játék/ISO"}
- {id: 52, cat: PC/Games, desc: "Játék/Rip"}
- {id: 89, cat: Movies/SD, desc: "Kamerás/Eng"}
- {id: 82, cat: Movies/SD, desc: "Kamerás/Hun"}
- {id: 38, cat: Other, desc: "Képek"}
- {id: 43, cat: Console/PS3, desc: "Konzol/PS"}
- {id: 45, cat: Console/PSP, desc: "Konzol/PSP"}
- {id: 44, cat: Console/XBox, desc: "Konzol/Xbox"}
- {id: 73, cat: TV/Anime, desc: "Mese/Eng"}
- {id: 70, cat: TV/Anime, desc: "Mese/Hun"}
- {id: 37, cat: PC/Mobile-Other, desc: "Mobil"}
- {id: 1, cat: PC/ISO, desc: "Program/ISO"}
- {id: 22, cat: PC/0day, desc: "Program/Rip"}
- {id: 54, cat: TV/SD, desc: "Sorozat/DVD/Eng"}
- {id: 55, cat: TV/SD, desc: "Sorozat/DVD/Hun"}
- {id: 58, cat: TV/SD, desc: "Sorozat/Xvid/Eng"}
- {id: 7, cat: TV/SD, desc: "Sorozat/Xvid/Hun"}
- {id: 62, cat: Audio/Video, desc: "Videoklip"}
- {id: 64, cat: XXX/DVD, desc: "XXX/DVD"}
- {id: 48, cat: XXX/ImageSet, desc: "XXX/Képek"}
- {id: 9, cat: XXX/XviD, desc: "XXX/Xvid"}
- {id: 40, cat: Audio/MP3, desc: "Zene/Eng"}
- {id: 6, cat: Audio/MP3, desc: "Zene/Hun"}
- {id: 87, cat: Audio/Lossless, desc: "Zene/Lossless"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
book-search: [q]
music-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search FreeLeech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
1: title
4: added
5: size
7: seeders
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrent oldalankén:</b> setting to <b>100</b> on your account profile.
- name: info_login
type: info
label: About login error
default: If you get a <b>Login Failed, got redirected.</b> error during your config <i>save</i> then most likely you have used an incorrect username or password.
- name: info_activity
type: info
label: Account Inactivity
default: "<ol><li>Users who have not accessed the site for 180 days will be deleted!</li><li>If the vacation mode is set, the system will not delete the given user for 365 days.</li></ol>"
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
test:
path: index.php
selector: a[href^="logout.php?c="]
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
# 0 active, 1 all, 2 deadonly, 3 freeleech
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: tr.torrent_h
filters:
- name: andmatch
fields:
category_optional:
selector: a[href^="browse.php?cat="]
attribute: href
optional: true
filters:
- name: querystring
args: cat
category:
text: "{{ if .Result.category_optional }}{{ .Result.category_optional }}{{ else }}38{{ end }}"
title_default:
# can be abbreviated
selector: a[href^="details.php?id="]
title:
# usually full length
selector: a[href^="details.php?id="]
attribute: title
optional: true
default: "{{ .Result.title_default }}"
details:
selector: a[href^="details.php?id="]
attribute: href
poster:
selector: a[onmouseover]
attribute: onmouseover
filters:
- name: regexp
args: "src=(.*?) "
- name: replace
args: ["https://i.kek.sh/null", ""]
download:
selector: a[href^="download.php?id="]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
date:
selector: td:nth-child(2)
filters:
- name: regexp
args: "(\\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}:\\d{2})"
- name: append
args: " +01:00" # CET
- name: replace
args: ["\xA0", " "]
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
files:
selector: td:nth-child(5)
size:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(7)
filters:
- name: regexp
args: x \d(\d+) x$
seeders:
selector: td:nth-child(8)
leechers:
selector: td:nth-child(9)
description:
case:
img[src="pic/yes.png"]: Verified
img[src="pic/nincs.png"]: Unverified
downloadvolumefactor:
case:
img[src="pic/free.png"]: 0
"*": 1
uploadvolumefactor:
selector: td:nth-child(7) b
filters:
- name: regexp
args: (\d+)
minimumratio:
text: 0.8
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# custom v3.0
@@ -0,0 +1,141 @@
---
id: bibliotik
name: Bibliotik
description: "Bibliotik is a private site for eBooks and audiobooks"
language: en-US
type: private
encoding: UTF-8
links:
- https://bibliotik.me/
caps:
categorymappings:
- {id: 1, cat: PC, desc: "Applications"}
- {id: 3, cat: Audio/Audiobook, desc: "Audiobooks"}
- {id: 4, cat: Books/Comics, desc: "Comics"}
- {id: 5, cat: Books/EBook, desc: "eBooks"}
- {id: 7, cat: Books/Mags, desc: "Magazines"}
modes:
search: [q]
book-search: [q, title, author]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: orderby
type: select
label: Sort requested from site
default: added
options:
"@relevance": relevance
title: title
size: size
added: added
seeders: seeders
- name: order
type: select
label: Order requested from site
default: DESC
options:
DESC: desc
ASC: asc
login:
path: /
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
keeplogged: 1
login: "Log In!"
error:
- selector: center:first-of-type
test:
path: torrents/
selector: div#pre_header
search:
paths:
- path: torrents/
inputs:
search: "{{ if .Query.Author }} @authors {{ .Query.Author }}{{ else }}{{ end }}{{ if .Query.Title }} @title {{ .Query.Title }}{{ else }}{{ end }}{{ .Keywords }}"
$raw: "{{ range .Categories }}cat[]={{.}}&{{end}}"
orderby: "{{ .Config.orderby }}"
order: "{{ .Config.order }}"
rows:
selector: table#torrents_table > tbody > tr:has(.title)
fields:
category:
selector: td:first-child
case:
div[title="Applications"]: 1
div[title="Audiobooks"]: 3
div[title="Comics"]: 4
div[title="Ebooks"]: 5
div[title="Magazines"]: 7
_editor:
selector: .editorLink
optional: true
author:
selector: .authorLink
optional: true
default: "{{ .Result._editor }}"
year:
selector: .torYear
optional: true
_filetype:
selector: .torFormat
optional: true
_retail:
selector: .torRetail
optional: true
booktitle:
selector: .title a
title:
text: "{{ .Result.booktitle }}"
filters:
- name: append
args: "{{ if .Result.author }} by {{ .Result.author }}{{ else }}{{ end }}{{ if .Result.year }} {{ .Result.year }}{{ else }}{{ end }}{{ if .Result._filetype }} {{ .Result._filetype }}{{ else }}{{ end }}{{ if .Result._retail }} {{ .Result._retail }}{{ else }}{{ end }}"
details:
selector: .title a
attribute: href
date:
selector: .t_files_size_added time
attribute: datetime
optional: true
default: now
download:
selector: a[title="Download"]
attribute: href
files:
selector: .t_files_size_added
filters:
- name: regexp
args: "^\\s*(\\d+)\\s*file"
size:
selector: .t_files_size_added span
attribute: data-bytecount
seeders:
selector: .seeders
optional: true
default: 0
leechers:
selector: .leechers
optional: true
default: 0
grabs:
selector: .snatches
optional: true
default: 0
downloadvolumefactor:
text: 1
uploadvolumefactor:
text: 1
# engine n/a
@@ -0,0 +1,232 @@
---
id: bigfangroup
name: BigFANGroup
description: "BigFANGroup is a RUSSIAN Public Torrent Tracker for MOVIES / TV"
language: ru-RU
type: public
encoding: windows-1251
links:
- https://bigfangroup.org/
- https://www.freebfg.org/
caps:
categorymappings:
- {id: 51, cat: Movies/3D, desc: "3D"}
- {id: 12, cat: TV, desc: "Анимация"}
- {id: 35, cat: Audio/Audiobook, desc: "Аудио-книги"}
- {id: 13, cat: Movies, desc: "Боевик"}
- {id: 52, cat: Movies, desc: "Биография"}
- {id: 33, cat: Movies, desc: "Военный"}
- {id: 45, cat: Audio/Video, desc: "Видеоклипы"}
- {id: 48, cat: Movies, desc: "Вестерн"}
- {id: 21, cat: Movies, desc: "Драма"}
- {id: 32, cat: TV/Documentary, desc: "Документальный"}
- {id: 39, cat: Movies, desc: "Детектив"}
- {id: 44, cat: Audio, desc: "Зарубежная музыка"}
- {id: 5, cat: PC/Games, desc: "Игры"}
- {id: 28, cat: Movies, desc: "Исторический"}
- {id: 18, cat: Movies, desc: "Катастрофа"}
- {id: 24, cat: Movies, desc: "Комедия"}
- {id: 36, cat: Movies, desc: "Криминал"}
- {id: 38, cat: Books, desc: "Книги и журналы"}
- {id: 53, cat: Movies, desc: "Классика"}
- {id: 54, cat: Audio, desc: "Классическая музыка"}
- {id: 19, cat: Movies, desc: "Мелодрама"}
- {id: 20, cat: Movies, desc: "Мультфильм"}
- {id: 31, cat: Movies, desc: "Мистика"}
- {id: 46, cat: Audio, desc: "Муз. сборники"}
- {id: 29, cat: Movies/Foreign, desc: "Наше кино"}
- {id: 49, cat: TV, desc: "Научно-популярное"}
- {id: 50, cat: TV, desc: "Новости"}
- {id: 27, cat: Movies, desc: "Приключения"}
- {id: 9, cat: Other, desc: "Разное"}
- {id: 43, cat: Audio/Foreign, desc: "Русская музыка"}
- {id: 1, cat: PC, desc: "Софт"}
- {id: 11, cat: TV, desc: "Сериалы"}
- {id: 37, cat: TV/Sport, desc: "Спорт"}
- {id: 47, cat: Movies, desc: "Сказки"}
- {id: 55, cat: Audio, desc: "Саундтрек"}
- {id: 25, cat: TV, desc: "ТВ-шоу"}
- {id: 22, cat: Movies, desc: "Триллер"}
- {id: 26, cat: Movies, desc: "Ужасы"}
- {id: 23, cat: Movies, desc: "Фантастика"}
- {id: 30, cat: Movies, desc: "Фэнтази"}
- {id: 42, cat: XXX, desc: "Эротика"}
- {id: 14, cat: Movies/HD, desc: "HDTV"}
- {id: 15, cat: Movies/DVD, desc: "DVD"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: stripcyrillic
type: checkbox
label: Strip Cyrillic Letters
default: false
- name: addrussiantotitle
type: checkbox
label: Add RUS to end of all titles to improve language detection by Sonarr and Radarr. Will cause English-only results to be misidentified.
default: false
- name: sort
type: select
label: Sort requested from site
default: added
options:
added: created
seed: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
search:
paths:
# https://bigfangroup.org/browse.php?ajax=1&search=the+librarian&cat=0&incldead=0&year=0&format=0
- path: browse.php
inputs:
ajax: 1
search: "{{ .Keywords }}"
cat: "{{ if .Keywords }}0{{ else }}{{ end }}"
# 0 active, 1 incldead, 2 onlydead, 3 gold, 4 noseed, 5 silver, 7 BFG
incldead: "{{ if .Keywords }}1{{ else }}{{ end }}"
year: "{{ if .Keywords }}0{{ else }}1{{ end }}"
format: "{{ if .Keywords }}0{{ else }}{{ end }}"
s: "{{ if .Keywords }}{{ .Config.sort }}{{ else }}{{ end }}"
d: "{{ if .Keywords }}{{ .Config.type }}{{ else }}{{ end }}"
keywordsfilters:
# strip season and/or ep
- name: re_replace
args: ["(?i)\\b(?:[SE]\\d{1,4}){1,2}\\b\\s?", ""]
rows:
selector: table > tbody#highlighted > tr:has(a[href^="browse.php?cat="])
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="]
filters:
# normalize to SXXEYY format
- name: re_replace
args: ["(?i)[CС]езоны?[\\s:]*(\\d+(?:-\\d+)?).+?(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))[\\s:]*(\\d+(?:-\\d+)?)\\s*из\\s*(\\w?)", "S$1E$2 of $3"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s*[CС]езоны?.+?(\\d+(?:-\\d+)?)\\s*из\\s*(\\w?)(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))?", "S$1E$2 of $3"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s*[CС]езоны?.+?(\\d+(?:-\\d+)?)\\s*(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))\\s+из\\s*(\\w?)", "S$1E$2 of $3"]
- name: re_replace
args: ["(?i)[CС]езоны?[\\s:]*(\\d+(?:-\\d+)?).+?(\\d+(?:-\\d+)?)\\s*из\\s*(\\w?)(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))?", "S$1E$2 of $3"]
- name: re_replace
args: ["(?i)[CС]езоны?[\\s:]*(\\d+(?:-\\d+)?).+?(\\d+(?:-\\d+)?)\\s*(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))\\s+из\\s*(\\w?)", "S$1E$2 of $3"]
- name: re_replace
args: ["(?i)[CС]езоны?[\\s:]*(\\d+(?:-\\d+)?).+?(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))[\\s:]*(\\d+(?:-\\d+)?)", "S$1E$2"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s*[CС]езоны?.+?(\\d+(?:-\\d+)?)(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))", "S$1E$2"]
- name: re_replace
args: ["(?i)[CС]езоны?[\\s:]*(\\d+(?:-\\d+)?).+?(\\d+(?:-\\d+)?)(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))", "S$1E$2"]
- name: re_replace
args: ["(?i)[CС]езоны?[\\s:]*(\\d+(?:-\\d+)?)", "S$1"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s+[CС]езоны?", "S$1"]
- name: re_replace
args: ["(?i)(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))[\\s:]*(\\d+(?:-\\d+)?)\\s*из\\s*(\\w?)", "E$1 of $2"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s*из\\s*(\\w?)(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))", "E$1 of $2"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s+(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))\\s+из\\s*(\\w?)", "E$1 of $2"]
- name: re_replace
args: ["(?i)(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))[\\s:]*(\\d+(?:-\\d+)?)", "E$1"]
- name: re_replace
args: ["(?i)(\\d+(?:-\\d+)?)\\s+(?:\\s*(?:[CС]ери[ияй]|Эпизод|Выпуски?))", "E$1"]
- name: re_replace
args: ["(?i)\\s\\|\\sот\\s([\\w\\p{P}\\p{S}]+)$", "-$1"]
- name: re_replace
args: ["\\s\\|\\s(\\w{4,})$", "-$1"]
- name: re_replace
args: ["(\\([\\p{IsCyrillic}\\W]+\\))|(^[\\p{IsCyrillic}\\W\\d]+\\/ )|([\\p{IsCyrillic} \\-]+,+)|([\\p{IsCyrillic}]+)", "{{ if .Config.stripcyrillic }}{{ else }}$1$2$3$4{{ end }}"]
- name: re_replace
args: ["(?i)\\bHDTV[-\\s]?Rip\\b", "HDTV"]
- name: re_replace
args: ["(?i)\\bSAT[-\\s]?Rip\\b", "HDTV"]
- name: re_replace
args: ["(?i)\\bWEB[-\\s]?DL[-\\s]?Rip\\b", "WEB-DL"]
- name: re_replace
args: ["(?i)\\bWEB\\sRip\\b", "WEBRip"]
- name: re_replace
args: ["(?i)\\bWEB\\sDL\\b", "WEB-DL"]
- name: re_replace
args: ["[\\[\\(\\{<«][\\s\\W]*[\\]\\)\\}>»]", ""]
- name: re_replace
args: ["^[\\s&,\\.!\\?\\+\\-_\\|\\/':]+", ""]
- name: append
args: "{{ if .Config.addrussiantotitle }} RUS{{ else }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="details.php?id="]
attribute: href
filters:
- name: replace
args: ["details", "download"]
size:
selector: td:nth-child(6)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
date:
selector: img[src="pic/time.png"]
attribute: title
filters:
- name: replace
args: [" в ", " "]
- name: replace
args: ["января", "January"]
- name: replace
args: ["февраля", "February"]
- name: replace
args: ["марта", "March"]
- name: replace
args: ["апреля", "April"]
- name: replace
args: ["мая", "May"]
- name: replace
args: ["июня", "June"]
- name: replace
args: ["июля", "July"]
- name: replace
args: ["августа", "August"]
- name: replace
args: ["сентября", "September"]
- name: replace
args: ["октября", "October"]
- name: replace
args: ["ноября", "November"]
- name: replace
args: ["декабря", "December"]
- name: append
args: " +03:00" # MSK
- name: dateparse
args: "d MMMM yyyy HH:mm:ss zzz"
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
description:
selector: a[href^="details.php?id="]
# engine n/a
@@ -0,0 +1,191 @@
---
id: bitbazis
name: Bit-Bázis
description: "Bit-Bázis is a HUNGARIAN Private Tracker for MOVIES / TV"
language: hu-HU
type: private
encoding: UTF-8
requestDelay: 2
links:
- https://bitbazis.net/
caps:
categorymappings:
- {id: 85, cat: Movies/SD, desc: "Film-Cam", default: true}
- {id: 15, cat: Movies/SD, desc: "Film-SD", default: true}
- {id: 17, cat: Movies/DVD, desc: "Film-DVD", default: true}
- {id: 83, cat: Movies/HD, desc: "Film-HD", default: true}
- {id: 94, cat: Movies/HD, desc: "Film-FHD", default: true}
- {id: 92, cat: Movies/UHD, desc: "Film-UHD", default: true}
- {id: 22, cat: TV, desc: "Sorozat-Hun", default: true}
- {id: 64, cat: Movies, desc: "Film-Pack", default: true}
- {id: 24, cat: Audio/Video, desc: "Klip", default: true}
- {id: 70, cat: Audio/Audiobook, desc: "Hangoskönyv", default: true}
- {id: 27, cat: Books/EBook, desc: "Könyv", default: true}
- {id: 69, cat: TV/Anime, desc: "Mese-SD", default: true}
- {id: 91, cat: TV/Anime, desc: "Mese-HD", default: true}
- {id: 25, cat: Audio/MP3, desc: "Mp3-Hun", default: true}
- {id: 26, cat: Audio/MP3, desc: "Mp3-Eng", default: true}
- {id: 84, cat: Audio/Lossless, desc: "FLAC-Hun", default: true}
- {id: 71, cat: Audio/Lossless, desc: "FLAC-Eng", default: true}
- {id: 31, cat: PC/Games, desc: "Játék", default: true}
- {id: 81, cat: PC/0day, desc: "Program", default: true}
- {id: 14, cat: Other, desc: "Egyéb", default: true}
- {id: 66, cat: XXX/ImageSet, desc: "XXX", default: false}
- {id: 33, cat: XXX/SD, desc: "XXX-SD", default: false}
- {id: 89, cat: XXX/x264, desc: "XXX-HD", default: false}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
book-search: [q]
music-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info_cookie
type: info_cookie
- name: freeleech
type: checkbox
label: Filter freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
1: title
4: added
5: size
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrentek száma egy oldalon:</b> setting to <b>50</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
default: "If the user does not access the site for 1 month, he will receive an e-mail notification. If you stay away for 9 months, your account will be suspended and deleted. After the 9-month absence, the user cannot register again."
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: li[onclick^="window.open('logout.php?k="]
search:
paths:
- path: browse.php
categories: [85, 86, 15, 16, 17, 19, 83, 82, 94, 95, 92, 93, 22, 58, 64, 24, 70, 27, 50, 69, 68, 91, 25, 26, 84, 71, 31, 54, 81, 67, 49, 14, 65, 97]
inputs:
# 0 all, 1 active, 2 deadonly, 3 myuploads, 4 zeroseed, 6 re-seeded
incldead: 0
- path: browse_xxx.php
categories: [33, 66, 89]
inputs:
# 0 active, 1 all, 2 deadonly, 3 myuploads, 4 zeroseed, 6 re-seeded
incldead: 1
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
# site does not support imdbid searching
# can support genre searching but you need to know the id, eg &genre23=1 for Comedy (id is 23)
rows:
selector: "tr[class^=\"toriadatok\"]{{ if .Config.freeleech }}:has(i:contains(\"(Free)\")){{ else }}{{ end }}"
fields:
categorydesc:
selector: td[class^="catpic_"]
attribute: class
filters:
- name: replace
args: ["catpic_", ""]
title:
selector: font[class="tori"], a.preview
_id:
selector: td.tori_infok
attribute: id
optional: true
filters:
- name: regexp
args: (\d+)
details:
selector: a[href^="details.php?id="]
attribute: href
optional: true
default: "details.php?id={{ .Result._id }}#adatlap"
download:
text: "download.php?torrent={{ .Result._id }}"
poster:
selector: a.preview
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
size:
selector: td[id^="tsize"]
date:
# 36 perce
# 13 órája és 59 perce
# 2 napja és 10 órája
# 1 hete és 1 napja
# 1 éve és 30 hete
selector: span.ellenorzes
filters:
- name: replace
args: ["és ", " "]
- name: replace
args: ["perce", "minute"]
- name: replace
args: ["órája", "hour"]
- name: replace
args: ["napja", "day"]
- name: replace
args: ["hete", "week"]
- name: replace
args: ["éve", "year"]
- name: timeago
grabs:
selector: td.letoltok
optional: true
default: 0
seeders:
selector: td.seeders
optional: true
default: 0
leechers:
selector: td.leechers
optional: true
default: 0
genre:
selector: span[style="font-size:small;"]
description:
text: "{{ .Result.genre }}"
downloadvolumefactor:
case:
"i:contains(\"(Free)\")": 0
"*": 1
uploadvolumefactor:
case:
"i:contains(\"(2x)\")": 2
"i:contains(\"(3x)\")": 3
"i:contains(\"(4x)\")": 4
"*": 1
minimumseedtime:
# 1 day (as seconds = 1 x 24 x 60 x 60)
text: 86400
# engine n/a
+146
View File
@@ -0,0 +1,146 @@
---
id: bitded
name: Bitded
description: "Bitded is a THAI Private Torrent Tracker for MOVIES / TV / GENERAL"
language: th-TH
type: private
encoding: UTF-8
links:
- https://www.dedbit.com/
caps:
categorymappings:
- {id: 1, cat: Other, desc: "ในพระราชสำนัก (in the royal court)"}
- {id: 4, cat: TV, desc: "รายการทีวี (TV)"}
- {id: 7, cat: TV, desc: "ภาพยนตร์ชุด (Series)"}
- {id: 12, cat: Books/EBook, desc: "หนังสือ สื่อการสอน (Books)"}
- {id: 13, cat: Other/Misc, desc: "ทั่วไป (General)"}
- {id: 14, cat: TV/Sport, desc: "กีฬา (Sport)"}
- {id: 16, cat: TV/Documentary, desc: "สารคดี (Documentary)"}
- {id: 18, cat: TV/Other, desc: "ธรรมะ (Dharma)"}
- {id: 21, cat: Books/Comics, desc: "หนังสือการ์ตูน (Comics)"}
- {id: 22, cat: TV/Anime, desc: "การ์ตูนอนิเมชั่น (Anime)"}
- {id: 31, cat: Movies, desc: "ภาพยนตร์ (Movies)"}
- {id: 34, cat: Movies/DVD, desc: "ภาพยนตร์ DVD (Movies DVD)"}
- {id: 35, cat: Movies/HD, desc: "วีดีโอความละเอียดสูง (Movies HD)"}
- {id: 41, cat: Audio/MP3, desc: "เพลง (Music)"}
- {id: 43, cat: Audio/Video, desc: "มิวสิควีดีโอ (Music video)"}
- {id: 53, cat: PC/0day, desc: "โปรแกรม/Windows (Software Windows)"}
- {id: 54, cat: PC/Mac, desc: "โปรแกรม/Mac, Linux (Software Mac/Linux)"}
- {id: 55, cat: PC/Mobile-Other, desc: "โปรแกรม/Mobile (Software Mobile)"}
- {id: 61, cat: PC/Games, desc: "เกม-Computer (PC Games)"}
- {id: 62, cat: Console, desc: "เกม-Console (Console)"}
- {id: 63, cat: Console, desc: "เกมส์-พกพา (Console portable)"}
- {id: 72, cat: Other, desc: "รูปภาพ (Pics)"}
- {id: 74, cat: Other, desc: "J-IDOL"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
- name: sort
type: select
label: Sort requested from site
default: 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
login:
path: takelogin.php
method: post
inputs:
x: axion
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: td.embedded:contains("Login failed!")
test:
path: my.php
selector: a[href="logout.php"]
search:
paths:
# https://www.dedbit.com/browse.php?c12=1&c13=1&incldead=1&freeload=1&search=&sort=added&h=6&d=DESC
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
# 0 active, 1 incldead, 2 onlydead
incldead: 1
freeload: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
search: "{{ .Keywords }}"
sort: "{{ .Config.sort }}"
d: "{{ .Config.type }}"
# site does not support imdbid searching and does not display imdb links in results.
rows:
selector: table.torrenttable tbody tr:has(a[href^="download.php"])
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="]
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php"]
attribute: href
files:
selector: td:nth-last-child(9)
date:
selector: td:nth-last-child(7)
filters:
- name: append
args: " +07:00" # ICT
- name: dateparse
args: "yyyy-MM-ddHH:mm:ss zzz"
size:
selector: td:nth-last-child(5)
grabs:
selector: td:nth-last-child(4)
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
downloadvolumefactor:
case:
img[src$="pic/freeload.png"]: 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
# engine n/a
@@ -0,0 +1,172 @@
---
id: bithorlo
name: Bithorlo
description: "Bithorlo (BHO) is a HUNGARIAN Private Torrent Tracker for MOVIES / GENERAL"
language: hu-HU
type: private
encoding: ISO-8859-2
links:
- https://www.bithorlo.info/
caps:
categorymappings:
# E-book
- {id: 40, cat: Books, desc: "E-book/Eng"}
- {id: 19, cat: Books, desc: "E-book/Hun"}
# Játék
- {id: 38, cat: Console, desc: "Játék/Consol"}
- {id: 15, cat: PC/Games, desc: "Játék/ISO"}
- {id: 37, cat: PC/Games, desc: "Játék/Rip"}
# Filmek
- {id: 51, cat: Movies/SD, desc: "Cam/Eng"}
- {id: 50, cat: Movies/SD, desc: "Cam/Hun"}
- {id: 2, cat: Movies/DVD, desc: "DVD/Eng"}
- {id: 1, cat: Movies/DVD, desc: "DVD/Hun"}
- {id: 42, cat: Movies/DVD, desc: "Dvd9/Eng"}
- {id: 41, cat: Movies/DVD, desc: "Dvd9/Hun"}
- {id: 29, cat: Movies/HD, desc: "HD/Eng"}
- {id: 28, cat: Movies/HD, desc: "HD/Hun"}
- {id: 33, cat: TV, desc: "Sorozat/Eng"}
- {id: 5, cat: TV, desc: "Sorozat/Hun"}
- {id: 52, cat: TV/HD, desc: "Sorozat/Eng/HD"}
- {id: 53, cat: TV/HD, desc: "Sorozat/Hun/HD"}
- {id: 4, cat: Movies/SD, desc: "Xvid/Eng"}
- {id: 3, cat: Movies/SD, desc: "Xvid/Hun"}
# Zene
- {id: 12, cat: Audio, desc: "Zene/Eng"}
- {id: 13, cat: Audio, desc: "Zene/Hun"}
# Egyéb
- {id: 20, cat: Other, desc: "Képek"}
- {id: 21, cat: PC/Mobile-Other, desc: "Mobil"}
# Program
- {id: 54, cat: PC/0day, desc: "Win/Program/ISO"}
- {id: 23, cat: PC/0day, desc: "Win/Program/Rip"}
# Felnőtt tartalom
- {id: 9, cat: XXX, desc: "XXX/Film"}
- {id: 10, cat: XXX, desc: "XXX/Kép"}
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: useragent
type: text
label: User-Agent
- name: info_useragent
type: info_useragent
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_activity
type: info
label: Account Inactivity
default: "Vacation mode is used to avoid deletion due to inactivity for 90 days. You can turn it on or off in the Profile menu, set the appropriate option and save your changes."
login:
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 freeleech
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
headers:
User-Agent: ["{{ .Config.useragent }}"]
rows:
selector: tr[class^="browse"]
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
- name: trim # some torrents have an extra space
title:
selector: a[href^="torrent.php?id="]
attribute: title
details:
selector: a[href^="torrent.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: a[href^="torrent.php?id="][onmouseover]
attribute: onmouseover
filters:
- name: regexp
args: ", '(.*)'"
size:
selector: td:nth-child(4)
grabs:
selector: td:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
date:
selector: "a[style=\"font-size: 8pt;cursor: pointer;\"][title]"
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "yyyy-MM-dd HH:mm:ss zzz"
description:
case:
img[src="./themes/Born/nemlatta.png"]: Unverified
"*": Verified
downloadvolumefactor:
case:
img[title="Ingyenes letöltés"]: 0
"*": 1
uploadvolumefactor:
selector: span:contains("Feltöltési szorzó")
filters:
- name: replace
args: ["Feltöltési szorzó × ", ""]
minimumratio:
text: 1.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# engine n/a

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