mirror of
https://github.com/Jackett/Jackett.git
synced 2025-12-17 12:16:05 +01:00
Compare commits
68 Commits
v0.22.2431
...
v0.23.45
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a7406eb725 | ||
|
|
65da50d6bf | ||
|
|
3829d49aed | ||
|
|
ff17b147d6 | ||
|
|
b579de495d | ||
|
|
f6384c933c | ||
|
|
4f3c57de59 | ||
|
|
dc4bde017a | ||
|
|
088dfba4b6 | ||
|
|
c414181da3 | ||
|
|
ed507c3a43 | ||
|
|
c42383f605 | ||
|
|
d53f764b4f | ||
|
|
fd3c5aea9e | ||
|
|
5c379fc5fb | ||
|
|
4203abf435 | ||
|
|
cc7a2dae35 | ||
|
|
3932f1cdb1 | ||
|
|
b4c9145642 | ||
|
|
8b48206e84 | ||
|
|
896a3e6e21 | ||
|
|
70885a1153 | ||
|
|
edd3c83a94 | ||
|
|
98c2590a16 | ||
|
|
e4d773bae9 | ||
|
|
9e716d8e9b | ||
|
|
b24acf3327 | ||
|
|
7bf75794c8 | ||
|
|
e6e82b90a6 | ||
|
|
bb8c403b23 | ||
|
|
c9066b5ea8 | ||
|
|
19586cd2d1 | ||
|
|
42c7d1fc59 | ||
|
|
a98e69d18b | ||
|
|
64c2f7b895 | ||
|
|
5cd2b53907 | ||
|
|
0649a45697 | ||
|
|
e05e7a77c4 | ||
|
|
8f526aba30 | ||
|
|
67b98536b5 | ||
|
|
04bdc9ebf0 | ||
|
|
a1af921349 | ||
|
|
9411f98064 | ||
|
|
4c0ef2d33b | ||
|
|
6d8c9709e0 | ||
|
|
3011b5397a | ||
|
|
22284d5106 | ||
|
|
dbf2a455c4 | ||
|
|
5e82419fee | ||
|
|
b20d0aca8c | ||
|
|
240054e089 | ||
|
|
9586e6d349 | ||
|
|
4f3d0589a3 | ||
|
|
710cbea589 | ||
|
|
f04babe9b4 | ||
|
|
9a5bc0e882 | ||
|
|
3784d1a1bf | ||
|
|
7af2d20bc1 | ||
|
|
38f457975e | ||
|
|
1766c0d49a | ||
|
|
3eaeb50c54 | ||
|
|
73c965b280 | ||
|
|
9f73269dbd | ||
|
|
4fefef26d3 | ||
|
|
69c7c4187d | ||
|
|
ec58139d77 | ||
|
|
4bc409793e | ||
|
|
800ac33982 |
2
.github/workflows/issuebot.yml
vendored
2
.github/workflows/issuebot.yml
vendored
@@ -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'
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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"}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -124,7 +124,7 @@ search:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
|
||||
rows:
|
||||
selector: $
|
||||
selector: data
|
||||
|
||||
fields:
|
||||
categorydesc:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"}
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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/
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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/
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"}
|
||||
|
||||
195
src/Jackett.Common/Definitions/sextorrent.yml
Normal file
195
src/Jackett.Common/Definitions/sextorrent.yml
Normal 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
|
||||
@@ -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:
|
||||
|
||||
@@ -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"}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
@@ -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:
|
||||
|
||||
@@ -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"}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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/
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"}
|
||||
|
||||
@@ -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/
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user