mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-15 08:24:14 +02:00
Compare commits
68 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
cc3ebbe1ae | ||
![]() |
d88db81207 | ||
![]() |
9a15f1d1a3 | ||
![]() |
4e5f091b6c | ||
![]() |
517f196d73 | ||
![]() |
9461d2470a | ||
![]() |
c9f874dc93 | ||
![]() |
53b6285810 | ||
![]() |
5d4e0c41d6 | ||
![]() |
754337b58f | ||
![]() |
16f79085ad | ||
![]() |
005539d30d | ||
![]() |
2d5a90ae31 | ||
![]() |
fc060d6468 | ||
![]() |
d0937d3561 | ||
![]() |
7b8de5e28d | ||
![]() |
790f5ddfad | ||
![]() |
760231be43 | ||
![]() |
837e74a743 | ||
![]() |
630f613721 | ||
![]() |
aba9e6db47 | ||
![]() |
88858022af | ||
![]() |
852bb27de0 | ||
![]() |
9a071a3457 | ||
![]() |
db11db28e4 | ||
![]() |
79a8ef957f | ||
![]() |
0e0dfe80a7 | ||
![]() |
c112aef644 | ||
![]() |
2e30fe1899 | ||
![]() |
6b3ffa22c9 | ||
![]() |
9e78f46010 | ||
![]() |
50a09189e4 | ||
![]() |
fcda42b9f1 | ||
![]() |
48f72a3096 | ||
![]() |
e4e1ac2c18 | ||
![]() |
a719048f81 | ||
![]() |
8f1f41a4a1 | ||
![]() |
fffd53cc1f | ||
![]() |
ae7c139452 | ||
![]() |
76a3e7cd85 | ||
![]() |
20495ef32b | ||
![]() |
41b91bb0c3 | ||
![]() |
6e59cc4c33 | ||
![]() |
2aaed9b9e4 | ||
![]() |
f7dc404eaf | ||
![]() |
f3b9e70dde | ||
![]() |
d065f0abf4 | ||
![]() |
6e173558db | ||
![]() |
f78434e758 | ||
![]() |
ef5f2ccb89 | ||
![]() |
f05db7f544 | ||
![]() |
12cc25bdb0 | ||
![]() |
5936defc06 | ||
![]() |
3e9006464d | ||
![]() |
f7bf8fba40 | ||
![]() |
6bbb80a54e | ||
![]() |
7889077498 | ||
![]() |
074f0da27f | ||
![]() |
d7c35b2fe4 | ||
![]() |
4d8b55a92f | ||
![]() |
7387679a6f | ||
![]() |
af93571568 | ||
![]() |
1e2ecfc0c5 | ||
![]() |
b98a1ff1f5 | ||
![]() |
6170ef09b4 | ||
![]() |
15a1c6566f | ||
![]() |
113b3dffff | ||
![]() |
511ae721e2 |
20
README.md
20
README.md
@@ -30,6 +30,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* cpasbien
|
||||
* ETTV
|
||||
* ExtraTorrent.ag
|
||||
* ExtraTorrentClone
|
||||
* EZTV
|
||||
* Frozen Layer
|
||||
* GkTorrent
|
||||
@@ -58,10 +59,8 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Torlock
|
||||
* Torrent Downloads
|
||||
* Torrent9
|
||||
* TorrentKim
|
||||
* Torrentz2
|
||||
* World Wide Torrents
|
||||
* YIFY (YTS)
|
||||
* YTS.ag
|
||||
* Zooqle
|
||||
|
||||
@@ -111,6 +110,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* bB
|
||||
* BeyondHD
|
||||
* BIGTorrent
|
||||
* BigTower
|
||||
* Bit-City Reloaded
|
||||
* BIT-HDTV
|
||||
* Bithorlo
|
||||
@@ -228,6 +228,8 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Racing4Everyone (R4E)
|
||||
* Redacted (PassTheHeadphones)
|
||||
* Red Star Torrent
|
||||
* Redtopia (RED)
|
||||
* RetroFlix
|
||||
* RevolutionTT
|
||||
* RGU
|
||||
* RoDVD
|
||||
@@ -386,11 +388,10 @@ 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_set_header X-Forwarded-Host $http_host;
|
||||
proxy_redirect off;
|
||||
}
|
||||
```
|
||||
@@ -431,7 +432,8 @@ All contributions are welcome just send a pull request. Jackett's framework all
|
||||
* Install the .NET Core [SDK](https://www.microsoft.com/net/download/windows)
|
||||
* Open the Jackett solution in Visual Studio 2017 (version 15.7 or above)
|
||||
* Right click on the Jackett solution and click 'Rebuild Solution' to restore nuget packages
|
||||
* Select Jackett.Console as startup project
|
||||
* Select Jackett.Server as startup project
|
||||
* In the drop down menu of the run button select "Jackett.Server" instead of "IIS Express"
|
||||
* Build/Start the project
|
||||
|
||||
### OSX
|
||||
@@ -445,9 +447,9 @@ NOTE: msbuild is included in the mono release.
|
||||
|
||||
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
|
||||
* msbuild Jackett.Server/Jackett.Server.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
|
||||
* mono Jackett.Server/bin/Debug/JackettServer.exe
|
||||
|
||||
|
||||
### Linux
|
||||
@@ -457,8 +459,8 @@ sudo apt install mono-complete nuget msbuild # install build tools (debian/ubunt
|
||||
git clone https://github.com/Jackett/Jackett.git
|
||||
cd Jackett/src
|
||||
nuget restore Jackett.sln # prepare dependencies
|
||||
msbuild Jackett.Console/Jackett.Console.csproj /t:Build /p:Configuration=Debug # compile
|
||||
mono Jackett.Console/bin/Debug/JackettConsole.exe # run jackett
|
||||
msbuild Jackett.Server/Jackett.Server.csproj /t:Build /p:Configuration=Debug # compile
|
||||
mono Jackett.Server/bin/Debug/JackettServer.exe # run jackett
|
||||
```
|
||||
|
||||
## Screenshots
|
||||
|
77
install_service_macos
Normal file
77
install_service_macos
Normal file
@@ -0,0 +1,77 @@
|
||||
#!/bin/bash
|
||||
|
||||
#Setting up colors
|
||||
BOLDRED="$(printf '\033[1;31m')"
|
||||
BOLDGREEN="$(printf '\033[1;32m')"
|
||||
NC="$(printf '\033[0m')" # No Color
|
||||
|
||||
# Stop and unload the service if it's running
|
||||
launchctl remove org.user.Jackett
|
||||
|
||||
# Move working directory to Jackett's
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
# Check if we're running from Jackett's directory
|
||||
if [ ! -f ./JackettConsole.exe ]; then
|
||||
echo "${BOLDRED}ERROR${NC}: Couldn't locate JackettConsole.exe. Is the script in the right directory?"
|
||||
exit 1
|
||||
fi
|
||||
jackettdir="$(pwd)"
|
||||
|
||||
# Check if mono is installed
|
||||
command -v mono >/dev/null 2>&1 || { echo >&2 "${BOLDRED}ERROR${NC}: Jackett requires Mono but it's not installed. Aborting."; exit 1; }
|
||||
monodir="$(dirname $(command -v mono))"
|
||||
|
||||
# Check that no other service called Jackett is already running
|
||||
if [[ $(launchctl list | grep org.user.Jackett) ]]; then
|
||||
echo "${BOLDRED}ERROR${NC}: Jackett already seems to be running as a service. Please stop it before running this script again."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Write the plist to LaunchAgents
|
||||
mkdir -p ~/Library/LaunchAgents/
|
||||
cat >~/Library/LaunchAgents/org.user.Jackett.plist <<EOL
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>EnvironmentVariables</key>
|
||||
<dict>
|
||||
<key>PATH</key>
|
||||
<string>/usr/bin:/bin:/usr/sbin:/sbin:${monodir}</string>
|
||||
</dict>
|
||||
<key>KeepAlive</key>
|
||||
<true/>
|
||||
<key>Label</key>
|
||||
<string>org.user.Jackett</string>
|
||||
<key>ProgramArguments</key>
|
||||
<array>
|
||||
<string>${monodir}/mono</string>
|
||||
<string>--debug</string>
|
||||
<string>JackettConsole.exe</string>
|
||||
<string>--NoRestart</string>
|
||||
</array>
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
<key>WorkingDirectory</key>
|
||||
<string>${jackettdir}</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
EOL
|
||||
|
||||
# Run the agent
|
||||
launchctl load ~/Library/LaunchAgents/org.user.Jackett.plist
|
||||
|
||||
# Check that it's running
|
||||
if [[ $(launchctl list | grep org.user.Jackett) ]]; then
|
||||
echo "${BOLDGREEN}Agent successfully installed and launched!${NC}"
|
||||
else
|
||||
cat << EOL
|
||||
${BOLDRED}ERROR${NC}: Could not launch agent. The installation might have failed.
|
||||
Please open an issue on https://github.com/Jackett/Jackett/issues and paste following information:
|
||||
Mono directory: \`${monodir}\`
|
||||
Jackett directory: \`${jackettdir}\`
|
||||
|
||||
EOL
|
||||
fi
|
161
src/Jackett.Common/Definitions/bigtower.yml
Normal file
161
src/Jackett.Common/Definitions/bigtower.yml
Normal file
@@ -0,0 +1,161 @@
|
||||
---
|
||||
site: bigtower
|
||||
name: BigTower
|
||||
description: "Big Tower is an ITALIAN Private site for TV / MOVIES / GENERAL"
|
||||
language: it-it
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- http://bigtower.info/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
||||
# Movies
|
||||
- {id: 91, cat: Movies/HD, desc: "DSS"}
|
||||
- {id: 92, cat: Movies/HD, desc: "DSS 3D"}
|
||||
- {id: 14, cat: Movies, desc: "Screener"}
|
||||
- {id: 15, cat: Movies/SD, desc: "DVDRip"}
|
||||
- {id: 16, cat: Movies/HD, desc: "BDRip"}
|
||||
- {id: 17, cat: Movies/HD, desc: "HD 720p"}
|
||||
- {id: 18, cat: Movies/HD, desc: "HD 1080p"}
|
||||
- {id: 19, cat: Movies/HD, desc: "HD 3D"}
|
||||
- {id: 83, cat: Movies/HD, desc: "4K (Ultra HD)"}
|
||||
- {id: 89, cat: Movies/DVD, desc: "DVD 5"}
|
||||
- {id: 90, cat: Movies/DVD, desc: "DVD 9"}
|
||||
- {id: 37, cat: Movies, desc: "MP4"}
|
||||
- {id: 61, cat: TV, desc: "TV Show"}
|
||||
- {id: 78, cat: TV, desc: "Serie TV"}
|
||||
- {id: 96, cat: TV/HD, desc: "Serie TV 720p"}
|
||||
- {id: 97, cat: TV/HD, desc: "Serie TV 1080p"}
|
||||
- {id: 98, cat: TV, desc: "Serie TV MP4"}
|
||||
- {id: 24, cat: TV/Anime, desc: "Cartoni"}
|
||||
- {id: 66, cat: TV/Anime, desc: "Anime"}
|
||||
- {id: 71, cat: TV, desc: "SUB iTA"}
|
||||
- {id: 75, cat: TV/Documentary, desc: "Documentari"}
|
||||
- {id: 72, cat: TV/Sport, desc: "Sport"}
|
||||
|
||||
# GAMES
|
||||
- {id: 28, cat: PC/Games, desc: "PC Games"}
|
||||
- {id: 63, cat: Console/Xbox 360, desc: "XBOX 360"}
|
||||
- {id: 64, cat: Console/PS3, desc: "PS3"}
|
||||
- {id: 33, cat: Console/Wii, desc: "WII"}
|
||||
- {id: 76, cat: Console/Other, desc: "PS2"}
|
||||
- {id: 81, cat: Console/Xbox One, desc: "XBOX ONE"}
|
||||
- {id: 84, cat: Console/PS4, desc: "PS4"}
|
||||
|
||||
# MUSIC
|
||||
- {id: 35, cat: Audio, desc: "MP3"}
|
||||
- {id: 67, cat: Audio, desc: "FLAC"}
|
||||
|
||||
# SOFTWARE
|
||||
- {id: 52, cat: PC/ISO, desc: "Windows"}
|
||||
- {id: 54, cat: PC/ISO, desc: "Mac"}
|
||||
- {id: 69, cat: PC/ISO, desc: "Linux"}
|
||||
|
||||
# PHONE
|
||||
- {id: 40, cat: PC/Phone-IOS, desc: "Android"}
|
||||
- {id: 41, cat: PC/Phone-Android, desc: "Iphone"}
|
||||
|
||||
# OTHER
|
||||
- {id: 44, cat: Other, desc: "Varie"}
|
||||
- {id: 82, cat: Other, desc: "Music Video"}
|
||||
- {id: 86, cat: Other, desc: "Navigatori"}
|
||||
- {id: 95, cat: Other, desc: "Immagini"}
|
||||
- {id: 99, cat: Other, desc: "AudioLibri"}
|
||||
|
||||
# EBOOK
|
||||
- {id: 46, cat: Books, desc: "Ebook"}
|
||||
- {id: 73, cat: Books/Comics, desc: "Fumetti"}
|
||||
- {id: 74, cat: Books/Comics, desc: "Manga"}
|
||||
- {id: 87, cat: Books, desc: "Giornali"}
|
||||
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
login:
|
||||
path: index.php?page=login
|
||||
method: post
|
||||
inputs:
|
||||
uid: "{{ .Config.username }}"
|
||||
pwd: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: span:contains("Nome Utente non corretto")
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: index.php
|
||||
inputs:
|
||||
search: "{{ .Keywords }}"
|
||||
page: "torrents"
|
||||
category: "{{range .Categories}}{{.}};{{end}}"
|
||||
options: "0"
|
||||
active: "0"
|
||||
rows:
|
||||
selector: table > tbody > tr > td > table.lista > tbody > tr:has(a[href^="index.php?page=torrent-details&id="])
|
||||
fields:
|
||||
download:
|
||||
selector: a[href^="index.php?page=torrent-details&id="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["index.php?page=torrent-details&id=", "download.php?id="]
|
||||
title:
|
||||
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
|
||||
banner:
|
||||
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "src=(.*?) "
|
||||
category:
|
||||
selector: a[href^="index.php?page=torrents&category="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: category
|
||||
details:
|
||||
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-last-child(2)
|
||||
date:
|
||||
selector: td:nth-last-child(7)
|
||||
filters:
|
||||
- name: append
|
||||
args: " +01:00"
|
||||
- name: dateparse
|
||||
args: "02/01/2006 -07:00"
|
||||
grabs:
|
||||
selector: td:nth-last-child(4)
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["---", "0"]
|
||||
seeders:
|
||||
selector: td:nth-last-child(6)
|
||||
leechers:
|
||||
selector: td:nth-last-child(5)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[alt="Gold 100% Free"]: "0"
|
||||
img[alt="Silver 50% Free"]: "0.5"
|
||||
img[alt="Bronze 25% Free"]: "0.75"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img[alt="2x Upload Multiplier"]: "2"
|
||||
img[alt="3x Upload Multiplier"]: "3"
|
||||
img[alt="4x Upload Multiplier"]: "4"
|
||||
img[alt="5x Upload Multiplier"]: "5"
|
||||
img[alt="6x Upload Multiplier"]: "6"
|
||||
img[alt="7x Upload Multiplier"]: "7"
|
||||
img[alt="8x Upload Multiplier"]: "8"
|
||||
img[alt="9x Upload Multiplier"]: "9"
|
||||
img[alt="10x Upload Multiplier"]: "10"
|
||||
"*": "1"
|
@@ -69,9 +69,18 @@
|
||||
filters:
|
||||
- name: andmatch
|
||||
fields:
|
||||
# download button can be disbled in the profile, use details link instead
|
||||
# download:
|
||||
# selector: a[href^="download.php/"]
|
||||
# attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php/"]
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["details.php?id=", "download.php/"]
|
||||
- name: append
|
||||
args: "/invalid.torrent"
|
||||
title:
|
||||
selector: a[href^="details.php?id="]
|
||||
title:
|
||||
|
@@ -53,6 +53,10 @@
|
||||
selector: .sbar span:nth-of-type(5) b
|
||||
grabs:
|
||||
selector: .sbar span:nth-of-type(6) b
|
||||
seeders:
|
||||
text: "999"
|
||||
leechers:
|
||||
text: "999"
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
|
@@ -63,9 +63,9 @@
|
||||
grabs:
|
||||
selector: div[class$="info"] span:nth-of-type(4)
|
||||
seeders:
|
||||
text: "999"
|
||||
selector: div[class$="info"] span:nth-of-type(4)
|
||||
leechers:
|
||||
text: "999"
|
||||
selector: div[class$="info"] span:nth-of-type(4)
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
|
981
src/Jackett.Common/Definitions/extratorrentclone.yml
Normal file
981
src/Jackett.Common/Definitions/extratorrentclone.yml
Normal file
@@ -0,0 +1,981 @@
|
||||
---
|
||||
site: extratorrentclone
|
||||
name: ExtraTorrentClone
|
||||
description: "ExtraTorrentClone is a Public tracker, a popular alternative to the original ET site, providing Movie / TV / General magnets"
|
||||
language: en-us
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://geetorrent.com/
|
||||
legacylinks:
|
||||
- https://eltorrents.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
#Anime
|
||||
- {id: 1, cat: TV/Anime, desc: "Anime"}
|
||||
- {id: 963, cat: TV/Anime, desc: "Anime - Absolute Duo"}
|
||||
- {id: 951, cat: TV/Anime, desc: "Anime - Akame ga Kill"}
|
||||
- {id: 959, cat: TV/Anime, desc: "Anime - Aldnoah Zero"}
|
||||
- {id: 99, cat: TV/Anime, desc: "Anime - Anime - Other"}
|
||||
- {id: 86, cat: TV/Anime, desc: "Anime - Battle Programer Shirase"}
|
||||
- {id: 87, cat: TV/Anime, desc: "Anime - Big O"}
|
||||
- {id: 960, cat: TV/Anime, desc: "Anime - Binan Koukou Chikyuu Bouei-bu Love"}
|
||||
- {id: 267, cat: TV/Anime, desc: "Anime - Bleach"}
|
||||
- {id: 88, cat: TV/Anime, desc: "Anime - Cardcaptor Sakura"}
|
||||
- {id: 89, cat: TV/Anime, desc: "Anime - Chobits"}
|
||||
- {id: 142, cat: TV/Anime, desc: "Anime - Comics"}
|
||||
- {id: 962, cat: TV/Anime, desc: "Anime - Death Parade"}
|
||||
- {id: 151, cat: TV/Anime, desc: "Anime - Dragon ball"}
|
||||
- {id: 90, cat: TV/Anime, desc: "Anime - Dragonball GT"}
|
||||
- {id: 91, cat: TV/Anime, desc: "Anime - Dragonball Z"}
|
||||
- {id: 156, cat: TV/Anime, desc: "Anime - DVD-R"}
|
||||
- {id: 950, cat: TV/Anime, desc: "Anime - Fairy Tail"}
|
||||
- {id: 92, cat: TV/Anime, desc: "Anime - Flame of Recca"}
|
||||
- {id: 93, cat: TV/Anime, desc: "Anime - Full Metal Alchemist"}
|
||||
- {id: 95, cat: TV/Anime, desc: "Anime - Ghost In The Shell SAC"}
|
||||
- {id: 94, cat: TV/Anime, desc: "Anime - Gundam"}
|
||||
- {id: 620, cat: TV/Anime, desc: "Anime - Hentai"}
|
||||
- {id: 145, cat: TV/Anime, desc: "Anime - Hunter X Hunter"}
|
||||
- {id: 949, cat: TV/Anime, desc: "Anime - Inou Battle wa Nichijou-kei no Naka de"}
|
||||
- {id: 96, cat: TV/Anime, desc: "Anime - InuYasha"}
|
||||
- {id: 524, cat: TV/Anime, desc: "Anime - Kiba"}
|
||||
- {id: 97, cat: TV/Anime, desc: "Anime - Konkiki No Gash Bell"}
|
||||
- {id: 961, cat: TV/Anime, desc: "Anime - Kuroko No Basuke"}
|
||||
- {id: 98, cat: TV/Anime, desc: "Anime - Last Exile"}
|
||||
- {id: 964, cat: TV/Anime, desc: "Anime - Log Horizon"}
|
||||
- {id: 952, cat: TV/Anime, desc: "Anime - Nanatsu no Taizai"}
|
||||
- {id: 101, cat: TV/Anime, desc: "Anime - Naruto"}
|
||||
- {id: 508, cat: TV/Anime, desc: "Anime - One Piece"}
|
||||
- {id: 100, cat: TV/Anime, desc: "Anime - Onegai Twins"}
|
||||
- {id: 523, cat: TV/Anime, desc: "Anime - Ouran High School Host Club"}
|
||||
- {id: 102, cat: TV/Anime, desc: "Anime - PlanetES"}
|
||||
- {id: 146, cat: TV/Anime, desc: "Anime - Prince of Tennis"}
|
||||
- {id: 103, cat: TV/Anime, desc: "Anime - Ranma 1/2"}
|
||||
- {id: 104, cat: TV/Anime, desc: "Anime - Ruroni Kenshin"}
|
||||
- {id: 105, cat: TV/Anime, desc: "Anime - Samurai Champloo"}
|
||||
- {id: 107, cat: TV/Anime, desc: "Anime - Scrapped Princess"}
|
||||
- {id: 997, cat: TV/Anime, desc: "Anime - Spider-man"}
|
||||
- {id: 106, cat: TV/Anime, desc: "Anime - Stellvia of the Universe"}
|
||||
- {id: 525, cat: TV/Anime, desc: "Anime - Strawberry Panic"}
|
||||
- {id: 953, cat: TV/Anime, desc: "Anime - Sword Art Online II"}
|
||||
- {id: 958, cat: TV/Anime, desc: "Anime - Tokyo Ghoul"}
|
||||
|
||||
#Audio
|
||||
- {id: 5, cat: Audio, desc: "Music"}
|
||||
- {id: 54, cat: Audio, desc: "Music - Alternative"}
|
||||
- {id: 990, cat: Audio, desc: "Music - Ambient"}
|
||||
- {id: 160, cat: Audio, desc: "Music - Anime"}
|
||||
- {id: 55, cat: Audio, desc: "Music - Asian"}
|
||||
- {id: 56, cat: Audio, desc: "Music - Blues"}
|
||||
- {id: 809, cat: Audio, desc: "Music - Bollywood"}
|
||||
- {id: 57, cat: Audio, desc: "Music - Christian"}
|
||||
- {id: 58, cat: Audio, desc: "Music - Classic"}
|
||||
- {id: 515, cat: Audio, desc: "Music - Compilation/Various Artists (VA)"}
|
||||
- {id: 59, cat: Audio, desc: "Music - Country/Western"}
|
||||
- {id: 971, cat: Audio, desc: "Music - Discography"}
|
||||
- {id: 60, cat: Audio, desc: "Music - Drum N Bass"}
|
||||
- {id: 61, cat: Audio, desc: "Music - Electronic"}
|
||||
- {id: 850, cat: Audio, desc: "Music - FLAC"}
|
||||
- {id: 519, cat: Audio, desc: "Music - Folk"}
|
||||
- {id: 62, cat: Audio, desc: "Music - Game Music"}
|
||||
- {id: 233, cat: Audio, desc: "Music - Gothic"}
|
||||
- {id: 63, cat: Audio, desc: "Music - Hardcore"}
|
||||
- {id: 78, cat: Audio, desc: "Music - HardHouse/Old School Radio Mixes"}
|
||||
- {id: 512, cat: Audio, desc: "Music - Hardrock"}
|
||||
- {id: 724, cat: Audio, desc: "Music - Hardstyle"}
|
||||
- {id: 306, cat: Audio, desc: "Music - Heavy/Death Metal"}
|
||||
- {id: 64, cat: Audio, desc: "Music - Hip Hop"}
|
||||
- {id: 511, cat: Audio, desc: "Music - Indie/Britpop"}
|
||||
- {id: 65, cat: Audio, desc: "Music - Industrial"}
|
||||
- {id: 66, cat: Audio, desc: "Music - Jazz"}
|
||||
- {id: 67, cat: Audio, desc: "Music - Karaoke"}
|
||||
- {id: 521, cat: Audio, desc: "Music - Latin"}
|
||||
- {id: 68, cat: Audio, desc: "Music - Metal"}
|
||||
- {id: 526, cat: Audio, desc: "Music - Motown"}
|
||||
- {id: 79, cat: Audio, desc: "Music - Music - Other"}
|
||||
- {id: 69, cat: Audio, desc: "Music - Music Videos"}
|
||||
- {id: 522, cat: Audio, desc: "Music - Non-English"}
|
||||
- {id: 507, cat: Audio, desc: "Music - Now That's What I Call Music"}
|
||||
- {id: 70, cat: Audio, desc: "Music - Pop"}
|
||||
- {id: 852, cat: Audio, desc: "Music - Progressive"}
|
||||
- {id: 71, cat: Audio, desc: "Music - Punk"}
|
||||
- {id: 72, cat: Audio, desc: "Music - R&B"}
|
||||
- {id: 851, cat: Audio, desc: "Music - Rai"}
|
||||
- {id: 73, cat: Audio, desc: "Music - Rap"}
|
||||
- {id: 74, cat: Audio, desc: "Music - Reggae"}
|
||||
- {id: 75, cat: Audio, desc: "Music - Rock"}
|
||||
- {id: 527, cat: Audio, desc: "Music - Rock 'n' Roll"}
|
||||
- {id: 514, cat: Audio, desc: "Music - Singer Songwriter"}
|
||||
- {id: 230, cat: Audio, desc: "Music - Ska"}
|
||||
- {id: 505, cat: Audio, desc: "Music - Soul"}
|
||||
- {id: 77, cat: Audio, desc: "Music - Soundtracks"}
|
||||
- {id: 161, cat: Audio, desc: "Music - Techno"}
|
||||
- {id: 420, cat: Audio, desc: "Music - Trance/House/Dance"}
|
||||
- {id: 76, cat: Audio, desc: "Music - Unsigned/Amateur"}
|
||||
- {id: 1002, cat: Audio, desc: "Music - AAC"}
|
||||
- {id: 1003, cat: Audio, desc: "Music - Album"}
|
||||
- {id: 1004, cat: Audio, desc: "Music - Box Set"}
|
||||
- {id: 1005, cat: Audio, desc: "Music - Concerts"}
|
||||
- {id: 1006, cat: Audio, desc: "Music - Discography"}
|
||||
- {id: 1007, cat: Audio, desc: "Music - DVD"}
|
||||
- {id: 1008, cat: Audio/Lossless, desc: "Music - Lossless"}
|
||||
- {id: 1009, cat: Audio/MP3, desc: "Music - MP3"}
|
||||
- {id: 1011, cat: Audio, desc: "Music - Radio"}
|
||||
- {id: 1012, cat: Audio, desc: "Music - Single"}
|
||||
|
||||
#Movies
|
||||
- {id: 4, cat: Movies, desc: "Movies"}
|
||||
- {id: 419, cat: Movies, desc: "Movies - Action"}
|
||||
- {id: 28, cat: Movies, desc: "Movies - Adventure"}
|
||||
- {id: 29, cat: Movies, desc: "Movies - Animation"}
|
||||
- {id: 30, cat: Movies, desc: "Movies - Asian"}
|
||||
- {id: 32, cat: Movies, desc: "Movies - Automotive/Cars"}
|
||||
- {id: 628, cat: Movies, desc: "Movies - Biography"}
|
||||
- {id: 977, cat: Movies, desc: "Movies - Black and White"}
|
||||
- {id: 558, cat: Movies, desc: "Movies - Bollywood/Desi"}
|
||||
- {id: 976, cat: Movies, desc: "Movies - Classic"}
|
||||
- {id: 33, cat: Movies, desc: "Movies - Comedy"}
|
||||
- {id: 34, cat: Movies, desc: "Movies - Concerts"}
|
||||
- {id: 600, cat: Movies, desc: "Movies - Crime"}
|
||||
- {id: 35, cat: Movies, desc: "Movies - Documentary"}
|
||||
- {id: 37, cat: Movies, desc: "Movies - Drama"}
|
||||
- {id: 742, cat: Movies, desc: "Movies - Dubbed/Dual Audio"}
|
||||
- {id: 36, cat: Movies, desc: "Movies - DVD/Film Extras"}
|
||||
- {id: 149, cat: Movies, desc: "Movies - Family"}
|
||||
- {id: 38, cat: Movies, desc: "Movies - Fantasy"}
|
||||
- {id: 39, cat: Movies, desc: "Movies - Gore Flicks"}
|
||||
- {id: 602, cat: Movies, desc: "Movies - History"}
|
||||
- {id: 40, cat: Movies, desc: "Movies - Horror"}
|
||||
- {id: 41, cat: Movies, desc: "Movies - Kids"}
|
||||
- {id: 150, cat: Movies, desc: "Movies - KVCD"}
|
||||
- {id: 974, cat: Movies, desc: "Movies - Lollywood"}
|
||||
- {id: 42, cat: Movies, desc: "Movies - Martial Arts"}
|
||||
- {id: 44, cat: Movies/Other, desc: "Movies - Other"}
|
||||
- {id: 805, cat: Movies/3D, desc: "Movies - 3D"}
|
||||
- {id: 975, cat: Movies/UHD, desc: "Movies - 4K"}
|
||||
- {id: 947, cat: Movies, desc: "Movies - Musical"}
|
||||
- {id: 43, cat: Movies, desc: "Movies - Mystery"}
|
||||
- {id: 603, cat: Movies/Foreign, desc: "Movies - non English"}
|
||||
- {id: 978, cat: Movies, desc: "Movies - Rarities"}
|
||||
- {id: 45, cat: Movies, desc: "Movies - Romance"}
|
||||
- {id: 46, cat: Movies, desc: "Movies - Samples/Trailers"}
|
||||
- {id: 47, cat: Movies, desc: "Movies - Sci-Fi"}
|
||||
- {id: 48, cat: Movies, desc: "Movies - Sports related"}
|
||||
- {id: 779, cat: Movies, desc: "Movies - Stand-up comedy"}
|
||||
- {id: 49, cat: Movies, desc: "Movies - Thriller"}
|
||||
- {id: 671, cat: Movies, desc: "Movies - Travel"}
|
||||
- {id: 307, cat: Movies, desc: "Movies - War"}
|
||||
- {id: 601, cat: Movies, desc: "Movies - Western"}
|
||||
- {id: 1024, cat: Movies, desc: "Movies - HEVC/x265"}
|
||||
- {id: 1030, cat: Movies, desc: "Movies - Divx/Xvid"}
|
||||
- {id: 1031, cat: Movies, desc: "Movies - h.264/x264"}
|
||||
- {id: 1032, cat: Movies/HD, desc: "Movies - HD"}
|
||||
- {id: 1033, cat: Movies, desc: "Movies - MP4"}
|
||||
- {id: 1034, cat: Movies, desc: "Movies - SVCD/VCD"}
|
||||
- {id: 1035, cat: Movies, desc: "Movies - YIFY"}
|
||||
|
||||
#TV
|
||||
- {id: 8, cat: TV, desc: "TV"}
|
||||
- {id: 986, cat: TV, desc: "TV - 12 Monkeys"}
|
||||
- {id: 598, cat: TV, desc: "TV - 19-2"}
|
||||
- {id: 795, cat: TV, desc: "TV - 2 Broke Girls"}
|
||||
- {id: 435, cat: TV, desc: "TV - 24"}
|
||||
- {id: 169, cat: TV, desc: "TV - 30 Days"}
|
||||
- {id: 561, cat: TV, desc: "TV - 30 Rock"}
|
||||
- {id: 274, cat: TV, desc: "TV - 60 Minutes"}
|
||||
- {id: 862, cat: TV, desc: "TV - 666 Park Avenue"}
|
||||
- {id: 273, cat: TV, desc: "TV - 'Allo 'Allo!"}
|
||||
- {id: 310, cat: TV, desc: "TV - A-Team"}
|
||||
- {id: 797, cat: TV, desc: "TV - About a Boy"}
|
||||
- {id: 998, cat: TV, desc: "TV - Above Suspicion"}
|
||||
- {id: 966, cat: TV, desc: "TV - Adam - E.V.A"}
|
||||
- {id: 573, cat: TV, desc: "TV - Alaska State Troopers"}
|
||||
- {id: 821, cat: TV, desc: "TV - Alcatraz"}
|
||||
- {id: 118, cat: TV, desc: "TV - Alias"}
|
||||
- {id: 810, cat: TV, desc: "TV - Almost Human"}
|
||||
- {id: 771, cat: TV, desc: "TV - Alphas"}
|
||||
- {id: 818, cat: TV, desc: "TV - American Chopper"}
|
||||
- {id: 234, cat: TV, desc: "TV - American Dad"}
|
||||
- {id: 194, cat: TV, desc: "TV - American Horror Story"}
|
||||
- {id: 634, cat: TV, desc: "TV - American Idol"}
|
||||
- {id: 674, cat: TV, desc: "TV - Americas Got Talent"}
|
||||
- {id: 675, cat: TV, desc: "TV - Americas Next Top Model"}
|
||||
- {id: 894, cat: TV, desc: "TV - Ancient Aliens"}
|
||||
- {id: 170, cat: TV, desc: "TV - Angel"}
|
||||
- {id: 911, cat: TV, desc: "TV - Anger Management"}
|
||||
- {id: 659, cat: TV, desc: "TV - Archer"}
|
||||
- {id: 275, cat: TV, desc: "TV - Arrested Development"}
|
||||
- {id: 872, cat: TV, desc: "TV - Arrow"}
|
||||
- {id: 984, cat: TV, desc: "TV - Ash vs Evil Dead"}
|
||||
- {id: 171, cat: TV, desc: "TV - Attack Of The Show"}
|
||||
- {id: 837, cat: TV, desc: "TV - Awake"}
|
||||
- {id: 902, cat: TV, desc: "TV - Awkward"}
|
||||
- {id: 916, cat: TV, desc: "TV - Baby Daddy"}
|
||||
- {id: 165, cat: TV, desc: "TV - Babylon 5"}
|
||||
- {id: 309, cat: TV, desc: "TV - Back In The Game"}
|
||||
- {id: 460, cat: TV, desc: "TV - Band Of Brothers"}
|
||||
- {id: 329, cat: TV, desc: "TV - Banshee"}
|
||||
- {id: 891, cat: TV, desc: "TV - Bates Motel"}
|
||||
- {id: 802, cat: TV, desc: "TV - Batman The Brave and The Bold"}
|
||||
- {id: 163, cat: TV, desc: "TV - Battlestar Galactica"}
|
||||
- {id: 794, cat: TV, desc: "TV - BBC"}
|
||||
- {id: 886, cat: TV, desc: "TV - Beauty and the Beast"}
|
||||
- {id: 172, cat: TV, desc: "TV - Beauty And The Geek"}
|
||||
- {id: 782, cat: TV, desc: "TV - Beavis and Butt-Head"}
|
||||
- {id: 584, cat: TV, desc: "TV - Being Erica"}
|
||||
- {id: 669, cat: TV, desc: "TV - Being Human"}
|
||||
- {id: 683, cat: TV, desc: "TV - Believe"}
|
||||
- {id: 335, cat: TV, desc: "TV - Bellator FC"}
|
||||
- {id: 979, cat: TV, desc: "TV - Better Call Saul"}
|
||||
- {id: 173, cat: TV, desc: "TV - Big Brother"}
|
||||
- {id: 666, cat: TV, desc: "TV - Big Love"}
|
||||
- {id: 774, cat: TV, desc: "TV - Bigg Boss"}
|
||||
- {id: 989, cat: TV, desc: "TV - Billions"}
|
||||
- {id: 174, cat: TV, desc: "TV - Bitten"}
|
||||
- {id: 396, cat: TV, desc: "TV - Black Sails"}
|
||||
- {id: 981, cat: TV, desc: "TV - Blindspot"}
|
||||
- {id: 717, cat: TV, desc: "TV - Blue Bloods"}
|
||||
- {id: 754, cat: TV, desc: "TV - Boardwalk Empire"}
|
||||
- {id: 709, cat: TV, desc: "TV - Bobs Burgers"}
|
||||
- {id: 767, cat: TV, desc: "TV - Body of Proof"}
|
||||
- {id: 175, cat: TV, desc: "TV - Bold and the beautiful"}
|
||||
- {id: 969, cat: TV, desc: "TV - Bollywood TV Shows"}
|
||||
- {id: 269, cat: TV, desc: "TV - Bones"}
|
||||
- {id: 235, cat: TV, desc: "TV - Boston Legal"}
|
||||
- {id: 676, cat: TV, desc: "TV - Breaking Bad"}
|
||||
- {id: 707, cat: TV, desc: "TV - Breakout Kings"}
|
||||
- {id: 409, cat: TV, desc: "TV - Brickleberry"}
|
||||
- {id: 680, cat: TV, desc: "TV - Brooklyn Nine-Nine"}
|
||||
- {id: 560, cat: TV, desc: "TV - Brothers And Sisters"}
|
||||
- {id: 147, cat: TV, desc: "TV - Buffy"}
|
||||
- {id: 677, cat: TV, desc: "TV - Burn Notice"}
|
||||
- {id: 619, cat: TV, desc: "TV - Californication"}
|
||||
- {id: 883, cat: TV, desc: "TV - Call of the Wildman"}
|
||||
- {id: 719, cat: TV, desc: "TV - Camelot"}
|
||||
- {id: 921, cat: TV, desc: "TV - Camp"}
|
||||
- {id: 661, cat: TV, desc: "TV - Caprica"}
|
||||
- {id: 928, cat: TV, desc: "TV - Capture"}
|
||||
- {id: 128, cat: TV, desc: "TV - Carnivale"}
|
||||
- {id: 736, cat: TV, desc: "TV - Cartoon"}
|
||||
- {id: 658, cat: TV, desc: "TV - Castle"}
|
||||
- {id: 941, cat: TV, desc: "TV - Cedar Cove"}
|
||||
- {id: 846, cat: TV, desc: "TV - Celebrity Juice"}
|
||||
- {id: 141, cat: TV, desc: "TV - Charmed"}
|
||||
- {id: 900, cat: TV, desc: "TV - Chicago Fire"}
|
||||
- {id: 324, cat: TV, desc: "TV - Chicago PD"}
|
||||
- {id: 315, cat: TV, desc: "TV - Chopped"}
|
||||
- {id: 184, cat: TV, desc: "TV - Chozen"}
|
||||
- {id: 657, cat: TV, desc: "TV - Chuck"}
|
||||
- {id: 133, cat: TV, desc: "TV - Cold Case"}
|
||||
- {id: 629, cat: TV, desc: "TV - Community"}
|
||||
- {id: 178, cat: TV, desc: "TV - Conan O'Brien"}
|
||||
- {id: 946, cat: TV, desc: "TV - Constantine"}
|
||||
- {id: 879, cat: TV, desc: "TV - Continuum"}
|
||||
- {id: 861, cat: TV, desc: "TV - Copper"}
|
||||
- {id: 322, cat: TV, desc: "TV - Cops"}
|
||||
- {id: 186, cat: TV, desc: "TV - Cosmos A Space Time Odyssey"}
|
||||
- {id: 670, cat: TV, desc: "TV - Cougar Town"}
|
||||
- {id: 729, cat: TV, desc: "TV - Covert Affairs"}
|
||||
- {id: 651, cat: TV, desc: "TV - Craig Ferguson"}
|
||||
- {id: 280, cat: TV, desc: "TV - Criminal Minds"}
|
||||
- {id: 788, cat: TV, desc: "TV - Crisis"}
|
||||
- {id: 279, cat: TV, desc: "TV - Criss Angel BeLIEve"}
|
||||
- {id: 323, cat: TV, desc: "TV - Crossing Jordan"}
|
||||
- {id: 926, cat: TV, desc: "TV - Crossing Lines"}
|
||||
- {id: 108, cat: TV, desc: "TV - CSI"}
|
||||
- {id: 325, cat: TV, desc: "TV - Curb Your Enthusiasm"}
|
||||
- {id: 882, cat: TV, desc: "TV - Da Vincis Demons"}
|
||||
- {id: 282, cat: TV, desc: "TV - Dallas"}
|
||||
- {id: 678, cat: TV, desc: "TV - Damages"}
|
||||
- {id: 798, cat: TV, desc: "TV - Dancing with the Stars US"}
|
||||
- {id: 652, cat: TV, desc: "TV - David Letterman"}
|
||||
- {id: 994, cat: TV, desc: "TV - Days of Our Lives"}
|
||||
- {id: 985, cat: TV, desc: "TV - DCs Legends of Tomorrow"}
|
||||
- {id: 181, cat: TV, desc: "TV - Dead Like Me"}
|
||||
- {id: 679, cat: TV, desc: "TV - Deadliest Catch"}
|
||||
- {id: 182, cat: TV, desc: "TV - Deadwood"}
|
||||
- {id: 890, cat: TV, desc: "TV - Defiance"}
|
||||
- {id: 281, cat: TV, desc: "TV - Democracy Now!"}
|
||||
- {id: 183, cat: TV, desc: "TV - Desperate Housewives"}
|
||||
- {id: 939, cat: TV, desc: "TV - Devious Maids"}
|
||||
- {id: 585, cat: TV, desc: "TV - Dexter"}
|
||||
- {id: 644, cat: TV, desc: "TV - Dirty Jobs"}
|
||||
- {id: 122, cat: TV, desc: "TV - Discovery Channel"}
|
||||
- {id: 167, cat: TV, desc: "TV - Doctor Who"}
|
||||
- {id: 968, cat: TV, desc: "TV - Documentary"}
|
||||
- {id: 606, cat: TV, desc: "TV - Dollhouse"}
|
||||
- {id: 839, cat: TV, desc: "TV - Dont Trust the Bitch in Apartment"}
|
||||
- {id: 326, cat: TV, desc: "TV - Dr Who"}
|
||||
- {id: 925, cat: TV, desc: "TV - Dracula"}
|
||||
- {id: 328, cat: TV, desc: "TV - Drawn Together"}
|
||||
- {id: 732, cat: TV, desc: "TV - Drop Dead"}
|
||||
- {id: 820, cat: TV, desc: "TV - Eastbound and Down"}
|
||||
- {id: 875, cat: TV, desc: "TV - Elementary"}
|
||||
- {id: 283, cat: TV, desc: "TV - Ellen DeGeneres"}
|
||||
- {id: 330, cat: TV, desc: "TV - Enlisted"}
|
||||
- {id: 187, cat: TV, desc: "TV - Entourage"}
|
||||
- {id: 270, cat: TV, desc: "TV - ER"}
|
||||
- {id: 765, cat: TV, desc: "TV - Eureka"}
|
||||
- {id: 238, cat: TV, desc: "TV - Everybody Loves Raymond"}
|
||||
- {id: 571, cat: TV, desc: "TV - Extant"}
|
||||
- {id: 840, cat: TV, desc: "TV - Fact or Faked Paranormal Files"}
|
||||
- {id: 828, cat: TV, desc: "TV - Fairly Legeal"}
|
||||
- {id: 876, cat: TV, desc: "TV - Faking It"}
|
||||
- {id: 917, cat: TV, desc: "TV - Falling Skies"}
|
||||
- {id: 188, cat: TV, desc: "TV - Family Guy"}
|
||||
- {id: 855, cat: TV, desc: "TV - Family Tools"}
|
||||
- {id: 411, cat: TV, desc: "TV - Fargo"}
|
||||
- {id: 331, cat: TV, desc: "TV - Farscape"}
|
||||
- {id: 983, cat: TV, desc: "TV - Fear the Walking Dead"}
|
||||
- {id: 332, cat: TV, desc: "TV - Fifth Gear"}
|
||||
- {id: 672, cat: TV, desc: "TV - Flashforward"}
|
||||
- {id: 753, cat: TV, desc: "TV - Flashpoint"}
|
||||
- {id: 831, cat: TV, desc: "TV - Foreign Series/Non English"}
|
||||
- {id: 266, cat: TV, desc: "TV - Forever"}
|
||||
- {id: 922, cat: TV, desc: "TV - Franklin and Bash"}
|
||||
- {id: 140, cat: TV, desc: "TV - Friends"}
|
||||
- {id: 612, cat: TV, desc: "TV - Fringe"}
|
||||
- {id: 277, cat: TV, desc: "TV - From Dusk Till Dawn"}
|
||||
- {id: 681, cat: TV, desc: "TV - Futurama"}
|
||||
- {id: 728, cat: TV, desc: "TV - Game of Thrones"}
|
||||
- {id: 334, cat: TV, desc: "TV - Gang Related"}
|
||||
- {id: 996, cat: TV, desc: "TV - General Hospital"}
|
||||
- {id: 954, cat: TV, desc: "TV - Geordie Shore"}
|
||||
- {id: 574, cat: TV, desc: "TV - Ghost Adventures"}
|
||||
- {id: 704, cat: TV, desc: "TV - Ghost Hunters"}
|
||||
- {id: 642, cat: TV, desc: "TV - Ghost Mine"}
|
||||
- {id: 338, cat: TV, desc: "TV - Ghost Whisperer"}
|
||||
- {id: 284, cat: TV, desc: "TV - Gilmore Girls"}
|
||||
- {id: 682, cat: TV, desc: "TV - Glee"}
|
||||
- {id: 865, cat: TV, desc: "TV - Go On"}
|
||||
- {id: 276, cat: TV, desc: "TV - Gold Rush"}
|
||||
- {id: 339, cat: TV, desc: "TV - Good Eats"}
|
||||
- {id: 599, cat: TV, desc: "TV - Gossip Girl"}
|
||||
- {id: 580, cat: TV, desc: "TV - Gotham"}
|
||||
- {id: 919, cat: TV, desc: "TV - Graceland"}
|
||||
- {id: 955, cat: TV, desc: "TV - Gracepoint"}
|
||||
- {id: 285, cat: TV, desc: "TV - Greys Anatomy"}
|
||||
- {id: 819, cat: TV, desc: "TV - Grimm"}
|
||||
- {id: 237, cat: TV, desc: "TV - Growing Up Fisher"}
|
||||
- {id: 340, cat: TV, desc: "TV - Guiding Light"}
|
||||
- {id: 866, cat: TV, desc: "TV - Guys With Kids"}
|
||||
- {id: 880, cat: TV, desc: "TV - Hannibal"}
|
||||
- {id: 813, cat: TV, desc: "TV - Happily Divorced"}
|
||||
- {id: 769, cat: TV, desc: "TV - Happy Endings"}
|
||||
- {id: 190, cat: TV, desc: "TV - Harald Schmidt"}
|
||||
- {id: 713, cat: TV, desc: "TV - Harrys Law"}
|
||||
- {id: 832, cat: TV, desc: "TV - Hart of Dixie"}
|
||||
- {id: 341, cat: TV, desc: "TV - Haunted"}
|
||||
- {id: 773, cat: TV, desc: "TV - Haven"}
|
||||
- {id: 712, cat: TV, desc: "TV - Hawaii Five-0"}
|
||||
- {id: 781, cat: TV, desc: "TV - Helix"}
|
||||
- {id: 853, cat: TV, desc: "TV - Hell on Wheels"}
|
||||
- {id: 191, cat: TV, desc: "TV - Hells Kitchen"}
|
||||
- {id: 884, cat: TV, desc: "TV - Hemlock Grove"}
|
||||
- {id: 342, cat: TV, desc: "TV - Hercules"}
|
||||
- {id: 556, cat: TV, desc: "TV - Heroes"}
|
||||
- {id: 343, cat: TV, desc: "TV - Hex"}
|
||||
- {id: 192, cat: TV, desc: "TV - Hogans Heroes"}
|
||||
- {id: 588, cat: TV, desc: "TV - Hollands Hoop"}
|
||||
- {id: 755, cat: TV, desc: "TV - Homeland"}
|
||||
- {id: 812, cat: TV, desc: "TV - Hostages"}
|
||||
- {id: 684, cat: TV, desc: "TV - Hot in Cleveland"}
|
||||
- {id: 286, cat: TV, desc: "TV - House"}
|
||||
- {id: 913, cat: TV, desc: "TV - House Of Cards"}
|
||||
- {id: 287, cat: TV, desc: "TV - How I Met Your Mother"}
|
||||
- {id: 568, cat: TV, desc: "TV - How Its Made"}
|
||||
- {id: 893, cat: TV, desc: "TV - How to Live with Your Parents"}
|
||||
- {id: 288, cat: TV, desc: "TV - Howard Stern"}
|
||||
- {id: 132, cat: TV, desc: "TV - Huff"}
|
||||
- {id: 345, cat: TV, desc: "TV - Humor Amarillo"}
|
||||
- {id: 756, cat: TV, desc: "TV - Hung"}
|
||||
- {id: 637, cat: TV, desc: "TV - Hustle"}
|
||||
- {id: 346, cat: TV, desc: "TV - In Justice"}
|
||||
- {id: 685, cat: TV, desc: "TV - In Plain Sight"}
|
||||
- {id: 582, cat: TV, desc: "TV - Ink Master"}
|
||||
- {id: 347, cat: TV, desc: "TV - Inked"}
|
||||
- {id: 965, cat: TV, desc: "TV - Inside MMA"}
|
||||
- {id: 873, cat: TV, desc: "TV - Intelligence US"}
|
||||
- {id: 240, cat: TV, desc: "TV - Into the West"}
|
||||
- {id: 166, cat: TV, desc: "TV - Iron Chef"}
|
||||
- {id: 289, cat: TV, desc: "TV - Invasion"}
|
||||
- {id: 817, cat: TV, desc: "TV - Ironside"}
|
||||
- {id: 772, cat: TV, desc: "TV - Its Always Sunny in Philadelphia"}
|
||||
- {id: 988, cat: TV, desc: "TV - iZombie"}
|
||||
- {id: 991, cat: TV, desc: "TV - Jane the Virgin"}
|
||||
- {id: 290, cat: TV, desc: "TV - Jay Leno"}
|
||||
- {id: 763, cat: TV, desc: "TV - Jersey Shore"}
|
||||
- {id: 177, cat: TV, desc: "TV - Joe Rogan Questions Everything"}
|
||||
- {id: 110, cat: TV, desc: "TV - Joey"}
|
||||
- {id: 196, cat: TV, desc: "TV - Justice League Unlimited"}
|
||||
- {id: 686, cat: TV, desc: "TV - Justified"}
|
||||
- {id: 412, cat: TV, desc: "TV - kabachitare!"}
|
||||
- {id: 738, cat: TV, desc: "TV - Killer Contact"}
|
||||
- {id: 349, cat: TV, desc: "TV - Killer Instinct"}
|
||||
- {id: 197, cat: TV, desc: "TV - Kim Possible"}
|
||||
- {id: 741, cat: TV, desc: "TV - King"}
|
||||
- {id: 933, cat: TV, desc: "TV - King and Maxwel"}
|
||||
- {id: 350, cat: TV, desc: "TV - King Of The Hill"}
|
||||
- {id: 351, cat: TV, desc: "TV - Kitchen Confidential"}
|
||||
- {id: 790, cat: TV, desc: "TV - Kitchen Nightmares US"}
|
||||
- {id: 348, cat: TV, desc: "TV - Kolchak The Night Stalker"}
|
||||
- {id: 241, cat: TV, desc: "TV - Koot en Bie"}
|
||||
- {id: 198, cat: TV, desc: "TV - Kung Fu"}
|
||||
- {id: 199, cat: TV, desc: "TV - La Femme Nikita"}
|
||||
- {id: 570, cat: TV, desc: "TV - LA Ink"}
|
||||
- {id: 242, cat: TV, desc: "TV - Laguna Beach"}
|
||||
- {id: 130, cat: TV, desc: "TV - Las Vegas"}
|
||||
- {id: 843, cat: TV, desc: "TV - Last Man Standing"}
|
||||
- {id: 867, cat: TV, desc: "TV - Last Resort"}
|
||||
- {id: 200, cat: TV, desc: "TV - Late Night with Conan O'Brien"}
|
||||
- {id: 115, cat: TV, desc: "TV - Law And Order"}
|
||||
- {id: 591, cat: TV, desc: "TV - Law and Order UK"}
|
||||
- {id: 243, cat: TV, desc: "TV - Le Cameleon"}
|
||||
- {id: 578, cat: TV, desc: "TV - Legend of the Seeker"}
|
||||
- {id: 590, cat: TV, desc: "TV - Legends"}
|
||||
- {id: 898, cat: TV, desc: "TV - Legit"}
|
||||
- {id: 638, cat: TV, desc: "TV - Level3"}
|
||||
- {id: 656, cat: TV, desc: "TV - Leverage"}
|
||||
- {id: 618, cat: TV, desc: "TV - Lie To Me"}
|
||||
- {id: 650, cat: TV, desc: "TV - Life"}
|
||||
- {id: 353, cat: TV, desc: "TV - Life on Mars"}
|
||||
- {id: 716, cat: TV, desc: "TV - Lights Out"}
|
||||
- {id: 244, cat: TV, desc: "TV - Line Of Fire"}
|
||||
- {id: 504, cat: TV, desc: "TV - Little Britain"}
|
||||
- {id: 665, cat: TV, desc: "TV - Little Mosque on the Prairie"}
|
||||
- {id: 148, cat: TV, desc: "TV - Long Island Medium"}
|
||||
- {id: 914, cat: TV, desc: "TV - Longmire"}
|
||||
- {id: 354, cat: TV, desc: "TV - Los Serrano"}
|
||||
- {id: 111, cat: TV, desc: "TV - Lost"}
|
||||
- {id: 314, cat: TV, desc: "TV - Lost Girl"}
|
||||
- {id: 858, cat: TV, desc: "TV - Louie"}
|
||||
- {id: 726, cat: TV, desc: "TV - Love Bites"}
|
||||
- {id: 937, cat: TV, desc: "TV - Low Winter Sun"}
|
||||
- {id: 956, cat: TV, desc: "TV - Lucha Underground"}
|
||||
- {id: 980, cat: TV, desc: "TV - Lucifer"}
|
||||
- {id: 503, cat: TV, desc: "TV - Lucky Louie"}
|
||||
- {id: 687, cat: TV, desc: "TV - Luther"}
|
||||
- {id: 157, cat: TV, desc: "TV - MacGyver"}
|
||||
- {id: 705, cat: TV, desc: "TV - Mad Love"}
|
||||
- {id: 826, cat: TV, desc: "TV - Mad Men"}
|
||||
- {id: 869, cat: TV, desc: "TV - Made in Jersey"}
|
||||
- {id: 355, cat: TV, desc: "TV - MADtv"}
|
||||
- {id: 871, cat: TV, desc: "TV - Major Crimes"}
|
||||
- {id: 667, cat: TV, desc: "TV - Make It or Break It"}
|
||||
- {id: 357, cat: TV, desc: "TV - Malcolm In The Middle"}
|
||||
- {id: 662, cat: TV, desc: "TV - Man vs Wild"}
|
||||
- {id: 759, cat: TV, desc: "TV - Marvels Agents of S.H.I.E.L.D"}
|
||||
- {id: 910, cat: TV, desc: "TV - MasterChef US"}
|
||||
- {id: 358, cat: TV, desc: "TV - Masters Of Horror"}
|
||||
- {id: 824, cat: TV, desc: "TV - Masters of Sex"}
|
||||
- {id: 291, cat: TV, desc: "TV - Medium"}
|
||||
- {id: 617, cat: TV, desc: "TV - Melrose Place"}
|
||||
- {id: 688, cat: TV, desc: "TV - Memphis Beat"}
|
||||
- {id: 905, cat: TV, desc: "TV - Men at Work"}
|
||||
- {id: 645, cat: TV, desc: "TV - Men of a Certain Age"}
|
||||
- {id: 633, cat: TV, desc: "TV - Mercy"}
|
||||
- {id: 579, cat: TV, desc: "TV - Merlin"}
|
||||
- {id: 359, cat: TV, desc: "TV - Miami Ink"}
|
||||
- {id: 825, cat: TV, desc: "TV - Midsomer Murders"}
|
||||
- {id: 783, cat: TV, desc: "TV - Mike and Molly"}
|
||||
- {id: 823, cat: TV, desc: "TV - Mind Games"}
|
||||
- {id: 246, cat: TV, desc: "TV - Mind of Mencia"}
|
||||
- {id: 313, cat: TV, desc: "TV - Misfits"}
|
||||
- {id: 842, cat: TV, desc: "TV - Missing"}
|
||||
- {id: 647, cat: TV, desc: "TV - Mistresses US"}
|
||||
- {id: 179, cat: TV, desc: "TV - Mixology"}
|
||||
- {id: 632, cat: TV, desc: "TV - Modern Family"}
|
||||
- {id: 245, cat: TV, desc: "TV - Modern Marvels"}
|
||||
- {id: 398, cat: TV, desc: "TV - Mom"}
|
||||
- {id: 201, cat: TV, desc: "TV - Monk"}
|
||||
- {id: 361, cat: TV, desc: "TV - Monty Pythons Flying Circus"}
|
||||
- {id: 907, cat: TV, desc: "TV - Motive"}
|
||||
- {id: 247, cat: TV, desc: "TV - Mr Bean"}
|
||||
- {id: 992, cat: TV, desc: "TV - Mr. Robot"}
|
||||
- {id: 356, cat: TV, desc: "TV - MST3K"}
|
||||
- {id: 292, cat: TV, desc: "TV - My Favorite Martian"}
|
||||
- {id: 792, cat: TV, desc: "TV - My Ghost Story"}
|
||||
- {id: 999, cat: TV, desc: "TV - My Little Pony - Friendship is Magic"}
|
||||
- {id: 362, cat: TV, desc: "TV - My Name Is Earl"}
|
||||
- {id: 202, cat: TV, desc: "TV - My Restaurant Rules"}
|
||||
- {id: 193, cat: TV, desc: "TV - Mythbusters"}
|
||||
- {id: 940, cat: TV, desc: "TV - Naked And Afraid"}
|
||||
- {id: 203, cat: TV, desc: "TV - NASA 50 Years Of Space Exploration"}
|
||||
- {id: 899, cat: TV, desc: "TV - Nashville"}
|
||||
- {id: 636, cat: TV, desc: "TV - National Geographic"}
|
||||
- {id: 120, cat: TV, desc: "TV - NCIS"}
|
||||
- {id: 920, cat: TV, desc: "TV - Necessary Roughness"}
|
||||
- {id: 841, cat: TV, desc: "TV - New Girl"}
|
||||
- {id: 957, cat: TV, desc: "TV - New Japan Pro Wrestling"}
|
||||
- {id: 311, cat: TV, desc: "TV - NewGamePlus"}
|
||||
- {id: 363, cat: TV, desc: "TV - Night Stalker"}
|
||||
- {id: 722, cat: TV, desc: "TV - Nikita"}
|
||||
- {id: 293, cat: TV, desc: "TV - Nip Tuck"}
|
||||
- {id: 710, cat: TV, desc: "TV - No Ordinary Family"}
|
||||
- {id: 294, cat: TV, desc: "TV - Numb3rs"}
|
||||
- {id: 689, cat: TV, desc: "TV - Nurse Jackie"}
|
||||
- {id: 703, cat: TV, desc: "TV - Off the Map"}
|
||||
- {id: 833, cat: TV, desc: "TV - Once Upon a Time Once"}
|
||||
- {id: 364, cat: TV, desc: "TV - One Tree Hill"}
|
||||
- {id: 424, cat: TV, desc: "TV - Only Fools And Horses"}
|
||||
- {id: 935, cat: TV, desc: "TV - Orange Is The New Black"}
|
||||
- {id: 881, cat: TV, desc: "TV - Orphan Black"}
|
||||
- {id: 113, cat: TV, desc: "TV - Other"}
|
||||
- {id: 365, cat: TV, desc: "TV - Out of Practice S01E"}
|
||||
- {id: 248, cat: TV, desc: "TV - Outer Limits"}
|
||||
- {id: 646, cat: TV, desc: "TV - Outer Space Astronauts"}
|
||||
- {id: 336, cat: TV, desc: "TV - Outlander"}
|
||||
- {id: 723, cat: TV, desc: "TV - Outsourced"}
|
||||
- {id: 249, cat: TV, desc: "TV - Over There"}
|
||||
- {id: 757, cat: TV, desc: "TV - Pan Am"}
|
||||
- {id: 640, cat: TV, desc: "TV - Paradox"}
|
||||
- {id: 778, cat: TV, desc: "TV - Parenthood"}
|
||||
- {id: 613, cat: TV, desc: "TV - Parks and Recreation"}
|
||||
- {id: 250, cat: TV, desc: "TV - Passions"}
|
||||
- {id: 414, cat: TV, desc: "TV - PBS NOW"}
|
||||
- {id: 690, cat: TV, desc: "TV - Penn and Teller Bullshit"}
|
||||
- {id: 945, cat: TV, desc: "TV - Penny Dreadful"}
|
||||
- {id: 927, cat: TV, desc: "TV - Perception"}
|
||||
- {id: 785, cat: TV, desc: "TV - Person of Interest"}
|
||||
- {id: 366, cat: TV, desc: "TV - Phil of the Future"}
|
||||
- {id: 204, cat: TV, desc: "TV - Pimp My Ride"}
|
||||
- {id: 967, cat: TV, desc: "TV - Player Attack"}
|
||||
- {id: 427, cat: TV, desc: "TV - Poker"}
|
||||
- {id: 691, cat: TV, desc: "TV - Pretty Little Liars"}
|
||||
- {id: 784, cat: TV, desc: "TV - Prime Suspect US"}
|
||||
- {id: 734, cat: TV, desc: "TV - Primeval"}
|
||||
- {id: 229, cat: TV, desc: "TV - Prison Break"}
|
||||
- {id: 692, cat: TV, desc: "TV - Private Practice"}
|
||||
- {id: 368, cat: TV, desc: "TV - Project Runway"}
|
||||
- {id: 663, cat: TV, desc: "TV - Psych"}
|
||||
- {id: 205, cat: TV, desc: "TV - Punkd"}
|
||||
- {id: 803, cat: TV, desc: "TV - QI"}
|
||||
- {id: 982, cat: TV, desc: "TV - Quantico"}
|
||||
- {id: 251, cat: TV, desc: "TV - Quantum Leap"}
|
||||
- {id: 993, cat: TV, desc: "TV - Queen of the South"}
|
||||
- {id: 252, cat: TV, desc: "TV - Queer as Folk"}
|
||||
- {id: 714, cat: TV, desc: "TV - Raising Hope"}
|
||||
- {id: 317, cat: TV, desc: "TV - Ravenswood"}
|
||||
- {id: 936, cat: TV, desc: "TV - Ray Donovan"}
|
||||
- {id: 594, cat: TV, desc: "TV - Ray Mears Northern Wilderness"}
|
||||
- {id: 822, cat: TV, desc: "TV - Real Time with Bill Maher"}
|
||||
- {id: 369, cat: TV, desc: "TV - Reba"}
|
||||
- {id: 885, cat: TV, desc: "TV - Rectify"}
|
||||
- {id: 206, cat: TV, desc: "TV - Red Dwarf"}
|
||||
- {id: 906, cat: TV, desc: "TV - Red Widow"}
|
||||
- {id: 117, cat: TV, desc: "TV - ReGenesis"}
|
||||
- {id: 854, cat: TV, desc: "TV - Reign"}
|
||||
- {id: 370, cat: TV, desc: "TV - Related"}
|
||||
- {id: 327, cat: TV, desc: "TV - Remedy"}
|
||||
- {id: 253, cat: TV, desc: "TV - Remington Steele"}
|
||||
- {id: 254, cat: TV, desc: "TV - Reno 911"}
|
||||
- {id: 207, cat: TV, desc: "TV - Rescue Me"}
|
||||
- {id: 576, cat: TV, desc: "TV - Resurrection"}
|
||||
- {id: 295, cat: TV, desc: "TV - Reunion"}
|
||||
- {id: 208, cat: TV, desc: "TV - Revelations"}
|
||||
- {id: 760, cat: TV, desc: "TV - Revenge"}
|
||||
- {id: 859, cat: TV, desc: "TV - Revolution"}
|
||||
- {id: 312, cat: TV, desc: "TV - Rewind"}
|
||||
- {id: 768, cat: TV, desc: "TV - Ringer"}
|
||||
- {id: 604, cat: TV, desc: "TV - Rip Off Britain"}
|
||||
- {id: 693, cat: TV, desc: "TV - River Monsters"}
|
||||
- {id: 929, cat: TV, desc: "TV - Rizzoli and Isles"}
|
||||
- {id: 209, cat: TV, desc: "TV - Robot Chicken"}
|
||||
- {id: 888, cat: TV, desc: "TV - Rogue"}
|
||||
- {id: 944, cat: TV, desc: "TV - ROH-Wrestling"}
|
||||
- {id: 255, cat: TV, desc: "TV - Rome"}
|
||||
- {id: 849, cat: TV, desc: "TV - Rookie Blue"}
|
||||
- {id: 694, cat: TV, desc: "TV - Royal Pains"}
|
||||
- {id: 695, cat: TV, desc: "TV - Rubicon"}
|
||||
- {id: 807, cat: TV, desc: "TV - Rules of Engagement"}
|
||||
- {id: 372, cat: TV, desc: "TV - Ruri no Shima"}
|
||||
- {id: 892, cat: TV, desc: "TV - Rush"}
|
||||
- {id: 555, cat: TV, desc: "TV - Russian TV programs"}
|
||||
- {id: 789, cat: TV, desc: "TV - Salem"}
|
||||
- {id: 605, cat: TV, desc: "TV - Sanctuary"}
|
||||
- {id: 776, cat: TV, desc: "TV - Satisfaction US"}
|
||||
- {id: 373, cat: TV, desc: "TV - Saturday Night Live"}
|
||||
- {id: 915, cat: TV, desc: "TV - Save Me"}
|
||||
- {id: 696, cat: TV, desc: "TV - Saving Grace"}
|
||||
- {id: 931, cat: TV, desc: "TV - Saving Hope"}
|
||||
- {id: 844, cat: TV, desc: "TV - Scandal"}
|
||||
- {id: 344, cat: TV, desc: "TV - Scorpion"}
|
||||
- {id: 987, cat: TV, desc: "TV - Scream"}
|
||||
- {id: 138, cat: TV, desc: "TV - Scrubs"}
|
||||
- {id: 304, cat: TV, desc: "TV - Sean Saves The World"}
|
||||
- {id: 715, cat: TV, desc: "TV - Secret Diary Of A Call Girl"}
|
||||
- {id: 210, cat: TV, desc: "TV - Seinfeld"}
|
||||
- {id: 296, cat: TV, desc: "TV - Sex and The City"}
|
||||
- {id: 708, cat: TV, desc: "TV - Shameless"}
|
||||
- {id: 375, cat: TV, desc: "TV - Sin Rastro"}
|
||||
- {id: 737, cat: TV, desc: "TV - Single Ladies"}
|
||||
- {id: 211, cat: TV, desc: "TV - Six Feet Under"}
|
||||
- {id: 697, cat: TV, desc: "TV - Skins"}
|
||||
- {id: 376, cat: TV, desc: "TV - Sleeper Cell"}
|
||||
- {id: 112, cat: TV, desc: "TV - Sleepy Hollow"}
|
||||
- {id: 256, cat: TV, desc: "TV - Sliders"}
|
||||
- {id: 137, cat: TV, desc: "TV - Smallville"}
|
||||
- {id: 830, cat: TV, desc: "TV - Smash"}
|
||||
- {id: 649, cat: TV, desc: "TV - So You Think You Can Dance"}
|
||||
- {id: 569, cat: TV, desc: "TV - Sons of Anarchy"}
|
||||
- {id: 815, cat: TV, desc: "TV - Sons of Guns"}
|
||||
- {id: 212, cat: TV, desc: "TV - South Park"}
|
||||
- {id: 718, cat: TV, desc: "TV - Southland"}
|
||||
- {id: 257, cat: TV, desc: "TV - Space 1999"}
|
||||
- {id: 297, cat: TV, desc: "TV - Space Above and Beyond"}
|
||||
- {id: 631, cat: TV, desc: "TV - Spartacus"}
|
||||
- {id: 845, cat: TV, desc: "TV - Spike TV"}
|
||||
- {id: 607, cat: TV, desc: "TV - Spooks"}
|
||||
- {id: 131, cat: TV, desc: "TV - Sports Illustrated"}
|
||||
- {id: 159, cat: TV, desc: "TV - Sports related"}
|
||||
- {id: 378, cat: TV, desc: "TV - Stacked"}
|
||||
- {id: 379, cat: TV, desc: "TV - Star Trek"}
|
||||
- {id: 563, cat: TV, desc: "TV - Star Wars The Clone Wars"}
|
||||
- {id: 615, cat: TV, desc: "TV - Star-Crossed"}
|
||||
- {id: 139, cat: TV, desc: "TV - Star-Trek Enterprise"}
|
||||
- {id: 144, cat: TV, desc: "TV - Star-Trek The Next Generation"}
|
||||
- {id: 380, cat: TV, desc: "TV - Stargate"}
|
||||
- {id: 123, cat: TV, desc: "TV - Stargate Atlantis"}
|
||||
- {id: 124, cat: TV, desc: "TV - StarGate SG1"}
|
||||
- {id: 562, cat: TV, desc: "TV - Stargate Universe"}
|
||||
- {id: 258, cat: TV, desc: "TV - Starved"}
|
||||
- {id: 213, cat: TV, desc: "TV - Stella"}
|
||||
- {id: 614, cat: TV, desc: "TV - Steven Seagal Lawman"}
|
||||
- {id: 381, cat: TV, desc: "TV - Still Standing"}
|
||||
- {id: 857, cat: TV, desc: "TV - Strike Back"}
|
||||
- {id: 528, cat: TV, desc: "TV - Studio 60 on the Sunset Strip"}
|
||||
- {id: 838, cat: TV, desc: "TV - Suburgatory"}
|
||||
- {id: 761, cat: TV, desc: "TV - Suits"}
|
||||
- {id: 214, cat: TV, desc: "TV - Summerland"}
|
||||
- {id: 400, cat: TV, desc: "TV - Super Fun Night"}
|
||||
- {id: 298, cat: TV, desc: "TV - Supernatural"}
|
||||
- {id: 299, cat: TV, desc: "TV - Surface"}
|
||||
- {id: 382, cat: TV, desc: "TV - Survivor"}
|
||||
- {id: 215, cat: TV, desc: "TV - Survivors"}
|
||||
- {id: 847, cat: TV, desc: "TV - Swamp People"}
|
||||
- {id: 863, cat: TV, desc: "TV - Switched at Birth"}
|
||||
- {id: 153, cat: TV, desc: "TV - Tattoo Nightmares"}
|
||||
- {id: 217, cat: TV, desc: "TV - Teen Titans"}
|
||||
- {id: 731, cat: TV, desc: "TV - Teen Wolf"}
|
||||
- {id: 764, cat: TV, desc: "TV - Terra Nova"}
|
||||
- {id: 119, cat: TV, desc: "TV - That 70s Show"}
|
||||
- {id: 316, cat: TV, desc: "TV - The 100"}
|
||||
- {id: 168, cat: TV, desc: "TV - The 4400"}
|
||||
- {id: 300, cat: TV, desc: "TV - The Adventures of Sherlock Holmes"}
|
||||
- {id: 185, cat: TV, desc: "TV - The After"}
|
||||
- {id: 383, cat: TV, desc: "TV - The Amazing Race"}
|
||||
- {id: 887, cat: TV, desc: "TV - The Americans"}
|
||||
- {id: 301, cat: TV, desc: "TV - The Apprentice"}
|
||||
- {id: 384, cat: TV, desc: "TV - The Bernie Mac Show"}
|
||||
- {id: 583, cat: TV, desc: "TV - The Big Bang Theory"}
|
||||
- {id: 829, cat: TV, desc: "TV - The Big C"}
|
||||
- {id: 572, cat: TV, desc: "TV - The Biggest Loser"}
|
||||
- {id: 581, cat: TV, desc: "TV - The Blacklist"}
|
||||
- {id: 410, cat: TV, desc: "TV - The Boondocks"}
|
||||
- {id: 608, cat: TV, desc: "TV - The Border"}
|
||||
- {id: 775, cat: TV, desc: "TV - The Borgias"}
|
||||
- {id: 923, cat: TV, desc: "TV - The Bridge US"}
|
||||
- {id: 711, cat: TV, desc: "TV - The Cape"}
|
||||
- {id: 730, cat: TV, desc: "TV - The Carrie Diaries"}
|
||||
- {id: 586, cat: TV, desc: "TV - The Cleveland Show"}
|
||||
- {id: 896, cat: TV, desc: "TV - The Client List"}
|
||||
- {id: 218, cat: TV, desc: "TV - The Closer"}
|
||||
- {id: 272, cat: TV, desc: "TV - The Colbert Report"}
|
||||
- {id: 219, cat: TV, desc: "TV - The Comeback"}
|
||||
- {id: 510, cat: TV, desc: "TV - The Contender"}
|
||||
- {id: 758, cat: TV, desc: "TV - The Crazy Ones"}
|
||||
- {id: 114, cat: TV, desc: "TV - The Daily Show"}
|
||||
- {id: 856, cat: TV, desc: "TV - The Dead Files"}
|
||||
- {id: 220, cat: TV, desc: "TV - The Dead Zone"}
|
||||
- {id: 189, cat: TV, desc: "TV - The Divide"}
|
||||
- {id: 386, cat: TV, desc: "TV - The Dog Whisperer"}
|
||||
- {id: 702, cat: TV, desc: "TV - The Event"}
|
||||
- {id: 610, cat: TV, desc: "TV - The F Word"}
|
||||
- {id: 639, cat: TV, desc: "TV - The Family"}
|
||||
- {id: 835, cat: TV, desc: "TV - The Finder"}
|
||||
- {id: 834, cat: TV, desc: "TV - The Firm"}
|
||||
- {id: 973, cat: TV, desc: "TV - The Flash"}
|
||||
- {id: 877, cat: TV, desc: "TV - The Following"}
|
||||
- {id: 635, cat: TV, desc: "TV - The Forgotten"}
|
||||
- {id: 932, cat: TV, desc: "TV - The Fosters"}
|
||||
- {id: 816, cat: TV, desc: "TV - The Game"}
|
||||
- {id: 766, cat: TV, desc: "TV - The Gates"}
|
||||
- {id: 259, cat: TV, desc: "TV - The Girls Next Door"}
|
||||
- {id: 740, cat: TV, desc: "TV - The Glades"}
|
||||
- {id: 587, cat: TV, desc: "TV - The Goldbergs"}
|
||||
- {id: 648, cat: TV, desc: "TV - The Good Wife"}
|
||||
- {id: 912, cat: TV, desc: "TV - The Goodwin Games"}
|
||||
- {id: 278, cat: TV, desc: "TV - The Haunting Of"}
|
||||
- {id: 903, cat: TV, desc: "TV - The Hero"}
|
||||
- {id: 655, cat: TV, desc: "TV - The Hills"}
|
||||
- {id: 221, cat: TV, desc: "TV - The Inside"}
|
||||
- {id: 595, cat: TV, desc: "TV - The Jeff Dunham Show"}
|
||||
- {id: 387, cat: TV, desc: "TV - The Jetsons"}
|
||||
- {id: 827, cat: TV, desc: "TV - The Killing"}
|
||||
- {id: 388, cat: TV, desc: "TV - The King Of Queens"}
|
||||
- {id: 321, cat: TV, desc: "TV - The Knick"}
|
||||
- {id: 271, cat: TV, desc: "TV - The L Word"}
|
||||
- {id: 609, cat: TV, desc: "TV - The League"}
|
||||
- {id: 897, cat: TV, desc: "TV - The Leftovers"}
|
||||
- {id: 808, cat: TV, desc: "TV - The Life and Times of Tim"}
|
||||
- {id: 924, cat: TV, desc: "TV - The Listener"}
|
||||
- {id: 222, cat: TV, desc: "TV - The Lone Gunmen"}
|
||||
- {id: 152, cat: TV, desc: "TV - The Lost World"}
|
||||
- {id: 643, cat: TV, desc: "TV - The Mentalist"}
|
||||
- {id: 878, cat: TV, desc: "TV - The Michael J Fox"}
|
||||
- {id: 630, cat: TV, desc: "TV - The Middle"}
|
||||
- {id: 405, cat: TV, desc: "TV - The Millers"}
|
||||
- {id: 901, cat: TV, desc: "TV - The Mindy Project"}
|
||||
- {id: 860, cat: TV, desc: "TV - The Mob Doctor"}
|
||||
- {id: 870, cat: TV, desc: "TV - The Musketeers"}
|
||||
- {id: 239, cat: TV, desc: "TV - The Mysteries Of Laura"}
|
||||
- {id: 938, cat: TV, desc: "TV - The Newsroom"}
|
||||
- {id: 109, cat: TV, desc: "TV - The O.C."}
|
||||
- {id: 308, cat: TV, desc: "TV - The Office"}
|
||||
- {id: 319, cat: TV, desc: "TV - The Originals"}
|
||||
- {id: 392, cat: TV, desc: "TV - The Others"}
|
||||
- {id: 390, cat: TV, desc: "TV - The O`Reilly Factor"}
|
||||
- {id: 698, cat: TV, desc: "TV - The Pacific"}
|
||||
- {id: 302, cat: TV, desc: "TV - The PJs"}
|
||||
- {id: 567, cat: TV, desc: "TV - The Practice"}
|
||||
- {id: 260, cat: TV, desc: "TV - The Real World"}
|
||||
- {id: 176, cat: TV, desc: "TV - The Red Road"}
|
||||
- {id: 597, cat: TV, desc: "TV - The Replacements"}
|
||||
- {id: 664, cat: TV, desc: "TV - The Sci Fi Guys"}
|
||||
- {id: 393, cat: TV, desc: "TV - The Secret Adventures of Jules Verne"}
|
||||
- {id: 786, cat: TV, desc: "TV - The Secret Circle"}
|
||||
- {id: 668, cat: TV, desc: "TV - The Secret Life of the American Teenager"}
|
||||
- {id: 735, cat: TV, desc: "TV - The Shadow Line"}
|
||||
- {id: 223, cat: TV, desc: "TV - The Shield"}
|
||||
- {id: 125, cat: TV, desc: "TV - The Simpsons"}
|
||||
- {id: 423, cat: TV, desc: "TV - The Sopranos"}
|
||||
- {id: 333, cat: TV, desc: "TV - The Strain"}
|
||||
- {id: 236, cat: TV, desc: "TV - The Tomorrow People US"}
|
||||
- {id: 699, cat: TV, desc: "TV - The Tudors"}
|
||||
- {id: 611, cat: TV, desc: "TV - The Ultimate Fighter"}
|
||||
- {id: 320, cat: TV, desc: "TV - The Unexplained Files"}
|
||||
- {id: 721, cat: TV, desc: "TV - The Vampire Diaries"}
|
||||
- {id: 654, cat: TV, desc: "TV - The Venture Bros"}
|
||||
- {id: 725, cat: TV, desc: "TV - The Voice"}
|
||||
- {id: 720, cat: TV, desc: "TV - The Walking Dead"}
|
||||
- {id: 394, cat: TV, desc: "TV - The War At Home"}
|
||||
- {id: 116, cat: TV, desc: "TV - The West Wing"}
|
||||
- {id: 577, cat: TV, desc: "TV - The X Factor"}
|
||||
- {id: 425, cat: TV, desc: "TV - Thief"}
|
||||
- {id: 268, cat: TV, desc: "TV - Threshold"}
|
||||
- {id: 796, cat: TV, desc: "TV - Thundercats"}
|
||||
- {id: 216, cat: TV, desc: "TV - TLC Connections"}
|
||||
- {id: 904, cat: TV, desc: "TV - TNA-Wrestling"}
|
||||
- {id: 399, cat: TV, desc: "TV - Tonight Show With Jay Leno"}
|
||||
- {id: 616, cat: TV, desc: "TV - Top Chef"}
|
||||
- {id: 224, cat: TV, desc: "TV - Top Gear"}
|
||||
- {id: 942, cat: TV, desc: "TV - Top Shot"}
|
||||
- {id: 762, cat: TV, desc: "TV - Torchwood"}
|
||||
- {id: 836, cat: TV, desc: "TV - Touch"}
|
||||
- {id: 225, cat: TV, desc: "TV - Trailer Park Boys"}
|
||||
- {id: 1001, cat: TV, desc: "TV - Transformers Prime"}
|
||||
- {id: 733, cat: TV, desc: "TV - Treme"}
|
||||
- {id: 303, cat: TV, desc: "TV - Tripping the Rift"}
|
||||
- {id: 787, cat: TV, desc: "TV - Trophy Wife"}
|
||||
- {id: 565, cat: TV, desc: "TV - True Blood"}
|
||||
- {id: 180, cat: TV, desc: "TV - True Detective"}
|
||||
- {id: 727, cat: TV, desc: "TV - Turn"}
|
||||
- {id: 261, cat: TV, desc: "TV - Twin Peaks"}
|
||||
- {id: 930, cat: TV, desc: "TV - Twisted"}
|
||||
- {id: 401, cat: TV, desc: "TV - Two And A Half Men"}
|
||||
- {id: 337, cat: TV, desc: "TV - Tyrant"}
|
||||
- {id: 793, cat: TV, desc: "TV - UFC"}
|
||||
- {id: 814, cat: TV, desc: "TV - Ugly Americans"}
|
||||
- {id: 559, cat: TV, desc: "TV - Ugly Betty"}
|
||||
- {id: 155, cat: TV, desc: "TV - UK"}
|
||||
- {id: 934, cat: TV, desc: "TV - Under the Dome"}
|
||||
- {id: 791, cat: TV, desc: "TV - Underbelly"}
|
||||
- {id: 706, cat: TV, desc: "TV - Undercover Boss"}
|
||||
- {id: 777, cat: TV, desc: "TV - Unforgettable"}
|
||||
- {id: 129, cat: TV, desc: "TV - Unscripted"}
|
||||
- {id: 739, cat: TV, desc: "TV - Unsealed Alien Files"}
|
||||
- {id: 226, cat: TV, desc: "TV - Unsolved Mysteries"}
|
||||
- {id: 868, cat: TV, desc: "TV - Up All Night"}
|
||||
- {id: 262, cat: TV, desc: "TV - Urgences"}
|
||||
- {id: 566, cat: TV, desc: "TV - V"}
|
||||
- {id: 895, cat: TV, desc: "TV - Veep"}
|
||||
- {id: 864, cat: TV, desc: "TV - Vegas"}
|
||||
- {id: 121, cat: TV, desc: "TV - Veronica Mars"}
|
||||
- {id: 908, cat: TV, desc: "TV - Vice"}
|
||||
- {id: 402, cat: TV, desc: "TV - Viewtiful Joe"}
|
||||
- {id: 799, cat: TV, desc: "TV - Vikings"}
|
||||
- {id: 227, cat: TV, desc: "TV - Viva La Bam"}
|
||||
- {id: 263, cat: TV, desc: "TV - Wanted"}
|
||||
- {id: 593, cat: TV, desc: "TV - Warehouse 13"}
|
||||
- {id: 995, cat: TV, desc: "TV - Wayward Pines"}
|
||||
- {id: 264, cat: TV, desc: "TV - Weeds"}
|
||||
- {id: 404, cat: TV, desc: "TV - Weird U S"}
|
||||
- {id: 909, cat: TV, desc: "TV - Wentworth"}
|
||||
- {id: 596, cat: TV, desc: "TV - When Ghosts Attack"}
|
||||
- {id: 575, cat: TV, desc: "TV - White Collar"}
|
||||
- {id: 406, cat: TV, desc: "TV - Whose Line Is It Anyway"}
|
||||
- {id: 918, cat: TV, desc: "TV - Wilfred US"}
|
||||
- {id: 135, cat: TV, desc: "TV - Will And Grace"}
|
||||
- {id: 673, cat: TV, desc: "TV - Witches of East End"}
|
||||
- {id: 408, cat: TV, desc: "TV - Without A Trace"}
|
||||
- {id: 800, cat: TV, desc: "TV - Workaholics"}
|
||||
- {id: 127, cat: TV, desc: "TV - WWE - Wrestling"}
|
||||
- {id: 228, cat: TV, desc: "TV - X Files"}
|
||||
- {id: 770, cat: TV, desc: "TV - X-Men"}
|
||||
- {id: 265, cat: TV, desc: "TV - Young and the Restless"}
|
||||
- {id: 801, cat: TV, desc: "TV - Young Justice"}
|
||||
- {id: 889, cat: TV, desc: "TV - Zero Hour US"}
|
||||
- {id: 1025, cat: TV, desc: "TV - HEVC/x265"}
|
||||
- {id: 1026, cat: TV, desc: "TV - Divx/Xvid"}
|
||||
- {id: 1027, cat: TV, desc: "TV - DVD"}
|
||||
- {id: 1028, cat: TV, desc: "TV/HD - HD"}
|
||||
- {id: 1029, cat: TV, desc: "TV - SVCD/VCD"}
|
||||
|
||||
#Apps
|
||||
- {id: 7, cat: PC, desc: "Software"}
|
||||
- {id: 416, cat: PC/Phone-Other, desc: "Software - Mobile"}
|
||||
- {id: 532, cat: PC, desc: "Software - KeyGen / Tools"}
|
||||
- {id: 17, cat: PC, desc: "Software - Linux"}
|
||||
- {id: 27, cat: PC/Mac, desc: "Software - Mac"}
|
||||
- {id: 232, cat: PC/Phone-Other, desc: "Software - Mobile phones"}
|
||||
- {id: 18, cat: PC, desc: "Software - Other operating systems"}
|
||||
- {id: 19, cat: PC, desc: "Software - Palm, PocketPC and IPAQ"}
|
||||
- {id: 20, cat: PC, desc: "Software - Windows - CD/DVD Tools"}
|
||||
- {id: 25, cat: PC, desc: "Software - Windows - Other"}
|
||||
- {id: 21, cat: PC, desc: "Software - Windows - Photo Editing"}
|
||||
- {id: 22, cat: PC, desc: "Software - Windows - Security"}
|
||||
- {id: 23, cat: PC, desc: "Software - Windows - Sound Editing"}
|
||||
- {id: 24, cat: PC, desc: "Software - Windows - Video Apps"}
|
||||
|
||||
#Games
|
||||
- {id: 3, cat: PC/Games, desc: "Games"}
|
||||
- {id: 136, cat: PC/Games, desc: "Games - fixes/patches"}
|
||||
- {id: 422, cat: PC/Games, desc: "Games - Other"}
|
||||
- {id: 26, cat: PC/Games, desc: "Games - Mac"}
|
||||
- {id: 231, cat: Console, desc: "Games - Mobile phones"}
|
||||
- {id: 627, cat: Console/NDS, desc: "Games - Nintendo DS"}
|
||||
- {id: 11, cat: Console, desc: "Games - PS 2"}
|
||||
- {id: 700, cat: Console/PS3, desc: "Games - PS 3"}
|
||||
- {id: 12, cat: Console, desc: "Games - PS X"}
|
||||
- {id: 158, cat: Console/PSP, desc: "Games - PSP"}
|
||||
- {id: 13, cat: Console, desc: "Games - ROMS/Retro"}
|
||||
- {id: 15, cat: Console, desc: "Games - Sega Saturn"}
|
||||
- {id: 14, cat: PC/Games, desc: "Games - Video Demonstrations"}
|
||||
- {id: 701, cat: Console/Wii, desc: "Games -Wii"}
|
||||
- {id: 421, cat: PC/Games, desc: "Games - Windows"}
|
||||
- {id: 10, cat: PC/Games, desc: "Games - Windows Kids Games"}
|
||||
- {id: 16, cat: Console/Xbox, desc: "Games - XBox"}
|
||||
- {id: 1017, cat: Console, desc: "Games - PS 1"}
|
||||
- {id: 1018, cat: Console/Xbox 360, desc: "Games - Xbox 360"}
|
||||
- {id: 1014, cat: Console/3DS, desc: "Games - Nintendo 3DS"}
|
||||
- {id: 1015, cat: Console, desc: "Games - Dreamcast"}
|
||||
- {id: 1016, cat: Console, desc: "Games - GameCube"}
|
||||
|
||||
#XXX
|
||||
- {id: 533, cat: XXX, desc: "XXX"}
|
||||
- {id: 943, cat: XXX, desc: "XXX - Animation/Hentai"}
|
||||
- {id: 553, cat: XXX/DVD, desc: "XXX - DVD"}
|
||||
- {id: 536, cat: XXX, desc: "XXX - Games"}
|
||||
- {id: 948, cat: XXX/x264, desc: "XXX - HD Video"}
|
||||
- {id: 535, cat: XXX/Imageset, desc: "XXX - Pictures"}
|
||||
- {id: 552, cat: XXX, desc: "XXX - Video"}
|
||||
- {id: 804, cat: XXX, desc: "XXX - Video 3D"}
|
||||
- {id: 970, cat: XXX, desc: "XXX - Virtual Reality"}
|
||||
- {id: 806, cat: XXX, desc: "XXX - Wallpapers"}
|
||||
|
||||
#Books
|
||||
- {id: 2, cat: Books, desc: "Books"}
|
||||
- {id: 625, cat: Books, desc: "Books - Adventure"}
|
||||
- {id: 51, cat: Books, desc: "Books - Audio books"}
|
||||
- {id: 848, cat: Books/Comics, desc: "Books - Comics"}
|
||||
- {id: 624, cat: Books, desc: "Books - Crime"}
|
||||
- {id: 623, cat: Books, desc: "Books - Drama"}
|
||||
- {id: 50, cat: Books/Ebook, desc: "Books - Ebooks"}
|
||||
- {id: 621, cat: Books, desc: "Books - Educational"}
|
||||
- {id: 622, cat: Books, desc: "Books - Horror"}
|
||||
- {id: 465, cat: Books/Magazines, desc: "Books - Magazines"}
|
||||
- {id: 1000, cat: Books, desc: "Books - Sexual Fitness and Education"}
|
||||
- {id: 626, cat: Books, desc: "Books - True Stories"}
|
||||
|
||||
#Other
|
||||
- {id: 6, cat: Other, desc: "Pictures"}
|
||||
- {id: 9, cat: Other, desc: "Other"}
|
||||
- {id: 53, cat: Other, desc: "Pictures - Other"}
|
||||
- {id: 52, cat: Other, desc: "Wallpapers"}
|
||||
- {id: 80, cat: Other, desc: "Other - Articles"}
|
||||
- {id: 143, cat: Other, desc: "Other - Comics"}
|
||||
- {id: 85, cat: Other, desc: "Other - Funny clips"}
|
||||
- {id: 81, cat: Other, desc: "Other - Manuals"}
|
||||
- {id: 83, cat: Other, desc: "Other - Other"}
|
||||
- {id: 413, cat: Other, desc: "Other - Radio shows"}
|
||||
- {id: 82, cat: Other, desc: "Other - Religion"}
|
||||
- {id: 874, cat: Other, desc: "Other - Subtitles"}
|
||||
- {id: 557, cat: Other, desc: "Other - Training "}
|
||||
- {id: 1021, cat: Other, desc: "Other - Tutorials"}
|
||||
- {id: 1022, cat: Other, desc: "Other - Sounds"}
|
||||
- {id: 1023, cat: Other, desc: "Other - Nulled Scripts"}
|
||||
|
||||
#Mobile
|
||||
- {id: 752, cat: PC/Phone-Other, desc: "Mobile - Games for Android"}
|
||||
- {id: 746, cat: PC/Phone-Other, desc: "Mobile - Games for Apple iPod, iPod Touch, iPad, iPhone"}
|
||||
- {id: 745, cat: PC/Phone-Other, desc: "Mobile - Games for Java"}
|
||||
- {id: 744, cat: PC/Phone-Other, desc: "Mobile - Games for Symbian"}
|
||||
- {id: 743, cat: PC/Phone-Other, desc: "Mobile - Games for Windows Mobile"}
|
||||
- {id: 517, cat: PC/Phone-Other, desc: "Mobile - Music"}
|
||||
- {id: 554, cat: PC/Phone-Other, desc: "Mobile - Other"}
|
||||
- {id: 748, cat: PC/Phone-Other, desc: "Mobile - Software - Other"}
|
||||
- {id: 972, cat: PC/Phone-Other, desc: "Mobile - Software for Android"}
|
||||
- {id: 749, cat: PC/Phone-Other, desc: "Mobile - Software for Apple iPad, iPhone, iPod Touch"}
|
||||
- {id: 747, cat: PC/Phone-Other, desc: "Mobile - Software for Windows Mobile"}
|
||||
- {id: 428, cat: PC/Phone-Other, desc: "Mobile - Tv"}
|
||||
- {id: 417, cat: PC/Phone-Other, desc: "Mobile - Video"}
|
||||
- {id: 750, cat: PC/Phone-Other, desc: "Mobile - Video for Apple iPad, iPhone, iPod Touch"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings: []
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: "{{if .Keywords}}search/?search={{ .Keywords}}{{else}}{{end}}"
|
||||
rows:
|
||||
selector: tr[class^="tlr"]
|
||||
fields:
|
||||
title:
|
||||
selector: td.tli a
|
||||
category:
|
||||
selector: td a[href^="/category/"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: split
|
||||
args: ["/", 2]
|
||||
details:
|
||||
selector: td.tli a
|
||||
attribute: href
|
||||
download:
|
||||
selector: td a[href^="magnet:?xt="]
|
||||
attribute: href
|
||||
date:
|
||||
selector: td:nth-last-of-type(5)
|
||||
filters:
|
||||
- name: timeago
|
||||
size:
|
||||
selector: td:nth-last-of-type(4)
|
||||
seeders:
|
||||
text: 0
|
||||
leechers:
|
||||
text: 0
|
||||
seeders:
|
||||
optional: true
|
||||
selector: td.sy
|
||||
leechers:
|
||||
optional: true
|
||||
selector: td.ly
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
@@ -6,11 +6,13 @@
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.gktorrent.org/
|
||||
- http://ww2.gktorrent.com/
|
||||
legacylinks:
|
||||
- https://www.gktorrent.org/
|
||||
- http://www.gktorrent.net/
|
||||
- https://www.gktorrent.com/ # they're forcing http
|
||||
- http://www.gktorrent.com/
|
||||
- http://ww1.gktorrent.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -1,66 +0,0 @@
|
||||
---
|
||||
site: horriblesubs
|
||||
name: Horrible Subs
|
||||
description: "Anime Sub Group - \"So bad yet so good\""
|
||||
language: en-us
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- http://horriblesubs.info/
|
||||
legacylinks:
|
||||
- https://horriblesubs.info/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
1: TV/Anime # Anime
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
|
||||
settings:
|
||||
- name: prepend-horriblesubs
|
||||
type: checkbox
|
||||
label: Prepend [Horriblesubs] to torrent title
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: "lib/{{if .Query.Keywords }}search.php{{else}}latest.php{{end}}"
|
||||
inputs:
|
||||
value: "{{ .Query.Keywords }}"
|
||||
rows:
|
||||
selector: "div.release-links"
|
||||
dateheaders:
|
||||
selector: table.release-info
|
||||
filters:
|
||||
- name: split
|
||||
args: [" ", 0 ]
|
||||
- name: replace
|
||||
args: ["(", ""]
|
||||
- name: replace
|
||||
args: [")", ""]
|
||||
- name: replace
|
||||
args: ["/", "-"]
|
||||
- name: dateparse
|
||||
args: "01-02-06"
|
||||
- name: dateparse
|
||||
args: "01-02"
|
||||
fields:
|
||||
category:
|
||||
text: "1"
|
||||
title:
|
||||
selector: table.release-table > tbody > tr > td.dl-label
|
||||
filters:
|
||||
- name: prepend
|
||||
args: "{{if .Config.prepend-horriblesubs}}[Horriblesubs] {{else}}{{end}}"
|
||||
details:
|
||||
attribute: class
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["release-links", ""]
|
||||
- name: re_replace
|
||||
args: [" ?(\\S+?)-((?:s\\d-)?(?:\\d+v?\\d?-){0,2}\\d+p)", "http://horriblesubs.info/shows/$1#$2"]
|
||||
download:
|
||||
selector: table.release-table > tbody > tr > td.hs-magnet-link > span > a
|
||||
attribute: href
|
||||
size:
|
||||
text: "500 MB"
|
@@ -10,17 +10,18 @@
|
||||
certificates:
|
||||
- aa7c40aa360a1cec8a9687312fd50402b912e618 # incomplete CA chain
|
||||
- 83174ec1f92fa13cdef9d51888ea1dfba2166e17 # incomplete CA chain
|
||||
- c414bf4ad6c69841693c147849f4c314aa200bdf # incomplete CA chain
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies/HD, desc: "BDRiP"}
|
||||
- {id: 2, cat: Audio, desc: "Music"}
|
||||
- {id: 2, cat: PC/Games, desc: "Games"}
|
||||
- {id: 5, cat: TV/Anime, desc: "Anime"}
|
||||
- {id: 7, cat: PC/0day, desc: "App"}
|
||||
- {id: 15, cat: TV, desc: "TV Series"}
|
||||
- {id: 19, cat: Movies/SD, desc: "Screener"}
|
||||
- {id: 20, cat: Movies/SD, desc: "Full DVD"}
|
||||
- {id: 1, cat: Movies/HD, desc: "BDRiP", default: true}
|
||||
- {id: 2, cat: Audio, desc: "Music", default: true}
|
||||
- {id: 2, cat: PC/Games, desc: "Games", default: true}
|
||||
- {id: 5, cat: TV/Anime, desc: "Anime", default: true}
|
||||
- {id: 7, cat: PC/0day, desc: "App", default: true}
|
||||
- {id: 15, cat: TV, desc: "TV Series", default: true}
|
||||
- {id: 19, cat: Movies/SD, desc: "Screener", default: true}
|
||||
- {id: 20, cat: Movies/SD, desc: "Full DVD", default: true}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
@@ -6,10 +6,11 @@
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.limetorrents.me/
|
||||
- https://www.limetorrents.info/
|
||||
legacylinks:
|
||||
- https://www.limetorrents.io/
|
||||
- https://www.limetorrents.cc/
|
||||
- https://www.limetorrents.me/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
|
89
src/Jackett.Common/Definitions/redtopia.yml
Normal file
89
src/Jackett.Common/Definitions/redtopia.yml
Normal file
@@ -0,0 +1,89 @@
|
||||
---
|
||||
site: redtopia
|
||||
name: Redtopia
|
||||
description: "Tracker Music/Podcasts/Audiobooks"
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://redtopia.xyz/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Audio, desc: "Studio Album"}
|
||||
- {id: 2, cat: Audio, desc: "Studio Single"}
|
||||
- {id: 3, cat: Audio, desc: "Studio Collection"}
|
||||
- {id: 4, cat: Audio, desc: "Indie Album"}
|
||||
- {id: 5, cat: Audio, desc: "Indie Single"}
|
||||
- {id: 6, cat: Audio, desc: "Indie Collection"}
|
||||
- {id: 7, cat: Audio, desc: "Live Album"}
|
||||
- {id: 8, cat: Audio, desc: "OST"}
|
||||
- {id: 9, cat: Audio, desc: "Podcast"}
|
||||
- {id: 10, cat: Audio, desc: "Audio Book"}
|
||||
- {id: 11, cat: Audio, desc: "Audio Drama"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
music-search: [q]
|
||||
|
||||
login:
|
||||
path: /login
|
||||
method: form
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: table.main:contains("Login Failed!")
|
||||
test:
|
||||
path: /torrents
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: /filterTorrents
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
uploader: ""
|
||||
sorting: created_at
|
||||
direction: desc
|
||||
qty: 100
|
||||
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
|
||||
size:
|
||||
selector: td:nth-child(4)
|
||||
seeders:
|
||||
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
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"100% Free\"]": "0"
|
||||
"i[data-original-title=\"Global FreeLeech\"]": "0"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"Double Upload\"]": "2" # global flag
|
||||
"i[data-original-title=\"Double upload\"]": "2" # torrent specific flag
|
||||
"*": "1"
|
104
src/Jackett.Common/Definitions/retroflix.yml
Normal file
104
src/Jackett.Common/Definitions/retroflix.yml
Normal file
@@ -0,0 +1,104 @@
|
||||
---
|
||||
site: retroflix
|
||||
name: RetroFlix
|
||||
description: "Private Torrent Tracker for Classic Movies / TV / General Releases."
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://retroflix.club/
|
||||
legacylinks:
|
||||
- https://retroflix.net/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 401, cat: Movies, desc: "Movies"}
|
||||
- {id: 404, cat: TV/Documentary, desc: "Documentaries"}
|
||||
- {id: 405, cat: TV/Anime, desc: "Animations"}
|
||||
- {id: 402, cat: TV, desc: "TV Series"}
|
||||
- {id: 403, cat: TV, desc: "TV Shows"}
|
||||
- {id: 406, cat: Audio/Video, desc: "Music Videos"}
|
||||
- {id: 407, cat: TV/Sport, desc: "Sports"}
|
||||
- {id: 409, cat: Other, desc: "Misc"}
|
||||
- {id: 408, cat: Audio, desc: "HQ Audio"}
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q, imdbid]
|
||||
|
||||
settings:
|
||||
- name: cookie
|
||||
type: text
|
||||
label: Cookie
|
||||
|
||||
login:
|
||||
method: cookie
|
||||
inputs:
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
test:
|
||||
path: torrents.php
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: torrents.php
|
||||
method: get
|
||||
inputs:
|
||||
search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
|
||||
incldead: 1
|
||||
search_area: "{{ if .Query.IMDBID }}4{{else}}0{{end}}"
|
||||
search_mode: 0
|
||||
rows:
|
||||
selector: table.torrents > tbody > tr:has(table.torrentname)
|
||||
fields:
|
||||
release_year:
|
||||
selector: a[href^="/torrents.php?processing="]
|
||||
quality:
|
||||
selector: a[href^="/torrents.php?standard="]
|
||||
title:
|
||||
selector: a[title][href^="details.php?id="]
|
||||
attribute: title
|
||||
filters:
|
||||
- name: append
|
||||
args: " {{ .Result.release_year }}"
|
||||
- name: append
|
||||
args: " {{ .Result.quality }}"
|
||||
category:
|
||||
selector: a[href^="?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
seeders:
|
||||
selector: td:nth-child(6)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
||||
date:
|
||||
selector: td:nth-child(4) > span[title]
|
||||
attribute: title
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "02-01-2006 15:04:05"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img.pro_free: "0"
|
||||
img.pro_free2up: "0"
|
||||
img.pro_50pctdown: "0.5"
|
||||
img.pro_50pctdown2up: "0.5"
|
||||
img.pro_30pctdown: "0.3"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img.pro_50pctdown2up: "2"
|
||||
img.pro_free2up: "2"
|
||||
img.pro_2up: "2"
|
||||
"*": "1"
|
@@ -47,9 +47,10 @@
|
||||
filters:
|
||||
- name: split
|
||||
args: ["=", "-1"]
|
||||
# normalize to SXXEYY format
|
||||
- name: re_replace
|
||||
args: ["\\b([s])?(\\d{1,3})[x\\s](\\d{1,3})", "S$2E$3"]
|
||||
- name: re_replace # normalize to SXXEYY format
|
||||
args: ["(?i)\\b([s])?(\\d{1,3})[x\\s](\\d{1,3})", "S$2E$3"]
|
||||
- name: re_replace # replace web-dlmux with webdl, sonarr don't like it
|
||||
args: ["(?i)web-?\\s?dlmux", "WEB-DL"]
|
||||
details:
|
||||
selector: td:nth-child(7) a
|
||||
attribute: href
|
||||
|
@@ -6,7 +6,7 @@
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://ww2.torrent9.blue/
|
||||
- https://www.torrent9.ph/
|
||||
legacylinks:
|
||||
- http://www.torrent9.ec/
|
||||
- http://www.torrent9.red/
|
||||
@@ -16,6 +16,8 @@
|
||||
- http://www.torrent9.pe/
|
||||
- http://www.torrent9.blue/
|
||||
- https://www.torrent9.blue/
|
||||
- https://ww2.torrent9.blue/
|
||||
- https://www.torrent9.rip/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
@@ -53,7 +53,7 @@
|
||||
q: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
|
||||
incldead: 1
|
||||
rows:
|
||||
selector: table#torrentTable > tbody > tr:has(td.torrentNameInfo)
|
||||
selector: table#torrentsTable > tbody > tr:has(td.torrentNameInfo)
|
||||
fields:
|
||||
download:
|
||||
selector: a[href^="/download.php/"]
|
||||
|
@@ -1,66 +0,0 @@
|
||||
---
|
||||
site: torrentkim
|
||||
name: TorrentKim
|
||||
description: "TorrentKim is a free Korean tracker of pretty much anything Korean."
|
||||
language: ko-KR
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://torrentkim.pro/
|
||||
legacylinks:
|
||||
- https://torrentkim12.com/
|
||||
- https://torrentkim10.net/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: "torrent_variety", cat: TV, desc: "TV - Variety shows"}
|
||||
- {id: "torrent_tv", cat: TV, desc: "TV - Dramas"}
|
||||
- {id: "torrent_mid", cat: TV/FOREIGN, desc: "TV - American Series"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q]
|
||||
movie-search: [q]
|
||||
|
||||
settings: []
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: "{{ if .Keywords }}/bbs/s-1-{{ .Keywords }}{{else}}/bbs/s-1-미운우리새끼{{end}}"
|
||||
rows:
|
||||
selector: "table.board_list > tbody > tr.bg1:nth-child(n+3)"
|
||||
fields:
|
||||
magnet:
|
||||
selector: td:nth-child(1) a[href^="javascript:"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["javascript:Mag_dn('", ""]
|
||||
- name: replace
|
||||
args: ["')", ""]
|
||||
- name: prepend
|
||||
args: "magnet:?xt=urn:btih:"
|
||||
seeders:
|
||||
selector: "td:nth-child(2) font:nth-child(2)"
|
||||
leechers:
|
||||
selector: "td:nth-child(2) font:nth-child(1)"
|
||||
category:
|
||||
selector: td:nth-child(3) a[href^="/bbs/bc.php?bo_table="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: bo_table
|
||||
title:
|
||||
selector: td:nth-child(3) a:last-of-type
|
||||
details:
|
||||
selector: td:nth-child(3) a:last-of-type
|
||||
attribute: href
|
||||
date:
|
||||
selector: td:nth-child(3) a:last-of-type
|
||||
filters:
|
||||
- name: split
|
||||
args: ['.', 2]
|
||||
- name: dateparse
|
||||
args: "060102"
|
||||
size:
|
||||
selector: td:nth-child(5)
|
@@ -69,12 +69,11 @@
|
||||
paths:
|
||||
- path: "{{if .Config.filter-verified }}verified{{else}}searchA{{end}}"
|
||||
inputs:
|
||||
f: "{{ .Query.Keywords }}"
|
||||
f: "{{if .Keywords }}title: {{else}}{{end}}{{ .Keywords }}"
|
||||
safe: "{{if .Config.filter-safe }}1{{else}}0{{end}}"
|
||||
rows:
|
||||
selector: "html body #wrap .results dl:has(a)"
|
||||
filters:
|
||||
- name: andmatch
|
||||
# andmatch filter removed, see #3737
|
||||
fields:
|
||||
title:
|
||||
selector: dt a
|
||||
@@ -114,10 +113,9 @@
|
||||
selector: dt
|
||||
remove: a
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["[^a-zA-Z\\s]+", ""]
|
||||
- name: trim
|
||||
args: "»"
|
||||
- name: trim
|
||||
args: " "
|
||||
date:
|
||||
selector: dd span:nth-child(2)
|
||||
attribute: title
|
||||
|
@@ -67,6 +67,8 @@
|
||||
selector: div.group_info
|
||||
remove: span, div.tags
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["\t\t\t\t", " "]
|
||||
- name: replace
|
||||
args: [" / Free", ""]
|
||||
- name: replace
|
||||
|
@@ -6,7 +6,7 @@
|
||||
type: semi-private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://ww4.yggtorrent.is/
|
||||
- https://www.yggtorrent.is/
|
||||
legacylinks:
|
||||
- https://yggtorrent.is/
|
||||
- https://yggtorrent.com/
|
||||
@@ -14,11 +14,12 @@
|
||||
- https://ww1.yggtorrent.is/
|
||||
- https://ww2.yggtorrent.is/
|
||||
- https://ww3.yggtorrent.is/
|
||||
- https://ww4.yggtorrent.is/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 2145, cat: TV, desc: "Film/Vidéo"}
|
||||
- {id: 2178, cat: TV/Anime, desc: "Film/Vidéo : Animation"}
|
||||
- {id: 2178, cat: Movies, desc: "Film/Vidéo : Animation"} # changed to movies, see #3553
|
||||
- {id: 2179, cat: TV/Anime, desc: "Film/Vidéo : Animation Série"}
|
||||
- {id: 2180, cat: TV, desc: "Film/Vidéo : Concert"}
|
||||
- {id: 2181, cat: TV, desc: "Film/Vidéo : Documentaire"}
|
||||
@@ -128,8 +129,8 @@
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: "/engine/search?category={{ .Config.category }}&name={{ .Keywords }}&description=&file=&uploader=&sub_category=&do=search"
|
||||
- path: "/engine/search?category={{ .Config.category }}&name={{ .Keywords }}&description=&file=&uploader=&sub_category=&do=search&page=50"
|
||||
- path: "/engine/search?category={{ .Config.category }}&name={{ .Keywords }}&description=&file=&uploader=&sub_category=&do=search&order=desc&sort=publish_date"
|
||||
- path: "/engine/search?category={{ .Config.category }}&name={{ .Keywords }}&description=&file=&uploader=&sub_category=&do=search&order=desc&sort=publish_date&page=50"
|
||||
|
||||
rows:
|
||||
selector: "table.table > tbody > tr"
|
||||
|
@@ -22,7 +22,7 @@
|
||||
path: /login
|
||||
method: form
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
username_email: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
remember: "on"
|
||||
error:
|
||||
@@ -54,13 +54,13 @@
|
||||
- name: split
|
||||
args: ["|", 0]
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
selector: td:nth-child(4)
|
||||
seeders:
|
||||
selector: td:nth-child(6)
|
||||
selector: td:nth-child(5)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
||||
selector: td:nth-child(6)
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
selector: td:nth-child(7)
|
||||
date:
|
||||
selector: td:nth-child(3)
|
||||
filters:
|
||||
|
@@ -63,7 +63,7 @@ namespace Jackett.Common.Indexers.Abstract
|
||||
|
||||
if (!string.IsNullOrEmpty(query.ImdbID))
|
||||
{
|
||||
queryCollection.Add("imdbid", "browse");
|
||||
queryCollection.Add("imdbid", query.ImdbID);
|
||||
}
|
||||
if (searchString != null)
|
||||
{
|
||||
|
@@ -575,6 +575,11 @@ namespace Jackett.Common.Indexers
|
||||
{
|
||||
throw new Exception("Request to " + response.Request.Url + " failed (Error " + response.Status + ") - The tracker seems to be down.");
|
||||
}
|
||||
|
||||
if (response.Status == System.Net.HttpStatusCode.Forbidden && response.Content.Contains("<span data-translate=\"complete_sec_check\">Please complete the security check to access</span>"))
|
||||
{
|
||||
throw new Exception("Request to " + response.Request.Url + " failed (Error " + response.Status + ") - The page is protected by an Cloudflare reCaptcha. The page is in aggressive DDoS mitigation mode or your IP might be blacklisted (e.g. in case of shared VPN IPs). There's no easy way of making it usable with Jackett.");
|
||||
}
|
||||
}
|
||||
|
||||
protected async Task FollowIfRedirect(WebClientStringResult response, string referrer = null, string overrideRedirectUrl = null, string overrideCookies = null, bool accumulateCookies = false)
|
||||
|
@@ -164,7 +164,7 @@ namespace Jackett.Common.Indexers
|
||||
var grabs = qRow.Find("td:nth-child(9) > a").Get(0).FirstChild.ToString();
|
||||
release.Grabs = ParseUtil.CoerceInt(grabs);
|
||||
|
||||
release.DownloadVolumeFactor = 0; // ratioless
|
||||
release.DownloadVolumeFactor = 1;
|
||||
release.UploadVolumeFactor = 1;
|
||||
|
||||
releases.Add(release);
|
||||
|
246
src/Jackett.Common/Indexers/HorribleSubs.cs
Normal file
246
src/Jackett.Common/Indexers/HorribleSubs.cs
Normal file
@@ -0,0 +1,246 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Models.IndexerConfig;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using System.Text.RegularExpressions;
|
||||
using AngleSharp.Parser.Html;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
class HorribleSubs : BaseWebIndexer
|
||||
{
|
||||
private string ApiEndpoint { get { return SiteLink + "api.php"; } }
|
||||
|
||||
public HorribleSubs(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
|
||||
: base(name: "Horrible Subs",
|
||||
description: "HorribleSubs – So bad yet so good",
|
||||
link: "https://horriblesubs.info/",
|
||||
caps: new TorznabCapabilities(),
|
||||
configService: configService,
|
||||
client: wc,
|
||||
logger: l,
|
||||
p: ps,
|
||||
configData: new ConfigurationData())
|
||||
{
|
||||
Encoding = Encoding.UTF8;
|
||||
Language = "en-us";
|
||||
Type = "public";
|
||||
}
|
||||
|
||||
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
|
||||
{
|
||||
configData.LoadValuesFromJson(configJson);
|
||||
var releases = await PerformQuery(new TorznabQuery());
|
||||
|
||||
await ConfigureIfOK(string.Empty, releases.Count() > 0, () =>
|
||||
{
|
||||
throw new Exception("Could not find releases from this URL");
|
||||
});
|
||||
|
||||
return IndexerConfigurationStatus.Completed;
|
||||
}
|
||||
|
||||
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
|
||||
{
|
||||
return await PerformQuery(query, 0);
|
||||
}
|
||||
|
||||
private async Task<IEnumerable<ReleaseInfo>> PerformLatestQuery(TorznabQuery query, int attempts)
|
||||
{
|
||||
var ResultParser = new HtmlParser();
|
||||
var releases = new List<ReleaseInfo>();
|
||||
var searchString = query.GetQueryString();
|
||||
var queryCollection = new NameValueCollection();
|
||||
|
||||
queryCollection.Add("method", "getlatest");
|
||||
|
||||
var searchUrl = ApiEndpoint + "?" + queryCollection.GetQueryString();
|
||||
var response = await RequestStringWithCookiesAndRetry(searchUrl, string.Empty);
|
||||
|
||||
try
|
||||
{
|
||||
if (response.Content.Contains("Nothing was found"))
|
||||
{
|
||||
return releases.ToArray();
|
||||
}
|
||||
|
||||
var dom = ResultParser.Parse(response.Content);
|
||||
var latestresults = dom.QuerySelectorAll("ul > li > a");
|
||||
foreach (var row in latestresults)
|
||||
{
|
||||
var href = SiteLink + row.Attributes["href"].Value.Substring(1);
|
||||
var showrels = await GetRelease(href);
|
||||
releases.AddRange(showrels);
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
OnParseError(response.Content, ex);
|
||||
}
|
||||
|
||||
return releases;
|
||||
}
|
||||
|
||||
private async Task<IEnumerable<ReleaseInfo>> GetRelease(string ResultURL)
|
||||
{
|
||||
var releases = new List<ReleaseInfo>();
|
||||
var ResultParser = new HtmlParser();
|
||||
try
|
||||
{
|
||||
var episodeno = ResultURL.Substring(ResultURL.LastIndexOf("#") + 1); // = 71
|
||||
ResultURL = ResultURL.Replace("#" + episodeno, ""); // = https://horriblesubs.info/shows/boruto-naruto-next-generations
|
||||
|
||||
var showPageResponse = await RequestStringWithCookiesAndRetry(ResultURL, string.Empty);
|
||||
await FollowIfRedirect(showPageResponse);
|
||||
|
||||
Match match = Regex.Match(showPageResponse.Content, "(var hs_showid = )([0-9]*)(;)", RegexOptions.IgnoreCase);
|
||||
if (match.Success == false)
|
||||
{
|
||||
return releases;
|
||||
}
|
||||
|
||||
int ShowID = int.Parse(match.Groups[2].Value);
|
||||
|
||||
string showAPIURL = ApiEndpoint + "?method=getshows&type=show&showid=" + ShowID; //https://horriblesubs.info/api.php?method=getshows&type=show&showid=869
|
||||
var showAPIResponse = await RequestStringWithCookiesAndRetry(showAPIURL, string.Empty);
|
||||
|
||||
|
||||
var showAPIdom = ResultParser.Parse(showAPIResponse.Content);
|
||||
var releaserows = showAPIdom.QuerySelectorAll("div.rls-info-container");
|
||||
|
||||
foreach (var releaserow in releaserows)
|
||||
{
|
||||
string dateStr = releaserow.QuerySelector(".rls-date").TextContent.Trim();
|
||||
string title = releaserow.FirstChild.TextContent;
|
||||
title = title.Replace("SD720p1080p", "");
|
||||
title = title.Replace(dateStr, "");
|
||||
|
||||
if (title.Contains(episodeno) == false)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
DateTime releasedate;
|
||||
if (dateStr == "Today")
|
||||
{
|
||||
releasedate = DateTime.Today;
|
||||
}
|
||||
else if (dateStr == "Yesterday")
|
||||
{
|
||||
releasedate = DateTime.Today.AddDays(-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
releasedate = DateTime.SpecifyKind(DateTime.ParseExact(dateStr, "MM/dd/yy", CultureInfo.InvariantCulture), DateTimeKind.Utc).ToLocalTime();
|
||||
}
|
||||
|
||||
var p480 = releaserow.QuerySelector(".link-480p");
|
||||
|
||||
if (p480 != null)
|
||||
{
|
||||
var release = new ReleaseInfo();
|
||||
release.Title = string.Format("{0} [480p]", title);
|
||||
release.PublishDate = releasedate;
|
||||
release.Link = new Uri(p480.QuerySelector(".hs-torrent-link > a").GetAttribute("href"));
|
||||
release.MagnetUri = new Uri(p480.QuerySelector(".hs-magnet-link > a").GetAttribute("href"));
|
||||
release.Files = 1;
|
||||
releases.Add(release);
|
||||
}
|
||||
|
||||
var p720 = releaserow.QuerySelector(".link-720p");
|
||||
|
||||
if (p720 != null)
|
||||
{
|
||||
var release = new ReleaseInfo();
|
||||
release.Title = string.Format("{0} [720p]", title);
|
||||
release.PublishDate = releasedate;
|
||||
release.Link = new Uri(p720.QuerySelector(".hs-torrent-link > a").GetAttribute("href"));
|
||||
release.MagnetUri = new Uri(p720.QuerySelector(".hs-magnet-link > a").GetAttribute("href"));
|
||||
release.Files = 1;
|
||||
releases.Add(release);
|
||||
}
|
||||
|
||||
var p1080 = releaserow.QuerySelector(".link-1080p");
|
||||
|
||||
if (p1080 != null)
|
||||
{
|
||||
var release = new ReleaseInfo();
|
||||
release.Title = string.Format("{0} [1080p]", title);
|
||||
release.PublishDate = releasedate;
|
||||
release.Link = new Uri(p1080.QuerySelector(".hs-torrent-link > a").GetAttribute("href"));
|
||||
release.MagnetUri = new Uri(p1080.QuerySelector(".hs-magnet-link > a").GetAttribute("href"));
|
||||
release.Files = 1;
|
||||
releases.Add(release);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
OnParseError("", ex);
|
||||
}
|
||||
return releases;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query, int attempts)
|
||||
{
|
||||
var ResultParser = new HtmlParser();
|
||||
var releases = new List<ReleaseInfo>();
|
||||
var searchString = query.GetQueryString();
|
||||
var queryCollection = new NameValueCollection();
|
||||
|
||||
|
||||
if (string.IsNullOrWhiteSpace(searchString))
|
||||
{
|
||||
return await PerformLatestQuery(query, attempts);
|
||||
}
|
||||
else
|
||||
{
|
||||
queryCollection.Add("method", "search");
|
||||
|
||||
searchString = searchString.Replace("'", ""); // ignore ' (e.g. search for america's Next Top Model)
|
||||
queryCollection.Add("value", searchString);
|
||||
}
|
||||
|
||||
var searchUrl = ApiEndpoint + "?" + queryCollection.GetQueryString();
|
||||
var response = await RequestStringWithCookiesAndRetry(searchUrl, string.Empty);
|
||||
|
||||
try
|
||||
{
|
||||
if (response.Content.Contains("Nothing was found"))
|
||||
{
|
||||
return releases.ToArray();
|
||||
}
|
||||
var dom = ResultParser.Parse(response.Content);
|
||||
var showlinks = dom.QuerySelectorAll("ul > li > a");
|
||||
foreach (var showlink in showlinks)
|
||||
{
|
||||
var href = SiteLink + showlink.Attributes["href"].Value.Substring(1); // = https://horriblesubs.info/shows/boruto-naruto-next-generations#71
|
||||
|
||||
var showrels = await GetRelease(href);
|
||||
releases.AddRange(showrels);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
OnParseError(response.Content, ex);
|
||||
}
|
||||
|
||||
return releases;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@@ -42,30 +42,41 @@ namespace Jackett.Common.Indexers
|
||||
Language = "en-us";
|
||||
Type = "private";
|
||||
|
||||
AddCategoryMapping(32, TorznabCatType.TVAnime);
|
||||
AddCategoryMapping(31, TorznabCatType.TVOTHER);
|
||||
AddCategoryMapping(47, TorznabCatType.TVSD);
|
||||
AddCategoryMapping(8, TorznabCatType.TVHD);
|
||||
AddCategoryMapping(48, TorznabCatType.TVHD);
|
||||
AddCategoryMapping(9, TorznabCatType.TVSD);
|
||||
AddCategoryMapping(4, TorznabCatType.TVHD);
|
||||
AddCategoryMapping(6, TorznabCatType.TVSD);
|
||||
|
||||
AddCategoryMapping(22, TorznabCatType.Books);
|
||||
AddCategoryMapping(41, TorznabCatType.BooksComics);
|
||||
AddCategoryMapping(23, TorznabCatType.PC);
|
||||
|
||||
AddCategoryMapping(16, TorznabCatType.MoviesHD);
|
||||
AddCategoryMapping(17, TorznabCatType.MoviesSD);
|
||||
AddCategoryMapping(14, TorznabCatType.MoviesSD);
|
||||
AddCategoryMapping(34, TorznabCatType.MoviesForeign);
|
||||
AddCategoryMapping(18, TorznabCatType.MoviesForeign);
|
||||
AddCategoryMapping(33, TorznabCatType.MoviesForeign);
|
||||
|
||||
AddCategoryMapping(34, TorznabCatType.Audio);
|
||||
AddCategoryMapping(37, TorznabCatType.AudioLossless);
|
||||
AddCategoryMapping(35, TorznabCatType.AudioAudiobook);
|
||||
AddCategoryMapping(36, TorznabCatType.AudioMP3);
|
||||
AddCategoryMapping(3, TorznabCatType.Other, "Nuked");
|
||||
AddCategoryMapping(32, TorznabCatType.TVAnime, "Anime");
|
||||
AddCategoryMapping(23, TorznabCatType.PC, "Apps");
|
||||
AddCategoryMapping(35, TorznabCatType.AudioAudiobook, "Audiobooks");
|
||||
AddCategoryMapping(31, TorznabCatType.TV, "Childrens/Cartoons");
|
||||
AddCategoryMapping(54, TorznabCatType.TVDocumentary, "Documentary - HD");
|
||||
AddCategoryMapping(41, TorznabCatType.BooksComics, "Comics");
|
||||
AddCategoryMapping(25, TorznabCatType.PCGames, "Games");
|
||||
AddCategoryMapping(29, TorznabCatType.ConsoleXbox, "Games Xbox");
|
||||
AddCategoryMapping(27, TorznabCatType.PCGames, "Games-PC Rips");
|
||||
AddCategoryMapping(28, TorznabCatType.ConsolePS4, "Games-PSx");
|
||||
AddCategoryMapping(49, TorznabCatType.PCPhoneOther, "Mobile");
|
||||
AddCategoryMapping(59, TorznabCatType.MoviesUHD, "Movies-4k");
|
||||
AddCategoryMapping(60, TorznabCatType.MoviesForeign, "Non-English 4k Movies");
|
||||
AddCategoryMapping(16, TorznabCatType.MoviesHD, "Movies HD");
|
||||
AddCategoryMapping(18, TorznabCatType.MoviesForeign, "Movies HD Non-English");
|
||||
AddCategoryMapping(17, TorznabCatType.MoviesSD, "TS/CAM/PPV");
|
||||
AddCategoryMapping(34, TorznabCatType.MoviesForeign, "Movies Low Def Non-English");
|
||||
AddCategoryMapping(14, TorznabCatType.MoviesSD, "Movies-SD");
|
||||
AddCategoryMapping(33, TorznabCatType.MoviesForeign, "Movies SD Non-English");
|
||||
AddCategoryMapping(30, TorznabCatType.AudioOther, "Music");
|
||||
AddCategoryMapping(37, TorznabCatType.AudioLossless, "FLAC");
|
||||
AddCategoryMapping(36, TorznabCatType.AudioMP3, "MP3");
|
||||
AddCategoryMapping(39, TorznabCatType.AudioOther, "Music Other");
|
||||
AddCategoryMapping(38, TorznabCatType.AudioVideo, "Music Video");
|
||||
AddCategoryMapping(45, TorznabCatType.Other, "Other");
|
||||
AddCategoryMapping(7, TorznabCatType.TVSport, "Sports Tv");
|
||||
AddCategoryMapping(44, TorznabCatType.TVSport, "Sports Fitness-Instructional");
|
||||
AddCategoryMapping(58, TorznabCatType.TVSport, "Olympics");
|
||||
AddCategoryMapping(47, TorznabCatType.TVSD, "TV - 480p");
|
||||
AddCategoryMapping(8, TorznabCatType.TVHD, "TV - High Definition");
|
||||
AddCategoryMapping(48, TorznabCatType.TVSD, "TV - Standard Definition - x264");
|
||||
AddCategoryMapping(9, TorznabCatType.TVSD, "TV - Standard Definition - XviD");
|
||||
AddCategoryMapping(4, TorznabCatType.TVHD, "TV Season Packs - HD");
|
||||
AddCategoryMapping(6, TorznabCatType.TVSD, "TV Season Packs - SD");
|
||||
}
|
||||
|
||||
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
|
||||
|
@@ -69,6 +69,8 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
public async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query, int attempts)
|
||||
{
|
||||
query = query.Clone();
|
||||
|
||||
var originalSearchTerm = query.SearchTerm;
|
||||
if (query.SearchTerm == null)
|
||||
{
|
||||
|
@@ -28,16 +28,36 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
class NewpctRelease : ReleaseInfo
|
||||
{
|
||||
public string SerieName;
|
||||
public ReleaseType NewpctReleaseType;
|
||||
public string SeriesName;
|
||||
public int? Season;
|
||||
public int? Episode;
|
||||
public int? EpisodeTo;
|
||||
|
||||
public NewpctRelease()
|
||||
{
|
||||
}
|
||||
|
||||
public NewpctRelease(NewpctRelease copyFrom):
|
||||
base(copyFrom)
|
||||
{
|
||||
NewpctReleaseType = copyFrom.NewpctReleaseType;
|
||||
SeriesName = copyFrom.SeriesName;
|
||||
Season = copyFrom.Season;
|
||||
Episode = copyFrom.Episode;
|
||||
EpisodeTo = copyFrom.EpisodeTo;
|
||||
}
|
||||
|
||||
public override object Clone()
|
||||
{
|
||||
return new NewpctRelease(this);
|
||||
}
|
||||
}
|
||||
|
||||
private static Uri SiteLinkUri = new Uri("http://www.tvsinpagar.com/");
|
||||
private ReleaseInfo _mostRecentRelease;
|
||||
private NewpctRelease _mostRecentRelease;
|
||||
private Regex _searchStringRegex = new Regex(@"(.+?)S0?(\d+)(E0?(\d+))?$", RegexOptions.IgnoreCase);
|
||||
private Regex _titleListRegex = new Regex(@"Serie(.+?)(Temporada(.+?)(\d+)(.+?))?Capitulos?(.+?)(\d+)((.+?)(\d+))?(.+?)-(.+?)Calidad(.*)", RegexOptions.IgnoreCase);
|
||||
private Regex _titleListRegex = new Regex(@"Serie( *Descargar)?(.+?)(Temporada(.+?)(\d+)(.+?))?Capitulos?(.+?)(\d+)((.+?)(\d+))?(.+?)-(.+?)Calidad(.*)", RegexOptions.IgnoreCase);
|
||||
private Regex _titleClassicRegex = new Regex(@"(\[[^\]]*\])?\[Cap\.(\d{1,2})(\d{2})([_-](\d{1,2})(\d{2}))?\]", RegexOptions.IgnoreCase);
|
||||
private Regex _titleClassicTvQualityRegex = new Regex(@"\[([^\]]*HDTV[^\]]*)", RegexOptions.IgnoreCase);
|
||||
|
||||
@@ -45,6 +65,9 @@ namespace Jackett.Common.Indexers
|
||||
private int _maxEpisodesListPages = 100;
|
||||
private int[] _allTvCategories = TorznabCatType.TV.SubCategories.Select(c => c.ID).ToArray();
|
||||
|
||||
private DateTime _dailyNow;
|
||||
private int _dailyResultIdx;
|
||||
|
||||
private string _dailyUrl = "/ultimas-descargas/pg/{0}";
|
||||
private string[] _seriesLetterUrls = new string[] { "/series/letter/{0}", "/series-hd/letter/{0}" };
|
||||
private string[] _seriesVOLetterUrls = new string[] { "/series-vo/letter/{0}" };
|
||||
@@ -110,6 +133,13 @@ namespace Jackett.Common.Indexers
|
||||
{
|
||||
var releases = new List<ReleaseInfo>();
|
||||
|
||||
lock (cache)
|
||||
{
|
||||
CleanCache();
|
||||
}
|
||||
|
||||
_dailyNow = DateTime.Now;
|
||||
_dailyResultIdx = 0;
|
||||
bool rssMode = string.IsNullOrEmpty(query.SanitizedSearchTerm);
|
||||
|
||||
if (rssMode)
|
||||
@@ -130,7 +160,7 @@ namespace Jackett.Common.Indexers
|
||||
bool recentFound = _mostRecentRelease != null &&
|
||||
items.Any(r => r.Title == _mostRecentRelease.Title && r.Link.AbsoluteUri == _mostRecentRelease.Link.AbsoluteUri);
|
||||
if (pg == 1)
|
||||
_mostRecentRelease = (ReleaseInfo)items.First().Clone();
|
||||
_mostRecentRelease = (NewpctRelease)items.First().Clone();
|
||||
if (recentFound)
|
||||
break;
|
||||
|
||||
@@ -153,7 +183,7 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
private async Task<IEnumerable<ReleaseInfo>> TvSearch(TorznabQuery query)
|
||||
{
|
||||
var newpctReleases = new List<ReleaseInfo>();
|
||||
List<ReleaseInfo> newpctReleases = null;
|
||||
|
||||
string seriesName = query.SanitizedSearchTerm;
|
||||
int? season = query.Season > 0 ? (int?)query.Season : null;
|
||||
@@ -174,22 +204,17 @@ namespace Jackett.Common.Indexers
|
||||
}
|
||||
|
||||
//Try to reuse cache
|
||||
bool cacheFound = false;
|
||||
lock (cache)
|
||||
{
|
||||
CleanCache();
|
||||
var cachedResult = cache.FirstOrDefault(i => i.Query == seriesName.ToLower());
|
||||
if (cachedResult != null && cachedResult.Results != null)
|
||||
{
|
||||
cacheFound = true;
|
||||
newpctReleases = cachedResult.Results.Where(r => (r as NewpctRelease) != null).ToList();
|
||||
if (!newpctReleases.Any() && cachedResult.Results.Any())
|
||||
cacheFound = false;
|
||||
}
|
||||
if (cachedResult != null)
|
||||
newpctReleases = cachedResult.Results.Select(r => (ReleaseInfo)r.Clone()).ToList();
|
||||
}
|
||||
|
||||
if (!cacheFound)
|
||||
if (newpctReleases == null)
|
||||
{
|
||||
newpctReleases = new List<ReleaseInfo>();
|
||||
|
||||
//Search series url
|
||||
foreach (Uri seriesListUrl in SeriesListUris(seriesName))
|
||||
{
|
||||
@@ -288,7 +313,11 @@ namespace Jackett.Common.Indexers
|
||||
foreach (var row in rows)
|
||||
{
|
||||
var anchor = row.QuerySelector("a");
|
||||
var title = anchor.TextContent.Replace("\t", "").Trim();
|
||||
var title = Regex.Replace(anchor.TextContent, @"\s+", " ").Trim();
|
||||
var title2 = Regex.Replace(anchor.GetAttribute("title"), @"\s+", " ").Trim();
|
||||
if (title2.Length >= title.Length)
|
||||
title = title2;
|
||||
|
||||
var detailsUrl = anchor.GetAttribute("href");
|
||||
|
||||
var span = row.QuerySelector("span");
|
||||
@@ -298,16 +327,17 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
var div = row.QuerySelector("div");
|
||||
var language = div.ChildNodes[1].TextContent.Trim();
|
||||
_dailyResultIdx++;
|
||||
|
||||
NewpctRelease newpctRelease;
|
||||
if (releaseType == ReleaseType.TV)
|
||||
newpctRelease = GetReleaseFromData(releaseType,
|
||||
string.Format("Serie {0} - {1} Calidad [{2}]", title, language, quality),
|
||||
detailsUrl, quality, language, ReleaseInfo.GetBytes(sizeText), DateTime.Now);
|
||||
detailsUrl, quality, language, ReleaseInfo.GetBytes(sizeText), _dailyNow - TimeSpan.FromMilliseconds(_dailyResultIdx));
|
||||
else
|
||||
newpctRelease = GetReleaseFromData(releaseType,
|
||||
string.Format("{0} [{1}][{2}]", title, quality, language),
|
||||
detailsUrl, quality, language, ReleaseInfo.GetBytes(sizeText), DateTime.Now);
|
||||
detailsUrl, quality, language, ReleaseInfo.GetBytes(sizeText), _dailyNow - TimeSpan.FromMilliseconds(_dailyResultIdx));
|
||||
|
||||
releases.Add(newpctRelease);
|
||||
}
|
||||
@@ -391,6 +421,7 @@ namespace Jackett.Common.Indexers
|
||||
NewpctRelease GetReleaseFromData(ReleaseType releaseType, string title, string detailsUrl, string quality, string language, long size, DateTime publishDate)
|
||||
{
|
||||
NewpctRelease result = new NewpctRelease();
|
||||
result.NewpctReleaseType = releaseType;
|
||||
|
||||
//Sanitize
|
||||
title = title.Replace("\t", "").Replace("\x2013", "-");
|
||||
@@ -398,30 +429,30 @@ namespace Jackett.Common.Indexers
|
||||
Match match = _titleListRegex.Match(title);
|
||||
if (match.Success)
|
||||
{
|
||||
result.SerieName = match.Groups[1].Value.Trim(' ', '-');
|
||||
result.Season = int.Parse(match.Groups[4].Success ? match.Groups[4].Value.Trim() : "1");
|
||||
result.Episode = int.Parse(match.Groups[7].Value.Trim().PadLeft(2, '0'));
|
||||
result.EpisodeTo = match.Groups[10].Success ? (int?)int.Parse(match.Groups[10].Value.Trim()) : null;
|
||||
string audioQuality = match.Groups[12].Value.Trim(' ', '[', ']');
|
||||
quality = match.Groups[13].Value.Trim(' ', '[', ']');
|
||||
result.SeriesName = match.Groups[2].Value.Trim(' ', '-');
|
||||
result.Season = int.Parse(match.Groups[5].Success ? match.Groups[5].Value.Trim() : "1");
|
||||
result.Episode = int.Parse(match.Groups[8].Value.Trim().PadLeft(2, '0'));
|
||||
result.EpisodeTo = match.Groups[11].Success ? (int?)int.Parse(match.Groups[11].Value.Trim()) : null;
|
||||
string audioQuality = match.Groups[13].Value.Trim(' ', '[', ']');
|
||||
quality = match.Groups[14].Value.Trim(' ', '[', ']');
|
||||
|
||||
string seasonText = result.Season.ToString();
|
||||
string episodeText = seasonText + result.Episode.ToString().PadLeft(2, '0');
|
||||
string episodeToText = result.EpisodeTo.HasValue ? "_" + seasonText + result.EpisodeTo.ToString().PadLeft(2, '0') : "";
|
||||
|
||||
result.Title = string.Format("{0} - Temporada {1} [{2}][Cap.{3}{4}][{5}]",
|
||||
result.SerieName, seasonText, quality, episodeText, episodeToText, audioQuality);
|
||||
result.SeriesName, seasonText, quality, episodeText, episodeToText, audioQuality);
|
||||
}
|
||||
else
|
||||
{
|
||||
Match matchClassic = _titleClassicRegex.Match(title);
|
||||
if (matchClassic.Success)
|
||||
{
|
||||
result.Season = matchClassic.Groups[2].Success ? (int?)int.Parse(matchClassic.Groups[2].Value) : null;
|
||||
result.Episode = matchClassic.Groups[3].Success ? (int?)int.Parse(matchClassic.Groups[3].Value) : null;
|
||||
result.EpisodeTo = matchClassic.Groups[6].Success ? (int?)int.Parse(matchClassic.Groups[6].Value) : null;
|
||||
if (matchClassic.Groups[1].Success)
|
||||
quality = matchClassic.Groups[1].Value;
|
||||
result.Season = matchClassic.Groups[3].Success ? (int?)int.Parse(matchClassic.Groups[3].Value) : null;
|
||||
result.Episode = matchClassic.Groups[4].Success ? (int?)int.Parse(matchClassic.Groups[4].Value) : null;
|
||||
result.EpisodeTo = matchClassic.Groups[7].Success ? (int?)int.Parse(matchClassic.Groups[7].Value) : null;
|
||||
if (matchClassic.Groups[2].Success)
|
||||
quality = matchClassic.Groups[2].Value;
|
||||
}
|
||||
|
||||
result.Title = title;
|
||||
@@ -454,27 +485,30 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
private string FixedTitle(NewpctRelease release, string quality)
|
||||
{
|
||||
if (String.IsNullOrEmpty(release.SerieName))
|
||||
if (String.IsNullOrEmpty(release.SeriesName))
|
||||
{
|
||||
release.SerieName = release.Title;
|
||||
release.SeriesName = release.Title;
|
||||
if (release.Title.Contains("-"))
|
||||
{
|
||||
release.SerieName = release.Title.Substring(0, release.Title.IndexOf('-') - 1);
|
||||
release.SeriesName = release.Title.Substring(0, release.Title.IndexOf('-') - 1);
|
||||
}
|
||||
}
|
||||
if (String.IsNullOrEmpty(quality))
|
||||
{
|
||||
quality = "HDTV";
|
||||
}
|
||||
var seasonAndEpisode = "S" + release.Season.ToString().PadLeft(2, '0');
|
||||
seasonAndEpisode += "E" + release.Episode.ToString().PadLeft(2, '0');
|
||||
if (release.EpisodeTo != release.Episode && release.EpisodeTo != null && release.EpisodeTo != 0)
|
||||
{
|
||||
seasonAndEpisode += "-" + release.EpisodeTo.ToString().PadLeft(2, '0');
|
||||
}
|
||||
var titleParts = new List<string>();
|
||||
titleParts.Add(release.SerieName);
|
||||
titleParts.Add(seasonAndEpisode);
|
||||
titleParts.Add(release.SeriesName);
|
||||
if (release.NewpctReleaseType == ReleaseType.TV)
|
||||
{
|
||||
var seasonAndEpisode = "S" + release.Season.ToString().PadLeft(2, '0');
|
||||
seasonAndEpisode += "E" + release.Episode.ToString().PadLeft(2, '0');
|
||||
if (release.EpisodeTo != release.Episode && release.EpisodeTo != null && release.EpisodeTo != 0)
|
||||
{
|
||||
seasonAndEpisode += "-" + release.EpisodeTo.ToString().PadLeft(2, '0');
|
||||
}
|
||||
titleParts.Add(seasonAndEpisode);
|
||||
}
|
||||
titleParts.Add(quality.Replace("[", "").Replace("]", ""));
|
||||
if (release.Title.ToLower().Contains("esp") || release.Title.ToLower().Contains("cast"))
|
||||
{
|
||||
|
@@ -321,7 +321,7 @@ namespace Jackett.Common.Indexers
|
||||
if (torrentRowList.Count == 0)
|
||||
{
|
||||
// No results found
|
||||
Output("\nNo result found for your query, please try another search term ...\n", "info");
|
||||
Output("\nNo result found for your query, please try another search term or change the theme you're currently using on the site as this is an unsupported solution...\n", "info");
|
||||
|
||||
// No result found for this query
|
||||
break;
|
||||
@@ -678,9 +678,23 @@ namespace Jackett.Common.Indexers
|
||||
/// <returns>JQuery Object</returns>
|
||||
private CQ FindTorrentRows()
|
||||
{
|
||||
// Return all occurencis of torrents found
|
||||
//return _fDom["#content > table > tr"];
|
||||
return _fDom["# base_content > table.mainouter > tbody > tr > td.outer > div.article > table > tbody > tr:not(:first)"];
|
||||
var defaultTheme = new[] { "/templates/1/", "/templates/2/", "/templates/3/", "/templates/4/", "/templates/5/", "/templates/6/", "/templates/11/", "/templates/12/" };
|
||||
var oldV2 = new[] { "/templates/7/", "/templates/8/", "/templates/9/", "/templates/10/", "/templates/14/" };
|
||||
|
||||
if (defaultTheme.Any(_fDom.Document.Body.InnerHTML.Contains))
|
||||
{
|
||||
// Return all occurencis of torrents found
|
||||
// $('#base_content2 > div.article > table > tbody:not(:first) > tr')
|
||||
return _fDom["# base_content2 > div.article > table > tbody:not(:first) > tr"];
|
||||
}
|
||||
|
||||
if (oldV2.Any(_fDom.Document.Body.InnerHTML.Contains))
|
||||
{
|
||||
// Return all occurencis of torrents found
|
||||
// $('#base_content > table.mainouter > tbody > tr > td.outer > div.article > table > tbody')
|
||||
return _fDom["# base_content > table.mainouter > tbody > tr > td.outer > div.article > table > tbody > tr:not(:first)"];
|
||||
}
|
||||
return _fDom;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@@ -309,6 +309,13 @@ namespace Jackett.Common.Indexers
|
||||
}
|
||||
|
||||
var results = await RequestStringWithCookiesAndRetry(searchUrl);
|
||||
if (results.IsRedirect)
|
||||
{
|
||||
// re-login
|
||||
await ApplyConfiguration(null);
|
||||
results = await RequestStringWithCookiesAndRetry(searchUrl);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
CQ dom = results.Content;
|
||||
|
@@ -18,7 +18,7 @@ namespace Jackett.Common.Indexers
|
||||
{
|
||||
public class SpeedCD : BaseWebIndexer
|
||||
{
|
||||
private string LoginUrl { get { return SiteLink + "take.login.php"; } }
|
||||
private string LoginUrl { get { return SiteLink + "takelogin.php"; } }
|
||||
private string SearchUrl { get { return SiteLink + "browse.php"; } }
|
||||
|
||||
private new ConfigurationDataBasicLogin configData
|
||||
@@ -147,18 +147,19 @@ namespace Jackett.Common.Indexers
|
||||
CQ torrentData = row.OuterHTML;
|
||||
CQ cells = row.Cq().Find("td");
|
||||
|
||||
string title = torrentData.Find("a[class='torrent']").First().Text().Trim();
|
||||
Uri link = new Uri(SiteLink + torrentData.Find("img[class='icos save']").First().Parent().Attr("href").Trim());
|
||||
Uri guid = new Uri(SiteLink + torrentData.Find("a[class='torrent']").First().Attr("href").Trim().TrimStart('/'));
|
||||
string title = torrentData.Find("td[class='lft'] > div > a").First().Text().Trim();
|
||||
Uri link = new Uri(SiteLink + torrentData.Find("img[title='Download']").First().Parent().Attr("href").Trim());
|
||||
Uri guid = link;
|
||||
long size = ReleaseInfo.GetBytes(cells.Elements.ElementAt(4).Cq().Text());
|
||||
int seeders = ParseUtil.CoerceInt(cells.Elements.ElementAt(5).Cq().Text());
|
||||
int leechers = ParseUtil.CoerceInt(cells.Elements.ElementAt(6).Cq().Text());
|
||||
int grabs = ParseUtil.CoerceInt(cells.Elements.ElementAt(5).Cq().Text());
|
||||
int seeders = ParseUtil.CoerceInt(cells.Elements.ElementAt(6).Cq().Text());
|
||||
int leechers = ParseUtil.CoerceInt(cells.Elements.ElementAt(7).Cq().Text());
|
||||
|
||||
string pubDateStr = torrentData.Find("span[class^='elapsedDate']").First().Attr("title").Trim().Replace(" at", "");
|
||||
DateTime publishDate = DateTime.ParseExact(pubDateStr, "dddd, MMMM d, yyyy h:mmtt", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal).ToLocalTime();
|
||||
|
||||
long category = 0;
|
||||
string cat = torrentData.Find("a[class='cat']").First().Attr("id").Trim();
|
||||
string cat = torrentData.Find("img[class^='Tcat']").First().Parent().Attr("href").Trim().Remove(0, 5);
|
||||
long.TryParse(cat, out category);
|
||||
|
||||
var release = new ReleaseInfo();
|
||||
@@ -168,6 +169,7 @@ namespace Jackett.Common.Indexers
|
||||
release.Link = link;
|
||||
release.PublishDate = publishDate;
|
||||
release.Size = size;
|
||||
release.Grabs = grabs;
|
||||
release.Seeders = seeders;
|
||||
release.Peers = seeders + leechers;
|
||||
release.MinimumRatio = 1;
|
||||
|
@@ -37,6 +37,10 @@ namespace Jackett.Common.Indexers
|
||||
"https://www.torrentday.ru/",
|
||||
"https://www.td.af/",
|
||||
"https://torrentday.it/",
|
||||
"https://td.findnemo.net",
|
||||
"https://td.getcrazy.me",
|
||||
"https://td.venom.global",
|
||||
"https://td.workisboring.net",
|
||||
};
|
||||
|
||||
private new ConfigurationDataRecaptchaLogin configData
|
||||
@@ -54,7 +58,7 @@ namespace Jackett.Common.Indexers
|
||||
client: wc,
|
||||
logger: l,
|
||||
p: ps,
|
||||
configData: new ConfigurationDataRecaptchaLogin())
|
||||
configData: new ConfigurationDataRecaptchaLogin("Make sure you get the cookies from the same torrent day domain as configured above."))
|
||||
{
|
||||
wc.EmulateBrowser = false;
|
||||
Encoding = Encoding.UTF8;
|
||||
@@ -121,7 +125,9 @@ namespace Jackett.Common.Indexers
|
||||
loginPage = await RequestStringWithCookies(loginPage.RedirectingTo, string.Empty);
|
||||
CQ cq = loginPage.Content;
|
||||
var result = this.configData;
|
||||
result.CookieHeader.Value = loginPage.Cookies;
|
||||
|
||||
//result.CookieHeader.Value = loginPage.Cookies;
|
||||
UpdateCookieHeader(loginPage.Cookies); // update cookies instead of replacing them, see #3717
|
||||
result.Captcha.SiteKey = cq.Find(".g-recaptcha").Attr("data-sitekey");
|
||||
result.Captcha.Version = "2";
|
||||
return result;
|
||||
|
@@ -52,40 +52,35 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
AddCategoryMapping(2, TorznabCatType.PC, "Apps / Windows");
|
||||
AddCategoryMapping(13, TorznabCatType.PC, "Apps / Linux");
|
||||
AddCategoryMapping(4, TorznabCatType.PCMac, "Apps / Mac");
|
||||
AddCategoryMapping(4, TorznabCatType.PCMac, "Apps / MacOS");
|
||||
AddCategoryMapping(6, TorznabCatType.PC, "Apps / Misc");
|
||||
|
||||
AddCategoryMapping(12, TorznabCatType.PCGames, "Spiele / PC");
|
||||
AddCategoryMapping(8, TorznabCatType.ConsolePSP, "Spiele / PSX/PSP");
|
||||
AddCategoryMapping(7, TorznabCatType.ConsoleWii, "Spiele / Wii");
|
||||
AddCategoryMapping(32, TorznabCatType.ConsoleXbox, "Spiele / XBOX");
|
||||
AddCategoryMapping(41, TorznabCatType.ConsoleOther, "Spiele / Misc");
|
||||
AddCategoryMapping(50, TorznabCatType.PCGames, "Spiele / Windows");
|
||||
AddCategoryMapping(51, TorznabCatType.PCGames, "Spiele / MacOS");
|
||||
AddCategoryMapping(52, TorznabCatType.PCGames, "Spiele / Linux");
|
||||
AddCategoryMapping(8, TorznabCatType.ConsoleOther, "Spiele / Playstation");
|
||||
AddCategoryMapping(7, TorznabCatType.ConsoleOther, "Spiele / Nintendo");
|
||||
AddCategoryMapping(32, TorznabCatType.ConsoleOther, "Spiele / XBOX");
|
||||
|
||||
AddCategoryMapping(22, TorznabCatType.Movies3D, "Filme / 3D");
|
||||
AddCategoryMapping(3, TorznabCatType.MoviesBluRay, "Filme / BluRay");
|
||||
AddCategoryMapping(11, TorznabCatType.MoviesOther, "Filme / REMUX");
|
||||
AddCategoryMapping(42, TorznabCatType.MoviesUHD, "Filme / 2160p");
|
||||
AddCategoryMapping(9, TorznabCatType.MoviesHD, "Filme / 1080p");
|
||||
AddCategoryMapping(20, TorznabCatType.MoviesHD, "Filme / 720p");
|
||||
AddCategoryMapping(21, TorznabCatType.MoviesDVD, "Filme / DVD");
|
||||
AddCategoryMapping(10, TorznabCatType.MoviesSD, "Filme / SD");
|
||||
AddCategoryMapping(31, TorznabCatType.MoviesOther, "Filme / Anime");
|
||||
|
||||
AddCategoryMapping(43, TorznabCatType.TVUHD, "TV / Serien/UHD");
|
||||
AddCategoryMapping(16, TorznabCatType.TVHD, "TV / Serien/HD");
|
||||
AddCategoryMapping(15, TorznabCatType.TVSD, "TV / Serien/SD");
|
||||
AddCategoryMapping(44, TorznabCatType.TVUHD, "TV / Packs/UHD");
|
||||
AddCategoryMapping(23, TorznabCatType.TVHD, "TV / Packs/HD");
|
||||
AddCategoryMapping(27, TorznabCatType.TVSD, "TV / Packs/SD");
|
||||
AddCategoryMapping(28, TorznabCatType.TVDocumentary, "TV / Dokus/SD");
|
||||
AddCategoryMapping(29, TorznabCatType.TVDocumentary, "TV / Dokus/HD");
|
||||
AddCategoryMapping(30, TorznabCatType.TVSport, "TV / Sport");
|
||||
AddCategoryMapping(40, TorznabCatType.TVAnime, "TV / Anime");
|
||||
AddCategoryMapping(43, TorznabCatType.TVUHD, "Serien / 2160p");
|
||||
AddCategoryMapping(53, TorznabCatType.TVHD, "Serien / 1080p");
|
||||
AddCategoryMapping(54, TorznabCatType.TVHD, "Serien / 720p");
|
||||
AddCategoryMapping(15, TorznabCatType.TVSD, "Serien / SD");
|
||||
AddCategoryMapping(30, TorznabCatType.TVSport, "Serien / Sport");
|
||||
|
||||
AddCategoryMapping(24, TorznabCatType.AudioLossless, "Audio / FLAC");
|
||||
AddCategoryMapping(25, TorznabCatType.AudioMP3, "Audio / MP3");
|
||||
AddCategoryMapping(44, TorznabCatType.TVUHD, "Serienpacks / 2160p");
|
||||
AddCategoryMapping(55, TorznabCatType.TVHD, "Serienpacks / 1080p");
|
||||
AddCategoryMapping(56, TorznabCatType.TVHD, "Serienpacks / 720p");
|
||||
AddCategoryMapping(27, TorznabCatType.TVSD, "Serienpacks / SD");
|
||||
|
||||
AddCategoryMapping(24, TorznabCatType.AudioLossless, "Audio / Musik / FLAC");
|
||||
AddCategoryMapping(25, TorznabCatType.AudioMP3, "Audio / Musik / MP3");
|
||||
AddCategoryMapping(35, TorznabCatType.AudioOther, "Audio / Other");
|
||||
AddCategoryMapping(26, TorznabCatType.Audio, "Audio / Packs");
|
||||
AddCategoryMapping(18, TorznabCatType.AudioAudiobook, "Audio / aBooks");
|
||||
AddCategoryMapping(33, TorznabCatType.AudioVideo, "Audio / Videos");
|
||||
|
||||
@@ -93,7 +88,8 @@ namespace Jackett.Common.Indexers
|
||||
AddCategoryMapping(5, TorznabCatType.PCPhoneOther, "Misc / Mobile");
|
||||
AddCategoryMapping(39, TorznabCatType.Other, "Misc / Bildung");
|
||||
|
||||
AddCategoryMapping(36, TorznabCatType.TVFOREIGN, "Englisch / TV");
|
||||
AddCategoryMapping(36, TorznabCatType.TVFOREIGN, "Englisch / Serien");
|
||||
AddCategoryMapping(57, TorznabCatType.TVFOREIGN, "Englisch / Serienpacks");
|
||||
AddCategoryMapping(37, TorznabCatType.MoviesForeign, "Englisch / Filme");
|
||||
AddCategoryMapping(47, TorznabCatType.Books, "Englisch / eBooks");
|
||||
AddCategoryMapping(48, TorznabCatType.Other, "Englisch / Bildung");
|
||||
|
@@ -1470,7 +1470,7 @@ namespace Jackett.Common.Indexers
|
||||
{
|
||||
{ "login_username", configData.Username.Value },
|
||||
{ "login_password", configData.Password.Value },
|
||||
{ "login", "entry" }
|
||||
{ "login", "Login" }
|
||||
};
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(cap_sid))
|
||||
@@ -1483,9 +1483,10 @@ namespace Jackett.Common.Indexers
|
||||
}
|
||||
|
||||
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, CookieHeader, true, null, LoginUrl, true);
|
||||
await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("class=\"logged-in-as-uname\""), () =>
|
||||
await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("id=\"logged-in-username\""), () =>
|
||||
{
|
||||
var errorMessage = result.Content;
|
||||
logger.Debug(result.Content);
|
||||
var errorMessage = "Unknown error message, please report";
|
||||
var LoginResultParser = new HtmlParser();
|
||||
var LoginResultDocument = LoginResultParser.Parse(result.Content);
|
||||
var errormsg = LoginResultDocument.QuerySelector("h4[class=\"warnColor1 tCenter mrg_16\"]");
|
||||
@@ -1521,7 +1522,7 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
var searchUrl = SearchUrl + "?" + queryCollection.GetQueryString();
|
||||
var results = await RequestStringWithCookies(searchUrl);
|
||||
if (!results.Content.Contains("class=\"logged-in-as-uname\""))
|
||||
if (!results.Content.Contains("id=\"logged-in-username\""))
|
||||
{
|
||||
// re login
|
||||
await ApplyConfiguration(null);
|
||||
|
@@ -1,187 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Models.IndexerConfig;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
public class Yify : BaseWebIndexer
|
||||
{
|
||||
public override string[] LegacySiteLinks { get; protected set; } = new string[] {
|
||||
"https://yts.me/",
|
||||
"https://yts.pe/",
|
||||
};
|
||||
|
||||
private string ApiEndpoint { get { return SiteLink + "api/v2/list_movies.json"; } }
|
||||
|
||||
private new ConfigurationData configData
|
||||
{
|
||||
get { return (ConfigurationData)base.configData; }
|
||||
set { base.configData = value; }
|
||||
}
|
||||
|
||||
public Yify(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
|
||||
: base(name: "YIFY",
|
||||
description: "YIFY is a Public torrent site specialising in HD movies of small size",
|
||||
link: "https://yifymovie.co/",
|
||||
caps: new TorznabCapabilities(),
|
||||
configService: configService,
|
||||
client: wc,
|
||||
logger: l,
|
||||
p: ps,
|
||||
configData: new ConfigurationData())
|
||||
{
|
||||
Encoding = Encoding.GetEncoding("windows-1252");
|
||||
Language = "en-us";
|
||||
Type = "public";
|
||||
|
||||
TorznabCaps.SupportsImdbSearch = true;
|
||||
|
||||
webclient.requestDelay = 2.5; // 0.5 requests per second (2 causes problems)
|
||||
|
||||
AddCategoryMapping(1, TorznabCatType.MoviesHD, "Movies/x264/720");
|
||||
AddCategoryMapping(2, TorznabCatType.MoviesHD, "Movies/x264/1080");
|
||||
AddCategoryMapping(3, TorznabCatType.MoviesUHD, "Movies/x264/2160");
|
||||
AddCategoryMapping(4, TorznabCatType.Movies3D, "Movies/x264/3D");
|
||||
}
|
||||
|
||||
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
|
||||
{
|
||||
configData.LoadValuesFromJson(configJson);
|
||||
var releases = await PerformQuery(new TorznabQuery());
|
||||
|
||||
await ConfigureIfOK(string.Empty, releases.Count() > 0, () =>
|
||||
{
|
||||
throw new Exception("Could not find releases from this URL");
|
||||
});
|
||||
|
||||
return IndexerConfigurationStatus.Completed;
|
||||
}
|
||||
|
||||
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
|
||||
{
|
||||
return await PerformQuery(query, 0);
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query, int attempts)
|
||||
{
|
||||
var releases = new List<ReleaseInfo>();
|
||||
var searchString = query.GetQueryString();
|
||||
|
||||
var queryCollection = new NameValueCollection();
|
||||
|
||||
if (query.ImdbID != null)
|
||||
{
|
||||
queryCollection.Add("query_term", query.ImdbID);
|
||||
}
|
||||
else if (!string.IsNullOrWhiteSpace(searchString))
|
||||
{
|
||||
searchString = searchString.Replace("'", ""); // ignore ' (e.g. search for america's Next Top Model)
|
||||
queryCollection.Add("query_term", searchString);
|
||||
}
|
||||
|
||||
var searchUrl = ApiEndpoint + "?" + queryCollection.GetQueryString();
|
||||
var response = await RequestStringWithCookiesAndRetry(searchUrl, string.Empty);
|
||||
|
||||
try
|
||||
{
|
||||
var jsonContent = JObject.Parse(response.Content);
|
||||
|
||||
string result = jsonContent.Value<string>("status");
|
||||
if (result != "ok") // query was not successful
|
||||
{
|
||||
return releases.ToArray();
|
||||
}
|
||||
|
||||
var data_items = jsonContent.Value<JToken>("data");
|
||||
int movie_count = data_items.Value<int>("movie_count");
|
||||
if (movie_count < 1) // no results found in query
|
||||
{
|
||||
return releases.ToArray();
|
||||
}
|
||||
|
||||
foreach (var movie_item in data_items.Value<JToken>("movies"))
|
||||
{
|
||||
var torrents = movie_item.Value<JArray>("torrents");
|
||||
if (torrents == null)
|
||||
continue;
|
||||
foreach (var torrent_info in torrents)
|
||||
{
|
||||
var release = new ReleaseInfo();
|
||||
|
||||
// Append the quality to the title because thats how radarr seems to be determining the quality?
|
||||
// All releases are BRRips, see issue #2200
|
||||
release.Title = movie_item.Value<string>("title_long") + " " + torrent_info.Value<string>("quality") + " BRRip";
|
||||
var imdb = movie_item.Value<string>("imdb_code");
|
||||
release.Imdb = ParseUtil.GetImdbID(imdb);
|
||||
|
||||
// API does not provide magnet link, so, construct it
|
||||
string magnet_uri = "magnet:?xt=urn:btih:" + torrent_info.Value<string>("hash") +
|
||||
"&dn=" + movie_item.Value<string>("slug") +
|
||||
"&tr=udp://open.demonii.com:1337/announce" +
|
||||
"&tr=udp://tracker.openbittorrent.com:80" +
|
||||
"&tr=udp://tracker.coppersurfer.tk:6969" +
|
||||
"&tr=udp://glotorrents.pw:6969/announce" +
|
||||
"&tr=udp://tracker.opentrackr.org:1337/announce" +
|
||||
"&tr=udp://torrent.gresille.org:80/announce" +
|
||||
"&tr=udp://p4p.arenabg.com:1337" +
|
||||
"&tr=udp://tracker.leechers-paradise.org:6969";
|
||||
|
||||
release.MagnetUri = new Uri(magnet_uri);
|
||||
release.InfoHash = torrent_info.Value<string>("hash");
|
||||
|
||||
var dateStr = torrent_info.Value<long>("date_uploaded_unix");
|
||||
var dateTime = DateTimeUtil.UnixTimestampToDateTime(dateStr);
|
||||
release.PublishDate = DateTime.SpecifyKind(dateTime, DateTimeKind.Utc).ToLocalTime();
|
||||
release.Link = new Uri(torrent_info.Value<string>("url"));
|
||||
release.Seeders = torrent_info.Value<int>("seeds");
|
||||
release.Peers = torrent_info.Value<int>("peers") + release.Seeders;
|
||||
release.Size = torrent_info.Value<long>("size_bytes");
|
||||
release.DownloadVolumeFactor = 0;
|
||||
release.UploadVolumeFactor = 1;
|
||||
|
||||
release.Comments = new Uri(movie_item.Value<string>("url"));
|
||||
release.BannerUrl = new Uri(movie_item.Value<string>("medium_cover_image"));
|
||||
release.Guid = release.Link;
|
||||
|
||||
// API doesn't provide Categories, resolve via quality
|
||||
release.Category = MapTrackerCatToNewznab("1"); // default
|
||||
if (torrent_info.Value<string>("quality") == "720p")
|
||||
{
|
||||
release.Category = MapTrackerCatToNewznab("1");
|
||||
}
|
||||
if (torrent_info.Value<string>("quality") == "1080p")
|
||||
{
|
||||
release.Category = MapTrackerCatToNewznab("2");
|
||||
}
|
||||
if (torrent_info.Value<string>("quality") == "2160p")
|
||||
{
|
||||
release.Category = MapTrackerCatToNewznab("3");
|
||||
}
|
||||
if (torrent_info.Value<string>("quality") == "3D")
|
||||
{
|
||||
release.Category = MapTrackerCatToNewznab("4");
|
||||
}
|
||||
releases.Add(release);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
OnParseError(response.Content, ex);
|
||||
}
|
||||
|
||||
return releases;
|
||||
}
|
||||
}
|
||||
}
|
@@ -16,14 +16,14 @@
|
||||
<PackageReference Include="Microsoft.CSharp" Version="4.5.0" />
|
||||
<PackageReference Include="MimeMapping" Version="1.0.1.12" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
|
||||
<PackageReference Include="NLog" Version="4.5.8" />
|
||||
<PackageReference Include="NLog" Version="4.5.9" />
|
||||
<PackageReference Include="SharpZipLib" Version="1.0.0" />
|
||||
<PackageReference Include="YamlDotNet" Version="5.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Conditionally obtain references for the .NET Full framework target -->
|
||||
<ItemGroup Condition="'$(TargetFramework)' != 'netstandard2.0'">
|
||||
<PackageReference Include="CsQuery" Version="1.3.5-beta5" />
|
||||
<PackageReference Include="SharpZipLib" Version="0.86.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="1.1.2" />
|
||||
<Reference Include="System.ServiceProcess" />
|
||||
</ItemGroup>
|
||||
@@ -31,7 +31,6 @@
|
||||
<!-- Conditionally obtain references for the .NETStandard target -->
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
|
||||
<PackageReference Include="CsQuery.NETStandard" Version="1.3.6.1" />
|
||||
<PackageReference Include="SharpZipLib" Version="1.0.0-alpha2" />
|
||||
<PackageReference Include="System.IO.FileSystem.AccessControl" Version="4.5.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.1.1" />
|
||||
<PackageReference Include="System.ServiceProcess.ServiceController" Version="4.5.0" />
|
||||
|
@@ -1,5 +1,4 @@
|
||||
using CommandLine;
|
||||
using Jackett.Common.Utils;
|
||||
using System;
|
||||
|
||||
namespace Jackett.Common.Models.Config
|
||||
@@ -9,55 +8,46 @@ namespace Jackett.Common.Models.Config
|
||||
[Option('i', "Install", HelpText = "Install Jackett windows service (Must be admin)")]
|
||||
public bool Install { get; set; }
|
||||
|
||||
[Option('r', "ReserveUrls", HelpText = "(Re)Register windows port reservations (Required for listening on all interfaces).")]
|
||||
[Option('r', "ReserveUrls", HelpText = "(Re)Register windows port reservations (Required for listening on all interfaces).")]
|
||||
public bool ReserveUrls { get; set; }
|
||||
|
||||
[Option('u', "Uninstall", HelpText = "Uninstall Jackett windows service (Must be admin).")]
|
||||
public bool Uninstall { get; set; }
|
||||
|
||||
[Option('l', "Logging", HelpText = "Log all requests/responses to Jackett")]
|
||||
[Option('l', "Logging", HelpText = "Log all requests/responses to Jackett")]
|
||||
public bool Logging { get; set; }
|
||||
|
||||
[Option('t', "Tracing", HelpText = "Enable tracing")]
|
||||
public bool Tracing { get; set; }
|
||||
|
||||
[Option('c', "UseClient", HelpText = "Override web client selection. [automatic(Default)/libcurl/safecurl/httpclient/httpclient2]")]
|
||||
[Option('c', "UseClient", HelpText = "Override web client selection. [automatic(Default)/httpclient/httpclient2]")]
|
||||
public string Client { get; set; }
|
||||
|
||||
[Option('j', "ProxyConnection", HelpText = "use proxy - e.g. 127.0.0.1:8888")]
|
||||
public string ProxyConnection { get; set; }
|
||||
|
||||
[Option('s', "Start", HelpText = "Start the Jacket Windows service (Must be admin)")]
|
||||
[Option('s', "Start", HelpText = "Start the Jacket Windows service (Must be admin)")]
|
||||
public bool StartService { get; set; }
|
||||
|
||||
[Option('k', "Stop", HelpText = "Stop the Jacket Windows service (Must be admin)")]
|
||||
public bool StopService { get; set; }
|
||||
|
||||
[Option('x', "ListenPublic", HelpText = "Listen publicly")]
|
||||
[Option('x', "ListenPublic", HelpText = "Listen publicly")]
|
||||
public bool ListenPublic { get; set; }
|
||||
|
||||
[Option('z', "ListenPrivate", HelpText = "Only allow local access")]
|
||||
public bool ListenPrivate { get; set; }
|
||||
|
||||
[Option('h', "Help", HelpText = "Show Help")]
|
||||
public bool ShowHelp { get; set; }
|
||||
|
||||
[Option('v', "Version", HelpText = "Show Version")]
|
||||
public bool ShowVersion { get; set; }
|
||||
|
||||
[Option('p', "Port", HelpText = "Web server port")]
|
||||
public int Port { get; set; }
|
||||
|
||||
[Option('m', "MigrateSettings", HelpText = "Migrate settings manually (Must be admin on Windows)")]
|
||||
public bool MigrateSettings { get; set; }
|
||||
|
||||
[Option('f', "SSLFix", HelpText = "[true/false] Linux Libcurl NSS Missing ECC Ciphers workaround (Use if you can't access some trackers) .")]
|
||||
public bool? SSLFix { get; set; }
|
||||
|
||||
[Option('n', "IgnoreSslErrors", HelpText = "[true/false] Ignores invalid SSL certificates")]
|
||||
public bool? IgnoreSslErrors { get; set; }
|
||||
|
||||
[Option('d', "DataFolder", HelpText = "Specify the location of the data folder (Must be admin on Windows) eg. --DataFolder=\"D:\\Your Data\\Jackett\\\". Don't use this on Unix (mono) systems. On Unix just adjust the HOME directory of the user to the datedir or set the XDG_CONFIG_HOME environment variable.")]
|
||||
[Option('d', "DataFolder", HelpText = "Specify the location of the data folder (Must be admin on Windows) eg. --DataFolder=\"D:\\Your Data\\Jackett\\\". Don't use this on Unix (mono) systems. On Unix just adjust the HOME directory of the user to the datadir or set the XDG_CONFIG_HOME environment variable.")]
|
||||
public string DataFolder { get; set; }
|
||||
|
||||
[Option("NoRestart", HelpText = "Don't restart after update")]
|
||||
@@ -87,9 +77,6 @@ namespace Jackett.Common.Models.Config
|
||||
Environment.Exit(1);
|
||||
}
|
||||
|
||||
// SSL Fix
|
||||
runtimeSettings.DoSSLFix = options.SSLFix;
|
||||
|
||||
// Use curl
|
||||
if (options.Client != null)
|
||||
runtimeSettings.ClientOverride = options.Client.ToLowerInvariant();
|
||||
|
@@ -13,8 +13,6 @@ namespace Jackett.Common.Models.Config
|
||||
|
||||
public string ProxyConnection { get; set; }
|
||||
|
||||
public bool? DoSSLFix { get; set; }
|
||||
|
||||
public bool? IgnoreSslErrors { get; set; }
|
||||
|
||||
public string CustomDataFolder { get; set; }
|
||||
|
@@ -104,8 +104,7 @@ namespace Jackett.Common.Models.Config
|
||||
else
|
||||
{
|
||||
return new string[] {
|
||||
"http://127.0.0.1:" + Port + "/",
|
||||
"http://localhost:" + Port + "/",
|
||||
"http://127.0.0.1:" + Port + "/"
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@@ -45,33 +45,39 @@ namespace Jackett.Common.Models
|
||||
}
|
||||
}
|
||||
|
||||
public object Clone()
|
||||
public ReleaseInfo()
|
||||
{
|
||||
return new ReleaseInfo()
|
||||
{
|
||||
Title = Title,
|
||||
Guid = Guid,
|
||||
Link = Link,
|
||||
Comments = Comments,
|
||||
PublishDate = PublishDate,
|
||||
Category = Category,
|
||||
Size = Size,
|
||||
Files = Files,
|
||||
Grabs = Grabs,
|
||||
Description = Description,
|
||||
RageID = RageID,
|
||||
Imdb = Imdb,
|
||||
TMDb = TMDb,
|
||||
Seeders = Seeders,
|
||||
Peers = Peers,
|
||||
BannerUrl = BannerUrl,
|
||||
InfoHash = InfoHash,
|
||||
MagnetUri = MagnetUri,
|
||||
MinimumRatio = MinimumRatio,
|
||||
MinimumSeedTime = MinimumSeedTime,
|
||||
DownloadVolumeFactor = DownloadVolumeFactor,
|
||||
UploadVolumeFactor = UploadVolumeFactor
|
||||
};
|
||||
}
|
||||
|
||||
protected ReleaseInfo(ReleaseInfo copyFrom)
|
||||
{
|
||||
Title = copyFrom.Title;
|
||||
Guid = copyFrom.Guid;
|
||||
Link = copyFrom.Link;
|
||||
Comments = copyFrom.Comments;
|
||||
PublishDate = copyFrom.PublishDate;
|
||||
Category = copyFrom.Category;
|
||||
Size = copyFrom.Size;
|
||||
Files = copyFrom.Files;
|
||||
Grabs = copyFrom.Grabs;
|
||||
Description = copyFrom.Description;
|
||||
RageID = copyFrom.RageID;
|
||||
Imdb = copyFrom.Imdb;
|
||||
TMDb = copyFrom.TMDb;
|
||||
Seeders = copyFrom.Seeders;
|
||||
Peers = copyFrom.Peers;
|
||||
BannerUrl = copyFrom.BannerUrl;
|
||||
InfoHash = copyFrom.InfoHash;
|
||||
MagnetUri = copyFrom.MagnetUri;
|
||||
MinimumRatio = copyFrom.MinimumRatio;
|
||||
MinimumSeedTime = copyFrom.MinimumSeedTime;
|
||||
DownloadVolumeFactor = copyFrom.DownloadVolumeFactor;
|
||||
UploadVolumeFactor = copyFrom.UploadVolumeFactor;
|
||||
}
|
||||
|
||||
public virtual object Clone()
|
||||
{
|
||||
return new ReleaseInfo(this);
|
||||
}
|
||||
|
||||
// ex: " 3.5 gb "
|
||||
|
@@ -49,12 +49,12 @@ namespace Jackett.Common.Plumbing
|
||||
return BuildServerConfig(ctx);
|
||||
}).As<ServerConfig>().SingleInstance();
|
||||
builder.RegisterType<HttpWebClient>();
|
||||
|
||||
|
||||
// Register the best web client for the platform or the override
|
||||
switch (_runtimeSettings.ClientOverride)
|
||||
{
|
||||
case "httpclientnetcore":
|
||||
// do nothing, registered by the netcore app
|
||||
RegisterWebClient<HttpWebClientNetCore>(builder);
|
||||
break;
|
||||
case "httpclient":
|
||||
RegisterWebClient<HttpWebClient>(builder);
|
||||
|
@@ -19,12 +19,6 @@ namespace Jackett.Server
|
||||
Environment.Exit(1);
|
||||
}
|
||||
|
||||
if (runtimeSettings.DoSSLFix != null)
|
||||
{
|
||||
logger.Error("SSLFix has been deprecated, please remove it from your start arguments");
|
||||
Environment.Exit(1);
|
||||
}
|
||||
|
||||
if (runtimeSettings.LogRequests)
|
||||
{
|
||||
logger.Info("Logging enabled.");
|
||||
@@ -159,5 +153,32 @@ namespace Jackett.Server
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void CheckEnvironmentalVariables(Logger logger)
|
||||
{
|
||||
//Check the users environmental variables to ensure they aren't using Mono legacy TLS
|
||||
|
||||
var enumerator = Environment.GetEnvironmentVariables().GetEnumerator();
|
||||
while (enumerator.MoveNext())
|
||||
{
|
||||
if (enumerator.Key.ToString().Equals("MONO_TLS_PROVIDER", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
logger.Info("MONO_TLS_PROVIDER is present with a value of: " + enumerator.Value.ToString());
|
||||
|
||||
if (enumerator.Value.ToString().IndexOf("legacy", StringComparison.OrdinalIgnoreCase) >= 0)
|
||||
{
|
||||
logger.Error("The MONO_TLS_PROVIDER=legacy environment variable is not supported, please remove it.");
|
||||
Environment.Exit(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (enumerator.Key.ToString().IndexOf("MONO_", StringComparison.OrdinalIgnoreCase) >= 0)
|
||||
{
|
||||
logger.Info($"Environment variable {enumerator.Key} is present");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -25,15 +25,15 @@
|
||||
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.3.0" />
|
||||
<PackageReference Include="AutoMapper" Version="7.0.1" />
|
||||
<PackageReference Include="CommandLineParser" Version="2.3.0" />
|
||||
<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" />
|
||||
<PackageReference Include="Microsoft.AspNetCore" Version="2.1.3" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication" Version="2.1.2" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="2.1.2" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.2" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.ResponseCompression" Version="2.1.1" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Rewrite" Version="2.1.1" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.1.1" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.1.1" />
|
||||
<PackageReference Include="NLog" Version="4.5.8" />
|
||||
<PackageReference Include="NLog" Version="4.5.9" />
|
||||
<PackageReference Include="NLog.Web.AspNetCore" Version="4.6.0" />
|
||||
<PackageReference Include="System.ServiceProcess.ServiceController" Version="4.5.0" />
|
||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.5.0" />
|
||||
@@ -53,6 +53,9 @@
|
||||
<Content Include="..\..\Upstart.config" Visible="false">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="..\..\install_service_macos" Visible="false">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
@@ -47,7 +47,6 @@ namespace Jackett.Server
|
||||
{
|
||||
if (string.IsNullOrEmpty(options.Client))
|
||||
{
|
||||
//TODO: Remove libcurl once off owin
|
||||
bool runningOnDotNetCore = RuntimeInformation.FrameworkDescription.IndexOf("Core", StringComparison.OrdinalIgnoreCase) >= 0;
|
||||
|
||||
if (runningOnDotNetCore)
|
||||
@@ -83,6 +82,7 @@ namespace Jackett.Server
|
||||
}
|
||||
}
|
||||
|
||||
Initialisation.CheckEnvironmentalVariables(logger);
|
||||
Initialisation.ProcessSettings(Settings, logger);
|
||||
|
||||
ISerializeService serializeService = new SerializeService();
|
||||
@@ -124,7 +124,7 @@ namespace Jackett.Server
|
||||
|
||||
ServerConfig serverConfig = configurationService.BuildServerConfig(Settings);
|
||||
Int32.TryParse(serverConfig.Port.ToString(), out Int32 configPort);
|
||||
string[] url = serverConfig.GetListenAddresses(serverConfig.AllowExternal).Take(1).ToArray(); //Kestrel doesn't need 127.0.0.1 and localhost to be registered, remove once off OWIN
|
||||
string[] url = serverConfig.GetListenAddresses(serverConfig.AllowExternal);
|
||||
|
||||
isWebHostRestart = false;
|
||||
|
||||
|
@@ -3,7 +3,6 @@ using Autofac.Extensions.DependencyInjection;
|
||||
using Jackett.Common.Models.Config;
|
||||
using Jackett.Common.Plumbing;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using Jackett.Server.Middleware;
|
||||
using Jackett.Server.Services;
|
||||
using Microsoft.AspNetCore.Authentication.Cookies;
|
||||
@@ -84,8 +83,6 @@ namespace Jackett.Server
|
||||
builder.RegisterType<ServerService>().As<IServerService>();
|
||||
builder.RegisterType<ProtectionService>().As<IProtectionService>();
|
||||
builder.RegisterType<ServiceConfigService>().As<IServiceConfigService>();
|
||||
if (runtimeSettings.ClientOverride == "httpclientnetcore")
|
||||
builder.RegisterType<HttpWebClientNetCore>().As<WebClient>();
|
||||
|
||||
IContainer container = builder.Build();
|
||||
Helper.ApplicationContainer = container;
|
||||
|
@@ -22,13 +22,13 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Autofac" Version="4.8.1" />
|
||||
<PackageReference Include="FluentAssertions" Version="5.4.1" />
|
||||
<PackageReference Include="FluentAssertions" Version="5.4.2" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.DataProtection" Version="2.1.1" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" />
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="1.3.2" />
|
||||
<PackageReference Include="MSTest.TestFramework" Version="1.3.2" />
|
||||
<PackageReference Include="NUnit" Version="3.10.1" />
|
||||
<PackageReference Include="NUnit.ConsoleRunner" Version="3.8.0" />
|
||||
<PackageReference Include="NUnit.ConsoleRunner" Version="3.9.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="3.10.0" />
|
||||
</ItemGroup>
|
||||
|
||||
|
@@ -87,10 +87,34 @@ namespace Jackett.Updater
|
||||
{
|
||||
var proc = Process.GetProcessById(pid);
|
||||
logger.Info("Killing process " + proc.Id);
|
||||
proc.Kill();
|
||||
var exited = proc.WaitForExit(5000);
|
||||
|
||||
// try to kill gracefully (on unix) first, see #3692
|
||||
var exited = false;
|
||||
if (Environment.OSVersion.Platform == PlatformID.Unix)
|
||||
{
|
||||
try
|
||||
{
|
||||
var startInfo = new ProcessStartInfo();
|
||||
startInfo.Arguments = "-15 " + pid;
|
||||
startInfo.FileName = "kill";
|
||||
Process.Start(startInfo);
|
||||
System.Threading.Thread.Sleep(1000); // just sleep, WaitForExit() doesn't seem to work on mono/linux (returns immediantly), https://bugzilla.xamarin.com/show_bug.cgi?id=51742
|
||||
exited = proc.WaitForExit(2000);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
logger.Error(e, "Error while sending SIGTERM to " + pid.ToString());
|
||||
}
|
||||
if (!exited)
|
||||
logger.Info("Process " + pid.ToString() + " didn't exit within 2 seconds after a SIGTERM");
|
||||
}
|
||||
if (!exited)
|
||||
logger.Info("Process " + pid.ToString() + " didn't exit within 5 seconds");
|
||||
{
|
||||
proc.Kill(); // send SIGKILL
|
||||
}
|
||||
exited = proc.WaitForExit(5000);
|
||||
if (!exited)
|
||||
logger.Info("Process " + pid.ToString() + " didn't exit within 5 seconds after a SIGKILL");
|
||||
}
|
||||
catch (ArgumentException)
|
||||
{
|
||||
@@ -234,7 +258,6 @@ namespace Jackett.Updater
|
||||
"Definitions/eotforum.yml",
|
||||
"Definitions/nexttorrent.yml",
|
||||
"appsettings.Development.json",
|
||||
"appsettings.json",
|
||||
"CurlSharp.dll",
|
||||
"CurlSharp.pdb",
|
||||
"Jackett.dll",
|
||||
@@ -250,6 +273,8 @@ namespace Jackett.Updater
|
||||
"System.Web.Http.dll",
|
||||
"System.Web.Http.Owin.dll",
|
||||
"System.Web.Http.Tracing.dll",
|
||||
"Definitions/torrentkim.yml",
|
||||
"Definitions/horriblesubs.yml",
|
||||
};
|
||||
|
||||
foreach (var oldFile in oldFiles)
|
||||
|
Reference in New Issue
Block a user