mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-11 22:30:48 +02:00
Compare commits
50 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
85d17a7763 | ||
![]() |
b1391b0523 | ||
![]() |
8510a42d7a | ||
![]() |
e61f6e78b3 | ||
![]() |
176ba5a6db | ||
![]() |
ad3c56e83b | ||
![]() |
2495a2f64e | ||
![]() |
0d6830b0aa | ||
![]() |
ef316590cb | ||
![]() |
c3c25190a2 | ||
![]() |
fc3d8d1aec | ||
![]() |
bbb7d1c3c7 | ||
![]() |
89dfac3009 | ||
![]() |
9610965979 | ||
![]() |
8b501403e1 | ||
![]() |
3a88aeb649 | ||
![]() |
0a0ba2291b | ||
![]() |
2484e22da9 | ||
![]() |
e8ca3e6b52 | ||
![]() |
d5c7445919 | ||
![]() |
72045404d4 | ||
![]() |
1a6e1a8c60 | ||
![]() |
540dc0fad4 | ||
![]() |
1db3e93ce1 | ||
![]() |
a5ec65bff3 | ||
![]() |
c4e3aa8a64 | ||
![]() |
e3e183d86b | ||
![]() |
bfe892f2c8 | ||
![]() |
b28116c10f | ||
![]() |
52c408fce7 | ||
![]() |
a70997ad7f | ||
![]() |
8840de316d | ||
![]() |
409483e680 | ||
![]() |
b19d690305 | ||
![]() |
0fabaf2fe0 | ||
![]() |
3035d8b901 | ||
![]() |
f3d73b5661 | ||
![]() |
f335dbf7bc | ||
![]() |
b5178dc7b8 | ||
![]() |
ad09a4dd77 | ||
![]() |
da0ead13f4 | ||
![]() |
4b6a9376de | ||
![]() |
3eab605423 | ||
![]() |
7fc37f1156 | ||
![]() |
9f03f8129a | ||
![]() |
51aa6fdf13 | ||
![]() |
f2f602dcc5 | ||
![]() |
a217381668 | ||
![]() |
4bd7befb50 | ||
![]() |
56074155e9 |
36
README.md
36
README.md
@@ -71,6 +71,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* CzTorrent
|
||||
* Deildu
|
||||
* Gay-Torrents.net
|
||||
* Gay-Torrents.org
|
||||
* Kinozal
|
||||
* LostFilm.tv
|
||||
* Mega-Bliz
|
||||
@@ -147,7 +148,6 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Elit Tracker
|
||||
* Elite-Tracker
|
||||
* Empornium
|
||||
* EoT-Forum
|
||||
* eStone
|
||||
* Ethor.net (Thor's Land)
|
||||
* FANO.IN
|
||||
@@ -158,7 +158,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* FunFile
|
||||
* FunkyTorrents
|
||||
* Fuzer
|
||||
* GayTorrent.ru
|
||||
* GAYtorrent.ru
|
||||
* GazelleGames
|
||||
* Gfxnews
|
||||
* GFXPeers
|
||||
@@ -285,11 +285,12 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Waffles
|
||||
* World-In-HD
|
||||
* WorldOfP2P
|
||||
* x-ite.me
|
||||
* x264
|
||||
* xBytesV2
|
||||
* XSpeeds
|
||||
* Xthor
|
||||
* Your Exotic Torrents
|
||||
* ExoticaZ (Your Exotic Torrents)
|
||||
* Zamunda.net
|
||||
* Zelka.org
|
||||
|
||||
@@ -371,6 +372,19 @@ Example config for apache:
|
||||
</Location>
|
||||
```
|
||||
|
||||
Example config for nginx:
|
||||
```
|
||||
location /jackett {
|
||||
proxy_pass http://127.0.0.1:9117;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-Forwarded-Host $host;
|
||||
proxy_redirect off;
|
||||
}
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
* __Command line switches__
|
||||
@@ -410,6 +424,22 @@ All contributions are welcome just send a pull request. Jackett's framework all
|
||||
* Select Jackett.Console as startup project
|
||||
* Build/Start the project
|
||||
|
||||
### OSX
|
||||
NOTE: msbuild is included in the mono release.
|
||||
* Install Homebrew https://brew.sh
|
||||
* open terminal
|
||||
* brew install nuget mono
|
||||
* git clone https://github.com/Jackett/Jackett.git
|
||||
* cd Jackett/src
|
||||
* nuget restore Jackett.sln
|
||||
|
||||
NOTE: if you get the error "NU1102: Unable to find package Microsoft.AspNetCore with version (>= 2.1.2)" while restoring packages, you'll need to install it manually.https://www.microsoft.com/net/download/thank-you/dotnet-sdk-2.1.302-macos-x64-installer then delete the entire project directory and restart from a new clone
|
||||
|
||||
* msbuild Jackett.Console/Jackett.Console.csproj /t:Build /p:Configuration=Debug
|
||||
* curl -sS https://curl.haxx.se/ca/cacert.pem | cert-sync --user /dev/stdin
|
||||
* mono Jackett.Console/bin/Debug/JackettConsole.exe
|
||||
|
||||
|
||||
### Linux
|
||||
|
||||
```bash
|
||||
|
@@ -738,9 +738,9 @@ function updateReleasesRow(row)
|
||||
if (DownloadVolumeFactor == 0) {
|
||||
labels.append('\n<span class="label label-success">FREELEECH</span>');
|
||||
} else if (DownloadVolumeFactor < 1) {
|
||||
labels.append('\n<span class="label label-primary">' + DownloadVolumeFactor * 100 + '%DL</span>');
|
||||
labels.append('\n<span class="label label-primary">' + (DownloadVolumeFactor * 100).toFixed(0) + '%DL</span>');
|
||||
} else if (DownloadVolumeFactor > 1) {
|
||||
labels.append('\n<span class="label label-danger">' + DownloadVolumeFactor * 100 + '%DL</span>');
|
||||
labels.append('\n<span class="label label-danger">' + (DownloadVolumeFactor * 100).toFixed(0) + '%DL</span>');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -748,7 +748,7 @@ function updateReleasesRow(row)
|
||||
if (UploadVolumeFactor == 0) {
|
||||
labels.append('\n<span class="label label-warning">NO UPLOAD</span>');
|
||||
} else if (UploadVolumeFactor != 1) {
|
||||
labels.append('\n<span class="label label-info">' + UploadVolumeFactor * 100 + '%UL</span>');
|
||||
labels.append('\n<span class="label label-info">' + (UploadVolumeFactor * 100).toFixed(0) + '%UL</span>');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -152,7 +152,7 @@
|
||||
</div>
|
||||
<div class="input-area">
|
||||
<span class="input-header">Proxy password: </span>
|
||||
<input id="jackett-proxy-password" class="form-control input-right" type="text" value="" placeholder="">
|
||||
<input id="jackett-proxy-password" class="form-control input-right" type="password" value="" placeholder="">
|
||||
</div>
|
||||
|
||||
<div class="input-area">
|
||||
@@ -663,6 +663,6 @@
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></script>
|
||||
<script type="text/javascript" src="../custom.js?changed=20180709"></script>
|
||||
<script type="text/javascript" src="../custom.js?changed=20180710"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -56,6 +56,9 @@
|
||||
args: id
|
||||
title:
|
||||
selector: td:nth-child(3) > a.torrent > span.span-1440
|
||||
filters:
|
||||
- name: re_replace # remove anidb id from return string
|
||||
args: ["(\\[[A-Z0-9]*\\])\\.", "."]
|
||||
details:
|
||||
selector: td:nth-child(3) > a.torrent
|
||||
attribute: href
|
||||
|
@@ -92,7 +92,7 @@
|
||||
selector: a[href^="details.php"]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^=" /gettorrent/ssl/"]
|
||||
selector: a[href^=" /gettorrent/"]
|
||||
attribute: href
|
||||
files:
|
||||
selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(1) > b:nth-child(2), a[href*="&filelist=1"]
|
||||
|
@@ -1,18 +1,17 @@
|
||||
---
|
||||
site: btxpress
|
||||
name: BTXpress
|
||||
description: "HD Tracker Movies/TV/Music"
|
||||
description: "HD Tracker Movies/TV"
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://btxpress.org/
|
||||
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Movies"}
|
||||
- {id: 2, cat: TV, desc: "TV"}
|
||||
- {id: 3, cat: Audio, desc: "Music"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
@@ -36,7 +35,6 @@
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
|
||||
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
|
||||
description: ""
|
||||
uploader: ""
|
||||
imdb: "{{ .Query.IMDBIDShort }}"
|
||||
tvdb: ""
|
||||
@@ -45,15 +43,8 @@
|
||||
sorting: created_at
|
||||
direction: desc
|
||||
qty: 100
|
||||
preprocessingfilters:
|
||||
- name: jsonjoinarray
|
||||
args: ["$.result", ""]
|
||||
- name: prepend
|
||||
args: "<table>"
|
||||
- name: append
|
||||
args: "</table>"
|
||||
rows:
|
||||
selector: tr
|
||||
selector: table > tbody > tr
|
||||
fields:
|
||||
category:
|
||||
selector: a[href*="/categories/"]
|
||||
@@ -64,33 +55,24 @@
|
||||
title:
|
||||
selector: a.view-torrent
|
||||
download:
|
||||
selector: a[href*="/download_check/"]
|
||||
selector: a[href*="/download/"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["/download_check/", "/download/"]
|
||||
details:
|
||||
selector: a.view-torrent
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
selector: td:nth-child(4)
|
||||
seeders:
|
||||
selector: td:nth-child(7)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
grabs:
|
||||
selector: td:nth-child(6)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
||||
grabs:
|
||||
selector: td:nth-child(5)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d\.]+)
|
||||
date:
|
||||
selector: time
|
||||
attribute: datetime
|
||||
filters:
|
||||
- name: append
|
||||
args: " +00:00"
|
||||
- name: dateparse
|
||||
args: "2006-01-02 15:04:05 -07:00"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"100% Free\"]": "0"
|
||||
|
@@ -1,13 +1,39 @@
|
||||
---
|
||||
# Update by LA5T based on the orignial 'cinematik.yml'
|
||||
# 29.07.2018 22:53 UTC+2
|
||||
#
|
||||
site: cinematik
|
||||
name: Cinematik
|
||||
description: "Non-Hollywood movie tracker"
|
||||
description: "Tracker for non-hollywood movies."
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.cinematik.net
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: incldead
|
||||
type: select
|
||||
label: Status
|
||||
default: 1
|
||||
options:
|
||||
0: Active
|
||||
1: "Active and Inactive"
|
||||
2: Inactive
|
||||
- name: srchdtls
|
||||
type: checkbox
|
||||
label: "Detailed search"
|
||||
- name: info_results
|
||||
type: info
|
||||
label: "Search results"
|
||||
default: "You can increase the number of search results in your profile.<br />Default is 15."
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Comedy"}
|
||||
@@ -42,13 +68,15 @@
|
||||
- selector: table:contains("Login failed!")
|
||||
test:
|
||||
path: my.php
|
||||
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}filter_cat[{{.}}]=1&{{end}}"
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Query.Keywords }}"
|
||||
incldead: "{{ .Config.incldead }}"
|
||||
srchdtls: "{{ if .Config.srchdtls }}1{{ else }}0{{ end }}"
|
||||
rows:
|
||||
selector: table[border="1"] tr:not(:first-child)
|
||||
fields:
|
||||
@@ -82,11 +110,11 @@
|
||||
selector: td:nth-child(11) div.addedtor
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"img[title=\"Golden Torrent: No Download Stats are Recorded\"]": "0"
|
||||
"img[title=\"Silver Torrent: Download Stats are 25% Recorded\"]": "0.25"
|
||||
"img[title=\"Platinum Torrent: No Download Stats are Recorded, Upload Stats are Doubled!\"]": "0"
|
||||
"*": "1"
|
||||
"img[title=\"Golden Torrent: No Download Stats are Recorded\"]": 0
|
||||
"img[title=\"Silver Torrent: Download Stats are 25% Recorded\"]": 0.25
|
||||
"img[title=\"Platinum Torrent: No Download Stats are Recorded, Upload Stats are Doubled!\"]": 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"img[title=\"Platinum Torrent: No Download Stats are Recorded, Upload Stats are Doubled!\"]": "2"
|
||||
"*": "1"
|
||||
"img[title=\"Platinum Torrent: No Download Stats are Recorded, Upload Stats are Doubled!\"]": 2
|
||||
"*": 1
|
@@ -1,177 +0,0 @@
|
||||
---
|
||||
site: eotforum
|
||||
name: EoT-Forum
|
||||
description: "A German gerneral tracker"
|
||||
language: de-de
|
||||
type: private
|
||||
encoding: windows-1252
|
||||
links:
|
||||
- https://eot-forum.net
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
# Filme
|
||||
- {id: 14, cat: Movies/SD, desc: "SD XviD"}
|
||||
- {id: 15, cat: Movies/SD, desc: "SD x264"}
|
||||
- {id: 16, cat: Movies/HD, desc: "HD"}
|
||||
- {id: 68, cat: Movies/HD, desc: "UHD"}
|
||||
- {id: 17, cat: Movies/3D, desc: "3D"}
|
||||
- {id: 18, cat: Movies/DVD, desc: "DVD-R"}
|
||||
- {id: 19, cat: Movies, desc: "Pack"}
|
||||
- {id: 20, cat: Movies, desc: "International"}
|
||||
- {id: 21, cat: XXX, desc: "XXX"}
|
||||
|
||||
# Serien/TV
|
||||
- {id: 23, cat: TV/SD, desc: "SD XviD"}
|
||||
- {id: 24, cat: TV/SD, desc: "SD x264"}
|
||||
- {id: 25, cat: TV/HD, desc: "HD"}
|
||||
- {id: 26, cat: TV/SD, desc: "DVD-R"}
|
||||
- {id: 27, cat: TV, desc: "Pack"}
|
||||
- {id: 28, cat: TV, desc: "International"}
|
||||
- {id: 29, cat: TV/Sport, desc: "Sport"}
|
||||
|
||||
# Dokus
|
||||
- {id: 31, cat: TV/Documentary, desc: "SD XviD"}
|
||||
- {id: 32, cat: TV/Documentary, desc: "SD x264"}
|
||||
- {id: 33, cat: TV/Documentary, desc: "HD"}
|
||||
- {id: 34, cat: TV/Documentary, desc: "3D"}
|
||||
- {id: 35, cat: TV/Documentary, desc: "Pack"}
|
||||
- {id: 67, cat: TV/Documentary, desc: "DVD-R"}
|
||||
- {id: 36, cat: TV/Documentary, desc: "International"}
|
||||
|
||||
# Audio
|
||||
- {id: 38, cat: Audio, desc: "Charts"}
|
||||
- {id: 39, cat: Audio/MP3, desc: "MP3"}
|
||||
- {id: 40, cat: Audio/Lossless, desc: "Flac"}
|
||||
- {id: 41, cat: Audio, desc: "Pack"}
|
||||
- {id: 42, cat: Audio/Video, desc: "MusikVideo"}
|
||||
- {id: 43, cat: Audio/Audiobook, desc: "Hörbücher"}
|
||||
|
||||
# Spiele
|
||||
- {id: 45, cat: PC/Games, desc: "Windows"}
|
||||
- {id: 46, cat: PC/Mac, desc: "MacOS"}
|
||||
- {id: 47, cat: Console/PS4, desc: "Sony PS"}
|
||||
- {id: 48, cat: Console/Xbox , desc: "Microsoft XBox"}
|
||||
- {id: 49, cat: Console/NDS, desc: "Nintendo"}
|
||||
- {id: 50, cat: PC/Games, desc: "Linux"}
|
||||
- {id: 51, cat: Console, desc: "Andere"}
|
||||
|
||||
# Software
|
||||
- {id: 53, cat: PC, desc: "Windows"}
|
||||
- {id: 54, cat: PC/Mac, desc: "MacOS"}
|
||||
- {id: 55, cat: PC, desc: "Linux"}
|
||||
- {id: 56, cat: PC/Phone-Android, desc: "Android"}
|
||||
- {id: 57, cat: PC/Phone-IOS, desc: "Apple IOS"}
|
||||
- {id: 58, cat: PC/Phone-Other, desc: "Andere"}
|
||||
|
||||
# Sonstiges
|
||||
- {id: 60, cat: Books, desc: "EBooks"}
|
||||
- {id: 61, cat: Other, desc: "Bilder"}
|
||||
- {id: 62, cat: TV/Anime, desc: "Anime"}
|
||||
- {id: 63, cat: Other, desc: "MISC"}
|
||||
- {id: 64, cat: XXX, desc: "XXX-Bilder/EBooks/Audio"}
|
||||
|
||||
# EOT-Specials
|
||||
- {id: 66, cat: Other, desc: "Special"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
|
||||
login:
|
||||
path: index.php?page=login
|
||||
method: post
|
||||
inputs:
|
||||
uid: "{{ .Config.username }}"
|
||||
pwd: "{{ .Config.password }}"
|
||||
rememberme: "forever"
|
||||
submit: "Login"
|
||||
error:
|
||||
- selector: td.lista[align="center"][colspan="2"] > span
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href^="logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: index.php
|
||||
inputs:
|
||||
page: "torrents"
|
||||
search: "{{ .Query.Keywords }}"
|
||||
options: "0"
|
||||
active: "0"
|
||||
gold: "0"
|
||||
rows:
|
||||
selector: table.lista > tbody > tr:has(a[href^="index.php?page=torrent-details&id="])
|
||||
dateheaders:
|
||||
selector: ":has(td.header > b)"
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["Torrents vom ", ""]
|
||||
- name: replace
|
||||
args: ["Januar", "January"]
|
||||
- name: replace
|
||||
args: ["Februar", "February"]
|
||||
- name: replace
|
||||
args: ["März", "March"]
|
||||
- name: replace
|
||||
args: ["Mai", "May"]
|
||||
- name: replace
|
||||
args: ["Juni", "June"]
|
||||
- name: replace
|
||||
args: ["Juli", "July"]
|
||||
- name: replace
|
||||
args: ["Oktober", "October"]
|
||||
- name: replace
|
||||
args: ["Dezember", "December"]
|
||||
- name: dateparse
|
||||
args: "02.January.2006"
|
||||
fields:
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
title:
|
||||
selector: a[href^="index.php?page=torrent-details&id="]
|
||||
attribute: title
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["Details anzeigen: ", ""]
|
||||
category:
|
||||
selector: a[href^="index.php?page=torrents&category="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: category
|
||||
comments:
|
||||
selector: a[href*="#comments"]
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(3)
|
||||
grabs:
|
||||
selector: td:nth-child(5)
|
||||
filters:
|
||||
- name: split
|
||||
args: ["♦", 2]
|
||||
- name: replace
|
||||
args: ["---", "0"]
|
||||
seeders:
|
||||
selector: td:nth-child(5) > a:nth-child(1)
|
||||
leechers:
|
||||
selector: td:nth-child(5) > a:nth-child(2)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[alt="gold"]: "0"
|
||||
img[alt="silver"]: "0.5"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img[alt="2x Upload Multiplier"]: "2"
|
||||
img[alt="3x Upload Multiplier"]: "3"
|
||||
img[alt="4x Upload Multiplier"]: "4"
|
||||
img[alt="5x Upload Multiplier"]: "5"
|
||||
img[alt="6x Upload Multiplier"]: "6"
|
||||
img[alt="7x Upload Multiplier"]: "7"
|
||||
img[alt="8x Upload Multiplier"]: "8"
|
||||
img[alt="9x Upload Multiplier"]: "9"
|
||||
img[alt="10x Upload Multiplier"]: "10"
|
||||
"*": "1"
|
@@ -49,7 +49,13 @@
|
||||
- path: "{{ if .Keywords }}buscar/descargas/{{ .Config.category }}/{{ .Keywords }}?search=Buscar&page=2{{else}}descargas{{end}}"
|
||||
keywordsfilters:
|
||||
- name: re_replace #remove S/EXX from search string
|
||||
args: ["([SE]\\d{1,2})", ""]
|
||||
args: ["(S1)", ""]
|
||||
- name: re_replace #remove S/EXX from search string
|
||||
args: ["(S2)", "segunda temporada"]
|
||||
- name: re_replace #remove S/EXX from search string
|
||||
args: ["(S3)", "tercera temporada"]
|
||||
- name: re_replace #remove S/EXX from search string
|
||||
args: ["E([0-9]+)", "$1"]
|
||||
rows:
|
||||
selector: table#descargas > tbody > tr:has(td:has(a[href^="magnet:?"]))
|
||||
fields:
|
||||
@@ -63,17 +69,19 @@
|
||||
- name: re_replace
|
||||
args: ["\\)", ""]
|
||||
- name: re_replace
|
||||
args: ["([A-z]*) temporada", "S$1"]
|
||||
args: ["([A-z]*) temporada", ""]
|
||||
- name: re_replace
|
||||
args: ["S[pP]rimera", "S1"]
|
||||
args: ["S[pP]rimera", ""]
|
||||
- name: re_replace
|
||||
args: ["S[sS]egunda", "S2"]
|
||||
args: ["S[sS]egunda", ""]
|
||||
- name: re_replace
|
||||
args: ["S[tT]ercera", "S3"]
|
||||
args: ["S[tT]ercera", ""]
|
||||
- name: re_replace
|
||||
args: ["S([0-9]+) - Episodio ([0-9]+)", "S$1E$2"]
|
||||
args: ["S([0-9]+) - Episodio ([0-9]+)", "$2"]
|
||||
- name: re_replace
|
||||
args: ["- Episodio ([0-9]*)", "E$1"]
|
||||
args: ["- Episodio ([0-9]*)", "$1"]
|
||||
- name: append
|
||||
args: " [spanish]"
|
||||
details:
|
||||
selector: td.tit a
|
||||
attribute: href
|
||||
|
151
src/Jackett.Common/Definitions/gay-torrentsorg.yml
Normal file
151
src/Jackett.Common/Definitions/gay-torrentsorg.yml
Normal file
@@ -0,0 +1,151 @@
|
||||
---
|
||||
# By LA5T for https://gay-torrents.org (29.07.2018 22:55 UTC+2)
|
||||
#
|
||||
site: gay-torrentsorg
|
||||
name: gay-torrents.org
|
||||
description: "Tracker for GAY XXX, movies, TV, books and PC."
|
||||
language: en-us
|
||||
type: semi-private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://gay-torrents.org
|
||||
- https://gay-area.org/
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: active
|
||||
type: select
|
||||
label: Status
|
||||
default: 0
|
||||
options:
|
||||
0: "Active and Inactive"
|
||||
1: Active
|
||||
2: Inactive
|
||||
- name: info_categories
|
||||
type: info
|
||||
label: "Hidden categories"
|
||||
default: "Results for categories hidden in profile will not be visible."
|
||||
- name: info_results
|
||||
type: info
|
||||
label: "Search results"
|
||||
default: "You can increase the number of search results in your profile.<br />Default is 15."
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 15, cat: XXX, desc: "Amateur"}
|
||||
- {id: 16, cat: XXX, desc: "Anal"}
|
||||
- {id: 42, cat: XXX, desc: "Animation"}
|
||||
- {id: 18, cat: XXX, desc: "Asian"}
|
||||
- {id: 19, cat: XXX, desc: "Bareback"}
|
||||
- {id: 20, cat: XXX, desc: "Bears"}
|
||||
- {id: 22, cat: XXX, desc: "Bisexual"}
|
||||
- {id: 21, cat: XXX, desc: "Black"}
|
||||
- {id: 23, cat: XXX, desc: "Chubs"}
|
||||
- {id: 25, cat: XXX, desc: "Cross Generation"}
|
||||
- {id: 51, cat: XXX, desc: "Doctor/Medical"}
|
||||
- {id: 27, cat: XXX, desc: "Fetish"}
|
||||
- {id: 28, cat: XXX, desc: "Group Sex"}
|
||||
- {id: 30, cat: XXX, desc: "Hunks"}
|
||||
- {id: 52, cat: XXX, desc: "Interracial"}
|
||||
- {id: 68, cat: XXX, desc: "Homo Erotic"}
|
||||
- {id: 68, cat: Movies, desc: "Homo Erotic"}
|
||||
- {id: 68, cat: TV, desc: "Homo Erotic"}
|
||||
- {id: 68, cat: Other, desc: "Homo Erotic"}
|
||||
- {id: 32, cat: XXX, desc: "Latino"}
|
||||
- {id: 50, cat: XXX, desc: "Middle Eastern"}
|
||||
- {id: 33, cat: XXX, desc: "Military"}
|
||||
- {id: 34, cat: XXX, desc: "Oral-Sex"}
|
||||
- {id: 40, cat: Other, desc: "Other"}
|
||||
- {id: 35, cat: XXX, desc: "Solo"}
|
||||
- {id: 36, cat: XXX, desc: "Transsexual"}
|
||||
- {id: 37, cat: XXX, desc: "Twinks"}
|
||||
- {id: 38, cat: XXX, desc: "Vintage"}
|
||||
- {id: 39, cat: XXX, desc: "Wrestling"}
|
||||
- {id: 17, cat: PC, desc: "Applications"}
|
||||
- {id: 31, cat: XXX/Imageset, desc: "Images"}
|
||||
- {id: 49, cat: Books, desc: "Books"}
|
||||
- {id: 41, cat: Movies, desc: "Non-Porn"}
|
||||
- {id: 41, cat: TV, desc: "Non-Porn"}
|
||||
- {id: 41, cat: Other, desc: "Non-Porn"}
|
||||
modes:
|
||||
search: [q]
|
||||
|
||||
login:
|
||||
method: post
|
||||
path: login.php
|
||||
inputs:
|
||||
uid: "{{ .Config.username }}"
|
||||
pwd: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: div.fixed_width:nth-child(4) > span:contains("Incorrect")
|
||||
test:
|
||||
path: usercp.php
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: torrents_beta.php
|
||||
method: get
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}category[]={{.}}&{{end}}"
|
||||
search: "{{ .Query.Keywords }}"
|
||||
active: "{{ .Config.active }}"
|
||||
rows:
|
||||
selector: div.torrent
|
||||
fields:
|
||||
title:
|
||||
selector: div:nth-child(2) > div:nth-child(1) > a:nth-child(1)
|
||||
category:
|
||||
selector: a[href^="torrents_beta.php?category="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: category
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
banner:
|
||||
optional: true
|
||||
selector: a.screenshot
|
||||
attribute: rel
|
||||
grabs:
|
||||
selector: div.downloadTimes
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["No downloads yet", "0"]
|
||||
- name: regexp
|
||||
args: ([\d,]+)
|
||||
comments:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
size:
|
||||
selector: div.size
|
||||
seeders:
|
||||
selector: div.downloadPeers div:nth-child(1) > a
|
||||
leechers:
|
||||
selector: div.downloadPeers > div:nth-child(2) > a
|
||||
date:
|
||||
selector: div.date
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["on (\\d{2}:\\d{2}) (\\d{2})-([a-zA-Z]{3})-(\\d{4})", "$2 $3 $4 $1"]
|
||||
- name: append
|
||||
args: " +01:00"
|
||||
- name: dateparse
|
||||
args: "02 Jan 2006 15:04 -07:00"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"div:nth-child(2) > div:nth-child(3) > a:contains(\"FREE!\")": 0
|
||||
"div:nth-child(2) > div:nth-child(3) > a:contains(\"-50%\")": 0.5
|
||||
"div:nth-child(2) > div:nth-child(3) > a:contains(\"-25%\")": 0.25
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"*": 1
|
@@ -1,52 +1,80 @@
|
||||
---
|
||||
# Update by LA5T based on the orignial 'gaytorrentru.yml'
|
||||
# 29.07.2018 23:02 UTC+2
|
||||
#
|
||||
site: gaytorrentru
|
||||
name: GayTorrent.ru
|
||||
description: "World largest gay porn library for free with a stunning forum and 24/7 Chat"
|
||||
name: GAYtorrent.ru
|
||||
description: "World largest gay porn library for free with a stunning forum and 24/7 chat."
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.gaytorrent.ru/
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: incldead
|
||||
type: select
|
||||
label: Status
|
||||
default: 1
|
||||
options:
|
||||
0: Active
|
||||
1: "Active and Inactive"
|
||||
2: Inactive
|
||||
- name: info
|
||||
type: info
|
||||
label: "Hidden categories"
|
||||
default: "For results in the following categories you must edit your profile.<br />- Straight<br />- Bisexual<br />- Scat"
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 62 , cat: XXX , desc: "Amateur"}
|
||||
- {id: 29 , cat: XXX , desc: "Anal"}
|
||||
- {id: 46 , cat: XXX , desc: "Anime Games"}
|
||||
- {id: 30 , cat: XXX , desc: "Asian"}
|
||||
- {id: 43 , cat: XXX , desc: "Bareback"}
|
||||
- {id: 19 , cat: XXX , desc: "BDSM"}
|
||||
- {id: 17 , cat: XXX , desc: "Bears"}
|
||||
- {id: 44 , cat: XXX , desc: "Black"}
|
||||
- {id: 50 , cat: Books , desc: "Books & Magazines"}
|
||||
- {id: 9 , cat: XXX , desc: "Chubbies"}
|
||||
- {id: 7 , cat: XXX , desc: "Clips"}
|
||||
- {id: 48 , cat: Books/Comics , desc: "Comic & Yaoi"}
|
||||
- {id: 5 , cat: XXX , desc: "Daddies / Sons"}
|
||||
- {id: 34 , cat: XXX , desc: "Fetish"}
|
||||
- {id: 27 , cat: XXX , desc: "Grey / Older"}
|
||||
- {id: 32 , cat: XXX , desc: "Group-Sex"}
|
||||
- {id: 63 , cat: XXX , desc: "Homemade"}
|
||||
- {id: 12 , cat: XXX , desc: "Hunks"}
|
||||
- {id: 33 , cat: XXX , desc: "Images"}
|
||||
- {id: 53 , cat: XXX , desc: "Interracial"}
|
||||
- {id: 57 , cat: XXX , desc: "Jocks"}
|
||||
- {id: 35 , cat: XXX , desc: "Latino"}
|
||||
- {id: 36 , cat: XXX , desc: "Mature"}
|
||||
- {id: 58 , cat: PC , desc: "Media Programs"}
|
||||
- {id: 37 , cat: XXX , desc: "Member"}
|
||||
- {id: 54 , cat: XXX , desc: "Middle Eastern"}
|
||||
- {id: 38 , cat: XXX , desc: "Military"}
|
||||
- {id: 39 , cat: XXX , desc: "Oral-Sex"}
|
||||
- {id: 47 , cat: XXX , desc: "Shemale"}
|
||||
- {id: 56 , cat: XXX , desc: "Softcore"}
|
||||
- {id: 40 , cat: XXX , desc: "Solo"}
|
||||
- {id: 45 , cat: Movies , desc: "Themed Movie"}
|
||||
- {id: 1 , cat: TV , desc: "TV / Episodes"}
|
||||
- {id: 41 , cat: XXX , desc: "Twinks"}
|
||||
- {id: 42 , cat: XXX , desc: "Vintage"}
|
||||
- {id: 51 , cat: XXX , desc: "Voyeur"}
|
||||
- {id: 65 , cat: XXX , desc: "Wrestling and Sports"}
|
||||
- {id: 28 , cat: XXX , desc: "Youngblood"}
|
||||
- {id: 62, cat: XXX, desc: "Amateur"}
|
||||
- {id: 29, cat: XXX, desc: "Anal"}
|
||||
- {id: 46, cat: XXX, desc: "Anime Games"}
|
||||
- {id: 30, cat: XXX, desc: "Asian"}
|
||||
- {id: 43, cat: XXX, desc: "Bareback"}
|
||||
- {id: 19, cat: XXX, desc: "BDSM"}
|
||||
- {id: 17, cat: XXX, desc: "Bears"}
|
||||
- {id: 44, cat: XXX, desc: "Black"}
|
||||
- {id: 50, cat: Books, desc: "Books & Magazines"}
|
||||
- {id: 9, cat: XXX, desc: "Chubbies"}
|
||||
- {id: 7, cat: XXX, desc: "Clips"}
|
||||
- {id: 48, cat: Books/Comics, desc: "Comic & Yaoi"}
|
||||
- {id: 5, cat: XXX, desc: "Daddies / Sons"}
|
||||
- {id: 34, cat: XXX, desc: "Fetish"}
|
||||
- {id: 27, cat: XXX, desc: "Grey / Older"}
|
||||
- {id: 32, cat: XXX, desc: "Group-Sex"}
|
||||
- {id: 63, cat: XXX, desc: "Homemade"}
|
||||
- {id: 12, cat: XXX, desc: "Hunks"}
|
||||
- {id: 33, cat: XXX/Imageset, desc: "Images"}
|
||||
- {id: 53, cat: XXX, desc: "Interracial"}
|
||||
- {id: 57, cat: XXX, desc: "Jocks"}
|
||||
- {id: 35, cat: XXX, desc: "Latino"}
|
||||
- {id: 36, cat: XXX, desc: "Mature"}
|
||||
- {id: 58, cat: PC, desc: "Media Programs"}
|
||||
- {id: 37, cat: XXX, desc: "Member"}
|
||||
- {id: 54, cat: XXX, desc: "Middle Eastern"}
|
||||
- {id: 38, cat: XXX, desc: "Military"}
|
||||
- {id: 39, cat: XXX, desc: "Oral-Sex"}
|
||||
- {id: 47, cat: XXX, desc: "Shemale"}
|
||||
- {id: 56, cat: XXX, desc: "Softcore"}
|
||||
- {id: 40, cat: XXX, desc: "Solo"}
|
||||
- {id: 45, cat: Movies, desc: "Themed Movie"}
|
||||
- {id: 1, cat: TV, desc: "TV / Episodes"}
|
||||
- {id: 41, cat: XXX, desc: "Twinks"}
|
||||
- {id: 42, cat: XXX, desc: "Vintage"}
|
||||
- {id: 51, cat: XXX, desc: "Voyeur"}
|
||||
- {id: 65, cat: XXX, desc: "Wrestling and Sports"}
|
||||
- {id: 28, cat: XXX, desc: "Youngblood"}
|
||||
- {id: 59, cat: XXX, desc: "Bisexual"}
|
||||
- {id: 61, cat: XXX, desc: "Straight older"}
|
||||
- {id: 60, cat: XXX, desc: "Straight younger"}
|
||||
- {id: 64, cat: XXX, desc: "Scat"}
|
||||
modes:
|
||||
search: [q]
|
||||
|
||||
@@ -65,7 +93,7 @@
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Query.Keywords }}"
|
||||
incldead: "0" # Searches only for alive torrents
|
||||
incldead: "{{ .Config.incldead }}"
|
||||
rows:
|
||||
selector: table.browse_result > tbody > tr:has(a[href^="details.php?id="])
|
||||
fields:
|
||||
@@ -89,12 +117,12 @@
|
||||
selector: .tfiles
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d]+)
|
||||
args: ([\d,]+)
|
||||
size:
|
||||
selector: .tsize
|
||||
seeders:
|
||||
optional: true
|
||||
selector: a[href$="&toseeders=1"]
|
||||
selector: a[href$="&toseeders=1"], span.red
|
||||
leechers:
|
||||
optional: true
|
||||
selector: a[href$="&todlers=1"]
|
||||
@@ -102,13 +130,13 @@
|
||||
selector: .tadded
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(\\d{4}-\\d{2}-\\d{2})(\\d{2}:\\d{2}:\\d{2})(.*)","$1 $2"]
|
||||
args: ["(\\d{4}-\\d{2}-\\d{2})(\\d{2}:\\d{2}:\\d{2}).*", "$1 $2"]
|
||||
- name: dateparse
|
||||
args: "2006-01-02 15:04:05"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"td:nth-child(3) > div > nobr > font[color=\"yellow\"]": "0"
|
||||
"*": "1"
|
||||
"td:nth-child(3) > div > nobr > font[color=\"yellow\"]": 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"*": "1"
|
||||
"*": 1
|
@@ -6,10 +6,12 @@
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.ilcorsaroblu.info/
|
||||
- https://www.ilcorsaroblu.org/
|
||||
legacylinks:
|
||||
- http://ilcorsaroblu.org/
|
||||
- https://www.ilcorsaroblu.org/
|
||||
- https://www.ilcorsaroblu.info/
|
||||
certificates:
|
||||
- e6dd93ef71f96d04559e2bee8cc8e6fd74957730 # incomplete CA chain
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
@@ -143,18 +145,18 @@
|
||||
- name: regexp
|
||||
args: "src=(.+?) "
|
||||
size:
|
||||
selector: td:nth-child(9)
|
||||
selector: td:nth-child(10)
|
||||
date:
|
||||
selector: td:nth-child(5)
|
||||
selector: td:nth-child(6)
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "02/01/2006"
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
selector: td:nth-child(9)
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["---", "0"]
|
||||
seeders:
|
||||
selector: td:nth-child(6)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
|
@@ -84,11 +84,12 @@
|
||||
selector: table#torrents_table_classic > tbody > tr:not(:first-child), div#content > div.torrent-box[id^="torrent_"]
|
||||
filters:
|
||||
- name: andmatch
|
||||
# the tracker has two different styles (modern/classic) it should work with both
|
||||
fields:
|
||||
title:
|
||||
selector: a[href*="?p=torrents&pid=10&action=details"]
|
||||
category:
|
||||
selector: div.category_image > a
|
||||
selector: div.category_image > a, div.categoryImage > a
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
@@ -117,6 +118,9 @@
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"img[title=\"ΧΡΥΣΟ!\"]": "0"
|
||||
"img[title=\"100% FREE!\"]": "0"
|
||||
"img[title=\"Πολλαπλασιαστής Κατεβάσματος: 0.5\"]": "0.5"
|
||||
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
|
@@ -1,7 +1,10 @@
|
||||
---
|
||||
# Update by LA5T based on the orignial 'karagarga.yml'
|
||||
# 29.07.2018 23:15 UTC+2
|
||||
#
|
||||
site: karagarga
|
||||
name: Karagarga
|
||||
description: "Rare and obscure movie tracker"
|
||||
description: "Tracker for non-hollywood, rare and obscure movies, music and literature."
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
@@ -11,6 +14,66 @@
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Movies"}
|
||||
- {id: 2, cat: Audio, desc: "Music"}
|
||||
- {id: 3, cat: Books, desc: "Literature"}
|
||||
- {id: 4, cat: Movies, desc: "Action"}
|
||||
- {id: 55, cat: Movies, desc: "Adventure"}
|
||||
- {id: 5, cat: Movies, desc: "Animation"}
|
||||
- {id: 6, cat: Movies, desc: "Arthouse"}
|
||||
- {id: 7, cat: Movies, desc: "Asian"}
|
||||
- {id: 43, cat: Movies, desc: "Camp"}
|
||||
- {id: 8, cat: Movies, desc: "Classics"}
|
||||
- {id: 9, cat: Movies, desc: "Comedy"}
|
||||
- {id: 10, cat: Movies, desc: "Crime"}
|
||||
- {id: 11, cat: Movies, desc: "Cult"}
|
||||
- {id: 20, cat: Movies, desc: "Documentary"}
|
||||
- {id: 12, cat: Movies, desc: "Drama"}
|
||||
- {id: 44, cat: Movies, desc: "Epic"}
|
||||
- {id: 13, cat: Movies, desc: "Erotica"}
|
||||
- {id: 51, cat: Movies, desc: "Experimental"}
|
||||
- {id: 47, cat: Movies, desc: "Exploitation"}
|
||||
- {id: 14, cat: Movies, desc: "Fantasy"}
|
||||
- {id: 15, cat: Movies, desc: "Film Noir"}
|
||||
- {id: 53, cat: Movies, desc: "Giallo"}
|
||||
- {id: 17, cat: Movies, desc: "Horror"}
|
||||
- {id: 18, cat: Movies, desc: "Martial Arts"}
|
||||
- {id: 19, cat: Movies, desc: "Musical"}
|
||||
- {id: 54, cat: Movies, desc: "Mystery"}
|
||||
- {id: 60, cat: Movies, desc: "Performance"}
|
||||
- {id: 48, cat: Movies, desc: "Philosophy"}
|
||||
- {id: 49, cat: Movies, desc: "Politics"}
|
||||
- {id: 50, cat: Movies, desc: "Romance"}
|
||||
- {id: 21, cat: Movies, desc: "Sci-Fi"}
|
||||
- {id: 22, cat: Movies, desc: "Short"}
|
||||
- {id: 23, cat: Movies, desc: "Silent"}
|
||||
- {id: 24, cat: Movies, desc: "Thriller"}
|
||||
- {id: 25, cat: Movies, desc: "TV"}
|
||||
- {id: 56, cat: Movies, desc: "Video Art"}
|
||||
- {id: 26, cat: Movies, desc: "War"}
|
||||
- {id: 27, cat: Movies, desc: "Western"}
|
||||
- {id: 800, cat: Audio, desc: "Blues"}
|
||||
- {id: 31, cat: Audio, desc: "Classical"}
|
||||
- {id: 600, cat: Audio, desc: "Country"}
|
||||
- {id: 34, cat: Audio, desc: "Electronica"}
|
||||
- {id: 63, cat: Audio, desc: "Exotica"}
|
||||
- {id: 1000, cat: Audio, desc: "Experimental"}
|
||||
- {id: 250, cat: Audio, desc: "Folk"}
|
||||
- {id: 500, cat: Audio, desc: "Funk"}
|
||||
- {id: 700, cat: Audio, desc: "Indie"}
|
||||
- {id: 32, cat: Audio, desc: "Jazz"}
|
||||
- {id: 1200, cat: Audio, desc: "Latin"}
|
||||
- {id: 35, cat: Audio, desc: "Live"}
|
||||
- {id: 900, cat: Audio, desc: "Metal"}
|
||||
- {id: 62, cat: Audio, desc: "Punk & Hardcore"}
|
||||
- {id: 52, cat: Audio, desc: "Rap & Hiphop"}
|
||||
- {id: 5000, cat: Audio, desc: "Reggae"}
|
||||
- {id: 36, cat: Audio, desc: "Rock"}
|
||||
- {id: 400, cat: Audio, desc: "Soul"}
|
||||
- {id: 33, cat: Audio, desc: "Soundtrack"}
|
||||
- {id: 30, cat: Audio, desc: "World"}
|
||||
- {id: 40, cat: Audio/Audiobook, desc: "Audiobooks"}
|
||||
- {id: 41, cat: Books, desc: "Books"}
|
||||
- {id: 42, cat: Books/Comics, desc: "Comics"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
@@ -33,15 +96,22 @@
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["(?<=^| )(?!-|\\+)[^ ]+(?= |$)", "+$&"]
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}filter_cat[{{.}}]=1&{{end}}"
|
||||
search: "\"{{ .Query.Keywords }}\""
|
||||
search_type: "title"
|
||||
$raw: "{{range .Categories}}genre={{.}}&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
search_type: title
|
||||
rows:
|
||||
selector: table#browse > tbody > tr:has(a[href^="browse.php?genre="])
|
||||
fields:
|
||||
category:
|
||||
text: 1
|
||||
selector: a[href^="browse.php?genre="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: genre
|
||||
title:
|
||||
selector: td:nth-child(2) span
|
||||
download:
|
||||
@@ -69,15 +139,16 @@
|
||||
date:
|
||||
selector: td:nth-child(9)
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["'", ""]
|
||||
- name: re_replace
|
||||
args: ["[^a-zA-Z0-9]+", " "]
|
||||
args: ["([a-zA-Z]+)\\s+(\\d{1,2})\\s+'(\\d{2})", "$2 $1 $3"]
|
||||
- name: dateparse
|
||||
args: "Jan 02 06"
|
||||
args: "02 Jan 06"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"*": "1"
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"*": "1"
|
||||
":has(img[title^=HD]):has(img[title^=CURRENT])": 1.8
|
||||
"img[title^=CURRENT]": 1.6
|
||||
"img[title^=HD]": 1.3
|
||||
"*": 1.1
|
@@ -6,6 +6,8 @@
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.limetorrents.io/
|
||||
legacylinks:
|
||||
- https://www.limetorrents.cc/
|
||||
|
||||
caps:
|
||||
|
@@ -6,6 +6,8 @@
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://v2.rgut.uk/
|
||||
legacylinks:
|
||||
- https://rgu.rgt.life/
|
||||
|
||||
caps:
|
||||
@@ -65,8 +67,7 @@
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
submitme: "X"
|
||||
submitme: "X" # two submitme needed?!? shouldn't make a difference
|
||||
use_ssl: "1"
|
||||
error:
|
||||
- selector: h2:contains("Login failed!")
|
||||
message:
|
||||
|
@@ -6,7 +6,7 @@
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- http://www.torrent9.blue/
|
||||
- https://www.torrent9.blue/
|
||||
legacylinks:
|
||||
- http://www.torrent9.ec/
|
||||
- http://www.torrent9.red/
|
||||
@@ -14,6 +14,7 @@
|
||||
- http://www.torrents9.pe/
|
||||
- http://www.torrent9.cc/
|
||||
- http://www.torrent9.pe/
|
||||
- http://www.torrent9.blue/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
165
src/Jackett.Common/Definitions/x-ite.me.yml
Normal file
165
src/Jackett.Common/Definitions/x-ite.me.yml
Normal file
@@ -0,0 +1,165 @@
|
||||
---
|
||||
# By LA5T for https://x-ite.me (25.07.2018 17:34 UTC+2)
|
||||
#
|
||||
# TODO:
|
||||
# x-ite.me doesn't support altering the number of results, therefore only the 20 first results are shown (this is hardcoded), Jackett may support pagination in the future tho
|
||||
#
|
||||
site: xiteme
|
||||
name: x-ite.me
|
||||
description: "Tracker for LGBTQ movies, TV, books, magazines, anime, PC and XXX."
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://x-ite.me
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: incldead
|
||||
type: select
|
||||
label: Status
|
||||
default: 1
|
||||
options:
|
||||
0: Active
|
||||
1: "Active and Inactive"
|
||||
2: Inactive
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 6700, cat: TV/Anime, desc: "Animations - Adult"}
|
||||
- {id: 6330, cat: TV/Anime, desc: "Animations - Futanari"}
|
||||
- {id: 6320, cat: TV/Anime, desc: "Animations - Yaoi"}
|
||||
- {id: 9700, cat: Books/Comics, desc: "Comics & Manga - Adult"}
|
||||
- {id: 5000, cat: XXX, desc: "Fetish - All"}
|
||||
- {id: 7700, cat: XXX/Imageset, desc: "Images - Fetish"}
|
||||
- {id: 1050, cat: Movies, desc: "Movies - Biography"}
|
||||
- {id: 1150, cat: Movies, desc: "Movies - Crime"}
|
||||
- {id: 1250, cat: Movies, desc: "Movies - Experimental"}
|
||||
- {id: 1350, cat: Movies, desc: "Movies - History"}
|
||||
- {id: 1450, cat: Movies, desc: "Movies - Mystery"}
|
||||
- {id: 1530, cat: Movies, desc: "Movies - Sport"}
|
||||
- {id: 1630, cat: Movies, desc: "Movies - Western"}
|
||||
- {id: 6100, cat: TV/Anime, desc: "Animations - Anime"}
|
||||
- {id: 6300, cat: TV/Anime, desc: "Animations - Hentai"}
|
||||
- {id: 6310, cat: TV/Anime, desc: "Animations - Yuri"}
|
||||
- {id: 9600, cat: Books/Comics, desc: "Comics & Manga - Cartoon"}
|
||||
- {id: 13000, cat: PC/Games, desc: "Games - All"}
|
||||
- {id: 7900, cat: XXX/Imageset, desc: "Images - Other"}
|
||||
- {id: 1070, cat: Movies, desc: "Movies - Bollywood"}
|
||||
- {id: 1170, cat: Movies, desc: "Movies - Documentary"}
|
||||
- {id: 1270, cat: Movies, desc: "Movies - Family"}
|
||||
- {id: 1370, cat: Movies, desc: "Movies - Horror"}
|
||||
- {id: 1470, cat: Movies, desc: "Movies - News"}
|
||||
- {id: 1550, cat: Movies, desc: "Movies - Suspense"}
|
||||
- {id: 3000, cat: XXX, desc: "Softcore - All"}
|
||||
- {id: 6340, cat: TV/Anime, desc: "Animations - Bara"}
|
||||
- {id: 6900, cat: TV/Anime, desc: "Animations - Other"}
|
||||
- {id: 14000, cat: PC, desc: "Applications - All"}
|
||||
- {id: 9200, cat: Books/Comics, desc: "Comics & Manga - Hentai"}
|
||||
- {id: 4000, cat: XXX, desc: "Hardcore - All"}
|
||||
- {id: 8000, cat: Books/Magazines, desc: "Magazines - All"}
|
||||
- {id: 1090, cat: Movies, desc: "Movies - Comedy"}
|
||||
- {id: 1190, cat: Movies, desc: "Movies - Drama"}
|
||||
- {id: 1290, cat: Movies, desc: "Movies - Fantasy"}
|
||||
- {id: 1390, cat: Movies, desc: "Movies - Indie"}
|
||||
- {id: 1900, cat: Movies, desc: "Movies - Other"}
|
||||
- {id: 1570, cat: Movies, desc: "Movies - Theater"}
|
||||
- {id: 12000, cat: Other, desc: "Subtitles - All"}
|
||||
- {id: 6110, cat: TV/Anime, desc: "Animations - Ecchi"}
|
||||
- {id: 6120, cat: TV/Anime, desc: "Animations - Shoujo Ai"}
|
||||
- {id: 11000, cat: Audio/Audiobook, desc: "Audio Books - All"}
|
||||
- {id: 9100, cat: Books/Comics, desc: "Comics & Manga - Manga"}
|
||||
- {id: 7500, cat: XXX/Imageset, desc: "Images - Adult"}
|
||||
- {id: 1010, cat: Movies, desc: "Movies - Action"}
|
||||
- {id: 1110, cat: Movies, desc: "Movies - Coming of Age"}
|
||||
- {id: 1210, cat: Movies, desc: "Movies - Eastern"}
|
||||
- {id: 1310, cat: Movies, desc: "Movies - Film Noir"}
|
||||
- {id: 1410, cat: Movies, desc: "Movies - Music"}
|
||||
- {id: 1490, cat: Movies, desc: "Movies - Romance"}
|
||||
- {id: 1590, cat: Movies, desc: "Movies - Thriller"}
|
||||
- {id: 6350, cat: TV/Anime, desc: "Animations - Furry"}
|
||||
- {id: 6330, cat: TV/Anime, desc: "Animations - Shounen Ai"}
|
||||
- {id: 10000, cat: Books, desc: "Books - All"}
|
||||
- {id: 9900, cat: Books/Comics, desc: "Comics & Manga - Other"}
|
||||
- {id: 7300, cat: XXX/Imageset, desc: "Images - Erotic"}
|
||||
- {id: 1030, cat: Movies, desc: "Movies - Adventure"}
|
||||
- {id: 1130, cat: Movies, desc: "Movies - Coming Out"}
|
||||
- {id: 1230, cat: Movies, desc: "Movies - Entertainment"}
|
||||
- {id: 1330, cat: Movies, desc: "Movies - Historical"}
|
||||
- {id: 1430, cat: Movies, desc: "Movies - Musical"}
|
||||
- {id: 1510, cat: Movies, desc: "Movies - Sci-Fi"}
|
||||
- {id: 1610, cat: Movies, desc: "Movies - War"}
|
||||
modes:
|
||||
search: [q]
|
||||
|
||||
login:
|
||||
method: post
|
||||
path: account-login.php
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: .myF-content > center:nth-child(1) > b:contains("The specified username or password was incorrect.")
|
||||
test:
|
||||
path: account.php
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: torrents-search.php
|
||||
method: get
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["(?<=^| )(?!-|\\+)[^ ]+(?= |$)", "+$&"]
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}&c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
incldead: "{{ .Config.incldead }}"
|
||||
rows:
|
||||
selector: tr.t-row
|
||||
fields:
|
||||
title:
|
||||
selector: td:nth-child(2) > a:nth-child(1) > b:nth-child(1)
|
||||
category:
|
||||
selector: a[href^="torrents.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
details:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: href
|
||||
comments:
|
||||
selector: a[href^="comments.php?type=torrent&id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(7)
|
||||
files:
|
||||
selector: td:nth-child(6)
|
||||
seeders:
|
||||
selector: td:nth-child(8)
|
||||
leechers:
|
||||
selector: td:nth-child(9)
|
||||
date:
|
||||
selector: td:nth-child(3)
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(\\d{2})-(\\d{2})-(\\d{4}) ((?:\\d{2}:?){3})", "$3-$2-$1 $4"]
|
||||
- name: append
|
||||
args: " +01:00"
|
||||
- name: dateparse
|
||||
args: "2006-01-02 15:04:05 -07:00"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"td:nth-child(2) > a:nth-child(1) > span:nth-child(2)": 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"*": 1
|
@@ -6,11 +6,12 @@
|
||||
type: semi-private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://ww1.yggtorrent.is/
|
||||
- https://ww2.yggtorrent.is/
|
||||
legacylinks:
|
||||
- https://yggtorrent.is/
|
||||
- https://yggtorrent.com/
|
||||
- https://ww1.yggtorrent.com/
|
||||
- https://ww1.yggtorrent.is/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -1,102 +1,80 @@
|
||||
---
|
||||
site: yourexotic
|
||||
name: Your Exotic Torrents
|
||||
name: ExoticaZ
|
||||
description: "a porn tracker"
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://exoticaz.to/
|
||||
legacylinks:
|
||||
- https://torrents.yourexotic.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 11, cat: XXX, desc: "DVDRip"}
|
||||
- {id: 2, cat: XXX, desc: "DVDRip Censored"}
|
||||
- {id: 1, cat: XXX, desc: "Video Clip"}
|
||||
- {id: 20, cat: XXX, desc: "Censored Clips"}
|
||||
- {id: 14, cat: XXX, desc: "Hentai"}
|
||||
- {id: 19, cat: XXX, desc: "Full DVD"}
|
||||
- {id: 16, cat: XXX, desc: "HD 720p"}
|
||||
- {id: 17, cat: XXX, desc: "HD 1080p"}
|
||||
- {id: 18, cat: XXX, desc: "HD Censored"}
|
||||
- {id: 15, cat: XXX, desc: "SVCD/VCD"}
|
||||
- {id: 13, cat: XXX, desc: "Softcore"}
|
||||
- {id: 3, cat: XXX, desc: "Pictures"}
|
||||
- {id: 21, cat: XXX, desc: "Mixed Videos"}
|
||||
- {id: 1, cat: XXX, desc: "DVDRip"}
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q]
|
||||
movie-search: [q]
|
||||
|
||||
login:
|
||||
path: /index.php?page=login
|
||||
method: post
|
||||
path: /login
|
||||
method: form
|
||||
inputs:
|
||||
uid: "{{ .Config.username }}"
|
||||
pwd: "{{ .Config.password }}"
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
remember: "on"
|
||||
error:
|
||||
- selector: .lista>span
|
||||
- selector: div.invalid-feedback
|
||||
test:
|
||||
path: index.php
|
||||
selector: form[name="jump1"]
|
||||
selector: div.ratio-bar
|
||||
|
||||
search:
|
||||
path: index.php
|
||||
path: /torrents
|
||||
inputs:
|
||||
$raw: "&category={{range .Categories}}{{.}};{{end}}"
|
||||
page: "torrents"
|
||||
active: "0"
|
||||
search: "{{ .Query.Keywords }}"
|
||||
in: 1
|
||||
search: "{{ .Keywords }}"
|
||||
category: 0
|
||||
rows:
|
||||
selector: table.lista > tbody > tr:has(a[href^="index.php?page=torrent-details&id="])
|
||||
selector: div.table-responsive > table > tbody > tr
|
||||
fields:
|
||||
category:
|
||||
selector: td:nth-child(1) a
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: category
|
||||
text: 1
|
||||
title:
|
||||
selector: a[href^="index.php?page=torrent-details&id="]
|
||||
selector: a.torrent-link
|
||||
attribute: title
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["View details: ", ""]
|
||||
details:
|
||||
selector: a[href^="index.php?page=torrent-details&id="]
|
||||
selector: a.torrent-link
|
||||
attribute: href
|
||||
banner:
|
||||
selector: span.screen-image
|
||||
attribute: data-screens
|
||||
filters:
|
||||
- name: split
|
||||
args: ["|", 0]
|
||||
size:
|
||||
selector: td:nth-child(7)
|
||||
selector: td:nth-child(5)
|
||||
seeders:
|
||||
selector: td:nth-child(9)
|
||||
leechers:
|
||||
selector: td:nth-child(10)
|
||||
grabs:
|
||||
selector: td:nth-child(11)
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["---", "0"]
|
||||
date:
|
||||
selector: td:nth-child(6)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
date:
|
||||
selector: td:nth-child(3)
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "02/01/2006"
|
||||
- name: append
|
||||
args: " ago"
|
||||
download:
|
||||
selector: a[href^="download.php"]
|
||||
selector: a[href*="/download/"]
|
||||
attribute: href
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src$="freeleech.gif"]: "0"
|
||||
img[src$="silver.gif"]: "0.5"
|
||||
i[title="Free Download"]: "0"
|
||||
i[title="Half Download"]: "0.5"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img[src$="2x.gif"]: "2"
|
||||
img[src$="3x.gif"]: "3"
|
||||
img[src$="4x.gif"]: "4"
|
||||
img[src$="5x.gif"]: "5"
|
||||
img[src$="6x.gif"]: "6"
|
||||
img[src$="7x.gif"]: "7"
|
||||
img[src$="8x.gif"]: "8"
|
||||
img[src$="9x.gif"]: "9"
|
||||
i.fa-gem: "2"
|
||||
"*": "1"
|
||||
|
@@ -318,7 +318,7 @@ namespace Jackett.Common.Indexers.Abstract
|
||||
{
|
||||
var content = await base.Download(link);
|
||||
|
||||
// Check if we're out of FL tokens
|
||||
// Check if we're out of FL tokens/torrent is to large
|
||||
// most gazelle trackers will simply return the torrent anyway but e.g. redacted will return an error
|
||||
var requestLink = link.ToString();
|
||||
if (content.Length >= 1
|
||||
@@ -326,7 +326,8 @@ namespace Jackett.Common.Indexers.Abstract
|
||||
&& requestLink.Contains("usetoken=1"))
|
||||
{
|
||||
var html = Encoding.GetString(content);
|
||||
if (html.Contains("You do not have any freeleech tokens left."))
|
||||
if (html.Contains("You do not have any freeleech tokens left.")
|
||||
|| html.Contains("This torrent is too large."))
|
||||
{
|
||||
// download again with usetoken=0
|
||||
var requestLinkNew = requestLink.Replace("usetoken=1", "usetoken=0");
|
||||
|
@@ -752,26 +752,22 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
protected ICollection<int> MapTrackerCatToNewznab(string input)
|
||||
{
|
||||
var cats = new List<int>();
|
||||
if (null != input)
|
||||
{
|
||||
var mapping = categoryMapping.Where(m => m.TrackerCategory != null && m.TrackerCategory.ToLowerInvariant() == input.ToLowerInvariant()).FirstOrDefault();
|
||||
if (mapping != null)
|
||||
{
|
||||
cats.Add(mapping.NewzNabCategory);
|
||||
}
|
||||
if (input == null)
|
||||
return new List<int>();
|
||||
|
||||
// 1:1 category mapping
|
||||
try
|
||||
{
|
||||
var trackerCategoryInt = int.Parse(input);
|
||||
cats.Add(trackerCategoryInt + 100000);
|
||||
}
|
||||
catch (FormatException)
|
||||
{
|
||||
// input is not an integer, continue
|
||||
}
|
||||
var cats = categoryMapping.Where(m => m.TrackerCategory != null && m.TrackerCategory.ToLowerInvariant() == input.ToLowerInvariant()).Select(c => c.NewzNabCategory).ToList();
|
||||
|
||||
// 1:1 category mapping
|
||||
try
|
||||
{
|
||||
var trackerCategoryInt = int.Parse(input);
|
||||
cats.Add(trackerCategoryInt + 100000);
|
||||
}
|
||||
catch (FormatException)
|
||||
{
|
||||
// input is not an integer, continue
|
||||
}
|
||||
|
||||
return cats;
|
||||
}
|
||||
|
||||
|
@@ -18,7 +18,7 @@ namespace Jackett.Common.Indexers
|
||||
{
|
||||
class MejorTorrent : BaseWebIndexer
|
||||
{
|
||||
public static Uri WebUri = new Uri("http://www.mejortorrent.com/");
|
||||
public static Uri WebUri = new Uri("http://www.mejortorrent.org/");
|
||||
public static Uri DownloadUri = new Uri(WebUri, "secciones.php?sec=descargas&ap=contar_varios");
|
||||
private static Uri SearchUriBase = new Uri(WebUri, "secciones.php");
|
||||
public static Uri NewTorrentsUri = new Uri(WebUri, "secciones.php?sec=ultimos_torrents");
|
||||
|
@@ -71,6 +71,7 @@ namespace Jackett.Common.Indexers
|
||||
AddCategoryMapping(47, TorznabCatType.Other, "Fonts");
|
||||
AddCategoryMapping(43, TorznabCatType.PCMac, "Mac");
|
||||
|
||||
AddCategoryMapping(96, TorznabCatType.MoviesUHD, "Movie/4K");
|
||||
AddCategoryMapping(25, TorznabCatType.MoviesSD, "Movies/480p");
|
||||
AddCategoryMapping(11, TorznabCatType.MoviesBluRay, "Movies/Bluray");
|
||||
AddCategoryMapping(5, TorznabCatType.MoviesBluRay, "Movies/Bluray-Full");
|
||||
@@ -79,7 +80,7 @@ namespace Jackett.Common.Indexers
|
||||
AddCategoryMapping(22, TorznabCatType.MoviesForeign, "Movies/Non-English");
|
||||
AddCategoryMapping(13, TorznabCatType.Movies, "Movies/Packs");
|
||||
AddCategoryMapping(44, TorznabCatType.MoviesSD, "Movies/SD/x264");
|
||||
AddCategoryMapping(48, TorznabCatType.MoviesUHD, "Movies/x265");
|
||||
AddCategoryMapping(48, TorznabCatType.Movies, "Movies/x265");
|
||||
AddCategoryMapping(1, TorznabCatType.MoviesSD, "Movies/XviD");
|
||||
|
||||
AddCategoryMapping(17, TorznabCatType.Audio, "Music/Audio");
|
||||
|
@@ -44,20 +44,23 @@ namespace Jackett.Common.Models.DTO
|
||||
stringQuery.ExpandCatsToSubCats();
|
||||
|
||||
// try to build an IMDB Query
|
||||
var imdbID = ParseUtil.GetFullImdbID(stringQuery.SanitizedSearchTerm);
|
||||
TorznabQuery imdbQuery = null;
|
||||
if (imdbID != null)
|
||||
if (stringQuery.SanitizedSearchTerm.StartsWith("tt") && stringQuery.SanitizedSearchTerm.Length <= 9)
|
||||
{
|
||||
imdbQuery = new TorznabQuery()
|
||||
var imdbID = ParseUtil.GetFullImdbID(stringQuery.SanitizedSearchTerm);
|
||||
TorznabQuery imdbQuery = null;
|
||||
if (imdbID != null)
|
||||
{
|
||||
ImdbID = imdbID,
|
||||
Categories = stringQuery.Categories,
|
||||
Season = stringQuery.Season,
|
||||
Episode = stringQuery.Episode,
|
||||
};
|
||||
imdbQuery.ExpandCatsToSubCats();
|
||||
imdbQuery = new TorznabQuery()
|
||||
{
|
||||
ImdbID = imdbID,
|
||||
Categories = stringQuery.Categories,
|
||||
Season = stringQuery.Season,
|
||||
Episode = stringQuery.Episode,
|
||||
};
|
||||
imdbQuery.ExpandCatsToSubCats();
|
||||
|
||||
return imdbQuery;
|
||||
return imdbQuery;
|
||||
}
|
||||
}
|
||||
|
||||
return stringQuery;
|
||||
|
@@ -62,24 +62,9 @@ namespace Jackett.Common.Plumbing
|
||||
case "httpclient2":
|
||||
RegisterWebClient<HttpWebClient2>(builder);
|
||||
break;
|
||||
case "safecurl":
|
||||
RegisterWebClient<UnixSafeCurlWebClient>(builder);
|
||||
break;
|
||||
case "libcurl":
|
||||
RegisterWebClient<UnixLibCurlWebClient>(builder);
|
||||
break;
|
||||
case "automatic":
|
||||
default:
|
||||
if (System.Environment.OSVersion.Platform != PlatformID.Unix)
|
||||
{
|
||||
RegisterWebClient<HttpWebClient>(builder);
|
||||
break;
|
||||
}
|
||||
var usehttpclient = DetectMonoCompatabilityWithHttpClient();
|
||||
if (usehttpclient)
|
||||
RegisterWebClient<HttpWebClient>(builder);
|
||||
else
|
||||
RegisterWebClient<UnixLibCurlWebClient>(builder);
|
||||
RegisterWebClient<HttpWebClient>(builder);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -65,6 +65,14 @@ namespace Jackett.Console
|
||||
Engine.Logger.Info("Jackett Data will be stored in: " + runtimeSettings.CustomDataFolder);
|
||||
}
|
||||
|
||||
if(!string.IsNullOrEmpty(runtimeSettings.ClientOverride))
|
||||
{
|
||||
if (runtimeSettings.ClientOverride != "httpclient" && runtimeSettings.ClientOverride != "httpclient2" && runtimeSettings.ClientOverride != "httpclientnetcore")
|
||||
{
|
||||
Engine.Logger.Error($"Client override ({runtimeSettings.ClientOverride}) has been deprecated, please remove it from your start arguments");
|
||||
Environment.Exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
// Use Proxy
|
||||
if (options.ProxyConnection != null)
|
||||
|
@@ -3,11 +3,12 @@ using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.WebUtilities;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Jackett.Server.Controllers
|
||||
@@ -46,7 +47,7 @@ namespace Jackett.Server.Controllers
|
||||
if (serverConfig.APIKey != jackett_apikey)
|
||||
throw new Exception("Incorrect API key");
|
||||
|
||||
path = WebUtility.UrlDecode(path);
|
||||
path = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(path));
|
||||
path = protectionService.UnProtect(path);
|
||||
var remoteFile = new Uri(path, UriKind.RelativeOrAbsolute);
|
||||
var fileExtension = ".torrent";
|
||||
|
@@ -202,6 +202,7 @@ namespace Jackett.Server.Controllers
|
||||
if (t.Key == "Category[]")
|
||||
{
|
||||
request.Category = t.Value.ToString().Split(',').Select(Int32.Parse).ToArray();
|
||||
CurrentQuery.Categories = request.Category;
|
||||
}
|
||||
|
||||
if (t.Key == "query")
|
||||
|
@@ -72,6 +72,8 @@ namespace Jackett.Server.Controllers
|
||||
[HttpPost]
|
||||
public IActionResult UpdateConfig([FromBody]Common.Models.DTO.ServerConfig config)
|
||||
{
|
||||
bool webHostRestartNeeded = false;
|
||||
|
||||
var originalPort = serverConfig.Port;
|
||||
var originalAllowExternal = serverConfig.AllowExternal;
|
||||
int port = config.port;
|
||||
@@ -91,6 +93,11 @@ namespace Jackett.Server.Controllers
|
||||
string omdbApiKey = config.omdbkey;
|
||||
string omdbApiUrl = config.omdburl;
|
||||
|
||||
if (config.basepathoverride != serverConfig.BasePathOverride)
|
||||
{
|
||||
webHostRestartNeeded = true;
|
||||
}
|
||||
|
||||
serverConfig.UpdateDisabled = updateDisabled;
|
||||
serverConfig.UpdatePrerelease = preRelease;
|
||||
serverConfig.BasePathOverride = basePathOverride;
|
||||
@@ -164,8 +171,7 @@ namespace Jackett.Server.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
Thread.Sleep(500);
|
||||
Helper.RestartWebHost();
|
||||
webHostRestartNeeded = true;
|
||||
}
|
||||
|
||||
if (saveDir != serverConfig.BlackholeDir)
|
||||
@@ -182,6 +188,13 @@ namespace Jackett.Server.Controllers
|
||||
configService.SaveConfig(serverConfig);
|
||||
}
|
||||
|
||||
if (webHostRestartNeeded)
|
||||
{
|
||||
Thread.Sleep(500);
|
||||
logger.Info("Restarting webhost due to configuration change");
|
||||
Helper.RestartWebHost();
|
||||
}
|
||||
|
||||
serverConfig.ConfigChanged();
|
||||
|
||||
return Json(serverConfig);
|
||||
|
@@ -25,7 +25,7 @@
|
||||
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.2" />
|
||||
<PackageReference Include="AutoMapper" Version="7.0.1" />
|
||||
<PackageReference Include="CommandLineParser" Version="2.2.1" />
|
||||
<PackageReference Include="Microsoft.AspNetCore" Version="2.1.1" />
|
||||
<PackageReference Include="Microsoft.AspNetCore" Version="2.1.2" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication" Version="2.1.1" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="2.1.1" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.1" />
|
||||
|
@@ -1,25 +0,0 @@
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Rewrite;
|
||||
using System;
|
||||
|
||||
namespace Jackett.Server.Middleware
|
||||
{
|
||||
public class RewriteRules
|
||||
{
|
||||
public static void RewriteBasePath(RewriteContext context)
|
||||
{
|
||||
var request = context.HttpContext.Request;
|
||||
|
||||
string serverBasePath = Helper.ServerService.BasePath() ?? string.Empty;
|
||||
|
||||
if (request.Path != null && request.Path.HasValue && serverBasePath.Length > 0
|
||||
&& (request.Path.Value.StartsWith(serverBasePath + "/", StringComparison.Ordinal)
|
||||
|| request.Path.Value.Equals(serverBasePath, StringComparison.Ordinal)))
|
||||
{
|
||||
string path = request.Path.Value.Substring(serverBasePath.Length);
|
||||
path = string.IsNullOrEmpty(path) ? "/" : path;
|
||||
request.Path = new PathString(path);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -12,6 +12,7 @@ using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.DataProtection;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.HttpOverrides;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.Authorization;
|
||||
using Microsoft.AspNetCore.Rewrite;
|
||||
@@ -47,6 +48,7 @@ namespace Jackett.Server
|
||||
options.AccessDeniedPath = new PathString("/UI/Login");
|
||||
options.LogoutPath = new PathString("/UI/Logout");
|
||||
options.Cookie.Name = "Jackett";
|
||||
options.Cookie.SameSite = SameSiteMode.None;
|
||||
});
|
||||
|
||||
services.AddMvc(config =>
|
||||
@@ -107,8 +109,19 @@ namespace Jackett.Server
|
||||
|
||||
app.UseCustomExceptionHandler();
|
||||
|
||||
string serverBasePath = Helper.ServerService.BasePath() ?? string.Empty;
|
||||
|
||||
if (!string.IsNullOrEmpty(serverBasePath))
|
||||
{
|
||||
app.UsePathBase(serverBasePath);
|
||||
}
|
||||
|
||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||
{
|
||||
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
|
||||
});
|
||||
|
||||
var rewriteOptions = new RewriteOptions()
|
||||
.Add(RewriteRules.RewriteBasePath)
|
||||
.AddRewrite(@"^torznab\/([\w-]*)", "api/v2.0/indexers/$1/results/torznab", skipRemainingRules: true) //legacy torznab route
|
||||
.AddRewrite(@"^potato\/([\w-]*)", "api/v2.0/indexers/$1/results/potato", skipRemainingRules: true) //legacy potato route
|
||||
.Add(RedirectRules.RedirectToDashboard);
|
||||
|
@@ -42,7 +42,6 @@
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.Net.Http.WebRequest" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.ServiceModel" />
|
||||
@@ -53,7 +52,6 @@
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
|
@@ -30,6 +30,11 @@ namespace Jackett.Tray
|
||||
Hide();
|
||||
InitializeComponent();
|
||||
|
||||
Opacity = 0;
|
||||
Enabled = false;
|
||||
WindowState = FormWindowState.Minimized;
|
||||
FormBorderStyle = FormBorderStyle.FixedToolWindow;
|
||||
|
||||
RuntimeSettings runtimeSettings = new RuntimeSettings()
|
||||
{
|
||||
CustomLogFileName = "TrayLog.txt"
|
||||
|
@@ -39,7 +39,7 @@ namespace Jackett.Tray
|
||||
}
|
||||
});
|
||||
}
|
||||
catch (Exception e)
|
||||
catch (Exception)
|
||||
{
|
||||
newVersion = "";
|
||||
}
|
||||
|
@@ -231,6 +231,7 @@ namespace Jackett.Updater
|
||||
"Definitions/oxtorrent.yml",
|
||||
"Definitions/tehconnection.yml",
|
||||
"Definitions/torrentwtf.yml",
|
||||
"Definitions/eotforum.yml",
|
||||
};
|
||||
|
||||
foreach (var oldFile in oldFiles)
|
||||
|
@@ -289,11 +289,13 @@ namespace Jackett.Controllers
|
||||
|
||||
if (CurrentQuery.ImdbID != null)
|
||||
{
|
||||
/* We should allow this (helpful in case of aggregate idnexers)
|
||||
if (!string.IsNullOrEmpty(CurrentQuery.SearchTerm))
|
||||
{
|
||||
logger.Warn($"A search request from {Request.GetOwinContext().Request.RemoteIpAddress} was made containing q and imdbid.");
|
||||
return GetErrorXML(201, "Incorrect parameter: please specify either imdbid or q");
|
||||
}
|
||||
*/
|
||||
|
||||
CurrentQuery.ImdbID = ParseUtil.GetFullImdbID(CurrentQuery.ImdbID); // normalize ImdbID
|
||||
if (CurrentQuery.ImdbID == null)
|
||||
|
@@ -143,23 +143,12 @@ namespace Jackett.Services
|
||||
|
||||
var monoVersionO = new Version(monoVersion.Split(' ')[0]);
|
||||
|
||||
if (monoVersionO.Major < 4)
|
||||
{
|
||||
logger.Error("Your mono version is to old (mono 3 is no longer supported). Please update to the latest version from http://www.mono-project.com/download/");
|
||||
Engine.Exit(2);
|
||||
}
|
||||
else if (monoVersionO.Major == 4 && monoVersionO.Minor == 2)
|
||||
{
|
||||
var notice = "mono version 4.2.* is known to cause problems with Jackett. If you experience any problems please try updating to the latest mono version from http://www.mono-project.com/download/ first.";
|
||||
_notices.Add(notice);
|
||||
logger.Error(notice);
|
||||
}
|
||||
|
||||
if (monoVersionO.Major < 5 || (monoVersionO.Major == 5 && monoVersionO.Minor < 8))
|
||||
{
|
||||
string notice = "A minimum Mono version of 5.8 is required. Please update to the latest version from http://www.mono-project.com/download/";
|
||||
_notices.Add(notice);
|
||||
logger.Error(notice);
|
||||
Engine.Exit(1);
|
||||
}
|
||||
|
||||
try
|
||||
|
Reference in New Issue
Block a user