Compare commits

...

47 Commits

Author SHA1 Message Date
Diego Heras
b570b1d1f3 core: fix indexer configuration renaming. resolves #8903 (#8907) 2020-06-07 17:51:49 +02:00
Diego Heras
03cc3f4f60 exoticaz: rewrite in c# to use the api. resolves #8873 (#8900) 2020-06-07 03:37:12 +02:00
Diego Heras
d490b007ff torrentscsv: fix empty search. resolves #8587 (#8897) 2020-06-07 02:11:41 +02:00
Diego Heras
e12f0deb44 romanianmetaltorrents: rename indexer. #8355 (#8896) 2020-06-07 02:00:01 +02:00
Diego Heras
7280108255 redstartorrent: rename indexer. #8355 (#8895) 2020-06-07 01:46:27 +02:00
Diego Heras
265cbaeb7d noname-club: rename indexer. #8355 (#8894) 2020-06-07 01:32:13 +02:00
Diego Heras
3bf5a4f59a liaorencili: rename indexer. #8355 (#8893) 2020-06-07 01:21:32 +02:00
garfield69
6ed341354e ourbits: switch to cookie method. resolves #8881 (#8891) 2020-06-07 09:03:35 +12:00
Diego Heras
ab5cf5b10d broadcasthenet: rename indexer. #8355 (#8888) 2020-06-06 22:15:50 +02:00
Diego Heras
cdfdcde560 torrentheaven: fix parsing error. resolves #8839 (#8887) 2020-06-06 21:56:21 +02:00
Garfield69
8a5081b398 girotorrent: add tpp config info #8882 2020-06-07 07:50:05 +12:00
Garfield69
0fd326b566 girotorrent: drop multi page fetch. resolves #8882 2020-06-07 07:26:22 +12:00
ilike2burnthing
09be80d1ee ilcorsaronero: change domain .xyz to .link (#8878) 2020-06-06 19:04:48 +12:00
Garfield69
4a1763f030 demonoid: update cookie info 2020-06-05 15:39:06 +12:00
Garfield69
2e2b6ff8d7 assorted yml: cookie info update. resolves #8856 2020-06-05 08:37:51 +12:00
ilike2burnthing
e0083fe955 btdb: change domain from .io to .eu (#8855) 2020-06-05 07:08:12 +12:00
Garfield69
001ed302fe teamos: new cats and paths 2020-06-04 10:18:46 +12:00
Garfield69
52ec0a7327 esharenet: upgraded to unit3d 2.4.0 2020-06-04 08:58:45 +12:00
Garfield69
b51c1c9600 tsc: new cats. 2020-06-04 08:25:29 +12:00
Garfield69
f219f3f294 greekteam: layout changes. resolves #8847 2020-06-04 07:26:32 +12:00
ilike2burnthing
2f938d3615 xfsub: restore .org domain (#8844) 2020-06-03 19:01:37 +12:00
Diego Heras
21cc4f1cdd torrentleech: improve search query. resolves #8230 (#8842) 2020-06-02 22:57:40 +02:00
ilike2burnthing
53108362d6 magnetdl: fix keywordless search (#8838)
https://www.magnetdl.com/o/of/age/desc/ - 404
change to - https://www.magnetdl.com/2/2020/age/desc/ (or any year up to 2999)

Tested, working
2020-06-03 07:54:22 +12:00
Garfield69
ce4eb2311e asgaard: fix date parsing. 2020-06-02 08:45:42 +12:00
Garfield69
454ca8927a karagarga: switch to method=form resolves #1241 2020-06-02 07:44:23 +12:00
Garfield69
d1011c3e5f torrentdownloads: use full title resolves #8831 2020-06-02 07:30:51 +12:00
theonly112
232e746fe4 thefallingangels: Fix login. resolves #8830 (#8832) 2020-06-02 07:16:27 +12:00
Diego Heras
bc9d02d2e8 scenetime: fix user/pass login. resolves #8716 (#8835) 2020-06-01 20:26:43 +02:00
Diego Heras
a9a7a2fcd0 xtremezone, scenefz, icetorrent: fix empty banner. resolves #8816 (#8834) 2020-06-01 20:16:09 +02:00
Garfield69
9d4998f154 vhstapes: drop list=view and add config info. #8777 2020-06-01 16:32:24 +12:00
Garfield69
1384e38818 karagarga: add filename to title. #1241 2020-06-01 11:20:18 +12:00
Garfield69
d255a2fafd add yingk ad Chinese private site. resolves #8823 2020-06-01 10:40:02 +12:00
Garfield69
5bd75d2ec5 nitro: site forcing http. resolves #8822 2020-06-01 07:32:19 +12:00
Garfield69
12b59d38dc karagarga: refresh. resolves #1241 resolves #4419 2020-05-31 16:38:46 +12:00
Garfield69
7ff26f07b8 nitro: switched to https. resolves #8818 2020-05-31 07:21:07 +12:00
Garfield69
da90b2f4bf isohunt2: drop .net domain resolves #8817 2020-05-31 07:20:35 +12:00
Diego Heras
a37e609a0c xtremezone, scenefz, icetorrent: use json api. resolves #5954 resolves #7774 (#8816) 2020-05-30 19:49:18 +02:00
Diego Heras
c5f1e01d5e torrentbomb: temporary fix for empty search. resolves #8730 (#8813) 2020-05-30 13:23:25 +02:00
Diego Heras
507a6edc34 secretcinema: remove ebook cat and add andmatch. resolves #8779 (#8812) 2020-05-30 13:06:43 +02:00
ilike2burnthing
c1cad58702 cili180: update domains - www.lrcili#.xyz (#8806) 2020-05-30 18:59:59 +12:00
Garfield69
d849880f49 add extremebits a private sports site. resolves #8794 2020-05-30 10:17:14 +12:00
s3phir0th115
1ad56d74f7 pleasuredome: new login (#8809)
Existing pleasuredome definition breaks on login due to site changes renaming the form and login page locations. This changes fixes it in my testing.
2020-05-30 07:55:39 +12:00
ilike2burnthing
348bd2795a torrent9: restore *.me domain (#8805) 2020-05-29 12:09:11 +12:00
ilike2burnthing
03cbb949a3 elitetorrent-biz: new domain wvvw.* (#8801) resolves #8692 2020-05-29 07:38:19 +12:00
ilike2burnthing
71d72816df torrentview: new domain *12.net (#8800) resolves #8457 2020-05-29 07:35:55 +12:00
Garfield69
36d4992300 vhstapes: add new cat 37 horror. resolves #8798 2020-05-29 07:33:34 +12:00
Tawagot0
0de5606c2e xthor: replace vostfr with english (#8797) 2020-05-28 19:39:09 +02:00
84 changed files with 1355 additions and 994 deletions

View File

@@ -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>

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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

View File

@@ -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

View File

@@ -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}}"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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:

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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)

View File

@@ -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:

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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

View File

@@ -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"]

View File

@@ -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 }}"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 }}"

View File

@@ -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:

View File

@@ -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

View File

@@ -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(":"))

View File

@@ -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

View File

@@ -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

View File

@@ -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 }}"

View File

@@ -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:

View File

@@ -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

View File

@@ -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 }}"

View File

@@ -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: []

View File

@@ -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

View File

@@ -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

View 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)

View File

@@ -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
{

View 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}"}
};
}
}

View File

@@ -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) =>

View File

@@ -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,

View File

@@ -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);
}
}
}

View 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();
}
}
}

View 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");
}
}
}

View File

@@ -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);
}
}
}

View 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");
}
}
}

View File

@@ -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";

View File

@@ -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;
}

View File

@@ -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,

View File

@@ -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)

View File

@@ -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

View File

@@ -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()));

View 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");
}
}
}

View File

@@ -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 };
}
}
}

View File

@@ -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}");
}
}

View File

@@ -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",