Compare commits

...

57 Commits

Author SHA1 Message Date
Garfield69
4797352b88 turktorrent: refresh cats 2022-05-05 08:02:32 +12:00
Garfield69
86fdef72f0 xthor: detect no results. resolves #13223 2022-05-05 06:11:35 +12:00
Garfield69
4f7644b692 core: cardigann json no results enhancement #13223 2022-05-05 06:11:08 +12:00
Garfield69
a74d1fc31c gui: validate url for baseurloveride and flaresolverurl. resolves #13222 2022-05-04 17:44:15 +12:00
Garfield69
1b04ef72e6 elitetorrent-biz: new domain *.wtf -> *.dev 2022-05-04 16:54:09 +12:00
Garfield69
fd33dcbf5d dontorrent: new domain *.nl -> *.cx 2022-05-04 16:52:48 +12:00
Garfield69
b0bb50ffaf teamos: add UA 2022-05-03 21:44:19 +12:00
Garfield69
94a8fbbd14 huntorrent: use cookie method plus UA. resolves #10771 2022-05-03 15:54:02 +12:00
Garfield69
fb6cb9525f xthor: rework 8fc965a5c1 2022-05-03 12:57:01 +12:00
Garfield69
46fbd9ed1c Revert "xthor: move input parms to path. resolves #13220"
This reverts commit 8fc965a5c1.
2022-05-03 12:54:59 +12:00
Garfield69
e1da56160e limetorrents: domain *.pro -> *.lol 2022-05-03 08:18:09 +12:00
ilike2burnthing
e8c588dde2 megapeer - allow 1 character keywords #12371 2022-05-02 18:39:27 +01:00
ilike2burnthing
903f7ad034 gktorrent: update cats and attribute 2022-05-02 05:33:19 +01:00
ilike2burnthing
d7143962de oxtorrent: update cats and attribute 2022-05-02 05:31:31 +01:00
ilike2burnthing
15ac3a22a8 torrent9clone: update cats 2022-05-02 05:24:01 +01:00
Garfield69
8fc965a5c1 xthor: move input parms to path. resolves #13220 2022-05-02 16:19:09 +12:00
Garfield69
9a4202fe63 carphunter: drop the duplicate test statement 2022-05-02 16:01:05 +12:00
Garfield69
b22f92763e Update file-tracker.yml 2022-05-02 15:27:37 +12:00
Garfield69
0c0294049f add file-tracker a Russian semi-private site. resolves #13147 2022-05-02 15:10:42 +12:00
ilike2burnthing
4ddd772a63 selezen: update mirror subdomain 2022-05-02 03:20:47 +01:00
Garfield69
aa9f516f16 oxtorrent: new domains 2022-05-01 17:34:21 +12:00
Garfield69
cfa10d0798 hdgalaktik: switch to cookie method. #13186 2022-05-01 16:58:21 +12:00
ilike2burnthing
6080a41b36 bb: removed, dead. resolves #13211 (#13217) 2022-05-01 02:05:54 +01:00
Garfield69
e3384de72e torrent9clone: cat updates 2022-04-30 16:49:55 +12:00
Garfield69
bf2d07f7f7 assorted torrent*: bump domains 2022-04-30 16:17:53 +12:00
Garfield69
32c4e0c0b0 btsow: new domain *.rest -> *.bar 2022-04-30 16:17:31 +12:00
Garfield69
1daa23f4d6 add HDGalaKtik a Russian semi-private site. resolves #13186 2022-04-30 11:57:05 +12:00
Garfield69
6c1cef5650 add tmghub an Indian private site. resolves #13184 2022-04-28 19:45:46 +12:00
ilike2burnthing
40f2ed6fbc assorted 3x: tidy modes & descriptions. #13191 (#13212) 2022-04-28 06:01:08 +01:00
ilike2burnthing
5f6358fb99 assorted tsue: fuzzytime date fix (#13210) 2022-04-28 15:12:02 +12:00
ilike2burnthing
a2bd695cac dreamtracker: lint fix 2022-04-28 03:00:44 +01:00
ilike2burnthing
61d8f8469e dreamtracker: add new private greek tracker. resolves #13206 (#13209) 2022-04-28 02:45:11 +01:00
ilike2burnthing
825feb5153 kufirc: add new private hungarian 3x tracker. resolves #13191 (#13208) 2022-04-28 00:49:50 +01:00
Garfield69
bfddc46b1f tasmanit.es: amend caps 2022-04-28 05:50:31 +12:00
Gauthier
faa1b3f971 tasmanit: remove certificates & update cats (#13204) 2022-04-27 15:24:49 +01:00
Garfield69
f734678501 assorted torrent*: bump domains 2022-04-27 16:29:50 +12:00
Garfield69
b30b9fdfa5 dontorrent: new domain *.tel -> *.nl 2022-04-27 16:16:04 +12:00
ilike2burnthing
6154574511 swarmazon: remove status badges. resolves #13201 2022-04-26 23:39:20 +01:00
ilike2burnthing
e9a788164e seedoff: improvements for russian titles 2022-04-26 15:54:05 +01:00
ilike2burnthing
f97a48678f seedoff: add new public tracker. resolves #13146 (#13202) 2022-04-26 12:44:15 +01:00
Garfield69
13b995aacb putao: dlvf and ulvf updates
update engine tag
2022-04-26 21:06:09 +12:00
Garfield69
038ce68d5e hdtime: update for imdb
nexus engine tag updated
2022-04-26 19:05:52 +12:00
Garfield69
ab1c477486 GUI: fix f9aa3c4d7b tmdbid links movie or tv 2022-04-26 17:55:23 +12:00
Garfield69
1b6af38155 lat-team: upgrade unit3d 6.0.8 API 2022-04-25 19:06:48 +12:00
Garfield69
484d40674f aither: use category_id 2022-04-25 18:34:48 +12:00
ilike2burnthing
e10f1c822e webui: include tvdb link in search results (#13200) 2022-04-25 03:23:36 +01:00
Garfield69
012f2bd85e bitbazis: drop results without DL 2022-04-25 12:41:14 +12:00
Garfield69
f5e02d57c5 morethantv: removed. use morethantv api instead. 2022-04-25 12:18:47 +12:00
Garfield69
f39435c5ce cinecalidad: new domain www5.* -> v3.* 2022-04-25 12:04:14 +12:00
Diego Heras
f1affa88ab core: allow cors requests (#13199) 2022-04-25 00:17:35 +02:00
Diego Heras
f2e258a6de core: immutable query. resolves #8531 (#8570) 2022-04-24 23:11:44 +02:00
Diego Heras
47e9641325 core: remove legacy DPAPI code (#13198) 2022-04-24 22:09:08 +02:00
Diego Heras
ca65a2eebb divxtotal: fix category search (#13197) 2022-04-24 21:42:14 +02:00
Diego Heras
f9aa3c4d7b webui: include tmdb link in search results (#13196) 2022-04-24 21:28:25 +02:00
Diego Heras
86530ba35f anthelion: implement imdb and tmdb search. #7923 (#13195) 2022-04-24 21:11:49 +02:00
Diego Heras
b7ac4af666 webui: include link to flaresolverr configuration (#13194) 2022-04-24 20:58:51 +02:00
ilike2burnthing
ff3d79938b coastalcrew: update indexer. resolves #10715 2022-04-24 17:16:43 +01:00
70 changed files with 2144 additions and 1052 deletions

View File

@@ -126,6 +126,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* Rus-media
* RuTor
* RuTracker.RU
* Seedoff
* seleZen
* Sexy-Pics
* ShizaProject
@@ -191,11 +192,13 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* ExKinoRay
* ExtremlymTorrents
* Fenyarnyek-Tracker
* File-Tracker
* Fou-Du-Cinema
* Gay-Torrents.net
* Genesis-Movement
* HamsterStudio
* HD-CzTorrent
* HDGalaKtik
* HunTorrent
* IV-Torrents
* KinoNaVse100
@@ -266,7 +269,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* Aussierul.es [![(invite needed)][inviteneeded]](#)
* AvistaZ (AsiaTorrents)
* Back-ups [![(invite needed)][inviteneeded]](#)
* bB [![(invite needed)][inviteneeded]](#)
* BakaBT
* BeiTai
* Best-Core
@@ -331,6 +333,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* DivTeam
* DocsPedia
* Dragonworld Reloaded [![(invite needed)][inviteneeded]](#)
* Dream Tracker
* EbookParadijs
* Ebooks-Shares
* Empornium (EMP) [![(invite needed)][inviteneeded]](#)
@@ -411,6 +414,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* Keep Friends [![(invite needed)][inviteneeded]](#)
* Korsar
* KrazyZone
* Kufirc
* LastFiles
* Lat-Team [![(invite needed)][inviteneeded]](#)
* Le Saloon
@@ -549,6 +553,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* TheScenePlace (TSP)
* TJUPT
* TLFBits [![(invite needed)][inviteneeded]](#)
* TmGHuB
* ToTheGlory (TTG) [![(invite needed)][inviteneeded]](#)
* Torrent Network (TN)
* Torrent Sector Crew (TSC)

View File

@@ -177,7 +177,7 @@ hr {
text-align: center;
}
#jackett-allowext, #jackett-allowupdate, #jackett-logging, #jackett-prerelease, #jackett-cache-enabled {
#jackett-allowext, #jackett-allowcors, #jackett-allowupdate, #jackett-logging, #jackett-prerelease, #jackett-cache-enabled {
width: 25px;
}
@@ -301,6 +301,14 @@ table td.fit{
background-color: #d0ab44;
}
.label-tmdb {
background-color: #7dbfd4;
}
.label-tvdb {
background-color: #86cca8;
}
.tooltip {
pointer-events: none;
}

View File

@@ -125,6 +125,7 @@ function loadJackettSettings() {
$("#jackett-savedir").val(data.blackholedir);
$("#jackett-allowext").attr('checked', data.external);
$("#jackett-allowcors").attr('checked', data.cors);
$("#jackett-allowupdate").attr('checked', data.updatedisabled);
$("#jackett-prerelease").attr('checked', data.prerelease);
$("#jackett-logging").attr('checked', data.logging);
@@ -923,8 +924,12 @@ function doErrorNotify(indexerId, errorMessage, errorEvent) {
var indexEnd = 2000 - githubUrl.length; // keep url <= 2k #5104
var htmlEscapedError = $("<div>").text(errorMessage.substring(0, indexEnd)).html();
var urlEscapedError = encodeURIComponent(errorMessage.substring(0, indexEnd));
doNotify("An error occurred while " + errorEvent + " this indexer<br /><b>" + htmlEscapedError + "</b><br />" +
"<i><a href=\"" + githubUrl + " " + urlEscapedError + "\" target=\"_blank\">Click here to open an issue on GitHub for " + githubText + ".</a><i>",
var link = "<i><a href=\"" + githubUrl + " " + urlEscapedError + "\" target=\"_blank\">Click here to open an issue on GitHub for " + githubText + ".</a><i>";
if (errorMessage.includes("FlareSolverr is not configured")) {
link = "<i><a href=\"https://github.com/Jackett/Jackett#configuring-flaresolverr\" target=\"_blank\">Instructions to install and configure FlareSolverr.</a><i><br />" +
"<i><a href=\"https://github.com/Jackett/Jackett/wiki/Troubleshooting#error-connecting-to-flaresolverr-server\" target=\"_blank\">Troubleshooting frecuent errors with FlareSolverr.</a><i>";
}
doNotify("An error occurred while " + errorEvent + " this indexer<br /><b>" + htmlEscapedError + "</b><br />" + link,
"danger", "glyphicon glyphicon-alert", false);
} else {
doNotify("An error occurred while " + errorEvent + " indexers, please take a look at indexers with failed test for more information.",
@@ -966,10 +971,13 @@ function updateReleasesRow(row) {
var labels = $(row).find("span.release-labels");
var TitleLink = $(row).find("td.Title > a");
var IMDBId = $(row).data("imdb");
var TMDBId = $(row).data("tmdb");
var TVDBId = $(row).data("tvdb");
var Poster = $(row).data("poster");
var Description = $(row).data("description");
var DownloadVolumeFactor = parseFloat($(row).find("td.DownloadVolumeFactor").html());
var UploadVolumeFactor = parseFloat($(row).find("td.UploadVolumeFactor").html());
var Cat = $(row).find("td.Cat").html();
var TitleTooltip = "";
if (Poster)
@@ -988,11 +996,20 @@ function updateReleasesRow(row) {
labels.empty();
if (IMDBId) {
var imdbLen = (IMDBId.toString().length > 7) ? 8 : 7;
if (IMDBId) {
var imdbLen = (IMDBId.toString().length > 7) ? 8 : 7;
labels.append('\n<a href="https://www.imdb.com/title/tt' + ("00000000" + IMDBId).slice(-imdbLen) + '/" target="_blank" class="label label-imdb" alt="IMDB" title="IMDB">IMDB</a>');
}
if (TMDBId && TMDBId > 0) {
var TMdbType = (Cat.includes("Movies")) ? "movie" : "tv";
labels.append('\n<a href="https://www.themoviedb.org/' + TMdbType + '/' + TMDBId + '" target="_blank" class="label label-tmdb" alt="TMDB" title="TMDB">TMDB</a>');
}
if (TVDBId && TVDBId > 0) {
labels.append('\n<a href="https://thetvdb.com/?tab=series&id=' + TVDBId + '" target="_blank" class="label label-tvdb" alt="TVDB" title="TVDB">TVDB</a>');
}
if (!isNaN(DownloadVolumeFactor)) {
if (DownloadVolumeFactor == 0) {
labels.append('\n<span class="label label-success">FREELEECH</span>');
@@ -1519,6 +1536,7 @@ function bindUIButtons() {
var jackett_basepathoverride = $("#jackett-basepathoverride").val();
var jackett_baseurloverride = $("#jackett-baseurloverride").val();
var jackett_external = $("#jackett-allowext").is(':checked');
var jackett_cors = $("#jackett-allowcors").is(':checked');
var jackett_update = $("#jackett-allowupdate").is(':checked');
var jackett_prerelease = $("#jackett-prerelease").is(':checked');
var jackett_logging = $("#jackett-logging").is(':checked');
@@ -1539,6 +1557,7 @@ function bindUIButtons() {
var jsonObject = {
port: jackett_port,
external: jackett_external,
cors: jackett_cors,
updatedisabled: jackett_update,
prerelease: jackett_prerelease,
blackholedir: $("#jackett-savedir").val(),

View File

@@ -161,7 +161,7 @@ hr {
text-align: center;
}
#jackett-allowext, #jackett-allowupdate, #jackett-logging, #jackett-prerelease, #jackett-cache-enabled {
#jackett-allowext, #jackett-allowcors, #jackett-allowupdate, #jackett-logging, #jackett-prerelease, #jackett-cache-enabled {
width: 25px;
}
@@ -284,6 +284,14 @@ table td.fit{
background-color: #d0ab44;
}
.label-tmdb {
background-color: #7dbfd4;
}
.label-tvdb {
background-color: #86cca8;
}
.tooltip {
pointer-events: none;
}

View File

@@ -28,8 +28,8 @@
<link rel="stylesheet" type="text/css" href="../bootstrap/bootstrap.min.css?changed=2017083001">
<link rel="stylesheet" type="text/css" href="../animate.css?changed=2017083001">
<link rel="stylesheet" type="text/css" href="../css/tagify.css?changed=11662">
<link rel="stylesheet" type="text/css" href="../custom.css?changed=20220123" media="only screen and (min-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom_mobile.css?changed=20220123" media="only screen and (max-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom.css?changed=202204251" media="only screen and (min-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom_mobile.css?changed=202204251" media="only screen and (max-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../css/jquery.dataTables.min.css?changed=2017083001">
<link rel="stylesheet" type="text/css" href="../css/bootstrap-multiselect.css?changed=2017083001" />
<link rel="stylesheet" type="text/css" href="../css/font-awesome.min.css?changed=2017083001">
@@ -132,7 +132,7 @@
</div>
<div class="input-area">
<span class="input-header">Base URL override: </span>
<input id="jackett-baseurloverride" class="form-control input-right" type="text" value="" placeholder="http://jackett:9117">
<input id="jackett-baseurloverride" class="form-control input-right" type="url" value="" placeholder="http://jackett:9117">
</div>
<div class="input-area">
<span class="input-header">Server port: </span>
@@ -178,6 +178,10 @@
<span class="input-header">External access: </span>
<input id="jackett-allowext" class="form-control input-right" type="checkbox" />
</div>
<div class="input-area">
<span class="input-header">Allow CORS: </span>
<input id="jackett-allowcors" class="form-control input-right" type="checkbox" />
</div>
<div class="input-area">
<span class="input-header">Disable auto update: </span>
<input id="jackett-allowupdate" class="form-control input-right" type="checkbox" />
@@ -206,7 +210,7 @@
</div>
<div class="input-area">
<span class="input-header">FlareSolverr API URL: </span>
<input id="jackett-flaresolverrurl" class="form-control input-right" type="text" value="" placeholder="Blank for default">
<input id="jackett-flaresolverrurl" class="form-control input-right" type="url" value="" placeholder="Blank for default">
</div>
<div class="input-area">
<span class="input-header">FlareSolverr Max Timeout (ms): </span>
@@ -454,7 +458,7 @@
</thead>
<tbody>
{{#each releases}}
<tr class="jackett-releases-row" data-imdb="{{Imdb}}" data-poster="{{Poster}}" data-description="{{Description}}">
<tr class="jackett-releases-row" data-imdb="{{Imdb}}" data-tmdb="{{TMDb}}" data-tvdb="{{TVDBId}}" data-poster="{{Poster}}" data-description="{{Description}}">
<td class="fit">{{PublishDate}}</td>
<td class="fit">{{FirstSeen}}</td>
<td class="fit">{{jacketTimespan PublishDate}}</td>
@@ -464,7 +468,7 @@
<td class="fit">{{Size}}</td>
<td class="fit">{{jacketSize Size}}</td>
<td class="fit">{{Files}}</td>
<td class="fit">{{CategoryDesc}}</td>
<td class="fit Cat">{{CategoryDesc}}</td>
<td class="fit">{{Grabs}}</td>
<td class="fit">{{Seeders}}</td>
<td class="fit">{{Peers}}</td>
@@ -582,7 +586,7 @@
</thead>
<tbody>
{{#each Results}}
<tr class="jackett-search-results-row" data-imdb="{{Imdb}}" data-poster="{{Poster}}" data-description="{{Description}}">
<tr class="jackett-search-results-row" data-imdb="{{Imdb}}" data-tmdb="{{TMDb}}" data-tvdb="{{TVDBId}}" data-poster="{{Poster}}" data-description="{{Description}}">
<td>{{PublishDate}}</td>
<td>{{jacketTimespan PublishDate}}</td>
<td>{{Tracker}}</td>
@@ -590,7 +594,7 @@
<td>{{Size}}</td>
<td class="fit">{{jacketSize Size}}</td>
<td>{{Files}}</td>
<td>{{CategoryDesc}}</td>
<td class="Cat">{{CategoryDesc}}</td>
<td>{{Grabs}}</td>
<td>{{Seeders}}</td>
<td>{{Peers}}</td>
@@ -750,6 +754,6 @@
</script>
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></script>
<script type="text/javascript" src="../custom.js?changed=20220417"></script>
<script type="text/javascript" src="../custom.js?changed=20220426"></script>
</body>
</html>

View File

@@ -16,7 +16,7 @@
<link href="../bootstrap/bootstrap.min.css" rel="stylesheet">
<link href="../animate.css" rel="stylesheet">
<link href="../custom.css?changed=20220123" rel="stylesheet">
<link href="../custom.css?changed=202204251" rel="stylesheet">
<title>Jackett</title>
</head>

View File

@@ -96,8 +96,8 @@ search:
selector: meta.total
fields:
categorydesc:
selector: category
category:
selector: category_id
title:
selector: name
details:
@@ -150,4 +150,4 @@ search:
minimumseedtime:
# 5 days (as seconds = 3 x 24 x 60 x 60)
text: 432000
# json UNIT3D 6.0.5
# json UNIT3D 6.0.7

View File

@@ -106,7 +106,7 @@ search:
# site does not support imdbid searching or appear to have freeleech
rows:
selector: table[width="100%"]:last-child tbody tr:has(a[href^="userdetails.php?id="])
selector: table[width="100%"]:last-child tbody tr:has(a[href^="userdetails.php?id="]):has(a[href^="download.php?torrent="])
fields:
category:

View File

@@ -1,7 +1,7 @@
---
id: bitsexy
name: BitSexy
description: "BitSexy is a Private Torrent Tracker for 3x"
description: "BitSexy is a Private Torrent Tracker for 3X"
language: en-US
type: private
encoding: UTF-8

View File

@@ -181,8 +181,6 @@ search:
filters:
- name: regexp
args: "Uploaded (.+?) by"
- name: replace
args: [" at ", " "]
- name: fuzzytime
date_unix:
# within the hour (unix)

View File

@@ -256,9 +256,7 @@ search:
- name: replace
args: [" by", ""]
- name: replace
args: ["às ", ""] # at
- name: replace
args: ["at ", ""]
args: ["às ", "at "]
- name: replace
args: ["Hoje", "Today"]
- name: replace

View File

@@ -6,7 +6,7 @@ language: en-US
type: public
encoding: UTF-8
links:
- https://btsow.rest/
- https://btsow.bar/
legacylinks:
- https://btos.pw/
- https://btio.pw/
@@ -29,6 +29,7 @@ legacylinks:
- https://btsow.shop/
- https://btsow.us/
- https://btsow.one/
- https://btsow.rest/
caps:
categories:

View File

@@ -81,7 +81,6 @@ login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
test:
path: index.php
selector: a[href^="logout.php"]

View File

@@ -10,54 +10,40 @@ links:
caps:
categorymappings:
# Movie
- {id: 28, cat: Movies/SD, desc: "Movie SD"}
- {id: 155, cat: Movies/DVD, desc: "Movie DVD"}
- {id: 130, cat: Movies/SD, desc: "Movie SD-Pack"}
# Movie-HD
- {id: 32, cat: Movies/HD, desc: "Movie-HD HD"}
- {id: 154, cat: Movies/UHD, desc: "Movie-HD UHD/4K"}
- {id: 162, cat: Movies/HD, desc: "Movie-HD HD-Pack"}
# Serien
- {id: 60, cat: TV/SD, desc: "Serien Xvid/x264"}
- {id: 157, cat: TV/HD, desc: "Serien 720p/1080p"}
- {id: 158, cat: TV/UHD, desc: "Serien UHD/4K"}
# S-Packs
- {id: 57, cat: TV/SD, desc: "S-Packs SD"}
- {id: 59, cat: TV/HD, desc: "S-Packs 720p"}
- {id: 156, cat: TV/HD, desc: "S-Packs 1080p"}
# Doku
- {id: 160, cat: TV/Documentary, desc: "Doku HD"}
- {id: 15, cat: TV/Documentary, desc: "Doku SD"}
# App
- {id: 12, cat: PC/0day, desc: "App Win"}
- {id: 11, cat: PC, desc: "App Other"}
- {id: 10, cat: PC/Mac, desc: "App Mac"}
- {id: 9, cat: PC/Mobile-Android, desc: "App Linux/Android"}
# Game
- {id: 131, cat: Console, desc: "Game Nintendo"}
- {id: 17, cat: PC/Games, desc: "Game PC"}
- {id: 18, cat: Console, desc: "Game PS"}
- {id: 24, cat: Console/Other, desc: "Game Wimmelbild"}
# Audio
- {id: 159, cat: Audio/Audiobook, desc: "Audio Hörbuch"}
- {id: 48, cat: Audio/MP3, desc: "Audio mp3"}
- {id: 53, cat: Audio/Lossless, desc: "Audio Flac"}
- {id: 52, cat: Audio, desc: "Audio Pack"}
- {id: 109, cat: Audio/Video, desc: "Audio Video-HD/SD"}
# Sport
- {id: 62, cat: TV/Sport, desc: "Sport SD"}
- {id: 161, cat: TV/Sport, desc: "Sport HD"}
# Paper
- {id: 163, cat: Books/Mags, desc: "Paper Zeitungen"}
- {id: 63, cat: Books/Comics, desc: "Paper Comic"}
- {id: 96, cat: Books/EBook, desc: "Paper E-Book"}
# XXX
- {id: 113, cat: XXX/DVD, desc: "XXX DVD"}
- {id: 76, cat: XXX, desc: "XXX HD-SD"}
- {id: 75, cat: XXX/Pack, desc: "XXX Pack"}
# Request
- {id: 151, cat: Other, desc: "Request spritti01"}
- {id: 62, cat: Books, desc: "EBook"}
- {id: 30, cat: TV/Anime, desc: "Filme - Animie"}
- {id: 28, cat: Movies/BluRay, desc: "Filme - Bluray"}
- {id: 31, cat: Movies/Other, desc: "Filme - Bollywood"}
- {id: 32, cat: Movies/DVD, desc: "Filme - DVD"}
- {id: 33, cat: Movies/HD, desc: "Filme - HD"}
- {id: 34, cat: Movies, desc: "Filme - Klassiker"}
- {id: 35, cat: Movies, desc: "Filme - Pack"}
- {id: 36, cat: Movies/SD, desc: "Filme - SD"}
- {id: 37, cat: Movies/UHD, desc: "Filme - UHD"}
- {id: 38, cat: Movies/HD, desc: "Filme - x264"}
- {id: 63, cat: Movies, desc: "Fuer Unsere Kleinsten"}
- {id: 64, cat: PC/Mobile-Other, desc: "Handy-Stuff"}
- {id: 39, cat: Audio, desc: "Musik - Alben"}
- {id: 40, cat: Audio, desc: "Musik - Diskografie"}
- {id: 41, cat: Audio/Audiobook, desc: "Musik - Hoerbuch"}
- {id: 42, cat: Audio, desc: "Musik - Mixe"}
- {id: 43, cat: Audio/MP3, desc: "Musik - MP3"}
- {id: 66, cat: Audio, desc: "Musik - Pack"}
- {id: 44, cat: Audio/Video, desc: "Musik - Video"}
- {id: 45, cat: PC, desc: "Programme - Linux"}
- {id: 48, cat: PC/Mac, desc: "Programme - Mac"}
- {id: 49, cat: PC/0day, desc: "Programme - Windows"}
- {id: 65, cat: TV, desc: "Serien - Allgemein"}
- {id: 50, cat: TV/Documentary, desc: "Serien - Dokus"}
- {id: 51, cat: TV, desc: "Serien - Klassiker"}
- {id: 52, cat: TV, desc: "Serien - Pack"}
- {id: 53, cat: TV/Sport, desc: "Serien - Sport"}
- {id: 60, cat: Other, desc: "Sonstiges"}
- {id: 54, cat: PC/Mobile-Other, desc: "Spiele - Handy"}
- {id: 55, cat: Console, desc: "Spiele - Konsolen"}
- {id: 57, cat: PC/Games, desc: "Spiele - Mac / Linux / PC"}
- {id: 58, cat: Console/Other, desc: "Spiele - Wimmel"}
- {id: 59, cat: XXX, desc: "XXX"}
modes:
search: [q]
@@ -73,105 +59,110 @@ settings:
- name: password
type: password
label: Password
- name: pin
type: text
label: Pin
- name: freeleech
type: checkbox
label: Filter FreeLeech only
default: false
- name: onlyupload
type: checkbox
label: Filter OnlyUpload only
default: false
- name: info_free
type: info
label: About Freeleech and OnlyUpload at Coastal Crew
default: <li>FreeLeech are torrents where neither the download or upload is counted. (On the Jackett dashboard search results these are tagged as NoUpload).</li><li>OnlyUpload are torrents where download is not counted but upload is. Good for building your Ratio up. (On the Jackett dashboard search results these are tagged as Freeleech).</li>
- name: sort
type: select
label: Sort requested from site
default: added
options:
added: created
seeds: seeders
size: size
name: 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 pro Seite:</b> setting to <b>100</b> on your Control Panel. The default is <i>15</i>.
login:
path: login.php
method: form
form: form[action="/login.php"]
cookies: ["JAVA=OK"] # avoid jscheck redirect
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
pin: "{{ .Config.pin }}"
loggiin: einloggen
error:
- selector: div#login_error
- selector: .tablea:contains("Fehler")
test:
path: selection.php
download:
before:
path: ajax_det_poll.php
method: post
inputs:
set_thanks: thanks
det_id: "{{ .DownloadUri.Query.torrent }}"
ajax: yes
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: selection.php
# https://coastal-crew.bounceme.net/browse.php?showsearch=1&c62=1&c33=1&search=&incldead=1&orderby=added&sort=desc
path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
showsearch: 1
search: "{{ .Keywords }}"
blah: 0
orderby: added
sort: desc
# 0 active, 1 all, 2 dead
incldead: 1
orderby: "{{ .Config.sort }}"
sort: "{{ .Config.type }}"
# site does not support imdbid search from the browse.php page or return imdb links in results
rows:
selector: div.selection_wrap
selector: "table.tableinborder[cellspacing=\"1\"][cellpadding=\"0\"]:not(:has(a[href=\"index.php\"])) > tbody > tr:has(a[href^=\"download.php\"]){{ if .Config.onlyupload }}:has(img[src=\"pic/oupic.gif\"]){{ else }}{{ end }}"
fields:
cat_p1:
selector: div.kat_cat_pic_name
cat_p2:
selector: div.kat_cat_pic_name_b
categorydesc:
text: "{{ .Result.cat_p1 }} {{ .Result.cat_p2 }}"
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a.selection_a
selector: a[href^="details.php"]
details:
selector: a.selection_a
selector: a[href^="details.php"]
attribute: href
download:
selector: a.selection_a
selector: a[href^="download.php"]
attribute: href
filters:
- name: replace
args: ["details.php?id=", "download.php?torrent="]
poster:
selector: div[id^="details"] img
selector: img[id="img-1"]
attribute: src
size:
selector: div.selection_unter_ag
selector: td.tablea table tbody tr:nth-child(2) td:nth-child(1) b:nth-child(1)
files:
selector: td.tablea table tbody tr:nth-child(2) td:nth-child(1) b:nth-child(2)
seeders:
selector: div.selection_unter_aa
selector: td.tablea table tbody tr:nth-child(2) td:nth-child(2) b:nth-child(1)
leechers:
selector: div.selection_unter_aaa
date_day:
# Heute 13:30:04
# Gestern 09:10:10
selector: div.selection_unter_ab:not(:contains("."))
optional: true
selector: td.tablea table tbody tr:nth-child(2) td:nth-child(2) > b:nth-of-type(2)
grabs:
selector: td.tablea table tbody tr:nth-child(2) td:nth-child(3) b:nth-child(1)
date:
selector: td.tablea table tbody tr:nth-child(2) td:nth-child(5)
filters:
- name: replace
args: ["Heute", "Today"]
- name: replace
args: ["Gestern", "Yesterday"]
date_year:
# 30.02.2018 um 23:12:50
selector: div.selection_unter_ab:contains(".")
optional: true
filters:
- name: replace
args: [" um", ""]
- name: append
args: " +01:00" # CET
- name: replace
args: ["\xA0", " "]
- name: dateparse
args: "02.01.2006 15:04:05 -07:00"
date:
text: "{{ if or .Result.date_year .Result.date_day }}{{ or .Result.date_year .Result.date_day }}{{ else }}now{{ end }}"
description:
selector: selection_unter_af
downloadvolumefactor:
text: 1
case:
img[src="pic/oupic.gif"]: 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
text: 0.7
# engine n/a

View File

@@ -0,0 +1,214 @@
---
id: dreamtracker
name: Dream Tracker
description: "Dream Tracker is a GREEK Private tracker for TV / MOVIES / GENERAL"
language: en-US
type: private
encoding: UTF-8
links:
- https://dream-tracker.net/
caps:
categorymappings:
# Anime
- {id: 113, cat: TV/Anime, desc: "Anime"}
- {id: 114, cat: TV/Anime, desc: "Anime Series"}
- {id: 115, cat: Movies/Other, desc: "Anime Movies"}
# Kids Stuff
- {id: 1, cat: Movies/Other, desc: "Kids Stuff"}
- {id: 14, cat: Movies/Other, desc: "Cartoon No Subs"}
- {id: 16, cat: Movies/Other, desc: "Cartoon Sub. No Embed."}
- {id: 17, cat: Movies/Other, desc: "Cartoon Sub. Embed."}
- {id: 31, cat: Movies/Other, desc: "Cartoon in Greek "}
- {id: 107, cat: Movies/Other, desc: "Kids in Greek"}
- {id: 88, cat: Audio/Other, desc: "Music Kids"}
# Movies Subs No Embed.
- {id: 38, cat: Movies, desc: "Movies Subs No Embed."}
- {id: 40, cat: Movies/SD, desc: "DVDscr - PPVRiP - WebRip -Web-DL- TVRiP"}
- {id: 41, cat: Movies/SD, desc: "DVDRrip/R6/R5 Xvid/x264"}
- {id: 42, cat: Movies/SD, desc: "BDRip/BRRip/HDRip/480p"}
- {id: 43, cat: Movies/HD, desc: "HD - 720p"}
- {id: 44, cat: Movies/HD, desc: "HD - 1080p"}
- {id: 104, cat: Movies/HD, desc: "Micro"}
# Movies Subs Embed.
- {id: 45, cat: Movies, desc: "Movies Subs Embed."}
- {id: 47, cat: Movies/SD, desc: "DVDscr - PPVRiP - WebRip - Web-DL-TVRiP"}
- {id: 48, cat: Movies/SD, desc: "DVDRrip/R6/R5 Xvid/x264"}
- {id: 49, cat: Movies/SD, desc: "BDRip/BRRip/HDRip/480p"}
- {id: 50, cat: Movies/HD, desc: "HD - 720p"}
- {id: 51, cat: Movies/HD, desc: "HD - 1080p"}
- {id: 105, cat: Movies/HD, desc: "Micro"}
# Movie Packs
- {id: 90, cat: Movies, desc: "Movie Packs"}
- {id: 91, cat: Movies, desc: "Movie Packs Greek"}
- {id: 106, cat: Movies/Foreign, desc: "Movie Packs Foreign"}
# Movies in Greek
- {id: 56, cat: Movies, desc: "Movies in Greek"}
- {id: 57, cat: Movies, desc: "Movies in Greek"}
- {id: 58, cat: Movies, desc: "Movies Greek All Time Classics"}
- {id: 98, cat: Movies, desc: "Greek Filmographies"}
- {id: 99, cat: Movies/HD, desc: "HD 1080p"}
- {id: 100, cat: Movies/HD, desc: "HD 720p"}
# Movies 3D + 4K
- {id: 97, cat: Movies, desc: "Movies 3D + 4K"}
- {id: 111, cat: Movies/UHD, desc: "Movies 4K"}
- {id: 112, cat: Movies/3D, desc: "Movies 3D"}
# Tv Shows & Series
- {id: 59, cat: TV, desc: "Tv Shows & Series"}
- {id: 62, cat: TV/Foreign, desc: "Tv Shows Foreign"}
- {id: 63, cat: TV, desc: "Tv Shows Greek"}
- {id: 64, cat: TV/Foreign, desc: "Series Foreign"}
- {id: 65, cat: TV, desc: "Series Greek"}
- {id: 92, cat: TV/Foreign, desc: "Series Foreign Packs"}
- {id: 93, cat: TV, desc: "Series Greek Packs"}
# Sports
- {id: 66, cat: TV/Sport, desc: "Sports"}
- {id: 67, cat: TV/Sport, desc: "Sports"}
# Documentary
- {id: 68, cat: TV/Documentary, desc: "Documentary"}
- {id: 69, cat: TV/Documentary, desc: "Documentary"}
# Applications
- {id: 6, cat: PC/0day, desc: "Applications"}
- {id: 74, cat: PC/0day, desc: "Windows"}
- {id: 73, cat: PC/Mobile-Android, desc: "Applications Mobile"}
# eBooks & Images
- {id: 87, cat: Books/EBook, desc: "eBooks & Images"}
- {id: 83, cat: Books/EBook, desc: "Ebooks"}
- {id: 110, cat: Books/Mags, desc: "EMagazines"}
- {id: 82, cat: Other, desc: "Pics & Images"}
# Games
- {id: 2, cat: PC/Games, desc: "Games"}
- {id: 27, cat: PC/Games, desc: "PC"}
# Music
- {id: 7, cat: Audio, desc: "Music"}
- {id: 75, cat: Audio/MP3, desc: "Music Greek"}
- {id: 76, cat: Audio/MP3, desc: "Music Greek Discographies"}
- {id: 116, cat: Audio/Lossless, desc: "Greek Flac"}
- {id: 77, cat: Audio/Foreign, desc: "Music Foreign"}
- {id: 78, cat: Audio/Foreign, desc: "Music Foreign Discographies"}
- {id: 94, cat: Audio/Lossless, desc: "Foreign Flac"}
- {id: 20, cat: Audio/Video, desc: "Music Videos"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Filter freeleech only
default: false
- name: info
type: info
label: Layout
default: "<ol><li>Only the English Classic profile is supported.<li>Make sure to set the <b>Torrent Listing</b> option in your profile to <b>Classic</b><li>And set the <b>Language</b> to <b>English</b><li>Using the <i>Modern</i> theme will prevent results, and using <i>Greek</i> will prevent upload dates.</ol>"
login:
path: ?p=home&pid=1
method: form
form: form#sls_form
submitpath: ajax/login.php
inputs:
action: login
loginbox_membername: "{{ .Config.username }}"
loginbox_password: "{{ .Config.password }}"
loginbox_remember: 1
selectorinputs:
securitytoken:
selector: "script:contains(\"stKey: \")"
filters:
- name: regexp
args: "stKey: \"(.+?)\","
error:
- selector: ":contains(\"-ERROR-\")"
test:
path: ?p=home&pid=1
selector: a[href*="/?p=logout&"]
search:
paths:
- path: /
inputs:
p: torrents
pid: 10
$raw: "{{ range .Categories }}cid[]={{.}}&{{end}}"
keywords: "{{ .Keywords }}"
# name, description, both, uploader
search_type: name
rows:
selector: "table#torrents_table_classic tr:has(td.torrent_name){{ if .Config.freeleech }}:has(img[src$=\"/torrent_free.png\"]){{ else }}{{ end }}"
fields:
title:
selector: a[href*="?p=torrents&pid=10&action=details"]
category:
selector: div.category_image > a
attribute: href
filters:
- name: querystring
args: cid
details:
selector: a[href*="?p=torrents&pid=10&action=details"]
attribute: href
download:
selector: a[href*="?p=torrents&pid=10&action=download"]
attribute: href
date_year:
# Uploaded 30-01-2019 15:02 by
selector: td.torrent_name:not(:contains(" at ")):not(:has(abbr[data-time]))
optional: true
filters:
- name: regexp
args: "Uploaded (.+?) by"
- name: append
args: " +00:00" # auto adjusted by site account profile
- name: dateparse
args: "02-01-2006 15:04 -07:00"
date_day:
# Uploaded Friday at 05:11 by
# Uploaded Today at 00:48 by
# Uploaded Yesterday at 23:57 by
selector: td.torrent_name:contains(" at "):not(:has(abbr[data-time]))
optional: true
filters:
- name: regexp
args: "Uploaded (.+?) by"
- name: fuzzytime
date_unix:
# within the hour (unix)
selector: abbr[data-time]
attribute: data-time
optional: true
date:
text: "{{ if or .Result.date_year .Result.date_unix .Result.date_day }}{{ or .Result.date_year .Result.date_unix .Result.date_day }}{{ else }}now{{ end }}"
size:
selector: a[rel="torrent_size"]
seeders:
selector: a[rel="torrent_seeders"]
leechers:
selector: a[rel="torrent_leechers"]
grabs:
selector: a[rel="times_completed"]
poster:
selector: a[rel="fancybox"]
attribute: href
downloadvolumefactor:
case:
"img[src$=\"/silver.gif\"]": 0.5
"img[src$=\"/torrent_free.png\"]": 0
"*": 1
uploadvolumefactor:
case:
"img[src$=\"/torrent_multiple_upload.png\"]": 2
"*": 1
# TSUE 2.2

View File

@@ -6,7 +6,7 @@ language: es-ES
type: public
encoding: UTF-8
links:
- https://www.elitetorrent.wtf/
- https://www.elitetorrent.dev/
- https://elitetorrent.nocensor.sbs/
legacylinks:
- https://www.elitetorrent.biz/
@@ -30,6 +30,7 @@ legacylinks:
- https://elitetorrent.app/
- https://elitetorrent.nocensor.biz/
- https://elitetorrent.la/
- https://www.elitetorrent.wtf/
caps:
categories:

View File

@@ -1,7 +1,7 @@
---
id: empornium
name: Empornium
description: "Empornium (EMP) is a Private Torrent Tracker for XXX"
description: "Empornium (EMP) is a Private Torrent Tracker for 3X"
language: en-US
type: private
encoding: UTF-8
@@ -64,8 +64,6 @@ caps:
modes:
search: [q]
tv-search: [q]
movie-search: [q]
settings:
- name: username

View File

@@ -64,8 +64,6 @@ caps:
modes:
search: [q]
tv-search: [q]
movie-search: [q]
settings:
- name: cookie

View File

@@ -4,7 +4,7 @@
---
id: femdomcult
name: Femdomcult
description: "Femdomcult is a Private Torrent Tracker for FETISH XXX"
description: "Femdomcult is a Private Torrent Tracker for FETISH 3X"
language: en-US
type: private
encoding: UTF-8
@@ -36,8 +36,6 @@ caps:
modes:
search: [q]
tv-search: [q]
movie-search: [q]
settings:
- name: username

View File

@@ -0,0 +1,674 @@
---
id: file-tracker
name: File-Tracker
description: "File Tracker is a RUSSIAN Semi-Private Torrent Tracker for MOVIES / GENERAL"
language: ru-RU
type: semi-private
encoding: windows-1251
links:
- https://file-tracker.net/
caps:
categorymappings:
# Эксклюзив
# Exclusive
- {id: 697, cat: Other, desc: " |- Правила, FAQ, стол заказов, общение"}
- {id: 387, cat: Movies/DVD, desc: " |- Отечественные фильмы DVD Master's"}
- {id: 386, cat: Movies/DVD, desc: " |- Зарубежные фильмы DVD Master's"}
- {id: 390, cat: TV/SD, desc: " |- Сериалы DVD Master's"}
- {id: 388, cat: Movies/DVD, desc: " |- Мультфильмы DVD Master's"}
- {id: 601, cat: TV/Anime, desc: " |- Мультсериалы DVD Master's"}
# Кино, видео, мультипликация и ТВ
# Film, video, animation and TV
- {id: 995, cat: Movies, desc: " |- Экранки с рекламой (фильмы, мультфильмы)"}
- {id: 994, cat: Movies, desc: " |- Новинки с рекламой (фильмы, мультфильмы)"}
- {id: 385, cat: Movies, desc: " |- Экранки (фильмы , мультфильмы)"}
- {id: 987, cat: Movies, desc: " |- Зарубежное кино"}
- {id: 988, cat: Movies, desc: " |- Кино России и СНГ"}
- {id: 337, cat: Movies, desc: " |- Мультфильмы"}
- {id: 72, cat: Movies, desc: " |- DVD, HD Видео (фильмы , мультфильмы)"}
- {id: 999, cat: Movies, desc: " |- Фильмы (2021-2022)"}
- {id: 996, cat: Movies, desc: " |- Фильмы (2019-2020)"}
- {id: 921, cat: Movies, desc: " |- Фильмы (2016-2018)"}
- {id: 382, cat: Movies, desc: " |- Фильмы (2012-2015)"}
- {id: 381, cat: Movies, desc: " |- Фильмы (2009-2011)"}
- {id: 734, cat: Movies, desc: " |- Фильмы (2006-2008)"}
- {id: 380, cat: Movies, desc: " |- Фильмы (2001-2005)"}
- {id: 379, cat: Movies, desc: " |- Фильмы до 2000 года"}
- {id: 613, cat: Movies, desc: " |- Кино для детей"}
- {id: 638, cat: Movies, desc: " |- Азиатское кино/Япония"}
- {id: 136, cat: Movies, desc: " |- Индийское кино"}
- {id: 443, cat: Movies, desc: " |- Антология зарубежного кино"}
- {id: 1000, cat: Movies, desc: " |- Наше кино (2021 - 2022)"}
- {id: 997, cat: Movies, desc: " |- Наше кино (2019 - 2020)"}
- {id: 922, cat: Movies, desc: " |- Наше кино (2016 - 2018)"}
- {id: 229, cat: Movies, desc: " |- Наше кино (2012 - 2015)"}
- {id: 733, cat: Movies, desc: " |- Наше кино (2008 - 2011)"}
- {id: 334, cat: Movies, desc: " |- Наше кино (2001 - 2007)"}
- {id: 333, cat: Movies, desc: " |- Наше кино (1990 - 2000)"}
- {id: 250, cat: Movies, desc: " |- Советское кино (классика)"}
- {id: 62, cat: Movies, desc: " |- Кино для детей"}
- {id: 962, cat: Movies, desc: " |- Антология отечественного кино"}
- {id: 990, cat: Movies, desc: " |- Зарубежные фильмы , мультфильмы и сериалы на языках ближнего.."}
- {id: 993, cat: Movies, desc: " |- Фильмы , мультфильмы и сериалы ближнего зарубежья и СНГ в ор.."}
- {id: 991, cat: Movies, desc: " |- Зарубежные фильмы , мультфильмы и сериалы в оригинале"}
- {id: 74, cat: Movies, desc: " |- Зарубежные мультфильмы"}
- {id: 73, cat: Movies, desc: " |- Отечественные мультфильмы"}
- {id: 599, cat: TV, desc: " |- Сказки русских писателей"}
- {id: 575, cat: TV, desc: " |- Интерны"}
- {id: 271, cat: TV, desc: " |- Реальные пацаны"}
- {id: 377, cat: TV, desc: " |- МарГоша"}
- {id: 612, cat: TV, desc: " |- Воронины"}
- {id: 731, cat: TV, desc: " |- Сваты"}
- {id: 968, cat: TV, desc: " |- Разные сериалы"}
- {id: 639, cat: TV, desc: " |- Теория большого взрыва"}
- {id: 89, cat: TV, desc: " |- Друзья"}
- {id: 92, cat: TV, desc: " |- Тайны Смолвиля"}
- {id: 95, cat: TV, desc: " |- Секретные материалы"}
- {id: 383, cat: TV, desc: " |- Альф"}
- {id: 384, cat: TV, desc: " |- Доктор Хаус"}
- {id: 632, cat: TV, desc: " |- Дневники Вампира"}
- {id: 969, cat: TV, desc: " |- Разные сериалы"}
- {id: 600, cat: TV, desc: " |- Том и Джерри"}
- {id: 609, cat: TV, desc: " |- Разное (иностранные мультсериалы)"}
- {id: 701, cat: TV, desc: " |- Маша и Медведь"}
- {id: 594, cat: TV, desc: " |- Ну, погоди!"}
- {id: 598, cat: TV, desc: " |- Смешарики"}
- {id: 610, cat: TV, desc: " |- Сборники мультфильмов"}
- {id: 870, cat: TV, desc: " |- Разные (отечественные мультсериалы)"}
- {id: 741, cat: Movies/3D, desc: " |- 3D | Кинофильмы"}
- {id: 742, cat: Movies/3D, desc: " |- 3D | Мультфильмы"}
- {id: 981, cat: Movies/3D, desc: " |- 3D | Blu-ray и BD Remux"}
- {id: 743, cat: Movies/3D, desc: " |- 3D | Документальные фильмы"}
- {id: 744, cat: Movies/3D, desc: " |- 3D | Спорт"}
- {id: 335, cat: Movies/DVD, desc: " |- Наше кино (DVD)"}
- {id: 336, cat: Movies/HD, desc: " |- Наше кино (HD Video)"}
- {id: 747, cat: Movies/BluRay, desc: " |- Наше кино (Blu-ray и BD Remux)"}
- {id: 985, cat: Movies/UHD, desc: " |- Наше кино (Ultra HD)"}
- {id: 69, cat: Movies/DVD, desc: " |- Зарубежное кино (DVD)"}
- {id: 70, cat: Movies/HD, desc: " |- Зарубежное кино (HD Video)"}
- {id: 748, cat: Movies/BluRay, desc: " |- Зарубежное кино (Blu-ray и BD Remux)"}
- {id: 984, cat: Movies/UHD, desc: " |- Зарубежное кино (Ultra HD)"}
- {id: 907, cat: Movies, desc: " |- Кино для детей (DVD, HD Video, Blu-ray, BD Remux, Ultra HD)"}
- {id: 339, cat: Movies, desc: " |- Мультфильмы (DVD, HD Video и Blu-ray)"}
- {id: 602, cat: TV/Anime, desc: " |- Мультсериалы (DVD, HD Video и Blu-ray)"}
- {id: 906, cat: Movies, desc: " |- Азиатское кино/Япония (DVD, HD Video, Blu-ray, BD Remux, Ult.."}
- {id: 442, cat: Movies, desc: " |- Антология (DVD, HD Video, Blu-ray, BD Remux)"}
- {id: 898, cat: TV, desc: " |- Отечественные сериалы (DVD, HD Video, Blu-ray, BD Remux)"}
- {id: 970, cat: TV, desc: " |- Иностранные сериалы (DVD, HD Video, Blu-ray, BD Remux)"}
- {id: 71, cat: Movies, desc: " |- Арт-хаус и авторское кино (DVD, HD Video, Blu-ray, BD Remux)"}
- {id: 180, cat: Audio/Video, desc: " |- Музыкальное (DVD, HD Video, Blu-ray, BD Remux)"}
- {id: 681, cat: TV, desc: " |- Осторожно Модерн!"}
- {id: 341, cat: TV, desc: " |- Ералаш"}
- {id: 332, cat: TV, desc: " |- Прожекторпэрисхилтон"}
- {id: 330, cat: TV, desc: " |- Маски-шоу"}
- {id: 279, cat: TV, desc: " |- Юмористы"}
- {id: 65, cat: TV, desc: " |- КВН / Пост КВН"}
- {id: 66, cat: TV, desc: " |- Вечерний Квартал"}
- {id: 64, cat: TV, desc: " |- Даешь,молодежь!"}
- {id: 10, cat: TV, desc: " |- Наша Russia"}
- {id: 879, cat: TV, desc: " |- Другие телепередачи"}
- {id: 614, cat: TV, desc: " |- Строительство и дизайн"}
- {id: 252, cat: TV, desc: " |- BBC"}
- {id: 81, cat: TV, desc: " |- Discovery"}
- {id: 80, cat: TV, desc: " |- Фильмы National Geographic"}
- {id: 910, cat: TV, desc: " |- Флора и Фауна"}
- {id: 573, cat: TV, desc: " |- Секретные файлы"}
- {id: 359, cat: TV, desc: " |- Запретные темы истории"}
- {id: 358, cat: TV, desc: " |- Секретные материалы"}
- {id: 357, cat: TV, desc: " |- Русские сенсации"}
- {id: 356, cat: TV, desc: " |- Среда обитания"}
- {id: 355, cat: TV, desc: " |- Медицина и здоровье"}
- {id: 354, cat: TV, desc: " |- Тайны века"}
- {id: 351, cat: TV, desc: " |- Апокалипсис"}
- {id: 350, cat: TV, desc: " |- Профессия репортёр"}
- {id: 349, cat: TV, desc: " |- Криминальная Россия"}
- {id: 251, cat: TV, desc: " |- Военное видео и вооружение"}
- {id: 82, cat: TV, desc: " |- Все о Охоте и Рыбалке"}
- {id: 79, cat: TV, desc: " |- Непознанное и сверхъестественное"}
- {id: 474, cat: TV, desc: " |- Одиссея Жака Кусто"}
- {id: 268, cat: TV, desc: " |- Разное"}
- {id: 365, cat: TV/Sport, desc: " |- Олимпийские игры"}
- {id: 364, cat: TV/Sport, desc: " |- Фигурное катание"}
- {id: 363, cat: TV/Sport, desc: " |- Бодибилдинг/Силовые виды спорта"}
- {id: 362, cat: TV/Sport, desc: " |- Бильярд"}
- {id: 361, cat: TV/Sport, desc: " |- Волейбол/Гандбол"}
- {id: 360, cat: TV/Sport, desc: " |- Формула 1"}
- {id: 272, cat: TV/Sport, desc: " |- Футбол"}
- {id: 249, cat: TV/Sport, desc: " |- Рестлинг"}
- {id: 248, cat: TV/Sport, desc: " |- Скейтборд / Сноуборд / Паркур"}
- {id: 220, cat: TV/Sport, desc: " |- Авто/Мото"}
- {id: 219, cat: TV/Sport, desc: " |- Хоккей"}
- {id: 218, cat: TV/Sport, desc: " |- Баскетбол"}
- {id: 217, cat: TV/Sport, desc: " |- Бокс"}
- {id: 216, cat: TV/Sport, desc: " |- Теннис"}
- {id: 215, cat: TV/Sport, desc: " |- Экстрим"}
- {id: 214, cat: TV/Sport, desc: " |- Бои без правил"}
- {id: 468, cat: TV/Sport, desc: " |- Игровое видео"}
- {id: 545, cat: TV, desc: " |- Видеоуроки по программному обеспечению"}
- {id: 673, cat: TV, desc: " |- Видеоуроки по медицине (обучение, лечение, профилактика)"}
- {id: 463, cat: TV, desc: " |- Видеообучение ин. языкам"}
- {id: 735, cat: TV, desc: " |- Для родителей"}
- {id: 702, cat: TV, desc: " |- Для студентов"}
- {id: 678, cat: TV, desc: " |- Для школьного возраста"}
- {id: 677, cat: TV, desc: " |- Для самых маленьких"}
- {id: 200, cat: TV, desc: " |- Русский стиль и рукопашный бой"}
- {id: 199, cat: TV, desc: " |- Джиу-джитсу"}
- {id: 198, cat: TV, desc: " |- Айкидо и айки-дзюцу"}
- {id: 277, cat: TV, desc: "Разное (Видеоуроки, обучающее видео)"}
- {id: 657, cat: TV, desc: " |- Школа || Сёнэн || Сёдзё"}
- {id: 656, cat: TV, desc: " |- Боевые искусства"}
- {id: 655, cat: TV, desc: " |- Ужасы || Мистика || Вампиры"}
- {id: 654, cat: TV, desc: " |- Фэнтези || Апокалиптика || Постапокалиптика"}
- {id: 653, cat: TV, desc: " |- Меха"}
- {id: 658, cat: TV, desc: " |- Романтика"}
- {id: 659, cat: TV, desc: " |- Комедия"}
- {id: 660, cat: TV, desc: " |- Для детей"}
- {id: 661, cat: TV, desc: " |- Разное"}
- {id: 620, cat: TV, desc: " |- Призрак в доспехах"}
- {id: 635, cat: TV, desc: " |- Хеллсинг"}
- {id: 619, cat: TV, desc: " |- Мобильный воин ГАНДАМ"}
- {id: 618, cat: TV, desc: " |- Наруто"}
- {id: 617, cat: TV, desc: " |- Блич"}
- {id: 308, cat: TV/Anime, desc: " |- Аниме (озвучка/SD и DVD)"}
- {id: 307, cat: TV/Anime, desc: " |- Аниме (RAW/DVD)"}
- {id: 306, cat: TV/Anime, desc: " |- Аниме (RAW/SD)"}
- {id: 715, cat: TV/Anime, desc: " |- Аниме (DVD)"}
- {id: 317, cat: TV/Anime, desc: " |- 720p и 1080p (озвучка)"}
- {id: 316, cat: TV/Anime, desc: " |- 1080p (RAW)"}
- {id: 315, cat: TV/Anime, desc: " |- 720p (RAW)"}
- {id: 304, cat: TV/Anime, desc: " |- Аниме (озвучка)"}
- {id: 303, cat: TV/Anime, desc: " |- Аниме (RAW)"}
# Игры
# Games
- {id: 471, cat: Console, desc: " |- Раздачи игр от R.G. FTN Gaming RePack"}
- {id: 19, cat: Console, desc: " |- Новинки игр"}
- {id: 99, cat: Console, desc: " |- Demo, Alpha, Beta версии"}
- {id: 16, cat: Console, desc: " |- Action FPS (1st Person)"}
- {id: 885, cat: Console, desc: " |- Action TPS (3rd Person)"}
- {id: 17, cat: Console, desc: " |- RPG"}
- {id: 104, cat: Console, desc: " |- Авто/мото симуляторы"}
- {id: 105, cat: Console, desc: " |- Авиасимуляторы"}
- {id: 923, cat: Console, desc: " |- Спортивные симуляторы"}
- {id: 258, cat: Console, desc: " |- Другие симуляторы"}
- {id: 102, cat: Console, desc: " |- Аркады, Файтинги"}
- {id: 103, cat: Console, desc: " |- Приключения и Квесты"}
- {id: 101, cat: Console, desc: " |- Стратегии / Логические игры"}
- {id: 108, cat: Console, desc: " |- Мини игры"}
- {id: 20, cat: Console, desc: " |- Online-игры"}
- {id: 107, cat: Console, desc: " |- Детские и обучающие игры"}
- {id: 109, cat: Console, desc: " |- Аниме-игры"}
- {id: 722, cat: Console, desc: " |- Action (старые игры)"}
- {id: 721, cat: Console, desc: " |- RPG (старые игры)"}
- {id: 720, cat: Console, desc: " |- Симуляторы (старые игры)"}
- {id: 719, cat: Console, desc: " |- Аркады (старые игры)"}
- {id: 718, cat: Console, desc: " |- Приключения и Квесты (старые игры)"}
- {id: 717, cat: Console, desc: " |- Стратегии (старые игры)"}
- {id: 989, cat: Console, desc: " |- Модифицированные версии игр"}
- {id: 18, cat: Console, desc: " |- Моды, русификаторы, патчи, дополнения и обновления для игр"}
- {id: 724, cat: Console, desc: " |- Игровой софт"}
- {id: 450, cat: Console, desc: " |- S.T.A.L.K.E.R."}
- {id: 920, cat: Console, desc: " |- Игры для Mac OS"}
- {id: 695, cat: Console, desc: " |- PlayStation 1/2/3"}
- {id: 113, cat: Console, desc: " |- Xbox (Xbox 360)"}
- {id: 112, cat: Console, desc: " |- PSX-PSP"}
- {id: 111, cat: Console, desc: " |- Dreamcast"}
- {id: 679, cat: Console, desc: " |- Видео для PSP"}
- {id: 662, cat: Console, desc: " |- Софт для консолей"}
- {id: 116, cat: Console, desc: " |- Портативные и Консольные (Игры)"}
# ПО для Windows
# Software for Windows
- {id: 529, cat: PC/0day, desc: " |- Информация и диагностика"}
- {id: 518, cat: PC/0day, desc: " |- Системные утилиты"}
- {id: 516, cat: PC/0day, desc: " |- Безопасность: Защита информации. Антивирусы/файерволы"}
- {id: 515, cat: PC/0day, desc: " |- Архиваторы и файловые менеджеры"}
- {id: 514, cat: PC/0day, desc: " |- Сервисное обслуживание ПК"}
- {id: 513, cat: PC/0day, desc: " |- Настройка и оптимизация ОС"}
- {id: 530, cat: PC/0day, desc: " |- Сборники смешанного ПО"}
- {id: 437, cat: PC/0day, desc: " |- Активаторы (лоадеры) OS Windows / Office, SP и оф патчи"}
- {id: 520, cat: PC/0day, desc: " |- Офис"}
- {id: 528, cat: PC/0day, desc: " |- Работа с PDF и DjVu"}
- {id: 522, cat: PC/0day, desc: " |- Программы для бизнеса и делопроизводства"}
- {id: 521, cat: PC/0day, desc: " |- Словари, Переводчики"}
- {id: 527, cat: PC/0day, desc: " |- Распознавание текста, звука и синтез речи"}
- {id: 508, cat: PC/0day, desc: " |- Консультант+"}
- {id: 509, cat: PC/0day, desc: " |- Гарант"}
- {id: 510, cat: PC/0day, desc: " |- Другие справочно-правовые системы и обучающее ПО"}
- {id: 511, cat: PC/0day, desc: " |- Справочное ПО: справочники, каталоги"}
- {id: 543, cat: PC/0day, desc: " |- Запись CD, DVD"}
- {id: 526, cat: PC/0day, desc: " |- Графика / Просмотрщики графики"}
- {id: 525, cat: PC/0day, desc: " |- Для работы с аудио"}
- {id: 524, cat: PC/0day, desc: " |- Для работы с видео"}
- {id: 887, cat: PC/0day, desc: " |- Интернет TV &amp;Radio"}
- {id: 561, cat: PC/0day, desc: " |- Удаленный доступ и ПО для свободного доступа в интернет"}
- {id: 555, cat: PC/0day, desc: " |- 3G USB-модем и Webcam"}
- {id: 537, cat: PC/0day, desc: " |- Утилиты для удаления всплывающих окон и баннерной рекламы"}
- {id: 536, cat: PC/0day, desc: " |- Программы общения"}
- {id: 535, cat: PC/0day, desc: " |- Почта и файлообмен"}
- {id: 533, cat: PC/0day, desc: " |- Браузеры и дополнения к ним"}
- {id: 534, cat: PC/0day, desc: " |- Разное"}
- {id: 542, cat: PC/0day, desc: " |- Сборники драйверов и ПО для обновления драйверов"}
- {id: 541, cat: PC/0day, desc: " |- Звуковые карты"}
- {id: 540, cat: PC/0day, desc: " |- Видеокарты"}
- {id: 539, cat: PC/0day, desc: " |- Материнские платы"}
- {id: 554, cat: PC/0day, desc: " |- Темы, скринсейверы ..."}
- {id: 551, cat: PC/0day, desc: " |- Обои"}
- {id: 553, cat: PC/0day, desc: " |- Гаджеты рабочего стола"}
- {id: 739, cat: PC/0day, desc: " |- Аватары, Иконки, Смайлы"}
- {id: 607, cat: PC/0day, desc: " |- САПР"}
- {id: 344, cat: PC/0day, desc: " |- ГИС (Геоинформационные системы)"}
- {id: 965, cat: PC/0day, desc: " |- Программирование и разработка ПО"}
- {id: 345, cat: PC/0day, desc: " |- Карты, снабженные программной оболочкой"}
- {id: 348, cat: PC/0day, desc: " |- Разное - системы навигации и карты"}
- {id: 680, cat: PC/0day, desc: " |- ПО по диагностике и ремонту автомобилей"}
- {id: 675, cat: PC/0day, desc: " |- Программное обеспечение по медицине"}
- {id: 560, cat: PC/0day, desc: " |- Photostoсks"}
- {id: 559, cat: PC/0day, desc: " |- Футажи"}
- {id: 558, cat: PC/0day, desc: " |- Заготовки, виньетки, рамки"}
- {id: 557, cat: PC/0day, desc: " |- Растровые и Векторные Клипарты"}
- {id: 960, cat: PC/0day, desc: " |- Вспомогательный софт для релизера"}
- {id: 961, cat: PC/0day, desc: " |- Разное"}
# Операционные системы и программирование
# Operating systems and programming
- {id: 972, cat: PC, desc: " |- Windows 10 / 11 (Оригинальные версии)"}
- {id: 909, cat: PC, desc: " |- Windows 8 / 8.1 (Оригинальные версии)"}
- {id: 822, cat: PC, desc: " |- Windows 7 (Оригинальные версии)"}
- {id: 823, cat: PC, desc: " |- Windows Vista (Оригинальные версии)"}
- {id: 824, cat: PC, desc: " |- Windows XP (Оригинальные версии)"}
- {id: 434, cat: PC, desc: " |- Windows OS, выпущенные до 2001 года (Оригинальные версии)"}
- {id: 973, cat: PC, desc: " |- Windows 10 / 11 (сборки)"}
- {id: 883, cat: PC, desc: " |- Windows 8 / 8.1 (сборки)"}
- {id: 264, cat: PC, desc: " |- Windows 7 (сборки)"}
- {id: 166, cat: PC, desc: " |- Windows Vista (сборки)"}
- {id: 165, cat: PC, desc: " |- Windows XP (сборки)"}
- {id: 167, cat: PC, desc: " |- Серверные OS Windows"}
- {id: 998, cat: PC, desc: " |- Insider Preview, RC, Beta версии, Service Packs"}
- {id: 265, cat: PC, desc: " |- Cборники разных операционных систем"}
- {id: 281, cat: PC, desc: " |- Помощь/Опросы/Общение"}
- {id: 168, cat: PC, desc: " |- Операционные системы"}
- {id: 280, cat: PC, desc: " |- Программное обеспечение"}
- {id: 169, cat: PC, desc: " |- Другие ОС и ПО под них"}
- {id: 732, cat: PC, desc: " |- Игры для Linux"}
- {id: 328, cat: PC, desc: " |- Видеоуроки по Linux"}
- {id: 286, cat: PC, desc: " |- Общение"}
- {id: 285, cat: PC/Mac, desc: " |- Аудио редакторы и конверторы для Mac OS"}
- {id: 284, cat: PC/Mac, desc: " |- Программы для создания и обработки графики Mac OS"}
- {id: 283, cat: PC/Mac, desc: " |- Программы для просмотра и обработки видео Mac OS"}
- {id: 282, cat: PC/Mac, desc: " |- Mac OS"}
- {id: 171, cat: PC/Mac, desc: " |- Системные программы для Mac OS"}
- {id: 170, cat: PC/Mac, desc: " |- Mac OS (для Macintosh)"}
- {id: 436, cat: Other, desc: " |- WYSIWYG Редакторы для веб-дизайна"}
- {id: 435, cat: Other, desc: " |- Обмен исходниками"}
- {id: 376, cat: Other, desc: " |- Среды программирования, компиляторы и вспомогательные програ.."}
- {id: 370, cat: Other, desc: " |- Системы управления базами данных"}
- {id: 369, cat: Other, desc: " |- Скрипты и шаблоны"}
- {id: 368, cat: Other, desc: " |- Компоненты для сред программирования"}
- {id: 367, cat: Other, desc: " |- Ищу и предлагаю (Веб-разработка и программирование)"}
# iPhone, iPod, iPod Touch, iPad, мобильные телефоны . Android и КПК
# iPhone, iPod, iPod Touch, iPad, mobile phones.
- {id: 430, cat: PC/Mobile-iOS, desc: " |- База знаний"}
- {id: 967, cat: PC/Mobile-iOS, desc: " |- Прошивки и ОС"}
- {id: 426, cat: PC/Mobile-iOS, desc: " |- Программы"}
- {id: 429, cat: PC/Mobile-iOS, desc: " |- Игры"}
- {id: 428, cat: PC/Mobile-iOS, desc: " |- Видео"}
- {id: 913, cat: PC/Mobile-iOS, desc: " |- Видео"}
- {id: 175, cat: PC/Mobile-iOS, desc: " |- Приложения"}
- {id: 174, cat: PC/Mobile-iOS, desc: " |- Игры"}
# Музыка
# Music
- {id: 939, cat: Audio/Lossless, desc: " |- Дискографии в Lossless"}
- {id: 948, cat: Audio/MP3, desc: " |- Дискографии в MP3"}
- {id: 129, cat: Audio, desc: " |- Многоканальная музыка (Электронная музыка)"}
- {id: 825, cat: Audio/Lossless, desc: " |- Lossless (Электронная Музыка)"}
- {id: 829, cat: Audio/MP3, desc: " |- Techno / Hardcore / Acid (mp3)"}
- {id: 828, cat: Audio/MP3, desc: " |- Radioshows, Podcasts, Live Sets, Mixes (mp3)"}
- {id: 827, cat: Audio/MP3, desc: " |- D'n'B / Jungle / Breaks (mp3)"}
- {id: 826, cat: Audio/MP3, desc: " |- Ambient / ChillOut (mp3)"}
- {id: 288, cat: Audio/MP3, desc: " |- Drum and Bass (mp3)"}
- {id: 128, cat: Audio/MP3, desc: " |- Garage (mp3)"}
- {id: 127, cat: Audio/MP3, desc: " |- Mixadance (mp3)"}
- {id: 126, cat: Audio/MP3, desc: " |- House / Electro / Dance / Synthpop (mp3)"}
- {id: 125, cat: Audio/MP3, desc: " |- Trance / ProgressiveTranсе / HardStyle (mp3)"}
- {id: 124, cat: Audio/MP3, desc: " |- Электронная музыка других жанров (mp3)"}
- {id: 929, cat: Audio/MP3, desc: " |- Сборники разных исполнителей (mp3)"}
- {id: 940, cat: Audio/Lossless, desc: " |- Дискографии в Lossless"}
- {id: 951, cat: Audio/MP3, desc: " |- Дискографии в MP3"}
- {id: 130, cat: Audio, desc: " |- Многоканальная музыка (Рэп, Хип-Хоп, R.n.B)"}
- {id: 830, cat: Audio/Lossless, desc: " |- Lossless (Рэп, Хип-Хоп, R.n.B)"}
- {id: 134, cat: Audio/MP3, desc: " |- Отечественный Рэп, Хип-Хоп (mp3)"}
- {id: 133, cat: Audio/MP3, desc: " |- Зарубежный Рэп, Хип-Хоп (mp3)"}
- {id: 132, cat: Audio/MP3, desc: " |- Отечественный R.n.B (mp3)"}
- {id: 131, cat: Audio/MP3, desc: " |- Зарубежный R.n.B (mp3)"}
- {id: 930, cat: Audio/MP3, desc: " |- Сборники разных исполнителей (mp3)"}
- {id: 941, cat: Audio/Lossless, desc: " |- Дискографии в Lossless"}
- {id: 952, cat: Audio/MP3, desc: " |- Дискографии в MP3"}
- {id: 831, cat: Audio, desc: " |- Многоканальная музыка (Зарубежный рок)"}
- {id: 454, cat: Audio/Lossless, desc: " |- Lossless (Зарубежный рок)"}
- {id: 149, cat: Audio/MP3, desc: " |- Аltеrnаtivе, Hard, Indереndеnt (mp3)"}
- {id: 839, cat: Audio/MP3, desc: " |- Reggae, Ska, Dub (mp3)"}
- {id: 148, cat: Audio/MP3, desc: " |- Punk, Hardcore, Emo (mp3)"}
- {id: 147, cat: Audio/MP3, desc: " |- Nu Metal, Metalcore, Metal (mp3)"}
- {id: 150, cat: Audio/MP3, desc: " |- Post-Rock (mp3)"}
- {id: 931, cat: Audio/MP3, desc: " |- Сборники разных исполнителей (mp3)"}
- {id: 942, cat: Audio/Lossless, desc: " |- Дискографии в Lossless"}
- {id: 954, cat: Audio/MP3, desc: " |- Дискографии в MP3"}
- {id: 832, cat: Audio, desc: " |- Многоканальная музыка (Отечественный рок)"}
- {id: 455, cat: Audio/Lossless, desc: " |- Lossless (Отечественный рок)"}
- {id: 834, cat: Audio/MP3, desc: " |- Nu Metal, Metalcore, Metal (mp3)"}
- {id: 833, cat: Audio/MP3, desc: " |- Аltеrnаtivе, Hard, Indереndеnt (mp3)"}
- {id: 152, cat: Audio/MP3, desc: " |- Punk, Hardcore, Emo (mp3)"}
- {id: 151, cat: Audio/MP3, desc: " |- Reggae, Ska, Dub (mp3)"}
- {id: 932, cat: Audio/MP3, desc: " |- Сборники разных исполнителей (mp3)"}
- {id: 943, cat: Audio/Lossless, desc: " |- Дискографии в Lossless"}
- {id: 956, cat: Audio/MP3, desc: " |- Дискографии в MP3"}
- {id: 845, cat: Audio, desc: " |- Многоканальная музыка (Industrial)"}
- {id: 844, cat: Audio/Lossless, desc: " |- Lossless (Industrial)"}
- {id: 843, cat: Audio/MP3, desc: " |- Отечественный Industrial (mp3)"}
- {id: 842, cat: Audio/MP3, desc: " |- Зарубежный Industrial (mp3)"}
- {id: 936, cat: Audio/MP3, desc: " |- Сборники разных исполнителей (mp3)"}
- {id: 944, cat: Audio/Lossless, desc: " |- Дискографии в Lossless"}
- {id: 955, cat: Audio/MP3, desc: " |- Дискографии в MP3"}
- {id: 853, cat: Audio, desc: " |- Многоканальная музыка (Folk, NewAge, Flamenco)"}
- {id: 852, cat: Audio/Lossless, desc: " |- Lossless (Folk, NewAge, Flamenco)"}
- {id: 851, cat: Audio/MP3, desc: " |- Flamenco и акустическая гитара (mp3)"}
- {id: 850, cat: Audio/MP3, desc: " |- Этническая музыка Африки и Азии (mp3)"}
- {id: 849, cat: Audio/MP3, desc: " |- Country, Bluegrass (mp3)"}
- {id: 848, cat: Audio/MP3, desc: " |- Этническая музыка Кавказа и Закавказья (mp3)"}
- {id: 847, cat: Audio/MP3, desc: " |- NewAge &amp;Meditative (mp3)"}
- {id: 846, cat: Audio/MP3, desc: " |- Folk и neo-folk, celtic, medieval (mp3)"}
- {id: 935, cat: Audio/MP3, desc: " |- Сборники разных исполнителей (mp3)"}
- {id: 945, cat: Audio/Lossless, desc: " |- Дискографии в Lossless"}
- {id: 953, cat: Audio/MP3, desc: " |- Дискографии в MP3"}
- {id: 222, cat: Audio, desc: " |- Многоканальная музыка (Поп-музыка)"}
- {id: 221, cat: Audio/Lossless, desc: " |- Lossless (Поп-музыка)"}
- {id: 326, cat: Audio/MP3, desc: " |- Отечественная Eurodance, Technopop, Disco (mp3)"}
- {id: 223, cat: Audio/MP3, desc: " |- Зарубежная Eurodance, Technopop, Disco (mp3)"}
- {id: 156, cat: Audio/MP3, desc: " |- Отечественная Поп музыка (mp3)"}
- {id: 157, cat: Audio/MP3, desc: " |- Зарубежная Поп музыка (mp3)"}
- {id: 158, cat: Audio/MP3, desc: " |- Сборники отечественной Поп-музыки (mp3)"}
- {id: 224, cat: Audio/MP3, desc: " |- Сборники зарубежной Поп-музыки (mp3)"}
- {id: 924, cat: Audio/MP3, desc: " |- Сборники разных исполнителей (mp3)"}
- {id: 946, cat: Audio/Lossless, desc: " |- Дискографии в Lossless"}
- {id: 950, cat: Audio/MP3, desc: " |- Дискографии в MP3"}
- {id: 840, cat: Audio, desc: " |- Многоканальная музыка (Классическая музыка)"}
- {id: 841, cat: Audio/Lossless, desc: " |- Lossless (Классическая музыка)"}
- {id: 153, cat: Audio/MP3, desc: " |- Классическая музыка (mp3)"}
- {id: 933, cat: Audio/MP3, desc: " |- Сборники разных исполнителей (mp3)"}
- {id: 947, cat: Audio/Lossless, desc: " |- Дискографии в Lossless"}
- {id: 949, cat: Audio/MP3, desc: " |- Дискографии в MP3"}
- {id: 928, cat: Audio, desc: " |- Многоканальная музыка"}
- {id: 938, cat: Audio/Lossless, desc: " |- Lossless (Музыка других жанров)"}
- {id: 572, cat: Audio/MP3, desc: " |- Blues, Lounge,Cillout, Bossa Nova (mp3)"}
- {id: 155, cat: Audio/MP3, desc: " |- Джаз (mp3)"}
- {id: 871, cat: Audio/MP3, desc: " |- Военная и Патриотическая песня (mp3)"}
- {id: 259, cat: Audio/MP3, desc: " |- Шансон и Бардовская песня (mp3)"}
- {id: 448, cat: Audio/MP3, desc: " |- Музыка для детей (mp3)"}
- {id: 934, cat: Audio/MP3, desc: " |- Сборники разных исполнителей (mp3)"}
- {id: 867, cat: Audio, desc: " |- Рок-музыка (муз видео)"}
- {id: 866, cat: Audio, desc: " |- Электронная музыка (муз видео)"}
- {id: 865, cat: Audio, desc: " |- Поп-музыка ( муз видео)"}
- {id: 864, cat: Audio, desc: " |- Народная музыка (Folk) (муз видео)"}
- {id: 863, cat: Audio, desc: " |- Джаз (муз видео)"}
- {id: 862, cat: Audio, desc: " |- Блюз (муз видео)"}
- {id: 861, cat: Audio, desc: " |- Классика (муз видео)"}
- {id: 860, cat: Audio, desc: " |- Рэп, Хип-Хоп, R.n.B (муз видео)"}
- {id: 859, cat: Audio, desc: " |- Русский шансон (муз видео)"}
- {id: 858, cat: Audio, desc: " |- Детское муз видео"}
- {id: 289, cat: Audio, desc: " |- К играм"}
- {id: 290, cat: Audio, desc: " |- К фильмам"}
- {id: 291, cat: Audio, desc: " |- К сериалам"}
# Литература и обучение
# Literature and learning
- {id: 61, cat: Books, desc: " |- Художественная литература"}
- {id: 664, cat: Books, desc: " |- Художественная литература для детей"}
- {id: 467, cat: Books, desc: " |- Художественная литература на иностранных языках"}
- {id: 703, cat: Books, desc: "Программы и библиотеки для электронных книг"}
- {id: 966, cat: Books, desc: " |- Кулинария"}
- {id: 666, cat: Books, desc: " |- Обучающая литература для родителей"}
- {id: 665, cat: Books, desc: " |- Обучающая литература для детей"}
- {id: 182, cat: Books, desc: " |- Учебники, справочники, энциклопедии"}
- {id: 466, cat: Books, desc: " |- Книги, учебники и справочная литература по обучению ин. язык.."}
- {id: 185, cat: Books, desc: " |- Философия и религия"}
- {id: 184, cat: Books, desc: " |- Психология"}
- {id: 183, cat: Books, desc: " |- Хобби (увлечения и досуг)"}
- {id: 181, cat: Books, desc: " |- Литература по компьютерам и ПО"}
- {id: 782, cat: Books, desc: " |- Радиоэлектроника"}
- {id: 585, cat: Books, desc: " |- Литература по авто и мото транспорту"}
- {id: 584, cat: Books, desc: " |- Руководства по ремонту/обслуживанию/эксплуатации авто"}
- {id: 586, cat: Books, desc: " |- Авто - Тюнинг, чиптюнинг, настройка, отделка и укращения"}
- {id: 672, cat: Books, desc: " |- Литература по медицине"}
- {id: 793, cat: Books, desc: "Журналы научно-прикладные и познавательно-образовательные"}
- {id: 708, cat: PC, desc: "Интерактивный и компьтерный материал"}
- {id: 875, cat: PC, desc: " |- Интерактивные компьютерные диски для хобби"}
- {id: 583, cat: PC, desc: " |- Интерактивные справочники и каталоги для авто/мото транспорт.."}
- {id: 465, cat: PC, desc: " |- Интерактивные и компьютерные диски для обучения ин. языкам"}
- {id: 674, cat: PC, desc: " |- Интерактивные и компьютерные диски по медицине"}
- {id: 710, cat: PC, desc: " |- Прочие материалы для детей и родителей"}
- {id: 888, cat: Books, desc: "Литература разных направлений"}
- {id: 897, cat: Books, desc: " |- Прочее"}
- {id: 896, cat: Books, desc: " |- Автомобили"}
- {id: 895, cat: Books, desc: " |- Домашним мастерам"}
- {id: 894, cat: Books, desc: " |- Для женщин"}
- {id: 893, cat: Books, desc: " |- Для мужчин"}
- {id: 892, cat: Books, desc: " |- Научно-популярное"}
- {id: 891, cat: Books, desc: " |- Мир техники"}
- {id: 890, cat: Books, desc: " |- Игры"}
- {id: 889, cat: Books, desc: " |- История"}
- {id: 21, cat: Audio/Audiobook, desc: "Аудиокниги"}
- {id: 736, cat: Audio/Audiobook, desc: " |- S.T.A.L.K.E.R."}
- {id: 693, cat: Audio/Audiobook, desc: " |- Романы"}
- {id: 464, cat: Audio/Audiobook, desc: " |- Аудиообучение ин. языкам"}
- {id: 686, cat: Audio/Audiobook, desc: " |- Обучающие и познавательные аудиокниги"}
- {id: 685, cat: Audio/Audiobook, desc: " |- Аудиокниги на иностранных языках"}
- {id: 684, cat: Audio/Audiobook, desc: " |- Детективы"}
- {id: 441, cat: Audio/Audiobook, desc: " |- Фантастика"}
- {id: 192, cat: Audio/Audiobook, desc: " |- Классика"}
- {id: 816, cat: Audio/Audiobook, desc: " |- Современная литература"}
- {id: 190, cat: Audio/Audiobook, desc: " |- Аудио книги для детей"}
- {id: 191, cat: Audio/Audiobook, desc: " |- Обучающие аудиокниги и аудиоупражнения для детей"}
- {id: 749, cat: Audio, desc: "Аудио концерты, спектакли, пьесы"}
- {id: 687, cat: Audio, desc: " |- Аудиоспектакли и литературные чтения"}
- {id: 751, cat: Audio, desc: " |- Аудио юмористические концерты (выступления)"}
# Эротика
# Erotica
- {id: 483, cat: Other, desc: "Правила, FAQ и Предложения по улучшению раздела &quot;Эротик.."}
- {id: 484, cat: Other, desc: " |- Правила и FAQ"}
- {id: 485, cat: Other, desc: " |- Предложения по улучшению раздела &quot;Эротика&quot;и форум.."}
- {id: 688, cat: Other, desc: " |- Ищу / Предлагаю"}
- {id: 963, cat: XXX, desc: "Эротические художественные фильмы"}
- {id: 964, cat: XXX, desc: "Эротические документальные фильмы"}
- {id: 178, cat: XXX, desc: "Русская эротика"}
- {id: 179, cat: XXX, desc: "Иностранная эротика"}
- {id: 176, cat: XXX, desc: "Фото, ролики"}
- {id: 577, cat: XXX, desc: "Нетрадиционная эротика"}
- {id: 571, cat: XXX, desc: "Мультипликационные фильмы для взрослых"}
- {id: 177, cat: XXX, desc: "Хентай"}
- {id: 812, cat: XXX, desc: "3D | Стерео эротика"}
- {id: 882, cat: XXX, desc: " |- 3D | мульт"}
- {id: 817, cat: XXX, desc: " |- 3D | Хентай"}
- {id: 815, cat: XXX, desc: " |- 3D | Видеоролики"}
- {id: 814, cat: XXX, desc: " |- 3D | Русская эротика"}
- {id: 813, cat: XXX, desc: " |- 3D | Иностранная эротика"}
- {id: 820, cat: XXX, desc: "Литература"}
# Служебный раздел
# Service section
- {id: 604, cat: Other, desc: "Открытый"}
- {id: 912, cat: Other, desc: "Нарушение правил оформления"}
- {id: 57, cat: Other, desc: "Временный склад (TEMP)"}
- {id: 433, cat: Other, desc: "Архив раздач"}
- {id: 378, cat: Other, desc: "Корзина"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: striprussian
type: checkbox
label: Strip Russian Letters
default: false
- name: addrussian
type: checkbox
label: Add RUSSIAN to end of all titles to improve language detection by Sonarr and Radarr. Will cause English-only results to be misidentified.
default: false
- name: sort
type: select
label: Sort requested from site
default: 1
options:
1: created
10: seeders
7: size
2: title
- name: type
type: select
label: Order requested from site
default: 2
options:
2: desc
1: asc
login:
path: login.php
method: form
form: form[action$="/login.php"]
inputs:
login_username: "{{ .Config.username }}"
login_password: "{{ .Config.password }}"
autologin: 1
selectorinputs:
cookie_test:
selector: input[name="cookie_test"]
attribute: value
error:
- selector: h4.warnColor1
test:
path: index.php
selector: a[href="/login.php?logout=1"]
search:
paths:
- path: tracker.php
keywordsfilters:
- name: diacritics
args: replace
- name: re_replace # S01 to сезон 1
args: ["(?i)\\bS0*(\\d+)\\b", "сезон $1"]
- name: re_replace # S01E01 to сезон 1 серии 1
args: ["(?i)\\bS0*(\\d+)E0*(\\d+)\\b", "сезон $1 серии $2"]
inputs:
$raw: "{{ if .Categories }}{{ range .Categories }}f[]={{.}}&{{end}}{{ else }}f[]=-1{{ end }}"
prev_allw: 1
prev_a: 0
prev_dla: 0
prev_dlc: 0
prev_dld: 0
prev_dlw: 0
prev_my: 0
prev_new: 0
prev_sd: 0
prev_da: 1
prev_dc: 0
prev_df: 1
prev_ds: 0
# sort by 1=registered 2=topicTitle 4=completed 10=seed 11=leech 12=up 13=down 5=replies 6=views 7=size 8=lastPost 9=seedLastSeen
o: "{{ .Config.sort }}"
# 1=asc 2=desc
s: "{{ .Config.type }}"
# show category
dc: 0
# show forum
df: 1
# show author
da: 1
# show speed
ds: 0
# -1=all time
tm: -1
# seed not seen -1=disregard
sns: -1
nm: "{{ .Keywords }}"
# find a username
pn: ""
# search all words
allw: 1
rows:
selector: tr[id^="tor_"]:has(a[href^="/download.php?id="])
fields:
category:
selector: a.gen
attribute: href
filters:
- name: querystring
args: f
title:
selector: a.genmed
filters:
- name: replace
args: ["Кураж-Бамбей", "kurazh"]
- name: replace
args: ["Кубик в Кубе", "Kubik"]
- name: replace
args: ["Кравец", "Kravec"]
- name: replace
args: ["Пифагор", "Pifagor"]
- name: replace
args: ["Невафильм", "Nevafilm"]
- name: replace
args: ["Лицензия", "Lic"]
- name: replace
args: ["селезень", "selezen"]
# normalize to SXXEYY format
- name: re_replace
args: ["([CСcс]езоны?:?\\s+((?:\\d+)(?:-\\d+)?).*[CСcс]ери[ия]:?\\s+((?:\\d+)(?:-\\d+)?).*?\\d+\\)?)", " S$2E$3 "]
- name: re_replace
args: ["([CСcс]ери[ия]:?\\s+((?:\\d+)(?:-\\d+)?).*?[?\\d]+\\)?)", " E$2 "]
- name: re_replace
args: ["(\\([А-Яа-яЁё\\W]+\\))|(^[А-Яа-яЁё\\W\\d]+\\/ )|([а-яА-ЯЁё \\-]+,+)|([а-яА-ЯЁё]+)", "{{ if .Config.striprussian }}{{ else }}$0{{ end }}"]
- name: re_replace
args: ["[«»()=.,:|\\[\\]\\/]", " "]
- name: append
args: "{{ if .Config.addrussian }} - RUSSIAN{{ else }}{{ end }}"
- name: replace
args: ["-Rip", "Rip"]
- name: replace
args: ["WEB-DL", "WEBDL"]
- name: replace
args: ["WEBDLRip", "WEBDL"]
- name: replace
args: ["HDTVRip", "HDTV"]
details:
selector: a.genmed
attribute: href
download:
selector: a[href^="/download.php?id="]
attribute: href
size:
selector: td:nth-child(6) > u
seeders:
selector: td.seedmed > b
leechers:
selector: td.leechmed > b
grabs:
selector: td:nth-child(9)
date:
# unix
selector: td:last-child > u
downloadvolumefactor:
case:
img[src="images/tor_gold.gif"]: 0
"*": 1
uploadvolumefactor:
text: 1
# TorrentPier

View File

@@ -1,7 +1,7 @@
---
id: gay-torrents
name: Gay-Torrents.net
description: "Gay-Torrents.net is a Private Torrent Tracker for GAY XXX"
description: "Gay-Torrents.net is a Private Torrent Tracker for GAY 3X"
language: en-US
type: semi-private
encoding: UTF-8

View File

@@ -33,14 +33,13 @@ legacylinks:
caps:
categorymappings:
- {id: movies, cat: Movies, desc: "Movies"}
- {id: tvshows, cat: TV, desc: "TV Shows"}
- {id: softwares, cat: PC, desc: "Softwares"}
- {id: music, cat: Audio, desc: "Music"}
- {id: console-games, cat: Console, desc: "Console Games"}
- {id: pc-games, cat: PC/Games, desc: "PC Games"}
- {id: books, cat: Books, desc: "Books"}
- {id: xxx, cat: XXX, desc: "XXX"}
- {id: Films, cat: Movies, desc: "Movies"}
- {id: Séries, cat: TV, desc: "TV"}
- {id: Musiques, cat: Audio, desc: "Music"}
- {id: Ebooks, cat: Books, desc: "Books"}
- {id: Logiciels, cat: PC, desc: "Software"}
- {id: Jeux-PC, cat: PC/Games, desc: "PC Games"}
- {id: Jeux-Consoles, cat: Console/XBox 360, desc: "Console Games"}
modes:
search: [q]
@@ -94,15 +93,7 @@ search:
fields:
category:
selector: td:nth-child(1) > i
case:
.Films: movies
.Séries: tvshows
.Logiciels: softwares
.Musique: music
.Jeux-Consoles: console-games
.Jeux-PC: pc-games
.Ebook: books
.Porno: xxx
attribute: class
site_date:
selector: td:nth-child(1) a
filters:

View File

@@ -14,8 +14,6 @@ caps:
modes:
search: [q]
tv-search: [q]
movie-search: [q]
settings:
- name: username

View File

@@ -0,0 +1,194 @@
---
id: hdgalaktik
name: HDGalaKtik
description: "HDGalaKtik is a RUSSIAN Semi-Private tracker for TV / MOVIES / GENERAL"
language: ru-RU
type: semi-private
encoding: UTF-8
links:
- https://hdgalaktik.com/
caps:
categorymappings:
- {id: 13, cat: Movies, desc: "Фильмы (Movies)"}
- {id: 6, cat: TV, desc: "Мультфильмы (Cartoons)"}
- {id: 10, cat: Audio, desc: "Музыка (Music)"}
- {id: 26, cat: PC, desc: "Программы (Programs)"}
- {id: 5, cat: Console, desc: "Игры (Games)"}
- {id: 25, cat: Other, desc: "Картинки (Pictures)"}
- {id: 11, cat: TV, desc: "Сериалы (TV Series)"}
- {id: 12, cat: TV/Anime, desc: "Аниме (Anime)"}
- {id: 16, cat: Books, desc: "Книги (Books)"}
- {id: 18, cat: Audio/Video, desc: "Клипы / Ролики (Clips / Trailers)"}
- {id: 22, cat: TV, desc: "ТВ / Передачи (TV)"}
- {id: 27, cat: PC/Mobile-Other, desc: "Игры - Мобила / КПК (Mobile)"}
- {id: 1, cat: PC/ISO, desc: "Образы (ISO)"}
- {id: 4, cat: Other, desc: "Другое (Other)"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
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: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: striprussian
type: checkbox
label: Strip Russian Letters
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
1: title
5: size
8: seeders
- 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:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: /
selector: a[href="mybonus.php"]
search:
# https://hdgalaktik.com/browse.php?search=&stype=0&s=0&cat=0&gr=0&kp=0&im=0&incldead=1&sort=0&type=desc
paths:
- path: browse.php
keywordsfilters:
- name: re_replace # S01E01 to [1 сезон 1 сери]
args: ["(?i)S0*(\\d+)E0*(\\d+)", "[$1 сезон $2 сери]"]
- name: re_replace # S01 to [1 сезон]
args: ["(?i)S0*(\\d+)", "[$1 сезон]"]
- name: re_replace # E01 to [1 сери]
args: ["(?i)E0*(\\d+)", "[$1 сери]"]
- name: re_replace # replace special characters with "%" (wildcard)
args: ["[^a-zA-Z0-9]+", "%"]
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 title, 1 descr, 2 filename, 4 infohash
stype: 0
# 0 AND 1 OR
s: 0
# release group
gr: 0
# ratings
kp: 0
# 1 active, 2 dead, 3 gold, 4 sticky, lots of others
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
sort: "{{ .Config.sort }}"
ascdesc: "{{ .Config.type }}"
rows:
selector: table.embedded > tbody > tr.torcontduo
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a.alink
attribute: title
filters:
# normalize to SXXEYY format
- name: re_replace
args: ["[\\.\\,\\:\\/\\|\\[\\]]", " "]
- name: re_replace
args: ["(.*) от .*$", "$1"]
- name: re_replace
args: ["(.*)(\\d+\\-\\d+)\\s*[CСcс]езон\\s*(\\d+\\-\\d+)\\s*[CСcс]ери[ия]\\s*из\\s*\\d+(.*)", "$1 S$2E$3 rus $4"]
- name: re_replace
args: ["(.*)(\\d+)\\-(\\d+)\\s*[CСcс]езон\\s*(\\d+)\\-(\\d+)\\s*[CСcс]ери[ия](.*)", "$1 S$2E$3 rus $4"]
- name: re_replace
args: ["(.*)(\\d+)\\s*[CСcс]езон\\s*(\\d+\\-\\d+)\\s*[CСcс]ери[ия]\\s*из\\s*\\d+(.*)", "$1 S$2E$3 rus $4"]
- name: re_replace
args: ["(.*)(\\d+)\\s*[CСcс]езон\\s*(\\d+\\-\\d+)\\s*[CСcс]ери[ия](.*)", "$1 S$2E$3 rus $4"]
- name: re_replace
args: ["(.*)(\\d+\\-\\d+)\\s*[CСcс]езон\\s*(.*)", "$1 S$2 rus $3"]
- name: re_replace
args: ["(.*)(\\d+)\\s*[CСcс]езон\\s*(.*)", "$1 S$2 rus $3"]
- name: re_replace
args: ["(.*)(\\d+\\-\\d+)\\s*[CСcс]ери[ия]\\s*из\\s*\\d+(.*)", "$1 E$2 rus $3"]
- name: re_replace
args: ["(.*)(\\d+)\\s*[CСcс]ери[ия]\\s*из\\s*\\d+(.*)", "$1 E$2 rus $3"]
- name: re_replace
args: ["(.*)(\\d+\\-\\d+)\\s*[CСcс]ери[ия](.*)", "$1 E$2 rus $3"]
- name: re_replace
args: ["(.*)(\\d+)\\s*[CСcс]ери[ия](.*)", "$1 E$2 rus $3"]
- name: re_replace
args: ["(\\([А-Яа-яЁё\\W]+\\))|(^[А-Яа-яЁё\\W\\d]+\\/ )|([а-яА-ЯЁё \\-]+,+)|([а-яА-ЯЁё]+)", "{{ if .Config.striprussian }}{{ else }}$1$2$3$4{{ end }}"]
- name: replace
args: ["WEBRip", "WEBDL"]
- name: replace
args: ["WEB-DL", "WEBDL"]
- name: replace
args: ["WEBDLRip", "WEBDL"]
- name: replace
args: ["HDTVRip", "HDTV"]
- name: replace
args: ["SATRip", "TV"]
details:
selector: a.alink
attribute: href
download:
selector: a.alink
attribute: href
filters:
- name: replace
args: ["details", "download"]
size:
selector: td:nth-child(4)
seeders:
selector: td:nth-child(6)
filters:
- name: split
args: ["|", 0]
leechers:
selector: td:nth-child(6)
filters:
- name: split
args: ["|", 0]
date:
# 1 day ago
selector: a[href^="browse.php?date="]
filters:
- name: timeago
downloadvolumefactor:
case:
img[src="/pic/freedownload.gif"]: 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
# engine n/a

View File

@@ -121,7 +121,8 @@ search:
selector: a[href^="download.php?id="]
attribute: href
imdbid:
selector: div.imdb_100 > a
# site currently only has a badge and rating, the id is not present. just in case a future update.
selector: a[href*="imdb.com/title/tt"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
@@ -171,4 +172,4 @@ search:
description:
selector: td:nth-child(2)
remove: a, img
# customised NexusPHP Standard v0.1
# NexusPHP v1.7.4

View File

@@ -47,12 +47,20 @@ caps:
book-search: [q]
settings:
- name: username
- name: cookie
type: text
label: Username
- name: password
type: password
label: Password
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
- 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>"
- name: sort
type: select
label: Sort requested from site
@@ -75,19 +83,16 @@ settings:
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#loginForm
method: cookie
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
login: yes
# error: using some kind of JS popup that can not be trapped :-(
cookie: "{{ .Config.cookie }}"
test:
path: browse.php
selector: a[href^="logout.php?k="]
search:
headers:
User-Agent: ["{{ .Config.useragent }}"]
paths:
# https://huntorrent.net/browse.php?time=1616615308&korhatar=0&incldead=1&xyz=yes&c28=1&c27=1&c6=1&c5=1&sort=4&type=desc
- path: browse.php

View File

@@ -52,8 +52,6 @@ caps:
modes:
search: [q]
tv-search: [q]
movie-search: [q]
settings:
- name: username

View File

@@ -0,0 +1,190 @@
---
id: kufirc
name: Kufirc
description: "Kufirc is a HUNGARIAN Private tracker for 3X"
language: hu-HU
type: private
encoding: UTF-8
links:
- https://kufirc.com/
caps:
categorymappings:
- {id: 30, cat: XXX, desc: "Amateur"}
- {id: 29, cat: XXX, desc: "Anal"}
- {id: 5, cat: XXX, desc: "Animal"}
- {id: 27, cat: XXX, desc: "Asian"}
- {id: 26, cat: XXX, desc: "BBW"}
- {id: 44, cat: XXX, desc: "BDSM"}
- {id: 25, cat: XXX, desc: "Big Ass"}
- {id: 24, cat: XXX, desc: "Big Tits"}
- {id: 34, cat: XXX, desc: "Black"}
- {id: 35, cat: XXX, desc: "Busty"}
- {id: 23, cat: XXX, desc: "Classic"}
- {id: 33, cat: XXX, desc: "Creampie"}
- {id: 22, cat: XXX, desc: "Cumshot"}
- {id: 36, cat: XXX, desc: "Feature"}
- {id: 21, cat: XXX, desc: "Fetish"}
- {id: 31, cat: XXX, desc: "Film/Cam/Hun"}
- {id: 46, cat: XXX/XviD, desc: "Film/Xvid/hun"}
- {id: 37, cat: XXX, desc: "Foreign"}
- {id: 19, cat: XXX, desc: "Gay / Bi"}
- {id: 18, cat: XXX, desc: "Hardcore"}
- {id: 32, cat: XXX, desc: "HD porn"}
- {id: 28, cat: XXX, desc: "Hentai / 3D"}
- {id: 17, cat: XXX, desc: "Homemade"}
- {id: 38, cat: XXX, desc: "Interracial"}
- {id: 11, cat: XXX, desc: "Kép"}
- {id: 48, cat: XXX, desc: "Latina"}
- {id: 16, cat: XXX, desc: "Lesbian"}
- {id: 6, cat: XXX, desc: "Magyar"}
- {id: 15, cat: XXX, desc: "Masturbation"}
- {id: 14, cat: XXX, desc: "Mature"}
- {id: 13, cat: XXX/Pack, desc: "Megapack"}
- {id: 55, cat: XXX, desc: "Milf"}
- {id: 49, cat: XXX, desc: "Natural Tits"}
- {id: 39, cat: XXX, desc: "Old + Young"}
- {id: 12, cat: XXX, desc: "Oral"}
- {id: 20, cat: XXX, desc: "Orgia / Gang Bang"}
- {id: 42, cat: XXX/Other, desc: "Other"}
- {id: 50, cat: XXX, desc: "Parody"}
- {id: 41, cat: XXX, desc: "Paysite"}
- {id: 40, cat: XXX, desc: "Piss"}
- {id: 43, cat: XXX, desc: "Porn Music Videos"}
- {id: 54, cat: XXX, desc: "Pov"}
- {id: 45, cat: XXX, desc: "Pregnant / Preggo"}
- {id: 10, cat: XXX, desc: "Shemale / TS"}
- {id: 51, cat: XXX, desc: "Siterip"}
- {id: 52, cat: XXX, desc: "Softcore"}
- {id: 53, cat: XXX, desc: "Squirt"}
- {id: 9, cat: XXX, desc: "Straight"}
- {id: 8, cat: XXX, desc: "Tini"}
- {id: 47, cat: XXX, desc: "VR"}
- {id: 7, cat: PC/Games, desc: "XXX játék / program"}
modes:
search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrentek oldalanként:</b> setting to <b>100</b> on your account profile.
- name: sort
type: select
label: Sort requested from site
default: time
options:
time: created
seeders: seeders
size: size
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: login
method: form
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
cinfo: "1920|1080|24|-60"
iplocked: 0
keeploggedin: 1
error:
- selector: div.error
test:
path: /
selector: "#nav_userinfo"
search:
paths:
# https://kufirc.com/torrents.php?filter_cat[30]=1&filter_cat[29]=1&order_by=time&order_way=desc&searchtext=&action=advanced&title=720p+2022&sizeall=&sizetype=&sizerange=&filelist=&taglist=&autocomplete_toggle=
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
searchtext: ""
title: "{{ .Keywords }}"
order_by: "{{ .Config.sort }}"
order_way: "{{ .Config.type }}"
action: advanced
filter_freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
sizeall: ""
sizetype: ""
sizerange: ""
filelist: ""
taglist: ""
autocomplete_toggle: ""
rows:
selector: table#torrent_table > tbody > tr[class^="torrent row"]
fields:
category:
selector: a[href*="filter_cat"]
attribute: href
filters:
- name: regexp
args: "(\\d+)]=1"
title:
selector: a[href^="/torrents.php?id="]
details:
selector: a[href^="/torrents.php?id="]
attribute: href
download:
selector: a[href^="torrents.php?action=download&id="]
attribute: href
description:
optional: true
selector: div.tags
poster:
selector: td:nth-child(2) > script
filters:
- name: regexp
args: "src=\\\\\"(.*?)\\\\\""
- name: re_replace
args: ["\\\\(.)", "$1"]
- name: replace
args: ["/static/common/noartwork/noimage.png", ""]
files:
selector: td:nth-child(3)
date:
selector: td:nth-child(5) > span
attribute: title
filters:
- name: append
args: " +00:00" # auto adjusted by site account profile
- name: dateparse
args: "Jan 02 2006, 15:04 -07:00"
size:
selector: td:nth-child(6)
grabs:
selector: td:nth-child(7)
seeders:
selector: td:nth-child(8)
leechers:
selector: td:nth-child(9)
downloadvolumefactor:
case:
span.icon[title*="Freeleech"]: 0
"img[alt=\"Freeleech\"]": 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 0.5
# Luminance

View File

@@ -79,10 +79,23 @@ search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
- path: "/api/torrents/filter?api_token={{ .Config.apikey }}&name={{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}&sortField={{ .Config.sort }}&sortDirection={{ .Config.type }}&perPage=100&page=1{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ else }}{{ end }}"
- path: "/api/torrents/filter"
response:
type: json
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
page: 1
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
- name: re_replace
args: ["(?i)\\bS(\\d+)", "T$1"]
@@ -93,8 +106,8 @@ search:
selector: meta.total
fields:
categorydesc:
selector: category
category:
selector: category_id
title_vose:
selector: name:contains(VOSE)
optional: true
@@ -150,11 +163,15 @@ search:
size:
selector: size
downloadvolumefactor:
# api returns 0=false, 1=true
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
0: 1 # not free
1: 0 # freeleech
0%: 1 # not free
25%: 0.75
50%: 0.5
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
@@ -166,4 +183,4 @@ search:
minimumseedtime:
# 4 days (as seconds = 4 x 24 x 60 x 60)
text: 345600
# json UNIT3D 5.3.0
# json UNIT3D 6.0.8

View File

@@ -32,8 +32,6 @@ caps:
modes:
search: [q]
tv-search: [q]
movie-search: [q]
settings:
- name: sort

View File

@@ -8,7 +8,7 @@ encoding: UTF-8
followredirect: true
# changes to this indexer should also be made to limetorrentsclone
links:
- https://www.limetorrents.pro/
- https://www.limetorrents.lol/
- https://limetorrents.unblockit.llc/
- https://limetorrents.unblockninja.com/
- https://limetorrents.nocensor.sbs/
@@ -34,6 +34,7 @@ legacylinks:
- https://limetorrents.unblockit.cam/
- https://limetorrents.nocensor.biz/
- https://limetorrents.unblockit.day/
- https://www.limetorrents.pro/
caps:
categorymappings:

View File

@@ -69,6 +69,8 @@ search:
args: ["(?i)S0*(\\d+)", "[$1 сезон]"]
- name: re_replace # E01 to [1 сери]
args: ["(?i)E0*(\\d+)", "[$1 сери]"]
- name: re_replace
args: ["(\\w+)", " %$1"] # prepend % to each word - allow 1 character keywords
inputs:
search: "{{ if .Keywords }}{{ .Keywords }}{{ else }}%%{{ end }}"
# does not support multi category searches

View File

@@ -1,7 +1,7 @@
---
id: mteamtp
name: M-Team - TP
description: "M-Team TP (MTTP) is a CHINESE Private Torrent Tracker for HD MOVIES / TV / XXX"
description: "M-Team TP (MTTP) is a CHINESE Private Torrent Tracker for HD MOVIES / TV / 3X"
language: zh-CN
type: private
encoding: UTF-8

View File

@@ -14,8 +14,6 @@ caps:
modes:
search: [q]
tv-search: [q]
movie-search: [q]
settings:
- name: flaresolverr

View File

@@ -7,7 +7,8 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://www.oxtorrent.re/
- https://www.torrent911.com/
- https://www.t911.net/
- https://oxtorrent.unblockit.llc/
- https://oxtorrent.nocensor.sbs/
legacylinks:
@@ -32,17 +33,17 @@ legacylinks:
- https://oxtorrent.unblockit.cam/
- https://oxtorrent.nocensor.biz/
- https://oxtorrent.unblockit.day/
- https://www.oxtorrent.re/
caps:
categorymappings:
- {id: movies, cat: Movies, desc: "Movies"}
- {id: tvshows, cat: TV, desc: "TV Shows"}
- {id: softwares, cat: PC, desc: "Softwares"}
- {id: music, cat: Audio, desc: "Music"}
- {id: console-games, cat: Console, desc: "Console Games"}
- {id: pc-games, cat: PC/Games, desc: "PC Games"}
- {id: books, cat: Books, desc: "Books"}
- {id: xxx, cat: XXX, desc: "XXX"}
- {id: Films, cat: Movies, desc: "Movies"}
- {id: Séries, cat: TV, desc: "TV"}
- {id: Musiques, cat: Audio, desc: "Music"}
- {id: Ebooks, cat: Books, desc: "Books"}
- {id: Logiciels, cat: PC, desc: "Software"}
- {id: Jeux-PC, cat: PC/Games, desc: "PC Games"}
- {id: Jeux-Consoles, cat: Console/XBox 360, desc: "Console Games"}
modes:
search: [q]
@@ -99,15 +100,7 @@ search:
fields:
category:
selector: td:nth-child(1) i, td:nth-child(1) div i
case:
.Films: "movies"
.Séries: "tvshows"
.Logiciels: "softwares"
.Musique: "music"
.Jeux-Consoles: "console-games"
.Jeux-PC: "pc-games"
.Ebook: "books"
.Porno: "xxx"
attribute: class
site_date:
selector: td:nth-child(1) a
filters:

View File

@@ -16,8 +16,6 @@ caps:
modes:
search: [q]
tv-search: [q]
movie-search: [q]
settings:
- name: username

View File

@@ -179,20 +179,26 @@ search:
downloadvolumefactor:
case:
tr.free_bg: 0
# tr.2up: 0
# tr.free2up: 0
img.pro_free: 0
tr.2up: 0
img.pro_2up: 0
tr.free2up: 0
img.pro_free2up: 0
tr.halfdown_bg: 0.5
img.pro_50pctdown: 0.5
tr.d30down_bg: 0.3
img.pro_30pctdown: 0.3
tr.d70down_bg: 0.7
img.pro_70pctdown: 0.7
"*": 1
uploadvolumefactor:
case:
# tr.2up: 0
# tr.free2up: 0
img.pro_2up: 2
img.pro_free2up: 2
"*": 1
description:
selector: td:nth-child(2)
remove: a, img
minimumratio:
text: 0.7
# NexusPHP v1.0 Beta 2
# NexusPHP Standard v1.0 Beta 2

View File

@@ -60,8 +60,6 @@ caps:
modes:
search: [q]
tv-search: [q]
movie-search: [q]
settings:
- name: username

View File

@@ -0,0 +1,297 @@
---
id: seedoff
name: Seedoff
description: "Seedoff is a RUSSIAN Public tracker for MOVIES / TV / GENERAL"
language: ru-RU
type: public
encoding: UTF-8
links:
- https://seedoff.zannn.top/
- https://forum.zannn.top/
caps:
categorymappings:
# Video
- {id: 1, cat: Movies, desc: "Видео"}
- {id: 14, cat: Movies/Foreign, desc: "Зарубежное кино"}
- {id: 15, cat: Movies, desc: "Отечественное кино"}
- {id: 17, cat: TV/Foreign, desc: "Зарубежные сериалы"}
- {id: 128, cat: TV, desc: "Отечественные сериалы"}
- {id: 18, cat: TV/Documentary, desc: "Документальные фильмы"}
- {id: 19, cat: TV, desc: "ТВ-передачи"}
- {id: 20, cat: TV/Sport, desc: "Спорт"}
- {id: 21, cat: Movies/Other, desc: "Трейлеры"}
- {id: 22, cat: Audio/Video, desc: "Театр и музыка"}
- {id: 112, cat: TV/Other, desc: "Юмор"}
- {id: 139, cat: TV/Foreign, desc: "Видео без русского перевода"}
- {id: 145, cat: TV/Other, desc: "Видеокурсы"}
- {id: 118, cat: Movies, desc: "Другое"}
- {id: 149, cat: Movies, desc: "Ретро отечественного/зарубежного видео"}
# Video (DVD/HD/BD)
- {id: 13, cat: Movies, desc: "Видео (DVD/HD/BD)"}
- {id: 64, cat: Movies/Foreign, desc: "Зарубежное кино"}
- {id: 65, cat: Movies, desc: "Отечественное кино"}
- {id: 66, cat: TV/Foreign, desc: "Зарубежные сериалы"}
- {id: 129, cat: TV, desc: "Отечественные сериалы"}
- {id: 67, cat: TV/Documentary, desc: "Документальные фильмы"}
- {id: 68, cat: TV, desc: "ТВ-передачи"}
- {id: 69, cat: TV/Sport, desc: "Спорт"}
- {id: 70, cat: Movies/Other, desc: "Трейлеры"}
- {id: 71, cat: Audio/Video, desc: "Театр и музыка"}
- {id: 113, cat: TV/Other, desc: "Юмор"}
- {id: 140, cat: TV/Foreign, desc: "Видео без русского перевода"}
- {id: 119, cat: Movies, desc: "Другое"}
# Music
- {id: 2, cat: Audio/MP3, desc: "Музыка"}
- {id: 73, cat: Audio/MP3, desc: "Поп музыка"}
- {id: 74, cat: Audio/MP3, desc: "Джаз и Блюз"}
- {id: 75, cat: Audio/MP3, desc: "Классическая музыка"}
- {id: 76, cat: Audio/MP3, desc: "Рок-музыка"}
- {id: 83, cat: Audio/MP3, desc: "Электронная музыка"}
- {id: 86, cat: Audio/MP3, desc: "Этническая музыка (Фольклор)"}
- {id: 87, cat: Audio/MP3, desc: "Рэп, Хип-Хоп, R'n'B"}
- {id: 88, cat: Audio/MP3, desc: "NewAge, Relax"}
- {id: 89, cat: Audio/MP3, desc: "Шансон, Авторская и Военная песня"}
- {id: 90, cat: Audio/MP3, desc: "Музыка других жанров"}
- {id: 91, cat: Audio/MP3, desc: "Саундтреки, Караоке и Минусовки"}
- {id: 122, cat: Audio/MP3, desc: "Мюзиклы и рок-оперы"}
# Music (lossless)
- {id: 8, cat: Audio/Lossless, desc: "Музыка (lossless)"}
- {id: 93, cat: Audio/Lossless, desc: "Поп музыка"}
- {id: 94, cat: Audio/Lossless, desc: "Джаз и Блюз"}
- {id: 95, cat: Audio/Lossless, desc: "Классическая музыка"}
- {id: 96, cat: Audio/Lossless, desc: "Рок-музыка"}
- {id: 103, cat: Audio/Lossless, desc: "Электронная музыка"}
- {id: 106, cat: Audio/Lossless, desc: "Этническая музыка (Фольклор)"}
- {id: 107, cat: Audio/Lossless, desc: "Рэп, Хип-Хоп, R'n'B"}
- {id: 108, cat: Audio/Lossless, desc: "NewAge, Relax"}
- {id: 109, cat: Audio/Lossless, desc: "Шансон, Авторская и Военная песня"}
- {id: 110, cat: Audio/Lossless, desc: "Музыка других жанров"}
- {id: 111, cat: Audio/Lossless, desc: "Саундтреки, Караоке и Минусовки"}
- {id: 123, cat: Audio/Lossless, desc: "Мюзиклы и рок-оперы"}
# Games
- {id: 3, cat: PC/Games, desc: "Игры"}
- {id: 23, cat: PC/Games, desc: "PC"}
- {id: 24, cat: Console/XBox, desc: "XBox"}
- {id: 25, cat: Console/XBox 360, desc: "XBox360"}
- {id: 26, cat: Console/PS3, desc: "PS2"}
- {id: 27, cat: Console/PS3, desc: "PS3"}
- {id: 28, cat: Console/PS Vita, desc: "PSP, PSVita"}
- {id: 29, cat: Console/PS4, desc: "PS4"}
- {id: 32, cat: PC/Games, desc: "Другие"}
# Software
- {id: 7, cat: PC/0day, desc: "Софт"}
- {id: 33, cat: PC/ISO, desc: "ОС"}
- {id: 34, cat: PC/0day, desc: "Офисные приложения"}
- {id: 35, cat: PC/0day, desc: "Мультимедиа"}
- {id: 36, cat: PC/0day, desc: "Web &amp; программирование"}
- {id: 37, cat: PC/0day, desc: "Системы проектирования и моделирования"}
- {id: 38, cat: PC/0day, desc: "Бизнес-системы"}
- {id: 39, cat: PC/0day, desc: "Графика и 3D"}
- {id: 41, cat: PC/0day, desc: "Интернет и Безопасность"}
- {id: 42, cat: PC/0day, desc: "Утилиты"}
- {id: 43, cat: PC/0day, desc: "Драйвера"}
- {id: 124, cat: PC, desc: "Обучающие курсы"}
- {id: 117, cat: PC, desc: "Другое"}
# Cartoons
- {id: 5, cat: Movies/Other, desc: "Мультфильмы"}
- {id: 53, cat: Movies/Other, desc: "Полнометражные"}
- {id: 54, cat: Movies/Other, desc: "Короткометражные"}
- {id: 130, cat: TV/Other, desc: "Сериалы"}
- {id: 56, cat: Movies/Other, desc: "Другие"}
# Anime
- {id: 131, cat: TV/Anime, desc: "Аниме"}
- {id: 4, cat: Movies/Other, desc: "Основной"}
- {id: 132, cat: TV/Anime, desc: "Основной (DVD/HD/BD)"}
- {id: 133, cat: TV/Anime, desc: "Сериалы (OAV/OVA/ONA)"}
- {id: 134, cat: TV/Anime, desc: "Сериалы (OAV/OVA/ONA)(DVD/HD/BD)"}
- {id: 147, cat: TV/Anime, desc: "Аниме без русской озвучки"}
- {id: 135, cat: TV/Anime, desc: "Клипы (AMV)"}
- {id: 61, cat: Books/Comics, desc: "Манга, картинки и прочее"}
- {id: 136, cat: Audio, desc: "OST"}
# Books
- {id: 6, cat: Books, desc: "Книги"}
- {id: 44, cat: Books/EBook, desc: "Художественные"}
- {id: 45, cat: Books/Technical, desc: "Научно-популярные"}
- {id: 46, cat: Books/Technical, desc: "Обучающие"}
- {id: 47, cat: Books/Mags, desc: "Журналы"}
- {id: 48, cat: Books/Other, desc: "Другие"}
- {id: 126, cat: Books/Other, desc: "На иностранных языках"}
- {id: 92, cat: Books/Other, desc: "Ноты и музыкальная литература"}
# Audiobooks
- {id: 9, cat: Audio/Audiobook, desc: "Аудиокниги"}
- {id: 49, cat: Audio/Audiobook, desc: "Художественные"}
- {id: 50, cat: Audio/Audiobook, desc: "Научно-популярные"}
- {id: 51, cat: Audio/Audiobook, desc: "Обучающие"}
- {id: 148, cat: Audio/Audiobook, desc: "Для мобильных устройств"}
- {id: 52, cat: Audio/Audiobook, desc: "Другие"}
# Imagery
- {id: 11, cat: Other, desc: "Изображения"}
- {id: 57, cat: Other, desc: "Клипарты"}
- {id: 58, cat: Other, desc: "Обложки"}
- {id: 59, cat: Other, desc: "Обои рабочего стола"}
- {id: 60, cat: Other, desc: "Комиксы"}
- {id: 127, cat: Other, desc: "Фотографии"}
- {id: 62, cat: Other, desc: "Другие"}
# Everything for mobile
- {id: 141, cat: PC/Mobile-Other, desc: "Всё для мобильных"}
- {id: 142, cat: Movies/Other, desc: "Видео"}
- {id: 138, cat: PC/Mobile-Android, desc: "Игры Android"}
- {id: 137, cat: PC/Mobile-iOS, desc: "Игры iPhone/iPod/iPad"}
- {id: 30, cat: PC/Mobile-Other, desc: "Игры для других платформ"}
- {id: 143, cat: PC/Mobile-Android, desc: "Софт Android"}
- {id: 144, cat: PC/Mobile-iOS, desc: "Софт iPhone/iPod/iPad"}
- {id: 114, cat: PC/Mobile-Other, desc: "Софт для других платформ"}
- {id: 146, cat: PC/Mobile-Other, desc: "Рингтоны"}
# 3D видео (3D video) categories are repeats of Видео (Video) categories
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q, album, artist]
book-search: [q]
settings:
- name: striprussian
type: checkbox
label: Strip Russian Letters
default: false
- name: addrussian
type: checkbox
label: Add RUSSIAN to end of all titles to improve language detection by Sonarr and Radarr. Will cause English-only results to be misidentified.
default: false
- name: sort
type: select
label: Sort requested from site
default: 3
options:
3: created
5: seeders
4: size
2: name
- name: type
type: select
label: Order requested from site
default: 2
options:
2: desc
1: asc
download:
infohash:
hash:
selector: tr.rknblock > td.lista
title:
selector: a[href^="/torrent/"]
attribute: title
filters:
- name: validfilename
search:
paths:
# https://seedoff.zannn.top/search?page=ajax&search=&active=0&category=0&options=0&recommend=0&have_quality=0&types_search=0&period=0&genres=&order=3&by=2
- path: search
inputs:
page: ajax
search: "{{ .Keywords }}"
# 0 all, 1 active, 2 dead
active: 0
category: 0
# 0 name, 1 name & desc
options: 0
recommend: 0
have_quality: 0
# 0 whole word, 1 partial word
types_search: 0
period: 0
genres: ""
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"
keywordsfilters:
- name: re_replace # S01 to 1
args: ["(?i)\\bS0*(\\d+)\\b", "$1"]
- name: re_replace # S01E01 to 1 1
args: ["(?i)\\bS0*(\\d+)E0*(\\d+)\\b", "$1 $2"]
rows:
selector: table.lista tbody tr:has(a[href^="/torrent/"])
fields:
category:
selector: a[href^="/index.php?page=torrents&category="]
attribute: href
filters:
- name: querystring
args: category
title:
selector: a[href^="/torrent/"]
filters:
- name: replace
args: ["Кураж-Бамбей", "kurazh"]
- name: replace
args: ["Кубик в Кубе", "Kubik"]
- name: replace
args: ["Кравец", "Kravec"]
- name: replace
args: ["Пифагор", "Pifagor"]
- name: replace
args: ["Невафильм", "Nevafilm"]
- name: replace
args: ["Лицензия", "Lic"]
- name: replace
args: ["селезень", "selezen"]
- name: re_replace
args: ["\\((\\d+-*\\d*)\\s+[Сс]езоны?:?\\s+(?:(\\d+-*\\d*)\\s+(?:[Сс]ери[ийя]|выпуски?(?:ов)?)(?:.*\\d+)?)?\\)(.*)\\s+((?:[12][0-9]{3}-?){1,})(.*)", "$3 - S$1E$2 - $4 $5"]
- name: re_replace
args: ["\\((?:(\\d+-*\\d*)\\s+(?:[Сс]ери[ийя]|выпуски?(?:ов)?)(?:.*\\d+)?)?\\)(.*)\\s+((?:[12][0-9]{3}-?){1,})(.*)", "$2 - E$1 - $3 $4"]
- name: re_replace
args: ["(\\([А-Яа-яЁё\\W]+\\))|(^[А-Яа-яЁё\\W\\d]+\\/ ((?:[12][0-9]{3}-?){1,}))|(^[А-Яа-яЁё\\W\\d]+\\/ )|([а-яА-ЯЁё \\-]+,+)|([а-яА-ЯЁё]+)", "{{ if .Config.striprussian }}$3{{ else }}$0{{ end }}"]
- name: append
args: "{{ if .Config.addrussian }} - RUSSIAN{{ else }}{{ end }}"
- name: re_replace
args: ["(.*)(Blu-Ray\\s*(?:Disc|EUR|CEE)?)\\s*(\\d+[pi])", "$1 BR-DISK $3"]
- name: replace
args: ["-Rip", "Rip"]
- name: replace
args: ["WEB-DL", "WEBDL"]
- name: replace
args: ["WEBDLRip", "WEBDL"]
- name: replace
args: ["HDTVRip", "HDTV"]
details:
selector: a[href^="/torrent/"]
attribute: href
download:
selector: a[href^="/torrent/"]
attribute: href
poster:
selector: a[href^="/torrent/"]
attribute: onmouseover
filters:
- name: regexp
args: "src=(.*?) width"
date:
selector: td:nth-last-child(4)
filters:
# 26.04.2022
- name: append
args: " +03:00" # MSK
- name: dateparse
args: "02.01.2006 -07:00"
size:
selector: td:nth-last-child(5)
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
grabs:
selector: td:nth-last-child(1)
filters:
- name: replace
args: ["---", "0"]
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -7,11 +7,11 @@ type: semi-private
encoding: UTF-8
links:
- https://use.selezen.club/
- https://mel.selezen.net/
- https://www.selezen.net/
- https://selezen.org/
legacylinks:
- https://www.selezen.site/
- https://www.selezen.net/
- https://mel.selezen.net/
- https://s1.selezen.site/
caps:

View File

@@ -57,7 +57,6 @@ caps:
modes:
search: [q]
tv-search: [q]
search:
paths:

View File

@@ -70,6 +70,12 @@ search:
args: ["(.+?)in\\s(.+?)", "$2"]
- name: replace
args: ["Freeleech", ""]
- name: replace
args: ["Seeding", ""]
- name: replace
args: ["Downloaded", ""]
- name: replace
args: ["Leeching", ""]
- name: trim
title:
selector: a[href*="/view/torrent.php?hash="]

View File

@@ -7,9 +7,6 @@ type: private
encoding: UTF-8
links:
- https://tasmanit.es/
certificates:
- 23C30AC9655A8A7351A549538062B8C6B0D01A78 # expired 24 Jan 2022
- 4325e8f1f13f6074f2bed6a6186fe183791ab32d # expired 1 March 2022
caps:
categorymappings:
@@ -17,7 +14,7 @@ caps:
- {id: 23, cat: TV, desc: "AU-AUTOGEN"}
- {id: 8, cat: TV, desc: "Australian Comedy"}
- {id: 18, cat: TV, desc: "Australian Crime Shows"}
- {id: 14, cat: TV, desc: "Australian Documentaries"}
- {id: 14, cat: TV/Documentary, desc: "Australian Documentaries"}
- {id: 9, cat: TV, desc: "Australian Dramas"}
- {id: 10, cat: TV, desc: "Australian Game/Quiz Shows"}
- {id: 12, cat: TV, desc: "Australian Kids Shows"}
@@ -29,12 +26,13 @@ caps:
- {id: 17, cat: TV, desc: "Australian Science Shows"}
- {id: 80, cat: TV, desc: "Australian Soaps"}
- {id: 16, cat: TV, desc: "Australian Talkshows"}
- {id: 22, cat: TV, desc: "Australian Movies"}
- {id: 22, cat: Movies, desc: "Australian Movies"}
- {id: 82, cat: Audio, desc: "Australian Podcasts"}
- {id: 73, cat: TV, desc: "New Zealand TV"}
- {id: 61, cat: TV, desc: "NZ-AUTOGEN"}
- {id: 47, cat: TV, desc: "New Zealand Comedy"}
- {id: 58, cat: TV, desc: "New Zealand Crime Shows"}
- {id: 53, cat: TV, desc: "New Zealand Documentaries"}
- {id: 53, cat: TV/Documentary, desc: "New Zealand Documentaries"}
- {id: 48, cat: TV, desc: "New Zealand Dramas"}
- {id: 49, cat: TV, desc: "New Zealand Game/Quiz Shows"}
- {id: 51, cat: TV, desc: "New Zealand Kids Shows"}
@@ -45,15 +43,16 @@ caps:
- {id: 54, cat: TV, desc: "New Zealand Science Shows"}
- {id: 81, cat: TV, desc: "New Zealand Soaps"}
- {id: 57, cat: TV, desc: "New Zealand Talkshows"}
- {id: 59, cat: TV, desc: "New Zealand Movies"}
- {id: 59, cat: Movies, desc: "New Zealand Movies"}
- {id: 36, cat: TV, desc: "New Zealand TV"}
- {id: 55, cat: TV, desc: "SATV - All"}
- {id: 55, cat: TV, desc: "South African TV"}
- {id: 7, cat: TV/Other, desc: "New Zealand TV Other"}
- {id: 7, cat: TV/Other, desc: "TV Other"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
login:
path: takelogin.php
@@ -116,9 +115,7 @@ search:
date:
selector: td:nth-child(2)
downloadvolumefactor:
case:
"*": 1
text: 1
uploadvolumefactor:
case:
"*": 1
text: 1
# TS Special Edition

View File

@@ -113,6 +113,13 @@ settings:
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
- 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>"
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -127,6 +134,9 @@ login:
selector: a[href="/account/"]
search:
headers:
User-Agent: ["{{ .Config.useragent }}"]
paths:
# 25 results per page
- path: "torrents/?filename={{ .Keywords }}&freeleech={{ if .Config.freeleech }}1{{ else }}{{ end }}"

View File

@@ -0,0 +1,195 @@
---
id: tmghub
name: TmGHuB
description: "TmGHuB (TH) is an INDIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: en-US
type: private
encoding: UTF-8
links:
- https://tmghub.org/
caps:
categorymappings:
#Movies
- {id: 29, cat: Movies, desc: "Movie Packs"}
- {id: 30, cat: Movies, desc: "V.I.P"}
- {id: 13, cat: Movies/BluRay, desc: "BD-25/BD-50"}
- {id: 32, cat: Movies/BluRay, desc: "1080p BluRay"}
- {id: 33, cat: Movies/HD, desc: "BDRip / 720p"}
- {id: 11, cat: Movies/DVD, desc: "DVD-R/DVD-DL"}
- {id: 22, cat: Movies/DVD, desc: "Encoded DVDs"}
- {id: 17, cat: Movies/WEB-DL, desc: "WEB-DL/DTH"}
- {id: 14, cat: Movies/DVD, desc: "DVD-Rips"}
- {id: 15, cat: Movies/HD, desc: "DTH/HD-Rip"}
- {id: 20, cat: Movies/SD, desc: "VHS/TV-Rip"}
- {id: 21, cat: Movies, desc: "Video CDs"}
- {id: 19, cat: Movies, desc: "Pre Releases "}
- {id: 42, cat: Movies, desc: "Dubbed Movies"}
- {id: 44, cat: Movies, desc: "TmG Special"}
#Music
- {id: 27, cat: Audio, desc: "MP3/FLAC/WAV"}
- {id: 23, cat: Audio/Video, desc: "Music Videos"}
- {id: 37, cat: Audio, desc: "Music Packs"}
#Television
- {id: 40, cat: TV, desc: "TV Shows"}
- {id: 28, cat: TV, desc: "TV Series"}
- {id: 25, cat: TV/Sport, desc: "Sports"}
- {id: 26, cat: TV/Documentary, desc: "Documentary"}
#Books
- {id: 38, cat: Books/EBook, desc: "E-Books"}
- {id: 34, cat: Books, desc: "Guides / Tutorials"}
#Others
- {id: 5, cat: TV/Anime, desc: "Anime"}
- {id: 39, cat: Other, desc: "Religious"}
- {id: 43, cat: Other, desc: "Other"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- 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. Default is 30.
- name: info_grabs
type: info
label: Search results
default: Note that torrents that you have previously downloaded will not be included in results.<br /> You are not allowed to download a torrent twice without informing admin.
- name: thankyou
type: text
label: Thank You Comment
- name: info
type: info
label: Thank you comment
default: This site requires you to leave a Thank You comment before you can download.<br /> Enter your personalised comment above, at least 8 characters long.
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 3
options:
3: created
5: seeders
4: size
2: title
- name: type
type: select
label: Order requested from site
default: 2
options:
2: desc
1: asc
login:
path: index.php?page=login
method: form
form: form[action^="index.php?page=login"]
inputs:
uid: "{{ .Config.username }}"
pwd: "{{ .Config.password }}"
error:
- selector: tr td span[style="color:#FF0000;"]
test:
path: index.php
selector: a[href="logout.php"]
download:
before:
path: "{{ .DownloadUri.AbsoluteUri }}"
method: post
inputs:
comment: "{{ .Config.thankyou }}"
confirm: Confirm
selectors:
- selector: td a[href^="download.php"]
attribute: href
search:
paths:
# https://tmghub.org/index.php?page=torrents&search=&category=29;13;32;33;11;22;17;14;15&uploader=0&options=0&active=0&gold=0&langsel=-1
- path: index.php
inputs:
page: torrents
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
category: "{{ if .Categories }}{{ range .Categories }}{{.}};{{end}}{{ else }}0{{ end }}"
uploader: 0
# 0=title, 1=title&descr, 2=descr, 3 imdbid
options: "{{ if .Query.IMDBID }}3{{ else }}0{{ end }}"
# 0 all, 1 activeonly, 2 deadonly
active: 0
# 0 all, 1 classic, 2 silver, 3 gold, 4 silver&gold
gold: "{{ if .Config.freeleech }}3{{ else }}0{{ end }}"
# -1 all, 0 unk, 1 eng, etc
langsel: -1
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"
rows:
selector: "table#tottest[width=\"100%\"] tr:has(a[href^=\"index.php?page=torrent-details\"]):not(:has(img[title=\"Allready Grabbed !!\"]))"
fields:
category:
selector: td a[href^="index.php?page=torrents&category="]
attribute: href
filters:
- name: querystring
args: category
title:
selector: td a[href^="index.php?page=torrent-details"]
details:
selector: td a[href^="index.php?page=torrent-details"]
attribute: href
download:
selector: td a[href^="index.php?page=torrent-details"]
attribute: href
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
poster:
selector: td a[href^="index.php?page=torrent-details"]
attribute: onmouseover
filters:
- name: regexp
args: "src=(.+?) width"
date:
# 6 weeks ago
selector: td a[href^="index.php?page=torrent-details"]
attribute: onmouseover
filters:
- name: regexp
args: "Added\\:(\\d+ \\w+ \\w+)<"
- name: timeago
size:
selector: td:nth-child(5)
grabs:
selector: td:nth-child(6)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img[src="gold/gold.gif"]: 0
img[src="gold/silver.gif"]: 0.5
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 0.7
minimumseedtime:
# 2 hours (as seconds = 2 x 60 x 60)
text: 7200
# xbtit

View File

@@ -176,8 +176,6 @@ search:
filters:
- name: regexp
args: "Uploaded (.+?) by"
- name: replace
args: [" at ", " "]
- name: fuzzytime
date_unix:
# within the hour (unix)

View File

@@ -40,7 +40,6 @@ caps:
- {id: Logiciels, cat: PC, desc: "Software"}
- {id: Jeux-PC, cat: PC/Games, desc: "PC Games"}
- {id: Jeux-Consoles, cat: Console/XBox 360, desc: "Console Games"}
- {id: Porno, cat: XXX, desc: "XXX"}
modes:
search: [q]

View File

@@ -7,12 +7,8 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentqq140.com/
- https://torrentqq141.com/
legacylinks:
- https://torrentqq121.com/
- https://torrentqq122.com/
- https://torrentqq123.com/
- https://torrentqq125.com/
- https://torrentqq126.com/
- https://torrentqq127.com/
- https://torrentqq128.com/
@@ -27,6 +23,7 @@ legacylinks:
- https://torrentqq137.com/
- https://torrentqq138.com/
- https://torrentqq139.com/
- https://torrentqq140.com/
caps:
categorymappings:

View File

@@ -7,11 +7,8 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentsir55.com/
- https://torrentsir56.com/
legacylinks:
- https://torrentsir43.com/
- https://torrentsir44.com/
- https://torrentsir45.com/
- https://torrentsir46.com/
- https://torrentsir47.com/
- https://torrentsir48.com/
@@ -24,6 +21,9 @@ legacylinks:
- http://torrentsir53.com/
- https://torrentsir54.com/
- http://torrentsir54.com/
- https://torrentsir55.com/
- http://torrentsir55.com/
- http://torrentsir56.com/
caps:
categorymappings:

View File

@@ -7,12 +7,10 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentview57.com/
- https://torrentview60.com/
legacylinks:
- https://torrentview.net/
- https://torrentview.co/
- https://torrentview36.com/
- https://torrentview37.com/
- https://torrentview38.com/
- https://torrentview39.com/
- https://torrentview40.com/
@@ -26,6 +24,7 @@ legacylinks:
- https://torrentview50.com/
- https://torrentview52.com/
- https://torrentview53.com/
- https://torrentview57.com/
caps:
categorymappings:

View File

@@ -7,10 +7,8 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentwiz41.com/
- https://torrentwiz42.com/
legacylinks:
- https://torrentwiz25.me/
- https://torrentwiz26.me/
- https://torrentwiz27.me/
- https://torrentwiz28.me/
- https://torrentwiz29.me/
@@ -25,6 +23,7 @@ legacylinks:
- https://torrentwiz38.com/
- https://torrentwiz39.com/
- https://torrentwiz40.com/
- https://torrentwiz41.com/
caps:
categorymappings:

View File

@@ -14,35 +14,27 @@ legacylinks:
caps:
categorymappings:
- {id: 36, cat: Movies, desc: "Film"}
- {id: 76, cat: Movies, desc: "Film Almanca [Tek Dil!]"}
- {id: 78, cat: Movies, desc: "Film İngilizce [NL Altyazı!]"}
- {id: 76, cat: Movies, desc: "Film Yabancı Dil - Altyazısız"}
- {id: 59, cat: Movies, desc: "Film Türk Filmi"}
- {id: 61, cat: Movies/3D, desc: "Film 3D"}
- {id: 18, cat: Movies, desc: "Anime - Çizgi"}
- {id: 20, cat: Movies, desc: "Film Boxset"}
- {id: 22, cat: Movies/DVD, desc: "Film DVD Disk"}
- {id: 24, cat: Movies/BluRay, desc: "Film Bluray Disk"}
- {id: 26, cat: Movies/UHD, desc: "4Film K UHD Disk"}
- {id: 24, cat: Movies/BluRay, desc: "Film 4K/1080P Bluray Disk"}
- {id: 28, cat: Movies/HD, desc: "Film X265"}
- {id: 30, cat: Movies/HD, desc: "Film X264"}
- {id: 69, cat: Movies/WEB-DL, desc: "Film H264 WEB-DL"}
- {id: 63, cat: Movies/SD, desc: "Film XviD"}
- {id: 63, cat: Movies/SD, desc: "Film 3D/DVD/XviD"}
- {id: 51, cat: Other, desc: "Diğer"}
- {id: 62, cat: Other, desc: "Diğer Eğitim"}
- {id: 52, cat: Other, desc: "Diğer Belgesel"}
- {id: 53, cat: Other, desc: "Diğer Dini Yayınlar"}
- {id: 54, cat: TV/Sport, desc: "Spor"}
- {id: 55, cat: Other, desc: "Diğer Duvar Kağıtları"}
- {id: 56, cat: Other, desc: "Diğer Her Şey"}
- {id: 56, cat: Other, desc: "Diğer Her Şey"}
- {id: 65, cat: Books/EBook, desc: "E-Kitap"}
- {id: 2, cat: Console, desc: "Oyun"}
- {id: 46, cat: Console, desc: "Oyun PC"}
- {id: 3, cat: Console, desc: "Oyun Sony PS"}
- {id: 4, cat: Console, desc: "Oyun Wii"}
- {id: 14, cat: Console, desc: "Oyun XboX"}
- {id: 16, cat: Console, desc: "Oyun Nintendo"}
- {id: 16, cat: Console, desc: "Oyun Konsol"}
- {id: 35, cat: TV, desc: "Netflix"}
- {id: 41, cat: TV, desc: "Netflix Anime - Çizgi"}
- {id: 41, cat: TV, desc: "Netflix Animasyon"}
- {id: 39, cat: TV, desc: "Netflix Film"}
- {id: 38, cat: TV, desc: "Netflix Dizi"}
- {id: 40, cat: TV, desc: "Netflix Belgesel"}
@@ -55,17 +47,16 @@ caps:
- {id: 88, cat: TV, desc: "Dijital Platform TV+"}
- {id: 89, cat: TV, desc: "Dijital Platform Diger"}
- {id: 90, cat: TV, desc: "Dijital Platform MUBi"}
- {id: 91, cat: TV, desc: "Dijital Platform Vodafone"}
- {id: 94, cat: TV, desc: "Dijital Platform Apple TV+"}
- {id: 95, cat: TV, desc: "Dijital Platform DSmart GO"}
- {id: 94, cat: TV, desc: "Dijital Platform ATVP+"}
- {id: 98, cat: TV, desc: "Dijital Platform DSNP"}
- {id: 31, cat: TV, desc: "Dizi"}
- {id: 32, cat: TV, desc: "Dizi Yerli"}
- {id: 33, cat: TV, desc: "Dizi Yabancı Orjinal Dil / Tr Dublaj "}
- {id: 33, cat: TV, desc: "Dizi Yabancı / TR Dublaj"}
- {id: 34, cat: TV, desc: "Dizi Boxset"}
- {id: 42, cat: Audio, desc: "Müzik"}
- {id: 43, cat: Audio, desc: "Müzik Türkçe"}
- {id: 43, cat: Audio, desc: "Müzik Yerli"}
- {id: 44, cat: Audio, desc: "Müzik Yabancı"}
- {id: 45, cat: Audio, desc: "Müzik Seri Albüm - Diskografi"}
- {id: 45, cat: Audio, desc: "Müzik Diskografi"}
- {id: 47, cat: PC, desc: "Programlar"}
- {id: 48, cat: PC, desc: "Programlar Windows"}
- {id: 49, cat: PC, desc: "Programlar MaC"}
@@ -167,8 +158,6 @@ search:
filters:
- name: regexp
args: "Uploaded (.+?) by"
- name: replace
args: [" at ", " "]
- name: fuzzytime
date_unix:
# within the hour (unix)

View File

@@ -190,9 +190,9 @@ search:
- name: replace
args: [": ", ":"]
- name: replace
args: ["Ayer a las", "Yesterday"]
args: ["Ayer a las", "Yesterday at"]
- name: replace
args: ["Hoy en", "Today"]
args: ["Hoy en", "Today at"]
- name: replace
args: ["Lunes a", "Monday at"]
- name: replace
@@ -209,7 +209,7 @@ search:
args: ["Sábado a", "Saturday at"]
- name: replace
args: ["Domingo a", "Sunday at"]
- name: fuzzytime # eg: Yesterday 14:22 or Monday at 14:22
- name: fuzzytime # eg: Yesterday at 14:22 or Monday at 14:22
date3:
selector: td.torrent_name:contains("Uploaded"):contains("-"), .torrentOwner:contains("Uploaded"):contains("-")
optional: true
@@ -226,11 +226,7 @@ search:
filters:
- name: regexp
args: "(?<=Uploaded )(.*)(?= by)"
- name: replace
args: ["Yesterday at", "Yesterday"]
- name: replace
args: ["Today at", "Today"]
- name: fuzzytime # eg: Yesterday 14:22 or Monday at 14:22
- name: fuzzytime # eg: Yesterday at 14:22 or Monday at 14:22
date:
text: "{{ if or .Result.date1 .Result.date2 .Result.date3 .Result.date4 }}{{ or .Result.date1 .Result.date2 .Result.date3 .Result.date4 }}{{ else }}now{{ end }}"
size:

View File

@@ -1,7 +1,7 @@
---
id: xiteme
name: x-ite.me
description: "Tracker for LGBTQ movies, TV, books, magazines, anime, PC and XXX."
description: "Tracker for LGBTQ movies, TV, books, magazines, anime, PC and 3X."
language: en-US
type: private
encoding: UTF-8

View File

@@ -119,9 +119,10 @@ search:
category: "{{ if .Categories }}{{ range .Categories }}{{.}}+{{end}}{{ else }}{{ end }}"
search: "{{ if .Query.TMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
tmdbid: "{{ .Query.TMDBID }}"
freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
$raw: "{{ if .Config.freeleech }}&freeleech=1{{ else }}{{ end }}"
response:
type: json
noResultsMessage: '"descr": "no result"'
rows:
selector: torrents

View File

@@ -27,7 +27,6 @@ caps:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
settings:
- name: username

View File

@@ -44,7 +44,7 @@ namespace Jackett.Common.Indexers
},
MovieSearchParams = new List<MovieSearchParam>
{
MovieSearchParam.Q
MovieSearchParam.Q, MovieSearchParam.ImdbId, MovieSearchParam.TmdbId
}
},
configService: configService,
@@ -91,21 +91,26 @@ namespace Jackett.Common.Indexers
{
var releases = new List<ReleaseInfo>();
// TODO: IMDB search is available but it requires to parse the details page
var qc = new NameValueCollection
{
{ "order_by", "time" },
{ "order_way", "desc" },
{ "action", "basic" },
{ "searchsubmit", "1" },
{ "searchstr", query.IsImdbQuery ? query.ImdbID : query.GetQueryString() }
{ "searchsubmit", "1" }
};
if (query.IsImdbQuery)
qc.Add("imdb", query.ImdbID);
else if (query.IsTmdbQuery)
qc.Add("tmdb", query.TmdbID.ToString());
else
qc.Add("searchstr", query.GetQueryString());
var catList = MapTorznabCapsToTrackers(query);
foreach (var cat in catList)
qc.Add($"filter_cat[{cat}]", "1");
// remove . as not used in titles
// remove . as not used in titles
var searchUrl = BrowseUrl + "?" + qc.GetQueryString().Replace(".", " ");
var results = await RequestWithCookiesAsync(searchUrl);
try
@@ -147,10 +152,12 @@ namespace Jackett.Common.Indexers
}
};
// TODO: TMDb is also available
var qImdb = row.QuerySelector("a[href^=\"https://www.imdb.com\"]");
var imdb = qImdb != null ? ParseUtil.GetImdbID(qImdb.GetAttribute("href").Split('/').Last()) : null;
qImdb = row.QuerySelector("a[href^=\"https://www.themoviedb.org\"]");
var tmdb = qImdb != null ? ParseUtil.GetLongFromString(qImdb.GetAttribute("href").Split('/').Last()) : null;
var release = new ReleaseInfo
{
MinimumRatio = 1,
@@ -163,6 +170,7 @@ namespace Jackett.Common.Indexers
Details = details,
Guid = link,
Imdb = imdb,
TMDb = tmdb,
Poster = poster,
Seeders = seeders,
Peers = leechers + seeders,

View File

@@ -1,231 +0,0 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using AngleSharp.Dom;
using AngleSharp.Html.Parser;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig;
using Jackett.Common.Services.Interfaces;
using Jackett.Common.Utils;
using Jackett.Common.Utils.Clients;
using Newtonsoft.Json.Linq;
using NLog;
namespace Jackett.Common.Indexers
{
// To comply with the rules for this tracker, only the acronym is used and no publicly displayed URLs to the site.
[ExcludeFromCodeCoverage]
public class BB : BaseWebIndexer
{
private string BaseUrl => StringUtil.FromBase64("aHR0cHM6Ly9iYWNvbmJpdHMub3JnLw==");
private Uri BaseUri => new Uri(BaseUrl);
private string LoginUrl => BaseUri + "login.php";
private string SearchUrl => BaseUri + "torrents.php?searchtags=&tags_type=0&order_by=s3&order_way=desc&disablegrouping=1&";
private new ConfigurationDataBasicLogin configData
{
get => (ConfigurationDataBasicLogin)base.configData;
set => base.configData = value;
}
public BB(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "bb",
name: "bB",
description: "bB is a Private Torrent Tracker for 0DAY / GENERAL",
link: StringUtil.FromBase64("aHR0cHM6Ly9iYWNvbmJpdHMub3JnLw=="),
caps: new TorznabCapabilities
{
TvSearchParams = new List<TvSearchParam>
{
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep
},
MovieSearchParams = new List<MovieSearchParam>
{
MovieSearchParam.Q
},
MusicSearchParams = new List<MusicSearchParam>
{
MusicSearchParam.Q
},
BookSearchParams = new List<BookSearchParam>
{
BookSearchParam.Q
}
},
configService: configService,
client: w,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.UTF8;
Language = "en-US";
Type = "private";
AddCategoryMapping(1, TorznabCatType.Audio);
AddCategoryMapping(1, TorznabCatType.AudioMP3);
AddCategoryMapping(1, TorznabCatType.AudioLossless);
AddCategoryMapping(2, TorznabCatType.PC);
AddCategoryMapping(3, TorznabCatType.BooksEBook);
AddCategoryMapping(4, TorznabCatType.AudioAudiobook);
AddCategoryMapping(5, TorznabCatType.Other);
AddCategoryMapping(6, TorznabCatType.BooksMags);
AddCategoryMapping(7, TorznabCatType.BooksComics);
AddCategoryMapping(8, TorznabCatType.TVAnime);
AddCategoryMapping(9, TorznabCatType.Movies);
AddCategoryMapping(10, TorznabCatType.TVHD);
AddCategoryMapping(10, TorznabCatType.TVSD);
AddCategoryMapping(10, TorznabCatType.TV);
AddCategoryMapping(11, TorznabCatType.PCGames);
AddCategoryMapping(12, TorznabCatType.Console);
AddCategoryMapping(13, TorznabCatType.Other);
AddCategoryMapping(14, TorznabCatType.Other);
}
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
{
LoadValuesFromJson(configJson);
var pairs = new Dictionary<string, string> {
{ "username", configData.Username.Value },
{ "password", configData.Password.Value },
{ "keeplogged", "1" },
{ "login", "Log In!" }
};
var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, SiteLink);
await ConfigureIfOK(response.Cookies, response.ContentString != null && response.ContentString.Contains("logout.php"), () =>
{
var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString);
var messageEl = dom.QuerySelectorAll("#loginform");
var messages = new List<string>();
for (var i = 0; i < 13; i++)
{
var child = messageEl[0].ChildNodes[i];
messages.Add(child.Text().Trim());
}
var message = string.Join(" ", messages);
throw new ExceptionWithConfigData(message, configData);
});
return IndexerConfigurationStatus.RequiresTesting;
}
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{
var releases = new List<ReleaseInfo>();
var searchStrings = new List<string>(new[] { query.GetQueryString() });
if (string.IsNullOrEmpty(query.Episode) && (query.Season > 0))
// Tracker naming rules: If query is for a whole season, "Season #" instead of "S##".
searchStrings.Add((query.SanitizedSearchTerm + " " + string.Format("\"Season {0}\"", query.Season)).Trim());
var categories = MapTorznabCapsToTrackers(query);
var request_urls = new List<string>();
foreach (var searchString in searchStrings)
{
var queryCollection = new NameValueCollection
{
{ "action", "basic" }
};
if (!string.IsNullOrWhiteSpace(searchString))
{
queryCollection.Add("searchstr", searchString);
}
foreach (var cat in categories)
{
queryCollection.Add("filter_cat[" + cat + "]", "1");
}
// remove . as not used in titles
request_urls.Add(SearchUrl + queryCollection.GetQueryString().Replace(".", " "));
}
var downloadTasksQuery = from url in request_urls select RequestWithCookiesAndRetryAsync(url);
var responses = await Task.WhenAll(downloadTasksQuery.ToArray());
for (var i = 0; i < searchStrings.Count(); i++)
{
var results = responses[i];
// Occasionally the cookies become invalid, login again if that happens
if (results.IsRedirect)
{
await ApplyConfiguration(null);
results = await RequestWithCookiesAndRetryAsync(request_urls[i]);
}
try
{
var parser = new HtmlParser();
var dom = parser.ParseDocument(results.ContentString);
var rows = dom.QuerySelectorAll("#torrent_table > tbody > tr.torrent");
foreach (var row in rows)
{
var release = new ReleaseInfo
{
MinimumRatio = 1,
MinimumSeedTime = 172800 // 48 hours
};
var catStr = row.Children[0].FirstElementChild.GetAttribute("href").Split(new[] { '[', ']' })[1];
release.Category = MapTrackerCatToNewznab(catStr);
var qDetails = row.Children[1].QuerySelector("a[title='View Torrent']");
release.Details = new Uri(BaseUri + qDetails.GetAttribute("href"));
release.Guid = release.Details;
var qDownload = row.Children[1].QuerySelector("a[title='Download']");
release.Link = new Uri(BaseUri + qDownload.GetAttribute("href"));
var dateStr = row.Children[3].TextContent.Trim().Replace(" and", "");
release.PublishDate = DateTimeUtil.FromTimeAgo(dateStr);
var sizeStr = row.Children[4].TextContent;
release.Size = ReleaseInfo.GetBytes(sizeStr);
release.Files = ParseUtil.CoerceInt(row.Children[2].TextContent.Trim());
release.Seeders = ParseUtil.CoerceInt(row.Children[7].TextContent.Trim());
release.Peers = ParseUtil.CoerceInt(row.Children[8].TextContent.Trim()) + release.Seeders;
var grabs = row.QuerySelector("td:nth-child(6)").TextContent;
release.Grabs = ParseUtil.CoerceInt(grabs);
if (row.QuerySelector("strong:contains(\"Freeleech!\")") != null)
release.DownloadVolumeFactor = 0;
else
release.DownloadVolumeFactor = 1;
release.UploadVolumeFactor = 1;
var title = row.QuerySelector("td:nth-child(2)");
foreach (var element in title.QuerySelectorAll("span, strong, div, br"))
element.Remove();
release.Title = ParseUtil.NormalizeMultiSpaces(title.TextContent.Replace(" - ]", "]"));
if (catStr == "10") //change "Season #" to "S##" for TV shows
release.Title = Regex.Replace(release.Title, @"Season (\d+)",
m => string.Format("S{0:00}", int.Parse(m.Groups[1].Value)));
releases.Add(release);
}
}
catch (Exception ex)
{
OnParseError(results.ContentString, ex);
}
}
return releases;
}
}
}

View File

@@ -109,36 +109,6 @@ namespace Jackett.Common.Indexers
public virtual void SaveConfig() => configurationService.Save(this as IIndexer, configData.ToJson(protectionService, forDisplay: false));
protected void LoadLegacyCookieConfig(JToken jsonConfig)
{
var legacyCookieHeader = (string)jsonConfig["cookie_header"];
if (!string.IsNullOrEmpty(legacyCookieHeader))
{
CookieHeader = legacyCookieHeader;
}
else
{
// Legacy cookie key
var jcookies = jsonConfig["cookies"];
if (jcookies is JArray)
{
var array = (JArray)jcookies;
legacyCookieHeader = string.Empty;
for (var i = 0; i < array.Count; i++)
{
if (i != 0)
legacyCookieHeader += "; ";
legacyCookieHeader += array[i];
}
CookieHeader = legacyCookieHeader;
}
else if (jcookies != null)
{
CookieHeader = (string)jcookies;
}
}
}
public virtual void LoadValuesFromJson(JToken jsonConfig, bool useProtectionService = false)
{
IProtectionService ps = null;
@@ -171,78 +141,11 @@ namespace Jackett.Common.Indexers
{
if (jsonConfig is JArray)
{
if (!MigratedFromDPAPI(jsonConfig))
{
LoadValuesFromJson(jsonConfig, true);
IsConfigured = true;
}
}
// read and upgrade old settings file format
else if (jsonConfig is object)
{
LoadLegacyCookieConfig(jsonConfig);
SaveConfig();
LoadValuesFromJson(jsonConfig, true);
IsConfigured = true;
}
}
//TODO: Remove this section once users have moved off DPAPI
private bool MigratedFromDPAPI(JToken jsonConfig)
{
var isWindows = Environment.OSVersion.Platform == PlatformID.Win32NT;
if (!isWindows && DotNetCoreUtil.IsRunningOnDotNetCore)
{
// User isn't running Windows, but is running on .NET Core framework, no access to the DPAPI, so don't bother trying to migrate
return false;
}
LoadValuesFromJson(jsonConfig, false);
StringConfigurationItem passwordPropertyValue = null;
var passwordValue = "";
try
{
// try dynamic items first (e.g. all cardigann indexers)
passwordPropertyValue = (StringConfigurationItem)configData.GetDynamicByName("password");
if (passwordPropertyValue == null) // if there's no dynamic password try the static property
{
passwordPropertyValue = (StringConfigurationItem)configData.GetType().GetProperty("Password").GetValue(configData, null);
// protection is based on the item.Name value (property name might be different, example: Abnormal), so check the Name again
if (!string.Equals(passwordPropertyValue.Name, "password", StringComparison.InvariantCultureIgnoreCase))
{
logger.Debug($"Skipping non default password property (unencrpyted password) for [{Id}] while attempting migration");
return false;
}
}
passwordValue = passwordPropertyValue.Value;
}
catch (Exception)
{
logger.Debug($"Unable to source password for [{Id}] while attempting migration, likely a tracker without a password setting");
return false;
}
if (!string.IsNullOrEmpty(passwordValue))
{
try
{
protectionService.UnProtect(passwordValue);
//Password successfully unprotected using Microsoft.AspNetCore.DataProtection, no further action needed as we've already converted the password previously
return false;
}
catch (Exception ex)
{
if (ex.Message != "The provided payload cannot be decrypted because it was not protected with this protection provider.")
logger.Info($"Password could not be unprotected using Microsoft.AspNetCore.DataProtection - {Id} : " + ex);
}
}
return false;
else
logger.Warn("Some of the configuration files (.json) are in the old format. Please, update Jackett.");
}
protected async Task ConfigureIfOK(string cookies, bool isLoggedin, Func<Task> onError)
@@ -386,22 +289,26 @@ namespace Jackett.Common.Indexers
public virtual async Task<IndexerResult> ResultsForQuery(TorznabQuery query, bool isMetaIndexer)
{
if (!CanHandleQuery(query) || !CanHandleCategories(query, isMetaIndexer))
// we make a copy just in case some C# indexer modifies the object.
// without the copy, if you make a request with several indexers, all indexers share the query object.
var queryCopy = query.Clone();
if (!CanHandleQuery(queryCopy) || !CanHandleCategories(queryCopy, isMetaIndexer))
return new IndexerResult(this, new ReleaseInfo[0], false);
if (query.Cache)
if (queryCopy.Cache)
{
var cachedReleases = cacheService.Search(this, query);
var cachedReleases = cacheService.Search(this, queryCopy);
if (cachedReleases != null)
return new IndexerResult(this, cachedReleases, true);
}
try
{
var results = await PerformQuery(query);
results = FilterResults(query, results);
results = FixResults(query, results);
cacheService.CacheResults(this, query, results.ToList());
var results = await PerformQuery(queryCopy);
results = FilterResults(queryCopy, results);
results = FixResults(queryCopy, results);
cacheService.CacheResults(this, queryCopy, results.ToList());
errorCount = 0;
expireAt = DateTime.Now.Add(HealthyStatusValidity);
return new IndexerResult(this, results, false);

View File

@@ -1399,7 +1399,10 @@ namespace Jackett.Common.Indexers
{
if (response.Status != HttpStatusCode.OK)
throw new Exception($"Error Parsing Json Response: Status={response.Status} Response={results}");
if (response.Status == HttpStatusCode.OK && SearchPath.Response != null && SearchPath.Response.NoResultsMessage != null && ((SearchPath.Response.NoResultsMessage.Equals(results)) || (SearchPath.Response.NoResultsMessage == String.Empty && results == String.Empty)))
if (response.Status == HttpStatusCode.OK
&& SearchPath.Response != null
&& SearchPath.Response.NoResultsMessage != null
&& (results.Contains(SearchPath.Response.NoResultsMessage) || (SearchPath.Response.NoResultsMessage == String.Empty && results == String.Empty)))
continue;
var parsedJson = JToken.Parse(results);
if (parsedJson == null)

View File

@@ -35,6 +35,7 @@ namespace Jackett.Common.Indexers
"https://cinecalidad.mrunblock.icu/",
"https://www.cinecalidad.lat/",
"https://cinecalidad3.com/",
"https://www5.cine-calidad.com/",
"https://www.cine-calidad.com/"
};
@@ -43,7 +44,7 @@ namespace Jackett.Common.Indexers
: base(id: "cinecalidad",
name: "Cinecalidad",
description: "Películas Full HD en Latino Dual.",
link: "https://www5.cine-calidad.com/",
link: "https://v3.cine-calidad.com/",
caps: new TorznabCapabilities
{
MovieSearchParams = new List<MovieSearchParam> { MovieSearchParam.Q }

View File

@@ -227,19 +227,14 @@ namespace Jackett.Common.Indexers
// match the words in the query with the titles
if (matchWords && !CheckTitleMatchWords(query.SearchTerm, title))
{
return releases;
}
var detailsStr = anchor.GetAttribute("href");
var cat = detailsStr.Split('/')[3];
var categories = MapTrackerCatToNewznab(cat);
// return results only for requested categories
if (query.Categories.Any() && !query.Categories.Contains(categories.First()))
{
if (query.Categories.Any() && !MapTorznabCapsToTrackers(query).Contains(cat))
return releases;
}
var publishStr = row.QuerySelectorAll("td")[2].TextContent.Trim();
var publishDate = TryToParseDate(publishStr, DateTime.Now);

View File

@@ -39,7 +39,7 @@ namespace Jackett.Common.Indexers
private const string SearchUrl = "buscar/";
public override string[] AlternativeSiteLinks { get; protected set; } = {
"https://dontorrent.tel/",
"https://dontorrent.cx/",
"https://todotorrents.net/",
"https://tomadivx.net/",
"https://seriesblanco.one/",
@@ -60,6 +60,8 @@ namespace Jackett.Common.Indexers
"https://dontorrent.run/",
"https://dontorrent.cat/",
"https://dontorrent.pl/",
"https://dontorrent.tel/",
"https://dontorrent.nl/",
"https://dontorrent.eu/"
};
@@ -78,7 +80,7 @@ namespace Jackett.Common.Indexers
: base(id: "dontorrent",
name: "DonTorrent",
description: "DonTorrent is a SPANISH public tracker for MOVIES / TV / GENERAL",
link: "https://dontorrent.tel/",
link: "https://dontorrent.cx/",
caps: new TorznabCapabilities
{
TvSearchParams = new List<TvSearchParam>

View File

@@ -25,13 +25,7 @@ namespace Jackett.Common.Indexers
name: "ExoticaZ",
description: "ExoticaZ (YourExotic) is a Private Torrent Tracker for 3X",
link: "https://exoticaz.to/",
caps: new TorznabCapabilities
{
MovieSearchParams = new List<MovieSearchParam>
{
MovieSearchParam.Q
}
},
caps: new TorznabCapabilities(),
configService: configService,
client: wc,
logger: l,

View File

@@ -72,7 +72,7 @@ namespace Jackett.Common.Indexers.Meta
var fallbackStrategies = fallbackStrategyProvider.FallbackStrategiesForQuery(query);
var fallbackQueries = fallbackStrategies.Select(async f => await f.FallbackQueries()).SelectMany(t => t.Result);
var fallbackTasks = fallbackQueries.SelectMany(q => indexers.Where(i => !i.CanHandleQuery(query) && i.CanHandleQuery(q)).Select(i => i.ResultsForQuery(q.Clone(), true)));
var fallbackTasks = fallbackQueries.SelectMany(q => indexers.Where(i => !i.CanHandleQuery(query) && i.CanHandleQuery(q)).Select(i => i.ResultsForQuery(q, true)));
var tasks = supportedTasks.Concat(fallbackTasks.ToList()); // explicit conversion to List to execute LINQ query
// When there are many indexers used by a metaindexer querying each and every one of them can take very very

View File

@@ -1,388 +0,0 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web;
using AngleSharp.Dom;
using AngleSharp.Html.Dom;
using AngleSharp.Html.Parser;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig;
using Jackett.Common.Services.Interfaces;
using Jackett.Common.Utils;
using Jackett.Common.Utils.Clients;
using Newtonsoft.Json.Linq;
using NLog;
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
namespace Jackett.Common.Indexers
{
// This tracker uses a hybrid Luminance (based on GazelleTracker)
[ExcludeFromCodeCoverage]
public class MoreThanTV : BaseWebIndexer
{
public override string[] LegacySiteLinks { get; protected set; } = {
"https://www.morethan.tv/"
};
private string LoginUrl => SiteLink + "login";
private string BrowseUrl => SiteLink + "torrents/browse";
private string DownloadUrl => SiteLink + "torrents.php";
private string DetailsUrl => SiteLink + "details.php";
private string _sort;
private string _order;
private ConfigurationDataBasicLogin ConfigData => (ConfigurationDataBasicLogin)configData;
private readonly Dictionary<string, string> _emulatedBrowserHeaders = new Dictionary<string, string>();
public MoreThanTV(IIndexerConfigurationService configService, WebClient c, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "morethantv",
name: "MoreThanTV",
description: "Private torrent tracker for TV / MOVIES, and the internal tracker for the release group DRACULA.",
link: "https://www.morethantv.me/",
caps: new TorznabCapabilities
{
TvSearchParams = new List<TvSearchParam>
{
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep
},
MovieSearchParams = new List<MovieSearchParam>
{
MovieSearchParam.Q
}
},
configService: configService,
client: c,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin())
{
Encoding = Encoding.UTF8;
Language = "en-US";
Type = "private";
var sort = new SingleSelectConfigurationItem("Sort requested from site", new Dictionary<string, string>
{
{"time", "time"},
{"size", "size"},
{"snatched", "snatched"},
{"seeders", "seeders"},
{"leechers", "leechers"},
})
{ Value = "time" };
configData.AddDynamic("sort", sort);
var order = new SingleSelectConfigurationItem("Order requested from site", new Dictionary<string, string>
{
{"desc", "desc"},
{"asc", "asc"}
})
{ Value = "desc" };
configData.AddDynamic("order", order);
AddCategoryMapping(1, TorznabCatType.Movies);
AddCategoryMapping(2, TorznabCatType.TV);
}
/// <summary>
/// Parse and Return CSRF token
/// </summary>
/// <param name="content"></param>
/// <returns></returns>
private string GetToken(string content)
{
try
{
var parser = new HtmlParser();
var dom = parser.ParseDocument(content.Trim());
return dom.QuerySelector<IHtmlInputElement>("input[name=\"token\"]").Value;
}
catch (Exception e)
{
throw new Exception("Token Could not be parsed from Response, Error?", e);
}
}
/// <summary>
/// Emulate browser headers -- REQUIRED
/// </summary>
private void SetRequestHeaders()
{
_emulatedBrowserHeaders.Clear();
_emulatedBrowserHeaders.Add("referer", SiteLink);
_emulatedBrowserHeaders.Add("Upgrade-Insecure-Requests", "1");
_emulatedBrowserHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36");
}
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
{
LoadValuesFromJson(configJson);
var pairs = new Dictionary<string, string> {
{ "username", ConfigData.Username.Value },
{ "password", ConfigData.Password.Value },
{ "submit", "login" },
{ "keeplogged", "1" },
{ "cinfo", "3440|1440|24|360" }
};
SetRequestHeaders();
// Fetch CSRF token
// We need to clean the old cookies to avoid issues
var preRequest = await RequestWithCookiesAndRetryAsync(LoginUrl, referer: SiteLink, headers: _emulatedBrowserHeaders, cookieOverride: "");
// Check if user is logged in. /login redirects to / if so)
if (preRequest.IsRedirect)
{
await FollowIfRedirect(preRequest, SiteLink, null, preRequest.Cookies, true);
}
// sid was not set after redirect, attempt to log in again
if (!preRequest.Cookies.Contains("sid="))
{
string token = null;
try
{
token = GetToken(preRequest.ContentString);
}
catch (Exception)
{
var errorMessage = ParseErrorMessage(preRequest);
throw new ExceptionWithConfigData(errorMessage, configData);
}
// Add CSRF Token to payload
pairs.Add("token", token);
var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, preRequest.Cookies, true, null, SiteLink, headers: _emulatedBrowserHeaders);
await ConfigureIfOK(response.Cookies, response.Cookies.Contains("sid="), () =>
{
// Couldn't find "sid" cookie, so check for error
var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString);
var errorMessage = dom.QuerySelector(".flash.error").TextContent.Trim();
throw new ExceptionWithConfigData(errorMessage, configData);
});
}
return IndexerConfigurationStatus.RequiresTesting;
}
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{
var releases = new List<ReleaseInfo>();
var searchQuery = query.GetQueryString();
searchQuery = searchQuery.Replace("Marvels", "Marvel"); // strip 's for better results
var newSearchQuery = Regex.Replace(searchQuery, @"(S\d{2})$", "$1*"); // If we're just seaching for a season (no episode) append an * to include all episodes of that season.
await GetReleasesAsync(releases, query, newSearchQuery);
// Always search for torrent groups (complete seasons) too
var seasonMatch = new Regex(@".*\s[Ss]{1}\d{2}([Ee]{1}\d{2,3})?$").Match(searchQuery);
if (seasonMatch.Success)
{
newSearchQuery = Regex.Replace(searchQuery, @"[Ss]{1}\d{2}([Ee]{1}\d{2,3})?", $"Season {query.Season}");
await GetReleasesAsync(releases, query, newSearchQuery);
}
return releases;
}
public override void LoadValuesFromJson(JToken jsonConfig, bool useProtectionService = false)
{
base.LoadValuesFromJson(jsonConfig, useProtectionService);
var sort = (SingleSelectConfigurationItem)configData.GetDynamic("sort");
_sort = sort != null ? sort.Value : "time";
var order = (SingleSelectConfigurationItem)configData.GetDynamic("order");
_order = order != null && order.Value.Equals("asc") ? order.Value : "desc";
}
private string GetTorrentSearchUrl(TorznabQuery query, string searchQuery)
{
var qc = new NameValueCollection
{
{ "order_by", _sort },
{ "order_way", _order },
{ "action", "advanced" },
{ "sizetype", "gb" },
{ "sizerange", "0.01" },
{ "title", searchQuery }
};
if (query.Categories.Contains(TorznabCatType.Movies.ID))
{
qc.Add("filter_cat[1]", "1"); // HD Movies
qc.Add("filter_cat[2]", "1"); // SD Movies
}
if (query.Categories.Contains(TorznabCatType.TV.ID))
{
qc.Add("filter_cat[3]", "1"); // HD Episode
qc.Add("filter_cat[4]", "1"); // SD Episode
qc.Add("filter_cat[5]", "1"); // HD Season
qc.Add("filter_cat[6]", "1"); // SD Season
}
return BrowseUrl + "?" + qc.GetQueryString();
}
private async Task GetReleasesAsync(ICollection<ReleaseInfo> releases, TorznabQuery query, string searchQuery)
{
var searchUrl = GetTorrentSearchUrl(query, searchQuery);
var response = await RequestWithCookiesAndRetryAsync(searchUrl);
if (response.IsRedirect)
{
// re-login
await ApplyConfiguration(null);
response = await RequestWithCookiesAndRetryAsync(searchUrl);
}
try
{
var parser = new HtmlParser();
var document = parser.ParseDocument(response.ContentString);
var torrents = document.QuerySelectorAll("#torrent_table > tbody > tr.torrent");
var movies = new[] { "movie" };
var tv = new[] { "season", "episode" };
// Loop through all torrents checking for groups
foreach (var torrent in torrents)
{
// Parse required data
var downloadAnchor = torrent.QuerySelector("span a[href^=\"/torrents.php?action=download\"]");
var title = downloadAnchor.ParentElement.ParentElement.ParentElement.QuerySelector("a[class=\"overlay_torrent\"]").TextContent.Trim();
title = CleanUpTitle(title);
var category = torrent.QuerySelector(".cats_col div").GetAttribute("title");
// default to Other
var categoryId = TorznabCatType.Other.ID;
if (movies.Any(category.Contains))
categoryId = TorznabCatType.Movies.ID;
else if (tv.Any(category.Contains))
categoryId = TorznabCatType.TV.ID;
releases.Add(GetReleaseInfo(torrent, downloadAnchor, title, categoryId));
}
}
catch (Exception ex)
{
OnParseError(response.ContentString, ex);
}
}
/// <summary>
/// Gather Release info from torrent table. Target using css
/// </summary>
/// <param name="row"></param>
/// <param name="downloadAnchor"></param>
/// <param name="title"></param>
/// <param name="category"></param>
/// <returns></returns>
private ReleaseInfo GetReleaseInfo(IElement row, IElement downloadAnchor, string title, int category)
{
// count from bottom
const int FILES_COL = 7;
/*const int COMMENTS_COL = 7;*/
const int DATE_COL = 6;
const int FILESIZE_COL = 5;
const int SNATCHED_COL = 4;
const int SEEDS_COL = 3;
const int LEECHERS_COL = 2;
/*const int USER_COL = 1;*/
var downloadAnchorHref = (downloadAnchor as IHtmlAnchorElement).Href;
var queryParams = HttpUtility.ParseQueryString(downloadAnchorHref, Encoding.UTF8);
var torrentId = queryParams["id"];
var qFiles = row.QuerySelector("td:nth-last-child(" + FILES_COL + ")").TextContent;
var fileCount = ParseUtil.CoerceLong(qFiles);
var qPublishDate = row.QuerySelector("td:nth-last-child(" + DATE_COL + ") .time").Attributes["title"].Value;
var publishDate = DateTime.ParseExact(qPublishDate, "MMM dd yyyy, HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal).ToLocalTime();
var qPoster = row.QuerySelector("div.tp-banner img")?.GetAttribute("src");
var poster = (qPoster != null && !qPoster.Contains("caticons")) ? new Uri(qPoster) : null;
var description = row.QuerySelector("div.tags")?.TextContent.Trim();
var fileSize = row.QuerySelector("td:nth-last-child(" + FILESIZE_COL + ")").TextContent.Trim();
var snatched = row.QuerySelector("td:nth-last-child(" + SNATCHED_COL + ")").TextContent.Trim();
var seeds = row.QuerySelector("td:nth-last-child(" + SEEDS_COL + ")").TextContent.Trim();
var leechs = row.QuerySelector("td:nth-last-child(" + LEECHERS_COL + ")").TextContent.Trim();
if (fileSize.Length <= 0 || snatched.Length <= 0 || seeds.Length <= 0 || leechs.Length <= 0)
{
// Size (xx.xx GB[ (Max)]) Snatches (xx) Seeders (xx) Leechers (xx)
throw new Exception($"We expected 4 torrent datas.");
}
var size = ReleaseInfo.GetBytes(fileSize);
var grabs = int.Parse(snatched, NumberStyles.AllowThousands, CultureInfo.InvariantCulture);
var seeders = int.Parse(seeds, NumberStyles.AllowThousands, CultureInfo.InvariantCulture);
var leechers = int.Parse(leechs, NumberStyles.AllowThousands, CultureInfo.InvariantCulture);
var detailsUri = new Uri(DetailsUrl + "?torrentid=" + torrentId);
var downloadLink = new Uri(DownloadUrl + "?action=download&id=" + torrentId);
return new ReleaseInfo
{
Title = title,
Category = new List<int> { category },
Link = downloadLink,
PublishDate = publishDate,
Poster = poster,
Description = description,
Seeders = seeders,
Peers = seeders + leechers,
Files = fileCount,
Size = size,
Grabs = grabs,
Guid = downloadLink,
Details = detailsUri,
DownloadVolumeFactor = 0, // ratioless tracker
UploadVolumeFactor = 1
};
}
/// <summary>
/// Parse Error Messages from using CSS classes
/// </summary>
/// <param name="response"></param>
/// <returns></returns>
private string ParseErrorMessage(WebResult response)
{
var parser = new HtmlParser();
var dom = parser.ParseDocument(response.ContentString);
var errorMessage = response.Status == System.Net.HttpStatusCode.Forbidden
? dom.QuerySelector(".time").Parent.TextContent.Trim()
: dom.QuerySelector(".flash.error").TextContent.Trim();
return errorMessage;
}
/// <summary>
/// Clean Up any title stuff
/// </summary>
/// <param name="title"></param>
/// <returns></returns>
private string CleanUpTitle(string title)
{
return title
.Replace(".", " ")
.Replace("4K", "2160p"); // sonarr cleanup
}
}
}

View File

@@ -33,6 +33,7 @@ namespace Jackett.Common.Models.Config
public int Port { get; set; }
public bool AllowExternal { get; set; }
public bool AllowCORS { get; set; }
public string APIKey { get; set; }
public string AdminPassword { get; set; }
public string InstanceId { get; set; }

View File

@@ -14,6 +14,8 @@ namespace Jackett.Common.Models.DTO
[DataMember]
public bool external { get; set; }
[DataMember]
public bool cors { get; set; }
[DataMember]
public string api_key { get; set; }
[DataMember]
public string blackholedir { get; set; }
@@ -66,6 +68,7 @@ namespace Jackett.Common.Models.DTO
this.notices = notices;
port = config.Port;
external = config.AllowExternal;
cors = config.AllowCORS;
api_key = config.APIKey;
blackholedir = config.BlackholeDir;
updatedisabled = config.UpdateDisabled;

View File

@@ -79,6 +79,7 @@ namespace Jackett.Server.Controllers
var originalAllowExternal = serverConfig.AllowExternal;
var port = config.port;
var external = config.external;
var cors = config.cors;
var saveDir = config.blackholedir;
var updateDisabled = config.updatedisabled;
var preRelease = config.prerelease;
@@ -113,10 +114,12 @@ namespace Jackett.Server.Controllers
var omdbApiUrl = config.omdburl;
if (config.basepathoverride != serverConfig.BasePathOverride)
{
webHostRestartNeeded = true;
}
if (config.cors != serverConfig.AllowCORS)
webHostRestartNeeded = true;
serverConfig.AllowCORS = cors;
serverConfig.UpdateDisabled = updateDisabled;
serverConfig.UpdatePrerelease = preRelease;
serverConfig.BasePathOverride = basePathOverride;

View File

@@ -30,6 +30,8 @@ namespace Jackett.Server
{
public class Startup
{
private const string AllowAllOrigins = "AllowAllOrigins";
public Startup(IConfiguration configuration) => Configuration = configuration;
public IConfiguration Configuration { get; }
@@ -37,9 +39,14 @@ namespace Jackett.Server
// This method gets called by the runtime. Use this method to add services to the container.
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddResponseCompression();
services.AddResponseCompression()
.AddCors(
options =>
{
options.AddPolicy(name: AllowAllOrigins, corsPolicyBuilder => corsPolicyBuilder.AllowAnyOrigin());
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
})
.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
options =>
{
@@ -49,8 +56,6 @@ namespace Jackett.Server
options.Cookie.Name = "Jackett";
});
#if NET461
services.AddMvc(
config => config.Filters.Add(
@@ -141,6 +146,9 @@ namespace Jackett.Server
app.UseAuthentication();
if (Helper.ServerConfiguration.AllowCORS)
app.UseCors(AllowAllOrigins);
app.UseMvc();
}
#else
@@ -183,6 +191,9 @@ namespace Jackett.Server
app.UseRouting();
if (Helper.ServerConfiguration.AllowCORS)
app.UseCors(AllowAllOrigins);
app.UseEndpoints(endpoints => endpoints.MapControllers());
}
#endif