mirror of
https://github.com/Jackett/Jackett.git
synced 2025-12-31 10:05:02 +01:00
Compare commits
47 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b570b1d1f3 | ||
|
|
03cc3f4f60 | ||
|
|
d490b007ff | ||
|
|
e12f0deb44 | ||
|
|
7280108255 | ||
|
|
265cbaeb7d | ||
|
|
3bf5a4f59a | ||
|
|
6ed341354e | ||
|
|
ab5cf5b10d | ||
|
|
cdfdcde560 | ||
|
|
8a5081b398 | ||
|
|
0fd326b566 | ||
|
|
09be80d1ee | ||
|
|
4a1763f030 | ||
|
|
2e2b6ff8d7 | ||
|
|
e0083fe955 | ||
|
|
001ed302fe | ||
|
|
52ec0a7327 | ||
|
|
b51c1c9600 | ||
|
|
f219f3f294 | ||
|
|
2f938d3615 | ||
|
|
21cc4f1cdd | ||
|
|
53108362d6 | ||
|
|
ce4eb2311e | ||
|
|
454ca8927a | ||
|
|
d1011c3e5f | ||
|
|
232e746fe4 | ||
|
|
bc9d02d2e8 | ||
|
|
a9a7a2fcd0 | ||
|
|
9d4998f154 | ||
|
|
1384e38818 | ||
|
|
d255a2fafd | ||
|
|
5bd75d2ec5 | ||
|
|
12b59d38dc | ||
|
|
7ff26f07b8 | ||
|
|
da90b2f4bf | ||
|
|
a37e609a0c | ||
|
|
c5f1e01d5e | ||
|
|
507a6edc34 | ||
|
|
c1cad58702 | ||
|
|
d849880f49 | ||
|
|
1ad56d74f7 | ||
|
|
348bd2795a | ||
|
|
03cbb949a3 | ||
|
|
71d72816df | ||
|
|
36d4992300 | ||
|
|
0de5606c2e |
10
README.md
10
README.md
@@ -42,7 +42,6 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* BTDIGG
|
||||
* BTeye
|
||||
* BTSOW
|
||||
* Cili180
|
||||
* ConCen
|
||||
* Corsaro.red
|
||||
* cpasbien
|
||||
@@ -76,6 +75,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* KickAssTorrent (KATcr)
|
||||
* Legit Torrents
|
||||
* LePorno
|
||||
* LIAORENCILI (Cili180)
|
||||
* LimeTorrents
|
||||
* LinuxTracker
|
||||
* MacTorrents
|
||||
@@ -90,7 +90,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Newstudio
|
||||
* Nitro
|
||||
* NNTT
|
||||
* NoName Club (NNM-Club)
|
||||
* NoNaMe Club (NNM-Club)
|
||||
* Nyaa-Pantsu
|
||||
* Nyaa.si
|
||||
* OneJAV
|
||||
@@ -265,7 +265,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Boxing Torrents
|
||||
* Brasil Tracker
|
||||
* BroadCity
|
||||
* BroadcastTheNet (BTN)
|
||||
* BroadcasTheNet (BTN)
|
||||
* BrokenStones
|
||||
* BWTorrents
|
||||
* CCFBits
|
||||
@@ -313,6 +313,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* eStone (XiDER, BeLoad)
|
||||
* Ethor.net (Thor's Land)
|
||||
* ExoticaZ (YourExotic)
|
||||
* ExtremeBits
|
||||
* ExtremeTorrents
|
||||
* FANO.IN
|
||||
* Fantastic Heaven
|
||||
@@ -450,7 +451,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* RetroFlix
|
||||
* RevolutionTT
|
||||
* RoDVD (Cinefiles)
|
||||
* Romanian Metal Torrent (RMT)
|
||||
* Romanian Metal Torrents (RMT)
|
||||
* SDBits
|
||||
* SceneFZ
|
||||
* SceneHD
|
||||
@@ -547,6 +548,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* XtreMeZone (MYXZ)
|
||||
* XtremeFile
|
||||
* YDYPT
|
||||
* YingK
|
||||
* Zamunda.net
|
||||
* Zelka.org
|
||||
</details>
|
||||
|
||||
@@ -158,11 +158,6 @@ search:
|
||||
download:
|
||||
selector: a[href*="download.php?torrent="]
|
||||
attribute: href
|
||||
date:
|
||||
selector: td:nth-child(2) > div > div:last-of-type
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "2 Jan 2006 15:04:05"
|
||||
files:
|
||||
# remember #5754 advanced users have additional last TD so dont go using nth-last-child ;-)
|
||||
selector: td:nth-child(5)
|
||||
@@ -174,6 +169,24 @@ search:
|
||||
selector: td:nth-child(9)
|
||||
leechers:
|
||||
selector: td:nth-child(10)
|
||||
date:
|
||||
# 26 May 20 14:05:06
|
||||
selector: td:nth-child(2) > div > div:last-of-type:not(:contains("day"))
|
||||
optional: true
|
||||
# drop New!
|
||||
remove: span
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "2 Jan 2006 15:04:05"
|
||||
date:
|
||||
# Today, 20:26:23
|
||||
# Yesterday, 13:50:05
|
||||
selector: td:nth-child(2) > div > div:last-of-type:contains("day")
|
||||
optional: true
|
||||
# drop New!
|
||||
remove: span
|
||||
filters:
|
||||
- name: fuzzytime
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="./images/gold.png"]: 0
|
||||
|
||||
@@ -67,7 +67,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
|
||||
@@ -26,7 +26,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
|
||||
@@ -7,12 +7,10 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://btdb.io/
|
||||
- https://btdb.unblockit.me/
|
||||
- https://btdb.eu/
|
||||
legacylinks:
|
||||
- https://btdb.to/
|
||||
- https://btdb.unblocked.app/
|
||||
- https://btdb.eu/
|
||||
- https://btdb.unblockit.pro/
|
||||
- https://btdb.unblockit.one/
|
||||
- https://btdb.black-mirror.xyz/
|
||||
@@ -20,9 +18,11 @@ legacylinks:
|
||||
- https://btdb.proxyportal.fun/
|
||||
- https://btdb.uk-unblock.xyz/
|
||||
- https://btdb.ind-unblock.xyz/
|
||||
- https://btdb.unblocked.bar/ # search broken by Cloudflare DDoS protection in browser and Jackett
|
||||
- https://btdb.proxyportal.pw/ # search broken by Cloudflare DDoS protection in browser and Jackett
|
||||
- https://btdb.uk-unblock.pro/ # search broken by Cloudflare DDoS protection in browser and Jackett
|
||||
- https://btdb.unblocked.bar/ # redirects to .eu
|
||||
- https://btdb.proxyportal.pw/ # redirects to .eu
|
||||
- https://btdb.uk-unblock.pro/ # redirects to .eu
|
||||
- https://btdb.unblockit.me/ # redirects to .eu
|
||||
- https://btdb.io/ # ERR_NAME_NOT_RESOLVED
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
||||
@@ -35,7 +35,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: info_tpp
|
||||
type: info
|
||||
label: Results Per Page
|
||||
|
||||
@@ -43,7 +43,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: drop_polish_prefix
|
||||
type: checkbox
|
||||
label: Drop the Polish title prefix
|
||||
|
||||
@@ -109,7 +109,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
|
||||
@@ -283,7 +283,7 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Access this tracker with your browser<li>click on the <b>Apply Filter</b> button on the page to invoke the search and solve the challenge<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Select the <b>Headers</b> tab<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Access this tracker with your browser<li>click on the <b>Apply Filter</b> button on the page to invoke the search and solve the challenge<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
|
||||
@@ -64,7 +64,8 @@ settings:
|
||||
- name: info_cookie
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
|
||||
@@ -6,7 +6,7 @@ language: es-es
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://wwvv.elitetorrent.nl/
|
||||
- https://wvvw.elitetorrent.nl/
|
||||
legacylinks:
|
||||
- https://www.elitetorrent.biz/
|
||||
- https://www.elitetorrent.io/
|
||||
@@ -17,6 +17,7 @@ legacylinks:
|
||||
- https://www.elitetorrent.li/
|
||||
- https://www.elitetorrent.bz/
|
||||
- https://www.elitetorrent.nl/
|
||||
- https://wwvv.elitetorrent.nl/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
|
||||
@@ -70,7 +70,8 @@ settings:
|
||||
- name: infocookie
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
|
||||
login:
|
||||
method: cookie
|
||||
|
||||
@@ -83,9 +83,7 @@ login:
|
||||
selector: input[name="_token"]
|
||||
attribute: value
|
||||
error:
|
||||
- selector: script[nonce]:contains("Error")
|
||||
message:
|
||||
selector: script[nonce]:contains("Error")
|
||||
- selector: div#ERROR_COPY
|
||||
# test:
|
||||
# path: /
|
||||
# selector: a[href$="/logout"]
|
||||
@@ -99,7 +97,7 @@ ratio:
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: filterTorrents
|
||||
- path: torrents/filter
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
|
||||
search: "{{ if .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
|
||||
@@ -124,7 +122,7 @@ search:
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "/categories/.*?\\.(\\d+)"
|
||||
args: "/categories/(\\d+)"
|
||||
title:
|
||||
selector: a.view-torrent
|
||||
download:
|
||||
@@ -208,4 +206,4 @@ search:
|
||||
i[class*="fa-globe text-green"]: 2 # Global Double Upload
|
||||
i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
|
||||
"*": 1
|
||||
# UNIT3D 1.9.4
|
||||
# UNIT3D 2.4.0
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
---
|
||||
id: exoticaz
|
||||
name: ExoticaZ
|
||||
description: "ExoticaZ (YourExotic) is a Private Torrent Tracker for 3X"
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://exoticaz.to/
|
||||
legacylinks:
|
||||
- https://torrents.yourexotic.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: XXX, desc: "DVDRip"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q]
|
||||
movie-search: [q]
|
||||
|
||||
login:
|
||||
path: login
|
||||
method: form
|
||||
inputs:
|
||||
username_email: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
remember: on
|
||||
captcha:
|
||||
type: image
|
||||
selector: img[alt="Captcha Image"]
|
||||
input: captcha
|
||||
error:
|
||||
- selector: div.invalid-feedback
|
||||
test:
|
||||
selector: div.ratio-bar
|
||||
|
||||
search:
|
||||
path: torrents
|
||||
inputs:
|
||||
# 0 any 1 filename 2 descr 3 files
|
||||
in: 1
|
||||
search: "{{ .Keywords }}"
|
||||
category: 0
|
||||
|
||||
rows:
|
||||
selector: div.table-responsive > table > tbody > tr
|
||||
|
||||
fields:
|
||||
category:
|
||||
text: 1
|
||||
title:
|
||||
selector: a.torrent-link
|
||||
attribute: title
|
||||
details:
|
||||
selector: a.torrent-link
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href*="/download/"]
|
||||
attribute: href
|
||||
banner:
|
||||
selector: .screen-image
|
||||
attribute: data-screens
|
||||
filters:
|
||||
- name: split
|
||||
args: ["|", 0]
|
||||
date:
|
||||
selector: td:nth-last-child(5)
|
||||
filters:
|
||||
- name: append
|
||||
args: " ago"
|
||||
size:
|
||||
selector: td:nth-last-child(4)
|
||||
seeders:
|
||||
selector: td:nth-last-child(3)
|
||||
leechers:
|
||||
selector: td:nth-last-child(2)
|
||||
grabs:
|
||||
selector: td:nth-last-child(1)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
i[title="Free Download"]: 0
|
||||
i[title="Half Download"]: 0.5
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
i.fa-gem: 2
|
||||
"*": 1
|
||||
# engine tbd
|
||||
157
src/Jackett.Common/Definitions/extremebits.yml
Normal file
157
src/Jackett.Common/Definitions/extremebits.yml
Normal file
@@ -0,0 +1,157 @@
|
||||
---
|
||||
id: extremebits
|
||||
name: ExtremeBits
|
||||
description: "ExtremeBits is a Private Torrent Tracker for EXTREME SPORTS"
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://extremebits.net/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "BASE jump"}
|
||||
- {id: 10, cat: Movies, desc: "BMX"}
|
||||
- {id: 3, cat: Movies, desc: "Climbing"}
|
||||
- {id: 19, cat: Other, desc: "Covers"}
|
||||
- {id: 20, cat: Movies, desc: "Fiddy/MiniMX"}
|
||||
- {id: 22, cat: Movies, desc: "Graffiti"}
|
||||
- {id: 18, cat: Movies, desc: "Homevid"}
|
||||
- {id: 16, cat: Movies, desc: "Inline Skate"}
|
||||
- {id: 25, cat: Movies, desc: "Kayaking"}
|
||||
- {id: 28, cat: Movies, desc: "Kiteboard"}
|
||||
- {id: 17, cat: Movies, desc: "MC"}
|
||||
- {id: 13, cat: Other, desc: "Misc"}
|
||||
- {id: 4, cat: Movies, desc: "MotoX"}
|
||||
- {id: 11, cat: Movies, desc: "MTB"}
|
||||
- {id: 21, cat: Audio, desc: "Music"}
|
||||
- {id: 26, cat: Movies, desc: "Paintball"}
|
||||
- {id: 5, cat: Movies, desc: "Parkour"}
|
||||
- {id: 24, cat: Movies, desc: "Quad/ATV"}
|
||||
- {id: 29, cat: Movies, desc: "Rally/4x4"}
|
||||
- {id: 6, cat: Movies, desc: "Skateboard"}
|
||||
- {id: 12, cat: Movies, desc: "Ski"}
|
||||
- {id: 14, cat: Movies, desc: "Skydive"}
|
||||
- {id: 7, cat: Movies, desc: "Snowboard"}
|
||||
- {id: 9, cat: Movies, desc: "Snowmobile"}
|
||||
- {id: 15, cat: Movies, desc: "Streetrace"}
|
||||
- {id: 2, cat: Movies, desc: "Surf"}
|
||||
- {id: 23, cat: TV, desc: "Tv"}
|
||||
- {id: 8, cat: Movies, desc: "Wakeboard/W.Ski"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q]
|
||||
movie-search: [q]
|
||||
music-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: "4"
|
||||
options:
|
||||
"4": "created"
|
||||
"7": "seeders"
|
||||
"5": "size"
|
||||
"1": "title"
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: "desc"
|
||||
options:
|
||||
"desc": "desc"
|
||||
"asc": "asc"
|
||||
|
||||
login:
|
||||
path: login.php
|
||||
method: form
|
||||
form: form[action="takelogin.php"]
|
||||
inputs:
|
||||
input[placeholder="Username"]: "{{ .Config.username }}"
|
||||
input[placeholder="Password"]: "{{ .Config.password }}"
|
||||
selectors: true
|
||||
error:
|
||||
- selector: h2:contains("fail")
|
||||
message:
|
||||
selector: div.contentframe
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
# 0 active 1 incldead 2 onlydead 3 freeleech
|
||||
incl: 1
|
||||
# 0 name 1 descr 2 both
|
||||
searchin: 0
|
||||
sort: "{{ .Config.sort }}"
|
||||
type: "{{ .Config.type }}"
|
||||
# does not support imdbid searching or have imdb links in results.
|
||||
|
||||
rows:
|
||||
selector: table.crowdedtablecenter > tbody > tr:has(a[href^="details.php?id="])
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="browse.php?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title:
|
||||
selector: a[href^="details.php?id="]
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["details.php", "download.php"]
|
||||
files:
|
||||
selector: td:nth-of-type(5)
|
||||
seeders:
|
||||
selector: td:nth-of-type(7)
|
||||
leechers:
|
||||
selector: td:nth-of-type(8)
|
||||
grabs:
|
||||
selector: td:nth-of-type(10) a
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
size:
|
||||
selector: td:nth-of-type(10)
|
||||
remove: a
|
||||
cat:
|
||||
selector: td:nth-of-type(1) a img
|
||||
attribute: alt
|
||||
description:
|
||||
selector: td:nth-of-type(4)
|
||||
filters:
|
||||
- name: prepend
|
||||
args: "cat={{ .Result.cat }}, wait="
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="img/freedownload.png"]: 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
text: 1
|
||||
date:
|
||||
selector: td:nth-of-type(2)
|
||||
remove: a
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "2006-01-02 15:04:05"
|
||||
# TBDEV
|
||||
@@ -195,7 +195,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: torrentlanguage
|
||||
type: select
|
||||
label: Torrent Language
|
||||
|
||||
@@ -104,6 +104,10 @@ settings:
|
||||
options:
|
||||
"2": "desc"
|
||||
"1": "asc"
|
||||
- name: info_tpp
|
||||
type: info
|
||||
label: Results Per Page
|
||||
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile. The default is <i>15</i>.
|
||||
|
||||
login:
|
||||
path: index.php?page=login
|
||||
@@ -132,20 +136,6 @@ search:
|
||||
paths:
|
||||
# 15 results per page fetch 5 (site is slow, dont be greedy and fetch more)
|
||||
- path: index.php
|
||||
inputs:
|
||||
pages: 1
|
||||
- path: index.php
|
||||
inputs:
|
||||
pages: 2
|
||||
- path: index.php
|
||||
inputs:
|
||||
pages: 3
|
||||
- path: index.php
|
||||
inputs:
|
||||
pages: 4
|
||||
- path: index.php
|
||||
inputs:
|
||||
pages: 5
|
||||
inputs:
|
||||
search: "{{ .Keywords }}"
|
||||
category: "{{ range .Categories }}{{.}};{{end}}"
|
||||
|
||||
@@ -74,8 +74,8 @@ login:
|
||||
path: login.php
|
||||
method: post
|
||||
inputs:
|
||||
take_login: "1"
|
||||
logout: "no"
|
||||
take_login: 1
|
||||
logout: no
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
@@ -87,12 +87,14 @@ search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
incldead: "1"
|
||||
blah: "0"
|
||||
incldead: 1
|
||||
blah: 0
|
||||
|
||||
rows:
|
||||
selector: table.row1 > tbody > tr:has(a.torname)
|
||||
|
||||
fields:
|
||||
_id:
|
||||
selector: a.torname
|
||||
@@ -124,14 +126,19 @@ search:
|
||||
args: "2006-01-0215:04:05 -07:00"
|
||||
size:
|
||||
selector: td:has(a[href$="filelist=1"]) ~ td ~ td ~ td ~ td
|
||||
seeders:
|
||||
grabs:
|
||||
selector: td:has(a[href$="filelist=1"]) ~ td ~ td ~ td ~ td ~ td
|
||||
leechers:
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
seeders:
|
||||
selector: td:has(a[href$="filelist=1"]) ~ td ~ td ~ td ~ td ~ td ~ td
|
||||
leechers:
|
||||
selector: td:has(a[href$="filelist=1"]) ~ td ~ td ~ td ~ td ~ td ~ td ~ td
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"img[src=\"pic/free.png\"]": "0"
|
||||
"*": "1"
|
||||
"img[src=\"pic/free.png\"]": 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"*": "1"
|
||||
text: 1
|
||||
# engine tbc
|
||||
|
||||
@@ -114,7 +114,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
|
||||
@@ -39,7 +39,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
|
||||
@@ -52,7 +52,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: info_tpp
|
||||
type: info
|
||||
label: Results Per Page
|
||||
|
||||
@@ -76,7 +76,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: info_tpp
|
||||
type: info
|
||||
label: Results Per Page
|
||||
|
||||
@@ -34,7 +34,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: info_tpp
|
||||
type: info
|
||||
label: Results Per Page
|
||||
|
||||
@@ -74,7 +74,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
|
||||
@@ -1,186 +0,0 @@
|
||||
---
|
||||
id: icetorrent
|
||||
name: ICE Torrent
|
||||
description: "ICE Torrent is a ratioless ROMANIAN Private Torrent Tracker for 0DAY / GENERAL"
|
||||
language: ro-ro
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://icetorrent.org/
|
||||
legacylinks:
|
||||
- https://www.icetorrent.org/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 38, cat: Movies, desc: "Movie Packs"}
|
||||
- {id: 10, cat: Movies/SD, desc: "Movies: SD"}
|
||||
- {id: 35, cat: Movies/SD, desc: "Movies: SD Ro"}
|
||||
- {id: 8, cat: Movies/HD, desc: "Movies: HD"}
|
||||
- {id: 29, cat: Movies/HD, desc: "Movies: HD Ro"}
|
||||
- {id: 7, cat: Movies/DVD, desc: "Movies: DVD"}
|
||||
- {id: 2, cat: Movies/DVD, desc: "Movies: DVD Ro"}
|
||||
- {id: 17, cat: Movies/BluRay, desc: "Movies: BluRay"}
|
||||
- {id: 24, cat: Movies/BluRay, desc: "Movies: BluRay Ro"}
|
||||
- {id: 59, cat: Movies, desc: "Movies: Ro"}
|
||||
- {id: 57, cat: Movies/UHD, desc: "Movies: 4K (2160p) Ro"}
|
||||
- {id: 61, cat: Movies/UHD, desc: "Movies: 4K (2160p)"}
|
||||
- {id: 41, cat: TV, desc: "TV Packs"}
|
||||
- {id: 66, cat: TV, desc: "TV Packs Ro"}
|
||||
- {id: 45, cat: TV, desc: "TV Episodes"}
|
||||
- {id: 46, cat: TV, desc: "TV Episodes Ro"}
|
||||
- {id: 43, cat: TV/HD, desc: "TV Episodes HD"}
|
||||
- {id: 44, cat: TV/HD, desc: "TV Episodes HD Ro"}
|
||||
- {id: 60, cat: TV, desc: "TV Ro"}
|
||||
- {id: 11, cat: PC/Games, desc: "Games: PC-ISO"}
|
||||
- {id: 52, cat: Console, desc: "Games: Console"}
|
||||
- {id: 1, cat: PC/0day, desc: "Applications"}
|
||||
- {id: 14, cat: PC, desc: "Applications: Linux"}
|
||||
- {id: 37, cat: PC/Mac, desc: "Applications: Mac"}
|
||||
- {id: 19, cat: PC/Phone-Other, desc: "Applications: Mobile"}
|
||||
- {id: 62, cat: TV, desc: "TV Cartoons"}
|
||||
- {id: 3, cat: TV/Anime, desc: "TV Anime / Hentai"}
|
||||
- {id: 6, cat: Books/Ebook, desc: "E-books"}
|
||||
- {id: 5, cat: Audio, desc: "Music"}
|
||||
- {id: 64, cat: Audio/Video, desc: "Music Video"}
|
||||
- {id: 18, cat: Other, desc: "Images"}
|
||||
- {id: 22, cat: TV/Sport, desc: "TV Sports"}
|
||||
- {id: 58, cat: TV/Sport, desc: "TV Sports Ro"}
|
||||
- {id: 9, cat: TV/Documentary, desc: "TV Documentary"}
|
||||
- {id: 63, cat: TV/Documentary, desc: "TV Documentary Ro"}
|
||||
- {id: 65, cat: Other, desc: "Tutorial"}
|
||||
- {id: 67, cat: Other, desc: "Miscellaneous"}
|
||||
- {id: 15, cat: XXX, desc: "XXX Movies"}
|
||||
- {id: 47, cat: XXX, desc: "XXX DVD"}
|
||||
- {id: 48, cat: XXX, desc: "XXX HD"}
|
||||
- {id: 49, cat: XXX, desc: "XXX Images"}
|
||||
- {id: 50, cat: XXX, desc: "XXX Packs"}
|
||||
- {id: 51, cat: XXX, desc: "XXX SD"}
|
||||
|
||||
modes:
|
||||
search: [q, imdbid]
|
||||
tv-search: [q, season, ep, imdbid]
|
||||
movie-search: [q, imdbid]
|
||||
music-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: "refreshAt"
|
||||
options:
|
||||
"refreshAt": "created"
|
||||
"seeders": "seeders"
|
||||
"size": "size"
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: "desc"
|
||||
options:
|
||||
"desc": "desc"
|
||||
"asc": "asc"
|
||||
- name: browseadult
|
||||
type: checkbox
|
||||
label: Use the Adult search engine
|
||||
default: false
|
||||
- name: info_browseadult
|
||||
type: info
|
||||
label: "About the Adult search engine"
|
||||
default: "The <b>Adult</b> search engine only returns <i>Adult category</i> results.</br>And Vice Versa."
|
||||
- name: info_Search
|
||||
type: info
|
||||
label: "About Search results"
|
||||
default: "This indexer supports only the <b>English</b> language. Choosing <i>non-English languages</i> will cause incorrect dates to be returned.</br>For best results edit your profile and set your <b>Torrents per page</b> to <b>100</b>. The Default is <i>50</i>."
|
||||
|
||||
login:
|
||||
path: login
|
||||
method: form
|
||||
form: form
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
_remember_me: on
|
||||
selectorinputs:
|
||||
_csrf_token:
|
||||
selector: input[name="_csrf_token"]
|
||||
attribute: value
|
||||
error:
|
||||
- selector: span:contains("Error")
|
||||
- selector: div.alert:contains("failed")
|
||||
test:
|
||||
path: /
|
||||
selector: a[href*="/logout?_csrf_token="]
|
||||
|
||||
ratio:
|
||||
text: -1
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://icetorrent.org/browse?search=&submit=&sort=torrent.size&direction=desc&page=1
|
||||
- path: "{{ if .Config.browseadult }}adult{{else}}browse{{end}}"
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
|
||||
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
|
||||
sort: "torrent.{{ .Config.sort }}"
|
||||
direction: "{{ .Config.type }}"
|
||||
|
||||
rows:
|
||||
selector: div.kt-portlet--mobile > div.kt-portlet__body--fit > div.mr-0
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="/browse?categories"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)$
|
||||
title:
|
||||
selector: a[href^="/browse/"]
|
||||
details:
|
||||
selector: a[href^="/browse/"]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="/torrents/"]
|
||||
attribute: href
|
||||
imdb:
|
||||
optional: true
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
attribute: href
|
||||
date:
|
||||
selector: div[data-toggle="kt-tooltip"]
|
||||
attribute: title
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "Jan 2, 2006, 3:04:05 PM"
|
||||
size:
|
||||
selector: div[data-toggle="kt-tooltip"] + div + div
|
||||
grabs:
|
||||
selector: div[data-toggle="kt-tooltip"] + div
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
seeders:
|
||||
selector: div[data-toggle="kt-tooltip"] + div + div + div > div div:nth-child(1)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
leechers:
|
||||
selector: div[data-toggle="kt-tooltip"] + div + div + div > div div:nth-child(2)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"span.kt-badge--success:contains(\"free\")": 0
|
||||
"span.kt-badge--dark:contains(\"half\")": 0.5
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"span.kt-badge--info:contains(\"double\")": 2
|
||||
"*": 1
|
||||
# engine n/a
|
||||
@@ -7,7 +7,7 @@ type: public
|
||||
encoding: Windows-1252
|
||||
followredirect: true
|
||||
links:
|
||||
- https://ilcorsaronero.xyz/
|
||||
- https://ilcorsaronero.link/
|
||||
- https://ilcorsaronero.fun/
|
||||
- https://ilcorsaronero.pro/
|
||||
- https://ilcorsaronero.unblockit.me/
|
||||
@@ -21,6 +21,7 @@ legacylinks:
|
||||
- https://ilcorsaronero.pw/
|
||||
- https://ilcorsaronero.unblockit.pro/
|
||||
- https://ilcorsaronero.unblockit.one/
|
||||
- https://ilcorsaronero.xyz/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
||||
@@ -6,8 +6,9 @@ language: en-us
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://isohunt2.net/
|
||||
- https://isohunt.nz/
|
||||
legacylinks:
|
||||
- https://isohunt2.net/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
---
|
||||
# Update by LA5T based on the orignial 'karagarga.yml'
|
||||
# 29.07.2018 23:15 UTC+2
|
||||
#
|
||||
id: karagarga
|
||||
name: Karagarga
|
||||
description: "Tracker for non-hollywood, rare and obscure movies, music and literature."
|
||||
description: "Karagarga tracks non-hollywood, rare and obscure movies, music and literature."
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
encoding: iso-8859-1
|
||||
links:
|
||||
- https://karagarga.in/
|
||||
|
||||
@@ -16,73 +13,16 @@ caps:
|
||||
- {id: 1, cat: Movies, desc: "Movies"}
|
||||
- {id: 2, cat: Audio, desc: "Music"}
|
||||
- {id: 3, cat: Books, desc: "Literature"}
|
||||
- {id: 4, cat: Movies, desc: "Action"}
|
||||
- {id: 55, cat: Movies, desc: "Adventure"}
|
||||
- {id: 5, cat: Movies, desc: "Animation"}
|
||||
- {id: 6, cat: Movies, desc: "Arthouse"}
|
||||
- {id: 7, cat: Movies, desc: "Asian"}
|
||||
- {id: 43, cat: Movies, desc: "Camp"}
|
||||
- {id: 8, cat: Movies, desc: "Classics"}
|
||||
- {id: 9, cat: Movies, desc: "Comedy"}
|
||||
- {id: 10, cat: Movies, desc: "Crime"}
|
||||
- {id: 11, cat: Movies, desc: "Cult"}
|
||||
- {id: 20, cat: Movies, desc: "Documentary"}
|
||||
- {id: 12, cat: Movies, desc: "Drama"}
|
||||
- {id: 44, cat: Movies, desc: "Epic"}
|
||||
- {id: 13, cat: Movies, desc: "Erotica"}
|
||||
- {id: 51, cat: Movies, desc: "Experimental"}
|
||||
- {id: 47, cat: Movies, desc: "Exploitation"}
|
||||
- {id: 14, cat: Movies, desc: "Fantasy"}
|
||||
- {id: 15, cat: Movies, desc: "Film Noir"}
|
||||
- {id: 53, cat: Movies, desc: "Giallo"}
|
||||
- {id: 17, cat: Movies, desc: "Horror"}
|
||||
- {id: 18, cat: Movies, desc: "Martial Arts"}
|
||||
- {id: 19, cat: Movies, desc: "Musical"}
|
||||
- {id: 54, cat: Movies, desc: "Mystery"}
|
||||
- {id: 60, cat: Movies, desc: "Performance"}
|
||||
- {id: 48, cat: Movies, desc: "Philosophy"}
|
||||
- {id: 49, cat: Movies, desc: "Politics"}
|
||||
- {id: 50, cat: Movies, desc: "Romance"}
|
||||
- {id: 21, cat: Movies, desc: "Sci-Fi"}
|
||||
- {id: 22, cat: Movies, desc: "Short"}
|
||||
- {id: 23, cat: Movies, desc: "Silent"}
|
||||
- {id: 24, cat: Movies, desc: "Thriller"}
|
||||
- {id: 25, cat: Movies, desc: "TV"}
|
||||
- {id: 56, cat: Movies, desc: "Video Art"}
|
||||
- {id: 26, cat: Movies, desc: "War"}
|
||||
- {id: 27, cat: Movies, desc: "Western"}
|
||||
- {id: 800, cat: Audio, desc: "Blues"}
|
||||
- {id: 31, cat: Audio, desc: "Classical"}
|
||||
- {id: 600, cat: Audio, desc: "Country"}
|
||||
- {id: 34, cat: Audio, desc: "Electronica"}
|
||||
- {id: 63, cat: Audio, desc: "Exotica"}
|
||||
- {id: 1000, cat: Audio, desc: "Experimental"}
|
||||
- {id: 250, cat: Audio, desc: "Folk"}
|
||||
- {id: 500, cat: Audio, desc: "Funk"}
|
||||
- {id: 700, cat: Audio, desc: "Indie"}
|
||||
- {id: 32, cat: Audio, desc: "Jazz"}
|
||||
- {id: 1200, cat: Audio, desc: "Latin"}
|
||||
- {id: 35, cat: Audio, desc: "Live"}
|
||||
- {id: 900, cat: Audio, desc: "Metal"}
|
||||
- {id: 62, cat: Audio, desc: "Punk & Hardcore"}
|
||||
- {id: 52, cat: Audio, desc: "Rap & Hiphop"}
|
||||
- {id: 5000, cat: Audio, desc: "Reggae"}
|
||||
- {id: 36, cat: Audio, desc: "Rock"}
|
||||
- {id: 400, cat: Audio, desc: "Soul"}
|
||||
- {id: 33, cat: Audio, desc: "Soundtrack"}
|
||||
- {id: 30, cat: Audio, desc: "World"}
|
||||
- {id: 40, cat: Audio/Audiobook, desc: "Audiobooks"}
|
||||
- {id: 41, cat: Books, desc: "Books"}
|
||||
- {id: 42, cat: Books/Comics, desc: "Comics"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
movie-search: [q]
|
||||
search: [q, imdbid]
|
||||
movie-search: [q, imdbid]
|
||||
music-search: [q]
|
||||
|
||||
login:
|
||||
path: takelogin.php
|
||||
method: post
|
||||
path: login.php
|
||||
method: form
|
||||
form: form[action="takelogin.php"]
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
@@ -97,47 +37,67 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://karagarga.in/browse.php?search_type=title&search=&cat=3&genre=&subgenre=&country=0&hdrip=&sort=&d=&incldead=
|
||||
- path: browse.php
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["(?<=^| )(?!-|\\+)[^ ]+(?= |$)", "+$&"]
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}genre={{.}}&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
search_type: title
|
||||
# torrent, title, director, uploader, year, imdb
|
||||
search_type: "{{ if .Query.IMDBID }}imdb{{ else }}title{{ end }}"
|
||||
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
|
||||
# site does not support multiple cats
|
||||
cat: 0
|
||||
genre: ""
|
||||
subgenre: ""
|
||||
country: 0
|
||||
hdrip: ""
|
||||
# "" yes, 1 no
|
||||
incldead: ""
|
||||
# sort keywordless search to get the latest, but dont sort keyword search to allow andmatch to return more results.
|
||||
sort: "{{ if .Keywords }}{{ else }}added{{ end }}"
|
||||
d: "{{ if .Keywords }}{{ else }}DESC{{ end }}"
|
||||
# site supports imdbid searches and returns imdb links in results.
|
||||
|
||||
rows:
|
||||
selector: table#browse > tbody > tr:has(a[href^="browse.php?genre="])
|
||||
filters:
|
||||
- name: andmatch
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="browse.php?genre="]
|
||||
selector: a[href^="browse.php?genre="] img
|
||||
case:
|
||||
img[title^="Movie"]: 1
|
||||
img[title^="Music"]: 2
|
||||
img[title^="Literature"]: 3
|
||||
year:
|
||||
selector: a[href$="search_type=year"]
|
||||
optional: true
|
||||
flag:
|
||||
selector: a[href^="browse.php?country="] img
|
||||
attribute: title
|
||||
optional: true
|
||||
filename:
|
||||
selector: a[href^="/down.php/"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: genre
|
||||
- name: regexp
|
||||
args: "(?:/down\\.php/\\d+/)(.+?)\\.torrent"
|
||||
- name: re_replace
|
||||
args: ["%20", "."]
|
||||
title:
|
||||
selector: td:nth-child(2) span
|
||||
download:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["details.php?id=", "download.php?id="]
|
||||
- name: append
|
||||
args: " {{ .Result.year }} {{ .Result.flag }} [{{ .Result.filename }}]"
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
grabs:
|
||||
selector: td:nth-child(12)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d,]+)
|
||||
files:
|
||||
selector: td:nth-child(10)
|
||||
size:
|
||||
selector: td:nth-child(11)
|
||||
seeders:
|
||||
selector: td:nth-child(13)
|
||||
leechers:
|
||||
selector: td:nth-child(14)
|
||||
download:
|
||||
selector: a[href^="/down.php/"]
|
||||
attribute: href
|
||||
imdb:
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
attribute: href
|
||||
optional: true
|
||||
date:
|
||||
selector: td:nth-child(9)
|
||||
filters:
|
||||
@@ -145,12 +105,48 @@ search:
|
||||
args: ["([a-zA-Z]+)\\s+(\\d{1,2})\\s+'(\\d{2})", "$2 $1 $3"]
|
||||
- name: dateparse
|
||||
args: "2 Jan 06"
|
||||
files:
|
||||
selector: td:nth-child(10)
|
||||
size:
|
||||
selector: td:nth-child(11)
|
||||
grabs:
|
||||
selector: td:nth-child(12)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
seeders:
|
||||
selector: td:nth-child(13)
|
||||
leechers:
|
||||
selector: td:nth-child(14)
|
||||
subs:
|
||||
text: ""
|
||||
subs:
|
||||
selector: span:contains("Subs:")
|
||||
optional: true
|
||||
genre:
|
||||
text: ""
|
||||
genre:
|
||||
selector: td:nth-child(5)
|
||||
optional: true
|
||||
filters:
|
||||
- name: prepend
|
||||
args: "Genre: "
|
||||
mom:
|
||||
text: ""
|
||||
mom:
|
||||
selector: img[title^="CURRENT"]
|
||||
attribute: title
|
||||
optional: true
|
||||
description:
|
||||
text: "{{ .Result.subs }} {{ .Result.genre }}{{ if .Result.mom }} Current MoM{{ else }}{{ end }}"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"span:contains(\"Freeleech\")": 0
|
||||
"span:contains(\"Featured\")": 0
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
":has(img[title^=HD]):has(img[title^=CURRENT])": 1.8
|
||||
"img[title^=CURRENT]": 1.6
|
||||
"img[title^=HD]": 1.3
|
||||
# ":has(img[title^=\"HD\"]):has(img[title^=\"CURRENT\"])": 1.8
|
||||
"img[title^=\"CURRENT\"]": 1.6
|
||||
# "img[title^=\"HD\"]": 1.3
|
||||
"*": 1.1
|
||||
|
||||
@@ -45,7 +45,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
|
||||
@@ -149,7 +149,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
|
||||
login:
|
||||
method: cookie
|
||||
|
||||
@@ -1,12 +1,26 @@
|
||||
---
|
||||
id: cili180
|
||||
name: Cili180
|
||||
description: "Cili180 is a Public BitTorrent DHT search engine."
|
||||
id: liaorencili
|
||||
name: LIAORENCILI
|
||||
description: "LIAORENCILI (Cili180) is a Public BitTorrent DHT search engine."
|
||||
language: en-us
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.lrcili1.xyz/
|
||||
- https://www.lrcili2.xyz/
|
||||
- https://www.lrcili3.xyz/
|
||||
- https://www.lrcili4.xyz/
|
||||
- https://www.lrcili5.xyz/
|
||||
- https://www.lrcili6.xyz/
|
||||
- https://www.lrcili7.xyz/
|
||||
- https://www.lrcili8.xyz/
|
||||
- https://www.lrcili9.xyz/
|
||||
- https://www.lrcili10.xyz/
|
||||
legacylinks:
|
||||
- http://www.cili180.com/
|
||||
- http://www.cilijj.xyz/
|
||||
- https://www.cilijj.xyz/
|
||||
- https://www.liaorenso.xyz/
|
||||
- https://www.liaorenso11.xyz/
|
||||
- https://www.liaorenso12.xyz/
|
||||
- https://www.liaorenso13.xyz/
|
||||
@@ -15,11 +29,9 @@ links:
|
||||
- https://www.liaorenso16.xyz/
|
||||
- https://www.liaorenso17.xyz/
|
||||
- https://www.liaorenso18.xyz/
|
||||
legacylinks:
|
||||
- http://www.cili180.com/
|
||||
- http://www.cilijj.xyz/
|
||||
- https://www.liaorenso.xyz/ # proxy list only
|
||||
- https://www.liaorenso19.xyz/ # proxy list only
|
||||
- https://www.liaorenso19.xyz/
|
||||
- http://lrcili.xyz/ # proxy list only
|
||||
- http://www.lrcili.xyz/ # proxy list only
|
||||
|
||||
caps:
|
||||
categories:
|
||||
@@ -62,8 +62,8 @@ search:
|
||||
paths:
|
||||
# return results for 'of' if there are no search parms supplied (for use with the TEST button)
|
||||
# http://www.magnetdl.com/m/midnight-texas-s01e10/
|
||||
- path: "{{ if .Keywords }}{{ re_replace .Keywords \"(.).*\" \"$1\" }}/{{ .Keywords }}/{{else}}o/of/{{end}}{{ .Config.sort }}/{{ .Config.type }}/"
|
||||
- path: "{{ if .Keywords }}{{ re_replace .Keywords \"(.).*\" \"$1\" }}/{{ .Keywords }}/{{else}}o/of/{{end}}{{ .Config.sort }}/{{ .Config.type }}/2/"
|
||||
- path: "{{ if .Keywords }}{{ re_replace .Keywords \"(.).*\" \"$1\" }}/{{ .Keywords }}/{{else}}2/{{ .Today.Year }}/{{end}}{{ .Config.sort }}/{{ .Config.type }}/"
|
||||
- path: "{{ if .Keywords }}{{ re_replace .Keywords \"(.).*\" \"$1\" }}/{{ .Keywords }}/{{else}}2/{{ .Today.Year }}/{{end}}{{ .Config.sort }}/{{ .Config.type }}/2/"
|
||||
|
||||
rows:
|
||||
selector: tr:has(td.m)
|
||||
|
||||
@@ -53,20 +53,48 @@ caps:
|
||||
movie-search: [q, imdbid]
|
||||
music-search: [q]
|
||||
|
||||
# login:
|
||||
# path: kezdolap.php
|
||||
# submitpath: kezdolap.php?belepes
|
||||
# method: form
|
||||
# form: form#login_form
|
||||
# inputs:
|
||||
# nev: "{{ .Config.username }}"
|
||||
# jelszo: "{{ .Config.password }}"
|
||||
# selectorinputs: # login form HTML is broken (no closing form tag), we've to add this manually
|
||||
# getUnique:
|
||||
# selector: input[name="getUnique"]
|
||||
# attribute: value
|
||||
# test:
|
||||
# path: letoltes.php
|
||||
# selector: a[href^="logout.php?getUnique="]
|
||||
|
||||
settings:
|
||||
- name: cookie
|
||||
type: text
|
||||
label: Cookie
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: useragent
|
||||
type: text
|
||||
label: User-Agent
|
||||
label: User-Agent
|
||||
- name: info_useragent
|
||||
type: info
|
||||
label: How to get the User-Agent
|
||||
default: "<ol><li>From the same place you fetched the cookie,<li>Find <b>'user-agent:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole user-agent string <i>(everything after 'user-agent: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
login:
|
||||
path: kezdolap.php
|
||||
submitpath: kezdolap.php?belepes
|
||||
method: form
|
||||
form: form#login_form
|
||||
method: cookie
|
||||
inputs:
|
||||
nev: "{{ .Config.username }}"
|
||||
jelszo: "{{ .Config.password }}"
|
||||
selectorinputs: # login form HTML is broken (no closing form tag), we've to add this manually
|
||||
getUnique:
|
||||
selector: input[name="getUnique"]
|
||||
attribute: value
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
user-agent: "[ .Config.useragent ]"
|
||||
test:
|
||||
path: letoltes.php
|
||||
selector: a[href^="logout.php?getUnique="]
|
||||
|
||||
search:
|
||||
paths:
|
||||
|
||||
@@ -41,7 +41,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
|
||||
@@ -61,7 +61,8 @@ settings:
|
||||
- name: infocookie
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: infotitle
|
||||
type: info
|
||||
label: About Titles
|
||||
|
||||
@@ -6,7 +6,9 @@ language: pl-pl
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- http://nitro.to/ # does not support https NET::ERR_CERT_AUTHORITY_INVALID
|
||||
- http://nitro.to/
|
||||
legacylinks:
|
||||
- https://nitro.to/ # site is forcing http
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
id: nnm-club
|
||||
name: NoName Club
|
||||
description: "NoName Club (NNM-Club) is a RUSSIAN Public Tracker for TV / MOVIES / MUSIC"
|
||||
id: noname-club
|
||||
name: NoNaMe Club
|
||||
description: "NoNaMe Club (NNM-Club) is a RUSSIAN Public Tracker for TV / MOVIES / MUSIC"
|
||||
language: ru-ru
|
||||
type: public
|
||||
encoding: windows-1251
|
||||
@@ -29,39 +29,23 @@ caps:
|
||||
music-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
settings:
|
||||
- name: cookie
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: 2facode
|
||||
type: text
|
||||
label: 2FA code
|
||||
- name: info_2fa
|
||||
label: Cookie
|
||||
- name: info
|
||||
type: info
|
||||
label: "About 2FA code"
|
||||
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> on the OurBits Web Site. Otherwise just leave it empty."
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
- name: info_tpp
|
||||
type: info
|
||||
label: Results Per Page
|
||||
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
|
||||
|
||||
login:
|
||||
path: takelogin.php
|
||||
method: post
|
||||
method: cookie
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
2fa_code: "{{ .Config.2facode }}"
|
||||
logout: ""
|
||||
securelogin: ""
|
||||
ssl: yes
|
||||
trackerssl: yes
|
||||
error:
|
||||
- selector: td.embedded:has(h2:contains("失败"))
|
||||
message:
|
||||
selector: td.text
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
@@ -94,9 +94,9 @@ settings:
|
||||
"ASC": "asc"
|
||||
|
||||
login:
|
||||
path: login2.php
|
||||
path: index.php
|
||||
method: form
|
||||
form: form[action="login2.php"]
|
||||
form: form[action="login3.php"]
|
||||
inputs:
|
||||
uid: "{{ .Config.username }}"
|
||||
pwd: "{{ .Config.password }}"
|
||||
|
||||
@@ -40,7 +40,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
|
||||
@@ -37,7 +37,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: info_tpp
|
||||
type: info
|
||||
label: Results Per Page
|
||||
|
||||
@@ -36,7 +36,8 @@ settings:
|
||||
- name: info_cookie
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
id: rstorrent
|
||||
name: RedStarTorrent
|
||||
id: redstartorrent
|
||||
name: Red Star Torrent
|
||||
description: "Red Star Torrent (RST) is a POLISH Private Torrent Tracker for TV"
|
||||
language: pl-pl
|
||||
type: private
|
||||
|
||||
@@ -32,7 +32,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
id: metaliplayro
|
||||
name: Romanian Metal Torrent
|
||||
description: "Romanian Metal Torrent (RMT) is a Private site dedicated to METAL MUSIC. This definition is for the English site."
|
||||
id: romanianmetaltorrents
|
||||
name: Romanian Metal Torrents
|
||||
description: "Romanian Metal Torrents (RMT) is a Private site dedicated to METAL MUSIC. This definition is for the English site."
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
@@ -744,7 +744,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: striprussian
|
||||
type: checkbox
|
||||
label: Strip Russian Letters
|
||||
|
||||
@@ -1,165 +0,0 @@
|
||||
---
|
||||
id: scenefz
|
||||
name: SceneFZ
|
||||
description: "SceneFZ is a ratioless ROMANIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: ro-ro
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://scenefz.me/
|
||||
legacylinks:
|
||||
- https://www.scenefz.me/
|
||||
- https://www.u-torrents.ro/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 62, cat: TV, desc: "Cartoons"}
|
||||
- {id: 3, cat: TV/Anime, desc: "Anime/Hentai"}
|
||||
- {id: 1, cat: PC/0day, desc: "Appz"}
|
||||
- {id: 9, cat: TV/Documentary, desc: "Documentary"}
|
||||
- {id: 63, cat: TV/Documentary, desc: "Documentary-RO"}
|
||||
- {id: 6, cat: Books, desc: "eBooks"}
|
||||
- {id: 52, cat: Console, desc: "Games-Console"}
|
||||
- {id: 11, cat: PC/Games, desc: "Games-PC"}
|
||||
- {id: 18, cat: Other, desc: "Images"}
|
||||
- {id: 65, cat: Other, desc: "Tutorial"}
|
||||
- {id: 14, cat: PC, desc: "Linux"}
|
||||
- {id: 37, cat: PC/Mac, desc: "Mac"}
|
||||
- {id: 19, cat: PC/Phone-Other, desc: "Mobile"}
|
||||
- {id: 17, cat: Movies/BluRay, desc: "Movies-BluRay"}
|
||||
- {id: 24, cat: Movies/BluRay, desc: "Movies-BluRayRO"}
|
||||
- {id: 7, cat: Movies/DVD, desc: "Movies-DVD"}
|
||||
- {id: 2, cat: Movies/DVD, desc: "Movies-DVD-RO"}
|
||||
- {id: 8, cat: Movies/HD, desc: "Movies-HD"}
|
||||
- {id: 29, cat: Movies/HD, desc: "Movies-HD-RO"}
|
||||
- {id: 59, cat: Movies/Foreign, desc: "Movies-RO"}
|
||||
- {id: 57, cat: Movies/UHD, desc: "Movies-UHD-RO"}
|
||||
- {id: 61, cat: Movies/UHD, desc: "Movies-UHD"}
|
||||
- {id: 38, cat: Movies, desc: "Movies-Packs"}
|
||||
- {id: 10, cat: Movies/SD, desc: "Movies-SD"}
|
||||
- {id: 35, cat: Movies/SD, desc: "Movies-SD-RO"}
|
||||
- {id: 5, cat: Audio, desc: "Music"}
|
||||
- {id: 64, cat: Audio/Video, desc: "Music Videos"}
|
||||
- {id: 22, cat: TV/Sport, desc: "Sport"}
|
||||
- {id: 58, cat: TV/Sport, desc: "Sports-RO"}
|
||||
- {id: 43, cat: TV/HD, desc: "TV-HD"}
|
||||
- {id: 44, cat: TV/HD, desc: "TV-HD-RO"}
|
||||
- {id: 41, cat: TV, desc: "TV-Packs"}
|
||||
- {id: 45, cat: TV/SD, desc: "TV-SD"}
|
||||
- {id: 46, cat: TV/SD, desc: "TV-SD-RO"}
|
||||
- {id: 60, cat: TV/FOREIGN, desc: "TV-RO"}
|
||||
- {id: 66, cat: TV/FOREIGN, desc: "TV-Packs-RO"}
|
||||
- {id: 15, cat: XXX, desc: "XXX"}
|
||||
- {id: 47, cat: XXX, desc: "XXX-DVD"}
|
||||
- {id: 48, cat: XXX, desc: "XXX-HD"}
|
||||
- {id: 49, cat: XXX/Imageset, desc: "XXX-IMGSet"}
|
||||
- {id: 50, cat: XXX, desc: "XXX-Packs"}
|
||||
- {id: 51, cat: XXX, desc: "XXX-SD"}
|
||||
|
||||
modes:
|
||||
search: [q, imdbid]
|
||||
tv-search: [q, season, ep, imdbid]
|
||||
movie-search: [q, imdbid]
|
||||
music-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: "torrent.refreshAt"
|
||||
options:
|
||||
"torrent.refreshAt": "created"
|
||||
"torrent.seeders": "seeders"
|
||||
"torrent.size": "size"
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: "desc"
|
||||
options:
|
||||
"desc": "desc"
|
||||
"asc": "asc"
|
||||
|
||||
login:
|
||||
path: login
|
||||
method: form
|
||||
form: form:has(input[name="_remember_me"])
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
_remember_me: on
|
||||
error:
|
||||
- selector: td.embedded:has(center > h2:contains(failed))
|
||||
- selector: span:contains("Error")
|
||||
test:
|
||||
path: browse
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
|
||||
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
|
||||
sort: "{{ .Config.sort }}"
|
||||
direction: "{{ .Config.type }}"
|
||||
|
||||
rows:
|
||||
selector: div.kt-portlet--mobile > div.kt-portlet__body--fit > div.mr-0
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="/browse?categories"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)$
|
||||
title:
|
||||
selector: a[href^="/browse/"]
|
||||
details:
|
||||
selector: a[href^="/browse/"]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="/torrents/"]
|
||||
attribute: href
|
||||
imdb:
|
||||
optional: true
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
attribute: href
|
||||
date:
|
||||
selector: div[data-toggle="kt-tooltip"]
|
||||
attribute: title
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "Jan 2, 2006, 03:04:05 PM"
|
||||
size:
|
||||
selector: div[data-toggle="kt-tooltip"] + div + div
|
||||
grabs:
|
||||
selector: div[data-toggle="kt-tooltip"] + div
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
seeders:
|
||||
selector: div[data-toggle="kt-tooltip"] + div + div + div > div div:nth-child(1)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
leechers:
|
||||
selector: div[data-toggle="kt-tooltip"] + div + div + div > div div:nth-child(2)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"span.kt-badge--success:contains(\"free\")": 0
|
||||
"span.kt-badge--dark:contains(\"half\")": 0.5
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"span.kt-badge--info:contains(\"double\")": 2
|
||||
"*": 1
|
||||
# engine n/a
|
||||
@@ -112,7 +112,8 @@ settings:
|
||||
- name: info_cookie
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
|
||||
@@ -47,7 +47,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: striprussian
|
||||
type: checkbox
|
||||
label: Strip Russian Letters
|
||||
|
||||
@@ -79,6 +79,7 @@ caps:
|
||||
- {id: 87, cat: Other, desc: "Wallpapers, Themes & Screensavers"}
|
||||
- {id: 88, cat: PC/Phone-Android, desc: "Android Games"}
|
||||
- {id: 89, cat: PC, desc: "Other Releases"}
|
||||
- {id: 100, cat: Other, desc: "Tutorials"}
|
||||
- {id: 107, cat: PC, desc: "Windows 10 Releases"}
|
||||
- {id: 109, cat: PC, desc: "Windows 10 Releases 64 Bit"}
|
||||
- {id: 110, cat: PC, desc: "Windows 10 Releases x86-x64 AIO"}
|
||||
@@ -87,14 +88,16 @@ caps:
|
||||
- {id: 113, cat: PC/0day, desc: "32 Bit Ghost Images"}
|
||||
- {id: 114, cat: PC/0day, desc: "64 Bit Ghost Images"}
|
||||
- {id: 125, cat: PC, desc: "Dead Torrents"}
|
||||
- {id: 131, cat: PC/Mac, desc: "MAC OS X"}
|
||||
- {id: 131, cat: PC/Mac, desc: "Mac Games"}
|
||||
- {id: 132, cat: PC/Phone-Other, desc: "Linux/Unix"}
|
||||
- {id: 140, cat: PC/Mac, desc: "MacOS"}
|
||||
- {id: 141, cat: PC/Mac, desc: "Mac Apps"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
||||
login:
|
||||
path: index.php?login/login
|
||||
path: login/login
|
||||
method: post
|
||||
inputs:
|
||||
login: "{{ .Config.username }}"
|
||||
@@ -103,31 +106,31 @@ login:
|
||||
error:
|
||||
- selector: div.blockMessage--error
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="/index.php?conversations/"]
|
||||
path: /
|
||||
selector: a[href="/account/"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
# 25 results per page
|
||||
- path: "index.php?torrents/&filename={{ .Keywords }}"
|
||||
- path: "index.php?torrents/&filename={{ .Keywords }}&page=2"
|
||||
- path: "index.php?torrents/&filename={{ .Keywords }}&page=3"
|
||||
- path: "index.php?torrents/&filename={{ .Keywords }}&page=4"
|
||||
- path: "torrents/?filename={{ .Keywords }}"
|
||||
- path: "torrents/?filename={{ .Keywords }}&page=2"
|
||||
- path: "torrents/?filename={{ .Keywords }}&page=3"
|
||||
- path: "torrents/?filename={{ .Keywords }}&page=4"
|
||||
|
||||
rows:
|
||||
selector: tr.dataList-row:has(td.download)
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="/index.php?forums/"]
|
||||
selector: a[href^="/forums/"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "\\.(\\d+)\\/$"
|
||||
title:
|
||||
selector: a[href^="/index.php?threads/"]
|
||||
selector: a[href^="/threads/"]
|
||||
details:
|
||||
selector: a[href^="/index.php?threads/"]
|
||||
selector: a[href^="/threads/"]
|
||||
attribute: href
|
||||
download:
|
||||
selector: td.download a
|
||||
|
||||
@@ -36,7 +36,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
|
||||
@@ -106,7 +106,7 @@ settings:
|
||||
login:
|
||||
path: login.php
|
||||
method: form
|
||||
form: form[action="/login.php"]
|
||||
form: form[method="post"]
|
||||
cookies: ["JAVA=OK"] # avoid jscheck redirect
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
|
||||
@@ -7,6 +7,7 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://www.oxtorrent.me/
|
||||
- https://ww1.torrent9.is/
|
||||
- https://ww1.torrent9.to/
|
||||
|
||||
@@ -39,7 +40,6 @@ legacylinks:
|
||||
- https://torrent9.proxyportal.fun/ # this is a proxy for torrent9clone
|
||||
- https://torrent9.uk-unblock.xyz/ # this is a proxy for torrent9clone
|
||||
- https://torrent9.ind-unblock.xyz/ # this is a proxy for torrent9clone
|
||||
- https://www.oxtorrent.me/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
||||
@@ -94,7 +94,8 @@ settings:
|
||||
- name: info_cookie
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
|
||||
login:
|
||||
method: cookie
|
||||
|
||||
@@ -68,7 +68,7 @@ search:
|
||||
inputs:
|
||||
page: 5
|
||||
inputs:
|
||||
keyword: "{{ if .Keywords }}{{ .Keywords }}{{else}}{{ .Today.Year }}{{end}}"
|
||||
keyword: "{{ if .Keywords }}{{ .Keywords }}{{else}}-{{end}}"
|
||||
|
||||
rows:
|
||||
selector: section.sch_res_list > ul > li:has(span.sch_datetime:contains(":"))
|
||||
|
||||
@@ -67,6 +67,10 @@ search:
|
||||
fields:
|
||||
title:
|
||||
selector: p:nth-child(1) > a
|
||||
attribute: title
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["View torrent info : ", ""]
|
||||
details:
|
||||
selector: p:nth-child(1) > a[href^="/torrent/"]
|
||||
attribute: href
|
||||
|
||||
@@ -50,7 +50,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: drop_polish_prefix
|
||||
type: checkbox
|
||||
label: Drop the Polish title prefix
|
||||
|
||||
@@ -28,6 +28,8 @@ caps:
|
||||
- {id: 29, cat: Audio/Video, desc: "Audio Videos"}
|
||||
# Doku
|
||||
- {id: 113, cat: TV/Documentary, desc: "Doku 3D"}
|
||||
- {id: 130, cat: TV/Documentary, desc: "Doku Bluray"}
|
||||
- {id: 131, cat: TV/Documentary, desc: "Doku DVDR"}
|
||||
- {id: 76, cat: TV/Documentary, desc: "Doku HD"}
|
||||
- {id: 78, cat: TV/Documentary, desc: "Doku Packs"}
|
||||
- {id: 75, cat: TV/Documentary, desc: "Doku SD"}
|
||||
@@ -47,11 +49,16 @@ caps:
|
||||
- {id: 36, cat: Movies/HD, desc: "Filme SD"}
|
||||
# Serien
|
||||
- {id: 112, cat: TV/Anime, desc: "Serien Anime"}
|
||||
- {id: 128, cat: TV/HD, desc: "Serien Bluray"}
|
||||
- {id: 129, cat: TV/SD, desc: "Serien DVDR"}
|
||||
- {id: 69, cat: TV/HD, desc: "Serien HD"}
|
||||
- {id: 72, cat: TV/Foreign, desc: "Serien Int."}
|
||||
- {id: 68, cat: TV, desc: "Serien Packs"}
|
||||
- {id: 68, cat: TV/SD, desc: "Serien Packs SD"}
|
||||
- {id: 66, cat: TV/SD, desc: "Serien SD"}
|
||||
- {id: 125, cat: TV/HD, desc: "Serien Packs HD"}
|
||||
- {id: 126, cat: TV/UHD, desc: "Serien Packs UHD"}
|
||||
- {id: 108, cat: TV, desc: "Serien TV-Shows"}
|
||||
- {id: 127, cat: TV/UHD, desc: "Serien TV-Shows UHD"}
|
||||
# Sonstige
|
||||
- {id: 117, cat: Other, desc: "Sonstige Diverses"}
|
||||
- {id: 28, cat: Books, desc: "Sonstige eBooks"}
|
||||
@@ -134,6 +141,7 @@ search:
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
# 0 active, 1 all, 2 dead
|
||||
incldead: 1
|
||||
orderby: "{{ .Config.sort }}"
|
||||
sort: "{{ .Config.type }}"
|
||||
|
||||
@@ -7,7 +7,7 @@ type: public
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://torrentview11.net/
|
||||
- https://torrentview12.net/
|
||||
legacylinks:
|
||||
- https://torrentview.net/
|
||||
- https://torrentview3.net/
|
||||
@@ -18,6 +18,7 @@ legacylinks:
|
||||
- https://torrentview8.net/
|
||||
- https://torrentview9.net/
|
||||
- https://torrentview10.net/
|
||||
- https://torrentview11.net/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
|
||||
@@ -39,7 +39,8 @@ settings:
|
||||
- name: info
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
|
||||
@@ -15,26 +15,27 @@ caps:
|
||||
categorymappings:
|
||||
- {id: 28, cat: TV, desc: "AdultSwim"}
|
||||
- {id: 29, cat: TV, desc: "AdultSwim WOC"}
|
||||
- {id: 10, cat: TV, desc: "TV Animation"}
|
||||
- {id: 18, cat: TV, desc: "TV Animation WOC"}
|
||||
- {id: 24, cat: TV/Anime, desc: "Anime-x264"}
|
||||
- {id: 20, cat: TV/Anime, desc: "Anime-x265/AV1"}
|
||||
- {id: 32, cat: Movies/Foreign, desc: "Asian Movies"}
|
||||
- {id: 31, cat: TV/FOREIGN, desc: "Asian TV (ENGSUB)"}
|
||||
- {id: 6, cat: Audio/Audiobook, desc: "Audio / E-Books"}
|
||||
- {id: 9, cat: Books/Comics, desc: "Comics / Manga"}
|
||||
- {id: 22, cat: TV, desc: "Current TV"}
|
||||
- {id: 17, cat: TV/Documentary, desc: "Documentaries"}
|
||||
- {id: 37, cat: Movies, desc: "Horror"}
|
||||
- {id: 8, cat: TV/WEB-DL, desc: "Howard Stern"}
|
||||
- {id: 33, cat: Movies, desc: "Laserdiscs"}
|
||||
- {id: 27, cat: Movies, desc: "Movies"}
|
||||
- {id: 25, cat: Audio/Video, desc: "Music / Video"}
|
||||
- {id: 35, cat: XXX, desc: "NSFW"}
|
||||
- {id: 23, cat: PC/Games, desc: "PC Games"}
|
||||
- {id: 8, cat: TV/WEB-DL, desc: "Howard Stern"}
|
||||
- {id: 16, cat: PC/0day, desc: "Roms / Emulation"}
|
||||
- {id: 12, cat: TV, desc: "TV - Pre 2009 WOC"}
|
||||
- {id: 11, cat: TV, desc: "TV - Pre 2014"}
|
||||
- {id: 10, cat: TV, desc: "TV Animation"}
|
||||
- {id: 18, cat: TV, desc: "TV Animation WOC"}
|
||||
- {id: 22, cat: TV, desc: "Current TV"}
|
||||
- {id: 34, cat: TV, desc: "TV Archive Packs"}
|
||||
- {id: 33, cat: Movies, desc: "Laserdiscs"}
|
||||
- {id: 35, cat: XXX, desc: "NSFW"}
|
||||
- {id: 36, cat: TV, desc: "Youtube Archives"}
|
||||
- {id: 5, cat: Other, desc: "Other"}
|
||||
|
||||
@@ -65,7 +66,10 @@ settings:
|
||||
options:
|
||||
"desc": "desc"
|
||||
"asc": "asc"
|
||||
|
||||
- name: info_results
|
||||
type: info
|
||||
label: "Search results"
|
||||
default: "Use your browser, login to VHSTAPES and access the torrent search page, and make sure the results are displayed in <b>List View</b>. If in the correct mode, the page will have a link showing <i>Gallery View</i>. If the link is showing <i>List View</i> then click it to switch modes."
|
||||
login:
|
||||
path: login
|
||||
method: form
|
||||
@@ -88,9 +92,9 @@ login:
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://vhstapes.org/torrents.php?order_by=time&order_way=desc&searchtext=&action=advanced&title=&sizeall=&sizetype=gb&sizerange=0.01&filelist=&taglist=&autocomplete_toggle=1
|
||||
- path: torrents.php
|
||||
inputs:
|
||||
view: list
|
||||
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
|
||||
order_by: "{{ .Config.sort }}"
|
||||
order_way: "{{ .Config.type }}"
|
||||
|
||||
@@ -6,9 +6,8 @@ language: zh-cn
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- http://share.xfapi.top:88/
|
||||
legacylinks:
|
||||
- https://bt.xfsub.org/
|
||||
- http://share.xfapi.top:88/
|
||||
|
||||
settings: []
|
||||
|
||||
|
||||
@@ -1,169 +0,0 @@
|
||||
---
|
||||
id: xtremezone
|
||||
name: Xtreme Zone
|
||||
description: "XtreMeZone (MYXZ) is a ROMANIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: ro-ro
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://myxz.eu/
|
||||
legacylinks:
|
||||
- https://www.myxz.eu/
|
||||
- https://www.myxz.org/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 62, cat: TV, desc: "Cartoons"}
|
||||
- {id: 3, cat: TV/Anime, desc: "Anime/Hentai"}
|
||||
- {id: 1, cat: PC/0day, desc: "Appz"}
|
||||
- {id: 9, cat: TV/Documentary, desc: "Documentary"}
|
||||
- {id: 63, cat: TV/Documentary, desc: "Documentary-RO"}
|
||||
- {id: 6, cat: Books, desc: "eBooks"}
|
||||
- {id: 52, cat: Console, desc: "Games-Console"}
|
||||
- {id: 11, cat: PC/Games, desc: "Games-PC"}
|
||||
- {id: 18, cat: Other, desc: "Images"}
|
||||
- {id: 65, cat: Other, desc: "Tutorial"}
|
||||
- {id: 14, cat: PC, desc: "Linux"}
|
||||
- {id: 37, cat: PC/Mac, desc: "Mac"}
|
||||
- {id: 19, cat: PC/Phone-Other, desc: "Mobile"}
|
||||
- {id: 17, cat: Movies/BluRay, desc: "Movies-BluRay"}
|
||||
- {id: 24, cat: Movies/BluRay, desc: "Movies-BluRayRO"}
|
||||
- {id: 7, cat: Movies/DVD, desc: "Movies-DVD"}
|
||||
- {id: 2, cat: Movies/DVD, desc: "Movies-DVD-RO"}
|
||||
- {id: 8, cat: Movies/HD, desc: "Movies-HD"}
|
||||
- {id: 29, cat: Movies/HD, desc: "Movies-HD-RO"}
|
||||
- {id: 59, cat: Movies/Foreign, desc: "Movies-RO"}
|
||||
- {id: 57, cat: Movies/UHD, desc: "Movies-UHD-RO"}
|
||||
- {id: 61, cat: Movies/UHD, desc: "Movies-UHD"}
|
||||
- {id: 38, cat: Movies, desc: "Movies-Packs"}
|
||||
- {id: 10, cat: Movies/SD, desc: "Movies-SD"}
|
||||
- {id: 35, cat: Movies/SD, desc: "Movies-SD-RO"}
|
||||
- {id: 5, cat: Audio, desc: "Music"}
|
||||
- {id: 64, cat: Audio/Video, desc: "Music Videos"}
|
||||
- {id: 22, cat: TV/Sport, desc: "Sport"}
|
||||
- {id: 58, cat: TV/Sport, desc: "Sports-RO"}
|
||||
- {id: 43, cat: TV/HD, desc: "TV-HD"}
|
||||
- {id: 44, cat: TV/HD, desc: "TV-HD-RO"}
|
||||
- {id: 41, cat: TV, desc: "TV-Packs"}
|
||||
- {id: 45, cat: TV/SD, desc: "TV-SD"}
|
||||
- {id: 46, cat: TV/SD, desc: "TV-SD-RO"}
|
||||
- {id: 60, cat: TV/FOREIGN, desc: "TV-RO"}
|
||||
- {id: 66, cat: TV/FOREIGN, desc: "TV-Packs-RO"}
|
||||
- {id: 15, cat: XXX, desc: "XXX"}
|
||||
- {id: 47, cat: XXX, desc: "XXX-DVD"}
|
||||
- {id: 48, cat: XXX, desc: "XXX-HD"}
|
||||
- {id: 49, cat: XXX/Imageset, desc: "XXX-IMGSet"}
|
||||
- {id: 50, cat: XXX, desc: "XXX-Packs"}
|
||||
- {id: 51, cat: XXX, desc: "XXX-SD"}
|
||||
|
||||
modes:
|
||||
search: [q, imdbid]
|
||||
tv-search: [q, season, ep, imdbid]
|
||||
movie-search: [q, imdbid]
|
||||
music-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: "torrent.refreshAt"
|
||||
options:
|
||||
"torrent.refreshAt": "created"
|
||||
"torrent.seeders": "seeders"
|
||||
"torrent.size": "size"
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: "desc"
|
||||
options:
|
||||
"desc": "desc"
|
||||
"asc": "asc"
|
||||
|
||||
login:
|
||||
path: login
|
||||
method: form
|
||||
form: form:has(input[name="_remember_me"])
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
_remember_me: on
|
||||
error:
|
||||
- selector: td.embedded:has(center > h2:contains(failed))
|
||||
- selector: span:contains("Error")
|
||||
test:
|
||||
path: browse
|
||||
|
||||
ratio:
|
||||
path: browse
|
||||
selector: font:contains("Ratio:")+font
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
|
||||
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
|
||||
sort: "{{ .Config.sort }}"
|
||||
direction: "{{ .Config.type }}"
|
||||
|
||||
rows:
|
||||
selector: div.kt-portlet--mobile > div.kt-portlet__body--fit > div.mr-0
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="/browse?categories"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)$
|
||||
title:
|
||||
selector: a[href^="/browse/"]
|
||||
details:
|
||||
selector: a[href^="/browse/"]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="/torrents/"]
|
||||
attribute: href
|
||||
imdb:
|
||||
optional: true
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
attribute: href
|
||||
date:
|
||||
selector: div[data-toggle="kt-tooltip"]
|
||||
attribute: title
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "Jan 2, 2006, 03:04:05 PM"
|
||||
size:
|
||||
selector: div[data-toggle="kt-tooltip"] + div + div
|
||||
grabs:
|
||||
selector: div[data-toggle="kt-tooltip"] + div
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
seeders:
|
||||
selector: div[data-toggle="kt-tooltip"] + div + div + div > div div:nth-child(1)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
leechers:
|
||||
selector: div[data-toggle="kt-tooltip"] + div + div + div > div div:nth-child(2)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: (\d+)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"span.kt-badge--success:contains(\"free\")": 0
|
||||
"span.kt-badge--dark:contains(\"half\")": 0.5
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"span.kt-badge--info:contains(\"double\")": 2
|
||||
"*": 1
|
||||
# engine n/a
|
||||
@@ -102,7 +102,8 @@ settings:
|
||||
- name: info_cookie
|
||||
type: info
|
||||
label: How to get the Cookie
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Click on the first entry in the Left panel under the <b>Name</b> column<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
default: "<ol><li>Login to this tracker with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)<li>Refresh the page by pressing <b>F5</b><li>Click on the first row entry<li>Select the <b>Headers</b> tab on the Right panel<li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section<li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</ol>"
|
||||
|
||||
- name: useragent
|
||||
type: text
|
||||
label: User-Agent
|
||||
|
||||
178
src/Jackett.Common/Definitions/yingk.yml
Normal file
178
src/Jackett.Common/Definitions/yingk.yml
Normal file
@@ -0,0 +1,178 @@
|
||||
---
|
||||
id: yingk
|
||||
name: YingK
|
||||
description: "YingK is a CHINESE Private Torrent Tracker for HD MOVIES / TV / GENERAL"
|
||||
language: zh-cn
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://yingk.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 401, cat: Movies, desc: "Movies/电影"}
|
||||
- {id: 402, cat: TV, desc: "TV Series/电视剧"}
|
||||
- {id: 403, cat: TV, desc: "TV Shows/综艺"}
|
||||
- {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
|
||||
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
|
||||
- {id: 408, cat: Audio, desc: "Music/音乐"}
|
||||
- {id: 407, cat: TV/Sport, desc: "Sports/体育"}
|
||||
- {id: 406, cat: Audio/Video, desc: "MusicVideo/MV"}
|
||||
- {id: 412, cat: Books, desc: "Study/学习"}
|
||||
- {id: 409, cat: Other, desc: "Misc/其他"}
|
||||
|
||||
modes:
|
||||
search: [q, imdbid]
|
||||
tv-search: [q, season, ep, imdbid]
|
||||
movie-search: [q, imdbid]
|
||||
music-search: [q]
|
||||
|
||||
settings:
|
||||
- name: username
|
||||
type: text
|
||||
label: Username
|
||||
- name: password
|
||||
type: password
|
||||
label: Password
|
||||
- name: english_title
|
||||
type: checkbox
|
||||
label: "Use English titles instead of Chinese ones (when available)."
|
||||
default: false
|
||||
- name: sort
|
||||
type: select
|
||||
label: Sort requested from site
|
||||
default: "4"
|
||||
options:
|
||||
"4": "created"
|
||||
"7": "seeders"
|
||||
"5": "size"
|
||||
"1": "title"
|
||||
- name: type
|
||||
type: select
|
||||
label: Order requested from site
|
||||
default: "desc"
|
||||
options:
|
||||
"desc": "desc"
|
||||
"asc": "asc"
|
||||
- name: info_tpp
|
||||
type: info
|
||||
label: Results Per Page
|
||||
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
|
||||
|
||||
login:
|
||||
path: login.php
|
||||
method: form
|
||||
form: form[action="takelogin.php"]
|
||||
inputs:
|
||||
logintype: username
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
logout: ""
|
||||
thispagewidth: yes
|
||||
error:
|
||||
- selector: td.embedded:has(h2:contains("姿势不正确"))
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href^="userdetails.php?id="] # no logout link anyplace?
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: torrents.php
|
||||
inputs:
|
||||
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
|
||||
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
|
||||
# 0 incldead, 1 active, 2 dead, 3 no rating
|
||||
incldead: 0
|
||||
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%, 8 all promotions
|
||||
spstate: 0
|
||||
# 0 all, 1 popular, 2 classic, 3 recomended, 4 normal
|
||||
picktype: 0
|
||||
# 0 title, 3 uploader, 4 movie info, 5 movie number, 6 torrent hash, 7 active
|
||||
search_area: "{{ if .Query.IMDBID }}5{{else}}0{{end}}"
|
||||
# 0 AND, 1 OR, 2 exact
|
||||
search_mode: 0
|
||||
sort: "{{ .Config.sort }}"
|
||||
type: "{{ .Config.type }}"
|
||||
# supports imdbid searches but does not display imdb links in results.
|
||||
|
||||
rows:
|
||||
selector: table.torrents > tbody > tr:not(:has(td[class="colhead"]))
|
||||
after: 1
|
||||
|
||||
fields:
|
||||
category:
|
||||
selector: a[href^="?cat="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title_raw:
|
||||
selector: a[href^="details.php?id="]
|
||||
title_raw:
|
||||
optional: true
|
||||
selector: a[title][href^="details.php?id="]
|
||||
attribute: title
|
||||
# note: final title processing is at the bottom after descrptions is fetched.
|
||||
details:
|
||||
selector: a[href^="details.php?id="]
|
||||
attribute: href
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
imdb:
|
||||
optional: true
|
||||
selector: a[href*="imdb.com/title/tt"]
|
||||
attribute: href
|
||||
seeders:
|
||||
selector: td:nth-child(3)
|
||||
leechers:
|
||||
selector: td:nth-child(4)
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["-1", "0"]
|
||||
grabs:
|
||||
selector: td:nth-child(5)
|
||||
date:
|
||||
# time type: time elapsed (default)
|
||||
selector: td:nth-child(9) > span[title]
|
||||
attribute: title
|
||||
optional: true
|
||||
filters:
|
||||
- name: append
|
||||
args: " +08:00"
|
||||
- name: dateparse
|
||||
args: "2006-01-02 15:04:05 -07:00"
|
||||
date:
|
||||
# time added
|
||||
selector: td:nth-child(9):not(:has(span))
|
||||
optional: true
|
||||
filters:
|
||||
- name: append
|
||||
args: " +08:00"
|
||||
- name: dateparse
|
||||
args: "2006-01-0215:04:05 -07:00"
|
||||
size:
|
||||
selector: td:nth-child(10)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img.pro_free: 0
|
||||
img.pro_free2up: 0
|
||||
img.pro_50pctdown: 0.5
|
||||
img.pro_50pctdown2up: 0.5
|
||||
img.pro_30pctdown: 0.3
|
||||
"*": 1
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img.pro_50pctdown2up: 2
|
||||
img.pro_free2up: 2
|
||||
img.pro_2up: 2
|
||||
"*": 1
|
||||
description:
|
||||
selector: td:nth-child(2)
|
||||
remove: a, img
|
||||
title_english:
|
||||
remove: a, img, b, span
|
||||
selector: td:nth-child(2)
|
||||
title:
|
||||
text: "{{ if and .Config.english_title .Result.title_english }}{{ .Result.title_english }}{{ else }}{{ .Result.title_raw }}{{ end }}"
|
||||
# engine n/a (likely based on NexusPHP)
|
||||
@@ -34,6 +34,79 @@ namespace Jackett.Common.Indexers.Abstract
|
||||
// hook to adjust the search term
|
||||
protected virtual string GetSearchTerm(TorznabQuery query) => $"{query.SearchTerm} {query.GetEpisodeSearchString()}";
|
||||
|
||||
// hook to adjust the search category
|
||||
protected virtual List<KeyValuePair<string, string>> GetSearchQueryParameters(TorznabQuery query)
|
||||
{
|
||||
var categoryMapping = MapTorznabCapsToTrackers(query).Distinct().ToList();
|
||||
var qc = new List<KeyValuePair<string, string>> // NameValueCollection don't support cat[]=19&cat[]=6
|
||||
{
|
||||
{"in", "1"},
|
||||
{"type", categoryMapping.Any() ? categoryMapping.First() : "0"}
|
||||
};
|
||||
|
||||
// resolution filter to improve the search
|
||||
if (!query.Categories.Contains(TorznabCatType.Movies.ID) && !query.Categories.Contains(TorznabCatType.TV.ID) &&
|
||||
!query.Categories.Contains(TorznabCatType.Audio.ID))
|
||||
{
|
||||
if (query.Categories.Contains(TorznabCatType.MoviesUHD.ID) || query.Categories.Contains(TorznabCatType.TVUHD.ID))
|
||||
qc.Add("video_quality[]", "6"); // 2160p
|
||||
if (query.Categories.Contains(TorznabCatType.MoviesHD.ID) || query.Categories.Contains(TorznabCatType.TVHD.ID))
|
||||
{
|
||||
qc.Add("video_quality[]", "2"); // 720p
|
||||
qc.Add("video_quality[]", "7"); // 1080i
|
||||
qc.Add("video_quality[]", "3"); // 1080p
|
||||
}
|
||||
if (query.Categories.Contains(TorznabCatType.MoviesSD.ID) || query.Categories.Contains(TorznabCatType.TVSD.ID))
|
||||
qc.Add("video_quality[]", "1"); // SD
|
||||
}
|
||||
|
||||
// note, search by tmdb and tvdb are supported too
|
||||
// https://privatehd.to/api/v1/jackett/torrents?tmdb=1234
|
||||
// https://privatehd.to/api/v1/jackett/torrents?tvdb=3653
|
||||
if (query.IsImdbQuery)
|
||||
qc.Add("imdb", query.ImdbID);
|
||||
else
|
||||
qc.Add("search", GetSearchTerm(query).Trim());
|
||||
|
||||
return qc;
|
||||
}
|
||||
|
||||
// hook to adjust category parsing
|
||||
protected virtual List<int> ParseCategories(TorznabQuery query, JToken row)
|
||||
{
|
||||
var cats = new List<int>();
|
||||
var resolution = row.Value<string>("video_quality");
|
||||
switch(row.Value<string>("type"))
|
||||
{
|
||||
case "Movie":
|
||||
if (query.Categories.Contains(TorznabCatType.Movies.ID))
|
||||
cats.Add(TorznabCatType.Movies.ID);
|
||||
cats.Add(resolution switch
|
||||
{
|
||||
var res when _hdResolutions.Contains(res) => TorznabCatType.MoviesHD.ID,
|
||||
"2160p" => TorznabCatType.MoviesUHD.ID,
|
||||
_ => TorznabCatType.MoviesSD.ID
|
||||
});
|
||||
break;
|
||||
case "TV-Show":
|
||||
if (query.Categories.Contains(TorznabCatType.TV.ID))
|
||||
cats.Add(TorznabCatType.TV.ID);
|
||||
cats.Add(resolution switch
|
||||
{
|
||||
var res when _hdResolutions.Contains(res) => TorznabCatType.TVHD.ID,
|
||||
"2160p" => TorznabCatType.TVUHD.ID,
|
||||
_ => TorznabCatType.TVSD.ID
|
||||
});
|
||||
break;
|
||||
case "Music":
|
||||
cats.Add(TorznabCatType.Audio.ID);
|
||||
break;
|
||||
default:
|
||||
throw new Exception("Error parsing category!");
|
||||
}
|
||||
return cats;
|
||||
}
|
||||
|
||||
protected AvistazTracker(string link, string id, string name, string description,
|
||||
IIndexerConfigurationService configService, WebClient client, Logger logger,
|
||||
IProtectionService p, TorznabCapabilities caps)
|
||||
@@ -51,16 +124,7 @@ without this configuration the torrent download does not work.<br/>You can find
|
||||
{
|
||||
Encoding = Encoding.UTF8;
|
||||
Language = "en-us";
|
||||
|
||||
AddCategoryMapping(1, TorznabCatType.Movies);
|
||||
AddCategoryMapping(1, TorznabCatType.MoviesUHD);
|
||||
AddCategoryMapping(1, TorznabCatType.MoviesHD);
|
||||
AddCategoryMapping(1, TorznabCatType.MoviesSD);
|
||||
AddCategoryMapping(2, TorznabCatType.TV);
|
||||
AddCategoryMapping(2, TorznabCatType.TVUHD);
|
||||
AddCategoryMapping(2, TorznabCatType.TVHD);
|
||||
AddCategoryMapping(2, TorznabCatType.TVSD);
|
||||
AddCategoryMapping(3, TorznabCatType.Audio);
|
||||
Type = "private";
|
||||
}
|
||||
|
||||
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
|
||||
@@ -95,37 +159,7 @@ without this configuration the torrent download does not work.<br/>You can find
|
||||
{
|
||||
var releases = new List<ReleaseInfo>();
|
||||
|
||||
var categoryMapping = MapTorznabCapsToTrackers(query).Distinct().ToList();
|
||||
var qc = new List<KeyValuePair<string, string>> // NameValueCollection don't support cat[]=19&cat[]=6
|
||||
{
|
||||
{"in", "1"},
|
||||
{"type", categoryMapping.Any() ? categoryMapping.First() : "0"} // type=0 => all categories
|
||||
};
|
||||
|
||||
// resolution filter to improve the search
|
||||
if (!query.Categories.Contains(TorznabCatType.Movies.ID) && !query.Categories.Contains(TorznabCatType.TV.ID) &&
|
||||
!query.Categories.Contains(TorznabCatType.Audio.ID))
|
||||
{
|
||||
if (query.Categories.Contains(TorznabCatType.MoviesUHD.ID) || query.Categories.Contains(TorznabCatType.TVUHD.ID))
|
||||
qc.Add("video_quality[]", "6"); // 2160p
|
||||
if (query.Categories.Contains(TorznabCatType.MoviesHD.ID) || query.Categories.Contains(TorznabCatType.TVHD.ID))
|
||||
{
|
||||
qc.Add("video_quality[]", "2"); // 720p
|
||||
qc.Add("video_quality[]", "7"); // 1080i
|
||||
qc.Add("video_quality[]", "3"); // 1080p
|
||||
}
|
||||
if (query.Categories.Contains(TorznabCatType.MoviesSD.ID) || query.Categories.Contains(TorznabCatType.TVSD.ID))
|
||||
qc.Add("video_quality[]", "1"); // SD
|
||||
}
|
||||
|
||||
// note, search by tmdb and tvdb are supported too
|
||||
// https://privatehd.to/api/v1/jackett/torrents?tmdb=1234
|
||||
// https://privatehd.to/api/v1/jackett/torrents?tvdb=3653
|
||||
if (query.IsImdbQuery)
|
||||
qc.Add("imdb", query.ImdbID);
|
||||
else
|
||||
qc.Add("search", GetSearchTerm(query).Trim());
|
||||
|
||||
var qc = GetSearchQueryParameters(query);
|
||||
var episodeSearchUrl = SearchUrl + "?" + qc.GetQueryString();
|
||||
var response = await RequestStringWithCookiesAndRetry(episodeSearchUrl, headers: GetSearchHeaders());
|
||||
if (response.Status == HttpStatusCode.Unauthorized || response.Status == HttpStatusCode.PreconditionFailed)
|
||||
@@ -172,36 +206,7 @@ without this configuration the torrent download does not work.<br/>You can find
|
||||
description += $"<br/>Subtitles: {string.Join(", ", subtitleList)}";
|
||||
}
|
||||
|
||||
var cats = new List<int>();
|
||||
var resolution = row.Value<string>("video_quality");
|
||||
switch(row.Value<string>("type"))
|
||||
{
|
||||
case "Movie":
|
||||
if (query.Categories.Contains(TorznabCatType.Movies.ID))
|
||||
cats.Add(TorznabCatType.Movies.ID);
|
||||
cats.Add(resolution switch
|
||||
{
|
||||
var res when _hdResolutions.Contains(res) => TorznabCatType.MoviesHD.ID,
|
||||
"2160p" => TorznabCatType.MoviesUHD.ID,
|
||||
_ => TorznabCatType.MoviesSD.ID
|
||||
});
|
||||
break;
|
||||
case "TV-Show":
|
||||
if (query.Categories.Contains(TorznabCatType.TV.ID))
|
||||
cats.Add(TorznabCatType.TV.ID);
|
||||
cats.Add(resolution switch
|
||||
{
|
||||
var res when _hdResolutions.Contains(res) => TorznabCatType.TVHD.ID,
|
||||
"2160p" => TorznabCatType.TVUHD.ID,
|
||||
_ => TorznabCatType.TVSD.ID
|
||||
});
|
||||
break;
|
||||
case "Music":
|
||||
cats.Add(TorznabCatType.Audio.ID);
|
||||
break;
|
||||
default:
|
||||
throw new Exception("Error parsing category!");
|
||||
}
|
||||
var cats = ParseCategories(query, row);
|
||||
|
||||
var release = new ReleaseInfo
|
||||
{
|
||||
|
||||
186
src/Jackett.Common/Indexers/Abstract/XtremeZoneTracker.cs
Normal file
186
src/Jackett.Common/Indexers/Abstract/XtremeZoneTracker.cs
Normal file
@@ -0,0 +1,186 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
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 Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
using WebClient = Jackett.Common.Utils.Clients.WebClient;
|
||||
|
||||
namespace Jackett.Common.Indexers.Abstract
|
||||
{
|
||||
[ExcludeFromCodeCoverage]
|
||||
public abstract class XtremeZoneTracker : BaseWebIndexer
|
||||
{
|
||||
private readonly Dictionary<string, string> ApiHeaders = new Dictionary<string, string>
|
||||
{
|
||||
{"Accept", "application/json"},
|
||||
{"Content-Type", "application/json"}
|
||||
};
|
||||
private string LoginUrl => SiteLink + "api/login";
|
||||
private string SearchUrl => SiteLink + "api/torrent";
|
||||
private string _token;
|
||||
|
||||
private new ConfigurationDataBasicLogin configData => (ConfigurationDataBasicLogin)base.configData;
|
||||
|
||||
protected XtremeZoneTracker(string link, string id, string name, string description,
|
||||
IIndexerConfigurationService configService, WebClient client, Logger logger,
|
||||
IProtectionService p, TorznabCapabilities caps)
|
||||
: base(id: id,
|
||||
name: name,
|
||||
description: description,
|
||||
link: link,
|
||||
caps: caps,
|
||||
configService: configService,
|
||||
client: client,
|
||||
logger: logger,
|
||||
p: p,
|
||||
configData: new ConfigurationDataBasicLogin())
|
||||
{
|
||||
Encoding = Encoding.UTF8;
|
||||
Language = "ro-ro";
|
||||
Type = "private";
|
||||
|
||||
// requestDelay for API Limit (1 request per 2 seconds)
|
||||
webclient.requestDelay = 2.1;
|
||||
}
|
||||
|
||||
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
|
||||
{
|
||||
LoadValuesFromJson(configJson);
|
||||
|
||||
await RenewalTokenAsync();
|
||||
|
||||
var releases = await PerformQuery(new TorznabQuery());
|
||||
await ConfigureIfOK(string.Empty, releases.Any(),
|
||||
() => throw new Exception("Could not find releases."));
|
||||
|
||||
return IndexerConfigurationStatus.Completed;
|
||||
}
|
||||
|
||||
private async Task RenewalTokenAsync()
|
||||
{
|
||||
var body = new Dictionary<string, string>
|
||||
{
|
||||
{ "username", configData.Username.Value.Trim() },
|
||||
{ "password", configData.Password.Value.Trim() }
|
||||
};
|
||||
var jsonData = JsonConvert.SerializeObject(body);
|
||||
var result = await PostDataWithCookies(LoginUrl, null, headers: ApiHeaders, rawbody: jsonData);
|
||||
var json = JObject.Parse(result.Content);
|
||||
_token = json.Value<string>("token");
|
||||
if (_token == null)
|
||||
throw new Exception(json.Value<string>("message"));
|
||||
}
|
||||
|
||||
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
|
||||
{
|
||||
var releases = new List<ReleaseInfo>();
|
||||
|
||||
//var categoryMapping = MapTorznabCapsToTrackers(query).Distinct().ToList();
|
||||
var qc = new List<KeyValuePair<string, string>> // NameValueCollection don't support cat[]=19&cat[]=6
|
||||
{
|
||||
{"itemsPerPage", "100"},
|
||||
{"sort", "torrent.createdAt"},
|
||||
{"direction", "desc"}
|
||||
};
|
||||
|
||||
foreach (var cat in MapTorznabCapsToTrackers(query))
|
||||
qc.Add("categories[]", cat);
|
||||
|
||||
if (query.IsImdbQuery)
|
||||
qc.Add("imdbId", query.ImdbID);
|
||||
else
|
||||
qc.Add("search", query.GetQueryString());
|
||||
|
||||
if (string.IsNullOrWhiteSpace(_token)) // fist time login
|
||||
await RenewalTokenAsync();
|
||||
|
||||
var searchUrl = SearchUrl + "?" + qc.GetQueryString();
|
||||
var response = await RequestStringWithCookies(searchUrl, headers: GetSearchHeaders());
|
||||
if (response.Status == HttpStatusCode.Unauthorized)
|
||||
{
|
||||
await RenewalTokenAsync(); // re-login
|
||||
response = await RequestStringWithCookies(searchUrl, headers: GetSearchHeaders());
|
||||
}
|
||||
else if (response.Status != HttpStatusCode.OK)
|
||||
throw new Exception($"Unknown error in search: {response.Content}");
|
||||
|
||||
try
|
||||
{
|
||||
var rows = JArray.Parse(response.Content);
|
||||
foreach (var row in rows)
|
||||
{
|
||||
var id = row.Value<string>("id");
|
||||
var comments = new Uri($"{SiteLink}browse/{id}");
|
||||
var link = new Uri($"{SiteLink}api/torrent/{id}/download");
|
||||
var publishDate = DateTime.Parse(row.Value<string>("created_at"), CultureInfo.InvariantCulture);
|
||||
var cat = row.Value<JToken>("category").Value<string>("id");
|
||||
|
||||
// "description" field in API has too much HTML code
|
||||
var description = row.Value<string>("short_description");
|
||||
|
||||
var jBanner = row.Value<string>("poster");
|
||||
var banner = (string.IsNullOrEmpty(jBanner) || !jBanner.StartsWith("http")) ? null : new Uri(jBanner);
|
||||
|
||||
var dlVolumeFactor = row.Value<bool>("is_half_download") ? 0.5: 1.0;
|
||||
dlVolumeFactor = row.Value<bool>("is_freeleech") ? 0.0 : dlVolumeFactor;
|
||||
var ulVolumeFactor = row.Value<bool>("is_double_upload") ? 2.0: 1.0;
|
||||
|
||||
var release = new ReleaseInfo
|
||||
{
|
||||
Title = row.Value<string>("name"),
|
||||
Link = link,
|
||||
Comments = comments,
|
||||
Guid = comments,
|
||||
Category = MapTrackerCatToNewznab(cat),
|
||||
PublishDate = publishDate,
|
||||
Description = description,
|
||||
BannerUrl = banner,
|
||||
Size = row.Value<long>("size"),
|
||||
Grabs = row.Value<long>("times_completed"),
|
||||
Seeders = row.Value<int>("seeders"),
|
||||
Peers = row.Value<int>("leechers") + row.Value<int>("seeders"),
|
||||
DownloadVolumeFactor = dlVolumeFactor,
|
||||
UploadVolumeFactor = ulVolumeFactor,
|
||||
MinimumRatio = 1,
|
||||
MinimumSeedTime = 172800 // 48 hours
|
||||
};
|
||||
|
||||
releases.Add(release);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
OnParseError(response.Content, ex);
|
||||
}
|
||||
return releases;
|
||||
}
|
||||
|
||||
public override async Task<byte[]> Download(Uri link)
|
||||
{
|
||||
var response = await RequestBytesWithCookies(link.ToString(), headers: GetSearchHeaders());
|
||||
if (response.Status == HttpStatusCode.Unauthorized)
|
||||
{
|
||||
await RenewalTokenAsync();
|
||||
response = await RequestBytesWithCookies(link.ToString(), headers: GetSearchHeaders());
|
||||
}
|
||||
else if (response.Status != HttpStatusCode.OK)
|
||||
throw new Exception($"Unknown error in download: {response.Content}");
|
||||
return response.Content;
|
||||
}
|
||||
|
||||
private Dictionary<string, string> GetSearchHeaders() => new Dictionary<string, string>
|
||||
{
|
||||
{"Authorization", $"Bearer {_token}"}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,17 @@ namespace Jackett.Common.Indexers
|
||||
client: wc,
|
||||
logger: l,
|
||||
p: ps)
|
||||
=> Type = "private";
|
||||
{
|
||||
AddCategoryMapping(1, TorznabCatType.Movies);
|
||||
AddCategoryMapping(1, TorznabCatType.MoviesUHD);
|
||||
AddCategoryMapping(1, TorznabCatType.MoviesHD);
|
||||
AddCategoryMapping(1, TorznabCatType.MoviesSD);
|
||||
AddCategoryMapping(2, TorznabCatType.TV);
|
||||
AddCategoryMapping(2, TorznabCatType.TVUHD);
|
||||
AddCategoryMapping(2, TorznabCatType.TVHD);
|
||||
AddCategoryMapping(2, TorznabCatType.TVSD);
|
||||
AddCategoryMapping(3, TorznabCatType.Audio);
|
||||
}
|
||||
|
||||
// Avistaz has episodes without season. eg Running Man E323
|
||||
protected override string GetSearchTerm(TorznabQuery query) =>
|
||||
|
||||
@@ -17,7 +17,7 @@ using NLog;
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
[ExcludeFromCodeCoverage]
|
||||
public class BroadcastTheNet : BaseWebIndexer
|
||||
public class BroadcasTheNet : BaseWebIndexer
|
||||
{
|
||||
// Docs at http://apidocs.broadcasthe.net/docs.php
|
||||
private readonly string APIBASE = "https://api.broadcasthe.net";
|
||||
@@ -29,10 +29,10 @@ namespace Jackett.Common.Indexers
|
||||
set => base.configData = value;
|
||||
}
|
||||
|
||||
public BroadcastTheNet(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
|
||||
: base(id: "broadcastthenet",
|
||||
name: "BroadcastTheNet",
|
||||
description: "Broadcasthe.net (BTN) is an invite-only torrent tracker focused on TV shows",
|
||||
public BroadcasTheNet(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
|
||||
: base(id: "broadcasthenet",
|
||||
name: "BroadcasTheNet",
|
||||
description: "BroadcasTheNet (BTN) is an invite-only torrent tracker focused on TV shows",
|
||||
link: "https://broadcasthe.net/",
|
||||
caps: new TorznabCapabilities(),
|
||||
configService: configService,
|
||||
@@ -24,6 +24,16 @@ namespace Jackett.Common.Indexers
|
||||
client: wc,
|
||||
logger: l,
|
||||
p: ps)
|
||||
=> Type = "private";
|
||||
{
|
||||
AddCategoryMapping(1, TorznabCatType.Movies);
|
||||
AddCategoryMapping(1, TorznabCatType.MoviesUHD);
|
||||
AddCategoryMapping(1, TorznabCatType.MoviesHD);
|
||||
AddCategoryMapping(1, TorznabCatType.MoviesSD);
|
||||
AddCategoryMapping(2, TorznabCatType.TV);
|
||||
AddCategoryMapping(2, TorznabCatType.TVUHD);
|
||||
AddCategoryMapping(2, TorznabCatType.TVHD);
|
||||
AddCategoryMapping(2, TorznabCatType.TVSD);
|
||||
AddCategoryMapping(3, TorznabCatType.Audio);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
61
src/Jackett.Common/Indexers/ExoticaZ.cs
Normal file
61
src/Jackett.Common/Indexers/ExoticaZ.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using Jackett.Common.Indexers.Abstract;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NLog;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
[ExcludeFromCodeCoverage]
|
||||
public class ExoticaZ : AvistazTracker
|
||||
{
|
||||
public override string[] LegacySiteLinks { get; protected set; } =
|
||||
{
|
||||
"https://torrents.yourexotic.com/"
|
||||
};
|
||||
|
||||
public ExoticaZ(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
|
||||
: base(id: "exoticaz",
|
||||
name: "ExoticaZ",
|
||||
description: "ExoticaZ (YourExotic) is a Private Torrent Tracker for 3X",
|
||||
link: "https://exoticaz.to/",
|
||||
caps: new TorznabCapabilities(),
|
||||
configService: configService,
|
||||
client: wc,
|
||||
logger: l,
|
||||
p: ps)
|
||||
{
|
||||
AddCategoryMapping(1, TorznabCatType.XXXx264);
|
||||
AddCategoryMapping(2, TorznabCatType.XXXPacks);
|
||||
AddCategoryMapping(3, TorznabCatType.XXXPacks);
|
||||
AddCategoryMapping(4, TorznabCatType.XXXPacks);
|
||||
AddCategoryMapping(5, TorznabCatType.XXXDVD);
|
||||
AddCategoryMapping(6, TorznabCatType.XXXOther);
|
||||
AddCategoryMapping(7, TorznabCatType.XXXImageset);
|
||||
}
|
||||
|
||||
protected override List<KeyValuePair<string, string>> GetSearchQueryParameters(TorznabQuery query)
|
||||
{
|
||||
var categoryMapping = MapTorznabCapsToTrackers(query).Distinct().ToList();
|
||||
var qc = new List<KeyValuePair<string, string>> // NameValueCollection don't support cat[]=19&cat[]=6
|
||||
{
|
||||
{"in", "1"},
|
||||
{"category", categoryMapping.Any() ? categoryMapping.First() : "0"},
|
||||
{"search", GetSearchTerm(query).Trim()}
|
||||
};
|
||||
|
||||
return qc;
|
||||
}
|
||||
|
||||
protected override List<int> ParseCategories(TorznabQuery query, JToken row)
|
||||
{
|
||||
var cat = row.Value<JObject>("category").Properties().First().Name;
|
||||
return MapTrackerCatToNewznab(cat).ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
78
src/Jackett.Common/Indexers/IceTorrent.cs
Normal file
78
src/Jackett.Common/Indexers/IceTorrent.cs
Normal file
@@ -0,0 +1,78 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Jackett.Common.Indexers.Abstract;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using NLog;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
[ExcludeFromCodeCoverage]
|
||||
public class IceTorrent : XtremeZoneTracker
|
||||
{
|
||||
public override string[] LegacySiteLinks { get; protected set; } = {
|
||||
"https://www.icetorrent.org/"
|
||||
};
|
||||
|
||||
public IceTorrent(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
|
||||
: base(
|
||||
id: "icetorrent",
|
||||
name: "ICE Torrent",
|
||||
description: "ICE Torrent is a ratioless ROMANIAN Private Torrent Tracker for 0DAY / GENERAL",
|
||||
link: "https://icetorrent.org/",
|
||||
caps: new TorznabCapabilities
|
||||
{
|
||||
SupportsImdbMovieSearch = true
|
||||
// SupportsImdbTVSearch = true (supported by the site but disabled due to #8107)
|
||||
},
|
||||
configService: configService,
|
||||
client: wc,
|
||||
logger: l,
|
||||
p: ps)
|
||||
{
|
||||
AddCategoryMapping(38, TorznabCatType.Movies, "Movie Packs");
|
||||
AddCategoryMapping(10, TorznabCatType.MoviesSD, "Movies: SD");
|
||||
AddCategoryMapping(35, TorznabCatType.MoviesSD, "Movies: SD Ro");
|
||||
AddCategoryMapping(8, TorznabCatType.MoviesHD, "Movies: HD");
|
||||
AddCategoryMapping(29, TorznabCatType.MoviesHD, "Movies: HD Ro");
|
||||
AddCategoryMapping(7, TorznabCatType.MoviesDVD, "Movies: DVD");
|
||||
AddCategoryMapping(2, TorznabCatType.MoviesDVD, "Movies: DVD Ro");
|
||||
AddCategoryMapping(17, TorznabCatType.MoviesBluRay, "Movies: BluRay");
|
||||
AddCategoryMapping(24, TorznabCatType.MoviesBluRay, "Movies: BluRay Ro");
|
||||
AddCategoryMapping(59, TorznabCatType.Movies, "Movies: Ro");
|
||||
AddCategoryMapping(57, TorznabCatType.MoviesUHD, "Movies: 4K (2160p) Ro");
|
||||
AddCategoryMapping(61, TorznabCatType.MoviesUHD, "Movies: 4K (2160p)");
|
||||
AddCategoryMapping(41, TorznabCatType.TV, "TV Packs");
|
||||
AddCategoryMapping(66, TorznabCatType.TV, "TV Packs Ro");
|
||||
AddCategoryMapping(45, TorznabCatType.TV, "TV Episodes");
|
||||
AddCategoryMapping(46, TorznabCatType.TV, "TV Episodes Ro");
|
||||
AddCategoryMapping(43, TorznabCatType.TVHD, "TV Episodes HD");
|
||||
AddCategoryMapping(44, TorznabCatType.TVHD, "TV Episodes HD Ro");
|
||||
AddCategoryMapping(60, TorznabCatType.TV, "TV Ro");
|
||||
AddCategoryMapping(11, TorznabCatType.PCGames, "Games: PC-ISO");
|
||||
AddCategoryMapping(52, TorznabCatType.Console, "Games: Console");
|
||||
AddCategoryMapping(1, TorznabCatType.PC0day, "Applications");
|
||||
AddCategoryMapping(14, TorznabCatType.PC, "Applications: Linux");
|
||||
AddCategoryMapping(37, TorznabCatType.PCMac, "Applications: Mac");
|
||||
AddCategoryMapping(19, TorznabCatType.PCPhoneOther, "Applications: Mobile");
|
||||
AddCategoryMapping(62, TorznabCatType.TV, "TV Cartoons");
|
||||
AddCategoryMapping(3, TorznabCatType.TVAnime, "TV Anime / Hentai");
|
||||
AddCategoryMapping(6, TorznabCatType.BooksEbook, "E-books");
|
||||
AddCategoryMapping(5, TorznabCatType.Audio, "Music");
|
||||
AddCategoryMapping(64, TorznabCatType.AudioVideo, "Music Video");
|
||||
AddCategoryMapping(18, TorznabCatType.Other, "Images");
|
||||
AddCategoryMapping(22, TorznabCatType.TVSport, "TV Sports");
|
||||
AddCategoryMapping(58, TorznabCatType.TVSport, "TV Sports Ro");
|
||||
AddCategoryMapping(9, TorznabCatType.TVDocumentary, "TV Documentary");
|
||||
AddCategoryMapping(63, TorznabCatType.TVDocumentary, "TV Documentary Ro");
|
||||
AddCategoryMapping(65, TorznabCatType.Other, "Tutorial");
|
||||
AddCategoryMapping(67, TorznabCatType.Other, "Miscellaneous");
|
||||
AddCategoryMapping(15, TorznabCatType.XXX, "XXX Movies");
|
||||
AddCategoryMapping(47, TorznabCatType.XXX, "XXX DVD");
|
||||
AddCategoryMapping(48, TorznabCatType.XXX, "XXX HD");
|
||||
AddCategoryMapping(49, TorznabCatType.XXX, "XXX Images");
|
||||
AddCategoryMapping(50, TorznabCatType.XXX, "XXX Packs");
|
||||
AddCategoryMapping(51, TorznabCatType.XXX, "XXX SD");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,16 @@ namespace Jackett.Common.Indexers
|
||||
client: wc,
|
||||
logger: l,
|
||||
p: ps)
|
||||
=> Type = "private";
|
||||
{
|
||||
AddCategoryMapping(1, TorznabCatType.Movies);
|
||||
AddCategoryMapping(1, TorznabCatType.MoviesUHD);
|
||||
AddCategoryMapping(1, TorznabCatType.MoviesHD);
|
||||
AddCategoryMapping(1, TorznabCatType.MoviesSD);
|
||||
AddCategoryMapping(2, TorznabCatType.TV);
|
||||
AddCategoryMapping(2, TorznabCatType.TVUHD);
|
||||
AddCategoryMapping(2, TorznabCatType.TVHD);
|
||||
AddCategoryMapping(2, TorznabCatType.TVSD);
|
||||
AddCategoryMapping(3, TorznabCatType.Audio);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
78
src/Jackett.Common/Indexers/SceneFZ.cs
Normal file
78
src/Jackett.Common/Indexers/SceneFZ.cs
Normal file
@@ -0,0 +1,78 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Jackett.Common.Indexers.Abstract;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using NLog;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
[ExcludeFromCodeCoverage]
|
||||
public class SceneFZ : XtremeZoneTracker
|
||||
{
|
||||
public override string[] LegacySiteLinks { get; protected set; } = {
|
||||
"https://www.scenefz.me/",
|
||||
"https://www.u-torrents.ro/"
|
||||
};
|
||||
|
||||
public SceneFZ(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
|
||||
: base(
|
||||
id: "scenefz",
|
||||
name: "SceneFZ",
|
||||
description: "SceneFZ is a ratioless ROMANIAN Private Torrent Tracker for MOVIES / TV / GENERAL",
|
||||
link: "https://scenefz.me/",
|
||||
caps: new TorznabCapabilities
|
||||
{
|
||||
SupportsImdbMovieSearch = true
|
||||
// SupportsImdbTVSearch = true (supported by the site but disabled due to #8107)
|
||||
},
|
||||
configService: configService,
|
||||
client: wc,
|
||||
logger: l,
|
||||
p: ps)
|
||||
{
|
||||
AddCategoryMapping(62, TorznabCatType.TV, "Cartoons");
|
||||
AddCategoryMapping(3, TorznabCatType.TVAnime, "Anime/Hentai");
|
||||
AddCategoryMapping(1, TorznabCatType.PC0day, "Appz");
|
||||
AddCategoryMapping(9, TorznabCatType.TVDocumentary, "Documentary");
|
||||
AddCategoryMapping(63, TorznabCatType.TVDocumentary, "Documentary-RO");
|
||||
AddCategoryMapping(6, TorznabCatType.Books, "eBooks");
|
||||
AddCategoryMapping(52, TorznabCatType.Console, "Games-Console");
|
||||
AddCategoryMapping(11, TorznabCatType.PCGames, "Games-PC");
|
||||
AddCategoryMapping(18, TorznabCatType.Other, "Images");
|
||||
AddCategoryMapping(65, TorznabCatType.Other, "Tutorial");
|
||||
AddCategoryMapping(14, TorznabCatType.PC, "Linux");
|
||||
AddCategoryMapping(37, TorznabCatType.PCMac, "Mac");
|
||||
AddCategoryMapping(19, TorznabCatType.PCPhoneOther, "Mobile");
|
||||
AddCategoryMapping(17, TorznabCatType.MoviesBluRay, "Movies-BluRay");
|
||||
AddCategoryMapping(24, TorznabCatType.MoviesBluRay, "Movies-BluRayRO");
|
||||
AddCategoryMapping(7, TorznabCatType.MoviesDVD, "Movies-DVD");
|
||||
AddCategoryMapping(2, TorznabCatType.MoviesDVD, "Movies-DVD-RO");
|
||||
AddCategoryMapping(8, TorznabCatType.MoviesHD, "Movies-HD");
|
||||
AddCategoryMapping(29, TorznabCatType.MoviesHD, "Movies-HD-RO");
|
||||
AddCategoryMapping(59, TorznabCatType.MoviesForeign, "Movies-RO");
|
||||
AddCategoryMapping(57, TorznabCatType.MoviesUHD, "Movies-UHD-RO");
|
||||
AddCategoryMapping(61, TorznabCatType.MoviesUHD, "Movies-UHD");
|
||||
AddCategoryMapping(38, TorznabCatType.Movies, "Movies-Packs");
|
||||
AddCategoryMapping(10, TorznabCatType.MoviesSD, "Movies-SD");
|
||||
AddCategoryMapping(35, TorznabCatType.MoviesSD, "Movies-SD-RO");
|
||||
AddCategoryMapping(5, TorznabCatType.Audio, "Music");
|
||||
AddCategoryMapping(64, TorznabCatType.AudioVideo, "Music Videos");
|
||||
AddCategoryMapping(22, TorznabCatType.TVSport, "Sport");
|
||||
AddCategoryMapping(58, TorznabCatType.TVSport, "Sports-RO");
|
||||
AddCategoryMapping(43, TorznabCatType.TVHD, "TV-HD");
|
||||
AddCategoryMapping(44, TorznabCatType.TVHD, "TV-HD-RO");
|
||||
AddCategoryMapping(41, TorznabCatType.TV, "TV-Packs");
|
||||
AddCategoryMapping(45, TorznabCatType.TVSD, "TV-SD");
|
||||
AddCategoryMapping(46, TorznabCatType.TVSD, "TV-SD-RO");
|
||||
AddCategoryMapping(60, TorznabCatType.TVFOREIGN, "TV-RO");
|
||||
AddCategoryMapping(66, TorznabCatType.TVFOREIGN, "TV-Packs-RO");
|
||||
AddCategoryMapping(15, TorznabCatType.XXX, "XXX");
|
||||
AddCategoryMapping(47, TorznabCatType.XXX, "XXX-DVD");
|
||||
AddCategoryMapping(48, TorznabCatType.XXX, "XXX-HD");
|
||||
AddCategoryMapping(49, TorznabCatType.XXXImageset, "XXX-IMGSet");
|
||||
AddCategoryMapping(50, TorznabCatType.XXX, "XXX-Packs");
|
||||
AddCategoryMapping(51, TorznabCatType.XXX, "XXX-SD");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,7 @@ namespace Jackett.Common.Indexers
|
||||
public class SceneTime : BaseWebIndexer
|
||||
{
|
||||
private string StartPageUrl => SiteLink + "login.php";
|
||||
private string LoginUrl => SiteLink + "takelogin.php";
|
||||
private string LoginUrl => SiteLink + "takelogin1.php";
|
||||
private string SearchUrl => SiteLink + "browse.php";
|
||||
private string DownloadUrl => SiteLink + "download.php/{0}/download.torrent";
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Jackett.Common.Indexers.Abstract;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
@@ -33,35 +35,43 @@ namespace Jackett.Common.Indexers
|
||||
|
||||
AddCategoryMapping(1, TorznabCatType.Movies, "Movies");
|
||||
AddCategoryMapping(2, TorznabCatType.Audio, "Music");
|
||||
AddCategoryMapping(3, TorznabCatType.Books, "E-Books");
|
||||
// cat=3 exists but it's required a refactor in Gazelle abstract to make it work
|
||||
//AddCategoryMapping(3, TorznabCatType.Books, "E-Books");
|
||||
}
|
||||
|
||||
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
|
||||
{
|
||||
var results = await base.PerformQuery(query);
|
||||
// results must contain search terms
|
||||
results = results.Where(release => query.MatchQueryStringAND(release.Title));
|
||||
return results;
|
||||
}
|
||||
|
||||
protected override bool ReleaseInfoPostParse(ReleaseInfo release, JObject torrent, JObject result)
|
||||
{
|
||||
var media = (string)torrent["media"];
|
||||
if (!string.IsNullOrEmpty(media))
|
||||
if (string.IsNullOrEmpty(media))
|
||||
return true;
|
||||
switch (media)
|
||||
{
|
||||
switch (media)
|
||||
{
|
||||
case "SD":
|
||||
release.Category.Remove(TorznabCatType.Movies.ID);
|
||||
release.Category.Add(TorznabCatType.MoviesSD.ID);
|
||||
break;
|
||||
case "720p":
|
||||
case "1080p":
|
||||
case "4k": // not verified
|
||||
release.Category.Remove(TorznabCatType.Movies.ID);
|
||||
release.Category.Add(TorznabCatType.MoviesHD.ID);
|
||||
break;
|
||||
case "DVD-R":
|
||||
release.Category.Remove(TorznabCatType.Movies.ID);
|
||||
release.Category.Add(TorznabCatType.MoviesDVD.ID);
|
||||
break;
|
||||
case "BDMV":
|
||||
release.Category.Remove(TorznabCatType.Movies.ID);
|
||||
release.Category.Add(TorznabCatType.MoviesBluRay.ID);
|
||||
break;
|
||||
}
|
||||
case "SD":
|
||||
release.Category.Remove(TorznabCatType.Movies.ID);
|
||||
release.Category.Add(TorznabCatType.MoviesSD.ID);
|
||||
break;
|
||||
case "720p":
|
||||
case "1080p":
|
||||
case "4k": // not verified
|
||||
release.Category.Remove(TorznabCatType.Movies.ID);
|
||||
release.Category.Add(TorznabCatType.MoviesHD.ID);
|
||||
break;
|
||||
case "DVD-R":
|
||||
release.Category.Remove(TorznabCatType.Movies.ID);
|
||||
release.Category.Add(TorznabCatType.MoviesDVD.ID);
|
||||
break;
|
||||
case "BDMV":
|
||||
release.Category.Remove(TorznabCatType.Movies.ID);
|
||||
release.Category.Add(TorznabCatType.MoviesBluRay.ID);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
@@ -192,16 +191,14 @@ namespace Jackett.Common.Indexers
|
||||
var rows = dom.QuerySelectorAll("table.torrenttable > tbody > tr");
|
||||
foreach (var row in rows.Skip(1))
|
||||
{
|
||||
var qColumn1 = row.QuerySelectorAll("td.column1");
|
||||
var qColumn2 = row.QuerySelectorAll("td.column2");
|
||||
var qDetailsLink = row.QuerySelector("a[href^=\"index.php?strWebValue=torrent&strWebAction=details\"]");
|
||||
var qCatLink = row.QuerySelector("a[href^=\"index.php?strWebValue=torrent&strWebAction=search&dir=\"]");
|
||||
var qDlLink = row.QuerySelector("a[href^=\"index.php?strWebValue=torrent&strWebAction=download&id=\"]");
|
||||
var qSeeders = row.QuerySelectorAll("td.column1")[2];
|
||||
var qLeechers = row.QuerySelectorAll("td.column2")[3];
|
||||
var qDateStr = row.QuerySelector("font:has(a)");
|
||||
var qSize = row.QuerySelector("td.column2[align=center]");
|
||||
var catStr = qCatLink.GetAttribute("href").Split('=')[3].Split('#')[0];
|
||||
var link = new Uri(SiteLink + qDlLink.GetAttribute("href"));
|
||||
var sizeStr = qSize.TextContent;
|
||||
var dateStr = qDateStr.TextContent;
|
||||
var split = dateStr.IndexOf("Uploader", StringComparison.OrdinalIgnoreCase);
|
||||
dateStr = dateStr.Substring(0, split > 0 ? split : dateStr.Length).Trim().Replace("Heute", "Today")
|
||||
@@ -217,10 +214,12 @@ namespace Jackett.Common.Indexers
|
||||
downloadFactor = 1;
|
||||
var title = titleRegexp.Match(qDetailsLink.GetAttribute("onmouseover")).Groups[1].Value;
|
||||
var comments = new Uri(SiteLink + qDetailsLink.GetAttribute("href"));
|
||||
var seeders = ParseUtil.CoerceInt(qSeeders.TextContent);
|
||||
var leechers = ParseUtil.CoerceInt(qLeechers.TextContent);
|
||||
var grabs = ParseUtil.CoerceInt(row.QuerySelector("td:nth-child(7)").TextContent);
|
||||
var size = ReleaseInfo.GetBytes(qColumn2[1].TextContent);
|
||||
var seeders = ParseUtil.CoerceInt(qColumn1[3].TextContent);
|
||||
var leechers = ParseUtil.CoerceInt(qColumn2[3].TextContent);
|
||||
var grabs = ParseUtil.CoerceInt(qColumn2[2].TextContent);
|
||||
var publishDate = TimeZoneInfo.ConvertTime(dateGerman, germanyTz, TimeZoneInfo.Local);
|
||||
|
||||
var release = new ReleaseInfo
|
||||
{
|
||||
MinimumRatio = 0.8,
|
||||
@@ -230,7 +229,7 @@ namespace Jackett.Common.Indexers
|
||||
Comments = comments,
|
||||
Link = link,
|
||||
Guid = link,
|
||||
Size = ReleaseInfo.GetBytes(sizeStr),
|
||||
Size = size,
|
||||
Seeders = seeders,
|
||||
Peers = leechers + seeders,
|
||||
PublishDate = publishDate,
|
||||
|
||||
@@ -190,7 +190,7 @@ namespace Jackett.Common.Indexers
|
||||
if (query.IsImdbQuery)
|
||||
searchUrl += "imdbID/" + query.ImdbID + "/";
|
||||
else if (!string.IsNullOrWhiteSpace(searchString))
|
||||
searchUrl += "query/" + WebUtility.UrlEncode(searchString) + "/";
|
||||
searchUrl += "exact/1/query/" + WebUtility.UrlEncode(searchString) + "/";
|
||||
|
||||
var cats = MapTorznabCapsToTrackers(query);
|
||||
if (cats.Count > 0)
|
||||
|
||||
@@ -18,7 +18,8 @@ namespace Jackett.Common.Indexers
|
||||
[ExcludeFromCodeCoverage]
|
||||
public class TorrentsCSV : BaseWebIndexer
|
||||
{
|
||||
private string ApiEndpoint => SiteLink + "service/search";
|
||||
private string SearchEndpoint => SiteLink + "service/search";
|
||||
private string NewEndpoint => SiteLink + "service/new";
|
||||
|
||||
private new ConfigurationData configData => base.configData;
|
||||
|
||||
@@ -27,10 +28,7 @@ namespace Jackett.Common.Indexers
|
||||
name: "Torrents.csv",
|
||||
description: "Torrents.csv is a self-hostable, open source torrent search engine and database",
|
||||
link: "https://torrents-csv.ml/",
|
||||
caps: new TorznabCapabilities
|
||||
{
|
||||
SupportsImdbMovieSearch = true
|
||||
},
|
||||
caps: new TorznabCapabilities(),
|
||||
configService: configService,
|
||||
client: wc,
|
||||
logger: l,
|
||||
@@ -62,17 +60,16 @@ namespace Jackett.Common.Indexers
|
||||
var searchString = query.GetQueryString();
|
||||
if (!string.IsNullOrWhiteSpace(searchString) && searchString.Length < 3)
|
||||
return releases; // search needs at least 3 characters
|
||||
if (string.IsNullOrEmpty(searchString))
|
||||
searchString = "202"; // this search 2020 (yep, 2020 is not working)
|
||||
|
||||
var qc = new NameValueCollection
|
||||
{
|
||||
{ "q", searchString },
|
||||
{ "size", "100" },
|
||||
{ "type_", "torrent" }
|
||||
{ "size", "100" }
|
||||
};
|
||||
if (!string.IsNullOrWhiteSpace(searchString))
|
||||
qc.Add("q", searchString );
|
||||
|
||||
var searchUrl = ApiEndpoint + "?" + qc.GetQueryString();
|
||||
var searchUrl = (string.IsNullOrWhiteSpace(searchString) ? NewEndpoint : SearchEndpoint)
|
||||
+ "?" + qc.GetQueryString();
|
||||
var response = await RequestStringWithCookiesAndRetry(searchUrl);
|
||||
|
||||
try
|
||||
|
||||
@@ -230,6 +230,9 @@ namespace Jackett.Common.Indexers
|
||||
torrent.name = regex.Replace(torrent.name, "$1" + ReplaceMulti + "$2");
|
||||
}
|
||||
|
||||
// issue #8759 replace vostfr and subfrench with English
|
||||
if (ConfigData.Vostfr.Value) torrent.name = torrent.name.Replace("VOSTFR","ENGLISH").Replace("SUBFRENCH","ENGLISH");
|
||||
|
||||
var publishDate = DateTimeUtil.UnixTimestampToDateTime(torrent.added);
|
||||
//TODO replace with download link?
|
||||
var guid = new Uri(TorrentDescriptionUrl.Replace("{id}", torrent.id.ToString()));
|
||||
|
||||
78
src/Jackett.Common/Indexers/XtremeZone.cs
Normal file
78
src/Jackett.Common/Indexers/XtremeZone.cs
Normal file
@@ -0,0 +1,78 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Jackett.Common.Indexers.Abstract;
|
||||
using Jackett.Common.Models;
|
||||
using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
using NLog;
|
||||
|
||||
namespace Jackett.Common.Indexers
|
||||
{
|
||||
[ExcludeFromCodeCoverage]
|
||||
public class XtremeZone : XtremeZoneTracker
|
||||
{
|
||||
public override string[] LegacySiteLinks { get; protected set; } = {
|
||||
"https://www.myxz.eu/",
|
||||
"https://www.myxz.org/"
|
||||
};
|
||||
|
||||
public XtremeZone(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
|
||||
: base(
|
||||
id: "xtremezone",
|
||||
name: "Xtreme Zone",
|
||||
description: "Xtreme Zone (MYXZ) is a ROMANIAN Private Torrent Tracker for MOVIES / TV / GENERAL",
|
||||
link: "https://myxz.eu/",
|
||||
caps: new TorznabCapabilities
|
||||
{
|
||||
SupportsImdbMovieSearch = true
|
||||
// SupportsImdbTVSearch = true (supported by the site but disabled due to #8107)
|
||||
},
|
||||
configService: configService,
|
||||
client: wc,
|
||||
logger: l,
|
||||
p: ps)
|
||||
{
|
||||
AddCategoryMapping(62, TorznabCatType.TV, "Cartoons");
|
||||
AddCategoryMapping(3, TorznabCatType.TVAnime, "Anime/Hentai");
|
||||
AddCategoryMapping(1, TorznabCatType.PC0day, "Appz");
|
||||
AddCategoryMapping(9, TorznabCatType.TVDocumentary, "Documentary");
|
||||
AddCategoryMapping(63, TorznabCatType.TVDocumentary, "Documentary-RO");
|
||||
AddCategoryMapping(6, TorznabCatType.Books, "eBooks");
|
||||
AddCategoryMapping(52, TorznabCatType.Console, "Games-Console");
|
||||
AddCategoryMapping(11, TorznabCatType.PCGames, "Games-PC");
|
||||
AddCategoryMapping(18, TorznabCatType.Other, "Images");
|
||||
AddCategoryMapping(65, TorznabCatType.Other, "Tutorial");
|
||||
AddCategoryMapping(14, TorznabCatType.PC, "Linux");
|
||||
AddCategoryMapping(37, TorznabCatType.PCMac, "Mac");
|
||||
AddCategoryMapping(19, TorznabCatType.PCPhoneOther, "Mobile");
|
||||
AddCategoryMapping(17, TorznabCatType.MoviesBluRay, "Movies-BluRay");
|
||||
AddCategoryMapping(24, TorznabCatType.MoviesBluRay, "Movies-BluRayRO");
|
||||
AddCategoryMapping(7, TorznabCatType.MoviesDVD, "Movies-DVD");
|
||||
AddCategoryMapping(2, TorznabCatType.MoviesDVD, "Movies-DVD-RO");
|
||||
AddCategoryMapping(8, TorznabCatType.MoviesHD, "Movies-HD");
|
||||
AddCategoryMapping(29, TorznabCatType.MoviesHD, "Movies-HD-RO");
|
||||
AddCategoryMapping(59, TorznabCatType.MoviesForeign, "Movies-RO");
|
||||
AddCategoryMapping(57, TorznabCatType.MoviesUHD, "Movies-UHD-RO");
|
||||
AddCategoryMapping(61, TorznabCatType.MoviesUHD, "Movies-UHD");
|
||||
AddCategoryMapping(38, TorznabCatType.Movies, "Movies-Packs");
|
||||
AddCategoryMapping(10, TorznabCatType.MoviesSD, "Movies-SD");
|
||||
AddCategoryMapping(35, TorznabCatType.MoviesSD, "Movies-SD-RO");
|
||||
AddCategoryMapping(5, TorznabCatType.Audio, "Music");
|
||||
AddCategoryMapping(64, TorznabCatType.AudioVideo, "Music Videos");
|
||||
AddCategoryMapping(22, TorznabCatType.TVSport, "Sport");
|
||||
AddCategoryMapping(58, TorznabCatType.TVSport, "Sports-RO");
|
||||
AddCategoryMapping(43, TorznabCatType.TVHD, "TV-HD");
|
||||
AddCategoryMapping(44, TorznabCatType.TVHD, "TV-HD-RO");
|
||||
AddCategoryMapping(41, TorznabCatType.TV, "TV-Packs");
|
||||
AddCategoryMapping(45, TorznabCatType.TVSD, "TV-SD");
|
||||
AddCategoryMapping(46, TorznabCatType.TVSD, "TV-SD-RO");
|
||||
AddCategoryMapping(60, TorznabCatType.TVFOREIGN, "TV-RO");
|
||||
AddCategoryMapping(66, TorznabCatType.TVFOREIGN, "TV-Packs-RO");
|
||||
AddCategoryMapping(15, TorznabCatType.XXX, "XXX");
|
||||
AddCategoryMapping(47, TorznabCatType.XXX, "XXX-DVD");
|
||||
AddCategoryMapping(48, TorznabCatType.XXX, "XXX-HD");
|
||||
AddCategoryMapping(49, TorznabCatType.XXXImageset, "XXX-IMGSet");
|
||||
AddCategoryMapping(50, TorznabCatType.XXX, "XXX-Packs");
|
||||
AddCategoryMapping(51, TorznabCatType.XXX, "XXX-SD");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,8 @@ namespace Jackett.Common.Models.IndexerConfig.Bespoke
|
||||
public BoolItem HardDriveCache { get; private set; }
|
||||
public StringItem HardDriveCacheKeepTime { get; private set; }
|
||||
|
||||
public BoolItem Vostfr { get; private set; }
|
||||
|
||||
public ConfigurationDataXthor()
|
||||
: base()
|
||||
{
|
||||
@@ -28,6 +30,8 @@ namespace Jackett.Common.Models.IndexerConfig.Bespoke
|
||||
DevMode = new BoolItem { Name = "Enable DEV MODE (Developers ONLY)", Value = false };
|
||||
HardDriveCache = new BoolItem { Name = "Enable HARD DRIVE CACHE (Developers ONLY)", Value = false };
|
||||
HardDriveCacheKeepTime = new StringItem { Name = "Keep Cached files for (ms)", Value = "300000" };
|
||||
Vostfr = new BoolItem() { Name = "Replace VOSTFR or SUBFRENCH with ENGLISH", Value = false };
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,8 +36,13 @@ namespace Jackett.Common.Services
|
||||
// use: {"<old id>", "<new id>"}
|
||||
private readonly Dictionary<string, string> renamedIndexers = new Dictionary<string, string>
|
||||
{
|
||||
{"broadcastthenet", "broadcasthenet"},
|
||||
{"cili180", "liaorencili"},
|
||||
{"metaliplayro", "romanianmetaltorrents"},
|
||||
{"nnm-club", "noname-club"},
|
||||
{"nostalgic", "vhstapes"},
|
||||
{"passtheheadphones", "redacted"},
|
||||
{"rstorrent", "redstartorrent"},
|
||||
{"tehconnectionme", "anthelion"},
|
||||
{"transmithenet", "nebulance"},
|
||||
{"yourexotic", "exoticaz"}
|
||||
@@ -71,10 +76,20 @@ namespace Jackett.Common.Services
|
||||
if (File.Exists(oldPath))
|
||||
{
|
||||
// if the old configuration exists, we rename it to be used by the renamed indexer
|
||||
logger.Info($"Old configuration detected: {oldPath}");
|
||||
var newPath = configService.GetIndexerConfigFilePath(renamedIndexers[oldId]);
|
||||
if (File.Exists(newPath))
|
||||
File.Delete(newPath);
|
||||
File.Move(oldPath, newPath);
|
||||
if (File.Exists(oldPath + ".bak"))
|
||||
File.Move(oldPath + ".bak", newPath + ".bak");
|
||||
// backups
|
||||
var oldPathBak = oldPath + ".bak";
|
||||
var newPathBak = newPath + ".bak";
|
||||
if (File.Exists(oldPathBak))
|
||||
{
|
||||
if (File.Exists(newPathBak))
|
||||
File.Delete(newPathBak);
|
||||
File.Move(oldPathBak, newPathBak);
|
||||
}
|
||||
logger.Info($"Configuration renamed: {oldPath} => {newPath}");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -293,6 +293,7 @@ namespace Jackett.Updater
|
||||
"Definitions/btkitty.yml",
|
||||
"Definitions/btstornet.yml",
|
||||
"Definitions/btxpress.yml",
|
||||
"Definitions/cili180.yml", // renamed to liaorencili
|
||||
"Definitions/cinefilhd.yml",
|
||||
"Definitions/crazyscorner.yml",
|
||||
"Definitions/czteam.yml",
|
||||
@@ -305,6 +306,7 @@ namespace Jackett.Updater
|
||||
"Definitions/eotforum.yml",
|
||||
"Definitions/estrenosdtl.yml",
|
||||
"Definitions/evolutionpalace.yml",
|
||||
"Definitions/exoticaz.yml", // migrated to C#
|
||||
"Definitions/extratorrentclone.yml",
|
||||
"Definitions/feedurneed.yml",
|
||||
"Definitions/freakstrackingsystem.yml",
|
||||
@@ -322,6 +324,7 @@ namespace Jackett.Updater
|
||||
"Definitions/hon3yhd-net.yml",
|
||||
"Definitions/horriblesubs.yml",
|
||||
"Definitions/hyperay.yml",
|
||||
"Definitions/icetorrent.yml", // migrated to C# XtremeZone base tracker
|
||||
"Definitions/idopeclone.yml",
|
||||
"Definitions/iloveclassics.yml",
|
||||
"Definitions/infinityt.yml",
|
||||
@@ -334,11 +337,13 @@ namespace Jackett.Updater
|
||||
"Definitions/maniatorrent.yml",
|
||||
"Definitions/manicomioshare.yml",
|
||||
"Definitions/megabliz.yml",
|
||||
"Definitions/metal-iplay-ro.yml", // renamed to romanianmetaltorrents
|
||||
"Definitions/mkvcage.yml",
|
||||
"Definitions/music-master.yml",
|
||||
"Definitions/nachtwerk.yml",
|
||||
"Definitions/nexttorrent.yml",
|
||||
"Definitions/nostalgic.yml", // renamed to vhstapes.yml
|
||||
"Definitions/nnm-club.yml", // renamed to noname-club
|
||||
"Definitions/nostalgic.yml", // renamed to vhstapes
|
||||
"Definitions/nyaa.yml",
|
||||
"Definitions/nyoo.yml",
|
||||
"Definitions/passionetorrent.yml",
|
||||
@@ -352,6 +357,7 @@ namespace Jackett.Updater
|
||||
"Definitions/rns.yml", // site merged with audiobooktorrents
|
||||
"Definitions/rockethd.yml",
|
||||
"Definitions/rockhardlossless.yml",
|
||||
"Definitions/scenefz.yml", // migrated to C# XtremeZone base tracker
|
||||
"Definitions/scenehd.yml", // migrated to C# (use JSON API)
|
||||
"Definitions/scenereactor.yml",
|
||||
"Definitions/scenexpress.yml",
|
||||
@@ -393,6 +399,7 @@ namespace Jackett.Updater
|
||||
"Definitions/worldofp2p.yml",
|
||||
"Definitions/worldwidetorrents.yml",
|
||||
"Definitions/xktorrent.yml",
|
||||
"Definitions/xtremezone.yml", // migrated to C# XtremeZone base tracker
|
||||
"Definitions/yourexotic.yml", // renamed to exoticaz.yml
|
||||
"Microsoft.Owin.dll",
|
||||
"Microsoft.Owin.FileSystems.dll",
|
||||
|
||||
Reference in New Issue
Block a user