Compare commits

...

166 Commits

Author SHA1 Message Date
Garfield69
41142dc88f add mkvcage. resolves #5146 2019-06-19 10:21:39 +12:00
Garfield69
eeb791dbb6 Merge branch 'master' of https://github.com/Jackett/Jackett 2019-06-18 14:06:29 +12:00
Garfield69
cf8011f2b8 add nbtorrents as Indian private site. resolves #5337 2019-06-18 14:06:17 +12:00
xfouloux
f1b7d591bd sharewood: new category selector (#5503)
match on category changed
2019-06-18 13:47:54 +12:00
Garfield69
d4e776e23a transmitthenet (nebulance): handle both date settings, #5496 2019-06-18 10:05:49 +12:00
MsKrypt1
1a548d1c8c Add AniDUB a Russian Anime site. resolves #5399 (#5490) 2019-06-15 11:26:07 +12:00
julakali
756161f1e7 TorrentSyndikat: Do not filter query, remove wildcard operator. (#5489)
TS removes too short terms automatically. Wildcard causes problems with not indexed terms such as "how" (as in "how to sell drugs online fast").
2019-06-15 07:35:06 +12:00
xfouloux
919bf4d99a yggtorrent: optional beta search engine (#5487)
1. Removed sonarrv3hack and add betasearchengine instead

Search URL is https://...yggurl..../new_search/..... instead of https://...yggurl..../engine/...... when checkbox selected
new_search is less restrictive, and should work better for sonarr V3 and animes too

2. Improved the AnimeEnhancedSearch 
Returning a Exxx when title contains 1 or more digits (up to 4) and surrounded by a space, dash or dot only, it could break movies search, still have to see if it would be better to just match with \d{3,4} only

```
      title_anime:
        text: "{{ .Result.title_phase3 }}"
        filters:
        # Sonarr need E in front of 3 digit number or else it thinks it is episode
        # S01E10 for number 110 for example ==> enhancedAnime
          - name: re_replace
            args: ["(.*)(\\.| |\\-)(\\d{1,4})(\\.| |\\-)(.*)", "$1 E$3 $5"]
      title:
        text: "{{if .Config.enhancedAnime }}{{ .Result.title_anime }}{{else}}{{ .Result.title_phase3 }}{{end}}"
```
2019-06-15 07:33:59 +12:00
snamds
6eb7a3df45 NewPct: New domain (#5485) 2019-06-14 10:41:34 +12:00
sunn0
5a822fe5ab MoreThanTV: switch 4K with 2160p (#5484)
MTV lists 2160p torrents like " ... / 4K", which tools like Sonarr falsely parse as 480p. This should fix it.
2019-06-14 09:21:03 +12:00
Víctor de la Rosa
dffefa1044 hachede: switch to cookie login. (#5476) resolves #5474 2019-06-13 07:13:30 +12:00
Garfield69
1cc62c0f7c add torrentquest a public magnet tracker. resolves #5468 2019-06-12 17:51:35 +12:00
Garfield69
46edeabcfa magnetdl: fix leechers and files selectors 2019-06-12 17:49:32 +12:00
Garfield69
e89d1f4616 add oxtorrent a public French site. resolves #5465 2019-06-12 16:33:34 +12:00
Garfield69
65aec0058d add hamsterstudio a semi-private Russian TV site. resolves #5402 2019-06-12 12:18:23 +12:00
Garfield69
11e6e26c12 magnetdl: fix test. resolves #5470
for empty searches, the site has dropped the invalid-cat page, so we search for movies instead
2019-06-12 08:33:02 +12:00
Garfield69
2b59863409 add itorrent a Public Hungarian site. resolves #5459 2019-06-11 18:13:17 +12:00
Garfield69
34f518841e torrent9clone: new domain ww1. 2019-06-11 16:42:43 +12:00
Garfield69
771fb73062 add movcr an Indian Public site. resolves #5443 2019-06-11 15:41:05 +12:00
Garfield69
ba6a4647a0 nebulance: change date selector. #5456 2019-06-10 14:21:07 +12:00
Garfield69
7aadf02167 mactorrents: selector changes. resolves #5453 2019-06-10 13:06:39 +12:00
Garfield69
e9536bff76 add rptorrents a private tracker. resolves #5368 2019-06-09 21:23:39 +12:00
Jorman
012fd043f6 btdb: fetch up to 5 pages (#5445) 2019-06-09 21:21:59 +12:00
Garfield69
d81a8f0217 add yourbittorent a public indexer. resolves #5417 2019-06-09 16:58:38 +12:00
Jorman
db97f9eed3 bigtower: Fixed error on searching phase (#5440) 2019-06-09 13:59:33 +12:00
Jorman
94f0e1a732 btdb: fix date parser (#5442) 2019-06-09 13:58:55 +12:00
Garfield69
7b076a001c rockbox: amend row selector. #5393 2019-06-09 13:48:45 +12:00
Garfield69
5fd7210791 Elitetracker: change date format. resolves #5436
also add a few more categories
2019-06-09 13:22:13 +12:00
Garfield69
dcf3956afd remove cinefilhd 2019-06-08 12:31:08 +12:00
Garfield69
73b8495197 pleasuredone: handle different ranks results. #5357 2019-06-08 12:07:41 +12:00
Garfield69
2f86b439e4 yts: new domain. resolves #5422 2019-06-08 07:27:21 +12:00
dvdbot
d010053f36 correct the aggregate example (#5412)
Without the `/api` on the end it works but with it doesn't so maybe a typo?
2019-06-07 07:27:34 +12:00
Garfield69
edbb0159e7 torrentgalaxy: update. resolves #5394
drop .torrent support
change row selector
2019-06-06 12:42:32 +12:00
Garfield69
2c770607e6 sportscult: strip uprightbars from title #5378 2019-06-02 06:09:17 +12:00
Garfield69
6191ec0ef4 sportscult: strip %7C from download link for #5378 2019-06-01 20:00:15 +12:00
Garfield69
771e2ea2be sportscult: update download, add new categories. resolves #5378 2019-06-01 07:12:19 +12:00
Garfield69
a16a0ff73c Revert "magnetdl has closed."
This reverts commit deb016fabf.
2019-05-30 08:02:31 +12:00
Garfield69
470550a3c8 limetorrents: add sort by date. resolves #5365 2019-05-29 16:27:09 +12:00
Garfield69
2195c6bb87 torrent9clone: new domain wwv. 2019-05-29 11:55:20 +12:00
djoole
f36a3232d8 yggtorrent: fix search keywords (#5364)
Doing again what was done in #4597 (and undoing what was broken in #4791)
Ex : 
Search for **_la""grande""aventure""lego""2_** and you will find 3 results.
Search for **_la grande aventure lego 2_** and you'll find nothing at all.
2019-05-29 11:41:45 +12:00
Garfield69
f7fcc614f7 morethantv: try to provide default quality #5334 2019-05-26 19:28:52 +12:00
Garfield69
c15d6468d2 Revert "morethantv: attempt to handle missing quality. #5334"
This reverts commit ecec867de8.
2019-05-26 16:18:50 +12:00
Garfield69
ecec867de8 morethantv: attempt to handle missing quality. #5334 2019-05-26 11:50:51 +12:00
Garfield69
461834879e zamundanet: update categories 2019-05-26 08:49:27 +12:00
Garfield69
d0507319c5 zelkaorg: update categories 2019-05-26 08:49:11 +12:00
R91g
0921388f9e hdspain: updates (#5330)
- Fixed details url, now when click on a torrent name will open the torrent url correctly
- Added comments (link to topic in forum)
- Added minimum ratio and minimum seed time
- Added "Megapack / Audio Editado" labels as to the title torrent and description.
2019-05-25 11:53:09 +12:00
Garfield69
543ea776c4 freedomtorrent: handler login errors and poster on/off 2019-05-24 22:12:15 +12:00
Garfield69
bb595337bd dxdhd: handle login errors and poster on/off 2019-05-24 22:06:04 +12:00
Garfield69
a3f7575e8e r4e: handle login errors and posters on/off 2019-05-24 22:03:04 +12:00
Garfield69
2c423b3b88 channelx: handle login errors 2019-05-24 21:54:58 +12:00
Garfield69
1253b15061 blutopia: handle posters on/off and login errors 2019-05-24 21:53:02 +12:00
Garfield69
d6f36349c9 channelx: handle posters on/off 2019-05-24 21:49:31 +12:00
Garfield69
46553c3054 hush: update for unit3d 1.9.2 2019-05-24 21:44:01 +12:00
Garfield69
e843f6ce31 add RocketHD a German Private site. resolves #5317 2019-05-24 20:58:53 +12:00
Garfield69
5e4286e382 elitetorrent-biz: new domain .one 2019-05-24 13:51:47 +12:00
Garfield69
2e110e986b newpct: new domain 2019-05-24 07:32:34 +12:00
Garfield69
3039e2fbe5 siambit: enable downloads. #5243 resolves #5296 2019-05-23 10:40:15 +12:00
Garfield69
9e83be6ae1 Merge branch 'master' of https://github.com/Jackett/Jackett 2019-05-23 07:12:36 +12:00
Garfield69
5f68c25b6e sportscult: fix date. resolves #5314 2019-05-23 07:12:06 +12:00
Anthony Guillemette
50019e05b7 yggtorrent: replace SUBFRENCH with English (#5309) 2019-05-22 19:03:20 +12:00
Garfield69
679c74eebd siambit: fix results for non-vip users. WIP. download not working. #5296 2019-05-22 11:40:55 +12:00
Garfield69
3ac9d26a91 add uniongang a Russian Private site. resolves #5288 2019-05-22 10:02:22 +12:00
Garfield69
45fa6e3971 cardigannindexer: these int values need to be string if used in yml #5293 2019-05-20 11:22:06 +12:00
Garfield69
deb016fabf magnetdl has closed. 2019-05-20 08:43:48 +12:00
Garfield69
ad281585f2 theshinning: add kids category
also handle banners if present and adjustments for discounts
2019-05-19 20:08:52 +12:00
Garfield69
3206d3350d sharingue: no domain? removed. 2019-05-19 19:25:18 +12:00
Garfield69
c4744f84e2 hd4free: add sports category and corrections to discounts 2019-05-19 19:17:12 +12:00
Garfield69
bc25de158d beyond-hd: corrections to discounts 2019-05-19 19:05:16 +12:00
Garfield69
ed4e1b801b xktorrent: add sport and xxx categories 2019-05-19 18:30:30 +12:00
Garfield69
3c81af1a62 freetorrent: update to unit3d 1.9.2 2019-05-19 08:32:17 +12:00
Garfield69
4737093f81 torrentseeds: new search engine. resolves #5292 2019-05-18 11:01:32 +12:00
Garfield69
7a77245e25 yggtorrent: improve login error recognition. resolves #5283 2019-05-18 08:16:40 +12:00
Garfield69
138185929f cztorrent: add form login
and let cardigannindexer decide to show cookie login when recaptcha detected.
2019-05-17 15:23:23 +12:00
Garfield69
a82c166b23 awsomehd: add login form
and let cardigannindexer decide to show cookie login when recaptcha detected.
2019-05-17 14:33:25 +12:00
Garfield69
b421253ee5 proaudiotorrent: add login form
and let cardigannindexer decide to show cookie login when recaptcha detected.
2019-05-17 14:25:24 +12:00
Garfield69
77832602bd desireleasers: add login form
and let cardigannindexer decide to show cookie login when recaptcha detected.
2019-05-17 14:24:41 +12:00
Garfield69
87a36e3621 cardigannindexer: correclty identify when recaptcha is in use
some sites drop the script but leave the g-recaptcha div behind causing false positives on hascaptcha flag.
2019-05-17 14:23:18 +12:00
Garfield69
c33f0594bd divteam: switch to cookie login. resolves #5282 #5281 2019-05-17 08:40:27 +12:00
flightlevel
a4ee8fee8d Pull .NET Core 2.2.5 on Appveyor
#5179
2019-05-16 19:12:45 +10:00
Garfield69
a12f573e80 generationfree: add multi replacement option. #5279 2019-05-16 20:12:18 +12:00
Garfield69
ea14a5a194 mejortorrent: new domain 2019-05-16 12:55:23 +12:00
Garfield69
b9f9c10baf asiancinema: now using download_check. 2019-05-16 12:25:29 +12:00
Garfield69
e049376381 add generation-free a Private French site. resolves #5279 2019-05-16 11:13:06 +12:00
Garfield69
e89312b52f cartoonchaos: add note that only default style is supported. resolves #5274 2019-05-16 07:43:02 +12:00
Garfield69
4f758ee8cc add teamhd a Russian private site. resolves #4397 2019-05-15 16:42:34 +12:00
Garfield69
2f8aa41fe0 add siambit, a Thai Private site. resolves #5243 2019-05-15 12:47:32 +12:00
flightlevel
8425926636 Remove macOS mono script from build 2019-05-14 19:53:04 +10:00
flightlevel
3e0f25c51b Remove macOS Mono script
No reason to run the Mono version of macOS now with the standalone version of Jackett available
2019-05-13 21:07:21 +10:00
flightlevel
c52199f7ca Remove Mono directory from standalone script 2019-05-13 21:06:17 +10:00
flightlevel
bede5241c8 Updater: Use client garbage collection 2019-05-13 21:04:58 +10:00
flightlevel
9cb9b859a8 Global exception catcher 2019-05-13 21:03:32 +10:00
Garfield69
47580ec726 nethd: changes for new layout 2019-05-12 11:05:27 +12:00
Garfield69
8e9290c501 torrent9: new download link. resolves #5250 2019-05-12 10:29:44 +12:00
Garfield69
3ddd35d54b torrent9clone: new domain wvw. 2019-05-12 09:18:32 +12:00
Garfield69
6529b1fe38 gktorrent: new domain .biz 2019-05-12 09:14:46 +12:00
Garfield69
a58ba9e329 removed freedomhd, closed. #750 2019-05-12 09:10:41 +12:00
Garfield69
ca7def79d2 casatorrent: site is forcing https now. 2019-05-12 08:52:32 +12:00
Garfield69
c50a29a8e9 beyound-hd: latest batch of layout changes #5218
plus qty=100 is back now it does not cause internal server 500 errors on the site.
2019-05-11 18:58:30 +12:00
flightlevel
f86e8dd5b6 Limit IMDB searches to movies
#5124
2019-05-11 13:27:25 +10:00
flightlevel
3530fa8244 Added extra updater logging
#5208
2019-05-11 13:04:07 +10:00
Garfield69
6f65992bb5 torrentseeds: handle when title has no mouseover. #5244 2019-05-11 09:47:15 +12:00
Garfield69
f1c83273f2 add efectodoppler a Spanish Private Music site. resolves #5222 2019-05-10 21:44:05 +12:00
Peter Zsak
fdff9e4406 insanetracker: rewritten for the new UI 2.0 (#5236) 2019-05-10 10:36:15 +12:00
Garfield69
b8be09a203 beyond-hd: drop poster requirement 2019-05-10 07:21:31 +12:00
Garfield69
aa26654be9 beyond-hd: add info about show-posters web setting. 2019-05-09 21:19:39 +12:00
Garfield69
20e21cfc8a beyond-hd: corrections to selectors
qty > 25 causes server errors
tvdb and mal not supported
sort -> sorting
filtertorrents -> torrents
language=english only
2019-05-09 13:11:02 +12:00
Zotan
068cbcd36b beyond-hd: Update UNIT3D (#5221) 2019-05-09 11:45:34 +12:00
Garfield69
acb649499b nnm-club: drop expired certificates 2019-05-07 15:50:00 +12:00
Garfield69
8c47f03a55 nyaasi: drop expired certificate 2019-05-07 15:45:22 +12:00
Garfield69
f63fe9918b ilcorsaroblu: drop expired certificate 2019-05-07 15:43:46 +12:00
Garfield69
c1389c76f3 frozenlayer: drop expired certificate 2019-05-07 15:41:18 +12:00
Garfield69
253f9ad6bb trancetraffic: drop expired certificate 2019-05-07 15:39:39 +12:00
Garfield69
ab63e03e3b ilcorsaronero: drop expired certificates 2019-05-07 15:30:32 +12:00
Garfield69
46c6039144 psytorrents: drop expired certificate 2019-05-07 15:28:14 +12:00
Garfield69
b619360bf1 elitetracker: drop expired certificate 2019-05-07 15:25:03 +12:00
Garfield69
ae316ffc1b icetorrent: drop title attribute: #5201 2019-05-07 08:23:16 +12:00
flightlevel
e051c13f3a Package update 2019-05-06 19:41:16 +10:00
Garfield69
88f290d558 yggtorrent: new domain .ch #5187 2019-05-06 09:19:00 +12:00
Garfield69
d6f15940b3 abnormal: add replace-multi option. #3847 2019-05-06 09:13:10 +12:00
Garfield69
e702160c10 filelist: searchin=1 sort=2 resolves #5190 2019-05-06 07:37:49 +12:00
Garfield69
f90ba08b2d xbytes2: oops fix music cat. 2019-05-06 07:29:17 +12:00
Garfield69
a05b64a097 xbytes2: more cat refinements
plus add movie and tv search modes
2019-05-06 07:26:53 +12:00
Roman Smirnov
ce806a7678 kinozal: add Kravec replacement (#5184) 2019-05-06 07:22:22 +12:00
databio-xx
5f41fe3d08 xbytes2: correct the music cats (#5191)
Add correct category for music mp3 and music flac. Apologize for the inconvenience.
2019-05-06 07:21:57 +12:00
Garfield69
ffa264f333 xthor: correct config bullet point for multi. 2019-05-05 19:17:58 +12:00
databio-xx
46aa25772b xbytesv2: Add category for music (#5182) 2019-05-05 15:25:31 +12:00
flightlevel
eeb0b3bc39 Update README.md 2019-05-04 21:05:56 +10:00
flightlevel
cdfdd2c1bb Updater: Improve file copy logic 2019-05-04 20:47:27 +10:00
flightlevel
ec985a2318 Use custom certificate validation handler for httpclient2netcore
https://github.com/Jackett/Jackett/issues/5172
2019-05-04 16:18:25 +10:00
Scott Cooper
d7c09e62bd tapochek: more categories corrections (#5178)
* move comma
2019-05-04 17:59:13 +12:00
flightlevel
2eb54165ac Update proxy message
https://github.com/Jackett/Jackett/issues/4862
2019-05-04 15:58:15 +10:00
flightlevel
5bad47d327 Fix install link
Fixes #5171
2019-05-04 15:52:14 +10:00
Garfield69
8900aea849 Update README.md 2019-05-04 09:28:39 +12:00
Garfield69
85ea6e5a2b Merge branch 'master' of https://github.com/Jackett/Jackett 2019-05-04 09:26:52 +12:00
Garfield69
c69b213376 Update README.md 2019-05-04 09:26:33 +12:00
James
992d2776d3 broadcastthenet: Season Search enhancement (#5174)
- If only a season is searched, format it in a way expected by the indexer
2019-05-04 07:54:30 +12:00
Garfield69
ff62b775db solidtorrents: selectors changed
use non truncated title
add grabs
rework seed leech size
2019-05-03 08:47:03 +12:00
capitre
19b608c529 vizuk: update volumefactors and minseedtime (#5170) 2019-05-03 07:26:45 +12:00
Garfield69
1f9d95355d tapochek: corrention for a couple categories 2019-05-02 20:59:06 +12:00
Garfield69
849d1aeef9 add tapochek a private Russian forum. resolves #4971 2019-05-02 20:37:48 +12:00
Garfield69
08b187bfa1 nnm-club: new domain 2019-05-02 07:49:42 +12:00
snamds
d8b4ad7f39 Newpct: correct Category filter. resolves #5121 (#5163)
Some categories were not well filtered
2019-05-02 07:15:45 +12:00
flightlevel
02546877fd Inform Mono users that Mono is no longer required 2019-05-01 20:15:26 +10:00
Garfield69
52fad1e6d2 shareisland: new layout resolves #5150 2019-04-30 12:19:59 +12:00
Garfield69
049e678b0a tntvillage: add header for search post. resolves #5131 2019-04-30 08:20:21 +12:00
flightlevel
4edcda8351 Make httpclient2netcore the default 2019-04-29 20:30:27 +10:00
Garfield69
01994bf9f5 shareisland: cat updates 2019-04-28 09:12:25 +12:00
flightlevel
0d4c8ba860 Inform users that Mono is no longer needed
Note: Not enabled currently, will enable at a later date
2019-04-27 20:59:33 +10:00
flightlevel
fad453cf0e Add httpclient2netcore 2019-04-27 20:27:11 +10:00
Jorman
222fcde0a3 shareisland revert previous download link changes (#5137)
Revert last change, site changed again the download decision. I commented out the code ... just in case
2019-04-27 19:02:10 +12:00
Jorman
6aa42263be shareisland: followup #5129 (#5130)
The download now works, thanks @garfield69
2019-04-26 19:36:25 +12:00
Jorman
ec036d70f9 shareisland: download link update (#5129)
Update download selector
2019-04-26 18:58:03 +12:00
Garfield69
db300f5ae9 skytorrentclone: restore magnets only option. #4542 2019-04-25 07:09:25 +12:00
Garfield69
1d224b6db9 casatorrent: new domain #4911 2019-04-24 16:21:35 +12:00
Garfield69
a3e97bb050 amigosshare: new results layout 2019-04-23 19:21:57 +12:00
Garfield69
e5827c3456 megabliz: set as private 2019-04-22 17:28:50 +12:00
Garfield69
27d2b6caae kikibt: drop .cc domain, only using .pw now. 2019-04-22 08:32:58 +12:00
Garfield69
bcdc1879d9 btkitty: new domain 2019-04-22 08:28:37 +12:00
Garfield69
a8999e8276 torrentkitty: new domain 2019-04-22 08:20:31 +12:00
Garfield69
4c2db157e9 torrent9clone: back to .lol
same as gktorrent?
2019-04-21 17:34:35 +12:00
Garfield69
10a46bac48 gktorrent: back to .net
whats the f'ing point of yo-yo'ing from .tv to .net and back again?
2019-04-21 17:18:02 +12:00
Garfield69
7d6b282039 Revert "RarBG: bump requestDelay to 2.2 for #5107"
This reverts commit f6bb9ca263.
2019-04-21 15:28:19 +12:00
Garfield69
f6bb9ca263 RarBG: bump requestDelay to 2.2 for #5107 2019-04-21 10:50:34 +12:00
Garfield69
11e8d4d290 custom.js: ensure url len <= 2k resolves #5104
https://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers
2019-04-21 09:52:09 +12:00
Peter Zsak
c88a213b2e insanetracker: new login.php page (#5105) 2019-04-21 08:03:55 +12:00
Garfield69
4295e65dfe skytorrentsclone: back to .lol domain
the .to domain redirects to BTDB

turns out .to was a completely different site than .lol and not an alternate as first thought.
changes made for .to have been reversed.
.lol uses query parm for search,
and itorrents.org for dl links
2019-04-19 18:04:40 +12:00
142 changed files with 4366 additions and 1274 deletions

View File

@@ -45,6 +45,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* Il Corsaro Nero <!-- maintained by bonny1992 -->
* Il Corsaro Blu
* Isohunt2
* iTorrent
* KATcrs
* KickAssTorrent (KATcr)
* KickAssTorrent (thekat.se clone)
@@ -53,11 +54,14 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* MacTorrents
* MagnetDL
* MejorTorrent <!-- maintained by ivandelabeldad -->
* MkvCage
* Monova
* MovCr
* Newpct (aka: tvsinpagar, descargas2020, torrentlocura, torrentrapid, tumejortorrent, pctnew, etc)
* Nyaa.si
* Nyaa-Pantsu
* Nyoo
* OxTorrent
* ProStyleX
* QXR
* RARBG
@@ -77,17 +81,20 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* TorrentGalaxy.org (TGx)
* TorrentKitty
* TorrentProject2
* TorrentQuest
* Torrents.csv
* Torrent9
* Torernt9 clone (torrents9.ch)
* Torrentz2
* World Wide Torrents
* YourBittorrent
* YTS.ag
* Zooqle
### Supported Semi-Private Trackers
* 7tor
* Alein
* AniDUB
* ArenaBG
* CzTorrent
* Deildu
@@ -95,9 +102,9 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* Gay-Torrents.net
* Gay-Torrents.org
* GDF76
* HamsterStudio
* Kinozal
* LostFilm.tv
* Mega-Bliz
* Metal Tracker
* MVGroup Forum
* MVGroup Main
@@ -173,7 +180,6 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* CGPeers
* CHDBits
* ChannelX
* CiNEFiLHD
* Cinemageddon
* Cinematik
* CinemaZ (EuTorrents)
@@ -194,6 +200,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* Dragonworld Reloaded
* Dream Team
* DXDHD
* EfectoDoppler
* EliteHD (HDClub) [![(invite needed)][inviteneeded]](#)
* Elit Tracker (ET)
* Elite-Tracker
@@ -204,7 +211,6 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* FileList (FL)
* Femdomcult
* FocusX
* Freedom-HD (Freedom Paradise)
* FreeTorrent
* FullMixMusic
* FunFile (FF)
@@ -212,6 +218,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* Fuzer (FZ)
* GAYtorrent.ru
* GazelleGames (GGn)
* Generation-Free
* GFXNews
* GFXPeers
* GigaTorrents
@@ -257,12 +264,14 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* Magico (Trellas)
* Majomparádé (TurkDepo)
* Manicomio Share
* Mega-Bliz
* Mononoké-BT
* MoreThanTV (MTV)
* MyAnonamouse (MAM)
* myAmity
* MySpleen
* NCore
* NBTorrents
* Nebulance (NBL) (TransmiTheNet)
* New Real World
* Norbits
@@ -297,8 +306,10 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* RetroFlix
* RevolutionTT
* RGU
* RocketHD
* RoDVD (Cinefiles)
* Romanian Metal Torrent (RMT)
* RPTorrents
* SceneFZ
* SceneHD
* SceneReactor
@@ -308,9 +319,9 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* Secret Cinema
* Shareisland
* ShareSpaceDB
* Sharingue
* Shazbat
* Shellife (SL)
* SiamBIT
* SpaceTorrent
* Speed-Share
* SpeedCD
@@ -319,8 +330,10 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* SportsCult
* SuperBits (SBS)
* TakeaByte
* Tapochek
* Tasmanit
* TBPlus
* TeamHD
* TenYardTorrents (TYT)
* TheEmpire (TE)
* The Geeks
@@ -361,6 +374,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* u-torrents (SceneFZ)
* UHDBits
* Ultimate Gamer Club (UGC)
* UnionGang
* Vizuk
* Waffles
* World-In-HD
@@ -380,7 +394,7 @@ Trackers marked with [![(invite needed)][inviteneeded]](#) have no active maint
### Aggregate indexers
A special "all" indexer is available at `/api/v2.0/indexers/all/results/torznab/api`.
A special "all" indexer is available at `/api/v2.0/indexers/all/results/torznab`.
It will query all configured indexers and return the combined results.
If your client supports multiple feeds it's recommended to add each indexer directly instead of using the all indexer.
@@ -415,7 +429,8 @@ Jackett can also be run from the command line if you would like to see log messa
On most operating systems all the required dependencies will already be present. In case they are not, you can refer to this page https://docs.microsoft.com/en-us/dotnet/core/linux-prerequisites?tabs=netcore2x#linux-distribution-dependencies
### Install as service
To install Jackett as a service, open the Terminal and run `sudo ./install_service_systemd.sh` You need root permissions to install the service. The service will start on each logon. You can always stop it by running `systemctl stop jackett.service` from Terminal. You can start it again it using `systemctl start jackett.service`. Logs are stored as usual under `~/.config/Jackett/log.txt` and also in `journalctl -u jackett.service`.
1. Download and extract the latest `Jackett.Binaries.LinuxAMDx64.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases)
2. To install Jackett as a service, open the Terminal and run `sudo ./install_service_systemd.sh` You need root permissions to install the service. The service will start on each logon. You can always stop it by running `systemctl stop jackett.service` from Terminal. You can start it again it using `systemctl start jackett.service`. Logs are stored as usual under `~/.config/Jackett/log.txt` and also in `journalctl -u jackett.service`.
### Run without installing as a service
Download and extract the latest `Jackett.Binaries.LinuxAMDx64.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases) and run Jackett with the command `./jackett`
@@ -428,7 +443,8 @@ If you want to run it with a user without a /home directory you need to add `Env
On most operating systems all the required dependencies will already be present. In case they are not, you can refer to this page https://docs.microsoft.com/en-us/dotnet/core/linux-prerequisites?tabs=netcore2x#linux-distribution-dependencies
### Install as service
To install Jackett as a service, open the Terminal and run `sudo ./install_service_systemd.sh` You need root permissions to install the service. The service will start on each logon. You can always stop it by running `systemctl stop jackett.service` from Terminal. You can start it again it using `systemctl start jackett.service`. Logs are stored as usual under `~/.config/Jackett/log.txt` and also in `journalctl -u jackett.service`.
1. Download and extract the latest `Jackett.Binaries.LinuxARM32.tar.gz` or `Jackett.Binaries.LinuxARM64.tar.gz` (32 bit is the most common on ARM) release from the [releases page](https://github.com/Jackett/Jackett/releases)
2. To install Jackett as a service, open the Terminal and run `sudo ./install_service_systemd.sh` You need root permissions to install the service. The service will start on each logon. You can always stop it by running `systemctl stop jackett.service` from Terminal. You can start it again it using `systemctl start jackett.service`. Logs are stored as usual under `~/.config/Jackett/log.txt` and also in `journalctl -u jackett.service`.
### Run without installing as a service
Download and extract the latest `Jackett.Binaries.LinuxARM32.tar.gz` or `Jackett.Binaries.LinuxARM64.tar.gz` (32 bit is the most common on ARM) release from the [releases page](https://github.com/Jackett/Jackett/releases) and run Jackett with the command `./jackett`
@@ -558,7 +574,7 @@ All contributions are welcome just send a pull request.
### Windows
* Install the .NET Core [SDK](https://www.microsoft.com/net/download/windows)
* Clone Jackett
* From the `src` directory, run `dotnet restore`
* Open Powershell and from the `src` directory, run `dotnet restore`
* Open the Jackett solution in Visual Studio 2017 (version 15.9 or above)
* Right click on the Jackett solution and click 'Rebuild Solution' to restore nuget packages
* Select Jackett.Server as startup project

View File

@@ -6,6 +6,10 @@ image:
environment:
APPVEYOR_YML_DISABLE_PS_LINUX: true
configuration: Release
install:
#Remove once .NET Core 2.2.5 is deployed to Appveyor
- sh: sudo apt-get update
- sh: sudo apt-get -y install dotnet-sdk-2.2
assembly_info:
patch: true
file: '**\AssemblyInfo.*'

View File

@@ -126,7 +126,6 @@ Task("Package-Mono-Full-Framework")
CopyFiles("./src/Jackett.Updater/bin/" + configuration + "/net461" + "/JackettUpdater.*", buildOutputPath); //builds against multiple frameworks
CopyFileToDirectory("./install_service_macos_mono", buildOutputPath);
CopyFileToDirectory("./install_service_systemd_mono.sh", buildOutputPath);
CopyFileToDirectory("./Upstart.config", buildOutputPath);

View File

@@ -1,77 +0,0 @@
#!/bin/bash
#Setting up colors
BOLDRED="$(printf '\033[1;31m')"
BOLDGREEN="$(printf '\033[1;32m')"
NC="$(printf '\033[0m')" # No Color
# Stop and unload the service if it's running
launchctl remove org.user.Jackett
# Move working directory to Jackett's
cd "$(dirname "$0")"
# Check if we're running from Jackett's directory
if [ ! -f ./JackettConsole.exe ]; then
echo "${BOLDRED}ERROR${NC}: Couldn't locate JackettConsole.exe. Is the script in the right directory?"
exit 1
fi
jackettdir="$(pwd)"
# Check if mono is installed
command -v mono >/dev/null 2>&1 || { echo >&2 "${BOLDRED}ERROR${NC}: Jackett requires Mono but it's not installed. Aborting."; exit 1; }
monodir="$(dirname $(command -v mono))"
# Check that no other service called Jackett is already running
if [[ $(launchctl list | grep org.user.Jackett) ]]; then
echo "${BOLDRED}ERROR${NC}: Jackett already seems to be running as a service. Please stop it before running this script again."
exit 1
fi
# Write the plist to LaunchAgents
mkdir -p ~/Library/LaunchAgents/
cat >~/Library/LaunchAgents/org.user.Jackett.plist <<EOL
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/bin:/bin:/usr/sbin:/sbin:${monodir}</string>
</dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>org.user.Jackett</string>
<key>ProgramArguments</key>
<array>
<string>${monodir}/mono</string>
<string>--debug</string>
<string>JackettConsole.exe</string>
<string>--NoRestart</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>${jackettdir}</string>
</dict>
</plist>
EOL
# Run the agent
launchctl load ~/Library/LaunchAgents/org.user.Jackett.plist
# Check that it's running
if [[ $(launchctl list | grep org.user.Jackett) ]]; then
echo "${BOLDGREEN}Agent successfully installed and launched!${NC}"
else
cat << EOL
${BOLDRED}ERROR${NC}: Could not launch agent. The installation might have failed.
Please open an issue on https://github.com/Jackett/Jackett/issues and paste following information:
Mono directory: \`${monodir}\`
Jackett directory: \`${jackettdir}\`
EOL
fi

View File

@@ -70,7 +70,6 @@ else
cat << EOL
${BOLDRED}ERROR${NC}: Could not launch service. The installation might have failed.
Please open an issue on https://github.com/Jackett/Jackett/issues and paste following information:
Mono directory: \`${monodir}\`
Jackett directory: \`${jackettdir}\`
Jackett user: \`${jackettuser}\`

View File

@@ -94,6 +94,10 @@ function loadJackettSettings() {
$("#logoutBtn").show();
}
if (data.can_run_netcore != null && data.can_run_netcore === true) {
$("#can-upgrade-from-mono").show();
}
$.each(data.notices, function (index, value) {
console.log(value);
doNotify(value, "danger", "glyphicon glyphicon-alert", false);
@@ -222,12 +226,12 @@ function displayUnconfiguredIndexersList() {
doNotify("Configuration failed: " + data.error, "danger", "glyphicon glyphicon-alert");
}
}).fail(function (data) {
if(data.responseJSON.error !== undefined) {
doNotify("An error occured while configuring this indexer<br /><b>" + data.responseJSON.error + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + indexerId + "] " + data.responseJSON.error + " (Config)\" target=\"_blank\">Click here to open an issue on GitHub for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
} else {
doNotify("An error occured while configuring this indexer, is Jackett server running ?", "danger", "glyphicon glyphicon-alert");
}
if(data.responseJSON.error !== undefined) {
var indexEnd = 2048 - "https://github.com/Jackett/Jackett/issues/new?title=[".length - indexerId.length - "] ".length - " (Config)".length; // keep url <= 2k #5104
doNotify("An error occured while configuring this indexer<br /><b>" + data.responseJSON.error.substring(0, indexEnd) + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + indexerId + "] " + data.responseJSON.error.substring(0, indexEnd) + " (Config)\" target=\"_blank\">Click here to open an issue on GitHub for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
} else {
doNotify("An error occured while configuring this indexer, is Jackett server running ?", "danger", "glyphicon glyphicon-alert");
}
});
});
});
@@ -444,12 +448,13 @@ function testIndexer(id, notifyResult) {
doNotify("Test failed for " + id + ": \n" + data.error, "danger", "glyphicon glyphicon-alert");
}
}).fail(function (data) {
updateTestState(id, "error", data.error, indexers);
if(data.responseJSON.error !== undefined && notifyResult) {
doNotify("An error occured while testing this indexer<br /><b>" + data.responseJSON.error + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + id + "] " + data.responseJSON.error + " (Test)\" target=\"_blank\">Click here to open an issue on GitHub for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
} else {
doNotify("An error occured while testing indexers, please take a look at indexers with failed test for more informations.", "danger", "glyphicon glyphicon-alert");
}
updateTestState(id, "error", data.error, indexers);
if(data.responseJSON.error !== undefined && notifyResult) {
var indexEnd = 2048 - "https://github.com/Jackett/Jackett/issues/new?title=[".length - id.length - "] ".length - " (Test)".length; // keep url <= 2k #5104
doNotify("An error occured while testing this indexer<br /><b>" + data.responseJSON.error.substring(0, indexEnd) + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + id + "] " + data.responseJSON.error.substring(0, indexEnd) + " (Test)\" target=\"_blank\">Click here to open an issue on GitHub for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
} else {
doNotify("An error occured while testing indexers, please take a look at indexers with failed test for more informations.", "danger", "glyphicon glyphicon-alert");
}
});
}
@@ -651,11 +656,12 @@ function populateSetupForm(indexerId, name, config, caps, link, alternativesitel
doNotify("Configuration failed: " + data.error, "danger", "glyphicon glyphicon-alert");
}
}).fail(function (data) {
if(data.responseJSON.error !== undefined) {
doNotify("An error occured while updating this indexer<br /><b>" + data.responseJSON.error + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + indexerId + "] " + data.responseJSON.error + " (Config)\" target=\"_blank\">Click here to open an issue on GitHub for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
} else {
doNotify("An error occured while updating this indexer, request to Jackett server failed, is server running ?", "danger", "glyphicon glyphicon-alert");
}
if(data.responseJSON.error !== undefined) {
var indexEnd = 2048 - "https://github.com/Jackett/Jackett/issues/new?title=[".length - indexerId.length - "] ".length - " (Config)".length; // keep url <= 2k #5104
doNotify("An error occured while updating this indexer<br /><b>" + data.responseJSON.error.substring(0, indexEnd) + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + indexerId + "] " + data.responseJSON.error.substring(0, indexEnd) + " (Config)\" target=\"_blank\">Click here to open an issue on GitHub for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
} else {
doNotify("An error occured while updating this indexer, request to Jackett server failed, is server running ?", "danger", "glyphicon glyphicon-alert");
}
}).always(function () {
$goButton.html(originalBtnText);
$goButton.prop('disabled', false);

View File

@@ -51,6 +51,14 @@
<input id="api-key-input" class="form-control input-right" type="text" value="" placeholder="API Key" readonly="">
</div>
<hr />
<div id="can-upgrade-from-mono" hidden class="alert alert-info" role="alert">
<strong>Standalone version of Jackett is now available - Mono not required</strong> <br>
To upgrade to the standalone version of Jackett, <a href="https://github.com/Jackett/Jackett#install-on-linux-amdx64" target="_blank" class="alert-link">click here</a> for install instructions.
Upgrading is straight forward, simply install the standalone version and your indexers/configuration will carry over.
Benefits include: increased performance, improved stability and no dependency on Mono.
</div>
<div class="pull-right">
<button id="jackett-add-indexer" class="btn btn-success btn-sm">
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Add indexer
@@ -142,8 +150,7 @@
</div>
<div id="proxy-warning" hidden>
<span>
WARNING: The proxy option is unstable and potentially leaks requests. If no fix from the community is forthcoming
in the next few months, the proxy option will be removed from Jackett. Recommendation is to use a VPN.
WARNING: The proxy option potentially leaks requests. Recommendation is to use a VPN.
</span>
</div>
<div class="input-area">
@@ -671,6 +678,6 @@
</script>
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></script>
<script type="text/javascript" src="../custom.js?changed=20190401"></script>
<script type="text/javascript" src="../custom.js?changed=20190427"></script>
</body>
</html>

View File

@@ -175,7 +175,7 @@
sort: "id"
order: "desc"
rows:
selector: table > tbody > tr:has(a[href^="torrents-details.php?id="])
selector: div#fancy-list-group ul.list-group li.list-group-item
fields:
title:
selector: a[href^="torrents-details.php?id="]
@@ -185,14 +185,8 @@
download:
selector: a[href^="download.php?id="]
attribute: href
banner:
selector: a[href^="torrents-details.php?id="]
attribute: title
filters:
- name: regexp
args: "src=\"(.*?)\""
category:
selector: td:first-child img
selector: div.list-group-item-addon img
attribute: src
case:
# unfortunately the site does not have category numbers on the results page, just a .png which can apply to both movies and tv.
@@ -299,11 +293,11 @@
date:
text: now
size:
selector: td:nth-child(2) span.badge-info
selector: div.list-group-item-content p.m-0 span.badge-info
seeders:
selector: td:nth-child(4)
selector: div.list-group-item-controls a:nth-child(1)
leechers:
selector: td:nth-child(5)
selector: div.list-group-item-controls a:nth-child(2)
downloadvolumefactor:
case:
"span.badge-success:contains(\"FREE\")": "0"

View File

@@ -39,6 +39,9 @@
- name: regexp
args: "Ratio : (\\d+)"
download:
selector: a[href*="/download/"]
search:
paths:
- path: filterTorrents
@@ -66,7 +69,7 @@
title:
selector: a.view-torrent
download:
selector: a[href*="/download/"]
selector: a[href*="/download_check/"]
attribute: href
details:
selector: a.view-torrent

View File

@@ -18,21 +18,18 @@
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker in your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Select the <b>Headers</b> tab<li>Find 'cookie:' in the <b>Request Headers</b> section<li>Copy & paste the whole cookie string to here</ol>"
login:
method: cookie
path: login.php
method: form
form: form#loginform
inputs:
cookie: "{{ .Config.cookie }}"
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
keeplogged: 1
error:
- selector: form#loginform .warning
test:
path: index.php
path: torrents.php
search:
paths:

View File

@@ -0,0 +1,96 @@
---
site: beyond-hd
name: Beyond-HD
description: "Without BeyondHD, your HDTV is just a TV"
language: en-us
type: private
encoding: UTF-8
links:
- https://beyond-hd.me/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: TV, desc: "TV"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
login:
path: login
method: form
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: 1
error:
- selector: div.has-error
test:
path: torrents
search:
paths:
- path: torrents
inputs:
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
description: ""
uploader: ""
imdb: "{{ .Query.IMDBIDShort }}"
tmdb: ""
sorting: created_at
direction: desc
qty: 100
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/.*?\\.(\\d+)"
title:
selector: a.torrent-name
download:
selector: a[href*="/download/"]
attribute: href
details:
selector: a.torrent-name
attribute: href
banner:
optional: true
selector: div.torrent-poster img
attribute: src
filters:
- name: replace
args: ["https://via.placeholder.com/600x900", ""]
date:
selector: td:not(a[href$="/history"]) span.text-orange
filters:
- name: timeago
size:
selector: td span.text-blue
seeders:
selector: a[href$="/peers"] span.text-green
leechers:
selector: a[href$="/peers"] span.text-red
grabs:
selector: a[href$="/history"]
imdb:
optional: true
selector: a[href*="www.imdb.com/title/tt"]
attribute: href
downloadvolumefactor:
case:
"i[data-original-title=\"100% Free\"]": "0"
"i[data-original-title=\"25% Promo\"]": "0.75"
"i[data-original-title=\"50% Promo\"]": "0.5"
"i[data-original-title=\"75% Promo\"]": "0.25"
"*": "1"
uploadvolumefactor:
case:
"*": "1"
# UNIT3D

View File

@@ -140,21 +140,21 @@
size:
selector: td:nth-last-child(2)
date:
selector: td:nth-last-child(7)
selector: td:nth-last-child(8)
filters:
- name: append
args: " +01:00"
- name: dateparse
args: "02/01/2006 -07:00"
grabs:
selector: td:nth-last-child(4)
selector: td:nth-last-child(5)
filters:
- name: replace
args: ["---", "0"]
seeders:
selector: td:nth-last-child(6)
selector: td:nth-last-child(7)
leechers:
selector: td:nth-last-child(5)
selector: td:nth-last-child(6)
downloadvolumefactor:
case:
img[alt="Gold 100% Free"]: "0"

View File

@@ -27,9 +27,12 @@
password: "{{ .Config.password }}"
remember: 1
error:
- selector: div.has-error
- selector: script[nonce]:contains("Error")
message:
selector: script[nonce]:contains("Error")
test:
path: torrents
selector: a[href$="/logout"]
search:
paths:
@@ -71,13 +74,13 @@
- name: replace
args: ["https://via.placeholder.com/600x900", ""]
size:
selector: td:nth-child(5)
selector: td:nth-last-child(4)
seeders:
selector: td:nth-child(6)
selector: td:nth-last-child(3)
leechers:
selector: td:nth-child(7)
selector: td:nth-last-child(2)
grabs:
selector: td:nth-child(8)
selector: td:nth-last-child(1)
filters:
- name: regexp
args: ([\d\.]+)

View File

@@ -29,9 +29,10 @@
search:
paths:
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time{{else}}recent{{end}}"
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time&page=2{{else}}{{end}}"
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time&page=3{{else}}{{end}}"
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time&page=4{{else}}{{end}}"
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time&page=2{{else}}recent?page=2{{end}}"
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time&page=3{{else}}recent?page=3{{end}}"
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time&page=4{{else}}recent?page=4{{end}}"
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time&page=5{{else}}recent?page=5{{end}}"
rows:
selector: li[class$="item"]
fields:
@@ -52,6 +53,8 @@
selector: div[class$="info"] span:nth-of-type(2)
date:
selector: div[class$="info"] span:nth-of-type(3)
filters:
- name: timeago
grabs:
selector: div[class$="info"] span:nth-of-type(4)
seeders:

View File

@@ -7,15 +7,16 @@
encoding: UTF-8
followredirect: true
links:
- http://btkitty.pet/
- https://btkittys.co/
legacylinks:
- https://cnbtkitty.org/
- http://cnbtkitty.org/
- https://cnbtkitty.com/
- http://cnbtkitty.com/
- https://cnbtkitty.me/
- http://cnbtkitty.me/
- http://cnbtkitty.ws/
- https://cnbtkitty.org/
- http://cnbtkitty.org/
- https://cnbtkitty.com/
- http://cnbtkitty.com/
- https://cnbtkitty.me/
- http://cnbtkitty.me/
- http://cnbtkitty.ws/
- http://btkitty.pet/
caps:
categorymappings:

View File

@@ -18,7 +18,7 @@
- name: info_results
type: info
label: "Search results"
default: "For best results, increase the torrents number in your profile to 100.<br />Default is 15."
default: "Only the <b>xBtit_Default</b> style is supported with this indexer.<br />For best results, increase the torrents number in your profile to 100.<br />Default is 15."
caps:
categorymappings:

View File

@@ -6,7 +6,10 @@
type: private
encoding: UTF-8
links:
- https://teamctgame.xyz/
legacylinks:
- https://teamctgame.co/
- http://teamctgame.xyz/
caps:
categorymappings:

View File

@@ -28,7 +28,9 @@
password: "{{ .Config.password }}"
remember: 1
error:
- selector: div.has-error
- selector: script[nonce]:contains("Error")
message:
selector: script[nonce]:contains("Error")
test:
path: torrents
selector: a[href$="/logout"]
@@ -83,13 +85,13 @@
- name: replace
args: ["https://via.placeholder.com/600x900", ""]
size:
selector: td:nth-child(5)
selector: td:nth-last-child(4)
seeders:
selector: td:nth-child(6)
selector: td:nth-last-child(3)
leechers:
selector: td:nth-child(7)
selector: td:nth-last-child(2)
grabs:
selector: td:nth-child(8)
selector: td:nth-last-child(1)
filters:
- name: regexp
args: ([\d\.]+)

View File

@@ -1,142 +0,0 @@
---
site: cinefilhd
name: CiNEFiLHD
description: "CiNEFiLHD is a Private Torrent Tracker for MOVIES / TV / MUSIC"
language: en-us
type: private
encoding: UTF-8
links:
- http://www.cinefilhd.org/
caps:
categorymappings:
- {id: 37, cat: Movies/HD, desc: " Internal/HD-1080p"}
- {id: 17, cat: Movies/HD, desc: " Internal/HD-720p"}
- {id: 30, cat: TV/HD, desc: " Internal/HDTV"}
- {id: 15, cat: Movies/HD, desc: " Internal/mHD"}
- {id: 40, cat: Movies, desc: " Internal/Mp4"}
- {id: 26, cat: Movies, desc: " Internal/Remux"}
- {id: 45, cat: Movies/WEBDL, desc: " Internal/WEB-DL"}
- {id: 25, cat: Movies/3D, desc: " Movies/3D-Ou"}
- {id: 16, cat: Movies/3D, desc: " Movies/3D-SbS"}
- {id: 5, cat: Movies/BluRay, desc: " Movies/BluRay"}
- {id: 38, cat: Movies/HD, desc: " Movies/HD-1080p"}
- {id: 10, cat: Movies/HD, desc: " Movies/HD-720p"}
- {id: 29, cat: Movies/HD, desc: " Movies/mHD"}
- {id: 41, cat: Movies, desc: " Movies/Mp4"}
- {id: 39, cat: Movies, desc: " Movies/Remux"}
- {id: 44, cat: Movies/WEBDL, desc: " Movies/WEB-DL"}
- {id: 23, cat: Audio/Lossless, desc: " Lossless"}
- {id: 14, cat: Audio/MP3, desc: " MP3-Packs"}
- {id: 22, cat: Audio/MP3, desc: " Music-MP3"}
- {id: 43, cat: Audio/Video, desc: " Music/1080p"}
- {id: 42, cat: Audio/Video, desc: " Music/720p"}
- {id: 12, cat: TV/HD, desc: " HDTV-Packs"}
- {id: 21, cat: TV/HD, desc: " Movies/HDTV"}
modes:
search: [q, imdbid]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
submitme: "LOGIN"
returnto: /
error:
- selector: h2:contains("failed")
message:
selector: td.colhead2
test:
path: browse.php
selector: :has(a[href^="logout.php?hash_please="])
ratio:
path: browse.php
selector: div div font:contains("Ratio:")
filters:
- name: regexp
args: "Ratio:\\s(.*?)\\s"
search:
paths:
- path: browse.php
inputs:
$raw: "{{range .Categories}}cat{{.}}=1&{{end}}"
search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
# title descr genre all
searchin: "{{ if .Query.IMDBID }}descr{{else}}title{{end}}"
# 0=active 1=incl dead 2=only dead
incldead: 1
# 0=no 1=yes
only_free: 0
rows:
selector: table.mainouter table > tbody > tr:has(a[href^="details.php?id="]), table.mainouter table > tbody > tr[id^="kdescr"]
after: 1
fields:
title:
selector: a[href^="details.php?id="]
details:
selector: a[href^="details.php?id="]
attribute: href
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
download:
selector: a[href^="details.php?id="]
attribute: href
filters:
- name: replace
args: ["details.php?id=", "download.php?torrent="]
banner:
selector: a[href^="details.php?id="][onmouseover]
attribute: onmouseover
filters:
# onmouseover="Tip('<img class=\'pup\' src=\'https://image.tmdb.org/t/p/original/x96AdPlpl4MjUP2DeUhRJifhCMd.jpg\' width=
- name: regexp
args: src=\\'(.*?)\\'
imdb:
optional: true
selector: a[href*="www.imdb.com/title/tt"]
files:
selector: td:nth-child(4)
# 2 flavours of dates
date:
# Today<br /> 10:20 AM
# Yesterday<br /> 08:03 PM
optional: true
selector: td:nth-child(6):contains("day")
date:
# Feb 14 2019<br /> 10:20 AM
optional: true
selector: td:nth-child(6):not(:contains("day"))
filters:
- name: dateparse
args: "Jan 2 2006 03:04 pm"
size:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
filters:
- name: regexp
args: ([\d,]+)
seeders:
selector: td:nth-child(9)
leechers:
selector: td:nth-child(10)
downloadvolumefactor:
case:
tr.freeleech_color: "0"
tr.highlight: "0"
"*": "1"
uploadvolumefactor:
case:
"*": "1"
# U-232 v3

View File

@@ -38,19 +38,16 @@
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker in your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Select the <b>Headers</b> tab<li>Find 'cookie:' in the <b>Request Headers</b> section<li>Copy & paste the whole cookie string to here</ol>"
login:
method: cookie
path: login-page
method: form
form: form[action="/login?url=%2F"]
inputs:
cookie: "{{ .Config.cookie }}"
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
persistent_login: 1
error:
- selector: div.error
test:
path: torrents

View File

@@ -20,20 +20,15 @@
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker in your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Select the <b>Headers</b> tab<li>Find 'cookie:' in the <b>Request Headers</b> section<li>Copy & paste the whole cookie string to here</ol>"
login:
method: cookie
path: login
method: form
inputs:
cookie: "{{ .Config.cookie }}"
test:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: 1
error:
- selector: form[action$="/login"] span strong
test:
path: torrents
selector: a[href$="/logout"]

View File

@@ -56,17 +56,21 @@
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker in your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Select the <b>Headers</b> tab<li>Find 'cookie:' in the <b>Request Headers</b> section<li>Copy & paste the whole cookie string to here</ol>"
login:
path: index.php?page=login
method: post
method: cookie
inputs:
uid: "{{ .Config.username }}"
pwd: "{{ .Config.password }}"
error:
- selector: div#login-alert
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:

View File

@@ -34,7 +34,9 @@
password: "{{ .Config.password }}"
remember: 1
error:
- selector: div.has-error
- selector: script[nonce]:contains("Error")
message:
selector: script[nonce]:contains("Error")
test:
path: torrents
selector: a[href$="/logout"]
@@ -86,13 +88,13 @@
- name: replace
args: ["https://via.placeholder.com/600x900", ""]
size:
selector: td:nth-child(5)
selector: td:nth-last-child(4)
seeders:
selector: td:nth-child(6)
selector: td:nth-last-child(3)
leechers:
selector: td:nth-child(7)
selector: td:nth-last-child(2)
grabs:
selector: td:nth-child(8)
selector: td:nth-last-child(1)
filters:
- name: regexp
args: ([\d\.]+)

View File

@@ -0,0 +1,94 @@
---
site: efectodoppler
name: Efecto Doppler
description: "Efecto Doppler is a SPANISH Private Torrent Tracker for MUSIC"
language: es-es
type: private
encoding: UTF-8
links:
- https://efectodoppler.pw/
caps:
categories:
1: Audio
modes:
search: [q]
music-search: [q, album, artist, label, year]
login:
path: login.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
keeplogged: 1
error:
- selector: form > span.warning
test:
path: index.php
selector: a[href^="logout.php?auth="]
ratio:
path: index.php
selector: li#stats_ratio span.stat span
search:
paths:
- path: torrents.php
inputs:
artistname: "{{if .Query.Artist}}{{ .Query.Artist }}{{else}}{{end}}"
groupname: "{{if .Query.Artist}}{{else}}{{ .Keywords }}{{end}}"
order_by: time
order_way: desc
rows:
selector: tr.torrent
fields:
category:
text: "1"
artist:
text: "Varios artistas"
artist:
selector: a[href^="artist.php?id="]
optional: true
title:
selector: a[href^="torrents.php?id="]
filters:
- name: prepend
args: "{{.Result.artist}} - "
details:
selector: a[href^="torrents.php?id="]
attribute: href
banner:
selector: div.group_image img
attribute: src
download:
selector: a[href^="torrents.php?action=download&id="]
attribute: href
description:
selector: div.torrent_info
files:
selector: td:nth-child(3)
date:
selector: td:nth-child(4) span
attribute: title
filters:
- name: dateparse
args: "Jan 02 2006, 15:04"
size:
selector: td:nth-child(5)
grabs:
selector: td:nth-child(6)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
downloadvolumefactor:
case:
strong.torrent_label[title*="Neutral"]: "0"
strong.torrent_label[title*="Oro"]: "0"
"*": "1"
uploadvolumefactor:
case:
strong.torrent_label[title*="Neutral"]: "0"
"*": "1"

View File

@@ -6,9 +6,10 @@
type: public
encoding: UTF-8
links:
- https://www.elitetorrent.io/
- https://www.elitetorrent.one/
legacylinks:
- https://www.elitetorrent.biz/
- https://www.elitetorrent.io/
caps:
categories:

View File

@@ -1,160 +0,0 @@
---
site: freedomhd
name: Freedom-HD
description: "Freedom-HD (Freedom Paradise) is a ratioless FRENCH Private Torrent Tracker for HD MOVIES / GENERAL"
language: fr-fr
type: private
encoding: UTF-8
links:
- http://freedom-paradise.eu/
download:
before:
path: list_thanks.php
method: "get"
inputs:
id: "{{ .DownloadUri.Query.id }}"
to: "give"
torrent: "{{ .DownloadUri.Query.id }}"
caps:
categorymappings:
# ANIMES
- {id: 105, cat: TV/Anime, desc: "ANIMES 1080p-Bluray"}
- {id: 149, cat: TV/Anime, desc: "ANIMES 3D"}
- {id: 143, cat: TV/Anime, desc: "ANIMES 4K-2160p"}
- {id: 104, cat: TV/Anime, desc: "ANIMES 720p-Bluray"}
- {id: 90, cat: TV/Anime, desc: "ANIMES HDrip-720p"}
- {id: 93, cat: TV/Anime, desc: "ANIMES HDrip-1080p"}
- {id: 131, cat: TV/Anime, desc: "ANIMES SD"}
- {id: 120, cat: TV/Anime, desc: "ANIMES X265-1080p"}
- {id: 119, cat: TV/Anime, desc: "ANIMES X265-720p"}
# DOCUMENTAIRES
- {id: 107, cat: TV/Documentary, desc: "DOCS 1080p-Bluray"}
- {id: 152, cat: TV/Documentary, desc: "DOCS 2160p-Bluray"}
- {id: 106, cat: TV/Documentary, desc: "DOCS 720p-Bluray"}
- {id: 94, cat: TV/Documentary, desc: "DOCS HDrip-1080p"}
- {id: 91, cat: TV/Documentary, desc: "DOCS HDrip-720p"}
- {id: 142, cat: TV/Documentary, desc: "DOCS HDTV"}
- {id: 141, cat: TV/Documentary, desc: "DOCS SD"}
# EBOOK
- {id: 124, cat: Books, desc: "Livres et Magazines"}
# FILMS
- {id: 97, cat: Movies/HD, desc: "FILMS Bluray-1080p"}
- {id: 103, cat: Movies/3D, desc: "FILMS 3D"}
- {id: 111, cat: Movies/UHD, desc: "FILMS 4K"}
- {id: 96, cat: Movies/HD, desc: "FILMS Bluray-720p"}
- {id: 127, cat: Movies/HD, desc: "FILMS BDrip"}
- {id: 128, cat: Movies/HD, desc: "FILMS BRrip"}
- {id: 140, cat: Movies/HD, desc: "FILMS BSD-Team"}
- {id: 126, cat: Movies/SD, desc: "FILMS DVDrip"}
- {id: 136, cat: Movies/BluRay, desc: "FILMS Full-Bluray"}
- {id: 135, cat: Movies/SD, desc: "FILMS Team Freedom-HD"}
- {id: 137, cat: Movies/SD, desc: "FILMS Team ticadow"}
- {id: 89, cat: Movies/HD, desc: "FILMS HDrip-720p"}
- {id: 92, cat: Movies/HD, desc: "FILMS HDrip-1080p"}
- {id: 112, cat: Movies/SD, desc: "FILMS Team-Hush"}
- {id: 129, cat: Movies/HD, desc: "FILMS Team-Romkent"}
- {id: 125, cat: Movies/Other, desc: "FILMS WEBrip"}
- {id: 110, cat: Movies/HD, desc: "FILMS X265-1080p"}
- {id: 109, cat: Movies/HD, desc: "FILMS X265-720p"}
# GAMES
- {id: 134, cat: PC/Games, desc: "jeu PC"}
# MUSIQUES
- {id: 114, cat: Audio/Lossless, desc: "MUSIQUES Flac"}
- {id: 113, cat: Audio/MP3, desc: "MUSIQUES MP3"}
- {id: 132, cat: Audio, desc: "MUSIQUES HQ"}
- {id: 130, cat: Audio/Video, desc: "MUSIQUES video clip"}
# SERIE
- {id: 121, cat: TV/SD, desc: "SERIE SD"}
- {id: 102, cat: TV/HD, desc: "SERIE 1080p-Bluray"}
- {id: 101, cat: TV/HD, desc: "SERIE 720p-Bluray"}
- {id: 100, cat: TV/HD, desc: "SERIE HDrip-1080p"}
- {id: 99, cat: TV/HD, desc: "SERIE HDrip-720p"}
- {id: 151, cat: TV/UHD, desc: "SERIE HDrip-2160p"}
# SPECTACLES
- {id: 138, cat: TV, desc: "SPECTACLES Bluray-1080p"}
- {id: 139, cat: TV, desc: "SPECTACLES Bluray-720p"}
- {id: 133, cat: TV, desc: "SPECTACLES DVDrip"}
- {id: 118, cat: TV, desc: "SPECTACLES HDrip-1080p"}
- {id: 117, cat: TV, desc: "SPECTACLES HDrip-720p"}
# SPORT
- {id: 146, cat: TV/Sport, desc: "SPORT HDTV-1080p"}
- {id: 147, cat: TV/Sport, desc: "SPORT HDTV-720p"}
- {id: 148, cat: TV/Sport, desc: "SPORT SD"}
- {id: 144, cat: TV/Sport, desc: "SPORT WEB-DL-1080p"}
- {id: 145, cat: TV/Sport, desc: "SPORT WEB-DL-720p"}
modes:
search: [q]
tv-search: [q, season, ep]
login:
path: account-login.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: "yes"
returnto: "/"
error:
- selector: div.myFrame:has(font.error)
test:
path: torrents-search.php
selector: a.logout
search:
paths:
- path: torrents-search.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Query.Keywords }}"
incldead: "1"
rows:
selector: table.ttable_headinner > tbody > tr[class^="t-row"]
filters:
- name: andmatch
after: 1
fields:
download:
selector: a[href^="torrents-details.php?id="]
attribute: href
filters:
- name: replace
args: ["torrents-details.php", "download.php"]
title:
selector: a[href^="torrents-details.php?id="]
attribute: title
category:
selector: a[href^="torrents.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
details:
selector: a[href^="torrents-details.php?id="]
attribute: href
description:
selector: ul
banner:
selector: img.rounded-img
attribute: src
size:
selector: td:nth-child(3)
grabs:
selector: td:nth-child(6)
seeders:
selector: td:nth-child(4)
leechers:
selector: td:nth-child(5)
date:
text: now
downloadvolumefactor:
case:
img[alt="freeleech"]: "0"
"*": "1"
uploadvolumefactor:
case:
"*": "1"

View File

@@ -23,6 +23,7 @@
- {id: 11, cat: PC/Phone-Android, desc: "Android ROMs"}
- {id: 12, cat: TV/Documentary, desc: "Documentaries"}
- {id: 13, cat: TV, desc: "Shows"}
- {id: 14, cat: Audio/Video, desc: "Music clips"}
modes:
search: [q]
@@ -36,7 +37,9 @@
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: form[action*="/login"] .text-red
- selector: script[nonce]:contains("Error")
message:
selector: script[nonce]:contains("Error")
test:
path: torrents
@@ -46,6 +49,7 @@
inputs:
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
description: ""
uploader: ""
imdb: "{{ .Query.IMDBIDShort }}"
tvdb: ""
@@ -71,20 +75,27 @@
details:
selector: a.view-torrent
attribute: href
banner:
optional: true
selector: div.torrent-poster img
attribute: src
filters:
- name: replace
args: ["https://via.placeholder.com/600x900", ""]
size:
selector: td:nth-child(5)
selector: td:nth-last-child(4)
seeders:
selector: td:nth-child(7)
selector: td:nth-last-child(3)
leechers:
selector: td:nth-child(8)
selector: td:nth-last-child(2)
grabs:
selector: td:nth-child(6)
selector: td:nth-last-child(1)
filters:
- name: regexp
args: ([\d\.]+)
imdb:
optional: true
selector: a[href^="https://www.imdb.com/title/"]
selector: a[href*="www.imdb.com/title/tt"]
attribute: href
date:
selector: time
@@ -114,13 +125,17 @@
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
downloadvolumefactor:
case:
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech
"i[data-original-title=\"Personal Freeleech\"]": "0" # 24 Hour FreeLeech From BON Store
"i[data-original-title=\"Special Freeleech\"]": "0" # Special FreeLeech For Certain User Groups
"i[data-original-title=\"Freeleech Token\"]": "0" # Freeleech From Token
"i[data-original-title=\"Global FreeLeech\"]": "0" # Global Freeleech
"i[data-original-title=\"Freeleech\"]": "0" # Freeleech
"i[data-original-title=\"Featured\"]": "0" # Featured Torrent
"*": "1"
uploadvolumefactor:
case:
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
"i[data-original-title=\"Double Upload\"]": "2" # Single Torrent Double Upload
"i[data-original-title=\"Global Double Upload\"]": "2" # Global Double Upload
"i[data-original-title=\"Featured\"]": "2" # Featured Torrent
"*": "1"
# UNIT3D
# UNIT3D 1.9.2

View File

@@ -7,8 +7,6 @@
encoding: UTF-8
links:
- https://www.frozen-layer.com/
certificates:
- 001bc21dd13b54b05106b510a327a7182ec443a4
settings:
- name: category

View File

@@ -0,0 +1,208 @@
---
site: generationfree
name: Generation-Free
description: "Generation-Free is a FRENCH Private Torrent Tracker for MOVIES / TV / GENERAL"
language: fr-fr
type: private
encoding: UTF-8
links:
- https://generation-free.biz/
caps:
categorymappings:
- {id: 10, cat: TV/HD, desc: "Animation: HD720P"}
- {id: 11, cat: TV/HD, desc: "Animation: HD1080P"}
- {id: 56, cat: TV/SD, desc: "Animation: DVDRip"}
- {id: 13, cat: TV/SD, desc: "Animation: DVD"}
- {id: 105, cat: TV/HD, desc: "Animation: Bluray"}
- {id: 106, cat: TV/HD, desc: "Animation: HDTV"}
- {id: 108, cat: TV/WEB-DL, desc: "Animation: WEBDL"}
- {id: 109, cat: TV/WEB-DL, desc: "Animation: WEBRIP"}
- {id: 18, cat: PC/0day, desc: "Applications: PC"}
- {id: 16, cat: PC/Games, desc: "Applications: Jeux"}
- {id: 19, cat: PC/Phone-Android, desc: "Applications: Android"}
- {id: 38, cat: PC/Phone-Other, desc: "Applications: Mobile Phone"}
- {id: 17, cat: PC/Mac, desc: "Applications: Mac"}
- {id: 117, cat: PC, desc: "Applications: Appli-autre"}
- {id: 40, cat: PC, desc: "Applications: Linux"}
- {id: 67, cat: TV/OTHER, desc: "Autres: Emission TV"}
- {id: 118, cat: TV/Documentary, desc: "Documentaires: Sport"}
- {id: 15, cat: TV/Documentary, desc: "Documentaires: HD"}
- {id: 14, cat: TV/Documentary, desc: "Documentaires: DivX"}
- {id: 76, cat: TV/Documentary, desc: "Documentaires: TVRip/HDTV"}
- {id: 62, cat: Audio/Audiobook, desc: "E-Books: E-Books Audio"}
- {id: 51, cat: Books/Ebook, desc: "E-Books: BD"}
- {id: 50, cat: Books/Ebook, desc: "E-Books: Manuel Français"}
- {id: 49, cat: Books/Ebook, desc: "E-Books: Manuel Anglais"}
- {id: 36, cat: Books/Ebook, desc: "E-Books: Livres Français"}
- {id: 53, cat: Books/Ebook, desc: "E-Books: Livre Anglais"}
- {id: 52, cat: Books/Ebook, desc: "E-Books: Revue - Journaux"}
- {id: 3, cat: Movies/DVD, desc: "Films: DVDRIP"}
- {id: 4, cat: Movies/DVD, desc: "Films: DVD5"}
- {id: 66, cat: Movies, desc: "Films: VOSTFR"}
- {id: 88, cat: Movies/BluRay, desc: "Films: Full BD/BR"}
- {id: 89, cat: Movies/BluRay, desc: "Films: BD/BR Rip"}
- {id: 5, cat: Movies/DVD, desc: "Films: DVD9"}
- {id: 94, cat: Movies/DVD, desc: "Films: DVDscreen"}
- {id: 91, cat: Movies, desc: "Films: RemuX"}
- {id: 104, cat: Movies/BluRay, desc: "Films: Film-BDRip"}
- {id: 110, cat: Movies/WEBDL, desc: "Films: WEBRip"}
- {id: 111, cat: Movies/WEBDL, desc: "Films: WEBRip-720p-P"}
- {id: 95, cat: Movies/BluRay, desc: "Films: bluray"}
- {id: 102, cat: Movies/WEBDL, desc: "Films: WEB-DL 720P"}
- {id: 101, cat: Movies/WEBDL, desc: "Films: WEB-DL 1080P"}
- {id: 92, cat: Movies/UHD, desc: "Films: 4K"}
- {id: 100, cat: Movies/UHD, desc: "Films: 4KLight"}
- {id: 71, cat: Movies/WEBDL, desc: "Films: WEB-DL"}
- {id: 69, cat: Movies/3D, desc: "Films: Film 3D"}
- {id: 65, cat: TV, desc: "Films: VO"}
- {id: 72, cat: TV/HD, desc: "Films: TVRip/HDTV"}
- {id: 96, cat: Movies/HD, desc: "Films: HDlight"}
- {id: 70, cat: Movies/HD, desc: "Films: MHD X265"}
- {id: 103, cat: Movies/HD, desc: "Films: Film-HDRIP"}
- {id: 57, cat: TV, desc: "Films: TS/CAM"}
- {id: 59, cat: TV, desc: "Films: Spectacle"}
- {id: 87, cat: XXX, desc: "Films: XXX"}
- {id: 55, cat: Movies/HD, desc: "Films: MHD 720P"}
- {id: 54, cat: Movies/HD, desc: "Films: MHD 1080P"}
- {id: 1, cat: Movies/HD, desc: "Films: HD720P"}
- {id: 2, cat: Movies/HD, desc: "Films: HD1080P"}
- {id: 90, cat: Movies/HD, desc: "Films: HD X265"}
- {id: 112, cat: Movies/WEBDL, desc: "Films: WEBrip-1080-P"}
- {id: 77, cat: PC/Phone-Other, desc: "GPS: Cartes"}
- {id: 78, cat: PC/Phone-Other, desc: "GPS: Radars"}
- {id: 125, cat: TV/Anime, desc: "Mangas: DVDRip"}
- {id: 124, cat: TV/Anime, desc: "Mangas: HD720P"}
- {id: 97, cat: Audio, desc: "Musique: Podcast"}
- {id: 98, cat: Audio, desc: "Musique: karaoké"}
- {id: 75, cat: Audio, desc: "Musique: Concert TVRip"}
- {id: 24, cat: Audio/Lossless, desc: "Musique: Single Flac"}
- {id: 25, cat: Audio/MP3, desc: "Musique: Single MP3"}
- {id: 22, cat: Audio/MP3, desc: "Musique: Album MP3"}
- {id: 115, cat: Audio/MP3, desc: "Musique: Coffret mp3"}
- {id: 23, cat: Audio/Lossless, desc: "Musique: Album Flac"}
- {id: 116, cat: Audio/Lossless, desc: "Musique: Coffret flac"}
- {id: 64, cat: Audio, desc: "Musique: Mégamix Maison"}
- {id: 58, cat: Audio, desc: "Musique: Concert"}
- {id: 6, cat: TV, desc: "Serie TV: Saison FR"}
- {id: 7, cat: TV, desc: "Serie TV: Episode FR"}
- {id: 61, cat: TV, desc: "Serie TV: Episode VOSTFR"}
- {id: 93, cat: TV, desc: "Serie TV: Saison VOSTFR"}
- {id: 113, cat: TV, desc: "Serie TV: Episode QC"}
- {id: 114, cat: TV, desc: "Serie TV: Saison QC"}
- {id: 73, cat: TV/WEB-DL, desc: "Serie TV: WEB-DL"}
- {id: 74, cat: TV/HD, desc: "Serie TV: TVRip/HDTV"}
- {id: 12, cat: TV, desc: "Serie TV: Animation"}
- {id: 63, cat: TV, desc: "Serie TV: Episode VO"}
- {id: 120, cat: TV/HD, desc: "Serie TV: Episode Bluray 1080p"}
- {id: 121, cat: TV/HD, desc: "Serie TV: Saison Bluray 720p"}
- {id: 122, cat: TV/HD, desc: "Serie TV: Saison Bluray 1080p"}
- {id: 119, cat: TV/HD, desc: "Serie TV: Episode Bluray 720p"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: multilang
type: checkbox
label: Replace MULTI by another language in release name
default: false
- name: multilanguage
type: select
label: Replace MULTI by this language
default: VOSTFR
options:
FRENCH : "FRENCH"
"MULTI FRENCH": "MULTI FRENCH"
ENGLISH: "ENGLISH"
"MULTI ENGLISH": "MULTI ENGLISH"
VOSTFR: "VOSTFR"
"MULTI VOSTFR": "MULTI VOSTFR"
login:
path: account-login.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: td.tboxhead
test:
path: torrents-search.php
selector: a[href="account-logout.php"]
download:
before:
path: "list_thanks.php"
method: "get"
inputs:
id: "{{ .DownloadUri.Query.id }}"
to: "give"
torrent: "{{ .DownloadUri.Query.id }}"
selector: a[href^="download.php?id="]
search:
paths:
# 40 results per page
- path: torrents-search.php
- path: torrents-search.php
inputs:
page: 1
inputs:
# multi cats unsupported, defaulting to all
cat: 0
search: "{{ .Keywords }}"
incldead: 1
freeleech: 0
inclexternal: 0
lang: 0
sort: id
order: desc
rows:
selector: table.ttable_headinner > tbody > tr.t-row
fields:
title_original:
selector: a[href^="torrents-details.php?id="] b
title_multilang:
text: "{{ .Result.title_original }}"
filters:
- name: re_replace
args: ["\\s[Mm][Uu][Ll][Tt][Ii]\\s", " {{ .Config.multilanguage }} "]
title:
text: "{{if .Config.multilang }}{{ .Result.title_multilang }}{{else}}{{ .Result.title_original }}{{end}}"
category:
selector: a[href^="torrents.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
details:
selector: a[href^="torrents-details.php?id="]
attribute: href
download:
selector: a[href^="torrents-details.php?id="]
attribute: href
size:
selector: td:nth-last-child(4)
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
date:
text: now
downloadvolumefactor:
case:
img[src="images/fl.gif"]: "0"
"*": "1"
uploadvolumefactor:
case:
"*": "1"

View File

@@ -7,7 +7,7 @@
encoding: UTF-8
followredirect: true
links:
- https://www.gktorrent.tv/
- https://www.gktorrent.biz/
legacylinks:
- https://www.gktorrent.com/
- http://www.gktorrent.com/
@@ -24,6 +24,7 @@
- https://www.gktorrent.me/
- https://www.rantop.org/
- https://www.gktorrent.cx/
- https://www.gktorrent.tv/
- https://www.gktorrent.net/
caps:

View File

@@ -63,22 +63,23 @@
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker in your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Select the <b>Headers</b> tab<li>Find 'cookie:' in the <b>Request Headers</b> section<li>Copy & paste the whole cookie string to here</ol>"
login:
path: ajax/login.php
method: post
method: cookie
headers:
user-agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36"
form: form
inputs:
loginbox_membername: "{{ .Config.username }}"
loginbox_password: "{{ .Config.password }}"
action: "login"
loginbox_remember: "true"
error:
- selector: div.error
cookie: "{{ .Config.cookie }}"
test:
path: ?p=home&pid=1
selector: div#member_info_bar
search:
path: /

View File

@@ -0,0 +1,345 @@
---
site: hamsterstudio
name: HamsterStudio
description: "HamsterStudio is a RUSSIAN Semi-Private Torrent Tracker for TV"
language: ru-ru
type: private
encoding: windows-1251
links:
- http://hamsterstudio.org/
caps:
categorymappings:
- {id: 23, cat: Movies, desc: "Кино"}
- {id: 18, cat: TV/WEB-DL, desc: "Веб-сериалы"}
- {id: 19, cat: TV/OTHER, desc: "Разные сериалы"}
- {id: 10, cat: Audio, desc: "Музыка"}
- {id: 29, cat: TV, desc: "Лечение (Пациенты)"}
- {id: 37, cat: TV, desc: "Сериалы с ТВ"}
- {id: 21, cat: TV, desc: "Полуночный зверь"}
- {id: 11, cat: TV, desc: "Милые обманщицы"}
- {id: 27, cat: TV, desc: "Девочки"}
- {id: 20, cat: TV, desc: "Умерь Свой Пыл"}
- {id: 24, cat: TV, desc: "Ийон Тихий, космический пилот"}
- {id: 25, cat: TV, desc: "Красный карлик"}
- {id: 22, cat: TV, desc: "Тримей"}
- {id: 26, cat: TV, desc: "На дне"}
- {id: 38, cat: TV, desc: "Галактика: Кровь и Хром"}
- {id: 39, cat: TV, desc: "Супертюрьма"}
- {id: 40, cat: TV, desc: "Семерка Блэйка"}
- {id: 42, cat: TV, desc: "Западное крыло"}
- {id: 43, cat: TV, desc: "Убойный Отдел: Уличные Будни"}
- {id: 47, cat: TV, desc: "Это Англия"}
- {id: 48, cat: TV, desc: "Бенидорм"}
- {id: 49, cat: TV, desc: "Сайнфелд"}
- {id: 51, cat: TV, desc: "Вице"}
- {id: 52, cat: TV, desc: "За кадром о кадре"}
- {id: 54, cat: TV, desc: "Хемлок Гроув"}
- {id: 56, cat: TV, desc: "Семейное древо"}
- {id: 57, cat: TV, desc: "Мэрон"}
- {id: 59, cat: TV, desc: "Спецнах"}
- {id: 60, cat: TV, desc: "Работа не волк"}
- {id: 64, cat: TV, desc: "Дивизион "}
- {id: 66, cat: TV, desc: "Кошмары Фредди"}
- {id: 67, cat: TV, desc: "Все дома"}
- {id: 69, cat: TV, desc: "Бездельницы"}
- {id: 70, cat: TV, desc: "Реальные люди"}
- {id: 71, cat: TV, desc: "Трофеи Вавилона"}
- {id: 72, cat: TV, desc: "Постфактум"}
- {id: 73, cat: TV, desc: "Детектив Босх"}
- {id: 74, cat: TV, desc: "В девятом номере"}
- {id: 75, cat: TV, desc: "Верь"}
- {id: 76, cat: TV, desc: "Семь дней"}
- {id: 77, cat: TV, desc: "Красная дорога"}
- {id: 78, cat: TV, desc: "Борджиа"}
- {id: 79, cat: TV, desc: "Вдовец"}
- {id: 80, cat: TV, desc: "Безумцы"}
- {id: 81, cat: TV, desc: "Убийство первой степени"}
- {id: 82, cat: TV, desc: "Мистер Слоун"}
- {id: 83, cat: TV, desc: "Путеводитель по семейной жизни"}
- {id: 84, cat: TV, desc: "Агенты"}
- {id: 85, cat: TV, desc: "Блюз Хилл-Стрит"}
- {id: 86, cat: TV, desc: "В погоне за тенями"}
- {id: 87, cat: TV, desc: "Константин"}
- {id: 88, cat: TV, desc: "Готэм"}
- {id: 89, cat: TV, desc: "Клей"}
- {id: 90, cat: TV, desc: "Скорострел"}
- {id: 91, cat: TV, desc: "Водитель"}
- {id: 92, cat: TV, desc: "Очевидное"}
- {id: 93, cat: TV, desc: "Красные дубы"}
- {id: 94, cat: TV, desc: "Жизнь начинается в 18"}
- {id: 95, cat: TV, desc: "Безрассудный"}
- {id: 96, cat: TV, desc: "Пропавший без вести"}
- {id: 97, cat: TV, desc: "Взгляд в прошлое"}
- {id: 98, cat: TV, desc: "Королевская семья"}
- {id: 99, cat: TV, desc: "Одиночки с причудами"}
- {id: 101, cat: TV, desc: "CSI: Киберпространство"}
- {id: 102, cat: TV, desc: "Сорвиголова"}
- {id: 103, cat: TV, desc: "Осадок"}
- {id: 104, cat: TV, desc: "Призраки Энфилда"}
- {id: 105, cat: TV, desc: "Ошибки прошлого"}
- {id: 106, cat: TV, desc: "Восьмое чувство"}
- {id: 107, cat: TV, desc: "Вызов"}
- {id: 108, cat: TV, desc: "Настоящий детектив"}
- {id: 109, cat: TV, desc: "Звездный охотник"}
- {id: 110, cat: TV, desc: "Это не моя жизнь"}
- {id: 111, cat: TV, desc: "Человек в высоком замке"}
- {id: 112, cat: TV, desc: "Бойтесь Ходячих мертвецов"}
- {id: 113, cat: TV, desc: "Стражи галактики"}
- {id: 114, cat: TV, desc: "Герои: Возрождение"}
- {id: 115, cat: TV, desc: "Заключенный"}
- {id: 116, cat: TV, desc: "Родина"}
- {id: 117, cat: TV, desc: "Фарго"}
- {id: 118, cat: TV, desc: "Американская история ужасов"}
- {id: 119, cat: TV, desc: "Оставленные"}
- {id: 121, cat: TV, desc: "Любовники"}
- {id: 122, cat: TV, desc: "Агенты Щит"}
- {id: 123, cat: TV, desc: "Эш против зловещих мертвецов"}
- {id: 124, cat: TV, desc: "Ходячие мертвецы"}
- {id: 125, cat: TV, desc: "Демоны Да Винчи"}
- {id: 120, cat: TV, desc: "Сонная лощина"}
- {id: 126, cat: TV, desc: "Джекил и Хайд"}
- {id: 127, cat: TV, desc: "Джессика Джонс"}
- {id: 128, cat: TV, desc: "Лондонский шпион"}
- {id: 129, cat: TV, desc: "Мост"}
- {id: 130, cat: TV, desc: "Хроники Франкенштейна"}
- {id: 131, cat: TV, desc: "Пространство"}
- {id: 132, cat: TV, desc: "Конец детства"}
- {id: 133, cat: TV, desc: "Путь к выздоровлению"}
- {id: 134, cat: TV, desc: "Старость не радость"}
- {id: 135, cat: TV, desc: "Пьяная история"}
- {id: 136, cat: TV, desc: "Хроники Шаннары"}
- {id: 137, cat: TV, desc: "Сумеречные охотники"}
- {id: 138, cat: TV, desc: "Клоун (Баскетс)"}
- {id: 139, cat: TV, desc: "Черные паруса"}
- {id: 140, cat: TV, desc: "Секретные материалы"}
- {id: 141, cat: TV, desc: "Изгои"}
- {id: 143, cat: TV, desc: "Куку"}
- {id: 144, cat: TV, desc: "Долл и Эм"}
- {id: 145, cat: TV, desc: "Банши "}
- {id: 146, cat: TV, desc: " Шоу Джимма Гаффигана"}
- {id: 147, cat: TV, desc: "Все кувырком"}
- {id: 148, cat: TV, desc: "Сожители"}
- {id: 149, cat: TV, desc: "Внутри Эми Шумер"}
- {id: 150, cat: TV, desc: "С чистого листа"}
- {id: 151, cat: TV, desc: "Хофф в записи"}
- {id: 152, cat: TV, desc: "Жевательная резинка"}
- {id: 153, cat: TV, desc: "Охотники"}
- {id: 154, cat: TV, desc: "Даркнет"}
- {id: 155, cat: TV, desc: "Бонг для путешествий во времен"}
- {id: 156, cat: TV, desc: "Бульварные ужасы"}
- {id: 157, cat: TV, desc: "Флауэрсы"}
- {id: 158, cat: TV, desc: "Грейс и Фрэнки "}
- {id: 159, cat: TV, desc: "Проповедник"}
- {id: 142, cat: TV, desc: "Принц из Беверли Хиллз"}
- {id: 160, cat: TV, desc: "Сосны"}
- {id: 161, cat: TV, desc: "Истории Нила Геймана"}
- {id: 162, cat: TV, desc: "Подчинение"}
- {id: 163, cat: TV, desc: "Обвиняемая"}
- {id: 164, cat: TV, desc: "Безмозглые"}
- {id: 165, cat: TV, desc: "Гастролеры"}
- {id: 166, cat: TV, desc: "Завучи"}
- {id: 167, cat: TV, desc: "Отжиг"}
- {id: 169, cat: TV, desc: "Человек-клещ"}
- {id: 168, cat: TV, desc: "Трагедия в Кеттеринге"}
- {id: 170, cat: TV, desc: "Я люблю Дика"}
- {id: 171, cat: TV, desc: "Жан-Клод Ван Джонсон "}
- {id: 173, cat: TV, desc: "Небезопасно для работы"}
- {id: 174, cat: TV, desc: "Граница "}
- {id: 175, cat: TV, desc: "Дрянь"}
- {id: 176, cat: TV, desc: "Сложные люди"}
- {id: 177, cat: TV, desc: "Девочки Гилмор"}
- {id: 178, cat: TV, desc: "Возвращение в Миссисипи "}
- {id: 179, cat: TV, desc: "В хлам"}
- {id: 180, cat: TV, desc: "Бунтарь"}
- {id: 182, cat: TV, desc: "Слепое пятно"}
- {id: 183, cat: TV, desc: "Королевы крика"}
- {id: 184, cat: TV, desc: "Черный список"}
- {id: 185, cat: TV, desc: "Однажды в сказке"}
- {id: 186, cat: TV, desc: "Звездные войны: повстанцы"}
- {id: 187, cat: TV, desc: "Скорпион"}
- {id: 188, cat: TV, desc: "Безбашенные"}
- {id: 189, cat: TV, desc: "Черное зеркало"}
- {id: 190, cat: TV, desc: "Стэн против сил зла"}
- {id: 191, cat: TV, desc: "Удалённые"}
- {id: 192, cat: TV, desc: "Сирены"}
- {id: 193, cat: TV, desc: "По ту сторону"}
- {id: 194, cat: TV, desc: "ОА"}
- {id: 195, cat: TV, desc: "Табу"}
- {id: 196, cat: TV, desc: "Колония"}
- {id: 197, cat: TV, desc: "Волшебники"}
- {id: 198, cat: TV, desc: "24 часа"}
- {id: 199, cat: TV, desc: "Миллиарды"}
- {id: 200, cat: TV, desc: "Большая маленькая ложь"}
- {id: 201, cat: TV, desc: "Легион"}
- {id: 202, cat: TV, desc: "Сан рекордз"}
- {id: 203, cat: TV, desc: "Заложница"}
- {id: 204, cat: TV, desc: "Убийство на пляже"}
- {id: 205, cat: TV, desc: "Подземка"}
- {id: 206, cat: TV, desc: "Любовь"}
- {id: 207, cat: TV, desc: "Преступление по-американски "}
- {id: 208, cat: TV, desc: "Большой куш"}
- {id: 209, cat: TV, desc: "Побег"}
- {id: 210, cat: TV, desc: "Я Зомби"}
- {id: 211, cat: TV, desc: "Лучше звоните Солу"}
- {id: 212, cat: TV, desc: "Арчер"}
- {id: 213, cat: TV, desc: "Дорогие белые"}
- {id: 214, cat: TV, desc: "Американские боги"}
- {id: 215, cat: TV, desc: "Брокмайр"}
- {id: 216, cat: TV, desc: "Энджи Трайбека"}
- {id: 217, cat: TV, desc: "Уэнтуорт "}
- {id: 218, cat: TV, desc: "Звери."}
- {id: 219, cat: TV, desc: "Упадок и разрушение"}
- {id: 220, cat: TV, desc: "Просто парочка"}
- {id: 221, cat: TV, desc: "Твин Пикс"}
- {id: 222, cat: TV, desc: "Умираю со смеху"}
- {id: 223, cat: TV, desc: "По волчьим законам"}
- {id: 224, cat: TV, desc: "Карточный домик"}
- {id: 225, cat: TV, desc: "Приключения Тедди Ракспина"}
- {id: 226, cat: TV, desc: "Темная материя"}
- {id: 227, cat: TV, desc: "Вайнона Эрп"}
- {id: 228, cat: TV, desc: "Киллджойс"}
- {id: 229, cat: TV, desc: "Кровавая гонка"}
- {id: 230, cat: TV, desc: "Сшиватели"}
- {id: 231, cat: TV, desc: "Ночная смена"}
- {id: 232, cat: TV, desc: "Мгла"}
- {id: 233, cat: TV, desc: "Зверинец"}
- {id: 234, cat: TV, desc: "Снегопад"}
- {id: 235, cat: TV, desc: "Спасение"}
- {id: 236, cat: TV, desc: "По болезни"}
- {id: 237, cat: TV, desc: "Кастлвания"}
- {id: 238, cat: TV, desc: "Штамм"}
- {id: 239, cat: TV, desc: "Игра престолов"}
- {id: 240, cat: TV, desc: "Мстители"}
- {id: 241, cat: TV, desc: "Комната 104"}
- {id: 242, cat: TV, desc: "Миднайт, Техас"}
- {id: 243, cat: TV, desc: "Человек-паук"}
- {id: 244, cat: TV, desc: "Рэй Донован"}
- {id: 245, cat: TV, desc: "Мистер Мерседес"}
- {id: 246, cat: TV, desc: "Эпизоды"}
- {id: 247, cat: TV, desc: "Охота на Унабомбера "}
- {id: 248, cat: TV, desc: "Защитники"}
- {id: 249, cat: TV, desc: "Раскосяченные"}
- {id: 250, cat: TV, desc: "Двойка"}
- {id: 251, cat: TV, desc: "Нарко"}
- {id: 252, cat: TV, desc: "Ты — воплощение порока"}
- {id: 253, cat: TV, desc: "Конь БоДжек"}
- {id: 254, cat: TV, desc: "Орвилл"}
- {id: 256, cat: TV, desc: "Южный парк"}
- {id: 257, cat: TV, desc: "Звездный путь: Дискавери"}
- {id: 258, cat: TV, desc: "Мик"}
- {id: 259, cat: TV, desc: "Морская полиция"}
- {id: 260, cat: TV, desc: "Смертельное оружие"}
- {id: 261, cat: TV, desc: "Сверхлюди"}
- {id: 262, cat: TV, desc: "Одарённые"}
- {id: 263, cat: TV, desc: "Полиция Чикаго"}
- {id: 264, cat: TV, desc: "Это Мы"}
- {id: 265, cat: TV, desc: "Империя"}
- {id: 266, cat: TV, desc: "Мыслить как преступник"}
- {id: 267, cat: TV, desc: "Экзорцист"}
- {id: 268, cat: TV, desc: "Люцифер"}
- {id: 269, cat: TV, desc: "Нация Z"}
- {id: 270, cat: TV, desc: "Сверхестественое"}
- {id: 273, cat: TV, desc: "Доктор Шанс"}
- {id: 271, cat: TV, desc: "Мистер Робот"}
- {id: 272, cat: TV, desc: "Очень странные дела"}
- {id: 274, cat: TV, desc: "Стрела"}
- {id: 275, cat: TV, desc: "Флэш"}
- {id: 276, cat: TV, desc: "Супердевушка"}
- {id: 277, cat: TV, desc: "Легенды завтрашнего дня "}
- {id: 278, cat: TV, desc: "Суеверие"}
- {id: 279, cat: TV, desc: "Конец ёбанного мира"}
- {id: 280, cat: TV, desc: "Спецназ"}
- {id: 281, cat: TV, desc: "Бесстыдники "}
- {id: 282, cat: TV, desc: "Проклятая нация"}
- {id: 283, cat: TV, desc: "Человек будущего"}
- {id: 284, cat: TV, desc: "Каратель"}
- {id: 285, cat: TV, desc: "Фантастика"}
- {id: 286, cat: TV, desc: "Ужасы/триллер"}
- {id: 287, cat: TV, desc: "Драма"}
- {id: 288, cat: TV, desc: "Комедия"}
- {id: 289, cat: TV, desc: "Боевик"}
- {id: 290, cat: TV, desc: "Детектив"}
modes:
search: [q]
tv-search: [q, season, ep]
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: div.error
test:
path: browse.php
selector: a[href="logout.php"]
search:
paths:
- path: browse.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active 1 incdead 2 onlydead 3 gold 4 seedfree
incldead: "1"
rows:
selector: table.embedded > tbody > tr:has(a[href^="details.php?id="])
fields:
title:
selector: a[href^="details.php?id="]
filters:
- name: re_replace
args: ["\\b(\\d)\\b", "0$1"]
- name: re_replace
args: [".+Сезон\\s+(\\d+)(?:.+Серия\\s+(\\d+))*[\\s\\S]*\\/\\s+(.+)\\s+\\(\\d+\\)\\s+(\\S*)\\s*(\\w*\\d*).*", "$3 - S$1E$2 - rus $5 $4 newstudio"]
- name: replace
args: ["WEBDLRip","WEBDL"]
- name: replace
args: ["HDTVRip","HDTV"]
- name: replace
args: ["E -","E01-99 -"]
details:
selector: a[href^="details.php?id="]
attribute: href
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
download:
selector: a[href^="download.php?id="]
attribute: href
files:
selector: td:nth-child(3)
size:
selector: td:nth-child(5)
date:
selector: i
filters:
- name: dateparse
args: "2006-01-02 15:04:05"
seeders:
selector: td:nth-child(6)
filters:
- name: split
args: ["|", 0]
leechers:
selector: td:nth-child(6)
filters:
- name: split
args: ["|", 1]
downloadvolumefactor:
case:
img[src="pic/diamond.png"]: "0"
img[src="pic/freedownload.gif"]: "0"
img[src="pic/silver.gif"]: "0.5"
img[src="pic/bronze.gif"]: "0.75"
"*": "1"
uploadvolumefactor:
case:
img[src="pic/diamond.png"]: "2"
"*": "1"

View File

@@ -14,9 +14,10 @@
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Audio, desc: "Music"}
- {id: 4, cat: Books, desc: "Books"}
- {id: 5, cat: PC/Mac, desc: "Apps"}
- {id: 5, cat: PC, desc: "Apps"}
- {id: 6, cat: Other, desc: "Other"}
- {id: 7, cat: PC/Games, desc: "Games"}
- {id: 8, cat: TV/Sport, desc: "Sports"}
modes:
@@ -41,6 +42,7 @@
inputs:
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
description: ""
uploader: ""
imdb: "{{ .Query.IMDBIDShort }}"
tvdb: ""
@@ -107,9 +109,11 @@
case:
"i[data-original-title=\"100% Free\"]": "0"
"i[data-original-title=\"Global FreeLeech\"]": "0"
"i[data-original-title=\"Featured\"]": "0"
"*": "1"
uploadvolumefactor:
case:
"i[data-original-title=\"Featured\"]": "2"
"i[data-original-title=\"Double upload\"]": "2"
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
"*": "1"

View File

@@ -58,13 +58,28 @@
filters:
- name: querystring
args: cat
extras:
text: ""
extras:
optional: true
selector: td.titulo a[class]
filters:
- name: prepend
args: "["
- name: append
args: "]"
title:
selector: td.titulo a[id]
filters:
- name: prepend
args: "{{ .Result.extras }} "
- name: append
args: " [spanish]"
args: " [Spanish]"
details:
selector: td.titulo a
selector: td.titulo a[id]
attribute: href
comments:
selector: td.foro a
attribute: href
size:
selector: td.tamano
@@ -142,3 +157,10 @@
filters:
- name: replace
args: ["Freeleech X2", "2"]
minimumratio:
text: "1.0"
minimumseedtime:
text: "345600"
description:
optional: true
selector: td.titulo a[class]

View File

@@ -28,10 +28,14 @@
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: 1
error:
- selector: form[action*="/login"] .text-red
- selector: script[nonce]:contains("Error")
message:
selector: script[nonce]:contains("Error")
test:
path: torrents
selector: a[href$="/logout"]
search:
paths:
@@ -39,6 +43,7 @@
inputs:
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
description: ""
uploader: ""
imdb: "{{ .Query.IMDBIDShort }}"
tvdb: ""
@@ -65,13 +70,13 @@
selector: a.view-torrent
attribute: href
size:
selector: td:nth-child(5)
selector: td:nth-last-child(4)
seeders:
selector: td:nth-child(7)
selector: td:nth-last-child(3)
leechers:
selector: td:nth-child(8)
selector: td:nth-last-child(2)
grabs:
selector: td:nth-child(6)
selector: td:nth-last-child(1)
filters:
- name: regexp
args: ([\d\.]+)
@@ -103,12 +108,17 @@
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
downloadvolumefactor:
case:
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech
"i[data-original-title=\"Personal Freeleech\"]": "0" # 24 Hour FreeLeech From BON Store
"i[data-original-title=\"Special Freeleech\"]": "0" # Special FreeLeech For Certain User Groups
"i[data-original-title=\"Freeleech Token\"]": "0" # Freeleech From Token
"i[data-original-title=\"Global FreeLeech\"]": "0" # Global Freeleech
"i[data-original-title=\"Freeleech\"]": "0" # Freeleech
"i[data-original-title=\"Featured\"]": "0" # Featured Torrent
"*": "1"
uploadvolumefactor:
case:
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
"i[data-original-title=\"Double Upload\"]": "2" # Single Torrent Double Upload
"i[data-original-title=\"Global Double Upload\"]": "2" # Global Double Upload
"i[data-original-title=\"Featured\"]": "2" # Featured Torrent
"*": "1"
# UNIT3D
# UNIT3D 1.9.2

View File

@@ -79,13 +79,12 @@
incldead: 1
search_by: "{{ if .Query.IMDBID }}imdb{{else}}name{{end}}"
rows:
selector: table.table-striped > tbody > tr:has(a[title][href^="details.php?id="])
selector: table.table-striped > tbody > tr:has(a[href^="details.php?id="])
fields:
title:
selector: a[title][href^="details.php?id="]
attribute: title
selector: a[href^="details.php?id="]
details:
selector: a[title][href^="details.php?id="]
selector: a[href^="details.php?id="]
attribute: href
category:
selector: a[href^="?cat="]
@@ -96,7 +95,7 @@
banner:
attribute: rel
imdb:
selector: a[href*="https://www.imdb.com/title/"]
selector: a[href*="www.imdb.com/title/"]
optional: true
attribute: href
download:

View File

@@ -10,8 +10,6 @@
legacylinks:
- http://ilcorsaroblu.org/
- https://www.ilcorsaroblu.info/
certificates:
- e6dd93ef71f96d04559e2bee8cc8e6fd74957730 # incomplete CA chain
caps:
categorymappings:

View File

@@ -13,14 +13,6 @@
- https://ilcorsaronero.info/
- https://ilcorsaronero.ch/
- https://ilcorsaronero.cc/
certificates:
- 89c12d4a080b5aeec00acbb269dc9b44584b1b3f # incomplete CA chain
- aa7c40aa360a1cec8a9687312fd50402b912e618 # incomplete CA chain
- 83174ec1f92fa13cdef9d51888ea1dfba2166e17 # incomplete CA chain
- c414bf4ad6c69841693c147849f4c314aa200bdf # incomplete CA chain
- 3a402766ce22fd1aa24bfc1a4fd47e9309eb8c98 # incomplete CA chain
- 160f832730737a70264768ceddf3cd94bc51ffb7 # incomplete CA chain
- a60e969b27965d4dc2ff45d50c20e2e872d4e9b9 # incomplete CA chain
caps:
categorymappings:

View File

@@ -46,14 +46,14 @@
movie-search: [q, imdbid]
login:
path: takelogin.php
path: login.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
notsecure: "1"
error:
- selector: div.login_error_content
- selector: div.login_error_content_text
test:
path: browse.php
@@ -65,10 +65,10 @@
search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Query.Keywords }}{{end}}"
t: "all"
rows:
selector: table.torrentable > tbody > tr:has(td.maintd)
selector: table.torrenttable > tbody > tr:has(td.torrentmain)
fields:
title:
selector: div.tortitle > a
selector: td.torrentmain > a.torrentname
attribute: title
category:
selector: a[href^="browse.php?cat="]
@@ -77,10 +77,10 @@
- name: querystring
args: cat
details:
selector: div.tortitle > a
selector: td.torrentmain > a.torrentname
attribute: href
download:
selector: a[href^="download.php/"]
selector: a[href*="/download.php/"]
attribute: href
imdb:
optional: true
@@ -95,51 +95,49 @@
selector: a.cover
attribute: href
files:
selector: td:nth-child(6)
selector: div.files > a.button.small
filters:
- name: replace
args: [".", ""]
size:
selector: td:nth-child(8)
selector: td.center.size
filters:
- name: replace
args: [".", ""]
- name: replace
args: [",", "."]
grabs:
selector: td:nth-child(9) > div:first-child
filters:
- name: replace
args: [".", ""]
- name: regexp
args: "^([\\d]+)"
seeders:
selector: td:nth-child(9) > div:first-child
selector: td.center.data > a:first-child
filters:
- name: replace
args: [".", ""]
- name: regexp
args: "\\|\\s*([\\d]+)\\s*\\|"
leechers:
selector: td:nth-child(9) > div:first-child
selector: td.center.data > a:nth-child(2)
filters:
- name: replace
args: [".", ""]
- name: regexp
args: "([\\d]+)$"
date:
selector: td.date
grabs:
selector: td.center.data
filters:
- name: replace
args: [".", ""]
remove: div.uploader, div.moderation, a.leftborder
date:
selector: td.center.date
filters:
- name: re_replace
args: ["(\\-)(\\d{2})(\\d{2})(\\:)", "-$2 $3:"]
- name: dateparse
args: "2006.01.02 15:04:05"
args: "2006-01-02 15:04"
downloadvolumefactor:
text: "0"
uploadvolumefactor:
case:
img[src^="pic/4x.gif"]: "4"
img[src^="pic/3x.gif"]: "3"
img[src^="pic/2x.gif"]: "2"
"*": "1"
a[href^="?doubleup=four"]: "4"
a[href^="?doubleup=three"]: "3"
a[href^="?doubleup=two"]: "2"
"*" : "1"
description:
selector: td.maintd
remove: div.tortitle, div.markcont, div.tablebuttons, div.tablebigbuttons
selector: div.contenttext
remove: div.contenttitle

View File

@@ -0,0 +1,80 @@
---
site: itorrent
name: iTorrent
description: "iTorrent is a Public HUNGARIAN site"
language: hu
type: public
encoding: UTF-8
links:
- https://itorrent.ws/
caps:
categories:
"Apps": PC
"book": Books
"Games": PC/Games
"Movies": Movies
"Music": Audio
"XXX": XXX
"TV": TV
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
download:
selector: a[href^="/torrentfiles/"]
search:
paths:
- path: "torrentek/title/{{ .Keywords}}/"
rows:
selector: tr.gradeX
filters:
- name: andmatch
fields:
category:
selector: td:nth-child(1) i
attribute: class
filters:
# patch. books are "fa fa-book" while all the other categories are "ico-list-*"
- name: replace
args: [" ", "-"]
- name: split
args: ["-", 2]
title:
selector: td:nth-child(2) a
details:
selector: td:nth-child(2) a
attribute: href
download:
selector: td:nth-child(2) a
attribute: href
date:
selector: td:nth-child(4) span
optional: true
attribute: title
filters:
- name: dateparse
args: "2006.01.02 15:04"
date:
selector: td:nth-child(4):not(span)
optional: true
filters:
- name: dateparse
args: "2006.01.02"
size:
selector: td:nth-child(5)
grabs:
selector: td:nth-child(6)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -7,11 +7,11 @@
encoding: UTF-8
followredirect: true
links:
- https://kikibt.cc/
- https://kikibt.pw/
legacylinks:
- https://kikibt.me/
- http://kikibt.pw/
- https://kikibt.cc/
caps:
categorymappings:

View File

@@ -173,6 +173,8 @@
args: ["Кураж-Бамбей", "kurazh"]
- name: replace
args: ["Кубик в Кубе", "Kubik"]
- name: replace
args: ["Кравец", "Kravec"]
- name: re_replace
args: ["\\((\\d+)\\s+[Сс]езон:\\s+(?:(\\d+-*\\d*)\\s+[Сс]ери[ия]\\s+.*\\d+)\\)(.*)\\s([12][0-9]{3})\\s(.*)", "$3 - S$1E$2 - rus $5"]
- name: re_replace

View File

@@ -41,7 +41,7 @@
search:
paths:
- path: "{{if .Keywords}}search/all/{{ .Keywords}}/{{else}}/index.php?page=latest100{{end}}"
- path: "{{if .Keywords}}search/all/{{ .Keywords}}/date/1/{{else}}/index.php?page=latest100{{end}}"
keywordsfilters:
- name: re_replace
args: ["S[0-9]{2}([^E]|$)", ""] #remove season tag without episode

View File

@@ -29,11 +29,11 @@
title:
selector: div.blog-content h3 a
category:
selector: a[href*="/category/"]
selector: a[href*="/mac-os-"]
attribute: href
filters:
- name: split
args: ["/", 4]
args: ["/", 3]
details:
selector: div.blog-content h3 a
attribute: href
@@ -44,7 +44,7 @@
selector: div.blog-media p a img
attribute: data-src
date:
selector: div.blog-content div.entry-meta time
selector: time
attribute: datetime
filters:
- name: replace

View File

@@ -39,33 +39,34 @@
paths:
# return movie results if there are no search parms supplied (for use with the TEST button)
# http://www.magnetdl.com/m/midnight-texas-s01e10/
# using "invalid-cat" in the default case (empty keywords) causes no category limitation
- path: "{{if .Keywords}}{{ re_replace .Keywords \"(.).*\" \"$1\" }}/{{ .Keywords }}/{{else}}download/invalid-cat/{{end}}"
- path: "{{if .Keywords}}{{ re_replace .Keywords \"(.).*\" \"$1\" }}/{{ .Keywords }}/{{else}}download/movies/{{end}}"
rows:
selector: tr:has(td[class="m"])
selector: tr:has(td.m)
fields:
title:
selector: td[class="n"] a
selector: td.n a
attribute: title
category:
optional: true
selector: td[class^="t"]
details:
selector: td[class="n"] a
selector: td.n a
attribute: href
magnet:
selector: td[class="m"] a
selector: td.m a
attribute: href
date:
selector: td:nth-child(3)
filters:
- name: timeago
files:
selector: td:nth-child(5)
size:
selector: td:nth-child(6)
seeders:
selector: td[class="s"]
files:
selector: td[class="l"]
selector: td.s
leechers:
selector: td.l
downloadvolumefactor:
text: "0"
uploadvolumefactor:

View File

@@ -1,9 +1,9 @@
---
site: megabliz
name: Mega-Bliz
description: "Mega-Bliz is a Semi-Private site for MOVIES / TV / GENERAL"
description: "Mega-Bliz is a Private site for MOVIES / TV / GENERAL"
language: en-us
type: semi-private
type: private
encoding: UTF-8
links:
- https://mega-bliz.nl/

View File

@@ -0,0 +1,79 @@
---
site: mkvcage
name: MkvCage
description: "MkvCage is a Public torrent site for MOVIES / TV"
language: en-us
type: public
encoding: UTF-8
links:
- https://www.mkvcage.com/
legacylinks:
- https://www.mkvcage.ws/
- https://mkvcage.com/
caps:
categories:
1: Movies
2: TV
3: Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
download:
selector: a[href^="magnet:?"]
search:
paths:
# 6 hits per page!?!?!
- path: "{{if .Keywords}}?s={{ .Keywords}}{{else}}{{end}}"
- path: "page/2/{{if .Keywords}}?s={{ .Keywords}}{{else}}{{end}}"
- path: "page/3/{{if .Keywords}}?s={{ .Keywords}}{{else}}{{end}}"
- path: "page/4/{{if .Keywords}}?s={{ .Keywords}}{{else}}{{end}}"
- path: "page/5/{{if .Keywords}}?s={{ .Keywords}}{{else}}{{end}}"
rows:
selector: article
filters:
- name: andmatch
fields:
title:
selector: h2 a
category:
selector: span.cat-links
attribute: class
case:
a[href*="/category/movies/"]: "1"
a[href*="/category/tv-shows/"]: "2"
"*": "3"
details:
selector: h2 a
attribute: href
download:
selector: h2 a
attribute: href
description:
selector: pre
banner:
selector: div img
attribute: src
date:
selector: span.posted-on a time
attribute: datetime
size:
selector: h2 a
filters:
- name: re_replace
args: ["(.*?)(\\d+)\\.?\\d?([T|G|M|K]B)$", "$2 $3"]
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -0,0 +1,69 @@
---
site: movcr
name: MovCr
description: "MovCr is an Indian Public torrent site"
language: en-us
type: public
encoding: UTF-8
links:
- https://movcr.tv/
caps:
categories:
"other": Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
download:
selector: a[href^="/torrents/"]
search:
paths:
- path: "{{if .Keywords}}search/search.php?q={{ .Keywords}}{{else}}/{{end}}"
rows:
selector: tr:has(td.name a[href^="/download-"])
filters:
- name: andmatch
fields:
category:
text: other
title:
selector: td.name a:nth-child(2)
details:
selector: td.name a
attribute: href
download:
selector: td.name a
attribute: href
date:
selector: td.seeds:contains("-")
optional: true
filters:
- name: dateparse
args: "2006-01-02"
date:
selector: td.seeds:not(:contains("-"))
optional: true
filters:
- name: timeago
size:
selector: td.leeches
seeders:
selector: td:nth-child(2)
filters:
- name: split
args: ["/", 0]
leechers:
selector: td:nth-child(2)
filters:
- name: split
args: ["/", 1]
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -0,0 +1,121 @@
---
site: 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"}
- {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/WEBDL, desc: "Movies Web"}
- {id: 5, cat: Movies/WEBDL, desc: "Movies WebRip"}
- {id: 15, cat: Audio/Lossless, desc: "Music 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]
login:
path: login.php
method: form
form: form[action="takelogin.php"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
submitme: "X"
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": 0
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
banner:
selector: td a[href^="details.php?id="]
optional: true
attribute: onmouseover
filters:
- name: regexp
args: "src=\\\\\'(.*?)\\\\\' "
download:
selector: td a[href^="download.php?torrent="]
attribute: href
imdb:
selector: td a[href*="www.imdb.com/title/tt"]
optional: true
attribute: href
files:
selector: td:nth-of-type(5)
date:
selector: td:nth-of-type(7)
filters:
- name: dateparse
args: "Jan 2 2006 03:04 PM"
size:
selector: td:nth-of-type(8)
grabs:
selector: td:nth-of-type(9)
filters:
- name: regexp
args: "([\\d]+)"
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"

View File

@@ -39,9 +39,8 @@
search:
paths:
- path: torrents.php
method: post
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
$raw: "{{range .Categories}}cat={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
search_area: "{{ if .Query.IMDBID }}4{{else}}0{{end}}"
search_mode: 0
@@ -54,7 +53,7 @@
- name: andmatch
fields:
title:
selector: td.name > div > a.poster-preview[title]
selector: td.name > div > a[href*="-torrent-"][title]
attribute: title
category:
selector: td.category > a
@@ -63,35 +62,39 @@
- name: querystring
args: cat
details:
selector: td.name > div > a.poster-preview[title]
selector: td.name > div > a[href*="-torrent-"][title]
attribute: href
banner:
selector: td.name > a.poster-preview img
attribute: src
comments:
selector: a[href*="#comments"]
attribute: href
download:
selector: a.bookmark[onclick]
attribute: onclick
selector: td.name > div > a[href*="-torrent-"][title]
attribute: href
filters:
- name: replace
args: [",false)", ""]
- name: replace
args: ["return bookmark(", "download.php?id="]
size:
selector: td:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
- name: regexp
args: "-torrent-(\\d+).html"
- name: prepend
args: "download.php?id="
date:
selector: td:nth-child(4)
selector: td:nth-child(5)
filters:
- name: timeago
size:
selector: td:nth-child(6)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
grabs:
selector: td:nth-child(9)
downloadvolumefactor:
case:
"span.label:contains(\"Free\")": "0"
"span.label:contains(\"50%\")": "0.5"
"span.label:contains(\"30%\")": "0.7"
"*": "1"
uploadvolumefactor:
case:

View File

@@ -6,12 +6,10 @@
type: semi-private
encoding: windows-1251
links:
- https://nnm-club.me/
- http://nnmclub.to/
legacylinks:
- https://nnm-club.name/
certificates:
- 7877113458e90f3643dd28424657a29469f5dc55
- 0edfdcc8cf9f69dbe5473878145cae92504275b0
- https://nnm-club.me/
settings:
- name: username

View File

@@ -7,8 +7,6 @@
encoding: UTF-8
links:
- https://nyaa.si/
certificates:
- 3801e330482d4f9baef71ca4e33ba23ede74f59c # incomplete CA chain
settings:
- name: filter-id

View File

@@ -0,0 +1,86 @@
---
site: oxtorrent
name: OxTorrent
description: "OxTorrent is a French Public site for TV / MOVIES / GENERAL"
language: fr-fr
type: public
encoding: UTF-8
followredirect: true
links:
- https://wwv.oxtorrent.com/
caps:
categorymappings:
- {id: movies, cat: Movies, desc: "Movies"}
- {id: tvshows, cat: TV, desc: "TV Shows"}
- {id: softwares, cat: PC, desc: "Softwares"}
- {id: music, cat: Audio, desc: "Music"}
- {id: console-games, cat: Console, desc: "Console Games"}
- {id: pc-games, cat: PC/Games, desc: "PC Games"}
- {id: books, cat: Books, desc: "Books"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
download:
selector: a[href^="/download/"]
search:
paths:
- path: "{{if .Keywords}}recherche/{{.Keywords}}{{else}}{{end}}"
rows:
selector: div.listing-torrent > table > tbody > tr:has(a)
fields:
site_date:
selector: td:nth-child(1) a
filters:
# date is at the end of the title, so we get it and name it site_date
- name: regexp
args: "(\\w+)$"
title:
selector: td:nth-child(1) a
filters:
# now we put the date at the right place according scene naming rules using .Result.site_date
- name: replace
args: [" FRENCH", " {{ .Result.site_date }} FRENCH"]
- name: replace
args: ["MULTI", "{{ .Result.site_date }} MULTI"]
- name: replace
args: ["TRUEFRENCH", "{{ .Result.site_date }} TRUEFRENCH"]
- name: replace
args: ["VOSTFR", "{{ .Result.site_date }} VOSTFR"]
# and we delete it at the end
- name: re_replace
args: ["(\\w+)$", ""]
details:
selector: td:nth-child(1) a
attribute: href
download:
selector: td:nth-child(1) a
attribute: href
size:
selector: td:nth-child(2)
seeders:
selector: td:nth-child(3)
leechers:
selector: td:nth-child(4)
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"
category:
selector: td:nth-child(1) > i
case:
.Films: "movies"
.Séries: "tvshows"
.Logiciels: "softwares"
.Musique: "music"
.Jeux-Consoles: "console-games"
.Jeux-PC: "pc-games"
.Ebook: "books"
date:
text: "now"

View File

@@ -92,12 +92,12 @@
selector: table[width="100%"] > tbody tr:has(a[href^="download.php?id="])
fields:
title:
selector: td:nth-child(2) a
selector: a[href^="javascript:popdetails"]
filters:
- name: replace
args: ["[FREE] ", ""]
details:
selector: td:nth-child(2) a
selector: a[href^="javascript:popdetails"]
attribute: href
filters:
- name: replace
@@ -105,29 +105,28 @@
- name: replace
args: [");'", ""]
category:
selector: td:nth-child(1) a
selector: a[href^="torrents.php?category="]
attribute: href
filters:
- name: querystring
args: category
download:
optional: true
selector: td:nth-child(4) a
selector: a[href^="download.php?id="]
attribute: href
date:
# 19/01/2019
selector: td:nth-child(5)
selector: td:nth-last-child(9)
filters:
- name: dateparse
args: "02/01/2006"
size:
selector: td:nth-child(6)
selector: td:nth-last-child(8)
seeders:
selector: td:nth-child(8)
selector: td:nth-last-child(6)
leechers:
selector: td:nth-child(9) a
selector: td:nth-last-child(5)
grabs:
selector: td:nth-child(10)
selector: td:nth-last-child(4)
downloadvolumefactor:
case:
"img[src=\"images/fdownload.gif\"]": "0"

View File

@@ -6,6 +6,8 @@
type: private
encoding: UTF-8
links:
- https://proaudiotorrents.org/
legacylinks:
- http://proaudiotorrents.org/
caps:
@@ -36,21 +38,18 @@
modes:
search: [q]
settings:
- name: cookie
type: text
label: Cookie
- name: info
type: info
label: How to get the Cookie
default: "<p>This site requires you to solve a ReCaptcha. It's no longer possible to solve the captcha in Jackett. Please enter the cookie for the site manually.</p><ol><li>Login to this tracker in your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>Select the <b>Headers</b> tab<li>Find 'cookie:' in the <b>Request Headers</b> section<li>Copy & paste the whole cookie string to here</ol>"
login:
method: cookie
path: login.php
method: form
form: form[action="takelogin.php"]
submitpath: takelogin.php
inputs:
cookie: "{{.Config.cookie}}"
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: table tr td.text
test:
path: index.php
path: my.php
search:
paths:

View File

@@ -41,6 +41,7 @@
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
login:
path: login
@@ -50,7 +51,9 @@
password: "{{ .Config.password }}"
remember: 1
error:
- selector: div.has-error
- selector: script[nonce]:contains("Error")
message:
selector: script[nonce]:contains("Error")
test:
path: torrents
selector: a[href$="/logout"]
@@ -67,10 +70,10 @@
- path: filterTorrents
inputs:
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{ .Keywords }}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
description: ""
uploader: ""
imdb: ""
imdb: "{{ .Query.IMDBIDShort }}"
tvdb: ""
tmdb: ""
sort: created_at
@@ -93,14 +96,21 @@
details:
selector: a.view-torrent
attribute: href
banner:
optional: true
selector: div.torrent-poster img
attribute: src
filters:
- name: replace
args: ["https://via.placeholder.com/600x900", ""]
size:
selector: td:nth-child(5)
selector: td:nth-last-child(4)
seeders:
selector: td:nth-child(6)
selector: td:nth-last-child(3)
leechers:
selector: td:nth-child(7)
selector: td:nth-last-child(2)
grabs:
selector: td:nth-child(8)
selector: td:nth-last-child(1)
filters:
- name: regexp
args: ([\d\.]+)

View File

@@ -38,7 +38,7 @@
inputs:
search: "{{if .Query.Artist}}{{ .Query.Artist }}{{else}}{{ .Keywords }}{{end}}"
rows:
selector: body:nth-child(2) tbody tr td:nth-child(2) table.lista tbody tr:nth-child(2) table.lista tbody tr:has(a[href^="download.php?id="])
selector: table.lista[width="100%"] tbody tr:has(a[href^="download.php?id="])
fields:
title:
selector: td a[href^="details.php?id="]

View File

@@ -1,19 +1,18 @@
---
site: sharingue
name: Sharingue
description: "Sharingue is a BRAZILIAN Private Tracker for TV / MOVIES / ANIME / MUSIC"
language: pt-br
site: rockethd
name: RocketHD
description: "RocketHD is a GERMAN Private Tracker for MOVIES / TV"
language: de-de
type: private
encoding: UTF-8
links:
- https://www.sharingue.live/
- https://rocket-hd.me/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies (Filmes)"}
- {id: 3, cat: Audio, desc: "Music (Músicas)"}
- {id: 4, cat: TV, desc: "TV (Séries)"}
- {id: 5, cat: TV/Anime, desc: "Anime (Animes)"}
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: TV, desc: "TV"}
- {id: 3, cat: Movies, desc: "Collection"}
modes:
search: [q]
@@ -27,19 +26,17 @@
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: 1
selectorinputs:
_token:
selector: meta[name="csrf-token"]
attribute: content
error:
- selector: form[action$="/login"] .text-red
- selector: script[nonce]:contains("Error")
message:
selector: script[nonce]:contains("Error")
test:
path: /
path: torrents
selector: a[href$="/logout"]
ratio:
path: /
selector: span:has(i.fa-sync-alt)
path: torrents
selector: li:has(i.fa-sync-alt)
filters:
- name: regexp
args: "Ratio : (\\d+)"
@@ -50,13 +47,14 @@
inputs:
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
description: ""
uploader: ""
imdb: "{{ .Query.IMDBIDShort }}"
tvdb: ""
tmdb: ""
mal: ""
sort: created_at
direction: desc
sort: "created_at"
direction: "desc"
qty: 100
rows:
selector: table > tbody > tr
@@ -75,17 +73,28 @@
details:
selector: a.view-torrent
attribute: href
banner:
optional: true
selector: div.torrent-poster img
attribute: src
filters:
- name: replace
args: ["https://via.placeholder.com/600x900", ""]
size:
selector: td:nth-child(5)
selector: td:nth-last-child(4)
seeders:
selector: td:nth-child(7)
selector: td:nth-last-child(3)
leechers:
selector: td:nth-child(8)
selector: td:nth-last-child(2)
grabs:
selector: td:nth-child(6)
selector: td:nth-last-child(1)
filters:
- name: regexp
args: ([\d\.]+)
imdb:
optional: true
selector: a[href*="www.imdb.com/title/tt"]
attribute: href
date:
selector: time
filters:
@@ -114,12 +123,17 @@
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
downloadvolumefactor:
case:
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech
"i[data-original-title=\"Global freeleech\"]": "0" # Global Freeleech
"i[data-original-title=\"Personal Freeleech\"]": "0" # 24 Hour FreeLeech From BON Store
"i[data-original-title=\"Special Freeleech\"]": "0" # Special FreeLeech For Certain User Groups
"i[data-original-title=\"Freeleech Token\"]": "0" # Freeleech From Token
"i[data-original-title=\"Global FreeLeech\"]": "0" # Global Freeleech
"i[data-original-title=\"Freeleech\"]": "0" # Freeleech
"i[data-original-title=\"Featured\"]": "0" # Featured Torrent
"*": "1"
uploadvolumefactor:
case:
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
"i[data-original-title=\"Double Upload\"]": "2" # Single Torrent Double Upload
"i[data-original-title=\"Global Double Upload\"]": "2" # Global Double Upload
"i[data-original-title=\"Featured\"]": "2" # Featured Torrent
"*": "1"
# UNIT3D
# UNIT3D 1.9.3

View File

@@ -0,0 +1,103 @@
---
site: rptorrents
name: RPTorrents
description: "RPTorrents is a Private tracker for MOVIES / TV / GENERAL"
language: en-us
type: private
encoding: UTF-8
links:
- https://rptorrents.com/
caps:
categorymappings:
- {id: 1, cat: PC/Games, desc: "Games PC"}
- {id: 2, cat: PC/0day, desc: "Apps Windows"}
- {id: 3, cat: PC/Mac, desc: "Apps Mac"}
- {id: 4, cat: PC, desc: "Apps Linux"}
- {id: 34, cat: PC/Phone-Other, desc: "Apps Mobile"}
- {id: 6, cat: TV/Anime, desc: "Movie Cartoons"}
- {id: 7, cat: Movies/WEBDL, desc: "Movies WEB-DL"}
- {id: 32, cat: Movies/UHD, desc: "Movies 4k"}
- {id: 9, cat: Movies/HD, desc: "Movies HD"}
- {id: 10, cat: Movies/3D, desc: "Movies 3D"}
- {id: 11, cat: Movies, desc: "Movies Pack"}
- {id: 12, cat: Movies/BluRay, desc: "Movies Bluray"}
- {id: 33, cat: Movies/BluRay, desc: "Movies Bluray - Rips"}
- {id: 14, cat: TV/HD, desc: "TV HD"}
- {id: 15, cat: TV/WEB-DL, desc: "TV WEB-DL"}
- {id: 16, cat: TV/SD, desc: "TV SD"}
- {id: 17, cat: TV, desc: "TV Pack"}
- {id: 18, cat: TV/Documentary, desc: "TV Documentary"}
- {id: 19, cat: Audio/MP3, desc: "Music MP3"}
- {id: 20, cat: Audio/Lossless, desc: "Music Flac"}
- {id: 23, cat: Audio, desc: "Music Pack"}
- {id: 22, cat: Audio/Video, desc: "Music Video"}
- {id: 35, cat: PC/Games, desc: "Games Pack"}
- {id: 29, cat: XXX, desc: "Movie XXX"}
modes:
search: [q]
tv-search: [q, season, ep]
login:
path: account-login.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: "yes"
error:
- selector: div.myFrame-caption:contains("Access Denied")
message:
selector: div.myFrame-content
test:
path: torrents-search.php
selector: a[href="account-logout.php"]
search:
paths:
- path: torrents-search.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 name & desc 1 name 2 desc 3 genre
incldesc: 1
rows:
selector: tr.t-row
fields:
category:
selector: a[href^="torrents.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="torrents-details.php?id="]
attribute: title
details:
selector: a[href^="torrents-details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
size:
selector: td:nth-child(4)
date:
selector: td:nth-child(5)
filters:
- name: dateparse
args: "02.01.200615:04:05"
grabs:
selector: td:nth-child(7)
seeders:
selector: td:nth-child(8)
leechers:
selector: td:nth-child(9)
downloadvolumefactor:
case:
img[src="images/free.gif"]: "0"
img[src="images/t_extern.png"]: "0"
"*": "1"
uploadvolumefactor:
case:
img[src="images/t_extern.png"]: "0"
"*": "1"

View File

@@ -17,16 +17,17 @@
- {id: 21, cat: Movies/DVD, desc: "Movie DVD-9"}
- {id: 11, cat: Movies/DVD, desc: "Movie DVD-5"}
- {id: 20, cat: Movies/SD, desc: "Movie DVDRip"}
- {id: 45, cat: Movies, desc: "Movie RIP mp4"}
- {id: 22, cat: Movies/UHD, desc: "Movie 4K-Ultra-HD"}
- {id: 23, cat: Movies/HD, desc: "Movie H-265"}
- {id: 24, cat: Movies/HD, desc: "Movie 1080p"}
- {id: 25, cat: Movies/HD, desc: "Movie 720p"}
- {id: 26, cat: Movies/3D, desc: "Movie 3D-FullHD"}
- {id: 27, cat: Movies/BluRay, desc: "Movie Blu Ray Disk"}
- {id: 43, cat: Movies/SD, desc: "BMovie DRip"}
- {id: 27, cat: Movies/BluRay, desc: "Movie BluRay"}
- {id: 43, cat: Movies/SD, desc: "Movie BDRip"}
- {id: 29, cat: Movies/SD, desc: "Movie Cine News"}
- {id: 30, cat: TV/HD, desc: "Serie Tv HD"}
- {id: 31, cat: TV/SD, desc: "Serie Tv SD"}
- {id: 30, cat: TV/HD, desc: "Serie TV HD"}
- {id: 31, cat: TV/SD, desc: "Serie TV SD"}
- {id: 35, cat: TV/Other, desc: "Programmi TV"}
- {id: 42, cat: TV/Documentary, desc: "Documentari"}
# Music
@@ -46,6 +47,7 @@
- {id: 17, cat: Books, desc: "Edicola Riviste"}
- {id: 41, cat: Books, desc: "Edicola Fumetti"}
# Applicazioni
- {id: 4, cat: PC, desc: "IPTV"}
- {id: 7, cat: PC/0day, desc: "Applicazioni PC"}
- {id: 8, cat: PC/0day, desc: "Applicazioni Linux"}
- {id: 9, cat: PC/Mac, desc: "Applicazioni Mac"}
@@ -77,8 +79,19 @@
path: index.php
selector: a[href="logout.php"]
# download:
# before:
# path: thanks.php
# method: "post"
# inputs:
# infohash: "{{ .DownloadUri.Query.id }}"
# thanks: "1"
# rndval: "1487013827343"
# selector: a[href^="download.php?id="]
search:
paths:
# 30 entries per page
- path: index.php
inputs:
pages: 1
@@ -91,24 +104,6 @@
- path: index.php
inputs:
pages: 4
- path: index.php
inputs:
pages: 5
- path: index.php
inputs:
pages: 6
- path: index.php
inputs:
pages: 7
- path: index.php
inputs:
pages: 8
- path: index.php
inputs:
pages: 9
- path: index.php
inputs:
pages: 10
inputs:
search: "{{ .Keywords }}"
category: "{{range .Categories}}{{.}};{{end}}"
@@ -124,41 +119,16 @@
- name: re_replace # S01E01 to 1 1
args: ["(?i)\\bS0*(\\d+)E0*(\\d+)\\b", "$1 $2"]
rows:
selector: div.b-content > table > tbody > tr > td > table.lista > tbody > tr:has(a[href^="index.php?page=torrents&category="])
selector: table.lista > tbody > tr:has(a[href^="index.php?page=torrents&category="])
filters:
- name: andmatch
fields:
download:
# selector: a[href^="index.php?page=downloadcheck&id="]
selector: a[href^="download.php?id="]
attribute: href
title: # shortened title?
selector: td:nth-child(2)
filters:
- name: re_replace # replace special characters with " " (space)
args: ["[^a-zA-Z0-9\\s]|\\.", " "]
- name: re_replace # replace multiple spaces
args: ["[ ]{2,}", " "]
# normalize to SXXEYY format
- name: re_replace # S01 E01 to S01E01
args: ["(?i)\\bS(\\d+)\\sE(\\d+)\\b", "S$1E$2"]
- name: re_replace # 01x01 to S01E01
args: ["(?i)(\\d{2})x(\\d+)", "S$1E$2"]
- name: re_replace # 1x01 to S01E01
args: ["(?i)\\b(\\d{1})x(\\d+)", "S0$1E$2"]
- name: re_replace # Stagione X --> S0X
args: ["(?i)\\bStagion[ei]\\s?(\\d{1})\\b|\\bSeason'?s?\\s?(\\d{1})\\b", "S0$1$2"]
- name: re_replace # Stagione XX --> SXX
args: ["(?i)\\bStagion[ei]\\s?(\\d{2,})\\b|\\bSeason'?s?\\s?(\\d{2,})\\b", "S$1$2"]
- name: re_replace # Episodio 4 to E4
args: ["(?i)\\b(?:[\\/\\|]?Episodio\\s?(\\d+)|Puntata\\s?(\\d+))", "E$1$2"]
- name: re_replace # Episodi 4 5 to E04-05
args: ["(?i)\\b(?:Puntate\\s*)(\\d+)\\s?(\\d+)", "E0$1-0$2"]
- name: re_replace # rimozioni varie
args: ["(?i)(Serie completa|Completat?a?|in pausa)", ""]
title: # long titles?
optional: true
selector: td:nth-child(2)
attribute: title
title:
selector: a[href^="index.php?page=torrent-details&id="]
filters:
- name: re_replace # replace special characters with " " (space)
args: ["[^a-zA-Z0-9\\s]|\\.", " "]
@@ -182,7 +152,7 @@
- name: re_replace # rimozioni varie
args: ["(?i)(Serie completa|Completat?a?|in pausa)", ""]
category:
selector: td:nth-child(1) a[href^="index.php?page=torrents&category="]
selector: a[href^="index.php?page=torrents&category="]
attribute: href
filters:
- name: querystring
@@ -198,21 +168,32 @@
- name: regexp
args: "src=(.+?) "
size:
selector: td:nth-last-child(3)
date:
selector: td[width="85"] # some users have an extra uploader column between the grabs and size column, see #4435
filters:
- name: dateparse
args: "02/01/2006"
grabs:
selector: td[width="85"] + td + td + td
selector: td:has(a[href^="index.php?page=torrent-details&id="]) p:nth-of-type(2)
filters:
- name: replace
args: ["---", "0"]
args: [" \xA0 ", " "]
- name: regexp
args: " (.*?)$"
date:
selector: td:has(a[href^="index.php?page=torrent-details&id="]) p:nth-of-type(3)
filters:
- name: replace
args: ["\xA0 ", " "]
- name: regexp
args: " (.*?)$"
- name: dateparse
args: "15:04:05 02/01/2006"
seeders:
selector: td[width="85"] + td
selector: td:has(a[href^="index.php?page=torrent-details&id="]) p:nth-of-type(4) a:nth-of-type(1)
filters:
leechers:
selector: td[width="85"] + td + td
selector: td:has(a[href^="index.php?page=torrent-details&id="]) p:nth-of-type(4) a:nth-of-type(2)
filters:
grabs:
text: 0
grabs:
optional: true
selector: td:has(a[href^="index.php?page=torrent-details&id="]) p:nth-of-type(4) a:nth-of-type(3)
downloadvolumefactor:
case:
img[alt="Free Leech"]: "0"

View File

@@ -62,7 +62,7 @@
selector: div.table-responsive-line
fields:
category:
selector: i.torrent-icon
selector: img.torrent-icon
attribute: data-original-title
title:
selector: a.view-torrent

View File

@@ -0,0 +1,171 @@
---
site: siambit
name: SiamBIT
description: "SiamBIT is a THAI Private Torrent Tracker for GENERAL"
language: th-th
type: private
encoding: tis-620
links:
- https://www.siambit.me/
caps:
categorymappings:
- {id: 1, cat: Other, desc: "@ King"}
- {id: 75, cat: PC/0day, desc: "OS Windows / Office"}
- {id: 10, cat: TV, desc: "Cartoons / Animation"}
- {id: 9, cat: TV/Sport, desc: "Sports / Football"}
- {id: 110, cat: PC/Games, desc: "Mobile games"}
- {id: 7, cat: PC/Games, desc: "Games"}
- {id: 40, cat: Audio/Video, desc: "clips"}
- {id: 16, cat: Audio/Video, desc: "Concert"}
- {id: 3, cat: Audio/Other, desc: "Karaoke / MV"}
- {id: 70, cat: PC, desc: "software AntiVirus / Antispyware"}
- {id: 100, cat: PC/Phone-Other, desc: "software Mobile / Theme / Ringtone / mv"}
- {id: 85, cat: PC/Mac, desc: "Mac software"}
- {id: 105, cat: PC, desc: "Linux software"}
- {id: 8, cat: PC, desc: "software"}
- {id: 56, cat: Other, desc: "Dictionary / map"}
- {id: 19, cat: TV, desc: "Talk show / comedy / radio"}
- {id: 20, cat: TV, desc: "general"}
- {id: 55, cat: PC/Phone-IOS, desc: "Tablet / iPhone"}
- {id: 21, cat: TV, desc: "Dharma"}
- {id: 2, cat: Audio/MP3, desc: "Music"}
- {id: 130, cat: Audio/Audiobook, desc: "High quality music (Lossless)"}
- {id: 60, cat: Other, desc: "fonts / icons / clip art / templates"}
- {id: 90, cat: Movies/UHD, desc: "4K UHD movies"}
- {id: 91, cat: Movies/DVD, desc: "DVD movies"}
- {id: 92, cat: Movies/HD, desc: "Hi-Def movies"}
- {id: 89, cat: Movies/SD, desc: "VCD movies"}
- {id: 93, cat: TV, desc: "Mother and child @ / Learning materials for children"}
- {id: 4, cat: TV, desc: "TV shows / Variety / Game shows"}
- {id: 50, cat: Other, desc: "Images"}
- {id: 18, cat: Other, desc: "website"}
- {id: 17, cat: TV/Documentary, desc: "Documentary"}
- {id: 11, cat: Books/Technical, desc: "Learning materials / Books / Ebook"}
- {id: 5, cat: Movies, desc: "Movies / series [Korea]"}
- {id: 54, cat: Movies, desc: "Movies / Series [China]"}
- {id: 51, cat: Movies, desc: "Movie series / series [Japan]"}
- {id: 52, cat: Movies, desc: "Movies / Series [Western]"}
- {id: 57, cat: Movies, desc: "Movies / series [other]"}
- {id: 53, cat: Movies, desc: "Movie series / series / drama [Thai]"}
- {id: 901, cat: XXX, desc: "XXX-Anime"}
- {id: 902, cat: XXX, desc: "XXX-Game"}
- {id: 903, cat: XXX, desc: "XXX-Japan censored"}
- {id: 904, cat: XXX, desc: "XXX-Japan"}
- {id: 905, cat: XXX, desc: "XXX-Guava"}
- {id: 906, cat: XXX, desc: "XXX-Asia censored"}
- {id: 907, cat: XXX, desc: "XXX-Asia"}
- {id: 908, cat: XXX, desc: "XXX-Gay"}
- {id: 910, cat: XXX, desc: "XXX-clip"}
- {id: 911, cat: XXX, desc: "XXX-pictures"}
- {id: 912, cat: XXX, desc: "XXX-magazine"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: td.text
test:
path: nDonated.php
selector: a[href="logout.php"]
download:
before:
path: ajax.php
method: get
inputs:
_action: "say_thank"
id: "{{ .DownloadUri.Query.id }}"
selector: a[href^="downloadnew.php?id="]
search:
paths:
- path: viewno18.php
categorymappings: ["!", 901, 902, 903, 904, 905, 906, 907, 908, 910, 911, 912]
- path: viewbr.php
categorymappings: [901, 902, 903, 904, 905, 906, 907, 908, 910, 911, 912]
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
searchin: 0
rows:
selector: table[width="100%"][border="1"][cellspacing="0"][cellpadding="5"] > tbody > tr:has(a[href*="hashinfo="])
fields:
title:
selector: a[href^="details.php?id="]
details:
selector: a[href^="details.php?id="]
attribute: href
category:
selector: a[href^="viewno18.php?cat="], a[href^="viewbr.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
download:
selector: a[href^="details.php?id="]
attribute: href
imdb:
optional: true
selector: a[href*="www.imdb.com/title/"]
attribute: href
files:
selector: td:nth-child(5)
date:
selector: td:nth-child(7)
filters:
- name: dateparse
args: "02-01-200615:04:05"
size:
selector: td:nth-child(8)
grabs:
selector: td:nth-child(9)
filters:
- name: regexp
args: (\d+)
seeders:
selector: td:nth-child(10)
leechers:
selector: td:nth-child(11)
downloadvolumefactor:
case:
"td:nth-child(3):contains(\"100%\")": "0"
"td:nth-child(3):contains(\"95%\")": "0.05"
"td:nth-child(3):contains(\"90%\")": "0.1"
"td:nth-child(3):contains(\"85%\")": "0.15"
"td:nth-child(3):contains(\"80%\")": "0.2"
"td:nth-child(3):contains(\"75%\")": "0.25"
"td:nth-child(3):contains(\"70%\")": "0.3"
"td:nth-child(3):contains(\"65%\")": "0.35"
"td:nth-child(3):contains(\"60%\")": "0.4"
"td:nth-child(3):contains(\"55%\")": "0.45"
"td:nth-child(3):contains(\"50%\")": "0.5"
"td:nth-child(3):contains(\"45%\")": "0.55"
"td:nth-child(3):contains(\"40%\")": "0.6"
"td:nth-child(3):contains(\"35%\")": "0.65"
"td:nth-child(3):contains(\"30%\")": "0.7"
"td:nth-child(3):contains(\"25%\")": "0.75"
"td:nth-child(3):contains(\"20%\")": "0.8"
"td:nth-child(3):contains(\"15%\")": "0.85"
"td:nth-child(3):contains(\"10%\")": "0.9"
"td:nth-child(3):contains(\"5%\")": "0.95"
"*": "1"
uploadvolumefactor:
case:
"td:nth-child(4):contains(\"x2\")": "2"
"td:nth-child(4):contains(\"x3\")": "3"
"td:nth-child(4):contains(\"x4\")": "4"
"td:nth-child(4):contains(\"x5\")": "5"
"td:nth-child(4):contains(\"x6\")": "6"
"td:nth-child(4):contains(\"x7\")": "7"
"td:nth-child(4):contains(\"x8\")": "8"
"td:nth-child(4):contains(\"x9\")": "9"
"*": "1"

View File

@@ -6,9 +6,9 @@
type: public
encoding: UTF-8
links:
- https://www.skytorrents.to/
legacylinks:
- https://www.skytorrents.lol/
legacylinks:
- https://www.skytorrents.to/
caps:
categories:
@@ -29,23 +29,23 @@
movie-search: [q]
settings:
- name: btdb.eu-links
- name: itorrents-links
type: checkbox
label: Add download links via btdb.eu
label: Add download links via itorrents.org
default: true
- name: info
type: info
label: btdb.eu Note
default: Without the btdb.eu option only magnet links will be provided.
label: ITorrents Note
default: Without the itorrents option only magnet links will be provided.
search:
# https://www.skytorrents.lol/?search=mr+mercedes+s02e05&sort=created
# https://www.skytorrents.lol/?query=mr+mercedes+s02e05&sort=created
# https://www.skytorrents.lol/top100
paths:
- path: "{{ if .Keywords }}?search={{ .Keywords }}&sort=created{{else}}top100{{end}}"
- path: "{{ if .Keywords }}?search={{ .Keywords }}&sort=created&page=2{{else}}{{end}}"
- path: "{{ if .Keywords }}?search={{ .Keywords }}&sort=created&page=3{{else}}{{end}}"
- path: "{{ if .Keywords }}?search={{ .Keywords }}&sort=created&page=4{{else}}{{end}}"
- path: "{{ if .Keywords }}?query={{ .Keywords }}&sort=created{{else}}top100{{end}}"
- path: "{{ if .Keywords }}?query={{ .Keywords }}&sort=created&page=2{{else}}{{end}}"
- path: "{{ if .Keywords }}?query={{ .Keywords }}&sort=created&page=3{{else}}{{end}}"
- path: "{{ if .Keywords }}?query={{ .Keywords }}&sort=created&page=4{{else}}{{end}}"
rows:
selector: tr.result
fields:
@@ -62,11 +62,11 @@
details:
selector: td a
attribute: href
download-btdb.eu:
selector: a[href^="//btdb.eu"]
download-itorrents:
selector: a[href^="//itorrents"]
attribute: href
download:
text: "{{if .Config.btdb.eu-links}}{{ .Result.download-btdb.eu }}{{else}}{{end}}"
text: "{{if .Config.itorrents-links}}{{ .Result.download-itorrents }}{{else}}{{end}}"
magnet:
selector: a[href^="magnet:?"]
attribute: href

View File

@@ -38,7 +38,8 @@
selector: div[role="listitem"]:has(a[href^="magnet:?xt="])
fields:
title:
selector: div[class$="__title"] h3
selector: div[class$="__title"] a[title]
attribute: title
details:
selector: div[class$="__title"] a
attribute: href
@@ -62,12 +63,13 @@
- name: regexp
args: "(\\d+ \\w+ \\w+)"
seeders:
selector: div.v-list__tile__content div:nth-of-type(3) span:nth-child(1)
selector: div.v-list__tile__sub-title span.green--text
leechers:
selector: div.v-list__tile__content div:nth-of-type(3) span:nth-child(2)
selector: div.v-list__tile__sub-title span.red--text
grabs:
selector: div.v-list__tile__sub-title span:last-of-type
size:
selector: div.v-list__tile__content div:nth-of-type(3)
remove: span
selector: div.v-list__tile__sub-title:last-of-type strong
downloadvolumefactor:
text: "0"
uploadvolumefactor:

View File

@@ -13,11 +13,13 @@
- {id: 47, cat: TV/Sport, desc: "EPL"}
- {id: 41, cat: TV/Sport, desc: "American Football"}
- {id: 17, cat: TV/Sport, desc: "Athletics"}
- {id: 51, cat: TV/Sport, desc: "Baseball"}
- {id: 34, cat: TV/Sport, desc: "Bodybuilding/Fitness"}
- {id: 50, cat: TV/Sport, desc: "Golf"}
- {id: 29, cat: TV/Sport, desc: "Boxing"}
- {id: 19, cat: TV/Sport, desc: "BrainGames"}
- {id: 36, cat: TV/Sport, desc: "BreakDance"}
- {id: 40, cat: TV/Sport, desc: "Cricet/Golf/Baseball"}
- {id: 40, cat: TV/Sport, desc: "Golf"}
- {id: 23, cat: TV/Sport, desc: "Cycling"}
- {id: 31, cat: TV/Sport, desc: "Documentary"}
- {id: 1, cat: TV/Sport, desc: "European Basketball"}
@@ -55,6 +57,7 @@
- {id: 16, cat: TV/Sport, desc: "WinterSport"}
- {id: 33, cat: TV/Sport, desc: "Wrestling/Grapling"}
- {id: 48, cat: TV/Sport, desc: "Uncategorised"}
- {id: 53, cat: TV/Sport, desc: "Cricket"}
modes:
search: [q]
@@ -71,9 +74,6 @@
test:
path: index.php
download:
selector: a[href^="download.php?id="]
search:
paths:
- path: index.php
@@ -95,12 +95,18 @@
title:
remove: span
selector: td:nth-child(2)
filters:
# strip the upright bars in the title
- name: re_replace
args: ["( \\| )+", " "]
download:
selector: a[href^="index.php?page=torrent-details&id="]
# download.php?id=fb27625a0543ed731f7b3505beebf4c8d530f8f9&f=IIHF+2019-05-26+%7C+Gold+Medal+%7C+Canada+vs+Finland+%7C+1080p+EN.torrent
selector: a[href^="download.php?id="]
attribute: href
filters:
- name: replace
args: ["index.php?page=torrent-details&id=", "download.php?id="]
# strip the upright bars in the title's filename
- name: re_replace
args: ["(\\+%7C\\+)+", "+"]
details:
selector: a[href^="index.php?page=torrent-details&id="]
attribute: href
@@ -112,11 +118,11 @@
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
# date:
# selector: td:nth-child(5)
# filters:
# - name: dateparse
# args: "02/05/2017"
date:
selector: td:nth-child(5)
filters:
- name: dateparse
args: "02/01/2006"
downloadvolumefactor:
case:
"*": "1"

View File

@@ -0,0 +1,527 @@
---
site: tapochek
name: Tapochek
description: "Tapochek is a RUSSIAN Private Torrent Tracker for 0DAY / GENERAL"
language: ru-ru
type: private
encoding: windows-1251
links:
- https://tapochek.net/
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: striprussian
type: checkbox
label: Strip Russian Letters
default: false
caps:
categorymappings:
# PC Games
# Игры для PC
- {id: 2, cat: PC/Games, desc: "Игры для PC (общее)"}
- {id: 14, cat: PC/Games, desc: "Альфа-, Бета- и Демо-версии"}
- {id: 314, cat: PC/Games, desc: "NoCD/ NoDVD"}
- {id: 13, cat: PC/Games, desc: "Русификаторы"}
- {id: 12, cat: PC/Games, desc: "Патчи"}
- {id: 11, cat: PC/Games, desc: "Чит-программы и трейнеры"}
- {id: 10, cat: PC/Games, desc: "Дополнения для игр"}
- {id: 9, cat: PC/Games, desc: "Игровые журналы и приложенные материалы"}
- {id: 712, cat: PC/Games, desc: "Гайды, бонусные диски и другие дополнительные материалы"}
- {id: 18, cat: PC/Games, desc: "Горячие новинки"}
- {id: 808, cat: PC/Games, desc: "Репаки от R.G. Механики"}
- {id: 809, cat: PC/Games, desc: "Горячие новинки от R.G. Механики"}
- {id: 810, cat: PC/Games, desc: "Аркады от R.G. Механики"}
- {id: 811, cat: PC/Games, desc: "Приключения и квесты от R.G. Механики"}
- {id: 812, cat: PC/Games, desc: "Стратегии от R.G. Механики"}
- {id: 813, cat: PC/Games, desc: "Симуляторы от R.G. Механики"}
- {id: 814, cat: PC/Games, desc: "Action от R.G. Механики"}
- {id: 815, cat: PC/Games, desc: "RPG от R.G. Механики"}
- {id: 903, cat: PC/Games, desc: "jRPG от R.G. Механики"}
- {id: 887, cat: PC/Games, desc: "Раздачи от R.G. Игроманы"}
- {id: 888, cat: PC/Games, desc: "Аркады от R.G. Игроманы"}
- {id: 889, cat: PC/Games, desc: "Приключения и квесты от R.G. Игроманы"}
- {id: 890, cat: PC/Games, desc: "Стратегии от R.G. Игроманы"}
- {id: 891, cat: PC/Games, desc: "Симуляторы от R.G. Игроманы"}
- {id: 892, cat: PC/Games, desc: "Action от R.G. Игроманы"}
- {id: 893, cat: PC/Games, desc: "RPG от R.G. Игроманы"}
- {id: 913, cat: PC/Games, desc: "Раздачи от R.G. GOGFAN"}
- {id: 935, cat: PC/Games, desc: "Ранний доступ от R.G. GOGFAN"}
- {id: 914, cat: PC/Games, desc: "Аркады от R.G. GOGFAN"}
- {id: 915, cat: PC/Games, desc: "Приключения и квесты от R.G. GOGFAN"}
- {id: 931, cat: PC/Games, desc: "Стратегии от R.G. GOGFAN"}
- {id: 930, cat: PC/Games, desc: "Симуляторы от R.G. GOGFAN"}
- {id: 929, cat: PC/Games, desc: "Action от R.G. GOGFAN"}
- {id: 928, cat: PC/Games, desc: "RPG от R.G. GOGFAN"}
- {id: 24, cat: PC/Games, desc: "Приключения и квесты"}
- {id: 25, cat: PC/Games, desc: "Стратегии"}
- {id: 28, cat: PC/Games, desc: "RTS (стратегии в реальном времени)"}
- {id: 27, cat: PC/Games, desc: "TBS (пошаговые стратегии)"}
- {id: 26, cat: PC/Games, desc: "Wargame"}
- {id: 238, cat: PC/Games, desc: "Экономические стратегии"}
- {id: 19, cat: PC/Games, desc: "Аркады"}
- {id: 23, cat: PC/Games, desc: "Аркады (разное)"}
- {id: 22, cat: PC/Games, desc: "Логические аркады"}
- {id: 21, cat: PC/Games, desc: "Настольные и карточные аркады"}
- {id: 20, cat: PC/Games, desc: "Мини/флеш-игры"}
- {id: 29, cat: PC/Games, desc: "Симуляторы"}
- {id: 31, cat: PC/Games, desc: "Авиасимуляторы"}
- {id: 34, cat: PC/Games, desc: "Спортивные симуляторы"}
- {id: 33, cat: PC/Games, desc: "Космические симуляторы"}
- {id: 32, cat: PC/Games, desc: "Гоночные симуляторы"}
- {id: 30, cat: PC/Games, desc: "Другие симуляторы"}
- {id: 35, cat: PC/Games, desc: "Action"}
- {id: 39, cat: PC/Games, desc: "FPS (1st Person)"}
- {id: 38, cat: PC/Games, desc: "TPS (3rd Person)"}
- {id: 37, cat: PC/Games, desc: "Stealth Action"}
- {id: 36, cat: PC/Games, desc: "Тактические шутеры"}
- {id: 40, cat: PC/Games, desc: "RPG"}
- {id: 41, cat: PC/Games, desc: "Эротические игры"}
- {id: 43, cat: PC/Games, desc: "Эротические"}
- {id: 42, cat: PC/Games, desc: "Хентайные"}
- {id: 44, cat: PC/Games, desc: "Многопользовательские игры"}
- {id: 45, cat: PC/Games, desc: "MMORPG"}
- {id: 46, cat: PC/Games, desc: "Для самых маленьких"}
# Games for Consoles
# Игры для Консолей
- {id: 69, cat: Console/Xbox, desc: "Xbox"}
- {id: 86, cat: Console/Xbox 360, desc: "XBox360 | Игры"}
- {id: 646, cat: Console/Xbox 360, desc: "XBox360 | JTAG"}
- {id: 87, cat: Console/Xbox 360, desc: "XBox360 | 360E"}
- {id: 89, cat: Console/Xbox 360, desc: "XBox360 | Demo"}
- {id: 612, cat: Console/Xbox 360, desc: "XBox360 | Live"}
- {id: 614, cat: Console/Xbox 360, desc: "XBox360 | Soft"}
- {id: 88, cat: Console/Xbox, desc: "XBox | Игры"}
- {id: 85, cat: Console/Xbox, desc: "Прочее | Архив (XBox)"}
- {id: 70, cat: Console/PSP, desc: "PlayStation"}
- {id: 910, cat: Console/PS4, desc: "PS4 | Игры"}
- {id: 911, cat: Console/PS4, desc: "PS4 | Сцена"}
- {id: 689, cat: Console/PS3, desc: "PS3 | Игры"}
- {id: 818, cat: Console/PS3, desc: "PS3 | Сцена"}
- {id: 696, cat: Console/PSP, desc: "PSN | Игры"}
- {id: 853, cat: Console/PS3, desc: "PS3 | Emulation"}
- {id: 904, cat: Console/PS Vita, desc: "PS Vita | Игры"}
- {id: 102, cat: Console/PSP, desc: "PSP | Игры"}
- {id: 103, cat: Console/PS3, desc: "PS2 | Игры"}
- {id: 104, cat: Console/PSP, desc: "PSX | Игры"}
- {id: 435, cat: Console/PSP, desc: "PSP | Сцена"}
- {id: 105, cat: Console/PSP, desc: "PSP | PSX-PSP"}
- {id: 690, cat: Console/PS3, desc: "PS3 | Прочее"}
- {id: 178, cat: Console/PSP, desc: "PSP | Прочее"}
- {id: 101, cat: Console/PSP, desc: "Архив (PS)"}
- {id: 78, cat: Console/NDS, desc: "Nintendo"}
- {id: 148, cat: Console/NDS, desc: "Архив (Nintendo)"}
- {id: 116, cat: Console/NDS, desc: "NDS | Игры"}
- {id: 885, cat: Console/3DS, desc: "3DS | Игры"}
- {id: 912, cat: Console, desc: "Switch | Игры"}
- {id: 115, cat: Console/Wii, desc: "Wii | Игры"}
- {id: 899, cat: Console/WiiU, desc: "Wii U | Игры"}
- {id: 900, cat: Console/WiiU, desc: "Wii U | Сцена"}
- {id: 381, cat: Console/Wiiware/VC, desc: "WiiWare | Игры"}
- {id: 382, cat: Console, desc: "GameCube | Игры"}
- {id: 349, cat: Console, desc: "Sega"}
- {id: 350, cat: Console, desc: "Dreamcast | Игры"}
- {id: 351, cat: Console, desc: "Saturn | Игры"}
- {id: 352, cat: Console, desc: "Игры для старых консолей"}
- {id: 390, cat: Console, desc: "Коллекции (игры для разных платформ)"}
# Games for macOS and Linux
# Игры для macOS и Linux
- {id: 936, cat: PC/Games, desc: "Горячие новинки игр для macOS и Linux"}
- {id: 129, cat: PC/Games, desc: "Игры для Linux от R.G. GOGFAN"}
- {id: 874, cat: PC/Games, desc: "[Linux] Аркады от R.G. GOGFAN"}
- {id: 695, cat: PC/Games, desc: "[Linux] Приключения и квесты от R.G. GOGFAN"}
- {id: 873, cat: PC/Games, desc: "[Linux] Стратегии от R.G. GOGFAN"}
- {id: 872, cat: PC/Games, desc: "[Linux] Симуляторы от R.G. GOGFAN"}
- {id: 871, cat: PC/Games, desc: "[Linux] Action от R.G. GOGFAN"}
- {id: 932, cat: PC/Games, desc: "[Linux] RPG от R.G. GOGFAN"}
- {id: 861, cat: PC/Games, desc: "Игры для macOS от R.G. GOGFAN"}
- {id: 862, cat: PC/Games, desc: "[macOS] Аркады от R.G. GOGFAN"}
- {id: 875, cat: PC/Games, desc: "[macOS] Приключения и квесты от R.G. GOGFAN"}
- {id: 876, cat: PC/Games, desc: "[macOS] Стратегии от R.G. GOGFAN"}
- {id: 877, cat: PC/Games, desc: "[macOS] Симуляторы от R.G. GOGFAN"}
- {id: 878, cat: PC/Games, desc: "[macOS] Action от R.G. GOGFAN"}
- {id: 933, cat: PC/Games, desc: "[macOS] RPG от R.G. GOGFAN"}
# Cinema
# Кинематограф
- {id: 429, cat: Movies, desc: "Новинки кинематографа"}
- {id: 886, cat: Movies/3D, desc: "Новинки (3D)"}
- {id: 703, cat: Movies, desc: "Экранки и Low-рипы (CAMRip, TS, WEBRip)"}
- {id: 430, cat: Movies, desc: "Новинки 2018-2019 (Rips)"}
- {id: 431, cat: Movies/WEBDL, desc: "Новинки 2018-2019 (Web-DL, HD Rips)"}
- {id: 934, cat: Movies/BluRay, desc: "Новинки 2018-2019 (Blu-Ray и BDRemux)"}
- {id: 908, cat: Movies, desc: "Экранки и Low-рипы с рекламой"}
- {id: 909, cat: Movies/HD, desc: "Новинки 2018-2019 (HD и HD Rips) с рекламой"}
- {id: 74, cat: Movies/Foreign, desc: "Зарубежное кино"}
- {id: 121, cat: Movies/BluRay, desc: "Зарубежное кино | Blu-Ray и BDRemux"}
- {id: 122, cat: Movies/HD, desc: "Зарубежное кино | HD Rips"}
- {id: 123, cat: Movies/DVD, desc: "Зарубежное кино | DVD"}
- {id: 124, cat: Movies/Foreign, desc: "Зарубежное кино | Rips"}
- {id: 75, cat: Movies, desc: "Отечественное кино"}
- {id: 127, cat: Movies/BluRay, desc: "Отечественное кино | Blu-Ray и BDRemux"}
- {id: 128, cat: Movies/HD, desc: "Отечественное кино | HD Rips"}
- {id: 130, cat: Movies/DVD, desc: "Российское кино | DVD"}
- {id: 131, cat: Movies, desc: "Российское кино | Rips"}
- {id: 133, cat: Movies/DVD, desc: "Советское кино | DVD"}
- {id: 135, cat: Movies, desc: "Советское кино | Rips"}
- {id: 869, cat: Movies/3D, desc: "3D"}
- {id: 161, cat: TV/FOREIGN, desc: "Зарубежные сериалы"}
- {id: 160, cat: TV, desc: "Отечественные cериалы"}
- {id: 320, cat: TV, desc: "Мультфильмы"}
- {id: 938, cat: TV/HD, desc: "Мультфильмы | Blu-Ray и BDRemux"}
- {id: 324, cat: TV/HD, desc: "Мультфильмы | HD Rips"}
- {id: 325, cat: TV/SD, desc: "Мультфильмы | DVD"}
- {id: 326, cat: TV, desc: "Отечественные мультфильмы | Rips"}
- {id: 327, cat: TV, desc: "Отечественные короткометражные мультфильмы"}
- {id: 328, cat: TV, desc: "Зарубежные мультфильмы | Rips"}
- {id: 329, cat: TV, desc: "Зарубежные короткометражные мультфильмы"}
- {id: 330, cat: TV, desc: "Сборники мультфильмов"}
- {id: 321, cat: TV, desc: "Мультсериалы"}
- {id: 162, cat: TV/Documentary, desc: "Документальные фильмы и телепередачи"}
- {id: 392, cat: TV, desc: "Развлекательные телепередачи и шоу"}
# Anime
# Аниме
- {id: 693, cat: TV/Anime, desc: "Аниме (Основной)"}
- {id: 684, cat: TV/Anime, desc: "Аниме (DVD)"}
- {id: 677, cat: TV/Anime, desc: "Аниме DVD [Бутлег]"}
- {id: 96, cat: TV/Anime, desc: "Аниме DVD [Лицензии]"}
- {id: 678, cat: TV/Anime, desc: "Аниме (HD и Blu-ray)"}
- {id: 660, cat: TV/Anime, desc: "Аниме Blu-ray и Remux"}
- {id: 95, cat: TV/Anime, desc: "Аниме HD Rips"}
- {id: 106, cat: TV/Anime, desc: "Аниме Манга и прочий арт"}
- {id: 109, cat: TV/Anime, desc: "Аниме Манга"}
- {id: 107, cat: TV/Anime, desc: "Аниме Обои, артбуки и др."}
- {id: 685, cat: TV/Anime, desc: "Аниме Азиатские мультфильмы"}
- {id: 687, cat: TV/Anime, desc: "Аниме DVD"}
- {id: 686, cat: TV/Anime, desc: "Аниме Rips"}
- {id: 688, cat: TV/Anime, desc: "Аниме HD Rips"}
- {id: 680, cat: TV/Anime, desc: "Аниме (Хентай)"}
- {id: 681, cat: TV/Anime, desc: "Аниме Censored"}
- {id: 682, cat: TV/Anime, desc: "Аниме UnCensored"}
- {id: 683, cat: TV/Anime, desc: "Аниме PtCensored"}
- {id: 697, cat: TV/Anime, desc: "Аниме Манга, обои, артбуки и др."}
# Music and Music Video
# Музыка и Музыкальное видео
- {id: 451, cat: Audio/Lossless, desc: "Классическая музыка (lossless)"}
- {id: 452, cat: Audio/Lossless, desc: "Классическая музыка в современной обработке (lossless)"}
- {id: 453, cat: Audio/MP3, desc: "Классическая музыка (mp3)"}
- {id: 454, cat: Audio/MP3, desc: "Классическая музыка в современной обработке (mp3)"}
- {id: 455, cat: Audio/Video, desc: "Классическая музыка (video)"}
- {id: 457, cat: Audio/Lossless, desc: "Зарубежный Jazz, Blues (lossless)"}
- {id: 458, cat: Audio/Lossless, desc: "Отечественный Jazz, Blues (lossless)"}
- {id: 459, cat: Audio/MP3, desc: "Зарубежный Jazz, Blues (mp3)"}
- {id: 460, cat: Audio/MP3, desc: "Отечественный Jazz, Blues (mp3)"}
- {id: 461, cat: Audio/Video, desc: "Jazz, Blues (video)"}
- {id: 463, cat: Audio/Lossless, desc: "Зарубежный Reggae, Ska, Dub (lossless)"}
- {id: 464, cat: Audio/Lossless, desc: "Отечественный Reggae, Ska, Dub (lossless)"}
- {id: 465, cat: Audio/MP3, desc: "Зарубежный Reggae, Ska, Dub (mp3)"}
- {id: 466, cat: Audio/MP3, desc: "Отечественный Reggae, Ska, Dub (mp3)"}
- {id: 467, cat: Audio/Video, desc: "Reggae, Ska, Dub (video)"}
- {id: 469, cat: Audio/Lossless, desc: "Rосk (losslеss)"}
- {id: 470, cat: Audio/Lossless, desc: "Mеtаl (losslеss)"}
- {id: 471, cat: Audio/Lossless, desc: "Аltеrnаtivе, Рunk, Indереndеnt (lоsslеss)"}
- {id: 472, cat: Audio/MP3, desc: "Rосk (mр3)"}
- {id: 473, cat: Audio/MP3, desc: "Mеtаl (mр3)"}
- {id: 474, cat: Audio/MP3, desc: "Аltеrnаtivе, Рunk, Indереndеnt (mр3)"}
- {id: 475, cat: Audio/Video, desc: "Зарубежный Rock (video)"}
- {id: 477, cat: Audio/Lossless, desc: "Rосk, Punk, Alternative (losslеss)"}
- {id: 478, cat: Audio, desc: "Mеtаl (losslеss)"}
- {id: 479, cat: Audio/MP3, desc: "Rосk, Punk, Alternative (mр3)"}
- {id: 480, cat: Audio/MP3, desc: "Mеtаl (mр3)"}
- {id: 481, cat: Audio/Video, desc: "Отечественный Rock (video)"}
- {id: 483, cat: Audio/Lossless, desc: "Зарубежная Поп-музыка (lossless)"}
- {id: 484, cat: Audio/Lossless, desc: "Отечественная Поп-музыка (lossless)"}
- {id: 485, cat: Audio/Lossless, desc: "Eurodance, Technopop, Disco (lossless)"}
- {id: 486, cat: Audio/MP3, desc: "Зарубежная Поп-музыка (mp3)"}
- {id: 487, cat: Audio/MP3, desc: "Отечественная Поп-музыка (mp3)"}
- {id: 488, cat: Audio/MP3, desc: "Eurodance, Technopop, Disco (mp3)"}
- {id: 489, cat: Audio/MP3, desc: "Поп-музыка, Eurodance, Disco (официальные сборники) (mp3)"}
- {id: 490, cat: Audio/Video, desc: "Поп-музыка, Eurodance, Disco (video)"}
- {id: 492, cat: Audio/Lossless, desc: "Фольклор, Народная и Этническая музыка (lossless)"}
- {id: 493, cat: Audio/MP3, desc: "Фольклор, Народная и Этническая музыка (mp3)"}
- {id: 494, cat: Audio/Video, desc: "Фольклор, Народная и Этническая музыка (video)"}
- {id: 496, cat: Audio/Lossless, desc: "NewAge, Meditative (lossless)"}
- {id: 497, cat: Audio/Lossless, desc: "Flamenco, Акустическая гитара (lossless)"}
- {id: 498, cat: Audio/MP3, desc: "NewAge, Meditative (mp3)"}
- {id: 499, cat: Audio/MP3, desc: "Flamenco, Акустическая гитара (mp3)"}
- {id: 500, cat: Audio/Video, desc: "New Age, Relax, Meditative &amp; Flamenco (video)"}
- {id: 501, cat: Audio, desc: "Звуки природы"}
- {id: 502, cat: Audio, desc: сихоактивныe аудиопрограммы"}
- {id: 504, cat: Audio/Lossless, desc: "Зарубежный Rap, Hip-Hop, R&#039;n&#039;B (lossless)"}
- {id: 505, cat: Audio/Lossless, desc: "Отечественный Rap, Hip-Hop, R&#039;n&#039;B (lossless)"}
- {id: 506, cat: Audio/MP3, desc: "Зарубежный Rap, Hip-Hop, R&#039;n&#039;B (mp3)"}
- {id: 507, cat: Audio/MP3, desc: "Отечественный Rap, Hip-Hop, R&#039;n&#039;B (mp3)"}
- {id: 508, cat: Audio/Video, desc: "Rap, Hip-Hop, R&#039;n&#039;B (video)"}
- {id: 510, cat: Audio/Lossless, desc: "Trance, Goa Trance, Psy-Trance, PsyChill, Ambient Dub (lossl.."}
- {id: 511, cat: Audio/Lossless, desc: "House, Techno, Hardcore, Hardstyle, Jumpstyle (lossless)"}
- {id: 512, cat: Audio/Lossless, desc: "Drum &amp; Bass, Jungle, Breakbeat, Dubstep, IDM (lossless)"}
- {id: 513, cat: Audio/Lossless, desc: "Chillout, Lounge, Downtempo, Trip-Hop (lossless)"}
- {id: 514, cat: Audio/Lossless, desc: "Traditional Electronic, Ambient, Experimental (lossless)"}
- {id: 515, cat: Audio, desc: "Industrial, Noise, EBM, Dark Electro, Aggrotech, Synthpop, N.."}
- {id: 516, cat: Audio/MP3, desc: "Trance, Goa Trance, Psy-Trance, PsyChill, Ambient Dub (mp3)"}
- {id: 517, cat: Audio/MP3, desc: "House, Techno, Hardcore, Hardstyle, Jumpstyle (mp3)"}
- {id: 518, cat: Audio/MP3, desc: "Drum &amp; Bass, Jungle, Breakbeat, Dubstep, IDM (mp3)"}
- {id: 519, cat: Audio/MP3, desc: "Chillout, Lounge, Downtempo, Trip-Hop (mp3)"}
- {id: 520, cat: Audio/MP3, desc: "Traditional Electronic, Ambient, Experimental (mp3)"}
- {id: 521, cat: Audio, desc: "Industrial, Noise, EBM, Dark Electro, Aggrotech, Synthpop, N.."}
- {id: 522, cat: Audio/Video, desc: "Электронная музыка (video)"}
- {id: 524, cat: Audio/Lossless, desc: "Зарубежный шансон (lossless)"}
- {id: 525, cat: Audio/Lossless, desc: "Отечественный шансон (lossless)"}
- {id: 526, cat: Audio/Lossless, desc: "Авторская песня (lossless)"}
- {id: 527, cat: Audio/Lossless, desc: "Военная песня (lossless)"}
- {id: 528, cat: Audio/MP3, desc: "Зарубежный шансон (mp3)"}
- {id: 529, cat: Audio/MP3, desc: "Отечественный шансон (mp3)"}
- {id: 530, cat: Audio, desc: "Отечественный шансон (официальные сборники) (mp3)"}
- {id: 531, cat: Audio/MP3, desc: "Авторская песня (mp3)"}
- {id: 532, cat: Audio/MP3, desc: "Военная песня (mp3)"}
- {id: 533, cat: Audio/Video, desc: "Шансон, Авторская и Военная песня (video)"}
- {id: 402, cat: Audio/Lossless, desc: "Саундтреки к фильмам и мультфильмам (lossless)"}
- {id: 403, cat: Audio/Lossless, desc: "Саундтреки к аниме (lossless)"}
- {id: 399, cat: Audio/Lossless, desc: "Саундтреки к играм (lossless)"}
- {id: 401, cat: Audio/MP3, desc: "Саундтреки к фильмам и мультфильмам (mp3)"}
- {id: 404, cat: Audio/MP3, desc: "Саундтреки к аниме (mp3)"}
- {id: 400, cat: Audio/MP3, desc: "Саундтреки к играм (mp3)"}
- {id: 535, cat: Audio/Lossless, desc: "Зарубежная музыка других жанров (lossless)"}
- {id: 536, cat: Audio/Lossless, desc: "Отечественная музыка других жанров (lossless)"}
- {id: 537, cat: Audio/MP3, desc: "Зарубежная музыка других жанров (mp3)"}
- {id: 538, cat: Audio/MP3, desc: "Отечественная музыка других жанров (mp3)"}
- {id: 539, cat: Audio/Video, desc: "Музыка других жанров (video)"}
- {id: 540, cat: Audio, desc: "Караоке и минусовки (фонограммы)"}
- {id: 541, cat: Audio, desc: "Сборники песен для детей"}
- {id: 542, cat: Audio, desc: "Неофициальные и внежанровые сборники"}
- {id: 543, cat: Audio, desc: "Неофициальные кинематографические видео"}
- {id: 545, cat: Audio, desc: "Многоканальная музыка"}
- {id: 546, cat: Audio, desc: "Собственные оцифровки"}
- {id: 547, cat: Audio, desc: "Hi-Res stereo"}
# Software
# Программное обеспечение
- {id: 202, cat: PC/Mac, desc: "Mac OS (для Apple Macintosh)"}
- {id: 203, cat: PC/Mac, desc: "Mac OS (для РС-Hackintosh)"}
- {id: 204, cat: PC/Mac, desc: "Программы для просмотра и обработки видео Mac OS"}
- {id: 205, cat: PC/Mac, desc: "Программы для создания и обработки графики Mac OS"}
- {id: 206, cat: PC/Mac, desc: "Аудио редакторы и конверторы для Mac OS"}
- {id: 207, cat: PC/Mac, desc: "Системные программы для Mac OS"}
- {id: 208, cat: PC/Mac, desc: "Другие программы для Mac OS"}
- {id: 215, cat: PC, desc: "Операционные системы (Unix и Unix-подобные)"}
- {id: 216, cat: PC, desc: "Программное обеспечение для Unix и Unix-подобных OS"}
- {id: 217, cat: PC, desc: "Другие OS и программное обеспечение под них"}
- {id: 227, cat: PC, desc: "Настольные OS, выпущенные до 2001 года (Microsoft Windows OS.."}
- {id: 228, cat: PC, desc: "Windows XP"}
- {id: 229, cat: PC, desc: "Windows Vista"}
- {id: 230, cat: PC, desc: "Windows 7"}
- {id: 879, cat: PC, desc: "Windows 8"}
- {id: 905, cat: PC, desc: "Windows 10"}
- {id: 698, cat: PC, desc: "Сборки (Microsoft Windows XP)"}
- {id: 701, cat: PC, desc: "Сборки (Microsoft Windows 7)"}
- {id: 880, cat: PC, desc: "Сборки (Microsoft Windows 8)"}
- {id: 906, cat: PC, desc: "Сборки (Microsoft Windows 10)"}
- {id: 231, cat: PC, desc: "Серверные (Microsoft Windows OS)"}
- {id: 232, cat: PC, desc: "Разное (Microsoft Windows OS)"}
- {id: 236, cat: PC, desc: "Работа с жёстким диском"}
- {id: 237, cat: PC, desc: "Резервное копирование"}
- {id: 240, cat: PC, desc: "Архиваторы и файловые менеджеры"}
- {id: 239, cat: PC, desc: "Программы для настройки и оптимизации ОС"}
- {id: 241, cat: PC, desc: "Сервисное обслуживание компьютера"}
- {id: 242, cat: PC, desc: "Работа с носителями информации"}
- {id: 243, cat: PC, desc: "Информация и диагностика"}
- {id: 244, cat: PC, desc: "Программы для интернет и сетей"}
- {id: 245, cat: PC, desc: "Антивирусы и Файерволы"}
- {id: 246, cat: PC, desc: "Программы для защиты информации"}
- {id: 247, cat: PC, desc: "Драйвера"}
- {id: 248, cat: PC, desc: "Серверное ПО для Windows"}
- {id: 249, cat: PC, desc: "Изменение интерфейса ОС Windows"}
- {id: 250, cat: PC, desc: "Скринсейверы"}
- {id: 251, cat: PC, desc: "Разное (Системные программы под Windows)"}
- {id: 409, cat: PC, desc: "Системы автоматизации проектных работ (САПР)"}
- {id: 607, cat: PC, desc: "Программы для архитекторов и дизайнеров интерьеров"}
- {id: 593, cat: PC, desc: "Офисные программы и системы"}
- {id: 595, cat: PC, desc: "Системы для научной работы"}
- {id: 594, cat: PC, desc: "Системы для бизнеса"}
- {id: 257, cat: PC, desc: "Каталогизаторы и просмотрщики графики"}
- {id: 258, cat: PC, desc: "Аудио- и видео-, CD- проигрыватели и каталогизаторы"}
- {id: 259, cat: PC, desc: "Программы для интернет и сетей"}
- {id: 260, cat: PC, desc: "Распознавание текста, звука и синтез речи"}
- {id: 261, cat: PC, desc: "Словари и переводчики"}
- {id: 262, cat: PC, desc: "Программное обеспечение для автолюбителей"}
- {id: 263, cat: PC, desc: "Медицинское программное обеспечение"}
- {id: 264, cat: PC, desc: "Справочные системы и карты"}
- {id: 265, cat: PC, desc: "Разное (Пользовательские программы)"}
- {id: 268, cat: PC, desc: "WYSIWYG Редакторы для веб-диза"}
- {id: 269, cat: PC, desc: "Текстовые редакторы с подсветкой"}
- {id: 270, cat: PC, desc: "Среды программирования, компиляторы и вспомогательные програ.."}
- {id: 271, cat: PC, desc: "Компоненты для сред программирования"}
- {id: 272, cat: PC, desc: "Системы управления базами данных (СУБД)"}
- {id: 273, cat: PC, desc: "Скрипты и шаблоны"}
- {id: 274, cat: PC, desc: "Разное (Веб-разработка и программирование)"}
- {id: 278, cat: PC, desc: "Программные комплекты"}
- {id: 279, cat: PC, desc: "Плагины для программ компании Adobe"}
- {id: 280, cat: PC, desc: "Графические редакторы"}
- {id: 281, cat: PC, desc: "Программы для верстки, печати и работы со шрифтами"}
- {id: 282, cat: PC, desc: "3D моделирование, рендеринг и плагины для них"}
- {id: 283, cat: PC, desc: "Анимация"}
- {id: 284, cat: PC, desc: "Создание DVD и BD дисков"}
- {id: 285, cat: PC, desc: "Редакторы видео"}
- {id: 286, cat: PC, desc: "Видео- Аудио- конверторы"}
- {id: 287, cat: PC, desc: "Работа со звуком"}
- {id: 290, cat: PC, desc: "Разное (Программы для работы с мультимедиа и 3D)"}
- {id: 293, cat: PC, desc: "Растровые и Векторные Клипарты"}
- {id: 294, cat: PC, desc: "Заготовки, виньетки, рамки"}
- {id: 295, cat: PC, desc: "Стили, кисти, формы и узоры для Adobe Photoshop"}
- {id: 296, cat: PC, desc: "Текстуры и материалы"}
- {id: 297, cat: PC, desc: "3D графика"}
- {id: 298, cat: PC, desc: "Футажи"}
- {id: 299, cat: PC, desc: "Звуковые эффекты"}
- {id: 300, cat: PC, desc: "Библиотеки сэмплов"}
- {id: 301, cat: PC, desc: "Шрифты"}
- {id: 302, cat: PC, desc: "Photostoсks"}
- {id: 303, cat: PC, desc: "Разное (Материалы для мультимедиа и дизайна)"}
- {id: 597, cat: PC, desc: "Справочно-правовые Системы"}
- {id: 600, cat: PC, desc: "Консультант Плюс"}
- {id: 599, cat: PC, desc: "Гарант"}
- {id: 601, cat: PC, desc: "Кодекс"}
- {id: 623, cat: PC, desc: "Мобильные телефоны"}
- {id: 624, cat: PC, desc: "КПК"}
- {id: 625, cat: PC, desc: "Навигаторы"}
- {id: 626, cat: PC, desc: "Карты для навигаторов"}
- {id: 627, cat: PC, desc: "Плееры"}
- {id: 628, cat: PC, desc: "Разное (Мобильные устройства и КПК)"}
- {id: 622, cat: PC/Phone-IOS, desc: "Apple Mobile Device Software"}
- {id: 667, cat: PC/Phone-IOS, desc: "Прошивки (iPhone/iPod Touch/iPad)"}
- {id: 668, cat: PC/Phone-IOS, desc: "Программы (iPhone/iPod Touch/iPad)"}
- {id: 669, cat: PC/Phone-IOS, desc: "Игры (iPhone/iPod Touch/iPad)"}
- {id: 670, cat: PC/Phone-IOS, desc: "Видео (iPhone/iPod Touch/iPad)"}
- {id: 672, cat: PC/Phone-IOS, desc: "Разное (iPhone/iPod Touch/iPad)"}
- {id: 671, cat: PC/Phone-IOS, desc: "Музыка (iPhone/iPod Touch/iPad)"}
- {id: 639, cat: PC, desc: "Обучающие видеоматериалы"}
- {id: 640, cat: PC, desc: "Мультимедийные материалы"}
- {id: 642, cat: PC, desc: "Разное"}
# Library
# Библиотека
- {id: 717, cat: Books, desc: "Аудиокниги"}
- {id: 740, cat: Books, desc: "Проект S.T.A.L.K.E.R."}
- {id: 738, cat: Books, desc: "Детектив / боевик"}
- {id: 739, cat: Books, desc: "Фантастика / фэнтези / мистика / ужасы"}
- {id: 836, cat: Books, desc: "Роман / комедийные произведения / приключения"}
- {id: 838, cat: Books, desc: "Классическая литература и современная проза"}
- {id: 837, cat: Books, desc: "Образование и Право"}
- {id: 843, cat: Books, desc: "Разное"}
- {id: 713, cat: Books, desc: "Художественная литература"}
- {id: 724, cat: Books, desc: "Детектив / боевик"}
- {id: 728, cat: Books, desc: "Фантастика / фэнтези / мистика / ужасы"}
- {id: 725, cat: Books, desc: "Роман / приключения / драма"}
- {id: 727, cat: Books, desc: "Комедийные произведения"}
- {id: 723, cat: Books, desc: "Историческая книга"}
- {id: 721, cat: Books, desc: "Классическая литература и современная проза"}
- {id: 722, cat: Books, desc: "Поэзия"}
- {id: 844, cat: Books, desc: "Разное"}
- {id: 718, cat: Books, desc: "Журналы"}
- {id: 763, cat: Books, desc: "Эротические журналы"}
- {id: 715, cat: Books, desc: "Компьютерная литература"}
- {id: 839, cat: Books, desc: "Научная и тех.литература"}
- {id: 719, cat: Books, desc: "Образование, Право и Психология"}
- {id: 846, cat: Books, desc: "Сексология"}
- {id: 840, cat: Books, desc: "Военное дело"}
- {id: 842, cat: Books, desc: "Спорт и физическое воспитание"}
- {id: 841, cat: Books, desc: "Хобби"}
- {id: 716, cat: Books, desc: "Дом и семейный очаг"}
- {id: 714, cat: Books, desc: "Книги для малышей и их родителей"}
- {id: 845, cat: Books, desc: "Комиксы"}
- {id: 741, cat: Books, desc: "Разное"}
# Technical assistance
# Техническая помощь
- {id: 578, cat: Other, desc: "µTorrent и BitTorrent 4.x, 5.x, 6.x"}
# Release - groups
# Релиз - группы
- {id: 378, cat: Other, desc: "Анонсы"}
# Miscellanea
# Разное
- {id: 644, cat: Other, desc: "Разное"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
login:
path: login.php
method: form
form: form[action$="/login.php"]
inputs:
login_username: "{{ .Config.username }}"
login_password: "{{ .Config.password }}"
autologin: 1
redirect: "index.php"
error:
- selector: h4:contains("Вы ввели")
test:
path: index.php
selector: a[href="./login.php?logout=1"]
search:
paths:
- path: tracker.php
inputs:
$raw: "{{ if .Categories }}{{ range .Categories }}f[]={{.}}&{{end}}{{else}}f[]=-1{{end}}"
nm: "{{ .Keywords }}"
o: 1
s: 2
tm: -1
sns: -1
rows:
selector: tr[id^="tor_"]
fields:
title:
selector: a.genmed
filters:
- name: replace
args: [" / ", " "]
- name: replace
args: ["Кураж-Бамбей", "kurazh"]
- name: replace
args: ["Кубик в Кубе", "Kubik"]
- name: re_replace
args: ["((\\([12][0-9]{3}\\))(.+)\\([Сс]езон\\s+(\\d+).+[Сс]ери[ия]\\s+(?:(\\d+-*\\d*).*\\d+)*\\))", " - S$4E$5 - rus $3"]
- name: re_replace
args: ["(\\([А-Яа-я\\W]+\\))|(^[А-Яа-я\\W\\d]+\\/ )|([а-яА-Я \\-]+,+)|([а-яА-Я]+)", "{{ if .Config.striprussian }}{{ else }}$1$2$3$4{{ end }}"]
- name: replace
args: ["-Rip", "Rip"]
- name: replace
args: ["WEB-DL", "WEBDL"]
- name: replace
args: ["WEBDLRip", "WEBDL"]
- name: replace
args: ["HDTVRip", "HDTV"]
details:
selector: a.genmed
attribute: href
download:
optional: true
selector: a[href^="./download.php?id="]
attribute: href
category:
selector: td a.gen
attribute: href
filters:
- name: querystring
args: f
size:
selector: td:nth-child(6) > u
date:
selector: td:last-child > u
seeders:
selector: td.seedmed > b
leechers:
selector: td.leechmed > b
downloadvolumefactor:
case:
img[src="images/tor_gold.gif"]: "0"
img[src="images/tor_silver.gif"]: "0.5"
"*": "1"
uploadvolumefactor:
text: "1"

View File

@@ -0,0 +1,99 @@
---
site: teamhd
name: TeamHD
description: "TeamHD is a RUSSIAN Private Torrent Tracker for HD MOVIES / TV"
language: ru-ru
type: private
encoding: UTF-8
links:
- https://teamhd.org/
caps:
categorymappings:
- {id: 29, cat: Movies/HD, desc: "Movies Фильмы"}
- {id: 25, cat: TV/Anime, desc: "Cartoons Мультфильмы"}
- {id: 26, cat: Audio/Lossless, desc: "Hi-Res Audio"}
- {id: 27, cat: Other, desc: "Demo Демо"}
- {id: 28, cat: TV/Documentary, desc: "Documentary Документальное кино"}
- {id: 30, cat: Audio/Video, desc: "Music Video Музыкальное видео"}
- {id: 31, cat: TV/Sport, desc: "Sport Спорт"}
- {id: 32, cat: TV/HD, desc: "TV Show ТВ Шоу"}
- {id: 33, cat: TV/HD, desc: "Soaps Сериалы"}
- {id: 34, cat: TV/HD, desc: "Other"}
- {id: 35, cat: Movies, desc: "Content w/o subs Контент без перевода"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: div.error
test:
path: index.php
selector: a[href="/logout.php"]
search:
paths:
- path: browse
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
incldead: 0
free: 0
year: ""
rows:
selector: table.browse > tbody > tr
fields:
download:
selector: a[href^="download.php?id="]
attribute: href
title:
selector: a[href^="/details/id"]
details:
selector: a[href^="/details/id"]
attribute: href
category:
selector: a[href*="/browse/cat"]
attribute: href
filters:
- name: regexp
args: (\d+)
date:
selector: td > div > small
filters:
- name: dateparse
args: "02-01-2006 15:04"
seeders:
selector: td:nth-child(4)
filters:
- name: split
args: ["|", 0]
leechers:
selector: td:nth-child(4)
filters:
- name: split
args: ["|", 1]
grabs:
selector: td:nth-child(5) strong
filters:
- name: regexp
args: (\d+)
size:
selector: td:nth-child(5)
remove: strong
downloadvolumefactor:
case:
a[href^="/details/id"][style="color:#f2b101"]: "0"
a[href^="/details/id"][style="color:#828b8b"]: "0.5"
"*": "1"
uploadvolumefactor:
case:
"*": "1"

View File

@@ -20,6 +20,7 @@
- {id: 5, cat: PC, desc: "Apps"}
- {id: 6, cat: Other, desc: "Misc"}
- {id: 7, cat: XXX, desc: "XXX"}
- {id: 8, cat: Movies, desc: "Kids"}
modes:
search: [q]
@@ -56,6 +57,7 @@
inputs:
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
description: ""
uploader: ""
imdb: "{{ .Query.IMDBIDShort }}"
tvdb: ""
@@ -81,17 +83,24 @@
details:
selector: a.view-torrent
attribute: href
banner:
optional: true
selector: div.torrent-poster img
attribute: src
filters:
- name: replace
args: ["https://via.placeholder.com/600x900/212121/FFFFFF/?text=NOCOVER", ""]
size:
selector: td:nth-child(5)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
selector: td:nth-last-child(4)
grabs:
selector: td:nth-child(6)
selector: td:nth-last-child(3)
filters:
- name: regexp
args: ([\d\.]+)
seeders:
selector: td:nth-last-child(2)
leechers:
selector: td:nth-last-child(1)
date:
selector: time
filters:
@@ -120,12 +129,14 @@
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
downloadvolumefactor:
case:
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech
"i[data-original-title=\"Freeleech\"]": "0" # Freeleech
"i[data-original-title=\"Global freeleech\"]": "0" # Global Freeleech
"i[data-original-title=\"Featured\"]": "0" # Featured
"*": "1"
uploadvolumefactor:
case:
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
"i[data-original-title=\"Featured\"]": "2" # Featured
"*": "1"
# UNIT3D

View File

@@ -31,6 +31,8 @@
paths:
- path: src/releaselist.php
method: post
headers:
Referer: ["{{.Config.sitelink}}?releaselist"]
inputs:
cat: 0
page: 1

View File

@@ -45,7 +45,7 @@
settings: []
download:
selector: a[href^="/downloading/"]
selector: a.download:contains("le Torrent")
search:
paths:

View File

@@ -7,15 +7,19 @@
encoding: UTF-8
followredirect: true
links:
- https://wvw.torrent9.vc/
- https://ww1.torrent9.lol/
legacylinks:
- https://www.torrents9.pw/
- https://www.torrent9.ch/
- https://www1.torrent9.ch/
- https://www2.torrent9.ch/
- https://wwv.torrent9.vg/
- https://www.torrent9.lol/
- https://www.torrent9.vc/
- https://wvw.torrent9.vc/
- https://www.torrent9.lol/
- https://wvw.torrent9.lol/
- https://wwv.torrent9.lol/
caps:
categorymappings:

View File

@@ -63,7 +63,7 @@
sort: "id"
order: "desc"
rows:
selector: div[class="tgxtablerow clickable-row click"]
selector: div[class="tgxtablerow"]
fields:
title:
selector: div a[href^="/torrent/"]
@@ -77,9 +77,6 @@
details:
selector: div a[href^="/torrent/"]
attribute: href
download:
selector: div a[href*="/get/"]
attribute: href
magnet:
selector: div a[href^="magnet:?"]
attribute: href

View File

@@ -6,6 +6,8 @@
type: public
encoding: UTF-8
links:
- https://gotorrentkitty.cc/
legacylinks:
- http://cntorrentkitty.com/
- http://cntorrentkitty.xyz/

View File

@@ -0,0 +1,71 @@
---
site: torrentquest
name: TorrentQuest
description: "TorrentQuest is a Public torrent Magnet Links search engine"
language: en-us
type: public
encoding: UTF-8
links:
- https://torrentquest.com/
caps:
categories:
"TV": TV
"Movie": Movies
"Music": Audio
"E-Book": Books/Ebook
"Game": PC/Games
"Software": PC
"Other": Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
search:
headers:
# prevent redirect
Accept: ["text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"]
keywordsfilters:
# replace space between keywords with - to prevent 404 Not Found
- name: re_replace
args: [" ", "-"]
- name: tolower
paths:
# return movie results if there are no search parms supplied (for use with the TEST button)
# http://www.magnetdl.com/m/midnight-texas-s01e10/
- path: "{{if .Keywords}}{{ re_replace .Keywords \"(.).*\" \"$1\" }}/{{ .Keywords }}/{{else}}download/movies/{{end}}"
rows:
selector: tr:has(td.m)
fields:
title:
selector: td.n a
attribute: title
category:
optional: true
selector: td[class^="t"]
details:
selector: td.n a
attribute: href
magnet:
selector: td.m a
attribute: href
date:
selector: td:nth-child(3)
filters:
- name: timeago
files:
selector: td:nth-child(5)
size:
selector: td:nth-child(6)
seeders:
selector: td.s
leechers:
selector: td.l
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -10,32 +10,34 @@
caps:
categorymappings:
- {id: 13, cat: PC/0day, desc: "0DAY"}
- {id: 37, cat: TV/Anime, desc: "ANIME/HD"}
- {id: 13, cat: PC/0day, desc: "Apps/0DAY"}
- {id: 37, cat: TV/Anime, desc: "Anime/HD"}
- {id: 9, cat: TV/Anime, desc: "Anime/SD"}
- {id: 1, cat: PC/0day, desc: "Apps"}
- {id: 27, cat: Books, desc: "Bookware"}
- {id: 32, cat: Books/Ebook, desc: "EBOOK"}
- {id: 47, cat: Console/Other, desc: "GAMES/NSW"}
- {id: 60, cat: Console/Other, desc: "GAMES/ATARI"}
- {id: 63, cat: Console/Other, desc: "GAMES/UPDATES"}
- {id: 32, cat: Books/Ebook, desc: "EBooks"}
- {id: 47, cat: Console/Other, desc: "Games/NSW"}
- {id: 60, cat: Console/Other, desc: "Games/ATARI"}
- {id: 63, cat: Console/Other, desc: "Games/UPDATES"}
- {id: 2, cat: PC/Games, desc: "Games/PC"}
- {id: 8, cat: Console/PS3, desc: "Games/PS3"}
- {id: 30, cat: Console/PS4, desc: "GAMES/PS4"}
- {id: 30, cat: Console/PS4, desc: "Games/PS4"}
- {id: 7, cat: Console/PSP, desc: "Games/PSP"}
- {id: 16, cat: Console/Wii, desc: "GAMES/WII"}
- {id: 29, cat: Console/WiiU, desc: "GAMES/WIIU"}
- {id: 17, cat: Console/XBox 360, desc: "GAMES/XBOX360"}
- {id: 16, cat: Console/Wii, desc: "Games/WII"}
- {id: 29, cat: Console/WiiU, desc: "Games/WIIU"}
- {id: 17, cat: Console/XBox 360, desc: "Games/XBOX360"}
- {id: 50, cat: Movies/BluRay, desc: "Movies/Bluray-UHD"}
- {id: 31, cat: Movies/BluRay, desc: "MOVIES/COMPLETE-BLURAY"}
- {id: 3, cat: Movies/DVD, desc: "MOVIES/DVDR"}
- {id: 39, cat: Movies/Foreign, desc: "MOVIES/HD-Foreign"}
- {id: 62, cat: Movies/Foreign, desc: "MOVIES/SD-Foreign"}
- {id: 19, cat: Movies/HD, desc: "MOVIES/X264"}
- {id: 31, cat: Movies/BluRay, desc: "Movies/COMPLETE-BLURAY"}
- {id: 3, cat: Movies/DVD, desc: "Movies/DVDR"}
- {id: 39, cat: Movies/Foreign, desc: "Movies/HD-Foreign"}
- {id: 62, cat: Movies/Foreign, desc: "Movies/SD-Foreign"}
- {id: 19, cat: Movies/HD, desc: "Movies/X264"}
- {id: 49, cat: Movies/HD, desc: "Movies/X265"}
- {id: 25, cat: Movies/SD, desc: "MOVIES/XVID"}
- {id: 6, cat: XXX, desc: "MOVIES/XXX"}
- {id: 25, cat: Movies/SD, desc: "Movies/XVID"}
- {id: 6, cat: XXX, desc: "Movies/XXX"}
- {id: 53, cat: XXX, desc: "Movies/XXX-HD"}
- {id: 57, cat: XXX, desc: "Movies/XXX-PAYSITE"}
- {id: 55, cat: XXX, desc: "Movies/XXX-DVDR"}
- {id: 33, cat: Audio/Lossless, desc: "Music/FLAC"}
- {id: 28, cat: Audio/Other, desc: "Music/MBluRay"}
- {id: 34, cat: Audio/Other, desc: "Music/MDVDR"}
@@ -52,8 +54,8 @@
- {id: 44, cat: TV/HD, desc: "P2P/TV-HD"}
- {id: 51, cat: Movies/HD, desc: "P2P/X265"}
- {id: 41, cat: Movies/SD, desc: "P2P/XVID"}
- {id: 35, cat: TV/Sport, desc: "SPORT"}
- {id: 36, cat: TV/Sport, desc: "SPORT-HD"}
- {id: 35, cat: TV/Sport, desc: "TV/SPORT"}
- {id: 36, cat: TV/Sport, desc: "TV/SPORT-HD"}
- {id: 11, cat: TV/HD, desc: "TV/BluRay"}
- {id: 23, cat: TV/SD, desc: "TV/DVDR"}
- {id: 24, cat: TV/SD, desc: "TV/DVDRIP"}
@@ -75,22 +77,10 @@
- name: password
type: password
label: Password
- name: incldead
type: select
label: "Search Torrents that are:"
default: "0"
options:
"0" : "Active"
"1": "Including Dead"
"2": "Only Dead"
- name: onlyfree
type: checkbox
label: Show only Free torrents
default: false
- name: info
type: info
label: Results Per Page
default: For best results, change the 'Torrents per page' setting to 100 on your 'Torrent Options' from the 'Pers Tools > UserCP' menu on the TorrentSeeds webpage.
default: For best results, change the <b>Torrents per page</b> setting to <b>100</b> on your <b>Torrent</b> tab from the <b>Pers Tools > UserCP</b> menu on the TorrentSeeds webpage.
login:
path: login.php
@@ -108,82 +98,58 @@
search:
paths:
- path: browse.php
- path: browse_elastic.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
searchin: "title"
incldead: "{{ .Config.incldead }}"
"only_free": "{{ if .Config.onlyfree }}1{{else}}0{{end}}"
$raw: "{{range .Categories}}cat[{{.}}]=1&{{end}}"
query: "{{ .Keywords }}"
# name, descr, genre, all
search_in: name
# all, any
search_mode: all
# added, name, year, size, snatched, seeders, leechers, random
order_by: added
# desc, asc
order_way: desc
# advanced disabled
# scene: 1 yes 0 no
# freetorrent: 1 freeleech 2 neutral 3 either 0 normal
# uploader: 1 uploaded 0 member
# archived: 1 yes 0 no
rows:
selector: tr.browse_color, tr[id^="kdescr"]
after: 1
filters:
- name: andmatch
selector: table.torrent-table tr[class]
fields:
category:
selector: td:nth-of-type(1) a
selector: a[href^="/browse_elastic.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: td:nth-of-type(2) a
attribute: onmouseover
filters:
- name: split
args: [">", "1"]
- name: replace
args: ["</b", ""]
title:
selector: a[href^="/details.php?id="]
details:
selector: td:nth-of-type(2) > a[onmouseover]
selector: a[href^="/details.php?id="]
attribute: href
banner:
selector: td:nth-of-type(2) > a[onmouseover]
attribute: onmouseover
filters:
- name: regexp
args: "src=\\\\'(.+?)\\\\'"
- name: replace
args: ["./pic/noposter.png", ""]
download:
selector: td:nth-of-type(3) a
selector: a[href^="/download.php?torrent="]
attribute: href
files:
selector: td:nth-of-type(5)
# 2 flavours of dates
selector: td.torrent-table-files
date:
# Today<br /> 10:20 AM
# Yesterday<br /> 08:03 PM
optional: true
selector: td:nth-child(7):contains("day")
date:
# Feb 14 2019<br /> 10:20 AM
optional: true
selector: td:nth-child(7):not(:contains("day"))
selector: td.torrent-table-added
filters:
- name: dateparse
args: "Jan 2 2006 03:04 pm"
- name: timeago
size:
selector: td:nth-of-type(8)
selector: td.torrent-table-size
grabs:
selector: td:nth-of-type(9)
filters:
- name: regexp
args: "([\\d]+)"
selector: td.torrent-table-snatched
seeders:
selector: td:nth-of-type(10)
selector: td.torrent-table-seeders
leechers:
selector: td:nth-of-type(11)
description:
selector: td[colspan="14"]
filters:
- name: replace
args: ["\n", "<br>\n"]
selector: td.torrent-table-leechers
downloadvolumefactor:
case:
"img[alt=\"Free Torrent\"]": "0"
span.freeleech: "0"
"*": "1"
uploadvolumefactor:
text: "1"

View File

@@ -7,8 +7,6 @@
encoding: UTF-8
links:
- https://www.trancetraffic.com/
certificates:
- 117B89D7C086F3E051F0A5A3576504667402AE52
caps:
categories:

View File

@@ -0,0 +1,117 @@
---
site: uniongang
name: UnionGang
description: "UnionGang is a RUSSIAN Private Torrent Tracker for MOVIES / GENERAL"
language: ru-ru
type: private
encoding: windows-1251
links:
- https://www.uniongang.net/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies SATRip / DVDRip / HDRip"}
- {id: 21, cat: Movies/WEBDL, desc: "Movies WEB-DLRip / WEB-DL"}
- {id: 2, cat: Movies/HD, desc: "Movies x264"}
- {id: 3, cat: Movies/DVD, desc: "Movies DVD5"}
- {id: 4, cat: Movies/DVD, desc: "Movies DVD9"}
- {id: 5, cat: Movies/HD, desc: "Movies BDRemux / 720p / 1080p / Bl"}
- {id: 6, cat: TV, desc: "TV Сериал"}
- {id: 7, cat: TV/Documentary, desc: "TV Документальный"}
- {id: 19, cat: TV/Sport, desc: "TV Спорт"}
- {id: 8, cat: XXX, desc: "XXX Эротика"}
- {id: 9, cat: TV, desc: "Мультфильм"}
- {id: 10, cat: TV, desc: "КВН Юмор"}
- {id: 11, cat: PC, desc: "Игра PC"}
- {id: 13, cat: Audio, desc: "Музыка / Русская"}
- {id: 14, cat: Audio, desc: "Музыка / Зарубежная"}
- {id: 15, cat: Audio/Video, desc: "Видеоклип"}
- {id: 16, cat: Audio/Audiobook, desc: "Аудиокнига"}
- {id: 20, cat: Movies/3D, desc: "Movies 3D"}
- {id: 23, cat: Movies/UHD, desc: "Movies 4K"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: striprussian
type: checkbox
label: Strip Russian Letters
default: false
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:
- path: browse.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
incldead: 1
dsearch: ""
rows:
selector: table.embedded > tbody > tr:has(a[href^="download.php?id="])
fields:
title:
selector: a[href^="/torrent-"]
filters:
- name: re_replace
args: ["(\\([А-Яа-я\\W]+\\))|(^[А-Яа-я\\W\\d]+\\/ )|([а-яА-Я \\-]+,+)|([а-яА-Я]+)", "{{ if .Config.striprussian }}{{ else }}$1$2$3$4{{ end }}"]
details:
selector: a[href^="/torrent-"]
attribute: href
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
download:
selector: a[href^="download.php?id="]
attribute: href
date:
selector: i
filters:
- name: dateparse
args: "2006-01-02 15:04:05"
files:
selector: td:nth-last-child(5)
size:
selector: td:nth-last-child(3)
seeders:
selector: td:nth-last-child(2)
filters:
- name: split
args: [ "|", 0 ]
leechers:
selector: td:nth-last-child(2)
filters:
- name: split
args: [ "|", 1 ]
grabs:
selector: td:nth-last-child(1)
downloadvolumefactor:
case:
img[src="pic/freedownload.gif"]: "0"
img[src="pic/silverdownload.gif"]: "0.5"
"*": "1"
uploadvolumefactor:
text: "1"

View File

@@ -158,15 +158,9 @@
attribute: title
filters:
- name: replace
args: ["FREE LEECH!", "0"]
downloadvolumefactor:
optional: true
selector: img[src$="torrent_multiple_download.png"]
attribute: title
filters:
- name: split
args: [":", 1]
- name: trim
args: ["No cuenta la descarga", "0"]
- name: replace
args: ["Cuenta descarga: 0.5", "0.5"]
uploadvolumefactor:
text: "1"
uploadvolumefactor:
@@ -174,10 +168,9 @@
selector: img[src$="torrent_multiple_upload.png"]
attribute: title
filters:
- name: split
args: [":", 1]
- name: trim
- name: replace
args: ["Cuenta subida por: 2", 2]
minimumratio:
text: "1.0"
minimumseedtime:
text: "259200" # 3 day (72h)
text: "345600" # 4 day (96h)

View File

@@ -15,17 +15,21 @@
- {id: 23 , cat: Movies/3D, desc: "Peliculas - 3D"}
- {id: 17 , cat: Movies/HD, desc: "Peliculas - FullBluray/BDRemux"}
- {id: 29 , cat: Movies/HD, desc: "Peliculas - 1080p x265"}
- {id: 21 , cat: Movies/HD, desc: "Peliculas - 4K"}
- {id: 21 , cat: Movies/UHD, desc: "Peliculas - 4K"}
- {id: 30 , cat: Movies/HD, desc: "Peliculas - MicroHD x265"}
- {id: 35 , cat: TV/HD, desc: "TV/Series - 4K"}
- {id: 35 , cat: TV/UHD, desc: "TV/Series - 4K"}
- {id: 31 , cat: TV/HD, desc: "TV/Series - x265"}
- {id: 25 , cat: TV/HD, desc: "TV/Series - HDTV & WEB-DL 1080p"}
- {id: 37 , cat: TV/Documentary, desc: "Documentales"}
- {id: 41 , cat: TV/Sport, desc: "Deportes"}
- {id: 5 , cat: Movies/HD, desc: "Anime"}
- {id: 5 , cat: TV/Anime, desc: "Anime"}
- {id: 34 , cat: TV/HD, desc: "Dibujos animados"}
- {id: 14 , cat: Audio/MP3, desc: "Música - MP3"}
- {id: 39 , cat: Audio/Lossless, desc: "Música - FLAC"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
login:
path: index.php?page=login

View File

@@ -21,6 +21,8 @@
- {id: 15, cat: Audio/Video, desc: "Concert"}
- {id: 25, cat: PC, desc: "Logiciels"}
- {id: 27, cat: TV, desc: "Spectacles"}
- {id: 28, cat: TV/Sport, desc: "Sports"}
- {id: 29, cat: XXX, desc: "XXX"}
modes:
search: [q]

View File

@@ -7,7 +7,7 @@
encoding: UTF-8
followredirect: true
links:
- https://www.yggtorrent.gg/
- https://www.yggtorrent.ch/
legacylinks:
- https://yggtorrent.com/
- https://ww1.yggtorrent.com/
@@ -26,6 +26,7 @@
- https://www.ygg.to/
- https://ww3.yggtorrent.gg/
- http://www2.yggtorrent.gg/
- https://www.yggtorrent.gg/
caps:
categorymappings:
@@ -91,7 +92,7 @@
- name: searchanddlurl
label: Search and download URL
type: text
default: www2.yggtorrent.gg
default: www2.yggtorrent.ch
- name: username
type: text
label: Username
@@ -139,10 +140,15 @@
type: checkbox
label: Enhance sonarr compatibility with anime by renaming episode (xxx to exxx). Works only if episode is at the end of the query. Can disturb movies search. (back to the future 3 -> back to the future e3)
default: false
- name: sonarrv3hack
# NEW SEARCH ENGINE MIGH BE BETTER THAN THAT
# - name: sonarrv3hack
# type: checkbox
# label: "REMOVED"
# default: false
- name: betasearchengine
type: checkbox
label: "Enable Full season search hack: Sonarrv3 send 'Series Name SXX' but it won't match 'Series Name - Saison 01' for example so we remove the 'SXX' ==> 'Series Name'"
default: true
label: "Use Beta Search engine URL (Less restrictive) / SonarrV3 Full Series Search NEW"
default: false
login:
method: form
@@ -154,6 +160,15 @@
submit: ""
error:
- selector: "#login_msg_pass[style=\"\"][style] > center"
- selector: "#ban_msg_login[style=\"\"][style] > center"
- selector: "#login_msg_mail[style=\"\"][style] > center"
- selector: a[href$="/user/disabled"]
message:
# Compte Inactif
selector: a[href$="/user/disabled"] strong
filters:
- name: append
args: " - Dès que vous passez en dessous d'un ratio inférieur à 1, Votre compte devient inactif et le site vous coupe les téléchargements."
test:
path: /
selector: div#top_panel:contains("Déconnexion")
@@ -161,15 +176,19 @@
search:
followredirect: true
keywordsfilters:
# COMMENT THAT BECAUSE OF BETA SEARCH
# Full season seach hack: Sonarrv3 send 'Series Name SXX' but it won't match 'Series Name - Saison 01' for example so we remove the 'SXX' ==> 'Series Name'
- name: re_replace
args: ["(.*)[sS](\\d{1,4})$", "{{ if .Config.sonarrv3hack }}$1{{else}}$1S$2{{end}}"]
# - name: re_replace
# args: ["(.*)[sS](\\d{1,4})$", "{{ if .Config.sonarrv3hack }}$1{{else}}$1S$2{{end}}"]
- name: replace
args: ["\"", ""]
- name: trim
paths:
- path: "https://{{ .Config.searchanddlurl }}/engine/search?category={{ .Config.category }}&name={{if .Config.enhancedAnime}}{{ re_replace .Keywords \"([\\.\\s\\[\\-])(\\d+)$\" \"$1e$2\" }}{{else}}{{ .Keywords }}{{end}}&description=&file=&uploader=&sub_category=&do=search&order=desc&sort=publish_date"
- path: "https://{{ .Config.searchanddlurl }}/engine/search?category={{ .Config.category }}&name={{if .Config.enhancedAnime}}{{ re_replace .Keywords \"([\\.\\s\\[\\-])(\\d+)$\" \"$1e$2\" }}{{else}}{{ .Keywords }}{{end}}&description=&file=&uploader=&sub_category=&do=search&order=desc&sort=publish_date&page=50"
# - path: "https://{{ .Config.searchanddlurl }}/{{if .Config.betasearchengine}}new_search{{else}}engine{{end}}/search?category={{ .Config.category }}&name={{if .Config.enhancedAnime}}{{ re_replace .Keywords \"([\\.\\s\\[\\-])(\\d+)$\" \"$1e$2\" }}{{else}}{{ re_replace .Keywords \"\\s\" \"\"\"\" }}{{end}}&description=&file=&uploader=&sub_category=&do=search&order=desc&sort=publish_date"
# - path: "https://{{ .Config.searchanddlurl }}/{{if .Config.betasearchengine}}new_search{{else}}engine{{end}}/search?category={{ .Config.category }}&name={{if .Config.enhancedAnime}}{{ re_replace .Keywords \"([\\.\\s\\[\\-])(\\d+)$\" \"$1e$2\" }}{{else}}{{ re_replace .Keywords \"\\s\" \"\"\"\" }}{{end}}&description=&file=&uploader=&sub_category=&do=search&order=desc&sort=publish_date&page=50"
#CHANGED / REMOVED THE quotes around Keyword, seems not needed now / Added betasearch engine
- path: "https://{{ .Config.searchanddlurl }}/{{if .Config.betasearchengine}}new_search{{else}}engine{{end}}/search?category={{ .Config.category }}&name={{ .Keywords }}&description=&file=&uploader=&sub_category=&do=search&order=desc&sort=publish_date"
- path: "https://{{ .Config.searchanddlurl }}/{{if .Config.betasearchengine}}new_search{{else}}engine{{end}}/search?category={{ .Config.category }}&name={{ .Keywords }}&description=&file=&uploader=&sub_category=&do=search&order=desc&sort=publish_date&page=50"
rows:
selector: "table.table > tbody > tr"
fields:
@@ -216,8 +235,19 @@
filters:
- name: re_replace
args: ["[\\.\\s\\[\\-][Vv][Oo][Ss][Tt][Ff][Rr][\\.\\s\\]\\-]", ".ENGLISH."]
title:
- name: re_replace
args: ["[\\.\\s\\[\\-][Ss][Uu][Bb][Ff][Rr][Ee][Nn][Cc][Hh][\\.\\s\\]\\-]", ".ENGLISH."]
title_phase3:
text: "{{if .Config.vostfr }}{{ .Result.title_vostfr }}{{else}}{{ .Result.title_phase2 }}{{end}}"
title_anime:
text: "{{ .Result.title_phase3 }}"
filters:
# Sonarr need E in front of 3 digit number or else it thinks it is episode
# S01E10 for number 110 for example ==> enhancedAnime
- name: re_replace
args: ["(.*)(\\.| |\\-)(\\d{1,4})(\\.| |\\-)(.*)", "$1 E$3 $5"]
title:
text: "{{if .Config.enhancedAnime }}{{ .Result.title_anime }}{{else}}{{ .Result.title_phase3 }}{{end}}"
details:
selector: ":nth-child(2) > a"
attribute: href

View File

@@ -0,0 +1,84 @@
---
site: yourbittorrent
name: YourBittorrent
description: "YourBittorrent is a Public torrent index"
language: en-us
type: public
encoding: UTF-8
links:
- https://yourbittorrent.com/
caps:
categories:
"Anime": TV/Anime
"Software": PC
"eBooks": Books
"XXX": XXX
"Games": PC/Games
"Movies": Movies
"Music": Audio
"Television": TV
"Other": Other
"Pictures": Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
download:
selector: a[href^="/down/"]
search:
paths:
- path: /
inputs:
v: ""
c: ""
q: "{{ .Keywords}}"
keywordsfilters:
- name: re_replace
args: ["[\\s]+", "-"]
rows:
selector: tr.table-default, tr.table-success
filters:
- name: andmatch
fields:
category:
selector: td:nth-child(1) a
attribute: title
title:
selector: td:nth-child(2) a
details:
selector: td:nth-child(2) a
attribute: href
download:
selector: td:nth-child(2) a
attribute: href
size:
selector: td:nth-child(4)
date:
selector: td:nth-child(5):not(:contains("/"))
optional: true
filters:
- name: replace
args: ["Today", "now"]
- name: replace
args: ["Yesterday", "1 day"]
- name: timeago
date:
selector: td:nth-child(5):contains("/")
optional: true
filters:
- name: dateparse
args: "02/01/06"
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -7,24 +7,51 @@
encoding: windows-1251
links:
- http://zamunda.net/
- http://zamunda.ch/
caps:
categories:
7: TV/SD
33: TV/HD
25: TV/Other
5: Movies/HD
19: Movies/SD
46: Movies/3D
42: Movies/BluRay
20: Movies/DVD
9: XXX
49: XXX/Other
6: Audio
30: Audio/Other
29: Audio/Other
51: Audio/Other
34: Audio/Lossless
categorymappings:
- {id: 42, cat: Movies/BluRay, desc: "Movies Blu-ray"}
- {id: 25, cat: TV/Anime, desc: "TV Animation/Anime"}
- {id: 35, cat: Movies/HD, desc: "Movies HD"}
- {id: 46, cat: Movies/3D, desc: "Movies 3D"}
- {id: 20, cat: Movies/DVD, desc: "Movies DVD-R"}
- {id: 19, cat: Movies/SD, desc: "Movies SD"}
- {id: 5, cat: Movies/HD, desc: "Movies HD"}
- {id: 24, cat: Movies, desc: "Movies BG"}
- {id: 31, cat: Movies, desc: "Movies Science"}
- {id: 28, cat: Movies, desc: "Movies Russia"}
- {id: 7, cat: TV/SD, desc: "TV SD"}
- {id: 33, cat: TV/HD, desc: "TV HD"}
- {id: 39, cat: PC/Mac, desc: "Games Mac"}
- {id: 4, cat: PC/ISO, desc: "Games ISO"}
- {id: 21, cat: PC/Games, desc: "Games PC Rip"}
- {id: 17, cat: Console/PS3, desc: "Games PS"}
- {id: 40, cat: Console/Xbox, desc: "Games Xbox"}
- {id: 12, cat: Console, desc: "Games Console"}
- {id: 54, cat: PC, desc: "Games Linux"}
- {id: 17, cat: Console/PS3, desc: "Games PS"}
- {id: 6, cat: Audio, desc: "Music"}
- {id: 30, cat: Audio/Other, desc: "Music DTS"}
- {id: 29, cat: Audio/Other, desc: "Music DVD-R"}
- {id: 51, cat: Audio/Other, desc: "Music Hi-Res/Vinyl"}
- {id: 34, cat: Audio/Lossless, desc: "Music Lossless"}
- {id: 38, cat: PC/Mac, desc: "Programs Mac"}
- {id: 1, cat: PC/ISO, desc: "Programs PC ISO"}
- {id: 22, cat: PC/Phone-Other, desc: "Programs Other"}
- {id: 43, cat: TV/Sport, desc: "Sport HD"}
- {id: 41, cat: TV/Sport, desc: "Sport SD"}
- {id: 36, cat: PC/Phone-Other, desc: "Programs Mobile/GSM"}
- {id: 52, cat: PC/Phone-Android, desc: "Android/Games"}
- {id: 53, cat: PC/Phone-Android, desc: "Android/Apps"}
- {id: 26, cat: Other, desc: "Other"}
- {id: 23, cat: Other, desc: "Clips"}
- {id: 32, cat: Books/Comics, desc: "Books Comics"}
- {id: 37, cat: Books/Technical, desc: "Books Dox"}
- {id: 9, cat: XXX, desc: "XXX"}
- {id: 48, cat: XXX, desc: "XXX 3D"}
- {id: 49, cat: XXX, desc: "XXX HD"}
- {id: 27, cat: TV/Anime, desc: "Hentai"}
modes:
search: [q]

View File

@@ -11,18 +11,48 @@
caps:
categories:
7: TV/SD
33: TV/HD
25: TV/Other
5: Movies/HD
53: Movies/HD
35: Movies/WEBDL
19: Movies/SD
46: Movies/3D
42: Movies/BluRay
20: Movies/DVD
9: XXX
49: XXX/Other
categorymappings:
- {id: 42, cat: Movies/BluRay, desc: "Movies Blu-ray"}
- {id: 25, cat: TV/Anime, desc: "TV Animation/Anime"}
- {id: 35, cat: Movies/HD, desc: "Movies HD"}
- {id: 46, cat: Movies/3D, desc: "Movies 3D"}
- {id: 20, cat: Movies/DVD, desc: "Movies DVD-R"}
- {id: 19, cat: Movies/SD, desc: "Movies SD"}
- {id: 5, cat: Movies/HD, desc: "Movies HD"}
- {id: 24, cat: Movies, desc: "Movies BG"}
- {id: 31, cat: Movies, desc: "Movies Science"}
- {id: 28, cat: Movies, desc: "Movies Russia"}
- {id: 7, cat: TV/SD, desc: "TV SD"}
- {id: 33, cat: TV/HD, desc: "TV HD"}
- {id: 39, cat: PC/Mac, desc: "Games Mac"}
- {id: 4, cat: PC/ISO, desc: "Games ISO"}
- {id: 21, cat: PC/Games, desc: "Games PC Rip"}
- {id: 17, cat: Console/PS3, desc: "Games PS"}
- {id: 40, cat: Console/Xbox, desc: "Games Xbox"}
- {id: 12, cat: Console, desc: "Games Console"}
- {id: 54, cat: PC, desc: "Games Linux"}
- {id: 17, cat: Console/PS3, desc: "Games PS"}
- {id: 6, cat: Audio, desc: "Music"}
- {id: 30, cat: Audio/Other, desc: "Music DTS"}
- {id: 29, cat: Audio/Other, desc: "Music DVD-R"}
- {id: 51, cat: Audio/Other, desc: "Music Hi-Res/Vinyl"}
- {id: 34, cat: Audio/Lossless, desc: "Music Lossless"}
- {id: 38, cat: PC/Mac, desc: "Programs Mac"}
- {id: 1, cat: PC/ISO, desc: "Programs PC ISO"}
- {id: 22, cat: PC/Phone-Other, desc: "Programs Other"}
- {id: 43, cat: TV/Sport, desc: "Sport HD"}
- {id: 41, cat: TV/Sport, desc: "Sport SD"}
- {id: 36, cat: PC/Phone-Other, desc: "Programs Mobile/GSM"}
- {id: 52, cat: PC/Phone-Android, desc: "Android/Games"}
- {id: 53, cat: PC/Phone-Android, desc: "Android/Apps"}
- {id: 26, cat: Other, desc: "Other"}
- {id: 23, cat: Other, desc: "Clips"}
- {id: 32, cat: Books/Comics, desc: "Books Comics"}
- {id: 37, cat: Books/Technical, desc: "Books Dox"}
- {id: 9, cat: XXX, desc: "XXX"}
- {id: 48, cat: XXX, desc: "XXX 3D"}
- {id: 49, cat: XXX, desc: "XXX HD"}
- {id: 27, cat: TV/Anime, desc: "Hentai"}
modes:
search: [q]

View File

@@ -32,6 +32,7 @@ namespace Jackett.Common.Indexers
private string TorrentCommentUrl { get { return TorrentDescriptionUrl; } }
private string TorrentDescriptionUrl { get { return SiteLink + "torrents.php?id="; } }
private string TorrentDownloadUrl { get { return SiteLink + "torrents.php?action=download&id={id}&authkey={auth_key}&torrent_pass={torrent_pass}"; } }
private string ReplaceMulti { get { return ConfigData.ReplaceMulti.Value; } }
private bool Latency { get { return ConfigData.Latency.Value; } }
private bool DevMode { get { return ConfigData.DevMode.Value; } }
private bool CacheMode { get { return ConfigData.HardDriveCache.Value; } }
@@ -302,6 +303,11 @@ namespace Jackett.Common.Indexers
// Release Name
string name = tRow.Find("td:eq(1) > a").Text();
//issue #3847 replace multi keyword
if(!string.IsNullOrEmpty(ReplaceMulti)){
System.Text.RegularExpressions.Regex regex = new Regex("(?i)([\\.\\- ])MULTI([\\.\\- ])");
name = regex.Replace(name, "$1"+ReplaceMulti+"$2");
}
output("Release: " + name);
// Category

View File

@@ -36,7 +36,7 @@ namespace Jackett.Common.Indexers.Abstract
)
{
this.endpoint = endpoint;
TorznabCaps.SupportsImdbSearch = true;
TorznabCaps.SupportsImdbMovieSearch = true;
}
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)

View File

@@ -0,0 +1,610 @@
using AngleSharp.Dom;
using AngleSharp.Html.Parser;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig.Bespoke;
using Jackett.Common.Services.Interfaces;
using Jackett.Common.Utils;
using Jackett.Common.Utils.Clients;
using Microsoft.AspNetCore.WebUtilities;
using Newtonsoft.Json.Linq;
using NLog;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace Jackett.Common.Indexers
{
internal class AniDub : BaseWebIndexer
{
private static readonly Regex EpisodeInfoRegex = new Regex(@"\[(.*?)(?: \(.*?\))? из (.*?)\]$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private static readonly Regex SeasonInfoQueryRegex = new Regex(@"S(\d+)(?:E\d*)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private static readonly Regex SeasonInfoRegex = new Regex(@"(?:(?:TV-)|(?:ТВ-))(\d+)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
private static readonly Lazy<Regex> StripRussianTitleRegex = new Lazy<Regex>(() => new Regex(@"^.*?\/\s*", RegexOptions.Compiled));
public AniDub(IIndexerConfigurationService configService, WebClient wc, Logger l, IProtectionService ps)
: base(name: "AniDUB",
description: "AniDUB Tracker is a semi-private russian tracker and release group for anime",
link: "https://tr.anidub.com/",
caps: new TorznabCapabilities(),
configService: configService,
client: wc,
logger: l,
p: ps,
configData: new ConfigurationDataAniDub())
{
Encoding = Encoding.UTF8;
Language = "ru-RU";
Type = "semi-private";
AddCategoryMapping(2, TorznabCatType.TVAnime, "Аниме TV");
AddCategoryMapping(14, TorznabCatType.TVAnime, "Аниме TV / Законченные сериалы");
AddCategoryMapping(10, TorznabCatType.TVAnime, "Аниме TV / Аниме Ongoing");
AddCategoryMapping(11, TorznabCatType.TVAnime, "Аниме TV / Многосерийный сёнэн");
AddCategoryMapping(13, TorznabCatType.XXX, "18+");
AddCategoryMapping(15, TorznabCatType.BooksComics, "Манга");
AddCategoryMapping(16, TorznabCatType.Audio, "OST");
AddCategoryMapping(17, TorznabCatType.Audio, "Подкасты");
AddCategoryMapping(3, TorznabCatType.TVAnime, "Аниме Фильмы");
AddCategoryMapping(4, TorznabCatType.TVAnime, "Аниме OVA");
AddCategoryMapping(5, TorznabCatType.TVAnime, "Аниме OVA |- Аниме ONA");
AddCategoryMapping(9, TorznabCatType.TV, "Дорамы");
AddCategoryMapping(6, TorznabCatType.TV, "Дорамы / Японские Сериалы и Фильмы");
AddCategoryMapping(7, TorznabCatType.TV, "Дорамы / Корейские Сериалы и Фильмы");
AddCategoryMapping(8, TorznabCatType.TV, "Дорамы / Китайские Сериалы и Фильмы");
AddCategoryMapping(12, TorznabCatType.Other, "Аниме Ongoing Анонсы");
AddCategoryMapping(1, TorznabCatType.Other, "Новости проекта Anidub");
}
private static Dictionary<string, string> CategoriesMap => new Dictionary<string, string>
{
{ "/anime_tv/full", "14" },
{ "/anime_tv/anime_ongoing", "10" },
{ "/anime_tv/shonen", "11" },
{ "/anime_tv", "2" },
{ "/xxx", "13" },
{ "/manga", "15" },
{ "/ost", "16" },
{ "/podcast", "17" },
{ "/anime_movie", "3" },
{ "/anime_ova/anime_ona", "5" },
{ "/anime_ova", "4" },
{ "/dorama/japan_dorama", "6" },
{ "/dorama/korea_dorama", "7" },
{ "/dorama/china_dorama", "8" },
{ "/dorama", "9" },
{ "/anons_ongoing", "12" },
};
private static ICollection<string> DefaultSearchCategories => new[] { "0" };
private ConfigurationDataAniDub Configuration
{
get { return (ConfigurationDataAniDub)configData; }
set { configData = value; }
}
/// <summary>
/// https://tr.anidub.com/index.php
/// </summary>
private string LoginUrl => SiteLink + "index.php";
/// <summary>
/// https://tr.anidub.com/index.php?do=search
/// </summary>
private string SearchUrl => SiteLink + "index.php?do=search";
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
{
LoadValuesFromJson(configJson);
var data = new Dictionary<string, string>
{
{ "login_name", Configuration.Username.Value },
{ "login_password", Configuration.Password.Value },
{ "login", "submit" }
};
var result = await RequestLoginAndFollowRedirect(
LoginUrl,
data,
CookieHeader,
returnCookiesFromFirstCall: true
);
var parser = new HtmlParser();
var document = await parser.ParseDocumentAsync(result.Content);
await ConfigureIfOK(result.Cookies, IsAuthorized(result), () =>
{
const string ErrorSelector = "#content .berror .berror_c";
var errorMessage = document.QuerySelector(ErrorSelector).Text().Trim();
throw new ExceptionWithConfigData(errorMessage, Configuration);
});
return IndexerConfigurationStatus.Completed;
}
public override async Task<byte[]> Download(Uri link)
{
await EnsureAuthorized();
return await base.Download(link);
}
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{
// If the search string is empty use the latest releases
if (query.IsTest || query.SearchTerm.IsNullOrEmptyOrWhitespace())
{
return await FetchNewReleases();
}
else
{
return await PerformSearch(query);
}
}
private async Task EnsureAuthorized()
{
var result = await RequestStringWithCookies(SiteLink);
if (!IsAuthorized(result))
{
await ApplyConfiguration(null);
}
}
private async Task<List<ReleaseInfo>> FetchNewReleases()
{
const string ReleaseLinksSelector = "#dle-content > .story > .story_h > .lcol > h2 > a";
var result = await RequestStringWithCookies(SiteLink);
var releases = new List<ReleaseInfo>();
try
{
var parser = new HtmlParser();
var document = await parser.ParseDocumentAsync(result.Content);
foreach (var linkNode in document.QuerySelectorAll(ReleaseLinksSelector))
{
var url = linkNode.GetAttribute("href");
releases.AddRange(await FetchShowReleases(url));
}
}
catch (Exception ex)
{
OnParseError(result.Content, ex);
}
return releases;
}
private async Task<List<ReleaseInfo>> FetchShowReleases(string url)
{
const string ContentId = "dle-content";
const string ReleasesSelector = "#tabs .torrent_c > div";
var releases = new List<ReleaseInfo>();
var uri = new Uri(url);
var categories = ParseCategories(uri)?.ToArray();
if (categories == null)
{
// If no category then it should be a news topic
// Doesn't happen often
return releases;
}
var result = await RequestStringWithCookies(url);
try
{
var parser = new HtmlParser();
var document = await parser.ParseDocumentAsync(result.Content);
var content = document.GetElementById(ContentId);
var date = GetDateFromShowPage(url, content);
var baseTitle = GetBaseTitle(categories, content);
var bannerUrl = GetBannerUrl(url, content);
foreach (var releaseNode in content.QuerySelectorAll(ReleasesSelector))
{
IElement tabNode;
if (releaseNode.Children.Any(node => node.ClassName?.Contains("torrent_h") == true))
{
// No quality, one tab, seems like a buggy page
tabNode = releaseNode;
}
else
{
const StringComparison comparisonType = StringComparison.InvariantCultureIgnoreCase;
tabNode = releaseNode.Children.First(node => node.TagName.Equals("div", comparisonType));
}
var seeders = GetReleaseSeeders(tabNode);
var release = new ReleaseInfo
{
Title = BuildReleaseTitle(baseTitle, tabNode),
Guid = new Uri(GetReleaseGuid(url, tabNode)),
Comments = uri,
Link = GetReleaseLink(tabNode),
PublishDate = date,
Category = categories,
DownloadVolumeFactor = 0,
UploadVolumeFactor = 0,
Size = GetReleaseSize(tabNode),
Grabs = GetReleaseGrabs(tabNode),
Description = GetReleaseDescription(tabNode),
Seeders = seeders,
Peers = GetReleaseLeechers(tabNode) + seeders,
BannerUrl = bannerUrl
};
releases.Add(release);
}
}
catch (Exception ex)
{
OnParseError(result.Content, ex);
}
return releases;
}
private static string GetReleaseGuid(string url, IElement tabNode)
{
// Appending id to differentiate between different quality versions
return QueryHelpers.AddQueryString(url, "id", GetTorrentId(tabNode));
}
private static int GetReleaseLeechers(IElement tabNode)
{
const string LeechersSelector = ".list.down > .li_swing_m";
var leechersStr = tabNode.QuerySelector(LeechersSelector).Text();
int.TryParse(leechersStr, out var leechers);
return leechers;
}
private static int GetReleaseSeeders(IElement tabNode)
{
const string SeedersSelector = ".list.down > .li_distribute_m";
var seedersStr = tabNode.QuerySelector(SeedersSelector).Text();
int.TryParse(seedersStr, out var seeders);
return seeders;
}
private static string GetReleaseDescription(IElement tabNode)
{
const string DescriptionSelector = ".tech > pre";
return tabNode.QuerySelector(DescriptionSelector)?.Text()?.Trim();
}
private static long GetReleaseGrabs(IElement tabNode)
{
const string GrabsSelector = ".list.down > .li_download_m";
var grabsStr = tabNode.QuerySelector(GrabsSelector).Text();
long.TryParse(grabsStr, out var grabs);
return grabs;
}
private static long GetReleaseSize(IElement tabNode)
{
const string SizeSelector = ".list.down > .red";
var sizeStr = tabNode.QuerySelector(SizeSelector).Text();
return ReleaseInfo.GetBytes(sizeStr);
}
private Uri GetReleaseLink(IElement tabNode) =>
new Uri($"{SiteLink}engine/download.php?id={GetTorrentId(tabNode)}");
private static string GetTorrentId(IElement tabNode)
{
var nodeId = tabNode.Id;
// Format is "torrent_{id}_info"
return nodeId
.Replace("torrent_", string.Empty)
.Replace("_info", string.Empty);
}
private static string BuildReleaseTitle(string baseTitle, IElement tabNode)
{
var releaseNode = tabNode.ParentElement;
var quality = GetQuality(releaseNode);
if (!quality.IsNullOrEmptyOrWhitespace())
{
return $"{baseTitle} [{quality}]";
}
return baseTitle;
}
private static string GetQuality(IElement releaseNode)
{
// For some releases there's no block with quality
if (releaseNode.Id.IsNullOrEmptyOrWhitespace())
{
return null;
}
var quality = releaseNode.Id.Trim();
switch (quality.ToLowerInvariant())
{
case "tv720": return "HDTV 720p";
case "tv1080": return "HDTV 1080p";
case "bd720": return "BDRip 720p";
case "bd1080": return "BDRip 1080p";
case "hwp": return "SDTV";
default: return quality.ToUpperInvariant();
}
}
private Uri GetBannerUrl(string url, IElement content)
{
var bannerNode = content.QuerySelector(".poster_bg .poster img");
var bannerSrc = bannerNode.GetAttribute("src");
if (Uri.TryCreate(bannerSrc, UriKind.Absolute, out var bannerUrl))
{
return bannerUrl;
}
logger.Warn($"[AniDub] Banner URL couldn't be parsed on '{url}'. Banner node src: {bannerSrc}");
return null;
}
private string GetBaseTitle(int[] categories, IElement content)
{
var domTitle = content.QuerySelector("#news-title");
var baseTitle = domTitle.Text().Trim();
baseTitle = StripRussianTitle(baseTitle);
baseTitle = FixBookInfo(baseTitle);
var isShow = categories.Contains(TorznabCatType.TVAnime.ID);
if (isShow)
{
baseTitle = FixShowTitle(baseTitle);
}
else
{
// Just fix TV-\d to S\d and [\d+] to E\d
baseTitle = FixSeasonInfo(baseTitle);
baseTitle = FixEpisodeInfo(baseTitle);
}
baseTitle = FixMovieInfo(baseTitle);
return baseTitle.Trim();
}
private string FixShowTitle(string title)
{
var seasonNum = GetSeasonNum(title);
// Remove season info
title = SeasonInfoRegex.Replace(title, string.Empty);
// Normalize for parsing usages
// Should look like S01E01-E09
return EpisodeInfoRegex.Replace(
title,
match => match.Success ? $"S{seasonNum:00}E01-E{match.Groups[1]}" : string.Empty
);
}
private int GetSeasonNum(string title)
{
// First season is often skipped so return 1 if nothing matched
const int defaultSeason = 1;
var seasonMatch = SeasonInfoRegex.Match(title);
if (!seasonMatch.Success)
{
return defaultSeason;
}
var seasonVal = seasonMatch.Groups[defaultSeason].Value;
if (int.TryParse(seasonVal, out var seasonNum))
{
return seasonNum;
}
return defaultSeason;
}
private string StripRussianTitle(string title)
{
if (Configuration.StripRussianTitle.Value)
{
return StripRussianTitleRegex.Value.Replace(title, string.Empty);
}
return title;
}
private static string FixBookInfo(string title) =>
title.Replace("[Главы ", "[");
private static string FixEpisodeInfo(string title) =>
EpisodeInfoRegex.Replace(
title,
match => match.Success ? $"E01-E{match.Groups[1]}" : string.Empty
);
private static string FixMovieInfo(string title) =>
title.Replace(" [Movie]", string.Empty);
private static string FixSeasonInfo(string title) =>
SeasonInfoRegex.Replace(
title,
match => match.Success ? $"S{int.Parse(match.Groups[1].Value):00}" : string.Empty
);
private DateTime GetDateFromShowPage(string url, IElement content)
{
const string dateFormat = "d-MM-yyyy";
const string dateTimeFormat = dateFormat + ", HH:mm";
// Would be better to use AssumeLocal and provide "ru-RU" culture,
// but doesn't work cross-platform
const DateTimeStyles style = DateTimeStyles.AssumeUniversal;
var culture = CultureInfo.InvariantCulture;
var dateText = GetDateFromDocument(content);
//Correct way but will not always work on cross-platform
//var localTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time");
//var nowLocal = TimeZoneInfo.ConvertTime(DateTime.UtcNow, localTimeZone);
// Russian Standard Time is +03:00, no DST
const int russianStandardTimeDiff = 3;
var nowLocal = DateTime.UtcNow.AddHours(russianStandardTimeDiff);
dateText = dateText
.Replace("Вчера", nowLocal.AddDays(-1).ToString(dateFormat))
.Replace("Сегодня", nowLocal.ToString(dateFormat));
if (DateTime.TryParseExact(dateText, dateTimeFormat, culture, style, out var date))
{
var utcDate = date.ToUniversalTime();
return utcDate.AddHours(-russianStandardTimeDiff);
}
logger.Warn($"[AniDub] Date time couldn't be parsed on '{url}'. Date text: {dateText}");
return DateTime.UtcNow;
}
private static string GetDateFromDocument(IElement content)
{
const string DateSelector = ".story_inf > li:nth-child(2)";
var domDate = content.QuerySelector(DateSelector).LastChild;
if (domDate?.NodeName != "#text")
{
return string.Empty;
}
return domDate.NodeValue.Trim();
}
private bool IsAuthorized(WebClientStringResult result) =>
result.Content.Contains("index.php?action=logout");
private IEnumerable<int> ParseCategories(Uri showUri)
{
Dictionary<string, string> categoriesMap = CategoriesMap;
var path = showUri.AbsolutePath.ToLowerInvariant();
return categoriesMap
.Where(categoryMap => path.StartsWith(categoryMap.Key))
.Select(categoryMap => MapTrackerCatToNewznab(categoryMap.Value))
.FirstOrDefault();
}
private async Task<List<ReleaseInfo>> PerformSearch(TorznabQuery query)
{
const string searchLinkSelector = "#dle-content > .searchitem > h3 > a";
var releases = new List<ReleaseInfo>();
var response = await PostDataWithCookies(SearchUrl, PreparePostData(query));
try
{
var parser = new HtmlParser();
var document = await parser.ParseDocumentAsync(response.Content);
foreach (var linkNode in document.QuerySelectorAll(searchLinkSelector))
{
var link = linkNode.GetAttribute("href");
releases.AddRange(await FetchShowReleases(link));
}
}
catch (Exception ex)
{
OnParseError(response.Content, ex);
}
return releases;
}
private List<KeyValuePair<string, string>> PreparePostData(TorznabQuery query)
{
var data = new List<KeyValuePair<string, string>>
{
{ "do", "search" },
{ "subaction", "search" },
{ "search_start", "1" },
{ "full_search", "1" },
{ "result_from", "1" },
{ "story", NormalizeSearchQuery(query)},
{ "titleonly", "0" },
{ "searchuser", "" },
{ "replyless", "0" },
{ "replylimit", "0" },
{ "searchdate", "0" },
{ "beforeafter", "after" },
{ "sortby", "" },
{ "resorder", "desc" },
{ "showposts", "1" },
};
data.AddRange(PrepareCategoriesQuery(query));
return data;
}
private IEnumerable<KeyValuePair<string, string>> PrepareCategoriesQuery(TorznabQuery query)
{
var categories = query.HasSpecifiedCategories
? MapTorznabCapsToTrackers(query)
: DefaultSearchCategories;
return categories.Select(
category => new KeyValuePair<string, string>("catlist[]", category)
);
}
private static string NormalizeSearchQuery(TorznabQuery query)
{
var searchQuery = query.SanitizedSearchTerm;
// Convert S\dE\d to TV-{Season}
// because of the convention on the tracker
searchQuery = SeasonInfoQueryRegex.Replace(
searchQuery,
match => match.Success ? $"TV-{int.Parse(match.Groups[1].Value)}" : string.Empty
);
if (query.Season > 0)
{
// Replace "TV- " with season from query
searchQuery = SeasonInfoRegex.Replace(searchQuery, string.Empty);
searchQuery += $" TV-{query.Season}";
}
// Search is normalized with '+' instead of spaces
return searchQuery.ToLowerInvariant().Replace(" ", "+");
}
}
}

View File

@@ -55,7 +55,7 @@ namespace Jackett.Common.Indexers
Language = "pt-br";
Type = "private";
TorznabCaps.SupportsImdbSearch = true;
TorznabCaps.SupportsImdbMovieSearch = true;
AddCategoryMapping(14, TorznabCatType.TVAnime, "Anime");
AddCategoryMapping(3, TorznabCatType.PC0day, "Aplicativos");

View File

@@ -293,9 +293,9 @@ namespace Jackett.Common.Indexers
if (query.HasSpecifiedCategories)
if (!caps.SupportsCategories(query.Categories))
return false;
if (caps.SupportsImdbSearch && query.IsImdbQuery)
if (caps.SupportsImdbMovieSearch && query.IsImdbQuery)
return true;
else if (!caps.SupportsImdbSearch && query.IsImdbQuery && query.QueryType != "TorrentPotato") // potato query should always contain imdb+search term
else if (!caps.SupportsImdbMovieSearch && query.IsImdbQuery && query.QueryType != "TorrentPotato") // potato query should always contain imdb+search term
return false;
if (caps.SearchAvailable && query.IsSearch)
return true;
@@ -307,7 +307,7 @@ namespace Jackett.Common.Indexers
return true;
if (caps.SupportsTVRageSearch && query.IsTVRageSearch)
return true;
if (caps.SupportsImdbSearch && query.IsImdbQuery)
if (caps.SupportsImdbMovieSearch && query.IsImdbQuery)
return true;
return false;

View File

@@ -1,203 +0,0 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using CsQuery;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig;
using Jackett.Common.Services.Interfaces;
using Jackett.Common.Utils;
using Jackett.Common.Utils.Clients;
using Newtonsoft.Json.Linq;
using NLog;
namespace Jackett.Common.Indexers
{
public class BeyondHD : BaseWebIndexer
{
private string SearchUrl { get { return SiteLink + "browse.php?searchin=descr&incldead=1&"; } }
private new ConfigurationDataLoginLink configData
{
get { return (ConfigurationDataLoginLink)base.configData; }
set { base.configData = value; }
}
public BeyondHD(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps)
: base(name: "BeyondHD",
description: "Without BeyondHD, your HDTV is just a TV",
link: "https://beyond-hd.me/",
caps: new TorznabCapabilities(),
configService: configService,
client: w,
logger: l,
p: ps,
configData: new ConfigurationDataLoginLink())
{
Encoding = Encoding.UTF8;
Language = "en-us";
Type = "private";
configData.DisplayText.Value = "Go to the general tab of your BeyondHD user profile and create/copy the Login Link.";
TorznabCaps.SupportsImdbSearch = true;
AddCategoryMapping(37, TorznabCatType.MoviesBluRay, "Movie / Blu-ray");
AddCategoryMapping(71, TorznabCatType.Movies3D, "Movie / 3D");
AddCategoryMapping(83, TorznabCatType.Movies3D, "FraMeSToR 3D");
AddCategoryMapping(77, TorznabCatType.MoviesHD, "Movie / 1080p/i");
AddCategoryMapping(102, TorznabCatType.MoviesUHD, "Movie / 4K Disk");
AddCategoryMapping(94, TorznabCatType.MoviesUHD, "Movie / 4K Other");
AddCategoryMapping(103, TorznabCatType.MoviesUHD, "Movie / 4K Remux");
AddCategoryMapping(78, TorznabCatType.MoviesHD, "Movie / 720p");
AddCategoryMapping(54, TorznabCatType.MoviesHD, "Movie / MP4");
AddCategoryMapping(17, TorznabCatType.MoviesHD, "Movie / Remux");
AddCategoryMapping(38, TorznabCatType.MoviesHD, "Movie / WEB-DL");
AddCategoryMapping(106, TorznabCatType.MoviesHD, "Internal / BHDStudio 1080p");
AddCategoryMapping(105, TorznabCatType.MoviesHD, "Internal / BHDStudio 720p");
AddCategoryMapping(50, TorznabCatType.MoviesHD, "Internal / FraMeSToR 1080p");
AddCategoryMapping(75, TorznabCatType.MoviesHD, "Internal / FraMeSToR 720p");
AddCategoryMapping(49, TorznabCatType.MoviesHD, "Internal / FraMeSToR REMUX");
AddCategoryMapping(101, TorznabCatType.MoviesHD, "Internal / FraMeSToR 4K REMUX");
AddCategoryMapping(61, TorznabCatType.MoviesHD, "Internal / HDX REMUX");
AddCategoryMapping(86, TorznabCatType.MoviesHD, "Internal / SC4R");
AddCategoryMapping(95, TorznabCatType.MoviesHD, "Nightripper 1080p");
AddCategoryMapping(96, TorznabCatType.MoviesHD, "Nightripper 720p");
AddCategoryMapping(98, TorznabCatType.MoviesHD, "Nightripper MicroHD");
AddCategoryMapping(104, TorznabCatType.TVUHD, "TV Show / 4K");
AddCategoryMapping(40, TorznabCatType.TVHD, "TV Show / Blu-ray");
AddCategoryMapping(44, TorznabCatType.TVHD, "TV Show / Encodes");
AddCategoryMapping(48, TorznabCatType.TVHD, "TV Show / HDTV");
AddCategoryMapping(89, TorznabCatType.TVHD, "TV Show / Packs");
AddCategoryMapping(46, TorznabCatType.TVHD, "TV Show / Remux");
AddCategoryMapping(99, TorznabCatType.TVHD, "TV Show / Sports");
AddCategoryMapping(100, TorznabCatType.TVHD, "TV Show / Sports / WEB-DL");
AddCategoryMapping(45, TorznabCatType.TVHD, "TV Show / WEB-DL");
AddCategoryMapping(97, TorznabCatType.TVHD, "Nightripper TV Show Encodes");
AddCategoryMapping(36, TorznabCatType.AudioLossless, "Music / Lossless");
AddCategoryMapping(69, TorznabCatType.AudioMP3, "Music / MP3");
AddCategoryMapping(55, TorznabCatType.AudioVideo, "Music / 1080p/i");
AddCategoryMapping(56, TorznabCatType.AudioVideo, "Music / 720p");
AddCategoryMapping(42, TorznabCatType.AudioVideo, "Music / Blu-ray");
AddCategoryMapping(41, TorznabCatType.AudioVideo, "Music / Movie OST");
}
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
{
LoadValuesFromJson(configJson);
var result = await RequestStringWithCookies(configData.LoginLink.Value);
await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("Welcome Back"), () =>
{
var errorMessage = result.Content;
throw new ExceptionWithConfigData(errorMessage, configData);
});
return IndexerConfigurationStatus.RequiresTesting;
}
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{
List<ReleaseInfo> releases = new List<ReleaseInfo>();
Regex IMDBRegEx = new Regex(@"tt(\d+)", RegexOptions.Compiled);
var searchString = query.GetQueryString();
var searchUrl = SearchUrl;
var queryCollection = new NameValueCollection();
var searchStringIsImdbQuery = (ParseUtil.GetImdbID(searchString) != null);
if (query.IsImdbQuery)
{
queryCollection.Add("search", query.ImdbID);
}
else if (searchStringIsImdbQuery)
{
queryCollection.Add("search", searchString);
}
else if (!string.IsNullOrWhiteSpace(searchString))
{
Regex ReplaceRegex = new Regex("[^a-zA-Z0-9]+");
searchString = "%" + ReplaceRegex.Replace(searchString, "%") + "%";
searchString = Regex.Replace(searchString, @"(%\d{3,4})[ip](%)", "$1$2"); // remove i/p from resolution tags (see #835)
queryCollection.Add("search", searchString);
}
foreach (var cat in MapTorznabCapsToTrackers(query))
{
queryCollection.Add("c" + cat, "1");
}
searchUrl += queryCollection.GetQueryString();
var results = await RequestStringWithCookiesAndRetry(searchUrl);
await FollowIfRedirect(results);
try
{
CQ dom = results.Content;
var rows = dom["table.torrenttable > tbody > tr.browse_color, table.torrenttable > tbody > tr.highlight"];
foreach (var row in rows)
{
var release = new ReleaseInfo();
release.MinimumRatio = 1;
release.MinimumSeedTime = 172800;
var qRow = row.Cq();
var catStr = row.ChildElements.ElementAt(0).FirstElementChild.GetAttribute("href").Split('=')[1];
release.Category = MapTrackerCatToNewznab(catStr);
var qLink = row.ChildElements.ElementAt(2).FirstChild.Cq();
release.Link = new Uri(SiteLink + qLink.Attr("href"));
var torrentId = qLink.Attr("href").Split('=').Last();
var descCol = row.ChildElements.ElementAt(3);
var qCommentLink = descCol.FirstChild.Cq();
release.Title = qCommentLink.Text();
if (!query.IsImdbQuery && !query.MatchQueryStringAND(release.Title))
continue;
release.Comments = new Uri(SiteLink + qCommentLink.Attr("href"));
release.Guid = release.Comments;
release.Link = new Uri($"{SiteLink}download.php?torrent={torrentId}");
var dateStr = descCol.ChildElements.Last().Cq().Text().Split('|').Last().ToLowerInvariant().Replace("ago.", "").Trim();
release.PublishDate = DateTimeUtil.FromTimeAgo(dateStr);
var sizeStr = row.ChildElements.ElementAt(7).Cq().Text();
release.Size = ReleaseInfo.GetBytes(sizeStr);
release.Seeders = ParseUtil.CoerceInt(row.ChildElements.ElementAt(9).Cq().Text());
release.Peers = ParseUtil.CoerceInt(row.ChildElements.ElementAt(10).Cq().Text()) + release.Seeders;
var files = qRow.Find("td:nth-child(6)").Text();
release.Files = ParseUtil.CoerceInt(files);
var grabs = qRow.Find("td:nth-child(9) > a").Get(0).FirstChild.ToString();
release.Grabs = ParseUtil.CoerceInt(grabs);
var imdbLink = qRow.Find("a[href*=\"imdb.com/title/\"]").Attr("href");
if (imdbLink != null)
{
var IMDBMatch = IMDBRegEx.Match(imdbLink);
release.Imdb = ParseUtil.CoerceLong(IMDBMatch.Groups[1].Value);
}
release.DownloadVolumeFactor = 0;
release.UploadVolumeFactor = 1;
releases.Add(release);
}
}
catch (Exception ex)
{
OnParseError(results.Content, ex);
}
return releases;
}
}
}

View File

@@ -41,7 +41,7 @@ namespace Jackett.Common.Indexers
Language = "en-us";
Type = "private";
TorznabCaps.SupportsImdbSearch = true;
TorznabCaps.SupportsImdbMovieSearch = true;
AddCategoryMapping(1, TorznabCatType.MoviesDVD, "Movies/DVDR");
AddCategoryMapping(2, TorznabCatType.MoviesSD, "Movies/XviD");

View File

@@ -22,7 +22,7 @@ namespace Jackett.Common.Indexers
{
Language = "pt-br";
Type = "private";
TorznabCaps.SupportsImdbSearch = false; // they store the imdb ID but it's not included in the results, search is also not available.
TorznabCaps.SupportsImdbMovieSearch = false; // they store the imdb ID but it's not included in the results, search is also not available.
TorznabCaps.SupportedMusicSearchParamsList = new List<string>() { "q", "album", "artist", "label", "year" };
AddCategoryMapping(1, TorznabCatType.Movies, "Filmes");

View File

@@ -1,7 +1,8 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig;
@@ -91,6 +92,13 @@ namespace Jackett.Common.Indexers
var btnOffset = query.Offset;
var releases = new List<ReleaseInfo>();
// If only the season is searched for then change format to match expected format
var seasonOnlyMatch = new Regex(@".*\s[Ss]{1}\d{2}(?<![Ee]{1}\d{2,3})?$").Match(searchString);
if (seasonOnlyMatch.Success)
{
searchString = Regex.Replace(searchString, @"[Ss]{1}\d{2}", $"Season {query.Season}");
}
var parameters = new JArray();
parameters.Add(new JValue(configData.Key.Value));
parameters.Add(new JValue(searchString.Trim()));

View File

@@ -92,7 +92,7 @@ namespace Jackett.Common.Indexers
Type = Definition.Type;
TorznabCaps = new TorznabCapabilities();
TorznabCaps.SupportsImdbSearch = Definition.Caps.Modes.Where(c => c.Key == "movie-search" && c.Value.Contains("imdbid")).Any();
TorznabCaps.SupportsImdbMovieSearch = Definition.Caps.Modes.Where(c => c.Key == "movie-search" && c.Value.Contains("imdbid")).Any();
if (Definition.Caps.Modes.ContainsKey("music-search"))
TorznabCaps.SupportedMusicSearchParamsList = Definition.Caps.Modes["music-search"];
@@ -788,8 +788,9 @@ namespace Jackett.Common.Indexers
var hasCaptcha = false;
var CloudFlareCaptchaChallenge = landingResultDocument.QuerySelector("script[src*=\"/recaptcha/api.js\"]");
var grecaptcha = landingResultDocument.QuerySelector(".g-recaptcha");
if (grecaptcha != null)
if (CloudFlareCaptchaChallenge != null && grecaptcha != null)
{
hasCaptcha = true;
var CaptchaItem = new RecaptchaItem();
@@ -1108,9 +1109,9 @@ namespace Jackett.Common.Indexers
variables[".Query.Season"] = query.Season;
variables[".Query.Movie"] = null;
variables[".Query.Year"] = query.Year.ToString();
variables[".Query.Limit"] = query.Limit;
variables[".Query.Offset"] = query.Offset;
variables[".Query.Extended"] = query.Extended;
variables[".Query.Limit"] = query.Limit.ToString();
variables[".Query.Offset"] = query.Offset.ToString();
variables[".Query.Extended"] = query.Extended.ToString();
variables[".Query.Categories"] = query.Categories;
variables[".Query.APIKey"] = query.ApiKey;
variables[".Query.TVDBID"] = null;
@@ -1494,7 +1495,7 @@ namespace Jackett.Common.Indexers
if (Filter.Args != null)
CharacterLimit = int.Parse(Filter.Args);
if (query.ImdbID != null && TorznabCaps.SupportsImdbSearch)
if (query.ImdbID != null && TorznabCaps.SupportsImdbMovieSearch)
break; // skip andmatch filter for imdb searches
if (!query.MatchQueryStringAND(release.Title, CharacterLimit))

View File

@@ -210,7 +210,7 @@ namespace Jackett.Common.Indexers
var qRow = row.Cq();
release.Title = qRow.Find("td:nth-child(2) > a").First().Text().Trim();
if ((query.ImdbID == null || !TorznabCaps.SupportsImdbSearch) && !query.MatchQueryStringAND(release.Title))
if ((query.ImdbID == null || !TorznabCaps.SupportsImdbMovieSearch) && !query.MatchQueryStringAND(release.Title))
continue;
release.Guid = new Uri(SiteLink + qRow.Find("td:nth-child(2) > a").First().Attr("href"));

View File

@@ -25,10 +25,6 @@ namespace Jackett.Common.Indexers
{ get { return SiteLink + "browse.php"; } }
private bool TorrentHTTPSMode => configData.TorrentHTTPSMode.Value;
private static readonly string[] certificateHashs = new string[] {
"4482711D19A95CDE01D7958E5F1295E05BCA335D", // Let's Encrypt Authority X3
};
private new ConfigurationDataEliteTracker configData
{
get { return (ConfigurationDataEliteTracker)base.configData; }
@@ -54,6 +50,10 @@ namespace Jackett.Common.Indexers
AddCategoryMapping(63, TorznabCatType.TVAnime, "Animes DVD");
AddCategoryMapping(56, TorznabCatType.TVAnime, "Animes HD");
AddCategoryMapping(59, TorznabCatType.TVAnime, "Animes Serie");
AddCategoryMapping(89, TorznabCatType.TVAnime, "Animes HDLight");
AddCategoryMapping(87, TorznabCatType.TVAnime, "Animes Pack");
AddCategoryMapping(88, TorznabCatType.TVAnime, "Animes SD");
AddCategoryMapping(90, TorznabCatType.TVAnime, "Animes 3D");
AddCategoryMapping(3, TorznabCatType.PC0day, "APPLICATION");
AddCategoryMapping(74, TorznabCatType.PCPhoneAndroid, "ANDROID");
@@ -65,6 +65,7 @@ namespace Jackett.Common.Indexers
AddCategoryMapping(38, TorznabCatType.TVDocumentary, "DOCUMENTAIRES");
AddCategoryMapping(34, TorznabCatType.Books, "EBOOKS");
AddCategoryMapping(86, TorznabCatType.Books, "ABOOKS");
AddCategoryMapping(7, TorznabCatType.Movies, "FILMS");
AddCategoryMapping(11, TorznabCatType.MoviesDVD, "DVD");
@@ -78,10 +79,12 @@ namespace Jackett.Common.Indexers
AddCategoryMapping(51, TorznabCatType.MoviesHD, "1080P");
AddCategoryMapping(70, TorznabCatType.Movies3D, "3D");
AddCategoryMapping(50, TorznabCatType.MoviesHD, "720P");
AddCategoryMapping(84, TorznabCatType.MoviesHD, "4K");
AddCategoryMapping(84, TorznabCatType.MoviesUHD, "4K");
AddCategoryMapping(49, TorznabCatType.MoviesBluRay, "BluRay");
AddCategoryMapping(78, TorznabCatType.MoviesHD, "M - HD");
AddCategoryMapping(78, TorznabCatType.MoviesHD, "HDLight");
AddCategoryMapping(85, TorznabCatType.MoviesHD, "x265");
AddCategoryMapping(91, TorznabCatType.Movies3D, "3D");
AddCategoryMapping(95, TorznabCatType.Movies, "VOSTFR");
AddCategoryMapping(15, TorznabCatType.Console, "JEUX VIDEO");
AddCategoryMapping(76, TorznabCatType.Console3DS, "3DS");
@@ -103,6 +106,7 @@ namespace Jackett.Common.Indexers
AddCategoryMapping(44, TorznabCatType.ConsoleXbox360, "XBOX360.E");
AddCategoryMapping(54, TorznabCatType.ConsoleXbox360, "XBOX360.JTAG");
AddCategoryMapping(43, TorznabCatType.ConsoleXbox360, "XBOX360.NTSC");
AddCategoryMapping(96, TorznabCatType.Console, "NSW");
AddCategoryMapping(23, TorznabCatType.Audio, "MUSIQUES");
AddCategoryMapping(26, TorznabCatType.Audio, "CLIP/CONCERT");
@@ -110,14 +114,17 @@ namespace Jackett.Common.Indexers
AddCategoryMapping(60, TorznabCatType.AudioMP3, "MP3");
AddCategoryMapping(30, TorznabCatType.TV, "SERIES");
AddCategoryMapping(73, TorznabCatType.TV, "Pack TV");
AddCategoryMapping(31, TorznabCatType.TV, "Series FR");
AddCategoryMapping(32, TorznabCatType.TV, "Series VO");
AddCategoryMapping(33, TorznabCatType.TV, "Series VO-STFR");
AddCategoryMapping(77, TorznabCatType.TVSD, "Series.DVD");
AddCategoryMapping(67, TorznabCatType.TVHD, "Series.FR.HD");
AddCategoryMapping(68, TorznabCatType.TVHD, "Series.VO.HD");
AddCategoryMapping(69, TorznabCatType.TVHD, "Series.VOSTFR.HD");
AddCategoryMapping(73, TorznabCatType.TVSD, "Series Pack FR SD");
AddCategoryMapping(92, TorznabCatType.TVHD, "Series Pack FR HD");
AddCategoryMapping(93, TorznabCatType.TVSD, "Series Pack VOSTFR SD");
AddCategoryMapping(94, TorznabCatType.TVHD, "Series Pack VOSTFR HD");
AddCategoryMapping(31, TorznabCatType.TVSD, "Series FR SD");
AddCategoryMapping(32, TorznabCatType.TVSD, "Series VO SD");
AddCategoryMapping(33, TorznabCatType.TVSD, "Series VOSTFR SD");
AddCategoryMapping(77, TorznabCatType.TVSD, "Series DVD");
AddCategoryMapping(67, TorznabCatType.TVHD, "Series.FR HD");
AddCategoryMapping(68, TorznabCatType.TVHD, "Series VO HD");
AddCategoryMapping(69, TorznabCatType.TVHD, "Series VOSTFR HD");
AddCategoryMapping(47, TorznabCatType.TV, "SPECTACLES/EMISSIONS");
AddCategoryMapping(71, TorznabCatType.TV, "Emissions");
@@ -128,10 +135,6 @@ namespace Jackett.Common.Indexers
AddCategoryMapping(65, TorznabCatType.TVSport, "UFC");
AddCategoryMapping(37, TorznabCatType.XXX, "XXX");
foreach (var certificateHash in certificateHashs)
webclient.AddTrustedCertificate(new Uri(SiteLink).Host, certificateHash);
}
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
@@ -273,7 +276,7 @@ namespace Jackett.Common.Indexers
}
else
{
release.PublishDate = DateTime.ParseExact(added.TextContent.Trim(), "dd.M.yyyy HH:mm", CultureInfo.InvariantCulture);
release.PublishDate = DateTime.ParseExact(added.TextContent.Trim(), "dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture);
lastDate = release.PublishDate;
}

View File

@@ -31,7 +31,7 @@ namespace Jackett.Common.Indexers.Feeds
SearchAvailable = true,
TVSearchAvailable = false,
MovieSearchAvailable = false,
SupportsImdbSearch = false,
SupportsImdbMovieSearch = false,
SupportsTVRageSearch = false
};

View File

@@ -47,7 +47,7 @@ namespace Jackett.Common.Indexers
Language = "ro-ro";
Type = "private";
TorznabCaps.SupportsImdbSearch = true;
TorznabCaps.SupportsImdbMovieSearch = true;
AddCategoryMapping(24, TorznabCatType.TVAnime, "Anime");
AddCategoryMapping(11, TorznabCatType.Audio, "Audio");
@@ -120,8 +120,8 @@ namespace Jackett.Common.Indexers
}
queryCollection.Add("cat", cat);
queryCollection.Add("searchin", "0");
queryCollection.Add("sort", "0");
queryCollection.Add("searchin", "1");
queryCollection.Add("sort", "2");
searchUrl += "?" + queryCollection.GetQueryString();

View File

@@ -46,7 +46,7 @@ namespace Jackett.Common.Indexers
Encoding = Encoding.GetEncoding("windows-1255");
Language = "he-il";
Type = "private";
TorznabCaps.SupportsImdbSearch = true;
TorznabCaps.SupportsImdbMovieSearch = true;
TorznabCaps.Categories.Clear();
// סרטים

View File

@@ -298,7 +298,7 @@ namespace Jackett.Common.Indexers
release.Title = release.Title.Replace(", Neutral Leech!", "");
if (stickyGroup) // AND match for sticky releases
if ((query.ImdbID == null || !TorznabCaps.SupportsImdbSearch) && !query.MatchQueryStringAND(release.Title))
if ((query.ImdbID == null || !TorznabCaps.SupportsImdbMovieSearch) && !query.MatchQueryStringAND(release.Title))
continue;
var Size = qSize.TextContent;

Some files were not shown because too many files have changed in this diff Show More