Compare commits

...

95 Commits

Author SHA1 Message Date
ilike2burnthing
cdb9491593 immortuos: add MR and MST (#13271) 2022-05-31 13:30:26 +01:00
Garfield69
3aa5ef32d9 oxtorrent: new domain *.net -> *.org 2022-05-31 14:18:07 +12:00
ilike2burnthing
820c5a7a0a fouducinema: change domain *.ca
also improve cat detection, like 7212f96d29
2022-05-30 21:25:19 +01:00
Garfield69
1b0e7a2597 assorted: update engine tags 3xT 2022-05-30 20:13:45 +12:00
Garfield69
e210a4247d fantasticheaven: update cats
source:  63c9d6cc42
2022-05-30 19:13:23 +12:00
Garfield69
ac12340857 arabp2p: add alternate domain *.net 2022-05-30 19:08:15 +12:00
Garfield69
7212f96d29 torrent-explosiv: improve cat detection 2022-05-30 15:50:10 +12:00
ilike2burnthing
a7fdda8b3b mteamtp: fix download selector. #13261 (#13266) 2022-05-28 20:22:19 +01:00
Garfield69
36e76ba32e mteamtp: use DL from details page. resolves #13261 2022-05-28 17:49:52 +12:00
Garfield69
7868aa6210 knaben: fix books/mags id 2022-05-28 16:25:55 +12:00
ilike2burnthing
751aa4002a fouducinema: revert to 3xT and update categories. #8260 2022-05-28 00:05:18 +01:00
ilike2burnthing
ae8ba98750 knaben: cat id fix, more mismatches 2022-05-27 22:43:43 +01:00
ilike2burnthing
e5215db278 knaben: fix cat id site mismatch
as we can't search by categories anyway, just switch the cat ids
2022-05-27 22:05:39 +01:00
Garfield69
fd522272df knaben: fix books/other due to site db/search missmatch 2022-05-28 07:47:32 +12:00
ilike2burnthing
316933d392 knaben: add public meta-search engine. resolves #13258 (#13259) 2022-05-27 16:24:16 +01:00
Garfield69
5020f6d125 add btmirror a public DHT trawler. resolves #13257 2022-05-27 20:09:56 +12:00
Garfield69
42092ac416 bitbazis: clean up row detection 2022-05-27 16:16:00 +12:00
Garfield69
641dee0e59 torrentsir: bump domain 2022-05-27 15:31:16 +12:00
Garfield69
3d29f64831 torrentqq: bump domain 2022-05-27 15:31:07 +12:00
Garfield69
2c10d329f4 elitetorrent-bz: *.dev back to *.com again 2022-05-27 15:17:44 +12:00
Garfield69
623b018f89 bitbazis: fix incldead for browse_xxx 2022-05-26 21:48:45 +12:00
Garfield69
d3ca2654b6 bitbazis: fix dropping rows without uploader href 2022-05-26 21:26:45 +12:00
Garfield69
ce528825da bitbazis: new layout
add filter freeleech
add xxx search
drop tpp from 100 to 50
amend incldead
2022-05-26 17:10:33 +12:00
Garfield69
1a553285c7 hdchina: add descr, engine tag. resolves #13255 2022-05-26 07:50:27 +12:00
Garfield69
5b421982f9 torrent9clone: new domain *.nl -> *.re 2022-05-25 16:27:43 +12:00
Garfield69
9ab5fc24b0 dontorrent: new domain *.cab -> *.wtf 2022-05-25 16:17:30 +12:00
Garfield69
473671d6f6 putau: drop dlvf tr.* , causes errors 2022-05-23 18:09:22 +12:00
Garfield69
decdd6d733 coastalcrew: add new cat 2022-05-23 17:15:25 +12:00
Garfield69
37744807bc hellastz: removed. resolves #9408 2022-05-23 17:07:41 +12:00
Garfield69
1876042c51 seedfile: removed. resolves #5551 2022-05-23 17:00:17 +12:00
Garfield69
fb28d4093a torrentwhiz: bump domain 2022-05-23 16:55:02 +12:00
Garfield69
440f1f013d torrentview: bump domain 2022-05-23 16:54:50 +12:00
Garfield69
0f5b7fea17 24rolika: removed. resolves #12479 2022-05-23 16:50:56 +12:00
Garfield69
1a5ed10ad6 Revert "underverse: switch from magnet to download"
This reverts commit ad35d1bf66.
2022-05-22 15:32:56 +12:00
ilike2burnthing
ad35d1bf66 underverse: switch from magnet to download 2022-05-21 18:16:11 +01:00
ilike2burnthing
246f75b4b1 dark-shadow: add new cat 2022-05-21 17:42:55 +01:00
ilike2burnthing
b190f841b4 cpasbienclone: change domain .vip 2022-05-21 17:39:03 +01:00
ilike2burnthing
c263dcba74 Update README.md 2022-05-20 10:42:50 +01:00
Garfield69
ea6e75abb3 nbtorrents: refresh cats #5337 2022-05-20 21:37:04 +12:00
ilike2burnthing
e5cd53c0c9 Revert "nbtorrents: removed. resolves #5337" (#13247)
Reverts 5d3c6c39b7
2022-05-20 08:20:50 +01:00
Garfield69
daa7e661b8 crazyhd: switch back to standard login 2022-05-20 16:45:24 +12:00
Garfield69
47b170bd1b hidden-palace removed. gone. resolves #13042 2022-05-20 11:14:23 +12:00
Garfield69
8a8926323b lastfiles: switch to standard login 2022-05-20 09:42:13 +12:00
Garfield69
ca32a8aaad torrentqq: bump domain 2022-05-20 09:23:20 +12:00
Garfield69
3b4062f0a5 assorted yaml: remove redundant filters on imdbid extraction 2022-05-19 22:22:05 +12:00
ilike2burnthing
8abc4d4f1f hdbits: remove unnecessary imdbid filter 2022-05-19 07:53:27 +01:00
ilike2burnthing
7a8798da89 hdbits: more lint fixes. #13244 2022-05-19 07:50:31 +01:00
ilike2burnthing
1b757d9480 hdbits: lint fix 2022-05-19 07:43:51 +01:00
ilike2burnthing
c4d900cef1 hdbits: add filter by freeleech setting. resolves #13244
Also add sort, order, search by imdbid, imdbid field, and disable searching by descriptions
2022-05-19 07:39:12 +01:00
Garfield69
9247e3de1b aither: bump engine tag 2022-05-19 13:16:00 +12:00
Garfield69
5dca4f4447 bitturk: add new cats 2022-05-19 09:58:12 +12:00
Garfield69
b1904738b0 dontorrent: new domain *.bet -> *.cab 2022-05-19 09:02:28 +12:00
Garfield69
4ffc4fa417 torrentday: update cats 2022-05-18 17:55:49 +12:00
ilike2burnthing
4e6195947e Update README.md 2022-05-18 03:32:15 +01:00
Garfield69
40d811f9c2 Update README.md 2022-05-18 14:24:10 +12:00
ilike2burnthing
fbb7bfdc7d hawke-uno: disable MR - whoops 2022-05-17 15:54:44 +01:00
ilike2burnthing
c998a4a522 hawke-uno: update and enable MR and MST 2022-05-17 15:52:44 +01:00
Garfield69
3f036da9de satclubbing: seeds andleech can be missing. #13243 2022-05-17 14:56:06 +12:00
Garfield69
aeacb93440 add satclubbing a music site. resolves #13243 2022-05-17 14:39:19 +12:00
ilike2burnthing
467ae96c39 dontorrent: add another alt sitelink 2022-05-17 02:29:40 +01:00
ilike2burnthing
29a05370d9 bitturk: fix cat id typo 2022-05-16 08:08:04 +01:00
Garfield69
7adc26966d GazelleTracker: fix GroupTime processing. resolves #13015 2022-05-16 12:10:37 +12:00
Garfield69
b2274030e7 mejortorrent: remove. gone. resolves #12559 2022-05-16 07:23:25 +12:00
Garfield69
21d92cdd6d Revert "Revert "bb: removed, dead. resolves #13211 (#13217)" (#13227)"
This reverts commit 3b4f594bc8.
2022-05-16 06:10:46 +12:00
ilike2burnthing
ea4c715763 bitturk: update cats again 2022-05-15 09:31:06 +01:00
Garfield69
9e4fdf8bd9 zooqle: rremove. gone. resolves #1185 2022-05-15 07:52:10 +12:00
Garfield69
42f95c528f reelfilx: bump engine tag 2022-05-14 20:18:54 +12:00
ilike2burnthing
a398392758 bitturk: add new cat 2022-05-14 08:04:39 +01:00
ilike2burnthing
6a89629b7c thenewfun: add new cat 2022-05-14 08:00:24 +01:00
Garfield69
1bff310bc0 torrentslocal: expired CA 2022-05-14 15:27:34 +12:00
Garfield69
7d32bcec9c cinecalidad: back to *.lat domain 2022-05-14 15:16:17 +12:00
Garfield69
5ae601b6da xbytes2: upgrade for xbtitFM v3.1.00 resolves #13239 2022-05-14 10:53:51 +12:00
ilike2burnthing
1342037802 torrent-explosiv: update cats 2022-05-13 22:02:59 +01:00
Garfield69
152fd75319 torrentdownload: changes to keywordless search 2022-05-13 21:08:50 +12:00
Garfield69
fc1984f05c tribalmixes: selector changes, add files. 2022-05-13 20:58:19 +12:00
Garfield69
22e3083dc1 hdgalaktik: handle cat --- , add imdb 2022-05-13 20:22:16 +12:00
Garfield69
e5401e2332 huntorrent: selector changes 2022-05-13 20:19:56 +12:00
Garfield69
1cf6551bc4 torrentsir: bump domain 2022-05-13 19:30:18 +12:00
Garfield69
add348eebe torrentqq: bump domain 2022-05-13 19:29:44 +12:00
Garfield69
f4ee57612a jpopsuki: support for lidarr artist/album
also add freeleech and sort configs
add MR
2022-05-13 15:15:49 +12:00
ilike2burnthing
a90cdca8b1 eztv: add new mirror 2022-05-13 03:32:15 +01:00
Garfield69
6f59a5319e dontorrent: new domain *.cx -> *.bet resolves #13238 2022-05-12 20:07:32 +12:00
Garfield69
1e8d6f0f05 audiences; add douban 2022-05-12 16:10:51 +12:00
Garfield69
7ab80d28ee haidan: fix date parsing. add duban 2022-05-12 10:59:34 +12:00
Garfield69
f04454a5e7 core: add duban to dashboard search results page 2022-05-12 10:58:40 +12:00
Garfield69
735812c722 spidertk: update engine tag. #12718 2022-05-11 18:13:39 +12:00
ilike2burnthing
f5bd4966ef spidertk: update indexer. resolves #12718 2022-05-11 06:28:58 +01:00
Garfield69
06b86b060d anthelion: add 2fa option. resolves #11320 2022-05-11 10:52:58 +12:00
Garfield69
e94b1a578a hdbits-api: andmatch tv search. resolves #12753 2022-05-11 10:03:27 +12:00
Garfield69
da77217954 hdbits: add season/ep to tv-search caps 2022-05-11 10:02:51 +12:00
Garfield69
327b4019e6 xthor-api: allow tmdb + keywords. resolves #12583 2022-05-11 08:54:34 +12:00
Garfield69
290ec2b74f rutor: add imdb search. resolves #11107 2022-05-10 17:54:47 +12:00
Garfield69
cc2afd5a84 torrent-turk: add new cat 2022-05-10 15:06:07 +12:00
Garfield69
cfbaf89318 erairaws: append optional subs to title. resolves #13234 2022-05-10 14:49:46 +12:00
Ilya Pavlov
e7ffc02b67 bitru: fixed description and poster (#13233) 2022-05-09 18:09:43 +12:00
78 changed files with 1236 additions and 2100 deletions

View File

@@ -27,7 +27,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* ØMagnet
* 1337x
* 24rolika
* ACG.RIP
* ACGsou (36DM)
* Anidex
@@ -46,6 +45,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* BT.etree
* BT4G
* BTDIGG
* BTmirror
* BTSOW
* Byrutor
* comicat
@@ -80,8 +80,9 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* Isohunt2
* iTorrent
* JAV-Torrent
* kickasstorrents.ws
* kickasstorrents.to
* kickasstorrents.ws
* Knaben
* Legit Torrents
* LePorno.info
* LimeTorrents
@@ -89,7 +90,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* LinuxTracker
* Mac Torrents Download
* MegaPeer
* MejorTorrent
* Mikan
* MioBT
* MixTapeTorrent
@@ -171,7 +171,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* YourBittorrent
* YTS.ag
* zetorrents
* Zooqle
</details>
<details> <summary> <b> Supported Semi-Private Trackers </b> </summary>
@@ -207,11 +206,11 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* Kinozal
* LostFilm.tv
* Magnetico (Local DHT) [[site](https://github.com/boramalper/magnetico)]
* MVGroup Forum
* MVGroup Main
* Marine Tracker
* Metal Tracker
* MuziekFrabriek
* MVGroup Forum
* MVGroup Main
* NetHD (VietTorrent)
* PornoLab
* PussyTorrents
@@ -220,8 +219,9 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* RiperAM
* RockBox
* RUDUB (ex-BaibaKoTV)
* RuTracker
* Rustorka
* RuTracker
* SATClubbing
* Sharewood
* SkTorrent
* SkTorrent-org
@@ -269,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
@@ -311,10 +310,10 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* CHDBits [![(invite needed)][inviteneeded]](#)
* ChileBT
* Cinecalidad
* CinemaMovieS_ZT
* CinemaZ (EuTorrents)
* Cinemageddon [![(invite needed)][inviteneeded]](#)
* CinemaMovieS_ZT
* Cinematik [![(invite needed)][inviteneeded]](#)
* CinemaZ (EuTorrents)
* Classix [![(invite needed)][inviteneeded]](#)
* Coastal-Crew
* Concertos
@@ -363,12 +362,13 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* GigaTorrents
* GimmePeers (formerly ILT) [![(invite needed)][inviteneeded]](#)
* GiroTorrent
* GreatPosterWall (GPW)
* GreekDiamond
* Greek Team
* HaiDan
* Haitang
* HappyFappy
* Hawke-uno [![(invite needed)][inviteneeded]](#)
* Hawke-uno
* HD Dolby
* HD-Bits.com [![(invite needed)][inviteneeded]](#)
* HD-Forever (HDF)
@@ -397,19 +397,16 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* HDU
* HDZone
* Hebits
* HellasTZ
* Hidden-Palace
* House of Devil
* HQSource (HQS)
* Il Corsaro Verde
* Indietorrents [![(invite needed)][inviteneeded]](#)
* IPTorrents (IPT)
* ImmortalSeed (iS)
* Immortuos [![(invite needed)][inviteneeded]](#)
* Immortuos
* Indietorrents [![(invite needed)][inviteneeded]](#)
* Insane Tracker
* IPTorrents (IPT)
* JME-REUNIT3D
* JPopsuki [![(invite needed)][inviteneeded]](#)
* JPopsuki
* JPTV
* Karagarga
* Keep Friends [![(invite needed)][inviteneeded]](#)
@@ -448,6 +445,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* Moviesite
* MyAnonamouse (MAM)
* MySpleen [![(invite needed)][inviteneeded]](#)
* NBTorrents
* NCore
* Nebulance (NBL) (TransmiTheNet)
* NetCosmo
@@ -472,8 +470,8 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* PiXELHD (PxHD) [![(invite needed)][inviteneeded]](#)
* PolishSource (PS)
* PolishTracker
* PornBits (PB)
* Pornbay [![(invite needed)][inviteneeded]](#)
* PornBits (PB)
* PotUK
* Pretome
* PrivateHD (PHD)
@@ -493,9 +491,9 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* R3V WTF! [![(invite needed)][inviteneeded]](#)
* Racing4Everyone (R4E)
* RacingForMe (RFM)
* RedBits
* Red Star Torrent (RST) [![(invite needed)][inviteneeded]](#)
* Redacted (PassTheHeadphones)
* RedBits
* Resurrect The Net
* RetroFlix
* RevolutionTT
@@ -506,9 +504,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* SceneRush
* SceneTime
* SDBits [![(invite needed)][inviteneeded]](#)
* GreatPosterWall (GPW)
* Secret Cinema
* SeedFile (SF)
* Shareisland
* Shazbat [![(invite needed)][inviteneeded]](#)
* SiamBIT
@@ -537,8 +533,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* TEKNO3D [![(invite needed)][inviteneeded]](#)
* TellyTorrent
* teracod (Movie Zone)
* The-Crazy-Ones
* The-New-Fun
* The Falling Angels (TFA) [![(invite needed)][inviteneeded]](#)
* The Geeks
* The Horror Charnel (THC)
@@ -548,6 +542,8 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* The Shinning (TsH)
* The Show
* The Vault [![(invite needed)][inviteneeded]](#)
* The-Crazy-Ones
* The-New-Fun
* TheAudioScene
* TheEmpire (TE)
* TheLeachZone (TLZ)
@@ -555,7 +551,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* TJUPT
* TLFBits [![(invite needed)][inviteneeded]](#)
* TmGHuB
* ToTheGlory (TTG) [![(invite needed)][inviteneeded]](#)
* Torrent Network (TN)
* Torrent Sector Crew (TSC)
* Torrent Surf
@@ -570,13 +565,14 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* Torrentech (TTH)
* TorrentHeaven [![(invite needed)][inviteneeded]](#)
* TorrentHR [![(invite needed)][inviteneeded]](#)
* Torrenting (TT) [![(invite needed)][inviteneeded]](#)
* TotallyKids (TK)
* Torrenting (TT)
* Torrentland
* TorrentLeech (TL)
* TorrentLeech.pl
* TorrentMasters
* TorrentSeeds (TS)
* TotallyKids (TK)
* ToTheGlory (TTG) [![(invite needed)][inviteneeded]](#)
* TranceTraffic [![(invite needed)][inviteneeded]](#)
* Trezzor [![(invite needed)][inviteneeded]](#)
* TurkSeed
@@ -599,9 +595,9 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* x-ite.me (XM)
* xBytesV2
* XSpeeds (XS)
* Xthor
* XWT-Classics
* XWTorrents (XWT)
* Xthor
* YDYPT
* Zamunda.net
* Zelka.org
@@ -628,7 +624,7 @@ To get all Jackett indexers including their capabilities you can use `t=indexers
### Filter indexers
Another special "filter" indexer is available at `/api/v2.0/indexers/<filter>/results/torznab`
It will query the configured indexers that match the `<filter>` expression criterias and return the combined results as "all".
It will query the configured indexers that match the `<filter>` expression criteria and return the combined results as "all".
Supported filters
Filter | Condition

View File

@@ -309,6 +309,10 @@ table td.fit{
background-color: #86cca8;
}
.label-douban {
background-color: #86cc10;
}
.tooltip {
pointer-events: none;
}

View File

@@ -973,6 +973,7 @@ function updateReleasesRow(row) {
var IMDBId = $(row).data("imdb");
var TMDBId = $(row).data("tmdb");
var TVDBId = $(row).data("tvdb");
var DoubanId = $(row).data("douban");
var Poster = $(row).data("poster");
var Description = $(row).data("description");
var DownloadVolumeFactor = parseFloat($(row).find("td.DownloadVolumeFactor").html());
@@ -1010,6 +1011,10 @@ function updateReleasesRow(row) {
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 (DoubanId && DoubanId > 0) {
labels.append('\n<a href="https://movie.douban.com/subject/' + DoubanId + '" target="_blank" class="label label-douban" alt="Douban" title="Douban">Douban</a>');
}
if (!isNaN(DownloadVolumeFactor)) {
if (DownloadVolumeFactor == 0) {
labels.append('\n<span class="label label-success">FREELEECH</span>');

View File

@@ -292,6 +292,10 @@ table td.fit{
background-color: #86cca8;
}
.label-douban {
background-color: #86cc10;
}
.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=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="../custom.css?changed=20220512" media="only screen and (min-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom_mobile.css?changed=20220512" 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">
@@ -458,7 +458,7 @@
</thead>
<tbody>
{{#each releases}}
<tr class="jackett-releases-row" data-imdb="{{Imdb}}" data-tmdb="{{TMDb}}" data-tvdb="{{TVDBId}}" data-poster="{{Poster}}" data-description="{{Description}}">
<tr class="jackett-releases-row" data-imdb="{{Imdb}}" data-tmdb="{{TMDb}}" data-tvdb="{{TVDBId}}" data-douban="{{DoubanId}}" data-poster="{{Poster}}" data-description="{{Description}}">
<td class="fit">{{PublishDate}}</td>
<td class="fit">{{FirstSeen}}</td>
<td class="fit">{{jacketTimespan PublishDate}}</td>
@@ -586,7 +586,7 @@
</thead>
<tbody>
{{#each Results}}
<tr class="jackett-search-results-row" data-imdb="{{Imdb}}" data-tmdb="{{TMDb}}" data-tvdb="{{TVDBId}}" data-poster="{{Poster}}" data-description="{{Description}}">
<tr class="jackett-search-results-row" data-imdb="{{Imdb}}" data-tmdb="{{TMDb}}" data-tvdb="{{TVDBId}}" data-douban="{{DoubanId}}" data-poster="{{Poster}}" data-description="{{Description}}">
<td>{{PublishDate}}</td>
<td>{{jacketTimespan PublishDate}}</td>
<td>{{Tracker}}</td>
@@ -754,6 +754,6 @@
</script>
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></script>
<script type="text/javascript" src="../custom.js?changed=20220426"></script>
<script type="text/javascript" src="../custom.js?changed=20220512"></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=202204251" rel="stylesheet">
<link href="../custom.css?changed=20220512" rel="stylesheet">
<title>Jackett</title>
</head>

View File

@@ -1,138 +0,0 @@
---
id: 24rolika
name: 24rolika
description: "24rolika is a RUSSIAN Public Torrent Tracker for 3X"
language: ru-RU
type: public
encoding: UTF-8
links:
- http://24rolika.ru/ # does not support https
caps:
categorymappings:
# only subcategories of Порно фильмы (Movies) have torrents
- {id: 94, cat: XXX, desc: "4K порно фильмы", default: true}
- {id: 76, cat: XXX, desc: "Японские порно фильмы", default: true}
- {id: 81, cat: XXX, desc: "Бразильские порно фильмы", default: true}
- {id: 41, cat: XXX, desc: "Итальянские порно фильмы", default: true}
- {id: 42, cat: XXX, desc: "Американские порно фильмы", default: true}
- {id: 43, cat: XXX, desc: "Немецкие порно фильмы", default: true}
- {id: 44, cat: XXX, desc: "Французские порно фильмы", default: true}
- {id: 45, cat: XXX, desc: "Русские порно фильмы", default: true}
- {id: 47, cat: XXX, desc: "Порно фильмы 2018 года", default: true}
- {id: 75, cat: XXX, desc: "Порно фильмы 2019 года", default: true}
- {id: 92, cat: XXX, desc: "Порно фильмы 2020 года", default: true}
- {id: 93, cat: XXX, desc: "Порно фильмы 2021 года", default: true}
- {id: 48, cat: XXX, desc: "Ретро / Классика", default: true}
- {id: 49, cat: XXX, desc: "С русским переводом", default: true}
- {id: 82, cat: XXX, desc: "С сюжетом", default: true}
- {id: 91, cat: XXX, desc: "Пародии", default: true}
- {id: 51, cat: XXX, desc: "Brazzers", default: true}
- {id: 52, cat: XXX, desc: "BangBros", default: true}
- {id: 53, cat: XXX, desc: "Marc Dorcel", default: true}
- {id: 54, cat: XXX, desc: "Evil Angel", default: true}
- {id: 55, cat: XXX, desc: "Tushy", default: true}
- {id: 56, cat: XXX, desc: "Blacked", default: true}
- {id: 57, cat: XXX, desc: "Evil Playgrounds", default: true}
- {id: 58, cat: XXX, desc: "Reality Kings", default: true}
- {id: 59, cat: XXX, desc: "New Sensations", default: true}
- {id: 60, cat: XXX, desc: "Wicked Pictures", default: true}
- {id: 61, cat: XXX, desc: "21Sextury", default: true}
- {id: 62, cat: XXX, desc: "PornPros", default: true}
- {id: 63, cat: XXX, desc: "Private", default: true}
- {id: 64, cat: XXX, desc: "DD Busty", default: true}
- {id: 65, cat: XXX, desc: "Naughty America", default: true}
- {id: 66, cat: XXX, desc: "Third Degree Films", default: true}
- {id: 67, cat: XXX, desc: "Hustler", default: true}
- {id: 68, cat: XXX, desc: "Blacks on Blondes", default: true}
- {id: 69, cat: XXX, desc: "Team Skeet", default: true}
- {id: 70, cat: XXX, desc: "Mofos", default: true}
- {id: 71, cat: XXX, desc: "Vixen", default: true}
- {id: 72, cat: XXX, desc: "Jules Jordan", default: true}
- {id: 73, cat: XXX, desc: "Nubile Films", default: true}
- {id: 74, cat: XXX, desc: "Digital Playground", default: true}
- {id: 83, cat: XXX, desc: "Zero Tolerance", default: true}
- {id: 84, cat: XXX, desc: "Pure Taboo", default: true}
- {id: 85, cat: XXX, desc: "Devil's Film", default: true}
- {id: 86, cat: XXX, desc: "Sweet Sinner", default: true}
- {id: 87, cat: XXX, desc: "Penthouse", default: true}
- {id: 88, cat: XXX, desc: "Elegant Angel", default: true}
- {id: 89, cat: XXX, desc: "Digital Sin", default: true}
modes:
search: [q]
settings:
- name: sort
type: select
label: Sort requested from site
default: date
options:
date: created
title: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
download:
selectors:
- selector: a[href*="index.php?do=download&id="]
attribute: href
search:
paths:
- path: index.php
inputs:
$raw: "{{ range .Categories }}catlist[]={{.}}&{{end}}"
do: search
subaction: search
search_start: 0
full_search: 1
result_from: 1
story: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}"
# 0 in article 1 in comments 2 in static pages 3 in article titles
titleonly: 3
sortby: "{{ .Config.sort }}"
resorder: "{{ .Config.type }}"
showposts: 0
headers:
Referer: ["{{ .Config.sitelink }}"]
rows:
selector: article.shortstory
fields:
category:
text: 94
title:
selector: h2.short_title a
details:
selector: h2.short_title a
attribute: href
download:
selector: h2.short_title a
attribute: href
poster:
selector: img
attribute: src
date:
text: now
size:
text: "512 MB"
seeders:
text: 1
leechers:
text: 1
description:
selector: div.video_time
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# DataLife

View File

@@ -150,4 +150,4 @@ search:
minimumseedtime:
# 5 days (as seconds = 3 x 24 x 60 x 60)
text: 432000
# json UNIT3D 6.0.7
# json UNIT3D 6.1.0

View File

@@ -109,11 +109,7 @@ search:
attribute: onmouseover
filters:
- name: replace
args: ["javascript:ShowImage('/images/imdb/", "tt"]
- name: replace
args: [".jpg')", ""]
- name: replace
args: ["tt0000000", ""]
args: ["javascript:ShowImage('/images/imdb/tt0000000.jpg')", ""]
poster:
selector: td a[href^="index.php?page=torrent-details"]
attribute: onmouseover

View File

@@ -7,6 +7,7 @@ type: private
encoding: UTF-8
links:
- https://www.arabp2p.com/
- https://www.arabp2p.net/
legacylinks:
- http://www.arabp2p.com/

View File

@@ -109,6 +109,9 @@ search:
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
doubanid:
selector: a[href*="movie.douban.com/subject/"]
attribute: href
date_elapsed:
# time type: time elapsed (default)
selector: td:nth-child(4) > span[title]

View File

@@ -65,6 +65,10 @@ 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: freeleech
type: checkbox
label: Filter freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
@@ -83,7 +87,7 @@ settings:
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Torrentek száma egy oldalon:</b> setting to <b>100</b> on your account profile.
default: For best results, change the <b>Torrentek száma egy oldalon:</b> setting to <b>50</b> on your account profile.
login:
method: cookie
@@ -96,21 +100,28 @@ login:
search:
paths:
- path: browse.php
categories: ["!", 33, 66, 99]
inputs:
# 0 all, 1 active, 2 deadonly, 3 myuploads, 4 zeroseed, 6 re-seeded
incldead: 0
- path: browse_xxx.php
categories: [33, 66, 99]
inputs:
# 0 active, 1 all, 2 deadonly, 3 myuploads, 4 zeroseed, 6 re-seeded
incldead: 1
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active, 1 all, 2 deadonly, 3 myuploads, 4 zeroseed
incldead: 1
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
# site does not support imdbid searching or appear to have freeleech
# site does not support imdbid searching
rows:
selector: table[width="100%"]:last-child tbody tr:has(a[href^="userdetails.php?id="]):has(a[href^="download.php?torrent="])
selector: "table[width=\"100%\"]:last-child tbody tr:has(div.tooltip){{ if .Config.freeleech }}:has(i:contains(\"(Free)\")){{ else }}{{ end }}"
fields:
category:
selector: a[href^="browse.php?cat="]
selector: a[href*=".php?cat="]
attribute: href
filters:
- name: querystring
@@ -124,19 +135,43 @@ search:
poster:
selector: a.preview
attribute: href
download:
download1:
selector: a[href^="download.php?torrent="]
optional: true
attribute: href
download2:
selector: input[onclick*="download.php?torrent="]
optional: true
attribute: onclick
filters:
- name: replace
args: ["window.open('", ""]
- name: replace
args: ["', '_self');", ""]
download:
text: "{{ if or .Result.download1 .Result.download2 }}{{ or .Result.download1 .Result.download2 }}{{ else }}{{ end }}"
size:
selector: td:nth-child(6)
date:
date_browse:
# 2022<br>03/15.
selector: td:nth-child(7)
selector: td:nth-child(7):contains("/")
optional: true
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "200601/02. -07:00"
date_browse_xxx:
# 22.03.15
selector: td:nth-child(7):not(:contains("/"))
optional: true
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "06.01.02 -07:00"
date:
text: "{{ if or .Result.date_browse .Result.date_browse_xxx }}{{ or .Result.date_browse .Result.date_browse_xxx }}{{ else }}now{{ end }}"
grabs:
selector: td:nth-child(5)
seeders:

View File

@@ -108,18 +108,16 @@ search:
- name: replace
args: ["details", "download"]
description:
selector: img[src="styles/images/adwarn.png"]
optional: true
selector: i.fa-ad
attribute: title
filters:
- name: replace
args: ["Присутствует реклама", "Contains Adverts"]
poster:
args: ["Присутствует реклама", "[Contains Adverts] "]
description|append:
selector: a[href^="details.php?id="]
attribute: onmouseover
filters:
- name: regexp
args: "src=(.*?) "
poster:
selector: div.it-image > img
attribute: src
date_today:
# Сегодня в 09:09 от
# Вчера в 22:47 от

View File

@@ -54,9 +54,13 @@ caps:
- {id: 21, cat: Audio/Video, desc: "Video Klipler"}
- {id: 2, cat: Console, desc: "Oyun"}
- {id: 74, cat: PC/Games, desc: "Oyun PC"}
- {id: 83, cat: Console/Other, desc: "Oyun Gameboy"}
- {id: 73, cat: Console/PS3, desc: "Oyun SONY-PS"}
- {id: 84, cat: Console/PS3, desc: "Oyun Playstation"}
- {id: 85, cat: Console/PS3, desc: "Oyun Playstation 2"}
- {id: 82, cat: Console/PSP, desc: " Oyun PSP"}
- {id: 83, cat: Console/Other, desc: "Oyun Gameboy"}
- {id: 87, cat: Console/XBox, desc: "Oyun XBOX"}
- {id: 88, cat: Console/Other, desc: "Oyun NEO-GEO"}
- {id: 89, cat: Console/Wii, desc: "Oyun Nintendo Wii"}
- {id: 6, cat: PC/0day, desc: "Program"}
- {id: 47, cat: Other, desc: "Resimler"}
- {id: 48, cat: TV, desc: "Televizyon"}

View File

@@ -0,0 +1,96 @@
---
id: btmirror
name: BTmirror
description: "BTmirror is a Public BitTorrent DHT search engine."
language: en-US
type: public
encoding: UTF-8
links:
- https://btsao.com/
- https://btmirror.unblockit.blue/
caps:
categories:
Other: Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: info_8000
type: info
label: About BTmirror Categories
default: BTmirror does not return categories in its search results.</br>To add to your Apps' Torznab indexer, replace all categories with 8000(Other).
- name: sort
type: select
label: Sort requested from site
default: create_time
options:
relavance: relevance
create_time: created
length: size
download:
infohash:
hash:
selector: p.magnet a
attribute: href
filters:
- name: regexp
args: ([A-F|a-f|0-9]{40})
title:
selector: p.magnet a
attribute: href
filters:
- name: regexp
args: "&dn=(.+?)$"
- name: validfilename
search:
# https://btsao.com/en/search/2022/?c=&s=create_time
# returns 10 results per page
paths:
- path: "en/search/{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}/"
- path: "en/search/{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}/2"
inputs:
c: ""
s: "{{ .Config.sort }}"
rows:
selector: div.ssbox
fields:
category:
text: Other
title:
selector: h3
details:
selector: h3 a
attribute: href
download:
selector: h3 a
attribute: href
date:
selector: span:contains("date:") b
filters:
- name: dateparse
args: "2006-01-02"
size:
selector: span:contains("size:") b
files:
selector: span:contains("files:") b
grabs:
selector: span:contains("人气:") b
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine: n/a

View File

@@ -208,9 +208,6 @@ search:
# a href="http://tracker.btnext.com/data/torrents/imdb/tt0249677.jpg"
selector: a[href*="/imdb/tt"]
attribute: href
filters:
- name: regexp
args: tt(\d+)
downloadvolumefactor:
case:
"img[title=\"FREE!\"]": 0

View File

@@ -10,7 +10,8 @@ links:
caps:
categorymappings:
- {id: 62, cat: Books, desc: "EBook"}
- {id: 62, cat: Books/EBook, desc: "EBook"}
- {id: 69, cat: Books/Mags, desc: "Zeitung"}
- {id: 30, cat: TV/Anime, desc: "Filme - Animie"}
- {id: 28, cat: Movies/BluRay, desc: "Filme - Bluray"}
- {id: 31, cat: Movies/Other, desc: "Filme - Bollywood"}

View File

@@ -7,7 +7,7 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://www.cpasbien.gg/
- https://www.cpasbien.vip/
legacylinks:
- https://www1.cpasbiens.ws/
- https://www2.cpasbiens.ws/
@@ -20,6 +20,7 @@ legacylinks:
- https://cpasbiens.uk-unblock.xyz/
- https://cpasbiens.ind-unblock.xyz/
- https://cpasbien.to/
- https://www.cpasbien.gg/
caps:
categories:

View File

@@ -90,13 +90,12 @@ caps:
book-search: [q]
settings:
- name: cookie
- name: username
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>"
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -119,9 +118,14 @@ settings:
1: asc
login:
method: cookie
path: index.php
method: form
form: form[action="index.php?page=login"]
inputs:
cookie: "{{ .Config.cookie }}"
uid: "{{ .Config.username }}"
pwd: "{{ .Config.password }}"
error:
- selector: td.lista span[style="color:#FF0000;"]
test:
path: index.php
selector: a[href="logout.php"]

View File

@@ -16,6 +16,7 @@ caps:
- {id: 28, cat: Movies/SD, desc: "Filme SD"}
- {id: 32, cat: Movies/HD, desc: "Filme HD"}
- {id: 114, cat: Movies/UHD, desc: "Filme UHD"}
- {id: 140, cat: Movies/BluRay, desc: "Filme BluRay"}
- {id: 138, cat: Movies, desc: "Filme Pack`s"}
# Serien
- {id: 60, cat: TV/SD, desc: "Serien SD"}
@@ -218,4 +219,4 @@ search:
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# engine n/a
# 3xT

View File

@@ -206,4 +206,4 @@ search:
minimumseedtime:
# 12 hours (as seconds = 12 x 60 x 60)
text: 43200
# engine n/a
# 3xT

View File

@@ -6,7 +6,7 @@ language: es-ES
type: public
encoding: UTF-8
links:
- https://www.elitetorrent.dev/
- https://www.elitetorrent.com/
- https://elitetorrent.nocensor.sbs/
legacylinks:
- https://www.elitetorrent.biz/
@@ -23,7 +23,6 @@ legacylinks:
- https://vvww.elitetorrent.nl/
- https://www.elitetorrent.to/
- https://www.elitetorrent.se/
- https://www.elitetorrent.com/
- https://elitetorrent.si/
- https://elitetorrent.nocensor.work/
- https://elitetorrent.com/
@@ -31,6 +30,7 @@ legacylinks:
- https://elitetorrent.nocensor.biz/
- https://elitetorrent.la/
- https://www.elitetorrent.wtf/
- https://www.elitetorrent.dev/
caps:
categories:

View File

@@ -11,6 +11,7 @@ links:
- https://eztv.wf/
- https://eztv.tf/
- https://eztv.yt/
- https://eztv1.xyz/
- https://eztv.unblockninja.com/
- https://eztv.unblockit.blue/
- https://eztv.nocensor.sbs/

View File

@@ -10,85 +10,54 @@ links:
caps:
categorymappings:
- {id: 54, cat: Movies/SD, desc: "kino SD x264/x265"}
- {id: 56, cat: Movies/HD, desc: "kino 720p"}
- {id: 57, cat: Movies/HD, desc: "kino 1080p"}
- {id: 100, cat: Movies/3D, desc: "kino 3D"}
- {id: 58, cat: Movies/SD, desc: "Filme SD x264/x265"}
- {id: 58, cat: Movies/SD, desc: "Filme SD"}
- {id: 59, cat: Movies/HD, desc: "Filme 720p"}
- {id: 60, cat: Movies/HD, desc: "Filme 1080p"}
- {id: 61, cat: Movies/UHD, desc: "Filme 2160p"}
- {id: 62, cat: Movies/3D, desc: "Filme 3D"}
- {id: 170, cat: Movies/BluRay, desc: "Filme Bluray"}
- {id: 101, cat: Movies/DVD, desc: "Filme DVD"}
- {id: 63, cat: Movies/HD, desc: "Filme Remux"}
- {id: 129, cat: Movies/SD, desc: "Filme Packs SD x264/265"}
- {id: 62, cat: Movies/3D, desc: "Filme 3D"}
- {id: 169, cat: Movies/Foreign, desc: "Filme International"}
- {id: 129, cat: Movies/SD, desc: "Filme Packs SD"}
- {id: 130, cat: Movies/HD, desc: "Filme Packs 720p"}
- {id: 131, cat: Movies/HD, desc: "Filme Packs 1080p"}
- {id: 64, cat: TV/SD, desc: "Serien SD x264/x265"}
- {id: 159, cat: Movies/UHD, desc: "Filme Packs 2160p"}
- {id: 172, cat: Movies/SD, desc: "Film-Klassiker SD"}
- {id: 173, cat: Movies/HD, desc: "Film-Klassiker 720p"}
- {id: 174, cat: Movies/HD, desc: "Film-Klassiker 1080p"}
- {id: 175, cat: Movies/UHD, desc: "Film-Klassiker 2160p"}
- {id: 180, cat: Movies/DVD, desc: "Film-Klassiker DVD"}
- {id: 181, cat: Movies/BluRay, desc: "Film-Klassiker Bluray"}
- {id: 176, cat: Movies/SD, desc: "Film-Klassiker Pack SD"}
- {id: 177, cat: Movies/HD, desc: "Film-Klassiker Pack 720p"}
- {id: 178, cat: Movies/HD, desc: "Film-Klassiker Pack 1080p"}
- {id: 179, cat: Movies/UHD, desc: "Film-Klassiker Pack 2160p"}
- {id: 64, cat: TV/SD, desc: "Serien SD"}
- {id: 65, cat: TV/HD, desc: "Serien 720p"}
- {id: 66, cat: TV/HD, desc: "Serien 1080p"}
- {id: 68, cat: TV/UHD, desc: "Serien 2160p"}
- {id: 69, cat: TV/Foreign, desc: "Serien Ger-Subbed"}
- {id: 70, cat: TV/Foreign, desc: "Serien International"}
- {id: 76, cat: TV/SD, desc: "Serienpacks SD x264/x265"}
- {id: 167, cat: TV/Foreign, desc: "Serien International"}
- {id: 76, cat: TV/SD, desc: "Serienpacks SD"}
- {id: 77, cat: TV/HD, desc: "Serienpacks 720p"}
- {id: 78, cat: TV/HD, desc: "Serienpacks 1080p"}
- {id: 81, cat: TV/UHD, desc: "Serienpacks 2160p"}
- {id: 79, cat: TV/Foreign, desc: "Serienpacks Ger-Subbed"}
- {id: 80, cat: TV/Foreign, desc: "Serienpacks International"}
- {id: 115, cat: Movies/SD, desc: "Kids-Filme SD x264/x265"}
- {id: 116, cat: Movies/HD, desc: "Kids-Filme 720p"}
- {id: 117, cat: Movies/HD, desc: "Kids-Filme 1080p"}
- {id: 109, cat: TV/SD, desc: "Kids-Serien SD x264/x265"}
- {id: 110, cat: TV/HD, desc: "Kids-Serien 720p"}
- {id: 111, cat: TV/HD, desc: "Kids-Serien 1080p"}
- {id: 112, cat: TV/SD, desc: "Kids-Serien Packs SD"}
- {id: 113, cat: TV/HD, desc: "Kids-Serien Packs 720p"}
- {id: 114, cat: TV/HD, desc: "Kids-Serien Packs 1080p"}
- {id: 127, cat: TV/Foreign, desc: "Kids-Serien International"}
- {id: 98, cat: TV/SD, desc: "Tatort SD x264/x265"}
- {id: 99, cat: TV/HD, desc: "Tatort 720p"}
- {id: 105, cat: TV/SD, desc: "Daily Soaps SD x264/x265"}
- {id: 103, cat: TV/HD, desc: "Daily Soaps 720p"}
- {id: 104, cat: TV/HD, desc: "Daily Soaps 1080p"}
- {id: 106, cat: TV/Documentary, desc: "Dokus SD x264/x265"}
- {id: 107, cat: TV/Documentary, desc: "Dokus 720p"}
- {id: 108, cat: TV/Documentary, desc: "Dokus 1080p"}
- {id: 83, cat: Movies/SD, desc: "TV-Filme SD x264/x265"}
- {id: 84, cat: Movies/HD, desc: "TV-Filme 720p"}
- {id: 85, cat: Movies/HD, desc: "TV-Filme 1080p"}
- {id: 86, cat: TV/SD, desc: "TV-Shows SD x264/x265"}
- {id: 87, cat: TV/HD, desc: "TV-Shows 720p"}
- {id: 88, cat: TV/HD, desc: "TV-Shows 1080p"}
- {id: 118, cat: TV/Sport, desc: "SportSD x264/x265"}
- {id: 119, cat: TV/Sport, desc: "Sport720p"}
- {id: 120, cat: TV/Sport, desc: "Sport1080p"}
- {id: 122, cat: TV/Sport, desc: "Sport2160p"}
- {id: 121, cat: TV/Sport, desc: "SportInternational"}
- {id: 82, cat: Audio/Audiobook, desc: "Audio Audiobooks"}
- {id: 71, cat: Audio/MP3, desc: "Audio MP3"}
- {id: 72, cat: Audio/Lossless, desc: "Audio Flac"}
- {id: 135, cat: Audio/Lossless, desc: "Audio WAV"}
- {id: 73, cat: Audio/MP3, desc: "Audio MP3 Packs"}
- {id: 74, cat: Audio/Lossless, desc: "Audio Flac Packs"}
- {id: 128, cat: Audio, desc: "Audio Kids"}
- {id: 75, cat: Audio/Video, desc: "Audio Musikvideo"}
- {id: 73, cat: Audio, desc: "Audio Packs"}
- {id: 153, cat: Audio/Audiobook, desc: "Hörbücher"}
- {id: 123, cat: PC, desc: "Software Windows"}
- {id: 124, cat: PC, desc: "Software Linux"}
- {id: 125, cat: PC/Mobile-Android, desc: "Software Android"}
- {id: 126, cat: PC/Mac, desc: "Software MacOS"}
- {id: 166, cat: PC/Mac, desc: "Software Sonstiges"}
- {id: 132, cat: PC/Games, desc: "Spiele Windows"}
- {id: 133, cat: PC/Mac, desc: "Spiele MacOS"}
- {id: 134, cat: Console, desc: "Spiele Nintendo"}
- {id: 90, cat: Books/Mags, desc: "Diverses Zeitschriften"}
- {id: 89, cat: Books/EBook, desc: "Diverses E-Books"}
- {id: 91, cat: XXX/x264, desc: "XXX SD x264/x265"}
- {id: 150, cat: PC/Mac, desc: "Spiele Sonstiges"}
- {id: 90, cat: Books/Mags, desc: "Zeitschriften"}
- {id: 89, cat: Books/EBook, desc: "E-Books"}
- {id: 91, cat: XXX/SD, desc: "XXX SD"}
- {id: 92, cat: XXX/x264, desc: "XXX 720p"}
- {id: 93, cat: XXX/x264, desc: "XXX 1080p"}
- {id: 95, cat: XXX/Pack, desc: "XXX Packs SD"}
- {id: 96, cat: XXX/Pack, desc: "XXX Packs HD"}
- {id: 171, cat: XXX/Pack, desc: "XXX Packs"}
- {id: 94, cat: XXX/ImageSet, desc: "XXX Magazine"}
- {id: 97, cat: XXX/ImageSet, desc: "XXX Pics"}
modes:
search: [q]

View File

@@ -134,12 +134,9 @@ search:
selector: td a[href^="index.php?page=downloadcheck"]
attribute: href
imdbid:
# javascript:popdetails('http://www.imdb.com/title/tt10209130');
selector: a[href*="imdb.com/title/tt"]
attribute: href
filters:
# javascript:popdetails('http://www.imdb.com/title/tt10209130');
- name: regexp
args: tt(\d+)
size:
selector: td:nth-last-child(1)
leechers:

View File

@@ -6,60 +6,54 @@ language: fr-FR
type: private
encoding: UTF-8
links:
- https://fou-du-cinema.ca/
legacylinks:
- https://fou-du-cinema.net/
caps:
categorymappings:
- {id: 28, cat: PC, desc: "App: Linux"}
- {id: 19, cat: PC/Mac, desc: "Apps: Mac"}
- {id: 18, cat: PC/0day, desc: "Apps: PC"}
- {id: 54, cat: Books/Comics, desc: "BD: bande dessinée"}
- {id: 9, cat: TV/Documentary, desc: "Documentaries: All"}
- {id: 60, cat: Books/EBook, desc: "Ebook: BD - X"}
- {id: 23, cat: Movies/UHD, desc: "FILM: 4K et plus"}
- {id: 51, cat: TV/Anime, desc: "FILM: Animé"}
- {id: 43, cat: Movies/BluRay, desc: "FILM: BD-Rip"}
- {id: 22, cat: Movies/DVD, desc: "FILM: DVD"}
- {id: 52, cat: Movies/DVD, desc: "FILM: DVDRip"}
- {id: 40, cat: Movies/HD, desc: "Film: HD"}
- {id: 26, cat: Movies/HD, desc: "FILM: HD 1080p"}
- {id: 25, cat: Movies/HD, desc: "FILM: HD 720p"}
- {id: 50, cat: Movies/HD, desc: "FILM: HDTV"}
- {id: 47, cat: Movies/HD, desc: "FILM: MHD"}
- {id: 61, cat: Movies/WEB-DL, desc: "FILM: TVRip"}
- {id: 49, cat: Movies, desc: "FILM: VO"}
- {id: 48, cat: Movies, desc: "FILM: Vost-FR"}
- {id: 17, cat: Movies/WEB-DL, desc: "FILM: Web-DL 1080P"}
- {id: 39, cat: Movies/WEB-DL, desc: "FILM: Web-DL 720P"}
- {id: 34, cat: Movies/WEB-DL, desc: "FILM: Webrip"}
- {id: 21, cat: Movies/WEB-DL, desc: "FILM: WebRip 1080p"}
- {id: 20, cat: Movies/WEB-DL, desc: "FILM: WebRip 720p"}
- {id: 14, cat: Movies/WEB-DL, desc: "FILM: WebRip-DL"}
- {id: 24, cat: XXX, desc: "FILM: XXX"}
- {id: 10, cat: PC/Games, desc: "Games: PC"}
- {id: 53, cat: Books/Mags, desc: "Journaux : presse"}
- {id: 36, cat: Books/EBook, desc: "Other: E-Books"}
- {id: 33, cat: Other, desc: "Other: Emulation"}
- {id: 38, cat: PC/Mobile-Other, desc: "Other: Mobile Phone"}
- {id: 58, cat: TV, desc: "Serie: DVDVOST"}
- {id: 59, cat: TV/WEB-DL, desc: "Serie: TVRip"}
- {id: 57, cat: TV/WEB-DL, desc: "Serie: WEB"}
- {id: 42, cat: TV, desc: "SERIES: Concerts / Spectacles"}
- {id: 5, cat: TV/Anime, desc: "SERIES: Animée"}
- {id: 7, cat: TV/SD, desc: "SERIES: Épisodes SD"}
- {id: 3, cat: TV/Documentary, desc: "SERIES: Documentaires"}
- {id: 55, cat: TV/SD, desc: "Serie: DVD"}
- {id: 1, cat: TV/HD, desc: "SERIES: Episodes HD"}
- {id: 6, cat: TV/HD, desc: "SERIES: HDTV"}
- {id: 56, cat: TV/HD, desc: "SERIE: HDTV1080p"}
- {id: 2, cat: TV/HD, desc: "SERIES: Pack HD"}
- {id: 4, cat: TV/SD, desc: "SERIES: Pack SD"}
- {id: 41, cat: TV, desc: "SERIES: Vost-FR"}
- {id: 9, cat: TV/SD, desc: "SERIE DVD"}
- {id: 21, cat: TV/HD, desc: "SERIE HDTV.1080p"}
- {id: 20, cat: TV/HD, desc: "SERIE HDTV.720p"}
- {id: 19, cat: TV/SD, desc: "SERIE HDTV"}
- {id: 36, cat: TV/Other, desc: "SERIE Pack"}
- {id: 17, cat: TV/SD, desc: "SERIE VHS"}
- {id: 16, cat: TV/SD, desc: "SERIE TVRip"}
- {id: 15, cat: TV/WEB-DL, desc: "SERIE WEB.1080p"}
- {id: 14, cat: TV/WEB-DL, desc: "SERIE WEB.720p"}
- {id: 12, cat: TV/WEB-DL, desc: "SERIE WEB"}
- {id: 37, cat: TV, desc: "SERIE EPISODE"}
- {id: 56, cat: PC/ISO, desc: "LOGICIELS Linux"}
- {id: 24, cat: PC/Mac, desc: "LOGICIELS Apple"}
- {id: 58, cat: PC/0day, desc: "LOGICIELS Windows"}
- {id: 59, cat: PC, desc: "LOGICIELS "}
- {id: 44, cat: Books/Mags, desc: "EBOOK Journaux"}
- {id: 46, cat: Books/Technical, desc: "EBOOK Documents"}
- {id: 48, cat: XXX/Other, desc: "EBOOK XXX"}
- {id: 49, cat: Books/EBook, desc: "EBOOK Livres"}
- {id: 50, cat: TV/Anime, desc: "ANIMEE Anim<69>e"}
- {id: 1, cat: Movies/SD, desc: "FILM Xvid"}
- {id: 33, cat: Movies/HD, desc: "FILM HDTV"}
- {id: 31, cat: Movies/Other, desc: "FILM MUET"}
- {id: 30, cat: Movies/Other, desc: "FILM VOST"}
- {id: 29, cat: Movies/SD, desc: "FILM VHS"}
- {id: 28, cat: Movies/HD, desc: "FILM 720"}
- {id: 27, cat: Movies/HD, desc: "FILM BDRip"}
- {id: 26, cat: Movies/BluRay, desc: "FILM BluRay"}
- {id: 25, cat: Movies/BluRay, desc: "FILM ISO"}
- {id: 4, cat: Movies/HD, desc: "FILM 1080"}
- {id: 2, cat: Movies/DVD, desc: "FILM DVD"}
- {id: 34, cat: Movies/SD, desc: "FILM TVRip"}
- {id: 5, cat: Audio/Video, desc: "MUSIC clip video"}
- {id: 7, cat: PC/Games, desc: "JEUX Win"}
- {id: 8, cat: Console/PS3, desc: "JEUX PS3"}
- {id: 45, cat: PC/Games, desc: "JEUX PC"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
@@ -69,10 +63,6 @@ settings:
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: multilang
type: checkbox
label: Replace MULTI by another language in release name
@@ -95,10 +85,10 @@ settings:
- name: sort
type: select
label: Sort requested from site
default: id
default: added
options:
id: created
seeders: seeders
added: created
seeds: seeders
size: size
name: title
- name: type
@@ -110,53 +100,56 @@ settings:
asc: asc
login:
path: account-login.php
method: post
path: login.php
method: form
form: form[action="/login.php"]
cookies: ["JAVA=OK"] # avoid jscheck redirect
captcha:
type: image
selector: img[src^="cap/captcha_math.php?codeCaptcha="]
input: stringCaptcha
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: yes
error:
- selector: div.myFrame-caption:contains("Access denied")
message:
selector: div.myFrame-content
- selector: div#login_error
test:
path: index.php
selector: a[href="account-logout.php"]
selector: a[href="logout.php"]
download:
selectors:
- selector: a[href^="download.php?id="]
attribute: href
before:
path: ajax_det_poll.php
method: post
inputs:
set_thanks: Merci
det_id: "{{ .DownloadUri.Query.torrent }}"
ajax: yes
search:
paths:
- path: torrents-search.php
- path: selection.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active, 1 incldead, 2 onlydead
incldead: 1
# 0 inclfree, 1 notfree, 2 onlyfree
freeleech: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 all, 1 English, 2 etc...
lang: 0
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
# 0 name, 1 descr, 2 both
blah: 0
orderby: "{{ .Config.sort }}"
sort: "{{ .Config.type }}"
# site does not support imdbid searches or provide imdb links in results
rows:
selector: tr.t-row
selector: div.content_wrap > div.selection_wrap:has(a[href^="details.php?id="])
fields:
category:
selector: a[href^="torrents.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
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 }}"
title_phase1:
selector: a[href^="torrents-details.php?id="]
attribute: title
selector: a[href^="details.php?id="]
title_multilang:
text: "{{ .Result.title_phase1 }}"
filters:
@@ -174,28 +167,58 @@ search:
title:
text: "{{ if .Config.vostfr }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_phase2 }}{{ end }}"
details:
selector: a[href^="torrents-details.php?id="]
selector: a[href^="details.php?id="]
attribute: href
poster:
selector: img
attribute: src
download:
selector: a[href^="torrents-details.php?id="]
selector: a[href^="details.php?id="]
attribute: href
size:
selector: td:nth-child(5)
date:
text: now
filters:
- name: replace
args: ["details.php?id=", "download.php?torrent="]
seeders:
selector: td:nth-child(6)
selector: div.selection_unter_aa > b
leechers:
selector: td:nth-child(7)
selector: div.selection_unter_aaa > b
date_day:
# Aujourd'hui à 06:26:25
# Hier à 05:15:19
selector: div.selection_unter_ab:not(:contains("."))
optional: true
filters:
- name: replace
args: ["Aujourd'hui à ", "Today "]
- name: replace
args: ["Hier à ", "Yesterday "]
- name: append
args: " +01:00" # CET
- name: fuzzytime
date_year:
# Le 17.10.2020 à 04:39:44
selector: div.selection_unter_ab:contains(".")
optional: true
filters:
- name: replace
args: ["Le ", ""]
- name: replace
args: ["à ", ""]
- name: append
args: " +01:00" # CET
- 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 }}"
size:
selector: div.selection_unter_ad
grabs:
selector: td:nth-child(8)
selector: div.selection_unter_ae
downloadvolumefactor:
case:
img[src="images/free.gif"]: 0
img[src^="data:image/gif;base64,R0lGODlhEA"]: 0 # encoded gold coin image
"*": 1
text: 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
# TT3.0
minimumseedtime:
# 2.5 days (as seconds = 2.5 x 24 x 60 x 60)
text: 216000
# 3xT

View File

@@ -137,25 +137,9 @@ search:
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
date:
# time type: time elapsed (default)
selector: div.time_col span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "2006-01-02 15:04:05 -07:00"
date:
# time added
selector: div.time_col:not(:has(span))
optional: true
filters:
- name: append
args: " +08:00" # CST
- name: dateparse
args: "2006-01-0215:04:05 -07:00"
doubanid:
selector: a[href*="movie.douban.com/subject/"]
attribute: href
size:
# group size. item size
selector: div.group > div.video_size, div.torrent_item > div.video_size
@@ -179,20 +163,30 @@ search:
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
date:
# time added
selector: div.time_col:contains("发布于"):not(:has(span[title]))
remove: a # drop uploader
date_elapsed:
# time type: time elapsed (default)
selector: div.time_col > span[title]
attribute: title
optional: true
filters:
- name: replace # remove the 'posted on' tag
args: ["发布于", ""]
- name: replace # remove anonymous tag
args: ["匿名", ""]
- name: append
args: " +08:00" # CST
- name: dateparse
args: "2006-01-02 15:04:05 -07:00"
date_added:
# time added
selector: div.time_col:contains("发布于"):not(:has(span[title]))
optional: true
remove: span
filters:
- name: replace # remove the 'posted on' tag
args: ["发布于", ""]
- name: append
args: " +08:00" # CST
- name: dateparse
args: "2006-01-02 15:04:05 -07:00"
date:
text: "{{ if or .Result.date_elapsed .Result.date_added }}{{ or .Result.date_elapsed .Result.date_added }}{{ else }}now{{ end }}"
minimumratio:
text: 1.0
# NexusPHP Standard v1.5 Beta 4 customised

View File

@@ -116,9 +116,10 @@ search:
case:
0: 1 # normal
1: 2 # double
# global MR is 0.25 but torrents must be seeded for 5 days regardless of ratio
# minimumratio:
# text: 0.4
# minimumseedtime:
# text: 0.25
minimumseedtime:
# 5 days (as seconds = 5 x 24 x 60 x 60)
# text: 432000
text: 432000
# json UNIT3D 5.3.0

View File

@@ -21,10 +21,38 @@ caps:
modes:
search: [q]
tv-search: [q]
movie-search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Filter FreeLeech only
default: false
- name: sort
type: select
label: Sort requested from site
default: added
options:
added: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: DESC
options:
DESC: desc
ASC: asc
login:
path: login
method: form
@@ -43,9 +71,15 @@ search:
inputs:
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
search: "{{ .Keywords }}"
descriptions: 0
imdbgt: 0
imdblt: 10
imdb: "{{ .Query.IMDBID }}"
sort: "{{ .Config.sort }}"
d: "{{ .Config.type }}"
rows:
selector: table#torrent-list > tbody > tr:has(a[href^="/details.php?id="])
selector: "table#torrent-list > tbody > tr:has(a[href^=\"/details.php?id=\"]){{ if .Config.freeleech }}:has(a[title=\"100% FL: no download is counted.\"]){{ else }}{{ end }}"
fields:
category:
@@ -75,6 +109,9 @@ search:
filters:
- name: append
args: " ago"
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
downloadvolumefactor:
case:
"a[title=\"25% Free Leech: only 75% of the download is counted.\"]": 0.25

View File

@@ -76,29 +76,38 @@ search:
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
# 0=incldead, 1=active, 2=dead
incldead: 0
# 0=all, 1=normal, 2=free, 3=2x, 4=2x free, 5=50%, 6=2x 50%, 7=30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0=title, 1=descr, 3=uploader, 4=imdb URL
search_area: "{{ if .Query.IMDBID }}4{{ else }}0{{ end }}"
# 0=AND, 1=OR, 2=Exact
search_mode: 0
rows:
selector: table.torrent_list > tbody > tr:has(a[href^="?cat="])
fields:
title:
selector: td:nth-child(2) a
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="]
filters:
- name: re_replace
args: ["\\.", " "]
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?hash="]
attribute: href
description:
selector: h4
size:
selector: td.t_size
grabs:
@@ -136,4 +145,4 @@ search:
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
# NexusPHP tbd
# NexusPHP 146364c08c (Customised)

View File

@@ -111,8 +111,15 @@ search:
fields:
category:
selector: td:nth-child(1)
optional: true
filters:
- name: replace
args: ["---", 4]
category|noappend:
selector: a[href^="browse.php?cat="]
attribute: href
optional: true
filters:
- name: querystring
args: cat
@@ -166,6 +173,12 @@ search:
filters:
- name: replace
args: ["details", "download"]
imdbid:
selector: a[href^="browse.php?imdb="]
attribute: href
filters:
- name: querystring
args: imdb
size:
selector: td:nth-child(4)
seeders:

View File

@@ -1,179 +0,0 @@
---
id: hellastz
name: HellasTZ
description: "HellasTZ is an Greek Private site for TV / MOVIES / GENERAL"
language: el-GR
type: private
encoding: UTF-8
testlinktorrent: false
links:
- https://hellastz.com/
certificates:
- d2e56574d77a5059c30883c221094f0556d99cb6 # expired
caps:
categorymappings:
- {id: 11, cat: Movies, desc: "Movies Αποκλειστικά του HTz (HTz only)"}
- {id: 54, cat: Movies/BluRay, desc: "Movies Blu-Ray 720p-1080p"}
- {id: 213, cat: Movies, desc: "Movies Ελληνικές Ταινιίες (Greek)"}
- {id: 232, cat: Movies/UHD, desc: "Movies Full-HD - 4K"}
- {id: 233, cat: Movies/DVD, desc: "Movies DvdRip Full"}
- {id: 234, cat: Movies/HD, desc: "Movies BDRip-BRRip-HDRip"}
- {id: 235, cat: Movies/WEB-DL, desc: "Movies WEB-720-1080p -HDrip"}
- {id: 236, cat: Movies/SD, desc: "Movies Cam - HDcam-HDts"}
- {id: 242, cat: Movies, desc: "Movies Ταινίες No Subs"}
- {id: 243, cat: Movies/DVD, desc: "Movies Φιλμογραφίες"}
- {id: 90, cat: TV, desc: "TV Ελληνικές Σειρές (Greek)"}
- {id: 96, cat: TV, desc: "TV Ξένες Σειρές (Foreign)"}
- {id: 219, cat: Audio, desc: "Music Ξένη μουσική (Foreign)"}
- {id: 220, cat: Audio, desc: "Music Ελληνική Μουσική (Greek)"}
- {id: 221, cat: Console, desc: "Παιχνίδια (Games)"}
- {id: 223, cat: Books/EBook, desc: "Βιβλία (Books)"}
- {id: 100, cat: Books/Comics, desc: "Comics & Περιοδικά"}
- {id: 225, cat: TV/Documentary, desc: "Ντοκιμαντερ (Documentaries)"}
- {id: 227, cat: PC, desc: "Pc Software"}
- {id: 228, cat: TV/Anime, desc: "Animation"}
- {id: 230, cat: TV/Anime, desc: "Παιδικα μεταγλωτισμε (Children)"}
- {id: 231, cat: TV/Anime, desc: "Παιδικα υποτιτλους (Children w/ subs)"}
- {id: 240, cat: PC/Mobile-Other, desc: "Android - Linux"}
- {id: 241, cat: Audio/Audiobook, desc: "Audio Books"}
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: 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
- name: info
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
path: index.php?page=login
method: post
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: thanks.php
method: post
inputs:
infohash: "{{ .DownloadUri.Query.id }}"
thanks: 1
rndval: "1487013827343"
selectors:
- selector: a[href^="download.php?id="]
attribute: href
search:
paths:
- path: index.php
inputs:
page: torrents
search: "{{ .Keywords }}"
category: "{{ range .Categories }}{{.}};{{end}}"
# 0 all, 1 active only, 2 dead only
active: 0
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"
# does not support imdbid search and does not ruturn imdb link in results
rows:
selector: "table.lista > tbody > tr:has(a[href^=\"index.php?page=torrent-details&id=\"]){{ if .Config.freeleech }}:has(img[alt=\"Gold 100% Free\"]){{ else }}{{ end }}"
fields:
category:
selector: a[href^="index.php?page=torrents&category="]
attribute: href
filters:
- name: querystring
args: category
title:
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
poster:
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
attribute: onmouseover
filters:
- name: regexp
args: "src=(.*?) "
details:
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
attribute: href
download:
selector: a[href^="index.php?page=downloadcheck&id="]
attribute: href
date:
selector: td:nth-child(4)
filters:
- name: append
args: " +02:00" # EET
- name: dateparse
args: "02/01/2006 -07:00"
seeders:
selector: td:nth-child(5)
leechers:
selector: td:nth-child(6)
grabs:
selector: td:nth-child(7)
size:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img[alt="Gold 100% Free"]: 0
img[alt="Silver 50% Free"]: 0.5
img[alt="Bronze 25% Free"]: 0.75
"*": 1
uploadvolumefactor:
case:
img[alt="2x Upload Multiplier"]: 2
img[alt="3x Upload Multiplier"]: 3
img[alt="4x Upload Multiplier"]: 4
img[alt="5x Upload Multiplier"]: 5
img[alt="6x Upload Multiplier"]: 6
img[alt="7x Upload Multiplier"]: 7
img[alt="8x Upload Multiplier"]: 8
img[alt="9x Upload Multiplier"]: 9
img[alt="10x Upload Multiplier"]: 10
"*": 1
minimumratio:
text: 1.0
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# xbtitFM v3.1.00

View File

@@ -1,144 +0,0 @@
---
id: hidden-palace
name: Hidden-Palace
description: "Hidden-Palace is a Private torrent site for MOVIES / TV"
language: en-US
type: private
encoding: UTF-8
links:
- https://hidden-palace.net/
legacylinks:
- https://hidden-palace.xyz/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movie"}
- {id: 2, cat: TV, desc: "TV"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
movie-search: [q, imdbid, tmdbid]
settings:
- name: apikey
type: text
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://hidden-palace.net/\" target =_blank>Hidden-Palace</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
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"
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: ["\\.", " "]
rows:
selector: data
attribute: attributes
count:
selector: meta.total
fields:
categorydesc:
selector: category
title:
selector: name
details:
selector: details_link
download:
selector: download_link
poster:
selector: poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
files:
selector: num_file
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: times_completed
date:
# 2021-10-18T00:34:50.000000Z"
selector: created_at
size:
selector: size
downloadvolumefactor:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
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
case:
0: 1 # normal
1: 2 # double
minimumratio:
text: 1.0
minimumseedtime:
# 1 day (as seconds = 1 x 24 x 60 x 60)
text: 86400
# json UNIT3D 6.0.5

View File

@@ -142,20 +142,20 @@ search:
selector: a[href^="torrents_data/posters/"]
attribute: href
date:
selector: td:nth-last-child(6)
selector: td:nth-last-child(5)
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "2006-01-02 15:04:05 -07:00"
size:
selector: td:nth-last-child(5) b
selector: td:nth-last-child(4) b
grabs:
selector: td:nth-last-child(4)
seeders:
selector: td:nth-last-child(3)
seeders:
selector: td:nth-last-child(2) a b
leechers:
selector: td:nth-last-child(2)
selector: td:nth-last-child(1)
downloadvolumefactor:
text: 1
uploadvolumefactor:

View File

@@ -192,4 +192,10 @@ search:
i[class*="fa-globe text-green"]: 2 # Global Double Upload
i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
"*": 1
# global MR is 1.0 but torrents must be seeded for 2 days regardless of ratio
# minimumratio:
# text: 1.0
minimumseedtime:
# 2 days (as seconds = 5 x 24 x 60 x 60)
text: 172800
# UNIT3D 1.9.3

View File

@@ -25,7 +25,35 @@ caps:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q, artist]
music-search: [q, album, artist]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: s3
options:
s3: created
s6: seeders
s4: size
s1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: login.php
@@ -34,22 +62,23 @@ login:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
keeplogged: 1
login: "Log in"
login: "Log In!"
error:
- selector: form#loginform > span.warning, font[color="red"]
test:
path: torrents.php
search:
# https://jpopsuki.eu/ajax.php?section=torrents&artistname=&action=advanced&torrentname=snow+man&remastertitle=&filelist=&bitrate=&format=&media=&year=&freeleech=&remastered=&searchtags=&tags_type=0&order_by=s3&order_way=desc&enablegrouping=1
paths:
- path: ajax.php
inputs:
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}{{ if or .Query.Artist .Keywords }}{{ else }}searchtags=japanese&tags_type=0&{{ end }}"
searchstr: "{{ if .Query.Artist }}{{ .Query.Artist }}{{ else }}{{ .Keywords }}{{ end }}"
# s1 name, s2 year, s3 added, s4 size, s5 snatched, s6 seeders, s7 leechers
order_by: s3
# desc, asc
order_way: desc
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}{{ if or .Query.Album .Query.Artist .Keywords }}action=advanced{{ else }}searchtags=japanese&tags_type=0{{ end }}"
artistname: "{{ if .Query.Artist }}{{ .Query.Artist }}{{ else }}{{ end }}"
torrentname: "{{ if .Query.Album }}{{ .Query.Album }}{{ else }}{{ .Keywords }}{{ end }}"
freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
order_by: "{{ .Config.sort }}"
order_way: "{{ .Config.type }}"
disablegrouping: 1
section: torrents
@@ -108,4 +137,6 @@ search:
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 0.6
# engine n/a

View File

@@ -0,0 +1,142 @@
---
id: knaben
name: Knaben
description: "Knaben is a Public torrent meta-search engine"
language: en-US
type: public
encoding: UTF-8
links:
- https://knaben.eu/
caps:
categorymappings:
# Cat ids used for filtering /browse/ are not consistent with those for results, so double-check when updating.
# They appear to be using nZEDb/Newznab/Jackett cat ids, so if there are empty categories, resort to those.
# Audio
- {id: 3000, cat: Audio, desc: "Audio"}
- {id: 3010, cat: Audio/MP3, desc: "Audio/MP3"}
- {id: 3020, cat: Audio/Video, desc: "Audio/Video"}
- {id: 3030, cat: Audio/Audiobook, desc: "Audio/Audiobook"}
- {id: 3040, cat: Audio/Lossless, desc: "Audio/Lossless"}
- {id: 3050, cat: Audio/Other, desc: "Audio/Other"}
# Console
- {id: 1000, cat: Console, desc: "Console"}
- {id: 1010, cat: Console/NDS, desc: "Console/NDS"}
- {id: 1020, cat: Console/PSP, desc: "Console/PSP"}
- {id: 1030, cat: Console/Wii, desc: "Console/Wii"}
- {id: 1040, cat: Console/XBox, desc: "Console/Xbox"}
- {id: 1050, cat: Console/XBox 360, desc: "Console/Xbox 360"}
- {id: 1080, cat: Console/PS3, desc: "Console/PS3"}
- {id: 1110, cat: Console/3DS, desc: "Console/3DS"}
- {id: 1120, cat: Console/PS Vita, desc: "Console/PS Vita"}
- {id: 1180, cat: Console/PS4, desc: "Console/PS4"}
- {id: 1090, cat: Console/Other, desc: "Console/Other"}
# Movies
- {id: 2000, cat: Movies, desc: "Movies"}
- {id: 2010, cat: Movies/Foreign, desc: "Movies/Foreign"}
- {id: 2030, cat: Movies/SD, desc: "Movies/SD"}
- {id: 2040, cat: Movies/HD, desc: "Movies/HD"}
- {id: 2045, cat: Movies/UHD, desc: "Movies/UHD"}
- {id: 2060, cat: Movies/3D, desc: "Movies/3D"}
- {id: 2050, cat: Movies/BluRay, desc: "Movies/BluRay"}
- {id: 2070, cat: Movies/DVD, desc: "Movies/DVD"}
- {id: 2020, cat: Movies/Other, desc: "Movies/Other"}
# PC
- {id: 4000, cat: PC, desc: "PC/PC"}
- {id: 4020, cat: PC/ISO, desc: "PC/ISO"}
- {id: 4030, cat: PC/Mac, desc: "PC/Mac"}
- {id: 4040, cat: PC/Mobile-Other, desc: "PC/Mobile-Other"}
- {id: 4050, cat: PC/Games, desc: "PC/Games"}
- {id: 4060, cat: PC/Mobile-iOS, desc: "PC/Mobile-iOS"}
- {id: 4070, cat: PC/Mobile-Android, desc: "PC/Mobile-Android"}
# Anime
- {id: 5070, cat: TV/Anime, desc: "Anime"}
# TV
- {id: 5000, cat: TV, desc: "TV"}
- {id: 5020, cat: TV/Foreign, desc: "TV/FOREIGN"}
- {id: 5030, cat: TV/SD, desc: "TV/SD"}
- {id: 5040, cat: TV/HD, desc: "TV/HD"}
- {id: 5045, cat: TV/UHD, desc: "TV/UHD"}
- {id: 5060, cat: TV/Sport, desc: "TV/Sport"}
- {id: 5080, cat: TV/Documentary, desc: "TV/Documentary"}
- {id: 5050, cat: TV/Other, desc: "TV/OTHER"}
# XXX
- {id: 6000, cat: XXX, desc: "XXX"}
- {id: 6010, cat: XXX/DVD, desc: "XXX/DVD"}
- {id: 6060, cat: XXX/ImageSet, desc: "XXX/Imageset"}
- {id: 6070, cat: XXX/Other, desc: "XXX/Other"}
# Books
- {id: 7000, cat: Books, desc: "Books"}
- {id: 7020, cat: Books/EBook, desc: "Books/Ebook"}
- {id: 7030, cat: Books/Comics, desc: "Books/Comics"}
- {id: 8030, cat: Books/Mags, desc: "Books/Magazines"}
- {id: 7040, cat: Books/Technical, desc: "Books/Technical"}
- {id: 7050, cat: Books/Other, desc: "Books/Other"}
# Other
- {id: 8000, cat: Other, desc: "Other"}
- {id: 8010, cat: Other/Misc, desc: "Other/Misc"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: sort
type: select
label: Sort requested from site
default: Date
options:
Date: created
Seeders: seeders
Size: size
Title: title
search:
paths:
- path: "{{ if .Keywords }}search/?q={{ .Keywords }}&p=1&cat=All&s={{ else }}browse/1/0/{{ end }}{{ .Config.sort }}"
rows:
selector: tr[title^="Cached at"]
fields:
category:
selector: a[href^="/browse/"]
attribute: href
filters:
- name: split
args: ["/", 3]
title:
selector: td:nth-child(2) a
details:
selector: td:last-child a
attribute: href
magnet:
selector: td:nth-child(2) a
attribute: href
description:
selector: td:last-child a
filters:
- name: prepend
args: "Source: "
date:
selector: td:nth-child(4)
attribute: title
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "2006-01-02T15:04:05 -07:00"
size:
selector: td:nth-child(3)
seeders:
selector: td:nth-child(5)
leechers:
selector: td:nth-child(6)
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -68,13 +68,12 @@ caps:
book-search: [q]
settings:
- name: cookie
- name: username
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Access this tracker with your browser<li>click on the <b>Apply Filter</b> button on the page to invoke the search and solve the challenge<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button (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>"
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -101,9 +100,20 @@ settings:
asc: asc
login:
method: cookie
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
submitme: Login
use_ssl: 1
perm_ssl: 2
returnto: /
error:
- selector: td.embedded:contains("Login failed")
test:
path: browse.php
path: index.php
selector: a[href*="/logout.php?hash_please="]
search:
paths:

View File

@@ -105,6 +105,11 @@ login:
path: index.php
selector: a[href="logout.php"]
download:
selectors:
- selector: a[href$="&https=1"]
attribute: href
search:
paths:
- path: torrents.php
@@ -120,7 +125,7 @@ search:
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdb url
# 0 title, 3 uploader, 4 imdb url
search_area: "{{ if .Query.IMDBID }}4{{ else }}0{{ end }}"
# 0 and, 1 or, 2 exact
search_mode: 0
@@ -151,7 +156,7 @@ search:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
selector: a[href^="details.php?id="]
attribute: href
poster:
selector: img[alt="torrent thumbnail"]

View File

@@ -108,6 +108,11 @@ login:
path: index.php
selector: a[href="logout.php"]
download:
selectors:
- selector: a[href$="&https=1"]
attribute: href
search:
paths:
- path: torrents.php
@@ -123,7 +128,7 @@ search:
incldead: 0
# 0 all, 1 normal, 2 free, 3 2x, 4 2xfree, 5 50%, 6 2x50%, 7 30%
spstate: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 title, 1 descr, 3 uploader, 4 imdb url
# 0 title, 3 uploader, 4 imdb url
search_area: "{{ if .Query.IMDBID }}4{{ else }}0{{ end }}"
# 0 AND, 1 OR, 2 exact
search_mode: 0
@@ -157,7 +162,7 @@ search:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
selector: a[href^="details.php?id="]
attribute: href
poster:
selector: img[alt="torrent thumbnail"]

View File

@@ -0,0 +1,150 @@
---
id: nbtorrents
name: NBTorrents
description: "NBTorrents is an INDIAN Private site for MOVIES / TV / MUSIC"
language: en-US
type: private
encoding: UTF-8
links:
- https://www.nbtorrents.com/
caps:
categorymappings:
- {id: 22, cat: TV/Anime, desc: "Anime & Cartoon"}
- {id: 26, cat: TV/Documentary, desc: "Documentaries"}
- {id: 1, cat: Movies/UHD, desc: "Movies UHD & BluRay"}
- {id: 3, cat: Movies/BluRay, desc: "Movies BDRips"}
- {id: 6, cat: Movies/DVD, desc: "Movies DVD"}
- {id: 7, cat: Movies/DVD, desc: "Movies DVDRip"}
- {id: 8, cat: Movies, desc: "Movies Pre"}
- {id: 2, cat: Movies, desc: "Movies Remux"}
- {id: 4, cat: Movies/WEB-DL, desc: "Movies Web"}
- {id: 5, cat: Movies/WEB-DL, desc: "Movies WebRip"}
- {id: 15, cat: Audio/Lossless, desc: "Music CD & FLAC"}
- {id: 17, cat: Audio/MP3, desc: "Music MP3"}
- {id: 18, cat: Audio, desc: "Music Pack"}
- {id: 20, cat: Audio, desc: "Music Podcast"}
- {id: 19, cat: Audio/Video, desc: "Music Video"}
- {id: 16, cat: Audio, desc: "Music Web"}
- {id: 25, cat: TV/Sport, desc: "Sports"}
- {id: 10, cat: TV/UHD, desc: "TV UHD & BluRay"}
- {id: 11, cat: TV, desc: "TV BDRips"}
- {id: 14, cat: TV, desc: "TV packs"}
- {id: 12, cat: TV/WEB-DL, desc: "TV Web"}
- {id: 13, cat: TV/WEB-DL, desc: "TV WebRips"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-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: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: login.php
method: form
form: form[action="takelogin.php"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: td.colhead:contains("failed")
message:
selector: table tr td.text
test:
path: browse.php
selector: a[href*="logout.php?hash_insert="]
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
searchin: title
incldead: 1
only_free: "{{ if .Config.freeleech }}1{{ else }}0{{ end }}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table.mainouter tr table tr:has(a[href^="download.php?torrent="])
filters:
- name: andmatch
fields:
category:
selector: td a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: td a[href^="details.php?id="]
details:
selector: td a[href^="details.php?id="]
attribute: href
poster:
selector: td a[href^="details.php?id="]
attribute: onmouseover
filters:
- name: regexp
args: "src=\\\\'(.*?)\\\\' "
download:
selector: td a[href^="download.php?torrent="]
attribute: href
imdbid:
selector: td a[href*="imdb.com/title/tt"]
attribute: href
files:
selector: td:nth-of-type(5)
date:
selector: td:nth-of-type(7)
filters:
- name: append
args: " +05:30" # IST
- name: dateparse
args: "Jan 2 2006 03:04 PM -07:00"
size:
selector: td:nth-of-type(8)
grabs:
selector: td:nth-of-type(9)
seeders:
selector: td:nth-of-type(10)
leechers:
selector: td:nth-of-type(11)
downloadvolumefactor:
case:
"img[title=\"Free Torrent\"]": 0 # torrent specific free leech (icon)?
"a.info:contains(\"Free\")": 0 # global freeleech note?
"*": 1
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -7,7 +7,7 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://www.torrent911.net/
- https://www.torrent911.org/
- https://www.t911.me/
legacylinks:
- https://www.oxtorrent.bz/
@@ -37,6 +37,7 @@ legacylinks:
- https://www.t911.net/
- https://oxtorrent.unblockit.blue/ # proxy for *.co, a clone without derniers
- https://oxtorrent.nocensor.sbs/ # proxy for *.co, a clone without derniers
- https://www.torrent911.net/
caps:
categorymappings:

View File

@@ -178,17 +178,11 @@ search:
selector: td:nth-child(8)
downloadvolumefactor:
case:
tr.free_bg: 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:

View File

@@ -91,6 +91,7 @@ search:
args: "{{ .Result.description }}"
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
date:
selector: td:nth-child(5)
filters:

View File

@@ -139,4 +139,4 @@ search:
1: 2 # double
minimumratio:
text: 1.0
# json UNIT3D 6.0.8
# json UNIT3D 6.1.0

View File

@@ -37,8 +37,8 @@ caps:
modes:
search: [q]
tv-search: [q]
movie-search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
settings:
@@ -66,8 +66,10 @@ settings:
search:
paths:
# http://rutor.info/search/0/0/100/0/gotham%2004x01
- path: "{{ if .Keywords }}search/0/0/100/{{ .Config.sort }}/{{ .Keywords }}/{{ else }}top/{{ end }}"
# http://rutor.info/search/0/0/010/0/tt10288566 # search title and descr for imdb
# http://rutor.info/search/0/0/100/0/gotham%2004x01 # search title for query
# http://rutor.info/top/ # search keywordless
- path: "{{ if .Query.IMDBID }}search/0/0/010/{{ .Config.sort }}/{{ .Query.IMDBID }}{{ else }}{{ end }}{{ if .Keywords }}search/0/0/100/{{ .Config.sort }}/{{ .Keywords }}/{{ else }}{{ end }}{{ if or .Keywords .Query.IMDBID }}{{ else }}top/{{ end }}"
rows:
selector: tr:has(td:has(a.downgif))

View File

@@ -0,0 +1,156 @@
---
id: satclubbing
name: SATClubbing
description: "SATClubbing is a RUSSIAN/ENGLISH Semi-Private Torrent Tracker for ELECTRONIC MUSIC"
language: en-US
type: semi-private
encoding: UTF-8
links:
- https://satclubbing.club/
caps:
categorymappings:
- {id: 23, cat: Audio, desc: "Albums - Trance"}
- {id: 34, cat: Audio, desc: "Singles - Trance"}
- {id: 24, cat: Audio, desc: "Livesets - Trance"}
- {id: 30, cat: Audio, desc: "Albums - House"}
- {id: 25, cat: Audio, desc: "Singles - House"}
- {id: 32, cat: Audio, desc: "Livesets - House"}
- {id: 18, cat: Audio, desc: "Albums - Techno"}
- {id: 29, cat: Audio, desc: "Singles - Techno"}
- {id: 21, cat: Audio, desc: "Livesets - Techno"}
- {id: 35, cat: Audio, desc: "Albums - Hardstyle"}
- {id: 20, cat: Audio, desc: "Singles - Hardstyle"}
- {id: 28, cat: Audio, desc: "Livesets - Hardstyle"}
- {id: 22, cat: Audio, desc: "Albums - Goa/Psy"}
- {id: 33, cat: Audio, desc: "Singles - Goa/Psy"}
- {id: 26, cat: Audio, desc: "Livesets - Goa/Psy"}
- {id: 31, cat: Audio, desc: "Beat/Breaks"}
- {id: 40, cat: Audio, desc: "Electronic"}
- {id: 42, cat: Audio, desc: "Albums - Drum and Bass"}
- {id: 43, cat: Audio, desc: "Singles - Drum and Bass"}
- {id: 44, cat: Audio, desc: "Livesets - Drum and Bass"}
- {id: 45, cat: Audio, desc: "Albums - Dance"}
- {id: 46, cat: Audio, desc: "Singles - Dance"}
- {id: 36, cat: Audio, desc: "Unreleased Tracks"}
- {id: 41, cat: Audio, desc: "Bass"}
- {id: 39, cat: Audio, desc: "Ambient / Chill"}
- {id: 27, cat: Other, desc: "Music Plugins/Apps/Misc"}
- {id: 19, cat: Audio/Video, desc: "DVD/Video/Clips"}
- {id: 38, cat: Audio, desc: "SCMT Pack"}
- {id: 47, cat: Audio, desc: "Albums - Hardcore"}
- {id: 48, cat: Audio, desc: "Singles - Hardcore"}
- {id: 49, cat: Audio, desc: "Livesets - Hardcore"}
- {id: 50, cat: Audio, desc: "Rave"}
- {id: 51, cat: Audio, desc: "Acid"}
modes:
search: [q]
music-search: [q, artist]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 4
options:
4: created
7: seeders
5: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: div.error
test:
path: /
selector: a[href="logout.php"]
search:
paths:
# https://satclubbing.club/browse.php?search=&cat=0&incldead=1&age=0&quality=0&c23=1&c34=1
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ if .Query.Artist }}{{ .Query.Artist }}{{ else }}{{ .Keywords }}{{ end }}"
# 0 active, 1 incldead, 2 onlydead, 3 freeleech, 4 seedless
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
# 0 any, 1 fresh, 2 classic, 3 not classic
age: 0
# 0 any, 320 mp3 cbr, 1000 mp3 vbr, 2000 lossless
quality: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table > tbody > tr > td.index > table.embedded[cellspacing="0"][cellpadding="5"][width="100%"] > tbody > tr:has(a[href^="details.php?id="])
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="]
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
date:
selector: td:last-child
filters:
- name: replace
args: ["added ", ""]
- name: timeago
files:
selector: a[href$="filelist=1"]
size:
selector: td:has(a[href$="filelist=1"]) + td + td
seeders_optional:
selector: a[href$="toseeders=1"]
optional: true
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
selector: td:has(a[href$="toseeders=1"])
optional: true
filters:
- name: split
args: ["|", 1]
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
downloadvolumefactor:
case:
img[src$="pic/free_icon.gif"]: 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 0.60
# engine n/a

View File

@@ -1,161 +0,0 @@
---
id: seedfile
name: SeedFile
description: "SeedFile (SF) is a ROMANIAN Private Torrent Tracker for 0DAY / GENERAL"
language: ro-RO
type: private
encoding: UTF-8
links:
- https://www.seedfile.io/
legacylinks:
- https://www.seedfile.ro/
caps:
categorymappings:
- {id: 1, cat: Books/Mags, desc: "Cărți/Reviste"}
- {id: 2, cat: Other, desc: "Desene SD"}
- {id: 3, cat: Other, desc: "Diverse n/a"}
- {id: 5, cat: Movies/BluRay, desc: "Filme Blu-Ray"}
- {id: 6, cat: Movies/DVD, desc: "Filme DVD"}
- {id: 7, cat: Movies/DVD, desc: "Filme DVD-RO"}
- {id: 8, cat: Movies/HD, desc: "Filme HD"}
- {id: 9, cat: Movies/HD, desc: "Filme HD-RO"}
- {id: 10, cat: Movies/SD, desc: "Filme SD"}
- {id: 11, cat: Movies/SD, desc: "Filme SD-RO"}
- {id: 12, cat: Other, desc: "Imagini"}
- {id: 13, cat: Console, desc: "Jocuri Console"}
- {id: 14, cat: PC/Games, desc: "Jocuri PC"}
- {id: 15, cat: Audio, desc: "Muzică"}
- {id: 16, cat: PC/Mobile-Other, desc: "Mobile"}
- {id: 17, cat: PC, desc: "Programe"}
- {id: 18, cat: TV/HD, desc: "Seriale HD"}
- {id: 19, cat: TV/HD, desc: "Seriale HD-RO"}
- {id: 20, cat: TV/SD, desc: "Seriale TV"}
- {id: 21, cat: TV/SD, desc: "Seriale TV-RO"}
- {id: 22, cat: TV/Sport, desc: "Sport"}
- {id: 23, cat: Audio/Video, desc: "Video Clip"}
- {id: 24, cat: XXX, desc: "Adult 18+"}
- {id: 36, cat: Movies/3D, desc: "Video 3D"}
- {id: 37, cat: Movies/HD, desc: "Animație HD"}
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: Search freeleech only
default: false
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: div.recover-error2
test:
path: profile.php
download:
selectors:
- selector: a[href^="download.php/"]
attribute: href
search:
paths:
- path: download-torrents
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active, 1 incldead, 2 onlydead, 3 freeleech
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
rows:
selector: tr.browse
fields:
category:
selector: a[href^="torrents.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="]
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="details.php?id="]
attribute: href
files:
selector: td:nth-last-child(7)
date:
selector: td:nth-last-child(5)
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
- name: re_replace
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前|sedan)", " ago"]
- name: re_replace
args: ["(?i)(saniye|sekundit|sekunder|secondi|sekund|segundos|sekundami|секунд|secunde|secondes|Sekunden|секунди|seconden|秒前)", "seconds"]
- name: re_replace
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten|minuter)", "minutes"]
- name: re_replace
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟|分)", " minute"]
- name: re_replace
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden|timmar)", "hours"]
- name: re_replace
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間|timme)", " hour"]
- name: re_replace
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen|dagar)", "days"]
- name: re_replace
args: ["(?i)(gün|päev|dag|giorno|dzień|dia|den|день|zi|día|jour|Tag|ден|天|日)", " day"]
- name: re_replace
args: ["(?i)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken|veckor)", "weeks"]
- name: re_replace
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間|vecka)", " week"]
- name: re_replace
args: ["(?i) (ay)", "month"]
- name: re_replace
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden|månader)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月|månad)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
- name: re_replace
args: ["(?i)(För |und)", ""] # Misc removals
- name: timeago
size:
selector: td:nth-last-child(4)
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
downloadvolumefactor:
case:
"img[src=\"./pic/freeleech.png\"]": 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# engine n/a

View File

@@ -6,15 +6,17 @@ language: fr-FR
type: private
encoding: UTF-8
links:
- https://spidertk.top/
legacylinks:
- https://spidertk.xyz/
caps:
categorymappings:
- {id: 401, cat: Movies/BluRay, desc: "Films / 2160p / BluRay"}
- {id: 401, cat: Movies/BluRay, desc: "Films / 2160p / BluRay Full"}
- {id: 410, cat: Movies/UHD, desc: "Films / 2160p / REMUX"}
- {id: 411, cat: Movies/UHD, desc: "Films / 2160p / AV1"}
- {id: 412, cat: Movies/UHD, desc: "Films / 2160p / x265"}
- {id: 413, cat: Movies/BluRay, desc: "Films / 1080p / BluRay"}
- {id: 413, cat: Movies/BluRay, desc: "Films / 1080p / BluRay Full"}
- {id: 414, cat: Movies/HD, desc: "Films / 1080p / REMUX"}
- {id: 415, cat: Movies/HD, desc: "Films / 1080p / AV1"}
- {id: 416, cat: Movies/HD, desc: "Films / 1080p / x265"}
@@ -34,7 +36,6 @@ caps:
- {id: 426, cat: Movies, desc: "Films / Animation"}
- {id: 427, cat: Movies/Other, desc: "Films / Spectacle"}
- {id: 428, cat: Audio/Video, desc: "Films / Concerts, Clips"}
- {id: 429, cat: Movies, desc: "Films / VOSTFR"}
- {id: 460, cat: Movies, desc: "Films / VO"}
- {id: 430, cat: TV, desc: "Séries / BluRay"}
- {id: 431, cat: TV, desc: "Séries / Pack VF"}
@@ -50,7 +51,6 @@ caps:
- {id: 441, cat: TV/Documentary, desc: "Séries / Documentaire"}
- {id: 442, cat: TV/Sport, desc: "Séries / Sport"}
- {id: 443, cat: TV, desc: "Séries / Émission TV"}
- {id: 461, cat: TV, desc: "Séries / VO"}
- {id: 444, cat: Books/EBook, desc: "Livres / Roman"}
- {id: 445, cat: Audio/Audiobook, desc: "Livres / Audio"}
- {id: 446, cat: Books/Mags, desc: "Livres / Magazine"}
@@ -63,9 +63,9 @@ caps:
- {id: 453, cat: PC/0day, desc: "Logiciels / Appli Windows"}
- {id: 454, cat: PC/Mac, desc: "Logiciels / Appli Mac"}
- {id: 455, cat: PC, desc: "Logiciels / Appli Linux"}
- {id: 459, cat: PC/Mobile-Android, desc: "Logiciels / Android"}
- {id: 456, cat: Console, desc: "Logiciels / Console"}
- {id: 457, cat: PC/Mobile-iOS, desc: "Logiciels / iOS"}
- {id: 459, cat: PC/Mobile-Android, desc: "Logiciels / Android"}
modes:
search: [q]
@@ -210,18 +210,18 @@ search:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
img[src="pic/freeleech.png"]: 0
img[src="pic/2xupfree.png"]: 0
img[src="pic/50pc.png"]: 0.5
img[src="pic/2x50pc.png"]: 0.5
img[src="pic/30pc.png"]: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
img[src="pic/2x.png"]: 2
img[src="pic/2xupfree.png"]: 2
img[src="pic/2x50pc.png"]: 2
"*": 1
minimumratio:
text: 0.81
# NexusPHP Standard v1.5 Beta 4
# NexusPHP Custom 1.7.7 2022-04-30

View File

@@ -203,4 +203,4 @@ search:
case:
"div[onmouseover=\"return overlib('Freeleech: Ja');\"]": 0
"*": 1
# engine n/a
# 3xT

View File

@@ -23,6 +23,7 @@ caps:
- {id: 104, cat: Movies/DVD, desc: "Filme - DVD-R"}
- {id: 135, cat: Movies/HD, desc: "Filme - HD"}
- {id: 130, cat: Movies, desc: "Filme - Klassiker"}
- {id: 147, cat: Movies, desc: "Filme - Pack"}
- {id: 134, cat: Movies/SD, desc: "Filme - SD"}
- {id: 136, cat: Movies/UHD, desc: "Filme - UHD"}
- {id: 105, cat: Movies/HD, desc: "Filme - x264/x265"}

View File

@@ -11,19 +11,16 @@ legacylinks:
- https://torrent-explosiv.eu/
caps:
# dont forget to update the search fields category case block
categorymappings:
# Movie
- {id: 179, cat: Movies/SD, desc: "Movie SD"}
- {id: 180, cat: Movies/HD, desc: "Movie HD"}
- {id: 185, cat: Movies/UHD, desc: "Movie UHD"}
- {id: 184, cat: Movies/BluRay, desc: "Movie BluRay"}
- {id: 181, cat: Movies/DVD, desc: "Movie DVD-R"}
- {id: 183, cat: Movies/3D, desc: "Movie 3D"}
- {id: 221, cat: Movies, desc: "Movie Kids"}
- {id: 186, cat: Movies/Foreign, desc: "Movie Englisch"}
- {id: 181, cat: Movies/DVD, desc: "Movie DVD/HD2DVD"}
- {id: 184, cat: Movies/BluRay, desc: "Movie BluRay/Remux"}
- {id: 182, cat: Movies/SD, desc: "Movie Pack SD"}
- {id: 228, cat: Movies/HD, desc: "Movie Pack HD"}
- {id: 225, cat: Movies/HD, desc: "Movie Pack HD"}
- {id: 186, cat: Movies/Foreign, desc: "Movie International"}
# Serien
- {id: 198, cat: TV/SD, desc: "Serien SD"}
- {id: 199, cat: TV/HD, desc: "Serien HD"}
@@ -32,54 +29,59 @@ caps:
- {id: 223, cat: TV/SD, desc: "Serien Pack SD"}
- {id: 201, cat: TV/HD, desc: "Serien Pack HD"}
- {id: 224, cat: TV/UHD, desc: "Serien Pack UHD"}
# Game
- {id: 173, cat: PC/Games, desc: "Game PC"}
- {id: 174, cat: Console/PSP, desc: "Game PlayStation"}
- {id: 175, cat: Console/XBox, desc: "Game XBOX"}
- {id: 176, cat: Console/NDS, desc: "Game Nintendo"}
- {id: 177, cat: Console, desc: "Game Wimmelbild"}
- {id: 178, cat: Console/Other, desc: "Game Sonstiege"}
# Musik
- {id: 187, cat: Audio, desc: "Musik Alben"}
- {id: 188, cat: Audio, desc: "Musik Sampler"}
- {id: 190, cat: Audio, desc: "Musik Charts"}
- {id: 189, cat: Audio, desc: "Musik Mixe"}
- {id: 196, cat: Audio, desc: "Musik Pack"}
- {id: 193, cat: Audio/Lossless, desc: "Musik Flac"}
- {id: 232, cat: Audio/Lossless, desc: "Musik Flac Pack"}
- {id: 192, cat: Audio, desc: "Musik Discographie"}
- {id: 191, cat: Audio/MP3, desc: "Musik Single"}
- {id: 194, cat: Audio/Video, desc: "Musik Musikvideo"}
- {id: 219, cat: Audio, desc: "Musik Hörspiele"}
- {id: 227, cat: Audio/Audiobook, desc: "Musik A-Book"}
# Doku
- {id: 170, cat: TV/Documentary, desc: "Doku SD"}
- {id: 171, cat: TV/Documentary, desc: "Doku HD"}
- {id: 172, cat: TV/Documentary, desc: "Doku Pack SD"}
- {id: 226, cat: TV/Documentary, desc: "Doku Pack HD"}
# Software
- {id: 168, cat: PC/0day, desc: "Software Windows"}
- {id: 166, cat: PC/Mac, desc: "Software Mac"}
- {id: 165, cat: PC, desc: "Software Linux"}
- {id: 169, cat: PC/Mobile-Android, desc: "Software Android"}
- {id: 227, cat: PC/Mobile-iOS, desc: "Software ios"}
# Game
- {id: 173, cat: PC/Games, desc: "Game PC"}
- {id: 174, cat: Console/PSP, desc: "Game PlayStation"}
- {id: 175, cat: Console/XBox, desc: "Game XBOX"}
- {id: 176, cat: Console/Wii, desc: "Game Wii - Switch"}
- {id: 222, cat: Console/NDS, desc: "Game NDS-3DS"}
- {id: 177, cat: Console, desc: "Game Wimmelbild"}
- {id: 178, cat: Console/Other, desc: "Game Sonstieges"}
# Musik
- {id: 187, cat: Audio, desc: "Musik Alben"}
- {id: 188, cat: Audio, desc: "Musik Sampler"}
- {id: 189, cat: Audio, desc: "Musik Mixe"}
- {id: 190, cat: Audio, desc: "Musik Charts"}
- {id: 191, cat: Audio/MP3, desc: "Musik Single"}
- {id: 193, cat: Audio/Lossless, desc: "Musik Flac"}
- {id: 196, cat: Audio, desc: "Musik Pack mp3"}
- {id: 228, cat: Audio/Lossless, desc: "Musik Pack Flac"}
- {id: 194, cat: Audio/Video, desc: "Musik Musikvideo"}
# Sport
- {id: 203, cat: TV/Sport, desc: "Sport Fussball"}
- {id: 230, cat: TV/Sport, desc: "Sport Formel 1"}
- {id: 204, cat: TV/Sport, desc: "Sport Wrestling"}
- {id: 231, cat: TV/Sport, desc: "Sport Sonstiges"}
# Doku
- {id: 170, cat: TV/Documentary, desc: "Doku SD"}
- {id: 171, cat: TV/Documentary, desc: "Doku HD"}
- {id: 229, cat: TV/Documentary, desc: "Doku UHD"}
- {id: 172, cat: TV/Documentary, desc: "Doku Pack"}
- {id: 203, cat: TV/Sport, desc: "Sport SD"}
- {id: 204, cat: TV/Sport, desc: "Sport HD"}
- {id: 229, cat: TV/Sport, desc: "Sport UHD"}
# Ebooks
- {id: 212, cat: Books/Other, desc: "Ebooks Zeitungen"}
- {id: 211, cat: Books/Mags, desc: "Ebooks Magazine"}
- {id: 213, cat: Books/EBook, desc: "Ebooks Bücher"}
- {id: 214, cat: Books/Comics, desc: "Ebooks Comics"}
- {id: 215, cat: XXX/Other, desc: "Ebooks XXX"}
# XXX
- {id: 205, cat: XXX/SD, desc: "XXX SD"}
- {id: 206, cat: XXX/x264, desc: "XXX HD"}
- {id: 208, cat: XXX, desc: "XXX Clips"}
- {id: 209, cat: XXX/ImageSet, desc: "XXX Bilder"}
- {id: 207, cat: XXX/Pack, desc: "XXX Pack"}
- {id: 207, cat: XXX/Pack, desc: "XXX Pack SD"}
- {id: 231, cat: XXX/Pack, desc: "XXX Pack HD"}
- {id: 230, cat: XXX/Other, desc: "XXX Ebook"}
- {id: 210, cat: XXX/Other, desc: "XXX Sonstiges"}
# Other
- {id: 216, cat: Books/Other, desc: "Other PDF"}
- {id: 217, cat: Audio/Other, desc: "Other Hörspiele"}
- {id: 218, cat: Books/Other, desc: "Other EPaper"}
- {id: 219, cat: Audio/Audiobook, desc: "Other A-Books"}
- {id: 220, cat: Other, desc: "Other Sonstiges"}
modes:
search: [q]
@@ -158,76 +160,12 @@ search:
details:
selector: a.selection_a
attribute: href
category:
selector: div.kat_cat_pic
case:
# Movie
":has(div.kat_cat_pic_name:contains(\"Movie\")):has(div.kat_cat_pic_name_b:contains(\"Pack SD\"))": 182
":has(div.kat_cat_pic_name:contains(\"Movie\")):has(div.kat_cat_pic_name_b:contains(\"Pack HD\"))": 228
":has(div.kat_cat_pic_name:contains(\"Movie\")):has(div.kat_cat_pic_name_b:contains(\"SD\"))": 182
":has(div.kat_cat_pic_name:contains(\"Movie\")):has(div.kat_cat_pic_name_b:contains(\"UHD\"))": 185
":has(div.kat_cat_pic_name:contains(\"Movie\")):has(div.kat_cat_pic_name_b:contains(\"HD\"))": 180
":has(div.kat_cat_pic_name:contains(\"Movie\")):has(div.kat_cat_pic_name_b:contains(\"BluRay\"))": 184
":has(div.kat_cat_pic_name:contains(\"Movie\")):has(div.kat_cat_pic_name_b:contains(\"DVD\"))": 181
":has(div.kat_cat_pic_name:contains(\"Movie\")):has(div.kat_cat_pic_name_b:contains(\"3D\"))": 183
":has(div.kat_cat_pic_name:contains(\"Movie\")):has(div.kat_cat_pic_name_b:contains(\"Kids\"))": 221
":has(div.kat_cat_pic_name:contains(\"Movie\")):has(div.kat_cat_pic_name_b:contains(\"Englisch\"))": 186
# Serien
":has(div.kat_cat_pic_name:contains(\"Serien\")):has(div.kat_cat_pic_name_b:contains(\"Pack SD\"))": 223
":has(div.kat_cat_pic_name:contains(\"Serien\")):has(div.kat_cat_pic_name_b:contains(\"Pack UHD\"))": 224
":has(div.kat_cat_pic_name:contains(\"Serien\")):has(div.kat_cat_pic_name_b:contains(\"Pack HD\"))": 201
":has(div.kat_cat_pic_name:contains(\"Serien\")):has(div.kat_cat_pic_name_b:contains(\"Anime\"))": 202
":has(div.kat_cat_pic_name:contains(\"Serien\")):has(div.kat_cat_pic_name_b:contains(\"SD\"))": 198
":has(div.kat_cat_pic_name:contains(\"Serien\")):has(div.kat_cat_pic_name_b:contains(\"UHD\"))": 200
":has(div.kat_cat_pic_name:contains(\"Serien\")):has(div.kat_cat_pic_name_b:contains(\"HD\"))": 199
# Game
":has(div.kat_cat_pic_name:contains(\"Game\")):has(div.kat_cat_pic_name_b:contains(\"PC\"))": 173
":has(div.kat_cat_pic_name:contains(\"Game\")):has(div.kat_cat_pic_name_b:contains(\"PlayStation\"))": 174
":has(div.kat_cat_pic_name:contains(\"Game\")):has(div.kat_cat_pic_name_b:contains(\"XBOX\"))": 175
":has(div.kat_cat_pic_name:contains(\"Game\")):has(div.kat_cat_pic_name_b:contains(\"Nintendo\"))": 176
":has(div.kat_cat_pic_name:contains(\"Game\")):has(div.kat_cat_pic_name_b:contains(\"Wimmelbild\"))": 177
":has(div.kat_cat_pic_name:contains(\"Game\")):has(div.kat_cat_pic_name_b:contains(\"Sonstiege\"))": 178
# Musik
":has(div.kat_cat_pic_name:contains(\"Musik\")):has(div.kat_cat_pic_name_b:contains(\"Alben\"))": 187
":has(div.kat_cat_pic_name:contains(\"Musik\")):has(div.kat_cat_pic_name_b:contains(\"Sampler\"))": 188
":has(div.kat_cat_pic_name:contains(\"Musik\")):has(div.kat_cat_pic_name_b:contains(\"Charts\"))": 190
":has(div.kat_cat_pic_name:contains(\"Musik\")):has(div.kat_cat_pic_name_b:contains(\"Mixe\"))": 189
":has(div.kat_cat_pic_name:contains(\"Musik\")):has(div.kat_cat_pic_name_b:contains(\"Flac Pack\"))": 232
":has(div.kat_cat_pic_name:contains(\"Musik\")):has(div.kat_cat_pic_name_b:contains(\"Pack\"))": 196
":has(div.kat_cat_pic_name:contains(\"Musik\")):has(div.kat_cat_pic_name_b:contains(\"Flac\"))": 193
":has(div.kat_cat_pic_name:contains(\"Musik\")):has(div.kat_cat_pic_name_b:contains(\"Discographie\"))": 192
":has(div.kat_cat_pic_name:contains(\"Musik\")):has(div.kat_cat_pic_name_b:contains(\"Single\"))": 191
":has(div.kat_cat_pic_name:contains(\"Musik\")):has(div.kat_cat_pic_name_b:contains(\"Musikvideo\"))": 194
":has(div.kat_cat_pic_name:contains(\"Musik\")):has(div.kat_cat_pic_name_b:contains(\"Hörspiele\"))": 219
":has(div.kat_cat_pic_name:contains(\"Musik\")):has(div.kat_cat_pic_name_b:contains(\"A-Book\"))": 227
# Software
":has(div.kat_cat_pic_name:contains(\"Software\")):has(div.kat_cat_pic_name_b:contains(\"Windows\"))": 168
":has(div.kat_cat_pic_name:contains(\"Software\")):has(div.kat_cat_pic_name_b:contains(\"Mac\"))": 166
":has(div.kat_cat_pic_name:contains(\"Software\")):has(div.kat_cat_pic_name_b:contains(\"Linux\"))": 165
":has(div.kat_cat_pic_name:contains(\"Software\")):has(div.kat_cat_pic_name_b:contains(\"Android\"))": 169
# Sport
":has(div.kat_cat_pic_name:contains(\"Sport\")):has(div.kat_cat_pic_name_b:contains(\"Fussball\"))": 203
":has(div.kat_cat_pic_name:contains(\"Sport\")):has(div.kat_cat_pic_name_b:contains(\"Formel\"))": 230
":has(div.kat_cat_pic_name:contains(\"Sport\")):has(div.kat_cat_pic_name_b:contains(\"Wrestling\"))": 204
":has(div.kat_cat_pic_name:contains(\"Sport\")):has(div.kat_cat_pic_name_b:contains(\"Sonstiges\"))": 231
# Doku
":has(div.kat_cat_pic_name:contains(\"Doku\")):has(div.kat_cat_pic_name_b:contains(\"SD\"))": 170
":has(div.kat_cat_pic_name:contains(\"Doku\")):has(div.kat_cat_pic_name_b:contains(\"UHD\"))": 229
":has(div.kat_cat_pic_name:contains(\"Doku\")):has(div.kat_cat_pic_name_b:contains(\"HD\"))": 171
":has(div.kat_cat_pic_name:contains(\"Doku\")):has(div.kat_cat_pic_name_b:contains(\"Pack\"))": 172
# Ebooks
":has(div.kat_cat_pic_name:contains(\"Ebooks\")):has(div.kat_cat_pic_name_b:contains(\"Zeitungen\"))": 212
":has(div.kat_cat_pic_name:contains(\"Ebooks\")):has(div.kat_cat_pic_name_b:contains(\"Magazine\"))": 211
":has(div.kat_cat_pic_name:contains(\"Ebooks\")):has(div.kat_cat_pic_name_b:contains(\"Bücher\"))": 213
":has(div.kat_cat_pic_name:contains(\"Ebooks\")):has(div.kat_cat_pic_name_b:contains(\"Comics\"))": 214
":has(div.kat_cat_pic_name:contains(\"Ebooks\")):has(div.kat_cat_pic_name_b:contains(\"XXX\"))": 215
# XXX
":has(div.kat_cat_pic_name:contains(\"XXX\")):has(div.kat_cat_pic_name_b:contains(\"SD\"))": 205
":has(div.kat_cat_pic_name:contains(\"XXX\")):has(div.kat_cat_pic_name_b:contains(\"HD\"))": 206
":has(div.kat_cat_pic_name:contains(\"XXX\")):has(div.kat_cat_pic_name_b:contains(\"Clips\"))": 208
":has(div.kat_cat_pic_name:contains(\"XXX\")):has(div.kat_cat_pic_name_b:contains(\"Bilder\"))": 209
":has(div.kat_cat_pic_name:contains(\"XXX\")):has(div.kat_cat_pic_name_b:contains(\"Pack\"))": 207
":has(div.kat_cat_pic_name:contains(\"XXX\")):has(div.kat_cat_pic_name_b:contains(\"Sonstiges\"))": 210
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 }}"
poster:
selector: div[id^="details"] img
attribute: src
@@ -271,4 +209,4 @@ search:
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# engine n/a
# 3xT

View File

@@ -40,6 +40,7 @@ caps:
- {id: 189, cat: TV, desc: "TV/Netflix Series"}
- {id: 190, cat: Movies, desc: "Movies/Netflix Film"}
- {id: 195, cat: TV, desc: "TV/Exxen"}
- {id: 199, cat: TV, desc: "TV/GAİN"}
- {id: 171, cat: Audio, desc: "Music"}
- {id: 172, cat: Audio, desc: "Music/Turkish"}
- {id: 173, cat: Audio, desc: "Music/Foreign"}

View File

@@ -7,7 +7,7 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://www.torrent9.nl/
- https://www.torrent9.re/
- https://torrent9.nocensor.sbs/
legacylinks:
- https://www.t9.vc/
@@ -30,6 +30,7 @@ legacylinks:
- https://www.torrent9.pw/
- https://www.torrent9.si/
- https://torrent9.nocensor.biz/
- https://www.torrent9.nl/
caps:
categorymappings:

View File

@@ -121,8 +121,9 @@ login:
path: /
search:
# home page no longer has torrents. /latest would be ideal but has not categories. resorting to /top for keywordless searches.
paths:
- path: "{{ if .Keywords }}search{{ re_replace .Config.sort \"_\" \"\" }}?q={{ .Keywords }}{{ else }}{{ end }}"
- path: "{{ if .Keywords }}search{{ re_replace .Config.sort \"_\" \"\" }}?q={{ .Keywords }}{{ else }}top{{ end }}"
rows:
selector: table.table2 > tbody > tr:has(span.smallish)

View File

@@ -160,9 +160,6 @@ search:
imdbid:
selector: a[href^="/torrents.php?search=tt"]
attribute: href
filters:
- name: regexp
args: tt(\d+)
size:
selector: div span[style^="border-radius"]
seeders:

View File

@@ -7,11 +7,8 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentqq142.com/
- https://torrentqq145.com/
legacylinks:
- https://torrentqq127.com/
- https://torrentqq128.com/
- https://torrentqq129.com/
- https://torrentqq130.com/
- https://torrentqq131.com/
- https://torrentqq132.com/
@@ -24,6 +21,9 @@ legacylinks:
- https://torrentqq139.com/
- https://torrentqq140.com/
- https://torrentqq141.com/
- https://torrentqq142.com/
- https://torrentqq143.com/
- https://torrentqq144.com/
caps:
categorymappings:

View File

@@ -7,7 +7,7 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentsir56.com/
- https://torrentsir58.com/
legacylinks:
- https://torrentsir46.com/
- https://torrentsir47.com/
@@ -24,7 +24,9 @@ legacylinks:
- https://torrentsir55.com/
- http://torrentsir55.com/
- http://torrentsir56.com/
- https://torrentsir56.com/
- https://torrentsir57.com/
- http://torrentsir58.com/
caps:
categorymappings:
- {id: "gallery", cat: XXX, desc: "+19 (Adult)"}

View File

@@ -8,7 +8,7 @@ encoding: UTF-8
links:
- https://torrents-local.xyz/
certificates:
- dbcb5a8bcf03c2c159a0fe1bbf91c5e56be64b3d # expired 12th Nov 2021
- 14853069ae52c82b51ca8e495050a03665ac6292 # expired 14th May 2022
caps:
categorymappings:

View File

@@ -7,12 +7,10 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentview60.com/
- https://torrentview62.com/
legacylinks:
- https://torrentview.net/
- https://torrentview.co/
- https://torrentview38.com/
- https://torrentview39.com/
- https://torrentview40.com/
- https://torrentview41.com/
- https://torrentview42.com/
@@ -25,6 +23,7 @@ legacylinks:
- https://torrentview52.com/
- https://torrentview53.com/
- https://torrentview57.com/
- https://torrentview60.com/
caps:
categorymappings:

View File

@@ -7,9 +7,8 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentwiz42.com/
- https://torrentwiz43.com/
legacylinks:
- https://torrentwiz27.me/
- https://torrentwiz28.me/
- https://torrentwiz29.me/
- https://torrentwiz30.com/
@@ -24,6 +23,7 @@ legacylinks:
- https://torrentwiz39.com/
- https://torrentwiz40.com/
- https://torrentwiz41.com/
- https://torrentwiz42.com/
caps:
categorymappings:

View File

@@ -110,9 +110,6 @@ search:
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
filters:
- name: regexp
args: tt(\d+)
poster:
selector: td a[href^="index.php?page=torrent-details"]
attribute: onmouseover

View File

@@ -92,9 +92,9 @@ search:
- name: querystring
args: cat
title:
selector: a[href*="/torrent/"]
selector: a[href*="/details.php?id="]
details:
selector: a[href*="/torrent/"]
selector: a[href*="/details.php?id="]
attribute: href
download:
selector: a[href^="/download.php?id="]
@@ -105,6 +105,14 @@ search:
filters:
- name: regexp
args: "Size: (.+?)<"
files_optional:
selector: a[href^="/download.php?id="]
attribute: title
filters:
- name: regexp
args: "\\((\\d+) files\\)"
files:
text: "{{ if .Result.files_optional }}{{ .Result.files_optional }}{{ else }}1{{ end }}"
seeders:
selector: a[href^="/download.php?id="]
attribute: title

View File

@@ -6,7 +6,9 @@ language: es-ES
type: private
encoding: ISO-8859-1
links:
- http://xbytesv2.li/ # site does not support https ERR_CONNECTION_CLOSED
- https://xbytesv2.li/
legacylinks:
- http://xbytesv2.li/
caps:
categorymappings:
@@ -88,6 +90,16 @@ login:
inputs:
uid: "{{ .Config.username }}"
pwd: "{{ .Config.password }}"
error:
- selector: body[onLoad^="makeAlert('"]
message:
selector: body[onLoad^="makeAlert('"]
attribute: onLoad
filters:
- name: replace
args: ["makeAlert('Error' , '", ""]
- name: replace
args: ["');", ""]
test:
path: index.php
selector: a[href="logout.php"]
@@ -128,7 +140,7 @@ search:
page: torrents
$raw: "&category={{ range .Categories }}{{.}};{{end}}"
# 0 all, 1 activeonly, 2 deadonly
active: 1
active: 0
# 0 title, 1 title&desc, 2 descr, 3 uploaders, 5 gold, 6 silver, 7 bronze, 8 1x, 9 2x, 10 3x, 11 4x, 12 5x, 13 6x, 14 7x, 15 8x, 16 9x, 17 10x
options: "{{ if .Config.freeleech }}5{{ else }}0{{ end }}"
search: "{{ .Keywords }}"
@@ -136,17 +148,17 @@ search:
by: "{{ .Config.type }}"
rows:
selector: "#Mcol > div > div.block-content > div > div > div > table > tbody > tr:nth-child(3) > td > table tr:not(:first-child):not(:last-child)"
selector: table.lista > tbody > tr:has(td[onMouseOut])
fields:
category:
selector: td:nth-child(1) a
selector: a[href^="index.php?page=torrents&category="]
attribute: href
filters:
- name: querystring
args: category
title:
selector: td[valign="middle"] a
selector: a[href^="index.php?page=torrent-details&id="]
filters:
# To improve next replaces
- name: replace
@@ -290,40 +302,37 @@ search:
args: [" ", " "]
details:
selector: td[valign="middle"] a
selector: a[href^="index.php?page=torrent-details&id="]
attribute: href
poster:
selector: td[valign="middle"] a
selector: a[href^="index.php?page=torrent-details&id="]
attribute: onmouseover
filters:
- name: regexp
args: "src=(.+?) "
size:
selector: td:nth-child(11)
seeders:
selector: td:nth-child(7) a
leechers:
selector: td:nth-child(8) a
grabs_optional:
selector: td:nth-child(9) a
optional: true
grabs:
text: "{{ if .Result.grabs_optional }}{{ .Result.grabs_optional }}{{ else }}0{{ end }}"
download:
selector: a[href^="download.php?id="]
attribute: href
date:
selector: td:nth-child(6)
selector: td:nth-child(5)
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "02/01/2006 -07:00"
download:
selector: a[href^="download.php"]
attribute: href
size:
selector: td:nth-child(10)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img[src$="gold.png"]: 0
img[src$="silver.png"]: 0.5
img[src$="bronze.png"]: 0.25
img[src$="gold.gif"]: 0
img[src$="silver.gif"]: 0.5
img[src$="bronze.gif"]: 0.25
"*": 1
uploadvolumefactor:
case:
@@ -335,5 +344,11 @@ search:
img[src$="7x.gif"]: 7
img[src$="8x.gif"]: 8
img[src$="9x.gif"]: 9
img[src$="10x.gif"]: 10
"*": 1
# xbtitFM 2.1.08
minimumratio:
text: 1.0
minimumseedtime:
# 3 days (as seconds = 3 x 24 x 60 x 60)
text: 259200
# xbtitFM v3.1.00

View File

@@ -117,7 +117,7 @@ search:
inputs:
passkey: "{{ .Config.passkey }}"
category: "{{ if .Categories }}{{ range .Categories }}{{.}}+{{end}}{{ else }}{{ end }}"
search: "{{ if .Query.TMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
search: "{{ .Keywords }}"
tmdbid: "{{ .Query.TMDBID }}"
$raw: "{{ if .Config.freeleech }}&freeleech=1{{ else }}{{ end }}"
response:

View File

@@ -1,155 +0,0 @@
---
id: zooqle
name: Zooqle
description: "Zooqle is a Public torrent index providing a huge database of verified torrents"
language: en-US
type: public
encoding: UTF-8
followredirect: true
links:
- https://zooqle.com/
- https://zooqle.unblockninja.com/
- https://zooqle.unblockit.blue/
- https://zooqle.nocensor.sbs/
legacylinks:
- https://zooqle.unblocked.rest/
- https://zooqle.unblockit.buzz/
- https://zooqle.unblocked.monster/
- https://zooqle.unblockit.club/
- https://zooqle.unblockit.onl/
- https://zooqle.unblockit.li/
- https://zooqle.unblockit.uno/
- https://zooqle.unblockit.ch/
- https://zooqle.nocensor.space/
- https://zooqle.unblockit.ws/
- https://zooqle.nocensor.work/
- https://zooqle.unblockit.kim/
- https://zooqle.unblockit.bz/
- https://zooqle.unblockit.tv/
- https://zooqle.unblockit.how/
- https://zooqle.unblockit.cam/
- https://zooqle.nocensor.biz/
- https://zooqle.unblockit.day/
- https://zooqle.unblockit.llc/
caps:
categorymappings:
- {id: anime, cat: TV/Anime, desc: Anime}
- {id: app, cat: PC, desc: App}
- {id: book, cat: Books, desc: Book}
- {id: files, cat: Other/Misc, desc: Files}
- {id: game, cat: PC/Games, desc: Game}
- {id: movies, cat: Movies, desc: Movies}
- {id: music, cat: Audio, desc: Music}
- {id: other, cat: Other, desc: Other}
- {id: tv, cat: TV, desc: TV}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: sort
type: select
label: Sort requested from site
default: dt
options:
dt: created
ns: seeders
sz: size
- name: type
type: select
label: Order requested from site
default: d
options:
d: desc
a: asc
search:
# includes only verified torrents
paths:
- path: "search?s={{ .Config.sort }}&v=t&sd={{ .Config.type }}&q={{ if .Keywords }}{{ .Keywords }}{{ else }} *{{ end }}{{ if .Categories }} category:{{ range .Categories }}{{.}},{{end}}{{ else }}{{ end }}"
rows:
selector: tr:has(td[class^="text-muted3"])
filters:
- name: andmatch
fields:
title:
selector: td:nth-child(2) a
category:
text: other
category|noappend:
# cat may be missing
optional: true
selector: td:nth-child(2) > i
attribute: class
filters:
# extract the second class
- name: split
args: [" ", 1]
# remove zqf- prefix
- name: replace
args: ["zqf-", ""]
details:
selector: td:nth-child(2) a
attribute: href
download:
# .torrent urls can be missing
optional: true
selector: a[title^="Generate .torrent"]
attribute: href
magnet:
# magnets urls can be missing
optional: true
selector: a[title^="Magnet link"]
attribute: href
date:
selector: td:nth-child(5)
filters:
# a date of 'long ago' causes the timeago filter to return '0m ago' which is contra
- name: replace
args: ["long ago", "99 years"]
# a date of 'yesterday' causes the timeago filter to return '0m ago' which is contra
- name: replace
args: ["yesterday", "1 day"]
- name: timeago
size:
selector: td:nth-child(4)
filters:
# a size of ' N/A ' causes Jackett to reject the row with an error
- name: replace
args: [" N/A ", "0 Bytes"]
seeders_optional:
# seeders can be missing
optional: true
selector: td:nth-child(6) div
attribute: title
filters:
- name: split
args: [" ", 1]
- name: replace
args: [",", ""]
seeders:
text: "{{ if .Result.seeders_optional }}{{ .Result.seeders_optional }}{{ else }}0{{ end }}"
leechers_optional:
# leechers can be missing
optional: true
selector: td:nth-child(6) div
attribute: title
filters:
- name: split
args: [" ", 4]
- name: replace
args: [",", ""]
leechers:
text: "{{ if .Result.leechers_optional }}{{ .Result.leechers_optional }}{{ else }}0{{ end }}"
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -220,7 +220,11 @@ namespace Jackett.Common.Indexers.Abstract
var json = JObject.Parse(response.ContentString);
foreach (JObject r in json["response"]["results"])
{
var groupTime = DateTimeUtil.UnixTimestampToDateTime(long.Parse((string)r["groupTime"]));
// groupTime may be a unixTime or a datetime string
var isNumber = long.TryParse((string)r["groupTime"], out long n);
var groupTime = (isNumber)
? DateTimeUtil.UnixTimestampToDateTime(long.Parse((string)r["groupTime"]))
: DateTimeUtil.FromFuzzyTime((string)r["groupTime"]);
var groupName = WebUtility.HtmlDecode((string)r["groupName"]);
var artist = WebUtility.HtmlDecode((string)r["artist"]);
var cover = (string)r["cover"];

View File

@@ -24,7 +24,7 @@ namespace Jackett.Common.Indexers
private string LoginUrl => SiteLink + "login.php";
private string BrowseUrl => SiteLink + "torrents.php";
private new ConfigurationDataBasicLogin configData => (ConfigurationDataBasicLogin)base.configData;
private new ConfigurationDataBasicLoginWith2FA configData => (ConfigurationDataBasicLoginWith2FA)base.configData;
public override string[] LegacySiteLinks { get; protected set; } = {
"https://tehconnection.me/"
@@ -52,7 +52,8 @@ namespace Jackett.Common.Indexers
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationDataBasicLogin())
configData: new ConfigurationDataBasicLoginWith2FA(@"If 2FA is disabled, let the field empty.
We recommend to disable 2FA because re-login will require manual actions."))
{
Encoding = Encoding.UTF8;
Language = "en-US";
@@ -72,8 +73,9 @@ namespace Jackett.Common.Indexers
{
{ "username", configData.Username.Value },
{ "password", configData.Password.Value },
{ "twofa", configData.TwoFactorAuth.Value },
{ "keeplogged", "1" },
{ "login", "Log+In!" }
{ "login", "Log in" }
};
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl, true);

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

@@ -38,7 +38,7 @@ namespace Jackett.Common.Indexers
set => base.configData = value;
}
protected readonly string[] OptionalFields = { "imdb", "imdbid", "rageid", "tmdbid", "tvdbid", "poster", "description" };
protected readonly string[] OptionalFields = { "imdb", "imdbid", "rageid", "tmdbid", "tvdbid", "poster", "description", "doubanid" };
private static readonly string[] _SupportedLogicFunctions =
{
@@ -2030,6 +2030,13 @@ namespace Jackett.Common.Indexers
release.TMDb = ParseUtil.CoerceLong(TmdbID);
value = release.TMDb.ToString();
break;
case "doubanid":
var DoubanIDRegEx = new Regex(@"(\d+)", RegexOptions.Compiled);
var DoubanIDMatch = DoubanIDRegEx.Match(value);
var DoubanID = DoubanIDMatch.Groups[1].Value;
release.DoubanId = ParseUtil.CoerceLong(DoubanID);
value = release.DoubanId.ToString();
break;
case "rageid":
var RageIDRegEx = new Regex(@"(\d+)", RegexOptions.Compiled);
var RageIDMatch = RageIDRegEx.Match(value);

View File

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

View File

@@ -39,11 +39,12 @@ namespace Jackett.Common.Indexers
private const string SearchUrl = "buscar/";
public override string[] AlternativeSiteLinks { get; protected set; } = {
"https://dontorrent.cx/",
"https://dontorrent.wtf/",
"https://todotorrents.net/",
"https://tomadivx.net/",
"https://seriesblanco.one/",
"https://verdetorrent.com/"
"https://verdetorrent.com/",
"https://naranjatorrent.com/"
};
public override string[] LegacySiteLinks { get; protected set; } = {
@@ -62,6 +63,9 @@ namespace Jackett.Common.Indexers
"https://dontorrent.pl/",
"https://dontorrent.tel/",
"https://dontorrent.nl/",
"https://dontorrent.cx/",
"https://dontorrent.bet/",
"https://dontorrent.cab/",
"https://dontorrent.eu/"
};
@@ -80,7 +84,7 @@ namespace Jackett.Common.Indexers
: base(id: "dontorrent",
name: "DonTorrent",
description: "DonTorrent is a SPANISH public tracker for MOVIES / TV / GENERAL",
link: "https://dontorrent.cx/",
link: "https://dontorrent.wtf/",
caps: new TorznabCapabilities
{
TvSearchParams = new List<TvSearchParam>

View File

@@ -68,6 +68,8 @@ namespace Jackett.Common.Indexers
new DisplayInfoConfigurationItem("", "<p>Please note that the following stats are not available for this indexer. Default values are used instead. </p><ul><li>Files</li><li>Seeders</li><li>Leechers</li></ul>")
);
configData.AddDynamic("include-subs", new BoolConfigurationItem("Enable appending SubTitles to the Title"));
// Config item for title detail parsing
configData.AddDynamic("title-detail-parsing", new BoolConfigurationItem("Enable Title Detail Parsing"));
configData.AddDynamic(
@@ -83,6 +85,7 @@ namespace Jackett.Common.Indexers
private string RSSKey => ((StringConfigurationItem)configData.GetDynamic("rssKey")).Value;
private bool IsTitleDetailParsingEnabled => ((BoolConfigurationItem)configData.GetDynamic("title-detail-parsing")).Value;
private bool IsSubsEnabled => ((BoolConfigurationItem)configData.GetDynamic("include-subs")).Value;
public string RssFeedUri => SiteLink + RSS_PATH + "&" + RSSKey;
@@ -200,9 +203,14 @@ namespace Jackett.Common.Indexers
guid = builder.Uri;
}
var subs = "";
if (IsSubsEnabled)
{
subs = string.Concat(" JAPANESE [Subs: ", fi.SubTitles, "]");
}
yield return new ReleaseInfo
{
Title = string.Concat(fi.Title, " - ", fi.Quality),
Title = string.Concat(fi.Title, " - ", fi.Quality, subs),
Guid = guid,
MagnetUri = fi.MagnetLink,
InfoHash = fi.InfoHash,
@@ -247,6 +255,7 @@ namespace Jackett.Common.Indexers
var size = rssItem.SelectSingleNode("erai:size", nsm)?.InnerText;
var description = rssItem.SelectSingleNode("description")?.InnerText;
var quality = rssItem.SelectSingleNode("erai:resolution", nsm)?.InnerText;
var subs = rssItem.SelectSingleNode("erai:subtitles", nsm)?.InnerText;
item = new RssFeedItem
{
@@ -256,7 +265,8 @@ namespace Jackett.Common.Indexers
PublishDate = publishDate,
Size = size,
Description = description,
Quality = quality
Quality = quality,
SubTitles = subs
};
return item.IsValid();
}
@@ -280,6 +290,8 @@ namespace Jackett.Common.Indexers
public string Quality { get; private set; }
public string SubTitles { get; private set; }
/// <summary>
/// Check there is enough information to process the item.
/// </summary>
@@ -307,6 +319,7 @@ namespace Jackett.Common.Indexers
Size = ReleaseInfo.GetBytes(feedItem.Size);
DetailsLink = ParseDetailsLink(feedItem.Description);
InfoHash = feedItem.InfoHash;
SubTitles = feedItem.SubTitles.Replace("[", " ").Replace("]", " ").ToUpper();
if (Uri.TryCreate(feedItem.Link, UriKind.Absolute, out Uri magnetUri))
MagnetLink = magnetUri;
@@ -339,6 +352,8 @@ namespace Jackett.Common.Indexers
public string Quality { get; }
public string SubTitles { get; }
public string Title { get; set; }
public Uri MagnetLink { get; }

View File

@@ -132,6 +132,10 @@ namespace Jackett.Common.Indexers
var releases = new List<ReleaseInfo>();
foreach (JObject r in response["data"])
{
var title = (string)r["name"];
// if tv then match query keywords against title #12753
if (!query.IsImdbQuery && !query.MatchQueryStringAND(title))
continue;
var link = new Uri(
SiteLink + "download.php/" + (string)r["filename"] + "?id=" + (string)r["id"] + "&passkey=" +
configData.Passkey.Value);
@@ -140,7 +144,7 @@ namespace Jackett.Common.Indexers
var details = new Uri(SiteLink + "details.php?id=" + (string)r["id"]);
var release = new ReleaseInfo
{
Title = (string)r["name"],
Title = title,
Details = details,
Link = link,
Category = MapTrackerCatToNewznab((string)r["type_category"]),

View File

@@ -1,555 +0,0 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using AngleSharp.Html.Parser;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig;
using Jackett.Common.Services.Interfaces;
using Jackett.Common.Utils;
using Newtonsoft.Json.Linq;
using NLog;
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
using WebClient = Jackett.Common.Utils.Clients.WebClient;
namespace Jackett.Common.Indexers
{
[ExcludeFromCodeCoverage]
public class MejorTorrent : BaseWebIndexer
{
private static class MejorTorrentCatType
{
public static string Pelicula => "Película";
public static string Serie => "Serie";
public static string SerieHd => "SerieHD"; // this category is created, doesn't exist in the site
public static string Musica => "Música";
public static string Otro => "Otro";
}
private const string SearchUrl = "secciones.php";
public override string[] AlternativeSiteLinks { get; protected set; } = {
"https://www.mejortorrentes.org/",
"https://mejortorrent.unblockit.blue/",
"https://mejortorrent.nocensor.sbs/"
};
public override string[] LegacySiteLinks { get; protected set; } = {
"https://www.mejortorrentt.net/",
"http://www.mejortorrent.org/",
"http://www.mejortorrent.tv/",
"http://www.mejortorrentt.com/",
"https://www.mejortorrentt.org/",
"http://www.mejortorrentt.org/",
"https://www.mejortorrents.net/",
"https://www.mejortorrents1.com/",
"https://www.mejortorrents1.net/",
"https://www.mejortorrento.com/",
"https://www.mejortorrento.org/",
"https://www.mejortorrento.net/",
"https://www.mejortorrento.info/",
"https://mejortorrent.nocensor.space/",
"https://www.mejortorrentes.com/",
"https://www.mejortorrento.info/",
"https://mejortorrent.nocensor.work/",
"https://www.mejortorrentes.net/",
"https://mejortorrent.unblockit.tv/",
"https://mejortorrent.unblockit.how/",
"https://mejortorrent.unblockit.cam/",
"https://mejortorrent.nocensor.biz/",
"https://mejortorrent.unblockit.day/",
"https://mejortorrent.unblockit.llc/"
};
public MejorTorrent(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,
ICacheService cs)
: base(id: "mejortorrent",
name: "MejorTorrent",
description: "MejorTorrent - Hay veces que un torrent viene mejor! :)",
link: "https://www.mejortorrentes.org/",
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
}
},
configService: configService,
client: w,
logger: l,
p: ps,
cacheService: cs,
configData: new ConfigurationData())
{
Encoding = Encoding.UTF8;
Language = "es-ES";
Type = "public";
var matchWords = new BoolConfigurationItem("Match words in title") { Value = true };
configData.AddDynamic("MatchWords", matchWords);
configData.AddDynamic("flaresolverr", new DisplayInfoConfigurationItem("FlareSolverr", "This site may use Cloudflare DDoS Protection, therefore Jackett requires <a href=\"https://github.com/Jackett/Jackett#configuring-flaresolverr\" target=\"_blank\">FlareSolverr</a> to access it."));
AddCategoryMapping(MejorTorrentCatType.Pelicula, TorznabCatType.Movies, "Pelicula");
AddCategoryMapping(MejorTorrentCatType.Serie, TorznabCatType.TVSD, "Serie");
AddCategoryMapping(MejorTorrentCatType.SerieHd, TorznabCatType.TVHD, "Serie HD");
AddCategoryMapping(MejorTorrentCatType.Musica, TorznabCatType.Audio, "Musica");
// Other category is disabled because we have problems parsing documentaries
//AddCategoryMapping(MejorTorrentCatType.Otro, TorznabCatType.Other, "Otro");
}
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
{
LoadValuesFromJson(configJson);
var releases = await PerformQuery(new TorznabQuery());
await ConfigureIfOK(string.Empty, releases.Any(), () =>
throw new Exception("Could not find releases from this URL"));
return IndexerConfigurationStatus.Completed;
}
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{
if (string.IsNullOrEmpty(query.SearchTerm))
query.SearchTerm = "Historia";
var matchWords = ((BoolConfigurationItem)configData.GetDynamic("MatchWords")).Value;
matchWords = query.SearchTerm != "" && matchWords;
// we remove parts from the original query
query = ParseQuery(query);
var releases = await PerformQuerySearch(query, matchWords);
return releases;
}
public override async Task<byte[]> Download(Uri link)
{
var parser = new HtmlParser();
var downloadUrl = link.ToString();
// Eg https://www.mejortorrentt.net/peli-descargar-torrent-11995-Harry-Potter-y-la-piedra-filosofal.html
var result = await RequestWithCookiesAsync(downloadUrl);
if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData);
var dom = parser.ParseDocument(result.ContentString);
downloadUrl = SiteLink + dom.QuerySelector("a[href*=\"sec=descargas\"]").GetAttribute("href");
// Eg https://www.mejortorrentt.net/secciones.php?sec=descargas&ap=contar&tabla=peliculas&id=11995&link_bajar=1
result = await RequestWithCookiesAsync(downloadUrl);
if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData);
dom = parser.ParseDocument(result.ContentString);
// There are several types of download links
// 1. Direct link https://www.mejortorrentt.net/tor/peliculas/Harry_Potter_1_y_la_Piedra_Filosofal_MicroHD_1080p.torrent
var selector = dom.QuerySelector("a[href^=\"/tor/\"]");
if (selector != null)
downloadUrl = SiteLink + selector.GetAttribute("href");
else
{
// 2. Hidden link onclick="post('https://cdn1.mejortorrents.net/torrents/xcceijidcd', {table: 'peliculas', name: 'Harry_Potter_1_y_la_Piedra_Filosofal_MicroHD_1080p.torrent'});"
var onClickParts = dom.QuerySelector("a[onclick*=\"/torrent\"]").GetAttribute("onclick").Split('\'');
downloadUrl = $"{SiteLink}tor/{onClickParts[3]}/{onClickParts[5]}";
}
// Eg https://www.mejortorrentt.net/tor/peliculas/Harry_Potter_1_y_la_Piedra_Filosofal_MicroHD_1080p.torrent
var content = await base.Download(new Uri(downloadUrl));
return content;
}
private async Task<List<ReleaseInfo>> PerformQuerySearch(TorznabQuery query, bool matchWords)
{
var releases = new List<ReleaseInfo>();
// search only the longest word, we filter the results later
var searchTerm = GetLongestWord(query.SearchTerm);
var qc = new NameValueCollection { { "sec", "buscador" }, { "valor", searchTerm } };
var url = SiteLink + SearchUrl + "?" + qc.GetQueryString();
var result = await RequestWithCookiesAsync(url);
if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData);
try
{
var searchResultParser = new HtmlParser();
var doc = searchResultParser.ParseDocument(result.ContentString);
var table = doc.QuerySelector("#main_table_center_center2 table table");
// check the search term is valid
if (table?.QuerySelector("tr table") != null)
{
// check there are results
table = table.QuerySelector("tr table");
var rows = table.QuerySelectorAll("tr");
if (rows != null && rows.Length > 0 && rows[0].QuerySelectorAll("td").Length == 2)
foreach (var row in rows)
{
var link = row.QuerySelector("td a");
var rowTitle = link.TextContent;
var rowDetailsLink = SiteLink + link.GetAttribute("href").TrimStart('/');
var rowMejortorrentCat = row.QuerySelectorAll("td")[1].TextContent;
string rowQuality = null;
if (row.QuerySelector("td span") != null)
rowQuality = row.QuerySelector("td span").TextContent;
await ParseRelease(releases, rowTitle, rowDetailsLink, rowMejortorrentCat,
null, rowQuality, query, matchWords);
}
}
}
catch (Exception ex)
{
OnParseError(result.ContentString, ex);
}
return releases;
}
private async Task ParseRelease(ICollection<ReleaseInfo> releases, string title, string detailsStr,
string mejortorrentCat, string publishStr, string quality, TorznabQuery query, bool matchWords)
{
// Remove trailing dot. Eg Harry Potter Y La Orden Del Fénix.
title = title.Trim();
if (title.EndsWith("."))
title = title.Remove(title.Length - 1).Trim();
var cat = GetMejortorrentCategory(mejortorrentCat, detailsStr, title);
if (cat == MejorTorrentCatType.Otro)
return; // skip releases from this category
var categories = MapTrackerCatToNewznab(cat);
var publishDate = TryToParseDate(publishStr, DateTime.Now);
// return results only for requested categories
if (query.Categories.Any() && !query.Categories.Contains(categories.First()))
return;
// match the words in the query with the titles
if (matchWords && !CheckTitleMatchWords(query.SearchTerm, title))
return;
// parsing is different for each category
if (cat == MejorTorrentCatType.Serie || cat == MejorTorrentCatType.SerieHd)
await ParseSeriesRelease(releases, query, title, detailsStr, cat, publishDate);
else if (query.Episode == null) // if it's scene series, we don't return other categories
{
if (cat == MejorTorrentCatType.Pelicula)
ParseMovieRelease(releases, query, title, detailsStr, cat, publishDate, quality);
else
{
const long size = 104857600L; // 100 MB
var release = GenerateRelease(title, detailsStr, detailsStr, cat, publishDate, size);
releases.Add(release);
}
}
}
private async Task ParseSeriesRelease(ICollection<ReleaseInfo> releases, TorznabQuery query, string title,
string detailsStr, string cat, DateTime publishDate)
{
var result = await RequestWithCookiesAsync(detailsStr);
if (result.Status != HttpStatusCode.OK)
throw new ExceptionWithConfigData(result.ContentString, configData);
var searchResultParser = new HtmlParser();
var doc = searchResultParser.ParseDocument(result.ContentString);
var rows = doc.QuerySelectorAll("#main_table_center_center1 table table table tr");
foreach (var row in rows)
{
var anchor = row.QuerySelector("a");
if (anchor == null || anchor.GetAttribute("href") == "#abajo")
continue;
var episodeTitle = anchor.TextContent.Trim();
var downloadLink = SiteLink + anchor.GetAttribute("href").TrimStart('/');
var episodePublishStr = row.QuerySelector("div").TextContent.Trim().Replace("Fecha: ", "");
var episodePublish = TryToParseDate(episodePublishStr, publishDate);
// Convert the title to Scene format
episodeTitle = ParseMejorTorrentSeriesTitle(title, episodeTitle, query);
// if the original query was in scene format, we filter the results to match episode
// query.Episode != null means scene title
if (query.Episode != null && !episodeTitle.Contains(query.GetEpisodeSearchString()))
continue;
// guess size
var size = 536870912L; // 512 MB
if (episodeTitle.ToLower().Contains("720p"))
size = 1073741824L; // 1 GB
var release = GenerateRelease(episodeTitle, detailsStr, downloadLink, cat, episodePublish, size);
releases.Add(release);
}
}
private void ParseMovieRelease(ICollection<ReleaseInfo> releases, TorznabQuery query, string title,
string detailsStr, string cat, DateTime publishDate, string quality)
{
title = title.Trim();
// parse tags in title, we need to put the year after the real title (before the tags)
// Harry Potter And The Deathly Hallows: Part 1 [subs. Integrados]
var tags = "";
var queryMatches = Regex.Matches(title, @"[\[\(]([^\]\)]+)[\]\)]", RegexOptions.IgnoreCase);
foreach (Match m in queryMatches)
{
var tag = m.Groups[1].Value.Trim().ToUpper();
if (tag.Equals("4K")) // Fix 4K quality. Eg Harry Potter Y La Orden Del Fénix [4k]
quality = "(UHD 4K 2160p)";
else if (tag.Equals("FULLBLURAY")) // Fix 4K quality. Eg Harry Potter Y El Cáliz De Fuego (fullbluray)
quality = "(COMPLETE BLURAY)";
else // Add the tag to the title
tags += " " + tag;
title = title.Replace(m.Groups[0].Value, "");
}
title = title.Trim();
// clean quality
if (quality != null)
{
var queryMatch = Regex.Match(quality, @"[\[\(]([^\]\)]+)[\]\)]", RegexOptions.IgnoreCase);
if (queryMatch.Success)
quality = queryMatch.Groups[1].Value;
quality = quality.Trim().Replace("-", " ");
quality = Regex.Replace(quality, "HDRip", "BDRip", RegexOptions.IgnoreCase); // fix for Radarr
}
// add the year
title = query.Year != null ? title + " " + query.Year : title;
// add the tags
title += tags;
// add spanish
title += " SPANISH";
// add quality
if (quality != null)
title += " " + quality;
// guess size
var size = 1610612736L; // 1.5 GB
if (title.ToLower().Contains("microhd"))
size = 7516192768L; // 7 GB
else if (title.ToLower().Contains("complete bluray") || title.ToLower().Contains("2160p"))
size = 53687091200L; // 50 GB
else if (title.ToLower().Contains("bluray"))
size = 17179869184L; // 16 GB
else if (title.ToLower().Contains("bdremux"))
size = 21474836480L; // 20 GB
var release = GenerateRelease(title, detailsStr, detailsStr, cat, publishDate, size);
releases.Add(release);
}
private ReleaseInfo GenerateRelease(string title, string detailsStr, string downloadLink, string cat,
DateTime publishDate, long size)
{
var link = new Uri(downloadLink);
var details = new Uri(detailsStr);
var release = new ReleaseInfo
{
Title = title,
Details = details,
Link = link,
Guid = link,
Category = MapTrackerCatToNewznab(cat),
PublishDate = publishDate,
Size = size,
Files = 1,
Seeders = 1,
Peers = 2,
DownloadVolumeFactor = 0,
UploadVolumeFactor = 1
};
return release;
}
private static bool CheckTitleMatchWords(string queryStr, string title)
{
// this code split the words, remove words with 2 letters or less, remove accents and lowercase
var queryMatches = Regex.Matches(queryStr, @"\b[\w']*\b");
var queryWords = from m in queryMatches.Cast<Match>()
where !string.IsNullOrEmpty(m.Value) && m.Value.Length > 2
select Encoding.UTF8.GetString(Encoding.GetEncoding("ISO-8859-8").GetBytes(m.Value.ToLower()));
var titleMatches = Regex.Matches(title, @"\b[\w']*\b");
var titleWords = from m in titleMatches.Cast<Match>()
where !string.IsNullOrEmpty(m.Value) && m.Value.Length > 2
select Encoding.UTF8.GetString(Encoding.GetEncoding("ISO-8859-8").GetBytes(m.Value.ToLower()));
titleWords = titleWords.ToArray();
return queryWords.All(word => titleWords.Contains(word));
}
private static TorznabQuery ParseQuery(TorznabQuery query)
{
// Eg. Marco.Polo.2014.S02E08
// the season/episode part is already parsed by Jackett
// query.SanitizedSearchTerm = Marco.Polo.2014.
// query.Season = 2
// query.Episode = 8
var searchTerm = query.SanitizedSearchTerm;
// replace punctuation symbols with spaces
// searchTerm = Marco Polo 2014
searchTerm = Regex.Replace(searchTerm, @"[-._\(\)@/\\\[\]\+\%]", " ");
searchTerm = Regex.Replace(searchTerm, @"\s+", " ");
searchTerm = searchTerm.Trim();
// we parse the year and remove it from search
// searchTerm = Marco Polo
// query.Year = 2014
var r = new Regex("([ ]+([0-9]{4}))$", RegexOptions.IgnoreCase);
var m = r.Match(searchTerm);
if (m.Success)
{
query.Year = int.Parse(m.Groups[2].Value);
searchTerm = searchTerm.Replace(m.Groups[1].Value, "");
}
// remove some words
searchTerm = Regex.Replace(searchTerm, @"\b(espa[ñn]ol|spanish|castellano|spa)\b", "", RegexOptions.IgnoreCase);
query.SearchTerm = searchTerm;
return query;
}
private static string ParseMejorTorrentSeriesTitle(string title, string episodeTitle, TorznabQuery query)
{
// parse title
// title = The Mandalorian - 1ª Temporada
// title = The Mandalorian - 1ª Temporada [720p]
// title = Grace and Frankie - 5ª Temporada [720p]: 5x08 al 5x13.
var newTitle = title.Split(new[] { " - " }, StringSplitOptions.RemoveEmptyEntries)[0].Trim();
// newTitle = The Mandalorian
// parse episode title
var newEpisodeTitle = episodeTitle.Trim();
// episodeTitle = 5x08 al 5x13.
// episodeTitle = 2x01 - 2x02 - 2x03.
var matches = Regex.Matches(newEpisodeTitle, "([0-9]+)x([0-9]+)", RegexOptions.IgnoreCase);
if (matches.Count > 1)
{
newEpisodeTitle = "";
foreach (Match m in matches)
if (newEpisodeTitle.Equals(""))
newEpisodeTitle += "S" + m.Groups[1].Value.PadLeft(2, '0')
+ "E" + m.Groups[2].Value.PadLeft(2, '0');
else
newEpisodeTitle += "-E" + m.Groups[2].Value.PadLeft(2, '0');
// newEpisodeTitle = S05E08-E13
// newEpisodeTitle = S02E01-E02-E03
}
else
{
// episodeTitle = 1x04 - 05.
var m = Regex.Match(newEpisodeTitle, "^([0-9]+)x([0-9]+)[^0-9]+([0-9]+)[.]?$", RegexOptions.IgnoreCase);
if (m.Success)
newEpisodeTitle = "S" + m.Groups[1].Value.PadLeft(2, '0')
+ "E" + m.Groups[2].Value.PadLeft(2, '0') + "-"
+ "E" + m.Groups[3].Value.PadLeft(2, '0');
// newEpisodeTitle = S01E04-E05
else
{
// episodeTitle = 1x02
// episodeTitle = 1x02 -
// episodeTitle = 1x08 - CONTRASEÑA: WWW.PCTNEW ORG bebe
m = Regex.Match(newEpisodeTitle, "^([0-9]+)x([0-9]+)(.*)$", RegexOptions.IgnoreCase);
if (m.Success)
{
newEpisodeTitle = "S" + m.Groups[1].Value.PadLeft(2, '0')
+ "E" + m.Groups[2].Value.PadLeft(2, '0');
// newEpisodeTitle = S01E02
if (!m.Groups[3].Value.Equals(""))
newEpisodeTitle += " " + m.Groups[3].Value.Replace(" -", "").Trim();
// newEpisodeTitle = S01E08 CONTRASEÑA: WWW.PCTNEW ORG bebe
}
}
}
// if the original query was in scene format, we have to put the year back
// query.Episode != null means scene title
var year = query.Episode != null && query.Year != null ? " " + query.Year : "";
newTitle += year + " " + newEpisodeTitle;
// add quality
if (title.ToLower().Contains("[720p]"))
newTitle += " SPANISH 720p HDTV x264";
else
newTitle += " SPANISH SDTV XviD";
// return The Mandalorian S01E04 SPANISH 720p HDTV x264
return newTitle;
}
private static string GetMejortorrentCategory(string mejortorrentCat, string detailsStr, string title)
{
// get root category
var cat = MejorTorrentCatType.Otro;
if (mejortorrentCat == null)
{
if (detailsStr.Contains("peliculas_extend"))
cat = MejorTorrentCatType.Pelicula;
else if (detailsStr.Contains("series_extend"))
cat = MejorTorrentCatType.Serie;
else if (detailsStr.Contains("musica_extend"))
cat = MejorTorrentCatType.Musica;
}
else if (mejortorrentCat.Equals(MejorTorrentCatType.Pelicula) ||
mejortorrentCat.Equals(MejorTorrentCatType.Serie) ||
mejortorrentCat.Equals(MejorTorrentCatType.Musica))
cat = mejortorrentCat;
// hack to separate SD & HD series
if (cat.Equals(MejorTorrentCatType.Serie) && title.ToLower().Contains("720p"))
cat = MejorTorrentCatType.SerieHd;
return cat;
}
private static string GetLongestWord(string text)
{
var words = text.Split(' ');
if (!words.Any())
return null;
var longestWord = words.First();
foreach (var word in words)
if (word.Length >= longestWord.Length)
longestWord = word;
return longestWord;
}
private static DateTime TryToParseDate(string dateToParse, DateTime dateDefault)
{
try
{
return DateTime.ParseExact(dateToParse, "yyyy-MM-dd", CultureInfo.InvariantCulture);
}
catch
{
// ignored
}
return dateDefault;
}
}
}

View File

@@ -88,14 +88,6 @@ namespace Jackett.Common.Indexers
configData.AddDynamic("freeleech", new BoolConfigurationItem("Search freeleech only") { Value = false });
AddCategoryMapping(29, TorznabCatType.TVAnime, "Anime");
AddCategoryMapping(28, TorznabCatType.PC, "Appz/Packs");
AddCategoryMapping(42, TorznabCatType.AudioAudiobook, "Audio Books");
AddCategoryMapping(20, TorznabCatType.Books, "Books");
AddCategoryMapping(30, TorznabCatType.TVDocumentary, "Documentary");
AddCategoryMapping(47, TorznabCatType.Other, "Fonts");
AddCategoryMapping(43, TorznabCatType.PCMac, "Mac");
AddCategoryMapping(96, TorznabCatType.MoviesUHD, "Movie/4K");
AddCategoryMapping(25, TorznabCatType.MoviesSD, "Movies/480p");
AddCategoryMapping(11, TorznabCatType.MoviesBluRay, "Movies/Bluray");
@@ -108,31 +100,43 @@ namespace Jackett.Common.Indexers
AddCategoryMapping(48, TorznabCatType.Movies, "Movies/x265");
AddCategoryMapping(1, TorznabCatType.MoviesSD, "Movies/XviD");
AddCategoryMapping(17, TorznabCatType.AudioMP3, "Music/Audio");
AddCategoryMapping(23, TorznabCatType.AudioForeign, "Music/Non-English");
AddCategoryMapping(41, TorznabCatType.Audio, "Music/Packs");
AddCategoryMapping(16, TorznabCatType.AudioVideo, "Music/Video");
AddCategoryMapping(27, TorznabCatType.Audio, "Music/Flac");
AddCategoryMapping(45, TorznabCatType.AudioOther, "Podcast");
AddCategoryMapping(4, TorznabCatType.PCGames, "PC/Games");
AddCategoryMapping(18, TorznabCatType.ConsolePS3, "PS3");
AddCategoryMapping(8, TorznabCatType.ConsolePSP, "PSP");
AddCategoryMapping(10, TorznabCatType.ConsoleWii, "Wii");
AddCategoryMapping(9, TorznabCatType.ConsoleXBox360, "Xbox-360");
AddCategoryMapping(24, TorznabCatType.TVSD, "TV/480p");
AddCategoryMapping(32, TorznabCatType.TVHD, "TV/Bluray");
AddCategoryMapping(31, TorznabCatType.TVSD, "TV/DVD-R");
AddCategoryMapping(33, TorznabCatType.TVSD, "TV/DVD-Rip");
AddCategoryMapping(46, TorznabCatType.TVSD, "TV/Mobile");
AddCategoryMapping(82, TorznabCatType.TVForeign, "TV/Non-English");
AddCategoryMapping(14, TorznabCatType.TV, "TV/Packs");
AddCategoryMapping(26, TorznabCatType.TVSD, "TV/SD/x264");
AddCategoryMapping(7, TorznabCatType.TVHD, "TV/x264");
AddCategoryMapping(34, TorznabCatType.TVUHD, "TV/x265");
AddCategoryMapping(2, TorznabCatType.TVSD, "TV/XviD");
AddCategoryMapping(4, TorznabCatType.PCGames, "PC/Games");
AddCategoryMapping(18, TorznabCatType.ConsolePS3, "PS");
AddCategoryMapping(8, TorznabCatType.ConsolePSP, "PSP");
AddCategoryMapping(10, TorznabCatType.ConsoleNDS, "Nintendo");
AddCategoryMapping(9, TorznabCatType.ConsoleXBox, "Xbox");
AddCategoryMapping(17, TorznabCatType.AudioMP3, "Music/Audio");
AddCategoryMapping(27, TorznabCatType.Audio, "Music/Flac");
AddCategoryMapping(23, TorznabCatType.AudioForeign, "Music/Non-English");
AddCategoryMapping(41, TorznabCatType.Audio, "Music/Packs");
AddCategoryMapping(16, TorznabCatType.AudioVideo, "Music/Video");
AddCategoryMapping(29, TorznabCatType.TVAnime, "Anime");
AddCategoryMapping(42, TorznabCatType.AudioAudiobook, "Audio Books");
AddCategoryMapping(20, TorznabCatType.Books, "Books");
AddCategoryMapping(102, TorznabCatType.BooksForeign, "Books/Non-English");
AddCategoryMapping(30, TorznabCatType.TVDocumentary, "Documentary");
AddCategoryMapping(95, TorznabCatType.TVDocumentary, "Educational");
AddCategoryMapping(47, TorznabCatType.Other, "Fonts");
AddCategoryMapping(43, TorznabCatType.PCMac, "Mac");
AddCategoryMapping(45, TorznabCatType.AudioOther, "Podcast");
AddCategoryMapping(28, TorznabCatType.PC, "Softwa/Packs");
AddCategoryMapping(12, TorznabCatType.PC, "Software");
AddCategoryMapping(19, TorznabCatType.XXX, "XXX/0Day");
AddCategoryMapping(6, TorznabCatType.XXX, "XXX/Movies");
AddCategoryMapping(15, TorznabCatType.XXXPack, "XXX/Packs");
}

View File

@@ -24,6 +24,7 @@ namespace Jackett.Common.Models
public long? TVDBId { get; set; }
public long? Imdb { get; set; }
public long? TMDb { get; set; }
public long? DoubanId { get; set; }
public string Author { get; set; }
public string BookTitle { get; set; }
public long? Seeders { get; set; }
@@ -61,6 +62,7 @@ namespace Jackett.Common.Models
RageID = copyFrom.RageID;
Imdb = copyFrom.Imdb;
TMDb = copyFrom.TMDb;
DoubanId = copyFrom.DoubanId;
Author = copyFrom.Author;
BookTitle = copyFrom.BookTitle;
Seeders = copyFrom.Seeders;
@@ -115,6 +117,6 @@ namespace Jackett.Common.Models
public static long BytesFromKB(float kb) => (long)(kb * 1024f);
public override string ToString() =>
$"[ReleaseInfo: Title={Title}, Guid={Guid}, Link={Link}, Details={Details}, PublishDate={PublishDate}, Category={Category}, Size={Size}, Files={Files}, Grabs={Grabs}, Description={Description}, RageID={RageID}, TVDBId={TVDBId}, Imdb={Imdb}, TMDb={TMDb}, Seeders={Seeders}, Peers={Peers}, Poster={Poster}, InfoHash={InfoHash}, MagnetUri={MagnetUri}, MinimumRatio={MinimumRatio}, MinimumSeedTime={MinimumSeedTime}, DownloadVolumeFactor={DownloadVolumeFactor}, UploadVolumeFactor={UploadVolumeFactor}, Gain={Gain}]";
$"[ReleaseInfo: Title={Title}, Guid={Guid}, Link={Link}, Details={Details}, PublishDate={PublishDate}, Category={Category}, Size={Size}, Files={Files}, Grabs={Grabs}, Description={Description}, RageID={RageID}, TVDBId={TVDBId}, Imdb={Imdb}, TMDb={TMDb}, DoubanId={DoubanId}, Seeders={Seeders}, Peers={Peers}, Poster={Poster}, InfoHash={InfoHash}, MagnetUri={MagnetUri}, MinimumRatio={MinimumRatio}, MinimumSeedTime={MinimumSeedTime}, DownloadVolumeFactor={DownloadVolumeFactor}, UploadVolumeFactor={UploadVolumeFactor}, Gain={Gain}]";
}
}

View File

@@ -255,15 +255,17 @@ namespace Jackett.Updater
"CurlSharp.dll",
"CurlSharp.pdb",
"Definitions/01torrent.yml",
"Definitions/24rolika.yml",
"Definitions/32pages.yml",
"Definitions/3evils.yml",
"Definitions/420files.yml",
"Definitions/7torrents.yml",
"Definitions/angietorrents.yml",
"Definitions/DasUnerwartete.yml",
"Definitions/academictorrents.yml",
"Definitions/alein.yml",
"Definitions/aither.yml", // switch to *-API #8682
"Definitions/alein.yml",
"Definitions/alexfilm.yml",
"Definitions/angietorrents.yml",
"Definitions/anidex.yml", // migrated to C#
"Definitions/animeitalia.yml",
"Definitions/animeworld.yml", // switch to *-API #8682
@@ -278,12 +280,12 @@ namespace Jackett.Updater
"Definitions/avg.yml",
"Definitions/awesomehd.yml", // migrated to C#
"Definitions/b2s-share.yml",
"Definitions/beyond-hd-oneurl.yml", // #12993
"Definitions/baibako.yml", // renamed rudub #5673
"Definitions/bithq.yml",
"Definitions/bit-titan.yml",
"Definitions/beyond-hd-oneurl.yml", // #12993
"Definitions/bigtorrent.yml", // merged with eStone #12352
"Definitions/bigtower.yml",
"Definitions/bit-titan.yml",
"Definitions/bithq.yml",
"Definitions/bitme.yml",
"Definitions/bittorrentam.yml",
"Definitions/blubits.yml",
@@ -309,10 +311,9 @@ namespace Jackett.Updater
"Definitions/crazyscorner.yml",
"Definitions/czteam.yml",
"Definitions/cztorrent.yml",
"Definitions/darmowetorenty.yml", // migrated to C#
"Definitions/danishbytes.yml", // migrated to C#
"Definitions/darktracker.yml",
"Definitions/DasUnerwartete.yml",
"Definitions/darmowetorenty.yml", // migrated to C#
"Definitions/datascene.yml", // switch to *-API #8682
"Definitions/demonsite.yml",
"Definitions/desireleasers.yml",
@@ -330,8 +331,8 @@ namespace Jackett.Updater
"Definitions/elitehd.yml",
"Definitions/elittracker.yml",
"Definitions/emtrek.yml",
"Definitions/epizod.yml",
"Definitions/eotforum.yml",
"Definitions/epizod.yml",
"Definitions/erzsebet.yml",
"Definitions/erzsebetpl.yml",
"Definitions/estrenosdtl.yml",
@@ -360,8 +361,8 @@ namespace Jackett.Updater
"Definitions/gormogon.yml",
"Definitions/greeklegends.yml",
"Definitions/gtorrent.yml",
"Definitions/hachede.yml",
"Definitions/hachede-c.yml",
"Definitions/hachede.yml",
"Definitions/hd4free.yml",
"Definitions/hdbc.yml", // renamed to hdbitscom
"Definitions/hdclub.yml",
@@ -371,8 +372,10 @@ namespace Jackett.Updater
"Definitions/hdplus.yml",
"Definitions/hdreactor.yml", // renamed to hdhouse
"Definitions/hdstreet.yml",
"Definitions/hon3yhd.yml",
"Definitions/hellastz.yml",
"Definitions/hidden-palace.yml",
"Definitions/hon3yhd-net.yml",
"Definitions/hon3yhd.yml",
"Definitions/horriblesubs.yml",
"Definitions/horrorsite.yml",
"Definitions/hush.yml",
@@ -387,8 +390,8 @@ namespace Jackett.Updater
"Definitions/kapaki.yml",
"Definitions/katcrs.yml",
"Definitions/kaztorka.yml",
"Definitions/kickasstorrent.yml",
"Definitions/kickasstorrent-kathow.yml", // renamed to kickasstorrents-ws
"Definitions/kickasstorrent.yml",
"Definitions/kikibt.yml",
"Definitions/kisssub.yml",
"Definitions/lapausetorrents.yml",
@@ -416,21 +419,20 @@ namespace Jackett.Updater
"Definitions/moviezone.yml", // migrated to teracod #9743
"Definitions/music-master.yml",
"Definitions/nachtwerk.yml",
"Definitions/nbtorrents.yml",
"Definitions/nexttorrent.yml",
"Definitions/nforce.yml",
"Definitions/nnm-club.yml", // renamed to noname-club
"Definitions/nordichd.yml",
"Definitions/nordicplus.yml",
"Definitions/nostalgic.yml", // renamed to vhstapes
"Definitions/nyaa.yml",
"Definitions/nyaa-pantsu.yml",
"Definitions/nyaa.yml",
"Definitions/nyoo.yml",
"Definitions/oasis.yml",
"Definitions/onlineselfeducation.yml",
"Definitions/onlyscene.yml",
"Definitions/obscure.yml",
"Definitions/oncesearch.yml",
"Definitions/onlineselfeducation.yml",
"Definitions/onlyscene.yml",
"Definitions/passionetorrent.yml",
"Definitions/pirateiro.yml",
"Definitions/pleasuredome.yml",
@@ -439,9 +441,9 @@ namespace Jackett.Updater
"Definitions/pt99.yml",
"Definitions/qctorrent.yml",
"Definitions/qxr.yml",
"Definitions/racing4everyone.yml", // switch to *-API #12870 #8682
"Definitions/rapidetracker.yml",
"Definitions/rarbg.yml", // migrated to C#
"Definitions/racing4everyone.yml", // switch to *-API #12870 #8682
"Definitions/redbits.yml", // switch to *-API #11540 #8682
"Definitions/redtopia.yml",
"Definitions/reelflix.yml", // switch to *-API #8682
@@ -459,6 +461,7 @@ namespace Jackett.Updater
"Definitions/scenexpress.yml",
"Definitions/sdkino.yml",
"Definitions/secretcinema.yml", // migrated to C# gazelle base tracker
"Definitions/seedfile.yml",
"Definitions/seedpeer.yml",
"Definitions/sexxi.yml",
"Definitions/sharefiles.yml",
@@ -469,10 +472,9 @@ namespace Jackett.Updater
"Definitions/shellife.yml",
"Definitions/shokweb.yml",
"Definitions/skipthecommercials.yml", // switch to *-API #8682
"Definitions/torrentland.yml", // switch to *-API #13006 #8682
"Definitions/skytorrents.yml",
"Definitions/skytorrents-lol.yml",
"Definitions/skytorrents-to.yml",
"Definitions/skytorrents.yml",
"Definitions/skytorrentsclone.yml", // renamed to skytorrents-lol
"Definitions/skytorrentsclone2.yml", // renamed to skytorrents-to
"Definitions/spacetorrent.yml",
@@ -482,10 +484,10 @@ namespace Jackett.Updater
"Definitions/t411v2.yml",
"Definitions/takeabyte.yml",
"Definitions/tazmaniaden.yml",
"Definitions/tenyardtracker.yml", // to be migrated to c#, #795
"Definitions/tbplus.yml",
"Definitions/tehconnection.yml",
"Definitions/tellytorrent.yml", // switch to *-API #8682
"Definitions/tenyardtracker.yml", // to be migrated to c#, #795
"Definitions/tfile.yml",
"Definitions/the-devils-lounge.yml",
"Definitions/the-madhouse.yml",
@@ -508,6 +510,7 @@ namespace Jackett.Updater
"Definitions/torrentgalaxyorg.yml", // renamed to torrentgalaxy
"Definitions/torrenthane.yml",
"Definitions/torrentkim.yml",
"Definitions/torrentland.yml", // switch to *-API #13006 #8682
"Definitions/torrentmax.yml",
"Definitions/torrentproject.yml",
"Definitions/torrentquest.yml",
@@ -522,8 +525,8 @@ namespace Jackett.Updater
"Definitions/torrentz2k.yml",
"Definitions/torrof.yml",
"Definitions/torviet.yml",
"Definitions/trackeros.yml", // switch to *-API #12807
"Definitions/trackeros-api.yml",
"Definitions/trackeros.yml", // switch to *-API #12807
"Definitions/tspate.yml",
"Definitions/ttobogo.yml",
"Definitions/turknova.yml",
@@ -536,6 +539,7 @@ namespace Jackett.Updater
"Definitions/vanila.yml",
"Definitions/vhstapes.yml",
"Definitions/waffles.yml",
"Definitions/witchhunter.yml",
"Definitions/world-of-tomorrow.yml", // #9213
"Definitions/worldofp2p.yml",
"Definitions/worldwidetorrents.yml",
@@ -545,7 +549,7 @@ namespace Jackett.Updater
"Definitions/xtremezone.yml", // migrated to C# XtremeZone base tracker
"Definitions/yingk.yml",
"Definitions/yourexotic.yml", // renamed to exoticaz
"Definitions/witchhunter.yml",
"Definitions/zooqle.yml",
"Microsoft.Owin.dll",
"Microsoft.Owin.FileSystems.dll",
"Microsoft.Owin.Host.HttpListener.dll",