Compare commits

...

68 Commits

Author SHA1 Message Date
Garfield69
a7406eb725 uploadcx: bump engine tag 2025-09-20 13:36:58 +12:00
jackettbot[bot]
65da50d6bf Update rudub 2025-09-20 01:28:38 +00:00
jackettbot[bot]
3829d49aed Update rudub 2025-09-19 01:28:56 +00:00
Garfield69
ff17b147d6 polishtorrent: 3x no longer available 2025-09-19 12:37:15 +12:00
Garfield69
b579de495d cinematik: bump engine tag 2025-09-19 12:36:48 +12:00
Garfield69
f6384c933c blutopia: bump engine tag 2025-09-19 12:36:31 +12:00
Garfield69
4f3c57de59 kickasstorrents-ws: alternate domains update #9333 2025-09-19 06:32:46 +12:00
Garfield69
dc4bde017a rastastugan: -> 9.1.6 info_hash removed 2025-09-19 05:50:54 +12:00
Garfield69
088dfba4b6 ebooks-shares: new cat 2025-09-19 05:50:16 +12:00
Garfield69
c414181da3 zkrorremt: new tld plus CA trust 2025-09-19 05:29:10 +12:00
Garfield69
ed507c3a43 zetorrents: new tld 2025-09-19 05:28:34 +12:00
Garfield69
c42383f605 torrentqq: bump domains 2025-09-19 05:28:19 +12:00
Garfield69
d53f764b4f nortorrent: new tld 2025-09-19 05:27:59 +12:00
Garfield69
fd3c5aea9e esharenet: removed. resolves #5690 2025-09-18 16:13:51 +12:00
jackettbot[bot]
5c379fc5fb Update rudub 2025-09-18 01:28:50 +00:00
Garfield69
4203abf435 yoinked: -> 9.1.6 info_hash removed 2025-09-18 05:44:35 +12:00
Garfield69
cc7a2dae35 sextorrent: new cat 2025-09-18 05:44:01 +12:00
Garfield69
3932f1cdb1 torrenttip: bump domain 2025-09-18 05:16:54 +12:00
Garfield69
b4c9145642 torrentsome: bump domain 2025-09-18 05:16:41 +12:00
Garfield69
8b48206e84 oxtorrent-vip: new domain 2025-09-18 05:16:30 +12:00
Bogdan
896a3e6e21 core: bump backend dependencies (#16189) 2025-09-17 13:10:54 +03:00
jackettbot[bot]
70885a1153 Update rudub 2025-09-17 01:28:48 +00:00
Roc13x
edd3c83a94 exttorrents: restore keyword search alongside imdbid (#16188) 2025-09-16 18:14:24 +01:00
Garfield69
98c2590a16 idope: new domain resolves #1386 2025-09-16 18:16:46 +12:00
jackettbot[bot]
e4d773bae9 Update rudub 2025-09-16 01:28:48 +00:00
ilike2burnthing
9e716d8e9b thefallingangels: update cats 2025-09-16 00:16:11 +01:00
ilike2burnthing
b24acf3327 majomparade: add tpp info & search one page 2025-09-15 22:42:21 +01:00
Garfield69
7bf75794c8 dontorrent: new domain 2025-09-16 05:11:38 +12:00
ilike2burnthing
e6e82b90a6 arabp2p: include rows with magnets 2025-09-15 17:05:18 +01:00
jackettbot[bot]
bb8c403b23 Update rudub 2025-09-15 01:29:02 +00:00
Garfield69
c9066b5ea8 dasunerwartete: new row selector 2025-09-15 05:55:48 +12:00
Garfield69
19586cd2d1 ebook-shares: new cat 2025-09-15 05:43:55 +12:00
Garfield69
42c7d1fc59 extratorrent-st: ignore comment link. resolves #16186 2025-09-14 16:57:01 +12:00
jackettbot[bot]
a98e69d18b Update rudub 2025-09-14 01:29:04 +00:00
Garfield69
64c2f7b895 uztracker: new cat 2025-09-14 05:54:26 +12:00
jackettbot[bot]
5cd2b53907 Update rudub 2025-09-13 01:28:37 +00:00
ilike2burnthing
0649a45697 femdomcult: support sitewide freeleech 2025-09-12 23:58:26 +01:00
ilike2burnthing
e05e7a77c4 sextorrent: support sitewide freeleech 2025-09-12 23:57:23 +01:00
Garfield69
8f526aba30 magnetcat: bump alternate domains 2025-09-13 05:45:19 +12:00
Garfield69
67b98536b5 datascene: bump engine tag that should have been done back in march 2025-09-12 19:17:26 +12:00
jackettbot[bot]
04bdc9ebf0 Update rudub 2025-09-12 01:28:59 +00:00
Garfield69
a1af921349 torrenttip: bump domain 2025-09-12 06:00:53 +12:00
Garfield69
9411f98064 torrentsome: bump domain 2025-09-12 06:00:40 +12:00
Garfield69
4c0ef2d33b torrentqq: bump domains 2025-09-12 06:00:27 +12:00
jackettbot[bot]
6d8c9709e0 Update rudub 2025-09-11 01:29:12 +00:00
Bogdan
3011b5397a bump supported version 2025-09-10 19:01:18 +03:00
Bogdan
22284d5106 core: bump .NET framework to 4.7.1 (#16184) 2025-09-10 18:59:28 +03:00
ilike2burnthing
dbf2a455c4 sextorrent: add private 3x tracker. resolves #16182 (#16183) 2025-09-10 15:09:52 +01:00
ilike2burnthing
5e82419fee femdomcult: add freeleech case, remove old date fix
'never' date issue from 2020 seems to be resolved
2025-09-10 15:03:56 +01:00
Garfield69
b20d0aca8c mejortorrent: bump domain 2025-09-10 17:32:02 +12:00
jackettbot[bot]
240054e089 Update rudub 2025-09-10 01:29:01 +00:00
Garfield69
9586e6d349 ptp: movies only. resolves #16180 2025-09-10 12:36:19 +12:00
Garfield69
4f3d0589a3 yourbittorrent: removed. resolves 5417 2025-09-10 08:19:28 +12:00
Garfield69
710cbea589 torlock: removed. resolves #1650 2025-09-10 08:13:09 +12:00
Garfield69
f04babe9b4 anidex: removed. resolves #14991 2025-09-10 08:05:43 +12:00
Garfield69
9a5bc0e882 f1gp: new cat 2025-09-10 05:48:13 +12:00
jackettbot[bot]
3784d1a1bf Update rudub 2025-09-09 01:28:51 +00:00
Garfield69
7af2d20bc1 Revert "vsttorrents: CA trust"
This reverts commit 38f457975e.
2025-09-09 12:00:49 +12:00
Garfield69
38f457975e vsttorrents: CA trust 2025-09-09 06:21:03 +12:00
jackettbot[bot]
1766c0d49a Update rudub 2025-09-08 01:28:58 +00:00
Garfield69
3eaeb50c54 itatorrents: -> 9.1.6 info_hash removed. #14321 2025-09-08 05:52:51 +12:00
Garfield69
73c965b280 backups: update cats 2025-09-08 05:51:58 +12:00
Garfield69
9f73269dbd torrentleech: cat update. resolves #16176 2025-09-07 15:18:50 +12:00
jackettbot[bot]
4fefef26d3 Update rudub 2025-09-07 01:29:17 +00:00
emb3r
69c7c4187d darkpeers -> 9.1.6 info_hash removed (#16173) 2025-09-07 08:35:44 +12:00
ilike2burnthing
ec58139d77 assorted: remove old cert exceptions (#16172) 2025-09-06 14:39:39 +01:00
ilike2burnthing
4bc409793e lastfiles: update layout #7580 2025-09-06 14:26:01 +01:00
dependabot[bot]
800ac33982 build(deps): bump actions/setup-node from 4 to 5 (#16170)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-06 09:05:43 +01:00
63 changed files with 479 additions and 992 deletions

View File

@@ -24,7 +24,7 @@ jobs:
# This step sets up Node.js. The script that this workflow will run uses Node.js.
- name: Setup Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v5
with:
node-version: '18.x'

View File

@@ -20,7 +20,7 @@ The software implements the [Torznab](https://torznab.github.io/spec-1.3-draft/i
A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](https://github.com/webtor-io/go-jackett)
#### Supported Systems
The currently supported version of Jackett is 0.22.+, which is compatible with the following OS:
The currently supported version of Jackett is 0.23.+, which is compatible with the following OS:
* Windows 10 Version 1607+ or greater [supported operating systems here](https://github.com/dotnet/core/blob/main/release-notes/8.0/supported-os.md#windows)
* Linux [supported operating systems here](https://github.com/dotnet/core/blob/main/release-notes/8.0/supported-os.md#linux)
* macOS 13.0+ (Ventura) or greater [supported operating systems here](https://github.com/dotnet/core/blob/main/release-notes/8.0/supported-os.md#macos)
@@ -34,7 +34,6 @@ Prior versions of Jackett are no longer supported.
* 1337x
* 52BT
* ACG.RIP
* Anidex
* AniLibria
* Anime Time
* Anime Tosho
@@ -124,7 +123,6 @@ Prior versions of Jackett are no longer supported.
* The Pirate Bay (TPB)
* TheRARBG
* Tokyo Tosho
* Torlock
* Torrent Downloads
* Torrent Oyun indir
* Torrent[CORE]
@@ -152,7 +150,6 @@ Prior versions of Jackett are no longer supported.
* Wolfmax4K
* XXXClub
* xxxtor
* YourBittorrent
* YTS.ag
* zetorrents
* ZkTorrent
@@ -337,7 +334,6 @@ Prior versions of Jackett are no longer supported.
* Ebooks-Shares [![(invite needed)][inviteneeded]](#)
* Empornium (EMP) [![(invite needed)][inviteneeded]](#)
* eMuwarez
* eShareNet
* eStone (BigTorrent)
* Exitorrent.org [![(invite needed)][inviteneeded]](#)
* ExoticaZ (YourExotic)
@@ -528,6 +524,7 @@ Prior versions of Jackett are no longer supported.
* SeedFile (SF)
* seedpool
* SewerPT (下水道) [![(invite needed)][inviteneeded]](#)
* SexTorrent
* SFP (Share Friends Projekt)
* Shareisland
* Shazbat
@@ -765,7 +762,7 @@ If you want to run it with a user without a /home directory you need to add `Env
## Installation on Linux (ARMv6 or below)
1. Install [Mono 5.8](http://www.mono-project.com/download/#download-lin) or better (using the latest stable release is recommended)
1. Install [Mono 5.10](http://www.mono-project.com/download/#download-lin) or better (using the latest stable release is recommended)
* Follow the instructions on the mono website and install the `mono-devel` and the `ca-certificates-mono` packages.
* On Red Hat/CentOS/openSUSE/Fedora the `mono-locale-extras` package is also required.
2. Install libcurl:

View File

@@ -2,7 +2,7 @@
name: $(majorVersion).$(minorVersion).$(patchVersion)
variables:
majorVersion: 0
minorVersion: 22
minorVersion: 23
patchVersion: $[counter(variables['minorVersion'], 1)] # this will reset when we bump minor
jackettVersion: $(majorVersion).$(minorVersion).$(patchVersion)
buildConfiguration: Release
@@ -108,7 +108,7 @@ stages:
Mono:
buildDescription: Mono
imageName: ubuntu-22.04
framework: net462
framework: net471
runtime: linux-x64
archiveType: tar
artifactName: Jackett.Binaries.Mono.tar.gz
@@ -280,7 +280,6 @@ stages:
$newVersion.Value = '4.0.0.0'
$xml.Save($file)
Remove-Item '$(Build.BinariesDirectory)/Jackett/System.Net.Http.dll'
Remove-Item '$(Build.BinariesDirectory)/Jackett/System.Runtime.InteropServices.RuntimeInformation.dll'
- task: Bash@3
displayName: Set Folder and File Permissions (Mono, Linux and macOS)
@@ -438,7 +437,7 @@ stages:
Mono:
buildDescription: Mono
imageName: ubuntu-22.04
framework: net462
framework: net471
runtime: linux-x64
pool:
vmImage: $(imageName)
@@ -535,7 +534,7 @@ stages:
buildDescription: Mono
imageName: ubuntu-22.04
artifactName: Jackett.Binaries.Mono.tar.gz
framework: net462
framework: net471
runtime: linux-x64
pool:
vmImage: $(imageName)

View File

@@ -126,7 +126,7 @@ search:
# does not support imdbid search or provide imdb link in results
rows:
selector: table#torrents_list_p > tbody > tr:has(a[href^="download.php?id="])
selector: table#torrents_list_p > tbody > tr:has(a[href^="download.php?id="]), table#torrents_list_p > tbody > tr:has(a[href^="magnet:?xt="])
filters:
- name: andmatch

View File

@@ -5,8 +5,6 @@ description: "ArenaBG is a BULGARIAN Semi-Private Torrent Tracker for 0DAY / GEN
language: bg-BG
type: semi-private
encoding: UTF-8
certificates:
- 513af956f189b16a68ddd75d5d857309d3084d8d # Expired 17 April 2025
links:
- https://arenabg.com/
legacylinks:

View File

@@ -10,6 +10,7 @@ links:
caps:
categorymappings:
- {id: 100, cat: Console, desc: "Anbernic"}
- {id: 15, cat: PC/Mobile-Android, desc: "Android"}
- {id: 35, cat: TV/Anime, desc: "Anime"}
- {id: 51, cat: PC/Mac, desc: "Apple"}
@@ -17,10 +18,9 @@ caps:
- {id: 64, cat: Audio/Audiobook, desc: "Audiobooks"}
- {id: 71, cat: Console, desc: "Batocera"}
- {id: 4, cat: Movies/BluRay, desc: "Blu-Ray"}
- {id: 86, cat: Console, desc: "Chinese Systems"}
- {id: 22, cat: Console, desc: "CoinOps"}
- {id: 42, cat: Console, desc: "CoinOPS Official"}
- {id: 65, cat: Console, desc: "CoinOps Unofficial"}
- {id: 22, cat: Console, desc: "CoinOps"}
- {id: 63, cat: Books/Comics, desc: "Comics"}
- {id: 60, cat: Console, desc: "Core"}
- {id: 72, cat: Console, desc: "CORE Community"}
@@ -30,7 +30,6 @@ caps:
- {id: 5, cat: Books, desc: "EBooks"}
- {id: 80, cat: PC, desc: "Emulation Media"}
- {id: 61, cat: PC, desc: "emuxtras"}
- {id: 69, cat: TV, desc: "Entertainment"}
- {id: 89, cat: PC, desc: "Ghostware"}
- {id: 84, cat: TV, desc: "GOG DRM FREE"}
- {id: 77, cat: PC, desc: "Hyperspin"}
@@ -39,7 +38,9 @@ caps:
- {id: 85, cat: PC, desc: "MAME Rom Sets"}
- {id: 33, cat: TV/Sport, desc: "MMA/Boxing"}
- {id: 32, cat: Movies, desc: "Movie Pack"}
- {id: 6, cat: Movies, desc: "Movies/XVID"}
- {id: 106, cat: Movies/UHD, desc: "Movie Pack 4K"}
- {id: 6, cat: Movies, desc: "Movies"}
- {id: 105, cat: Movies/UHD, desc: "Movies 4K"}
- {id: 82, cat: PC, desc: "MS-DOS"}
- {id: 7, cat: Audio, desc: "Music"}
- {id: 31, cat: Console, desc: "Nintendo"}
@@ -48,7 +49,7 @@ caps:
- {id: 50, cat: Console, desc: "PlayBox"}
- {id: 87, cat: Console, desc: "Playnite"}
- {id: 30, cat: Console, desc: "Playstation"}
- {id: 62, cat: PC, desc: "RaspberryPi"}
- {id: 62, cat: PC, desc: "Raspberry Pi"}
- {id: 83, cat: PC, desc: "Retro eXo"}
- {id: 56, cat: PC, desc: "Retro Minis"}
- {id: 81, cat: PC, desc: "Retro Scene Releases"}
@@ -60,12 +61,12 @@ caps:
- {id: 68, cat: PC, desc: "Schmoomer's"}
- {id: 57, cat: Console, desc: "Sega"}
- {id: 74, cat: PC, desc: "Sleyk/SGC"}
- {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: 75, cat: Audio, desc: "Video Game Music"}
- {id: 90, cat: PC, desc: "TeknoParrot"}
- {id: 9, cat: TV, desc: "TV Packs"}
- {id: 11, cat: TV, desc: "TV Shows"}
- {id: 97, cat: TV/Other, desc: "Video Courses"}
- {id: 75, cat: TV, desc: "Video Game Music"}
- {id: 73, cat: Console, desc: "Wolfanoz"}
- {id: 14, cat: TV/Sport, desc: "WWE"}
- {id: 26, cat: Console, desc: "Xbox"}

View File

@@ -194,4 +194,4 @@ search:
minimumseedtime:
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 9.1.6
# json UNIT3D 9.1.7

View File

@@ -193,4 +193,4 @@ search:
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# json UNIT3D 9.1.6
# json UNIT3D 9.1.7

View File

@@ -120,8 +120,6 @@ search:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
@@ -196,4 +194,4 @@ search:
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# json UNIT3D 9.1.5
# json UNIT3D 9.1.6

View File

@@ -124,7 +124,7 @@ search:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
rows:
selector: $
selector: data
fields:
categorydesc:

View File

@@ -224,4 +224,4 @@ search:
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# json UNIT3D 8.3.6
# json UNIT3D 9.1.1

View File

@@ -64,6 +64,7 @@ caps:
- {id: 346, cat: Books/EBook, desc: "Chemistry"}
- {id: 347, cat: Books/EBook, desc: "Medical"}
- {id: 348, cat: Books/EBook, desc: "Mathematics"}
- {id: 363, cat: Books/EBook, desc: "Sheet Music"}
# Tech/Computers
- {id: 331, cat: Books/EBook, desc: "Electronics"}
- {id: 336, cat: Books/EBook, desc: "Video Games"}
@@ -87,6 +88,7 @@ caps:
- {id: 349, cat: Books/EBook, desc: "Self Help"}
- {id: 351, cat: Books/EBook, desc: "Religion"}
- {id: 358, cat: Books/EBook, desc: "History"}
- {id: 362, cat: Books/EBook, desc: "Politics"}
# Military
- {id: 287, cat: Books/EBook, desc: "WW1"}
- {id: 288, cat: Books/EBook, desc: "WW2"}

View File

@@ -1,225 +0,0 @@
---
id: esharenet
name: eShareNet
description: "eShareNet is a Private Tracker for British MOVIE / TV"
language: en-GB
type: private
encoding: UTF-8
links:
- https://esharenet.eu/
caps:
categorymappings:
- {id: 2, cat: TV, desc: "Comedy"}
- {id: 4, cat: TV, desc: "Entertainment"}
- {id: 5, cat: TV, desc: "Game Shows"}
- {id: 6, cat: TV, desc: "Motoring"}
- {id: 7, cat: TV, desc: "News and Current Affairs"}
- {id: 8, cat: TV, desc: "Sci-Fi"}
- {id: 9, cat: TV, desc: "Talkshow"}
- {id: 10, cat: TV, desc: "Advertisements - Continuity"}
- {id: 11, cat: TV, desc: "Comedy-Drama"}
- {id: 12, cat: TV, desc: "Fantasy"}
- {id: 13, cat: TV, desc: "Home and Property"}
- {id: 14, cat: Movies, desc: "Movies"}
- {id: 15, cat: Other, desc: "Other"}
- {id: 16, cat: TV, desc: "Soaps"}
- {id: 17, cat: TV, desc: "Trains and Planes"}
- {id: 18, cat: TV, desc: "Animation"}
- {id: 19, cat: TV/Documentary, desc: "Documentaries"}
- {id: 20, cat: TV, desc: "Food and Cooking"}
- {id: 21, cat: TV, desc: "Horror"}
- {id: 22, cat: Audio, desc: "Music"}
- {id: 23, cat: Audio, desc: "Radio"}
- {id: 24, cat: TV/Sport, desc: "Sport"}
- {id: 25, cat: TV, desc: "True Crime"}
- {id: 26, cat: Audio/Audiobook, desc: "Audiobook and E-book"}
- {id: 27, cat: TV, desc: "Drama"}
- {id: 28, cat: TV, desc: "Kids"}
- {id: 29, cat: TV, desc: "Mystery and Crime Fiction"}
- {id: 30, cat: TV, desc: "Reality"}
- {id: 31, cat: TV, desc: "Subtitles - english subs"}
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
login:
path: login
method: form
form: form[action$="/login"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: on
selectorinputs:
_token:
selector: input[name="_token"]
attribute: value
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: 50
page: 0
view: list
freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
# can search by genre but need range support. &genres[]=Action&genres[]=Comedy for Action and Comedy
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", ""]
genre:
selector: td:nth-last-child(8)
filters:
- name: replace
args: ["\n", ""]
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: validate
args: "Action, Adventure, Animation, Biography, Comedy, Crime, Documentary, Drama, Family, Fantasy, Game-Show, History, Horror, Music, Musical, Mystery, News, Reality-TV, Romance, Science_Fiction, Sitcom, Sport, Talk-Show, Thriller, War, Western"
description:
text: "{{ .Result.genre }}"
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:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# UNIT3D 2.5.0

View File

@@ -94,7 +94,7 @@ search:
args: ["in ", ""]
- name: trim
title:
selector: a[href^="/torrent/"]
selector: a[href^="/torrent/"]:not([href$="comments"])
details:
selector: a[href^="/torrent/"]
attribute: href

View File

@@ -110,7 +110,7 @@ search:
page: 2
followredirect: true
inputs:
q: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
q: "{{ .Keywords }}"
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
# 0=last 24 hours, 1=last 3 days, 2=last week, 3=last 2 weeks, 4=last month

View File

@@ -26,6 +26,7 @@ caps:
- {id: 17, cat: TV/Sport, desc: "F2 Championship"}
- {id: 18, cat: TV/Sport, desc: "F3 Championship"}
- {id: 19, cat: TV/Sport, desc: "FE Championship"}
- {id: 20, cat: TV/Sport, desc: "Freeleech"}
modes:
search: [q]

View File

@@ -133,8 +133,6 @@ search:
selector: td:nth-child(5) > span
attribute: title
# auto adjusted by site account profile
optional: true
default: "20 years ago" # some torrents have "Never" date
filters:
- name: dateparse
args: "MMM dd yyyy, HH:mm"
@@ -148,12 +146,14 @@ search:
selector: td:nth-child(9)
downloadvolumefactor:
case:
"img[alt=\"Freeleech\"]": 0
i.unlimited_leech: 0
i.sitewide_leech: 0
img[alt="Freeleech"]: 0
"*": 1
uploadvolumefactor:
case:
span.icon[title*="DoubleSeed"]: 2
"img[alt=\"DoubleSeed\"]": 2
img[alt="DoubleSeed"]: 2
"*": 1
minimumratio:
text: 0.5

View File

@@ -6,8 +6,6 @@ language: el-GR
type: private
encoding: UTF-8
testlinktorrent: false
certificates:
- b0728082e46b3cc54c913847cd931b7b895f5b72 # Expired 16 July 2025
links:
- https://hellashut.net/
legacylinks:

View File

@@ -6,8 +6,6 @@ language: el-GR
type: private
encoding: UTF-8
testlinktorrent: false
certificates:
- b0728082e46b3cc54c913847cd931b7b895f5b72 # Expired 16 July 2025
links:
- https://hellashut.net/
legacylinks:

View File

@@ -7,7 +7,7 @@ type: public
encoding: UTF-8
requestDelay: 2
links:
- https://idope.se/
- https://idope.me/
legacylinks:
- https://idope.black-mirror.xyz/
- https://idope.unblocked.casa/
@@ -19,6 +19,7 @@ legacylinks:
- https://idope.uk-unblock.pro/
- https://idope.unblocked.rest/
- https://idope.unblocked.monster/
- https://idope.se/
caps:
categorymappings:

View File

@@ -136,8 +136,6 @@ search:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
@@ -210,4 +208,4 @@ search:
minimumseedtime:
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 9.1.5 (custom)
# json UNIT3D 9.1.6 (custom)

View File

@@ -16,7 +16,7 @@ links:
- https://kickasst.net/
- https://kickasstorrents.id/
- https://thekat.cc/
- https://kickasshydra.dev/
- https://kattracker.com/
legacylinks:
- https://kickass.gg/
- https://katcr.io/
@@ -29,6 +29,7 @@ legacylinks:
- https://kickasstorrents.unblockninja.com/ # currently kickasstorrents-to proxy
- https://kickass-kat.com/
- https://kickass.sh/
- https://kickasshydra.dev/
caps:
categorymappings:

View File

@@ -40,13 +40,11 @@ caps:
- {id: 24, cat: Movies/SD, desc: "Movies: XVID", default: true}
- {id: 25, cat: Movies/SD, desc: "Movies: XVID-Ro", default: true}
- {id: 26, cat: PC/0day, desc: "Software", default: true}
- {id: 27, cat: XXX/x264, desc: "Movies: XXX", default: false}
- {id: 28, cat: Audio, desc: "Music", default: true}
- {id: 30, cat: PC/Games, desc: "Games: PC-ISO", default: true}
- {id: 31, cat: Movies/UHD, desc: "Movies: 4K", default: true}
- {id: 32, cat: Movies/UHD, desc: "Movies: 4KRo", default: true}
- {id: 33, cat: PC/Games, desc: "Games: Packs", default: true}
- {id: 34, cat: XXX/Pack, desc: "XXX Pack", default: false}
- {id: 42, cat: TV/Sport, desc: "Sport", default: true}
- {id: 43, cat: Books, desc: "Documents", default: true}
- {id: 44, cat: Other, desc: "Images", default: true}
@@ -56,9 +54,11 @@ caps:
- {id: 55, cat: Movies/WEB-DL, desc: "Movies: WEB-DL Ro", default: true}
- {id: 56, cat: TV/Documentary, desc: "Documentary", default: true}
- {id: 57, cat: TV/Documentary, desc: "Documentary-Ro", default: true}
- {id: 60, cat: XXX/ImageSet, desc: "ImagesXXX", default: false}
- {id: 81, cat: Movies/HD, desc: "Movies: x265-Ro", default: true}
- {id: 82, cat: Movies/HD, desc: "Movies: x265", default: true}
- {id: 27, cat: XXX/x264, desc: "Movies: XXX", default: false}
- {id: 34, cat: XXX/Pack, desc: "XXX Pack", default: false}
- {id: 60, cat: XXX/ImageSet, desc: "ImagesXXX", default: false}
modes:
search: [q]
@@ -78,12 +78,24 @@ settings:
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: _
options:
_: created
name: title
seeders: seeders
size: size
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_flaresolverr
type: info_flaresolverr
- name: info_activity
type: info
label: Account Inactivity
default: "Accounts inactive for more than 42 days are automatically deleted."
login:
path: login
@@ -108,15 +120,20 @@ search:
# https://lastfiles.ro/torrents?keyword=tt8337290&category=32&genre=&torrent_status=free
- path: torrents
categories: [1, 2, 5, 6, 9, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 28, 30, 31, 32, 33, 42, 43, 44, 49, 51, 54, 55, 56, 57, 81, 82]
inputs:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
# does not support multi categories
- path: torrents/adult
categories: [27, 34, 60]
inputs:
# does not support multi categories, leaving out category keyword defaults to all
keyword: "{{ .Keywords }}"
# active, dead, free, double, seedbox
torrent_status: "{{ if .Config.freeleech }}free{{ else }}active{{ end }}"
# has sort for size and seeders but not for title or date
# no option to sort by date, and using direction without sort breaks search, but the default for all is desc,
# so we only add sort if it's anything other than date, and only add direction if it's asc
sort: "{{ re_replace .Config.sort \"_\" \"\" }}"
direction: "{{ re_replace .Config.type \"desc\" \"\" }}"
rows:
selector: table.table-hover > tbody > tr
@@ -153,7 +170,7 @@ search:
img[src$="/4k.png"]: 31
img[src$="/4kRO.png"]: 32
img[src$="/gpack.png"]: 33
img[src$="/xxxpacks.png"]: 34
img[src$="/packxxx.jpeg"]: 34
img[src$="/sport.png"]: 42
img[src$="/docs.png"]: 43
img[src$="/images.png"]: 44
@@ -178,32 +195,127 @@ search:
- name: regexp
args: "src='(.+?)'"
genre:
selector: div.torrent-genres
selector: div.mt-1, div.torrent-genres
filters:
- name: replace
args: ["\n", ""]
- name: replace
args: [" & ", "_&_"]
- name: replace
args: ["Hip Hop", "Hip_Hop"]
- name: replace
args: ["Science Fiction", "Science_Fiction"]
- name: replace
args: ["TV Movie", "TV_Movie"]
- name: replace
args: ["Various Artists", "Various_Artists"]
- name: replace
args: ["Packs Android", "Packs_Android"]
- name: replace
args: ["Hard Rock", "Hard_Rock"]
- name: replace
args: ["Romanian Standup Comedy", "Romanian_Standup_Comedy"]
- name: replace
args: ["Windows Apps", "Windows_Apps"]
- name: replace
args: ["Rock Pop Soul soft rock", "Rock_Pop_Soul_soft_rock"]
- name: replace
args: ["Love songs", "Love_songs"]
- name: replace
args: ["Dance-pop Synth-pop", "Dance-pop_Synth-pop"]
- name: replace
args: ["R&B Soul", "R&B_Soul"]
- name: replace
args: ["Heavy Metal", "Heavy_Metal"]
- name: replace
args: ["Alternative Rock Electronic", "Alternative_Rock_Electronic"]
- name: replace
args: ["New Wave", "New_Wave"]
- name: replace
args: ["Alternative Rock", "Alternative_Rock"]
- name: replace
args: ["Deep House Mix", "Deep_House_Mix"]
- name: replace
args: ["Folk metal", "Folk_metal"]
- name: replace
args: ["Ro eBook", "Ro_eBook"]
- name: replace
args: ["Pop rock", "Pop_rock"]
- name: replace
args: ["Indie Folk", "Indie_Folk"]
- name: replace
args: ["Folk Rock", "Folk_Rock"]
- name: replace
args: ["World Music", "World_Music"]
- name: replace
args: ["Black Metal", "Black_Metal"]
- name: replace
args: ["Blues Rock", "Blues_Rock"]
- name: replace
args: ["Jazz Rock", "Jazz_Rock"]
- name: replace
args: ["Indie Pop", "Indie_Pop"]
- name: replace
args: ["Indie Rock", "Indie_Rock"]
- name: replace
args: ["XXX Images", "XXX_Images"]
- name: replace
args: ["Biblia Sacra", "Biblia_Sacra"]
- name: replace
args: ["Video Downloader", "Video_Downloader"]
- name: replace
args: ["XXX ADULT +18", "XXX_ADULT_+18"]
- name: replace
args: ["Fotbal | UEFA EURO 2025 U21", "Fotbal_|_UEFA_EURO_2025_U21"]
- name: replace
args: ["Dezvoltare Personala", "Dezvoltare_Personala"]
- name: replace
args: ["Action Drama War History Adventure", "Action_Drama_War_History_Adventure"]
- name: replace
args: ["Bossa Nova", "Bossa_Nova"]
- name: replace
args: ["Funk Soul", "Funk_Soul"]
- name: replace
args: ["Formula 1", "Formula_1"]
- name: replace
args: ["Literatura Universala", "Literatura_Universala"]
- name: replace
args: ["Romane inspirate de Holocaust", "Romane_inspirate_de_Holocaust"]
- name: replace
args: ["Politica si stiinte politice", "Politica_si_stiinte_politice"]
- name: replace
args: ["Comentarii si opinii", "Comentarii_si_opinii"]
- name: replace
args: ["Studii și eseuri", "Studii_ș_i_eseuri"]
description:
text: "{{ .Result.genre }}"
download:
selector: a[href*="/download/"]
attribute: href
date:
selector: td:nth-of-type(4) div[title]
attribute: title
date_elapsed:
# torrents
selector: td:nth-child(4) div[title]
optional: true
filters:
- name: timeago
- name: append
args: " +01:00" # CET
- name: dateparse
args: "MMM dd, yyyy @ h:mm tt zzz"
date_added:
# torrents/adult
selector: td:nth-child(4):not(:has(div))
optional: true
filters:
- name: dateparse
args: "dd-MMM-yyyy 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-of-type(5)
selector: td:nth-child(5)
grabs:
selector: td:nth-of-type(6)
selector: td:nth-child(8)
seeders:
selector: td:nth-of-type(7)
selector: td:nth-child(6)
leechers:
selector: td:nth-of-type(8)
selector: td:nth-child(7)
downloadvolumefactor:
case:
div.free-btn: 0
@@ -215,6 +327,6 @@ search:
minimumratio:
text: 1.0
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# Last Files V1
# 1 day (as seconds = 24 x 60 x 60)
text: 86400
# Last Files V2

View File

@@ -5,8 +5,6 @@ description: "LibraNet (LN) is a HUNGARIAN Private Torrent Tracker for EBOOKS /
language: hu-HU
type: private
encoding: ISO-8859-2
certificates:
- cf854da037e14a70df5da3b4088dc4059d5f3ffd # Expired 13 Aug 2025
links:
- https://libranet.org/

View File

@@ -9,10 +9,10 @@ encoding: UTF-8
links:
- https://magnetcatcat.com/
- https://clmclm.com/
- https://www.8800492.xyz/
- https://www.8800493.xyz/
- https://www.8800494.xyz/
- https://www.8800490.xyz/
- https://www.8800498.xyz/
- https://www.8800497.xyz/
- https://www.8800499.xyz/
- https://www.8800500.xyz/
legacylinks:
- https://www.8800460.xyz/
- https://www.8800473.xyz/
@@ -29,6 +29,10 @@ legacylinks:
- https://www.8800483.xyz
- https://www.8800486.xyz
- https://www.8800487.xyz
- https://www.8800492.xyz/
- https://www.8800493.xyz/
- https://www.8800494.xyz/
- https://www.8800490.xyz/
caps:
categorymappings:

View File

@@ -67,6 +67,10 @@ settings:
label: User-Agent
- name: info_useragent
type: info_useragent
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrentek oldalanként:</b> setting to <b>100</b> on your account profile.
- name: info_activity
type: info
label: Account Inactivity
@@ -87,10 +91,6 @@ search:
categories: [4, 5, 48, 50, 75, 76, 26, 25, 58, 59, 42, 51, 38, 24, 85, 87, 47, 36, 6, 7, 56, 33, 44, 28, 32, 30, 53, 74, 40, 41, 34, 35, 46]
inputs:
tipus: 1
- path: letoltes.php
categories: [4, 5, 48, 50, 75, 76, 26, 25, 58, 59, 42, 51, 38, 24, 85, 87, 47, 36, 6, 7, 56, 33, 44, 28, 32, 30, 53, 74, 40, 41, 34, 35, 46]
inputs:
tipus: 2
- path: xxx.php
categories: [70, 39, 57]
inputs:

View File

@@ -5,8 +5,6 @@ description: "MOJBLiNK is a SLOVENIAN Private Torrent Tracker for MOVIES / TV /
language: sl-SI
type: private
encoding: UTF-8
certificates:
- 736af8ef7f489e74d09d8feedc21821e1fbae296 # expired 23 Aug 2025
links:
- https://www.mojblink.si/

View File

@@ -10,7 +10,7 @@ type: public
encoding: UTF-8
# to fetch current domain use https://www.rantop.my/
links:
- https://www.nortorrent6.com/
- https://www.nortorrent.net/
legacylinks:
# latest domains list
- https://www.rantop.my/
@@ -26,7 +26,6 @@ legacylinks:
- https://torrent9.news/
- https://www.site-torrent.com/
# actual legacylinks
- https://www.torrent9.gd/
- https://www.torrent9.ing/
- https://www.torrent9.run/
- https://www.torrent9.cv/
@@ -41,6 +40,7 @@ legacylinks:
- https://www.nortorrent3.com/
- https://www.nortorrent4.com/
- https://www.nortorrent5.com/
- https://www.nortorrent6.com/
caps:
categorymappings:

View File

@@ -10,7 +10,7 @@ type: public
encoding: UTF-8
# to fetch current domain use https://www.rantop.my/
links:
- https://www.oxtorrent8.com/
- https://www.oxtorrent.diy/
- https://www.zone-torrent.me/
- https://www.mega-torrent.net/
legacylinks:
@@ -28,7 +28,6 @@ legacylinks:
- https://oxtorrent.blog/
- https://www.site-torrent.com/
# actual legacylinks
- https://www.oxtorrent.cv/
- https://www.torrent911.ke/
- https://oxtorrent.proxyninja.org/
- https://www-oxtorrent.com/
@@ -49,6 +48,7 @@ legacylinks:
- https://www.oxtorrent7.com/
- https://www.mega-torrent6.com/
- https://www.zone-torrent3.com/
- https://www.oxtorrent8.com/
caps:
categorymappings:

View File

@@ -42,7 +42,6 @@ caps:
- {id: 30, cat: TV, desc: "TV Seriale Bajki"}
- {id: 9, cat: TV/HD, desc: "TV Seriale HD"}
- {id: 22, cat: TV/SD, desc: "TV Seriale SD"}
- {id: 7, cat: XXX, desc: "XXX 18+"}
modes:
search: [q]

View File

@@ -123,8 +123,6 @@ search:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
@@ -199,4 +197,4 @@ search:
minimumseedtime:
# 5 days (as seconds = 5 x 24 x 60 x 60)
text: 432000
# json UNIT3D 9.0.6
# json UNIT3D 9.1.6

View File

@@ -9,38 +9,38 @@ type: semi-private
encoding: windows-1251
followredirect: true
links:
- https://sep06.rudub.bet/
- https://sep20.rudub.bet/
legacylinks:
- https://aug22.rudub.buzz/
- http://aug23.rudub.buzz/
- https://aug23.rudub.buzz/
- http://aug24.rudub.buzz/
- https://aug24.rudub.buzz/
- http://aug25.rudub.buzz/
- https://aug25.rudub.buzz/
- http://aug26.rudub.buzz/
- https://aug26.rudub.buzz/
- http://aug27.rudub.buzz/
- https://aug27.rudub.buzz/
- http://aug28.rudub.buzz/
- https://aug28.rudub.buzz/
- http://aug29.rudub.buzz/
- https://aug29.rudub.buzz/
- http://aug30.rudub.buzz/
- https://aug30.rudub.buzz/
- http://aug31.rudub.buzz/
- https://aug31.rudub.buzz/
- http://sep01.rudub.buzz/
- https://sep01.rudub.buzz/
- http://sep02.rudub.buzz/
- https://sep02.rudub.buzz/
- http://sep03.rudub.bet/
- https://sep03.rudub.bet/
- http://sep04.rudub.bet/
- https://sep04.rudub.bet/
- http://sep05.rudub.bet/
- https://sep05.rudub.bet/
- http://sep06.rudub.bet/
- https://sep06.rudub.bet/
- http://sep07.rudub.bet/
- https://sep07.rudub.bet/
- http://sep08.rudub.bet/
- https://sep08.rudub.bet/
- http://sep09.rudub.bet/
- https://sep09.rudub.bet/
- http://sep10.rudub.bet/
- https://sep10.rudub.bet/
- http://sep11.rudub.bet/
- https://sep11.rudub.bet/
- http://sep12.rudub.bet/
- https://sep12.rudub.bet/
- http://sep13.rudub.bet/
- https://sep13.rudub.bet/
- http://sep14.rudub.bet/
- https://sep14.rudub.bet/
- http://sep15.rudub.bet/
- https://sep15.rudub.bet/
- http://sep16.rudub.bet/
- https://sep16.rudub.bet/
- http://sep17.rudub.bet/
- https://sep17.rudub.bet/
- http://sep18.rudub.bet/
- https://sep18.rudub.bet/
- http://sep19.rudub.bet/
- https://sep19.rudub.bet/
- http://sep20.rudub.bet/
caps:
categorymappings:
- {id: 1, cat: TV, desc: "TV"}

View File

@@ -0,0 +1,195 @@
# SexTorrent uses the Luminance code, which is based on gazelle
# ajax.php API additionally needs the auth=$authkey argument
# Because the API is e.g. missing poster images we use screen scraping instead of the generic gazelle based approach
---
id: sextorrent
name: SexTorrent
description: "SexTorrent is a Private Torrent Tracker for 3X"
language: en-US
type: private
encoding: UTF-8
links:
- https://sextorrent.eu/
caps:
categorymappings:
- {id: 63, cat: XXX, desc: "Hairy"}
- {id: 64, cat: XXX, desc: "Voyeur"}
- {id: 30, cat: XXX, desc: "Amateur"}
- {id: 29, cat: XXX, desc: "Anal"}
- {id: 27, cat: XXX, desc: "Asian"}
- {id: 26, cat: XXX, desc: "BBW"}
- {id: 44, cat: XXX, desc: "BDSM"}
- {id: 25, cat: XXX, desc: "Big Ass"}
- {id: 24, cat: XXX, desc: "Big Tits"}
- {id: 34, cat: XXX, desc: "Black"}
- {id: 66, cat: XXX, desc: "Busty"}
- {id: 23, cat: XXX, desc: "Classic"}
- {id: 33, cat: XXX, desc: "Creampie"}
- {id: 22, cat: XXX, desc: "Cumshot"}
- {id: 62, cat: XXX/DVD, desc: "DVD-R"}
- {id: 21, cat: XXX, desc: "Fetish"}
- {id: 19, cat: XXX, desc: "Gay / Bi"}
- {id: 18, cat: XXX, desc: "Hardcore"}
- {id: 32, cat: XXX, desc: "HD porn"}
- {id: 28, cat: XXX, desc: "Hentai / 3D"}
- {id: 17, cat: XXX, desc: "Homemade"}
- {id: 38, cat: XXX, desc: "Interracial"}
- {id: 48, cat: XXX, desc: "Latina"}
- {id: 16, cat: XXX, desc: "Lesbian"}
- {id: 61, cat: XXX, desc: "Lingerie"}
- {id: 56, cat: XXX/Other, desc: "Magazines"}
- {id: 60, cat: XXX/Other, desc: "Manga / Comic"}
- {id: 15, cat: XXX, desc: "Masturbation"}
- {id: 14, cat: XXX, desc: "Mature"}
- {id: 13, cat: XXX/Pack, desc: "Megapack"}
- {id: 55, cat: XXX, desc: "Milf"}
- {id: 49, cat: XXX, desc: "Natural Tits"}
- {id: 12, cat: XXX, desc: "Oral"}
- {id: 20, cat: XXX, desc: "Orgia / Gang Bang"}
- {id: 42, cat: XXX/Other, desc: "Other"}
- {id: 50, cat: XXX, desc: "Parody"}
- {id: 41, cat: XXX/WEB-DL, desc: "Paysite"}
- {id: 11, cat: XXX/ImageSet, desc: "Picture set"}
- {id: 40, cat: XXX, desc: "Piss"}
- {id: 43, cat: XXX/Other, desc: "Porn Music Videos"}
- {id: 67, cat: XXX, desc: "POV"}
- {id: 45, cat: XXX, desc: "Pregnant / Preggo"}
- {id: 57, cat: XXX, desc: "Scat/Puke"}
- {id: 10, cat: XXX, desc: "Shemale / TS"}
- {id: 51, cat: XXX/WEB-DL, desc: "Siterip"}
- {id: 52, cat: XXX, desc: "Softcore"}
- {id: 53, cat: XXX, desc: "Squirt"}
- {id: 9, cat: XXX, desc: "Straight"}
- {id: 8, cat: XXX, desc: "Tini"}
- {id: 65, cat: XXX, desc: "Virtual Reality"}
- {id: 7, cat: XXX/Other, desc: "XXX Games / Program"}
modes:
search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: time
options:
time: created
seeders: seeders
size: size
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_activity
type: info
label: Account Inactivity
default: "After 4 months of no activity (no login) your account will be disabled."
login:
path: login
method: form
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
cinfo: "2550|1350|24|-60"
keeplogged: 1
selectorinputs:
token:
selector: input[name="token"]
attribute: value
error:
# invalid credentials error is added by JS, this is the IP ban error
- selector: div.thin > div > h2
test:
path: index.php
selector: "#nav_userinfo"
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
title: "{{ .Keywords }}"
order_by: "{{ .Config.sort }}"
order_way: "{{ .Config.type }}"
action: advanced
filter_freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
rows:
selector: table#torrent_table > tbody > tr[class^="torrent row"]:has(a[href*="action=download"])
fields:
download:
selector: a[href^="/torrents.php?action=download&id="]
attribute: href
description_tags:
selector: div.tags
description:
case:
span.icon[title*="okay"]: "Verified: {{ .Result.description_tags }}"
"*": "Unverified: {{ .Result.description_tags }}"
title:
selector: a[href^="/torrents.php?id="]
category:
selector: a[href*="filter_cat"]
attribute: href
filters:
- name: regexp
args: "(\\d+)]=1"
details:
selector: a[href^="/torrents.php?id="]
attribute: href
poster:
selector: td:nth-child(2) > script
filters:
- name: regexp
args: "src=(.*?)>"
- name: re_replace
args: ["[\\\\\"]", ""]
- name: replace
args: ["/static/common/noartwork/noimage.png", ""]
files:
selector: td:nth-child(3)
date:
selector: td:nth-child(5) > span
attribute: title
# auto adjusted by site account profile
filters:
- name: dateparse
args: "MMM dd yyyy, HH:mm"
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:
i.unlimited_leech: 0
i.sitewide_leech: 0
img[alt="Freeleech"]: 0
"*": 1
uploadvolumefactor:
case:
span.icon[title*="DoubleSeed"]: 2
img[alt="DoubleSeed"]: 2
"*": 1
minimumratio:
text: 0.5
# luminance

View File

@@ -5,8 +5,6 @@ description: "TheEmpire (TE) is a Private Torrent Tracker for COMMONWEALTH TV /
language: en-US
type: private
encoding: UTF-8
certificates:
- 922b485175aeea4e956d03596eedebcd4a09fedc # expired 23-May-2025
links:
- https://theempire.click/
legacylinks:

View File

@@ -60,7 +60,8 @@ caps:
- {id: 130, cat: Books, desc: "E-Books FSK 18"}
- {id: 159, cat: Movies/Other, desc: "Anime Movies HD"}
- {id: 160, cat: Movies/Other, desc: "Anime Movies SD"}
- {id: 128, cat: TV/Anime, desc: "Anime Serien"}
- {id: 168, cat: TV/Anime, desc: "Anime Serien HD"}
- {id: 169, cat: TV/Anime, desc: "Anime Serien SD"}
- {id: 129, cat: TV/Anime, desc: "Anime Sonstiges"}
- {id: 118, cat: Other, desc: "Other Mobile"}
- {id: 119, cat: Other, desc: "Other Hörbücher"}

View File

@@ -5,8 +5,6 @@ description: "ThePlace (TP) is a Private Torrent Tracker for SEDUCTION / SELF-IM
language: en-US
type: private
encoding: UTF-8
certificates:
- ccb0ad32c7287499e90404492a7ee703b380d3a0 # Expired 30 Aug 2025
links:
- https://theplace.click/
legacylinks:

View File

@@ -1,159 +0,0 @@
---
id: torlock
name: Torlock
description: "Torlock is a torrent search site that lists verified torrents only for TV series and movies"
language: en-US
type: public
encoding: UTF-8
requestDelay: 2
links:
- https://www.torlock.com/
legacylinks:
- https://torlock.com/
- https://www.torlock.icu/
- https://torlock.nocensor.cloud/
- https://torlock.mrunblock.bond/
- https://torlock.unblockit.download/
- https://www.torlock2.com/ # 400 Bad Request No required SSL certificate was sent
caps:
# dont forget to update the search fields category case block
categorymappings:
- {id: TELEVISION, cat: TV, desc: "TV Shows"}
- {id: MOVIES, cat: Movies, desc: "Movies"}
- {id: MUSIC, cat: Audio, desc: "Music"}
- {id: GAMES, cat: PC/Games, desc: "Games"}
- {id: SOFTWARE, cat: PC, desc: "Software"}
- {id: ANIME, cat: TV/Anime, desc: "Anime"}
- {id: EBOOKS, cat: Books/EBook, desc: "Books"}
- {id: OTHER, cat: Other, desc: "Other"}
- {id: ADULT, cat: XXX, desc: "Adult"}
- {id: AUDIOBOOK, cat: Audio/Audiobook, desc: "Audiobook"}
- {id: IMAGES, cat: Other/Misc, desc: "Images"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: sort
type: select
label: Sort requested from site (only works for search with keywords)
default: added
options:
added: created
seeds: seeders
size: size
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
search:
paths:
- path: "/all/torrents/{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}.html?sort={{ .Config.sort }}&order={{ .Config.type }}"
categories: ["!", TELEVISION, MOVIES, MUSIC, GAMES, SOFTWARE, ANIME, EBOOKS, OTHER, ADULT, AUDIOBOOK, IMAGES]
- path: "{{ if .Keywords }}/television/torrents/{{ .Keywords }}.html?sort={{ .Config.sort }}&order={{ .Config.type }}{{else}}/television/1/{{ .Config.sort }}/{{ .Config.type }}.html{{end}}"
categories: [TELEVISION]
- path: "{{ if .Keywords }}/movie/torrents/{{ .Keywords }}.html?sort={{ .Config.sort }}&order={{ .Config.type }}{{else}}/movies/1/{{ .Config.sort }}/{{ .Config.type }}.html{{end}}"
categories: [MOVIES]
- path: "{{ if .Keywords }}/music/torrents/{{ .Keywords }}.html?sort={{ .Config.sort }}&order={{ .Config.type }}{{else}}/music/1/{{ .Config.sort }}/{{ .Config.type }}.html{{end}}"
categories: [MUSIC]
- path: "{{ if .Keywords }}/game/torrents/{{ .Keywords }}.html?sort={{ .Config.sort }}&order={{ .Config.type }}{{else}}/games/1/{{ .Config.sort }}/{{ .Config.type }}.html{{end}}"
categories: [GAMES]
- path: "{{ if .Keywords }}/software/torrents/{{ .Keywords }}.html?sort={{ .Config.sort }}&order={{ .Config.type }}{{else}}/software/1/{{ .Config.sort }}/{{ .Config.type }}.html{{end}}"
categories: [SOFTWARE]
- path: "{{ if .Keywords }}/anime/torrents/{{ .Keywords }}.html?sort={{ .Config.sort }}&order={{ .Config.type }}{{else}}/anime/1/{{ .Config.sort }}/{{ .Config.type }}.html{{end}}"
categories: [ANIME]
- path: "{{ if .Keywords }}/ebook/torrents/{{ .Keywords }}.html?sort={{ .Config.sort }}&order={{ .Config.type }}{{else}}/ebooks/1/{{ .Config.sort }}/{{ .Config.type }}.html{{end}}"
categories: [EBOOKS]
- path: "{{ if .Keywords }}/unknown/torrents/{{ .Keywords }}.html?sort={{ .Config.sort }}&order={{ .Config.type }}{{else}}/unknown.html{{end}}" # sorting is broken for unknown
categories: [OTHER]
- path: "{{ if .Keywords }}/adult/torrents/{{ .Keywords }}.html?sort={{ .Config.sort }}&order={{ .Config.type }}{{else}}/adult/1/{{ .Config.sort }}/{{ .Config.type }}.html{{end}}"
categories: [ADULT]
- path: "{{ if .Keywords }}/audiobook/torrents/{{ .Keywords }}.html?sort={{ .Config.sort }}&order={{ .Config.type }}{{else}}/audiobook/1/{{ .Config.sort }}/{{ .Config.type }}.html{{end}}"
categories: [AUDIOBOOK]
- path: "{{ if .Keywords }}/image/torrents/{{ .Keywords }}.html?sort={{ .Config.sort }}&order={{ .Config.type }}{{else}}/images/1/{{ .Config.sort }}/{{ .Config.type }}.html{{end}}"
categories: [IMAGES]
keywordsfilters:
- name: tolower
- name: re_replace
args: ["[^a-zA-Z0-9]+", "-"]
rows:
selector: table > tbody > tr:has(td:has(div:has(a[href^="/torrent/"])))
filters:
- name: andmatch
fields:
category:
selector: span[class^="tv"]
attribute: class
case:
span.tv0: OTHER
span.tv1: MOVIES
span.tv2: MUSIC
span.tv3: TELEVISION
span.tv4: GAMES
span.tv5: SOFTWARE
span.tv6: ANIME
span.tv7: ADULT
span.tv8: EBOOKS
span.tv9: IMAGES
span.tv10: EBOOKS
span.tv12: AUDIOBOOK
"*": OTHER # some torrents have invalid categories
title:
selector: td:nth-child(1) > div > a
details:
selector: td:nth-child(1) > div > a[href^="/torrent/"]
attribute: href
download:
selector: td:nth-child(1) > div > a[href^="/torrent/"]
attribute: href
filters:
- name: replace
args: ["/torrent/", "/tor/"]
- name: regexp
args: (^/tor/\d*)
- name: append
args: ".torrent"
date_year:
selector: td:nth-child(2):contains("/")
optional: true
filters:
- name: append
args: " -07:00" # PDT
- name: dateparse
args: "M/d/yyyy zzz"
date_day:
selector: td:nth-child(2):contains("Today"), td:nth-child(2):contains("Yesterday")
optional: true
filters:
- name: fuzzytime
date_ago:
selector: td:nth-child(2):not(:contains("Today")):not(:contains("Yesterday")):not(:contains("/"))
optional: true
filters:
- name: re_replace
args: ["(min|mins)", "minutes"]
- name: timeago
date:
text: "{{ if or .Result.date_year .Result.date_ago .Result.date_day }}{{ or .Result.date_year .Result.date_ago .Result.date_day }}{{ else }}now{{ end }}"
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

View File

@@ -5,8 +5,6 @@ description: "TOrrent-tuRK (TORK) is a TURKISH Private Torrent Tracker for HD MO
language: tr-TR
type: private
encoding: UTF-8
certificates:
- 69ba9fe5b59701b93762e8a97a3b741718fcaef6 # Expired 5th July 2025
links:
- https://torrent-turk.de/
legacylinks:

View File

@@ -27,7 +27,7 @@ caps:
- {id: 13, cat: Movies/BluRay, desc: "Movies Bluray"}
- {id: 47, cat: Movies/UHD, desc: "Movies 4K"}
- {id: 15, cat: Movies, desc: "Movies Boxsets"}
- {id: 29, cat: TV/Documentary, desc: "Documentaries"}
- {id: 29, cat: Movies/Other, desc: "Documentaries"}
- {id: 26, cat: TV/SD, desc: "TV Episodes"}
- {id: 32, cat: TV/HD, desc: "TV Episodes HD"}

View File

@@ -7,13 +7,9 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentqq384.com/
- https://torrentegg74.com/
- https://torrentqq386.com/
- https://torrentegg76.com/
legacylinks:
- https://torrentegg60.com/
- https://torrentqq369.com/
- https://torrentegg61.com/
- https://torrentqq370.com/
- https://torrentegg62.com/
- https://torrentqq371.com/
- https://torrentegg63.com/
@@ -39,6 +35,10 @@ legacylinks:
- https://torrentegg72.com/
- https://torrentegg73.com/
- https://torrentqq383.com/
- https://torrentqq384.com/
- https://torrentegg74.com/
- https://torrentqq385.com/
- https://torrentegg75.com/
caps:
categorymappings:

View File

@@ -9,10 +9,8 @@ followredirect: true
requestDelay: 2
# to fetch current domain use https://tzip.top/
links:
- https://torrentsome211.com/
- https://torrentsome213.com/
legacylinks:
- https://torrentsome196.com/
- https://torrentsome197.com/
- https://torrentsome198.com/
- https://torrentsome199.com/
- https://torrentsome200.com/
@@ -26,6 +24,8 @@ legacylinks:
- https://torrentsome208.com/
- https://torrentsome209.com/
- https://torrentsome210.com/
- https://torrentsome211.com/
- https://torrentsome212.com/
caps:
categorymappings:

View File

@@ -9,10 +9,8 @@ followredirect: true
requestDelay: 2
# to fetch current domain use https://tzip.top/
links:
- https://torrenttip192.top/
- https://torrenttip194.top/
legacylinks:
- https://torrenttip177.com/
- https://torrenttip178.com/
- https://torrenttip179.com/
- https://torrenttip180.top/
- https://torrenttip181.top/
@@ -26,6 +24,8 @@ legacylinks:
- https://torrenttip189.top/
- https://torrenttip190.top/
- https://torrenttip191.top/
- https://torrenttip192.top/
- https://torrenttip193.top/
caps:
categorymappings:

View File

@@ -5,8 +5,6 @@ description: "TribalMixes is a ratioless Semi-Private Torrent Tracker for DJ MIX
language: en-GB
type: semi-private
encoding: ISO-8859-1
certificates:
- 2bce64a8b2401c791d52146852fc1e194a992c75 # Expired 23rd Aug 2025
links:
- https://www.tribalmixes.com/

View File

@@ -187,4 +187,4 @@ search:
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# json UNIT3D 9.1.6
# json UNIT3D 9.1.7

View File

@@ -90,8 +90,9 @@ caps:
- {id: 124, cat: Audio, desc: " |- Фольклор, Народная и Этническая музыка"}
- {id: 231, cat: Audio, desc: " |- Сборники и альбомы выходившие неофициальными изданиями."}
- {id: 144, cat: Audio, desc: "♫ ROCK & METAL ♫"}
- {id: 201, cat: Audio, desc: " |- Русский Rock, Metal"}
- {id: 202, cat: Audio, desc: " |- Сборники Русского рока"}
- {id: 201, cat: Audio, desc: " |- Русский Rock, Metal (mp3)"}
- {id: 202, cat: Audio, desc: " |- Сборники Русского рока (mp3)"}
- {id: 323, cat: Audio, desc: " |- Русский Rock, Metal (Lossless)"}
- {id: 214, cat: Audio, desc: " |- Soft & Pop-Rock"}
- {id: 156, cat: Audio, desc: " |- Progressive, Art, Classic & Hard Rock"}
- {id: 213, cat: Audio, desc: " |- Melodic & Folk Rock"}

View File

@@ -5,8 +5,6 @@ description: "X-ite.me (XM) is a Private Torrent Tracker for LGBTQ MOVIES / GENE
language: en-US
type: private
encoding: UTF-8
certificates:
- BDA8F8F6401AF1D9D9A15EA3B7D30FD36DCC4F75 # Expired 19th Aug 2025
links:
- https://x-ite.me/

View File

@@ -5,8 +5,6 @@ description: "xxxtor is a RUSSIAN Public Torrent Tracker for 3X"
language: ru-RU
type: public
encoding: UTF-8
certificates:
- 8fc6357f59e24d16d38f06ed34f780717f4bf0b4 # expired 3 Feb 2025
links:
- https://xxxtor.com/
legacylinks:

View File

@@ -119,8 +119,6 @@ search:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
@@ -189,4 +187,4 @@ search:
text: "{{ if .Result._featured }}2{{ else }}{{ .Result.uploadvolumefactor_double_upload }}{{ end }}"
minimumratio:
text: 0.5
# json UNIT3D 9.1.2
# json UNIT3D 9.1.6

View File

@@ -1,111 +0,0 @@
---
id: yourbittorrent
name: YourBittorrent
description: "YourBittorrent is a Public torrent index"
language: en-US
type: public
encoding: UTF-8
links:
- https://yourbittorrent.com/
- https://yourbittorrent2.com/
legacylinks:
- https://yourbittorrent.host/
- https://yourbittorrent.nocensor.cloud/
- https://yourbittorrent.mrunblock.bond/
caps:
categorymappings:
- {id: anime, cat: TV/Anime, desc: Anime}
- {id: software, cat: PC, desc: Software}
- {id: ebooks, cat: Books, desc: Ebooks}
- {id: adult, cat: XXX, desc: Adult}
- {id: games, cat: PC/Games, desc: Games}
- {id: movies, cat: Movies, desc: Movies}
- {id: music, cat: Audio, desc: Music}
- {id: television, cat: TV, desc: TV}
- {id: other, cat: Other, desc: Other}
- {id: photos, cat: Other, desc: Photos}
- {id: pictures, cat: Other, desc: Pictures}
- {id: unknown, cat: Other, desc: Unknown}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings: []
search:
paths:
- path: /
inputs:
q: "{{ .Keywords }}"
allowEmptyInputs: true
keywordsfilters:
- name: re_replace
args: ["[\\s]+", "-"]
- name: tolower
rows:
selector: tr.table-default:has(a[href^="/torrent/"])
filters:
- name: andmatch
fields:
category:
selector: td:nth-child(1)
attribute: onclick
filters:
- name: regexp
args: "href='/(.+?).html"
title:
selector: td:nth-child(2) a
details:
selector: td:nth-child(2) a
attribute: href
download:
selector: td:nth-child(2) a
attribute: href
# turn /torrent/25778710/have-i-got-news-for-you-s59e02-720p-britishb00bseztv.html
# into /down/25778710.torrent
filters:
- name: split
args: ["/", 2]
- name: prepend
args: "/down/"
- name: append
args: ".torrent"
size:
selector: td:nth-child(3)
date_day:
selector: td:nth-child(4):not(:contains("/")):not(:contains("-"))
optional: true
filters:
- name: replace
args: ["Today", "now"]
- name: replace
args: ["Yesterday", "1 day"]
- name: timeago
date_year:
selector: td:nth-child(4):contains("/"), td:nth-child(4):contains("-")
optional: true
filters:
- name: replace
args: ["-", "/"]
- name: append
args: " -07:00" # PDT
- name: dateparse
args: "dd/MM/yy zzz"
date:
text: "{{ if or .Result.date_year .Result.date_day }}{{ or .Result.date_year .Result.date_day }}{{ else }}now{{ end }}"
seeders:
selector: td:nth-child(5)
leechers:
selector: td:nth-child(6)
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -7,7 +7,7 @@ type: public
encoding: UTF-8
# to fetch current domain use https://www.rantop.my/
links:
- https://www.zetorrents1.com/
- https://www.zetorrents.diy/
legacylinks:
# latest domains list
- https://www.rantop.my/
@@ -22,7 +22,6 @@ legacylinks:
- https://www.rantop.org/
- https://www.site-torrent.com/
# actual legacylinks
- https://www.zetorrents.cc/
- https://www.zetorrents.tv/
- https://www.zetorrents.bz/
- https://www.zetorrents.nl/
@@ -39,6 +38,7 @@ legacylinks:
- https://www.zetorrents.my/
- https://wvw-zetorrents.com/
- https://www-zetorrents.com/
- https://www.zetorrents1.com/
caps:
categories:

View File

@@ -7,9 +7,11 @@ description: "ZkTorrent is a FRENCH Public site for MOVIES / TV / GENERAL"
language: fr-FR
type: public
encoding: UTF-8
certificates:
- 6daab5aed021a47614f439584fc450bde16cb528 # cloudflare
# to fetch current domain use https://www.rantop.my/
links:
- https://www.zktorrent5.com/
- https://www.zktorrent.net/
legacylinks:
# latest domains list
- https://www.rantop.my/
@@ -25,7 +27,6 @@ legacylinks:
- https://gktorrent.news/
- https://www.site-torrent.com/
# actual legacylinks
- https://www.gktorrent.sk/
- https://www.gktorrent.uno/
- https://www.gktorrent.gy/
- https://www.gktorrent.si/
@@ -40,6 +41,7 @@ legacylinks:
- https://www.zktorrent2.com/
- https://www.zktorrent3.com/
- https://www.zktorrent4.com/
- https://www.zktorrent5.com/
caps:
categorymappings:

View File

@@ -1,303 +0,0 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using AngleSharp.Dom;
using AngleSharp.Html.Parser;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig;
using Jackett.Common.Services.Interfaces;
using Jackett.Common.Utils;
using Newtonsoft.Json.Linq;
using NLog;
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
namespace Jackett.Common.Indexers.Definitions
{
[ExcludeFromCodeCoverage]
public class Anidex : IndexerBase
{
public override string Id => "anidex";
public override string Name => "Anidex";
public override string Description => "Anidex is a Public torrent tracker and indexer, primarily for English fansub groups of anime";
public override string SiteLink { get; protected set; } = "https://anidex.info/";
public override string Language => "en-US";
public override string Type => "public";
public override TorznabCapabilities TorznabCaps => SetCapabilities();
public Anidex(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l,
IProtectionService ps, ICacheService cs)
: base(configService: configService,
client: wc,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationData())
{
configData.AddDynamic("DDoS-Guard", new DisplayInfoConfigurationItem("DDoS-Guard", "This site may use DDoS-Guard Protection, therefore Jackett requires <a href='https://github.com/Jackett/Jackett#configuring-flaresolverr' target='_blank'>FlareSolverr</a> to access it."));
AddLanguageConfiguration();
// Configure the sort selects
var sortBySelect = new SingleSelectConfigurationItem("Sort by", new Dictionary<string, string>
{
{"upload_timestamp", "created"},
{"seeders", "seeders"},
{"size", "size"},
{"filename", "title"}
})
{ Value = "upload_timestamp" };
configData.AddDynamic("sortrequestedfromsite", sortBySelect);
var orderSelect = new SingleSelectConfigurationItem("Order", new Dictionary<string, string>
{
{"desc", "Descending"},
{"asc", "Ascending"}
})
{ Value = "desc" };
configData.AddDynamic("orderrequestedfromsite", orderSelect);
EnableConfigurableRetryAttempts();
}
private TorznabCapabilities SetCapabilities()
{
var caps = new TorznabCapabilities
{
TvSearchParams = new List<TvSearchParam>
{
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep
},
MusicSearchParams = new List<MusicSearchParam>
{
MusicSearchParam.Q,
},
BookSearchParams = new List<BookSearchParam>
{
BookSearchParam.Q,
}
};
// Configure the category mappings
caps.Categories.AddCategoryMapping(1, TorznabCatType.TVAnime, "Anime - Sub");
caps.Categories.AddCategoryMapping(2, TorznabCatType.TVAnime, "Anime - Raw");
caps.Categories.AddCategoryMapping(3, TorznabCatType.TVAnime, "Anime - Dub");
caps.Categories.AddCategoryMapping(4, TorznabCatType.TVAnime, "LA - Sub");
caps.Categories.AddCategoryMapping(5, TorznabCatType.TVAnime, "LA - Raw");
caps.Categories.AddCategoryMapping(6, TorznabCatType.BooksEBook, "Light Novel");
caps.Categories.AddCategoryMapping(7, TorznabCatType.BooksComics, "Manga - TLed");
caps.Categories.AddCategoryMapping(8, TorznabCatType.BooksComics, "Manga - Raw");
caps.Categories.AddCategoryMapping(9, TorznabCatType.AudioMP3, "♫ - Lossy");
caps.Categories.AddCategoryMapping(10, TorznabCatType.AudioLossless, "♫ - Lossless");
caps.Categories.AddCategoryMapping(11, TorznabCatType.AudioVideo, "♫ - Video");
caps.Categories.AddCategoryMapping(12, TorznabCatType.PCGames, "Games");
caps.Categories.AddCategoryMapping(13, TorznabCatType.PC0day, "Applications");
caps.Categories.AddCategoryMapping(14, TorznabCatType.XXXImageSet, "Pictures");
caps.Categories.AddCategoryMapping(15, TorznabCatType.XXX, "Adult Video");
caps.Categories.AddCategoryMapping(16, TorznabCatType.Other, "Other");
return caps;
}
private void AddLanguageConfiguration()
{
// Configure the language select option
var languageSelect = new MultiSelectConfigurationItem("Language (None ticked = ALL)", new Dictionary<string, string>
{
{"1", "English"},
{"2", "Japanese"},
{"3", "Polish"},
{"4", "Serbo-Croatian"},
{"5", "Dutch"},
{"6", "Italian"},
{"7", "Russian"},
{"8", "German"},
{"9", "Hungarian"},
{"10", "French"},
{"11", "Finnish"},
{"12", "Vietnamese"},
{"13", "Greek"},
{"14", "Bulgarian"},
{"15", "Spanish (Spain)"},
{"16", "Portuguese (Brazil)"},
{"17", "Portuguese (Portugal)"},
{"18", "Swedish"},
{"19", "Arabic"},
{"20", "Danish"},
{"21", "Chinese (Simplified)"},
{"22", "Bengali"},
{"23", "Romanian"},
{"24", "Czech"},
{"25", "Mongolian"},
{"26", "Turkish"},
{"27", "Indonesian"},
{"28", "Korean"},
{"29", "Spanish (LATAM)"},
{"30", "Persian"},
{"31", "Malaysian"}
})
{ Values = new[] { "" } };
configData.AddDynamic("languageid", languageSelect);
}
private string GetSortBy => ((SingleSelectConfigurationItem)configData.GetDynamic("sortrequestedfromsite")).Value;
private string GetOrder => ((SingleSelectConfigurationItem)configData.GetDynamic("orderrequestedfromsite")).Value;
private Uri GetAbsoluteUrl(string relativeUrl) => new Uri(SiteLink + relativeUrl.TrimStart('/'));
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
{
LoadValuesFromJson(configJson);
var releases = await PerformQuery(new TorznabQuery());
await ConfigureIfOK(string.Empty, releases.Any(), () => throw new Exception("Could not find releases from this URL"));
return IndexerConfigurationStatus.Completed;
}
/// <summary>
/// Returns the selected languages, formatted so that they can be used in a query string.
/// </summary>
private string GetLanguagesForQuery()
{
var languagesConfig = (MultiSelectConfigurationItem)configData.GetDynamic("languageid");
return string.Join(",", languagesConfig.Values);
}
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{
// Prepare the search query
var queryParameters = new NameValueCollection
{
{ "page", "search" },
{ "s", GetSortBy },
{ "o", GetOrder },
{ "group_id", "0" }, // No group
{ "q", query.GetQueryString() ?? string.Empty }
};
// Get specified categories
// AniDex throws errors when categories are url encoded. See issue #9727
var searchCategories = MapTorznabCapsToTrackers(query);
var catString = "";
if (searchCategories.Any() && GetAllTrackerCategories().Except(searchCategories).Any())
{
catString = "&id=" + string.Join(",", searchCategories);
}
// Get Selected Languages
// AniDex throws errors when the commas between language IDs are url encoded.
var langIds = "&lang_id=" + GetLanguagesForQuery();
// Make search request
var searchUri = GetAbsoluteUrl("?" + queryParameters.GetQueryString() + catString + langIds);
var response = await RequestWithCookiesAndRetryAsync(searchUri.AbsoluteUri);
if (response.Status != HttpStatusCode.OK)
throw new WebException($"Anidex search returned unexpected result. Expected 200 OK but got {response.Status}.", WebExceptionStatus.ProtocolError);
// Search seems to have been a success so parse it
return ParseResult(response.ContentString);
}
private IEnumerable<ReleaseInfo> ParseResult(string response)
{
try
{
var resultParser = new HtmlParser();
using var resultDocument = resultParser.ParseDocument(response);
IEnumerable<IElement> rows = resultDocument.QuerySelectorAll("div#content table > tbody > tr");
var releases = new List<ReleaseInfo>();
foreach (var r in rows)
try
{
var language = "";
var release = new ReleaseInfo();
release.Category = ParseValueFromRow(r, nameof(release.Category), "td:nth-child(1) a", (e) => MapTrackerCatToNewznab(e.Attributes["href"].Value.Substring(5)));
language = ParseValueFromRow(r, nameof(language), "td:nth-child(1) img", (e) => e.Attributes["title"].Value);
release.Title = ParseStringValueFromRow(r, nameof(release.Title), "td:nth-child(3) span") + " " + language;
release.Link = ParseValueFromRow(r, nameof(release.Link), "a[href^=\"/dl/\"]", (e) => GetAbsoluteUrl(e.Attributes["href"].Value));
release.MagnetUri = ParseValueFromRow(r, nameof(release.MagnetUri), "a[href^=\"magnet:?\"]", (e) => new Uri(e.Attributes["href"].Value));
release.Size = ParseValueFromRow(r, nameof(release.Size), "td:nth-child(7)", (e) => ParseUtil.GetBytes(e.Text()));
release.PublishDate = ParseValueFromRow(r, nameof(release.PublishDate), "td:nth-child(8)", (e) => DateTime.ParseExact(e.Attributes["title"].Value, "yyyy-MM-dd HH:mm:ss UTC", CultureInfo.InvariantCulture));
release.Seeders = ParseIntValueFromRow(r, nameof(release.Seeders), "td:nth-child(9)");
release.Peers = ParseIntValueFromRow(r, nameof(release.Peers), "td:nth-child(10)") + release.Seeders;
release.Grabs = ParseIntValueFromRow(r, nameof(release.Grabs), "td:nth-child(11)");
release.Details = ParseValueFromRow(r, nameof(release.Details), "td:nth-child(3) a", (e) => GetAbsoluteUrl(e.Attributes["href"].Value));
release.Guid = release.Details;
release.DownloadVolumeFactor = 0;
release.UploadVolumeFactor = 1;
releases.Add(release);
}
catch (Exception ex)
{
logger.Error($"Anidex: Error parsing search result row '{r.ToHtmlPretty()}':\n\n{ex}");
}
return releases;
}
catch (Exception ex)
{
throw new IOException($"Error parsing search result page: {ex}");
}
}
private static TResult ParseValueFromRow<TResult>(IElement row, string propertyName, string selector,
Func<IElement, TResult> parseFunction)
{
try
{
var selectedElement = row.QuerySelector(selector);
if (selectedElement == null)
throw new IOException($"Unable to find '{selector}'.");
return parseFunction(selectedElement);
}
catch (Exception ex)
{
throw new IOException($"Error parsing for property '{propertyName}': {ex.Message}");
}
}
private static string ParseStringValueFromRow(IElement row, string propertyName, string selector)
{
try
{
var selectedElement = row.QuerySelector(selector);
if (selectedElement == null)
throw new IOException($"Unable to find '{selector}'.");
return selectedElement.Text();
}
catch (Exception ex)
{
throw new IOException($"Error parsing for property '{propertyName}': {ex.Message}");
}
}
private static int ParseIntValueFromRow(IElement row, string propertyName, string selector)
{
try
{
var text = ParseStringValueFromRow(row, propertyName, selector);
if (!int.TryParse(text, out var value))
throw new IOException($"Could not convert '{text}' to int.");
return value;
}
catch (Exception ex)
{
throw new IOException($"Error parsing for property '{propertyName}': {ex.Message}");
}
}
}
}

View File

@@ -29,10 +29,10 @@ namespace Jackett.Common.Indexers.Definitions
public override string Name => "DonTorrent";
public override string Description => "DonTorrent is a SPANISH Public tracker for MOVIES / TV / GENERAL";
// in the event the redirect is inactive https://t.me/s/dontorrent should have the latest working domain
public override string SiteLink { get; protected set; } = "https://dontorrent.lighting/";
public override string SiteLink { get; protected set; } = "https://dontorrent.istanbul/";
public override string[] AlternativeSiteLinks => new[]
{
"https://dontorrent.lighting/",
"https://dontorrent.istanbul/",
"https://todotorrents.org/",
"https://tomadivx.net/",
"https://seriesblanco.one/",
@@ -41,7 +41,6 @@ namespace Jackett.Common.Indexers.Definitions
};
public override string[] LegacySiteLinks => new[]
{
"https://dontorrent.stream/",
"https://dontorrent.website/",
"https://dontorrent.group/",
"https://dontorrent.download/",
@@ -56,6 +55,7 @@ namespace Jackett.Common.Indexers.Definitions
"https://dontorrent.graphics/",
"https://dontorrent.international/",
"https://dontorrent.irish/",
"https://dontorrent.lighting/",
};
public override string Language => "es-ES";
public override string Type => "public";

View File

@@ -27,10 +27,9 @@ namespace Jackett.Common.Indexers.Definitions
public override string Id => "mejortorrent";
public override string Name => "MejorTorrent";
public override string Description => "MejorTorrent is a Public site - Hay veces que un torrent viene mejor! :)";
public override string SiteLink { get; protected set; } = "https://www36.mejortorrent.eu/";
public override string SiteLink { get; protected set; } = "https://www37.mejortorrent.eu/";
public override string[] LegacySiteLinks => new[]
{
"https://www19.mejortorrent.zip/",
"https://www20.mejortorrent.zip/",
"https://www21.mejortorrent.zip/",
"https://www22.mejortorrent.zip/",
@@ -46,6 +45,7 @@ namespace Jackett.Common.Indexers.Definitions
"https://www32.mejortorrent.eu/",
"https://www34.mejortorrent.eu/",
"https://www35.mejortorrent.eu/",
"https://www36.mejortorrent.eu/",
};
public override string Language => "es-ES";
public override string Type => "public";

View File

@@ -24,7 +24,7 @@ namespace Jackett.Common.Indexers.Definitions
{
public override string Id => "passthepopcorn";
public override string Name => "PassThePopcorn";
public override string Description => "PassThePopcorn (PTP) is a Private site for MOVIES / TV";
public override string Description => "PassThePopcorn (PTP) is a Private site for MOVIES";
// Status: https://ptp.trackerstatus.info/
public override string SiteLink { get; protected set; } = "https://passthepopcorn.me/";
public override string Language => "en-US";
@@ -61,10 +61,6 @@ namespace Jackett.Common.Indexers.Definitions
{
LimitsDefault = 50,
LimitsMax = 50,
TvSearchParams = new List<TvSearchParam>
{
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep, TvSearchParam.ImdbId
},
MovieSearchParams = new List<MovieSearchParam>
{
MovieSearchParam.Q, MovieSearchParam.ImdbId
@@ -73,7 +69,7 @@ namespace Jackett.Common.Indexers.Definitions
caps.Categories.AddCategoryMapping(1, TorznabCatType.Movies, "Feature Film");
caps.Categories.AddCategoryMapping(2, TorznabCatType.Movies, "Short Film");
caps.Categories.AddCategoryMapping(3, TorznabCatType.TV, "Miniseries");
caps.Categories.AddCategoryMapping(3, TorznabCatType.Movies, "Miniseries");
caps.Categories.AddCategoryMapping(4, TorznabCatType.Movies, "Stand-up Comedy");
caps.Categories.AddCategoryMapping(5, TorznabCatType.Movies, "Live Performance");
caps.Categories.AddCategoryMapping(6, TorznabCatType.Movies, "Movie Collection");

View File

@@ -21,14 +21,14 @@
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.3.0" />
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="MimeMapping" Version="1.0.1.50" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
<PackageReference Include="NLog" Version="5.4.0" />
<PackageReference Include="Polly" Version="8.6.1" />
<PackageReference Include="Polly" Version="8.6.3" />
<PackageReference Include="SharpZipLib" Version="1.4.2" />
<PackageReference Include="System.IO.FileSystem.AccessControl" Version="5.0.0" />
<PackageReference Include="System.ServiceProcess.ServiceController" Version="8.0.1" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="8.0.0" />
<PackageReference Include="System.Text.Json" Version="8.0.5" />
<PackageReference Include="System.Text.Json" Version="8.0.6" />
<PackageReference Include="YamlDotNet" Version="16.3.0" />
</ItemGroup>

View File

@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net8.0;net462</TargetFrameworks>
<TargetFrameworks>net8.0;net471</TargetFrameworks>
<IsPackable>false</IsPackable>
<NoWarn />
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
@@ -9,9 +9,9 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
<PackageReference Include="MSTest.TestAdapter" Version="3.0.2" />
<PackageReference Include="MSTest.TestFramework" Version="3.0.2" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
<PackageReference Include="MSTest.TestAdapter" Version="3.10.4" />
<PackageReference Include="MSTest.TestFramework" Version="3.10.4" />
<PackageReference Include="Selenium.Chrome.WebDriver" Version="85.0.0" />
<PackageReference Include="Selenium.WebDriver" Version="4.35.0" />
</ItemGroup>

View File

@@ -3,7 +3,7 @@ using Jackett.Common.Models.Config;
using Jackett.Common.Services.Interfaces;
using Microsoft.AspNetCore.Hosting;
using NLog;
#if !NET462
#if !NET471
using Microsoft.Extensions.Hosting;
#endif
@@ -13,7 +13,7 @@ namespace Jackett.Server
{
public static IContainer ApplicationContainer { get; set; }
#if NET462
#if NET471
public static IApplicationLifetime applicationLifetime;
#else
public static IHostApplicationLifetime applicationLifetime;

View File

@@ -2,7 +2,7 @@
<PropertyGroup>
<PackageId>$(MSBuildProjectName)</PackageId>
<TargetFrameworks>net8.0;net462</TargetFrameworks>
<TargetFrameworks>net8.0;net471</TargetFrameworks>
<ApplicationIcon>jackett.ico</ApplicationIcon>
<OutputType>Exe</OutputType>
<NoWarn></NoWarn>
@@ -21,7 +21,7 @@
</PropertyGroup>
<Choose>
<When Condition="'$(TargetFramework)' != 'net462' and $(RuntimeIdentifier.Contains('win')) == 'false'">
<When Condition="'$(TargetFramework)' != 'net471' and $(RuntimeIdentifier.Contains('win')) == 'false'">
<PropertyGroup>
<AssemblyName>jackett</AssemblyName>
</PropertyGroup>
@@ -35,13 +35,13 @@
<!-- Conditionally obtain references for the .NET 8.0 target -->
<ItemGroup Condition=" '$(TargetFramework)' == 'net8.0' ">
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.17" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.20" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
<PackageReference Include="System.Security.Cryptography.ProtectedData" Version="8.0.0" />
</ItemGroup>
<!-- Conditionally obtain references for the .NET462 target -->
<ItemGroup Condition=" '$(TargetFramework)' == 'net462' ">
<!-- Conditionally obtain references for the .NET471 target -->
<ItemGroup Condition=" '$(TargetFramework)' == 'net471' ">
<PackageReference Include="Microsoft.AspNetCore" Version="2.3.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication" Version="2.3.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="2.3.0" />

View File

@@ -22,7 +22,7 @@ using Microsoft.AspNetCore.Rewrite;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json.Serialization;
#if !NET462
#if !NET471
using Microsoft.Extensions.Hosting;
#endif
@@ -66,7 +66,7 @@ namespace Jackett.Server
options.KnownProxies.Clear();
});
#if NET462
#if NET471
services.AddMvc(
config => config.Filters.Add(
new AuthorizeFilter(
@@ -118,7 +118,7 @@ namespace Jackett.Server
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
#if NET462
#if NET471
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplicationLifetime applicationLifetime)
{
applicationLifetime.ApplicationStarted.Register(OnStarted);

View File

@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net8.0;net462</TargetFrameworks>
<TargetFrameworks>net8.0;net471</TargetFrameworks>
<NoWarn />
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningsAsErrors />
@@ -25,10 +25,10 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="FluentAssertions" Version="6.12.1" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection" Version="8.0.11" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
<PackageReference Include="MSTest.TestAdapter" Version="3.0.2" />
<PackageReference Include="MSTest.TestFramework" Version="3.0.2" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection" Version="8.0.20" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
<PackageReference Include="MSTest.TestAdapter" Version="3.10.4" />
<PackageReference Include="MSTest.TestFramework" Version="3.10.4" />
<PackageReference Include="NUnit" Version="3.14.0" />
<PackageReference Include="NUnit.ConsoleRunner" Version="3.17.0" />
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
@@ -45,8 +45,8 @@
<ProjectReference Include="..\Jackett.Server\Jackett.Server.csproj" />
</ItemGroup>
<!-- Conditionally obtain references for the .NET462 target -->
<ItemGroup Condition=" '$(TargetFramework)' == 'net462' ">
<!-- Conditionally obtain references for the .NET471 target -->
<ItemGroup Condition=" '$(TargetFramework)' == 'net471' ">
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" />
<Reference Include="System.Web" />
</ItemGroup>

View File

@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net8.0;net462</TargetFrameworks>
<TargetFrameworks>net8.0;net471</TargetFrameworks>
<ApplicationIcon>jackett.ico</ApplicationIcon>
<AssemblyName>JackettUpdater</AssemblyName>
<OutputType>Exe</OutputType>
@@ -13,8 +13,8 @@
<DefineConstants Condition="'$(RuntimeIdentifier)' == 'linux-musl-x64' or '$(RuntimeIdentifier)' == 'linux-musl-arm' or '$(RuntimeIdentifier)' == 'linux-musl-arm64'">ISLINUXMUSL</DefineConstants>
</PropertyGroup>
<!-- Conditionally obtain references for the .NET462 target -->
<ItemGroup Condition=" '$(TargetFramework)' == 'net462' ">
<!-- Conditionally obtain references for the .NET471 target -->
<ItemGroup Condition=" '$(TargetFramework)' == 'net471' ">
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" />
</ItemGroup>

View File

@@ -404,6 +404,7 @@ namespace Jackett.Updater
"Definitions/epizod.yml",
"Definitions/erzsebet.yml",
"Definitions/erzsebetpl.yml",
"Definitions/esharenet.yml",
"Definitions/estrenosdtl.yml",
"Definitions/ethor.yml",
"Definitions/ettv.yml",
@@ -743,6 +744,7 @@ namespace Jackett.Updater
"Definitions/tntvillage.yml",
"Definitions/toonsforme.yml",
"Definitions/topnow.yml",
"Definitions/torlock.yml",
"Definitions/torlook.yml",
"Definitions/toros.yml", // renamed to bulltorrent
"Definitions/torrent-explosiv.yml", // renamed to explosiv-world #6183
@@ -841,6 +843,7 @@ namespace Jackett.Updater
"Definitions/xxxtorrents.yml",
"Definitions/ydypt.yml",
"Definitions/yingk.yml",
"Definitions/yourbittorrent.yml",
"Definitions/yourexotic.yml", // renamed to exoticaz
"Definitions/zomb.yml",
"Definitions/zooqle.yml",