Compare commits

...

938 Commits

Author SHA1 Message Date
Garfield69
2f91d99e19 icetorrent: fix login. resolves #7321
update categories
fix imdb selector
fix files selector
2020-02-25 20:00:02 +13:00
Garfield69
65e93ce137 azure-pipeline: add replace for GitHub release attachements upload. 2020-02-25 18:51:27 +13:00
Jorman
0784e0784c btdb: fetch up to 100 rows (#7319) 2020-02-25 18:23:54 +13:00
Diego Heras
963616fe07 Revert "webui: reduce favicon.ico size. removed 256px, 128px, 64px icons (#7307)" (#7315)
This reverts commit d82c11650c.
2020-02-25 08:18:33 +13:00
Garfield69
e407067c8b add bteye a public dht crawler. resolves #7247 2020-02-25 08:13:00 +13:00
tide4cw
a8ba61fc9d Add torrentview a Korean public site. (#7313) 2020-02-24 20:05:57 +13:00
Garfield69
bbc360be00 add erzsebet a semi-rpivate Russian 3x site. resolves #7252 2020-02-24 17:48:07 +13:00
Diego Heras
d82c11650c webui: reduce favicon.ico size. removed 256px, 128px, 64px icons (#7307) 2020-02-24 09:42:27 +13:00
Diego Heras
6067a4ff73 core: add logger trace with proxy information (#7306) 2020-02-24 09:39:49 +13:00
Diego Heras
8c344b2917 core: reduce log traces in info level. add start/stop log traces (#7305) 2020-02-24 09:38:59 +13:00
Diego Heras
62769325b4 core: increase log size to 2 MB (#7303) 2020-02-24 09:33:51 +13:00
Diego Heras
a96b3841b0 webui: improve server logs modal (#7302) 2020-02-24 09:31:01 +13:00
Garfield69
a3dcb0455a btdb: new layout. resolves #7308 2020-02-24 09:27:15 +13:00
Diego Heras
5d808e006d webui: fix search encode in url hash. resolves #7265 (#7299) 2020-02-23 16:30:57 +13:00
fnk93
694c39503b The Resurrection: Fix multiple logins (#7298) 2020-02-23 08:44:41 +13:00
Diego Heras
12b2de2725 iptorrents: remove login with user/pass. resolves #7063 resolves #6850 resolves #6485 resolves #6402 resolves #4624 (#7294) 2020-02-23 08:34:14 +13:00
Diego Heras
d806bb18a2 core: improve cookie configuration help (#7293) 2020-02-23 08:31:38 +13:00
Sen Jiang
5a02bb9c27 btschool: use cookie (#7290)
Got all kinds of error using username and password
2020-02-23 08:29:00 +13:00
Garfield69
a3dc1b295b bitspyder: fix login. resolves #7287
also add sort options in config
2020-02-22 13:36:28 +13:00
Garfield69
471ab7f204 btnext: add info note about classic theme. #7208
also add sort options to the config.
and update the categories.
add movie-search.
2020-02-22 11:06:13 +13:00
Garfield69
bdcdd78cee torrent9clone: new domain .pl resolves #7282 2020-02-22 10:33:07 +13:00
junglebus
966c64c48e No longer manually install ChromeDriver (#7271) 2020-02-22 08:03:15 +13:00
Patrick Koenig
d5724f2f63 Change cookie SameSite from None to Lax (#7269) 2020-02-22 08:02:28 +13:00
Garfield69
3ecdbfe7f4 gay-torrentsorg: now private again. resolves #7268 2020-02-21 12:55:10 +13:00
Garfield69
b1ad8ed0bf hddolby: is now private. resolves #7267 2020-02-21 12:48:57 +13:00
junglebus
3a35e4e40a Windows service and Tray: NET Core only (#7258)
We no longer need to support NET461 for Tray and Windows service since these are for Windows users only
2020-02-21 08:55:45 +13:00
junglebus
0d58b2d63f Don't check cert store on Mono 6 (#7260) resolves #7223 2020-02-21 07:55:46 +13:00
junglebus
3c596c978c Stop building on Appveyor (#7259)
Now that we are successfully building and releasing on Azure Pipelines, there is no need to build on Appveyor as well
2020-02-21 07:06:12 +13:00
Garfield69
cc2a69cc77 film-paleis: gone private #7254
also requires thanks before download
2020-02-20 21:07:16 +13:00
Garfield69
7627671900 torrentcsv: fix empty search error. resolves #7255 2020-02-20 17:28:27 +13:00
Garfield69
4a4af3d8c8 r4e: update for unit3d 2.2.7 resolves #7257
plus add new categories
add posters
2020-02-20 17:01:55 +13:00
Jonas Stendahl
950d38a651 Add codec and medium filters to HDBits API (#7209)
* Add codec and medium filters to HDBits API

* Add checkboxes support to CardigannIndexer

* Expose multi-select as template variable

* update datestamp to force cache refresh

Co-authored-by: garfield69 <garfield69@outlook.com>
2020-02-20 09:23:55 +13:00
Garfield69
49d4c3248c remove vanila, now using mediaget client. #4003 2020-02-20 07:33:09 +13:00
Garfield69
3da168ef6c prostylex: now semi-private. resolves #7248 2020-02-20 07:23:28 +13:00
Garfield69
d4da96559f moviesdvdr: new domain .co. #7244 2020-02-19 07:40:41 +13:00
Garfield69
084c89d9db prostylex: prevent task cancelled by using cookie. 2020-02-18 14:03:19 +13:00
Jonas Stendahl
6a913f79d4 TorrentLeech: Add support for IMDb search (#7235) 2020-02-18 10:29:32 +13:00
fnk93
938c1f1de0 The Resurrection: Changed parameter name for categories (#7234) 2020-02-18 06:23:12 +13:00
Garfield69
480f2ebfeb hdtorrentsit: switch to https #7221 2020-02-17 21:49:48 +13:00
Garfield69
b32869badd greekteam: switch to https: #7221 2020-02-17 21:04:45 +13:00
Garfield69
f2c6eadb89 add pornleech a public 3x site. resolves #7227 2020-02-16 15:21:14 +13:00
Garfield69
1f79f4a165 femdomcult: add missing cats.
dd config sort option
2020-02-16 09:40:16 +13:00
Garfield69
fa917dd66c switch to https assorted indexers. #7221 2020-02-16 06:51:41 +13:00
Garfield69
dcd10211e2 engine tag luminance. #6822 2020-02-15 18:25:37 +13:00
Garfield69
3271efe478 add eggmeon a private site. resolves #7133 2020-02-15 18:24:38 +13:00
Garfield69
c3ea12694c datascene: site forcing https 2020-02-15 16:17:49 +13:00
fnk93
1375b62cf9 TFA: Remove leading [Release Group] / [Req] combination from title (#7217) 2020-02-15 15:25:28 +13:00
junglebus
8a9e29a2ac Use ComImport to create shortcut (#7218)
* Use ComImport to create shortcut

Using the url shortcut wasn't reliable
2020-02-15 12:04:33 +11:00
Garfield69
ccaa0c5255 elitetorrent.biz: new domain .bz resolves #7215 2020-02-15 10:29:09 +13:00
Garfield69
e2b2346eb2 film-paleis: fix login error detection. resolves #7216 2020-02-15 10:25:58 +13:00
fnk93
a82c3cf963 TFA: Fix if enabled download via HTTPS (#7214) 2020-02-15 09:51:07 +13:00
Garfield69
cab1184f13 engine tags: resolves #6822 2020-02-15 09:48:27 +13:00
Lukas Loibnegger
46f03dbb6d newrealworld: Fix parsing (#7212) resolves #7195 2020-02-15 07:08:54 +13:00
Garfield69
196ca5e83d Merge branch 'master' of https://github.com/Jackett/Jackett 2020-02-15 07:05:36 +13:00
Garfield69
3e89a2f364 ibit: change sort options. resolves #7180 2020-02-15 07:05:32 +13:00
garfield69
3ab620af28 Immortuos: auto switch sitelink. #7206 2020-02-15 03:59:43 +13:00
Garfield69
3d8a761524 add badasstorrents a public site. resolves #7196 2020-02-14 17:38:49 +13:00
Garfield69
848ec59b18 add tfa a privat eGerman site. resolves #7072 2020-02-14 16:04:27 +13:00
Garfield69
e409179b74 pirateiro: set language to en-us #7070 2020-02-14 07:16:17 +13:00
Garfield69
e977ba521c add p2pelite a private ebook tracker. resolves #7126 2020-02-13 19:37:15 +13:00
Garfield69
a193bfe3e7 add magnet4you a public magnet search engine. resolves #7115 2020-02-13 17:10:33 +13:00
Garfield69
1bf05e3934 add 7torrents a public dht crawler. resolves #7098 2020-02-13 16:45:08 +13:00
Garfield69
2f724b4de0 add twilightszoom a private music site. resolves #7080 2020-02-13 16:03:20 +13:00
Garfield69
585147d43c scenepalace: fix date and banners. 2020-02-13 16:02:35 +13:00
Garfield69
19043ea2b3 add torrent4you a public site. resolves #7071 2020-02-13 11:31:22 +13:00
Garfield69
332c4eea73 add pirateiro a Spanish Public site. resolves #7070 2020-02-13 09:26:46 +13:00
Garfield69
f8e5d67049 add korsar a semi-private Russian site. resolves #7052 2020-02-12 20:24:06 +13:00
fnk93
283429f125 Immortuos: new domain (#7189) resolves #7177 2020-02-12 12:04:07 +13:00
fnk93
32207cf1a4 The Resurrection: Add download volume, upload volume and min seed time (#7188) 2020-02-12 09:28:34 +13:00
Anthony Snavely
cf06cd3541 redacted, orpheus: Add session cookie workaround for 2FA users (#7187) resolves #5912 2020-02-12 08:40:41 +13:00
garfield69
afd9566388 Update CONTRIBUTING.md 2020-02-11 22:31:29 +13:00
garfield69
c976ab8d9a Update no_information_provided.md 2020-02-11 17:57:47 +13:00
garfield69
fbecbea7be Update ISSUE_TEMPLATE.md
add proxy question.
2020-02-11 17:33:52 +13:00
Garfield69
438714a527 add WDT a private site. resolves #7033 2020-02-11 16:21:45 +13:00
Cory
348dddfbee core: Apply declarations styles (#7166) 2020-02-11 11:16:19 +13:00
Diego Heras
e13cee2e95 doc: new jackett screenshot (#7173) 2020-02-11 11:15:45 +13:00
Garfield69
5c0f028cca add hddisk a private Chinese site. resolves #7018 2020-02-11 10:38:12 +13:00
fnk93
58b6272e1e The Resurrection: fix downloading .torrent (#7178) 2020-02-11 07:40:34 +13:00
Yuri Moens
2ed11bd562 orpheus: fix free leech token option breaking the tracker (#7179) resolves #7136 2020-02-11 07:33:10 +13:00
Garfield69
5326d6b33f snowpt: correct language. #7017 2020-02-10 19:17:07 +13:00
Garfield69
6748738db3 add snowpt a private Chinese Anime site. resolves #7017 2020-02-10 19:14:12 +13:00
Cory
9efe27ca7a avistaz, privatehd, cinemaz: Remove string sanitising from search query (#7175) resolves #7167 2020-02-10 18:29:39 +13:00
fnk93
c0d7a85db3 Add the resurrection a private German site (#7174) 2020-02-10 13:12:00 +13:00
Diego Heras
cba78c299b internetarchive: fix array category (#7158)
* internetarchive: fix array category

* requested changes
2020-02-10 09:07:05 +13:00
Garfield69
f8048c7572 xwtorrents: windows-1252 encoding. resolves #6370 2020-02-10 07:57:12 +13:00
Diego Heras
3ee947c8a1 torrentfactory: add new private tracker. resolves #6740 (#7153) 2020-02-10 07:11:23 +13:00
Cory
98541ac6f8 core: Sort and remove usings (#7159) 2020-02-10 07:08:34 +13:00
Garfield69
c08f511d1e mactorrents: fix catalog processing. resolves #7157 2020-02-09 16:51:38 +13:00
Garfield69
53e2527c72 audiobookbay: fix size processing. resolves #7156 2020-02-09 16:13:46 +13:00
Diego Heras
e2310ea70b anidex: rewrite in C# to bypass DDOS. resolves #7036 resolves #6834 (#7142)
* Replace Cardigann Anidex indexer for C# impelementation

Add bypass for DDOS Guard

* Improve error messages from type conversions

* Add missing cookie check

* Fix index out of range exception

* Change error handling to only warn about DDoS bypass exceptions

This is so that searches will still be attempted if there are issues with the DDoS protection (e.g. if it is removed).

* Improve error handling and clean up code

* pending changes
2020-02-09 15:43:32 +13:00
Cory
c12da520a4 Run dotnet format on solution (#7145) 2020-02-09 15:35:16 +13:00
Garfield69
2fe1e03da9 torlock: correct date processing. 2020-02-09 09:50:10 +13:00
Garfield69
7543b9ef35 gamestorrents: size can be undefined. resolves #7144 2020-02-09 09:12:06 +13:00
junglebus
4809ee1383 Use latest 3.1 SDK (#7141) 2020-02-08 20:49:36 +11:00
junglebus
2d56ce11b7 GetExecutingAssembly points to the DLL on .NET Core not the exe (#7140) 2020-02-08 20:38:07 +11:00
Garfield69
af6c7b530b channelx: new domain .xyz 2020-02-08 20:36:19 +13:00
Diego Heras
cee7ceb1f6 iptorrents: show bad cookie error. resolves #5164 (#7137) 2020-02-08 19:11:11 +13:00
Diego Heras
f770596354 core: fix form encoding. resolves #4346 resolves #3061 (#6994) 2020-02-08 19:03:03 +13:00
Diego Heras
77a2264164 newpct: remove deleted torrents. resolves #7074 (#7135) 2020-02-08 14:49:33 +13:00
Diego Heras
48a9765c48 iptorrents: cosmetic code changes (#7134) 2020-02-08 14:47:17 +13:00
Garfield69
e5784503b5 add leaguehd a Chinese Private site. resolves #7016 2020-02-08 08:43:29 +13:00
Garfield69
9693a9890f add hdtime a Chinese Private site. resolves #7015 2020-02-07 21:41:32 +13:00
Garfield69
0593f30115 add torrentleech.pl a privat ePolish site. resolves #7014 2020-02-07 18:18:52 +13:00
Garfield69
9e37ef0c02 torrentproject2: seeders can be n/a 2020-02-07 14:53:09 +13:00
Garfield69
c22b2b3ea6 torrentproject2: leechers can be n/a resolves #7124 2020-02-07 14:51:58 +13:00
Garfield69
24c907961c microbit: correct cat11 2020-02-07 14:51:04 +13:00
Diego Heras
35b606805f internetarchive: fix array title (#7125) 2020-02-07 12:17:58 +13:00
Garfield69
f8f0c5d907 add microbit, a Hundarian private site. resolves #7007 2020-02-07 08:46:38 +13:00
Jonas Dellinger
1715f0fda4 core: API - "configured" parameter (#7120)
Add support for a "configured" parameter in the API 2.0. Only return configured indexers if true.
2020-02-07 07:22:46 +13:00
garfield69
054e0e6440 Update no_information_provided.md 2020-02-07 07:20:24 +13:00
Garfield69
1a0b62540e downloadville: fix size. resolves #7121 2020-02-07 07:14:23 +13:00
Garfield69
5fbc92682a Merge branch 'master' of https://github.com/Jackett/Jackett 2020-02-07 06:37:05 +13:00
Garfield69
5be778c28c tazmania-den: gone. removed. #5713 2020-02-07 06:37:00 +13:00
junglebus
acb2cef2b4 Look in drop folder for artifacts 2020-02-06 20:58:40 +11:00
junglebus
1a85cb3e22 Add Azure-Pipelines build status badge (#7119) 2020-02-06 20:49:19 +11:00
junglebus
614372a272 Update azure-pipelines.yml 2020-02-06 20:32:56 +11:00
junglebus
234433ba8a Update azure-pipelines.yml for Azure Pipelines 2020-02-06 19:58:11 +11:00
junglebus
d124fa9cde Update GitHub Connection 2020-02-06 19:27:15 +11:00
Cory
4d05ab3fbc Add code style guide and update documentation to reflect changes (#7045) 2020-02-06 19:39:44 +13:00
junglebus
43ddc7a854 Add Azure Pipelines support (#7024)
* Add Azure Pipelines support

* Move to correct folder

* Make display names clearer
2020-02-06 18:35:47 +13:00
Diego Heras
5bb163d521 core: show configuration dialog when GetConfigurationForSetup fails (#7104) 2020-02-06 17:01:46 +13:00
Garfield69
056f683de3 myAmity: fix title. resolves #7100
also add anime, movies/uhd and tv/sport categories
2020-02-06 16:38:43 +13:00
Garfield69
a164cfe010 twilight: add freeleech-with-expiry-date. resolves #7116 2020-02-06 15:44:37 +13:00
Diego Heras
6b51888919 divxtotal: fix error when the search has exactly 15 results (#7105) 2020-02-06 15:28:19 +13:00
feffe
daa1149bd3 AnimeBytes: fix RAW tag setting (#7066) resolves #7027 2020-02-06 15:27:26 +13:00
junglebus
b9dbba280b core: Add artifact name for Windows .NET Core (#7028) 2020-02-06 15:22:54 +13:00
junglebus
b6e8f7261e core: Add Integration Tests (#7023)
Add some basic integration tests for Jackett
2020-02-06 15:22:11 +13:00
junglebus
67750982bc core: Allow unit tests to run in non-Windows environments (#7022) 2020-02-06 15:21:48 +13:00
Jonas Dellinger
163b162b2d torrentz2: Fix sorting of torrents (#7114) 2020-02-06 15:21:08 +13:00
Garfield69
9f03831321 glodls: handle missing category. resolves #7113 2020-02-06 15:19:38 +13:00
Garfield69
48d793fcd2 ibit: handle missing size. resolves #7111 2020-02-06 13:39:43 +13:00
Garfield69
574bd29108 attv: handle missing category. resolves #7110 2020-02-06 10:07:03 +13:00
Garfield69
e215870735 extratorrent: handle missing category or no-hits. resolves #7108
also handle some date exceptions.
2020-02-06 09:53:39 +13:00
Garfield69
f718052e4a ettv: handle size=N/A resolves #7107 2020-02-06 09:14:45 +13:00
Garfield69
c1e71a9df2 piratbit: fix title. resolves #7106 2020-02-06 09:08:09 +13:00
Garfield69
d031371083 torrentlt: use cookie method. resolves #7051 2020-02-06 08:22:51 +13:00
Garfield69
dbb3234bf1 yggtorrent: new domain .se #7095 2020-02-05 17:25:23 +13:00
Garfield69
9157294dc0 oxtorrent: handle not-found result. resolves #7093 2020-02-05 13:08:43 +13:00
Garfield69
6f8afcf584 extratorrent: resolves #7068 2020-02-05 12:43:13 +13:00
Garfield69
7b57510507 btsow: new domain btio.pw resolves #7092 2020-02-05 12:41:27 +13:00
Garfield69
42ec8b63a3 index.html: update changed stamps for #7037 to flush cache 2020-02-02 08:21:26 +13:00
Justinas
a43522e4db torrentlt: add missing categories (#7041) 2020-02-02 08:12:37 +13:00
Diego Heras
694c61990d mejortorrent: rewrite from scratch. sonarr & raddar support. resolves #6988 resolves #5587 resolves #3754 resolves #3869 (#7026) 2020-02-02 07:39:19 +13:00
Diego Heras
f488cab31b webui: improve search filter and pagination style (#7037) 2020-02-02 07:35:37 +13:00
Diego Heras
72ff71de9a webui: add copied to clipboard notification (#7038) 2020-02-02 07:35:20 +13:00
Diego Heras
41beca0afc internetarchive: add new public tracker. resolves #3603 (#7042) 2020-02-02 07:32:00 +13:00
feffe
be7bd4ea22 AnimeBytes: Fix synonym setting AB (#7056) #7027 2020-02-02 07:31:04 +13:00
Diego Heras
8744fd3fa1 core: fix blackhole download for relative uris. resolves #5935 (#7057) 2020-02-02 07:29:17 +13:00
Garfield69
7d87b3287b hdtorrentsit: add info note about IP filter. #7053 2020-02-02 07:22:20 +13:00
Garfield69
6752eb6321 YTS: new domain .mx #7062 2020-02-02 07:20:51 +13:00
Garfield69
36f91abc35 rutracker: add captcha info to config. https://github.com/Jackett/Jackett/pull/6994#issuecomment-577585897 2020-01-26 10:18:25 +13:00
Garfield69
6fc1992851 gktorrent: new domain .io #7071 2020-01-26 08:30:40 +13:00
Garfield69
fadaa9eb7a BakaBT: add config note about adult-content settings. #7013 2020-01-25 19:47:37 +13:00
Marcelo Castagna
cd239498c0 tray: cleanup code (#7011) 2020-01-25 13:39:08 +13:00
Garfield69
b0e5c2e7a9 YTS: add support for 2160p tagging. resolves #7010 2020-01-25 13:38:20 +13:00
Garfield69
7200ba9660 torrentday: re-instate tday.love as primary domain. resolves #6998 2020-01-23 07:03:55 +13:00
junglebus
620a09858c Make tests run on .NET Core as well (#6997)
* Make tests run on .NET Core as well

* Only run net461 tests against full framework build

* Add support for running full framework tests on linux
2020-01-23 06:42:23 +13:00
Garfield69
5bd4f7c364 engine tags. #6822 2020-01-21 19:00:36 +13:00
Garfield69
bf7f5d4fd8 themoviecave. gone. removed. #5710 2020-01-21 18:44:58 +13:00
Diego Heras
40a0cc70bf rarbg: add sort configuration. resolves #6949 (#6989) 2020-01-21 15:25:19 +13:00
Garfield69
65ac2c8339 estrenosdtl: size can be missing. resolves #6985 2020-01-21 10:33:22 +13:00
Garfield69
b58d1d6bea torrentwal: back to old domain. resolves #6986 2020-01-21 10:22:57 +13:00
Jonas Stendahl
b60c6d132c HDBits with passkey login and assorted improvements. (#6980) 2020-01-21 10:15:22 +13:00
junglebus
67491cb4f6 Make Tray compatible with .NET Core (#6983)
By default .NET Core sets UseShellExecute to false due to being cross platform
2020-01-21 06:23:47 +13:00
Alexander Chapliuk
860168fe44 LostFilm: improvements. (#6981) resolves #6801 resolves #6945 resolves #2631 2020-01-20 12:09:10 +13:00
Garfield69
ad24dd4600 engine tags. #6822 2020-01-20 09:51:48 +13:00
Garfield69
dc0e37f3dc engine tags. #6822 2020-01-20 08:36:57 +13:00
vinanrra
dc7c84bec8 nyaasi: add [Spanish] at end of [PuyaSubs!] releases (#6979) 2020-01-20 06:53:55 +13:00
junglebus
e695f90c80 Remove COM reference for .NET Core (#6975)
* Remove COM reference for .NET Core

Removing only COM reference to get closer to having Jackett to run on .NET Core for Windows

* Handle resources

https://github.com/microsoft/msbuild/issues/4704

* Remove GenerateResourceUsePreserializedResources

* Remove System.Resources.Extensions
2020-01-20 06:50:12 +13:00
Garfield69
fe3ca03847 engine tags. #6822 2020-01-19 19:13:07 +13:00
Scott Cooper
962b29825b cili180: add missing links (#6974) 2020-01-19 12:30:58 +13:00
Garfield69
fa1cedb49d engine tags. #6822 2020-01-19 10:05:52 +13:00
Scott Cooper
7b7f600794 anirena: fix hentai category matching (#6971) 2020-01-19 08:38:25 +13:00
Garfield69
370a70ba26 engine tags. #6822 2020-01-18 18:26:04 +13:00
Garfield69
5a13b1253d engine tags. #6822 2020-01-18 11:20:53 +13:00
Garfield69
eba53cc4be crazycorner: support for new engine. 2020-01-18 10:25:05 +13:00
Garfield69
1dc3c98da8 engine tags. #6822 2020-01-18 07:52:11 +13:00
dimqua
c3f24eb788 casstudio: fix language code (#6969) 2020-01-18 07:28:28 +13:00
vinanrra
760c663259 torrentland: add language tags to titles (#6968)
Fixed the problem identifing results always as English now they will be identified as Spanish or English depending of title..
2020-01-18 07:26:35 +13:00
Garfield69
e3f44dbbce engine tags #6822 2020-01-17 09:27:12 +13:00
Garfield69
45c204e37b cili180: expired domain 2020-01-17 09:09:18 +13:00
Garfield69
752403fff1 girotorrent: layout changes. resolves #6966 2020-01-17 07:58:43 +13:00
Garfield69
6d78a8c218 nostalgic: new domain vhstapes.org 2020-01-17 07:35:21 +13:00
Garfield69
c25726dcd0 engine tags. #6822 2020-01-16 17:33:16 +13:00
Garfield69
8402275093 audionookbay: switch to public. resolves #6958
build magnet from infohash instead of using the download link (which required an a/c)
2020-01-16 16:58:44 +13:00
Garfield69
5a27395553 add brobits a Chinese private site. resolves #6956 2020-01-16 09:22:22 +13:00
Garfield69
837656ce3d nexusphp tags. #6822 2020-01-16 08:26:44 +13:00
Garfield69
a092a931a5 engine tags #6822 2020-01-15 19:32:25 +13:00
Garfield69
2368e2631b girotorrent: results layout changes. resolves #6946 2020-01-15 08:00:40 +13:00
Garfield69
ff1d818d5f bibliotik: drop files. resolves #6940 resolves #1443 2020-01-14 10:04:00 +13:00
Garfield69
2f8a093962 blutopia: switch to cookie login. resolves #6941 2020-01-14 08:33:36 +13:00
Garfield69
1ac309d513 casatorrent: prefix a plus to keywords. resolves #5078 2020-01-13 16:14:25 +13:00
Garfield69
1344499534 add rustorka a Russian semi-private site. resolves #6899 2020-01-13 09:57:10 +13:00
Diego Heras
7a1c8f9419 core: add rss url decode in download controller. resolves #4617 #6589 #4760 #6397 #5752 (#6936) 2020-01-13 07:14:36 +13:00
Diego Heras
92556a56c6 puntotorrent: fix new episode format and details link. resolves #6910 (#6935) 2020-01-13 07:14:06 +13:00
Diego Heras
5d4b252c32 estrenosdtl: fix old download links. resolves #6924 (#6934) 2020-01-13 07:10:27 +13:00
Garfield69
a39711d619 bit-titan: fx search. resolves #6932 2020-01-12 17:40:32 +13:00
Diego Heras
3d5c32b63a newpct: fix download link and remove duplicate episodes (#6933) 2020-01-12 16:25:26 +13:00
Diego Heras
f0d05b5a56 nitro: fix download link. resolves #6926 (#6931) 2020-01-12 16:23:53 +13:00
Garfield69
d460369545 efectodoppler: fix search. resolves #6929 2020-01-12 16:00:21 +13:00
Garfield69
5e8493bc9a xbytes2: grabs can be missing. resolves #6928 2020-01-12 11:46:31 +13:00
Garfield69
2513f7a473 torrentproject2: fix download. resolves #6927 2020-01-12 11:37:27 +13:00
Garfield69
11ad12abbe leporno: fix download. resolves #6925 2020-01-12 11:05:21 +13:00
Diego Heras
26564cdfbd set default value for MinimumRatio / MinimumSeedTime. resolves #6811 (#6921) 2020-01-12 07:07:19 +13:00
junglebus
748e1c4f2e No need to install Tar now (#6919)
Latest version of msys2 includes tar, so no need to manually install it
2020-01-12 07:05:13 +13:00
junglebus
dc87b36ae0 Package update (#6916)
4 packages updated -> Jackett is now using the latest version of all packages except for AutoMapper -> Will have a go at that another day -> There is a few changes needed

-Minor code changes made to support newer version of YamlDotNet and BencodeNET
-Logic update for AssemblyName as I've been experiencing restore 'weirdness'  https://stackoverflow.com/questions/208084/how-to-use-a-different-assembly-name-for-different-configurations
2020-01-12 07:04:24 +13:00
junglebus
17db2b5df3 Upgrade Tray and Service to use the newer csproj format (#6879)
https://natemcmaster.com/blog/2017/03/09/vs2015-to-vs2017-upgrade/

This change brings the remaining two projects (Tray and Service) onto the new csproj format. Along with making them simpler and cleaner, its a needed step to get Windows users onto .NET Core

Again, been a careful as possible, so hopefully nothing breaks. Would recommend merging this after .NET Core 3.1 commit gets released and a beta release for this as well
2020-01-12 07:04:04 +13:00
Diego Heras
584ea4cf01 divxtotal: add support for sonarr / radarr. resolves #6869 (#6911) 2020-01-11 20:48:12 +13:00
Diego Heras
2d9a6803c6 divxtotal: fix search with 0 results (#6908) 2020-01-11 20:08:18 +13:00
Diego Heras
6e8ff3fa08 bakabt: re-login when cookie expires. resolves #5486 (#6907) 2020-01-11 20:07:10 +13:00
Garfield69
ab2e41df75 add ibit a public magnet search engine. resolves #6772 2020-01-11 19:33:49 +13:00
Diego Heras
9413006524 cardigann: add attribute for download selector (#6891) 2020-01-11 17:52:11 +13:00
RicardoVelaC
74dcf37352 Hachede: Update categories (#6906) 2020-01-11 10:19:22 +13:00
Garfield69
c08e7ee827 pornbits: new domain .net. resolves #6905 2020-01-11 10:17:45 +13:00
Garfield69
a11f811c20 elitetorrent: new domain .li resolves #6904 2020-01-11 10:06:32 +13:00
Garfield69
77a1ce1670 ettv: drop torrent from end of titles. resolves #6903 2020-01-11 10:00:41 +13:00
Garfield69
4f7f495200 btnext: trap english no-resutls erorr. resolves #6897 2020-01-11 09:49:37 +13:00
Garfield69
835681fcfc thetorrents: merged with datascene. removed. resolves #6898 2020-01-11 09:24:39 +13:00
Garfield69
1ca8b1e8a4 animetosho: remove redundant / from url 2020-01-10 19:57:00 +13:00
Garfield69
02fc8cee0e torrentcsv: keyword-less search fix. resolves #6896
the anything mask has changed from * to %
2020-01-10 19:11:26 +13:00
junglebus
5405405d1a Crazyscorner: Fix error when starting Jackett (#6894) 2020-01-10 18:05:51 +13:00
Garfield69
953f9c7709 tfile: config option download magnet/.torrent. resolves #6870 2020-01-10 18:02:41 +13:00
Diego Heras
38efce8f2f hachede: fix date parsing. resolves #6884 (#6893) 2020-01-10 17:38:32 +13:00
Garfield69
85b5a1a1da add feedurneed a private site. resolves #6872 2020-01-10 17:32:15 +13:00
Garfield69
3ccd8b148e redstartorrent: fix login error selector 2020-01-10 08:27:53 +13:00
Garfield69
138297718d tsue tag #6822 2020-01-10 08:13:20 +13:00
Garfield69
eff0d3e332 torrentday. fix 7d073af14f #6880 2020-01-10 07:51:50 +13:00
Garfield69
0730b0bc64 add scenexpress a movies site. resolves #6859 # 2020-01-10 07:46:05 +13:00
junglebus
f14cdd4828 Fix InnoSetup warning (#6881)
This is to fix the InnoSetup warning during the build "Warning: Constant "pf" has been renamed. Use "commonpf" instead or consider using its "auto" form."

https://jrsoftware.github.io/issrc/whatsnew.htm

Unsure why DefaultDirName was "Program Files", but have updated it to ProgramData as per all other locations in the installer script
2020-01-10 07:18:27 +13:00
junglebus
e4a511347c Minor csproj tidy up (#6878) 2020-01-10 07:18:08 +13:00
junglebus
c2588d619f VS 16.4 required for .NET Core 3.1 (#6877) 2020-01-10 07:17:54 +13:00
Garfield69
7d073af14f torrentday: drop tday.love domain. resolves #6880 2020-01-10 07:08:07 +13:00
Garfield69
0605b66b67 tag TSUE engine. #6822 2020-01-09 19:16:03 +13:00
morpheus133
a89c7dedeb ImdbTVSearchSupport added for c# based indexers (#5791) 2020-01-09 16:32:02 +13:00
Diego Heras
9565469559 core: fix fuzzytime parser regression #6845. resolves #6861 (#6871) 2020-01-09 15:19:37 +13:00
Garfield69
dcda239b3f xbtit tags #6821
add xbtit engine tag
add config sort options if aplicable
add torrent per page info
2020-01-09 10:04:03 +13:00
Garfield69
7b8f2d4dab passionetorrent: gone. removed. #1147 2020-01-09 08:44:53 +13:00
Garfield69
003d37ab27 tfile: exclude torrents without size. #6870
because they will not have a download selector in the torrent details page.
2020-01-09 08:34:42 +13:00
Garfield69
32ea40cf82 xbytes2: tag xbtit engine #6821
aff torrent per page info
add sort config option
2020-01-09 08:08:15 +13:00
junglebus
d4f873e46f Update to .NET Core 3.1 (#6857)
Minor update from .NET Core 3.0. .NET Core 3.1 is the LTS version
2020-01-08 20:51:00 +13:00
Garfield69
5b91445d59 tag xbtit #6821 2020-01-08 20:46:38 +13:00
Garfield69
797cdb5b0b puntotorrent: add config sort options #6821
add xbtit tag
add torrent per page info
2020-01-08 20:26:20 +13:00
Garfield69
fdc4db3a5d torrentland: add config sort options. #6821
xbtit tag
torrent per page info
2020-01-08 20:15:39 +13:00
Garfield69
79aa770a9b crazycorner: correct sort 2020-01-08 19:32:20 +13:00
Garfield69
54cc92a6a1 crazycorner: music only. resolves #6860
add info for torrent per page
add music-search for lidarr
add xbtit tag
add thankyou for download (new requirement)
2020-01-08 19:03:23 +13:00
Garfield69
fb1683e8fa add the-madhouse a private site. #6860 2020-01-08 17:17:17 +13:00
Garfield69
6f4ae67fb2 demonoid: temp circumvention for #6861 2020-01-08 13:03:37 +13:00
Garfield69
2ee2dfc608 demonoid: correctly remove on from dateheaders. 2020-01-08 12:40:13 +13:00
Garfield69
6e9c312679 elitetracker: add vostfr to English replacement config option. resolves #6855 2020-01-07 21:05:03 +13:00
Garfield69
0beb82bbd6 add cili180 a DHT tracker. resolves #6795 2020-01-07 19:36:02 +13:00
Garfield69
76c9000393 gktorrent, oxtorrent: add config download optoin. resolves #6848 2020-01-07 15:05:42 +13:00
Diego Heras
9aedb34dc9 divxtotal: add new public spanish tracker. resolves #1293 (#6851) 2020-01-07 11:41:51 +13:00
Mário Franco
9ea09c4498 sounpark: fix download (#6844)
I'm getting this errors when downloading:
```
Error downloading soundpark https://sound-park.world/album/torrent-XXX
CardigannIndexer (soundpark): Download selector a[href^="/album/download-torrent/"] didn't match
```
2020-01-07 07:51:41 +13:00
Garfield69
96f74ee15a hachede: fix date parsing #6832
also add config sort options
2020-01-07 07:28:35 +13:00
Diego Heras
eb36aca641 vizuk: cosmetic change (#6846) 2020-01-07 06:38:33 +13:00
Diego Heras
603001a75c core: improve fuzzytime date parser to handle week days. resolves #6832 (#6845)
Previous version works well with dates like "Yesterday 15:30" or "Today 15:30"
Now it can handle "Monday 15:30" as well (means last Monday at 15:30 h)
2020-01-07 06:34:57 +13:00
Diego Heras
ab55c6af7c adds HD-Olimpo, private Spanish tracker. resolves #5142 (#6828) 2020-01-07 06:32:40 +13:00
Garfield69
ee37d5b8f0 1337x: add lidarr support. resolves #6841 2020-01-06 20:43:39 +13:00
Garfield69
3ccefe33b3 add torrentkitty a public magnet tracker. resolves #6833 2020-01-06 18:54:39 +13:00
takosine
48515cf3b9 Add bibliotik a private book tracker. resolves #1443 (#6840) 2020-01-06 17:24:15 +13:00
Garfield69
b891b24e26 vizuk: fix date. also allow English language. resolves #6832 2020-01-06 17:07:36 +13:00
Mário Franco
424370a1c3 Added Cardigann support for functions "and" and "or" in templates (#6787) resolves #6780
Fix soundpark search for lidarr
2020-01-06 15:13:21 +13:00
HDVinnie
e230fe25c0 legacyhd: fix a couple categories. (#6839) resolves #6837 2020-01-06 09:47:03 +13:00
takosine
b70f38b8ff PassThePopcorn: change login to support 2fa (#6823) resolves #6649 2020-01-06 09:43:54 +13:00
Garfield69
d8361f3486 extratorrent.ag: search engine on site broken for over a month. removed. resolves #6742 2020-01-06 08:50:51 +13:00
Garfield69
1188ad0a67 add extratorrent.cd a public site. #6742 2020-01-06 08:49:02 +13:00
Cory
391a4f8fec corsaro.red: fix bug in category searches (#6807) resolves #6307 2020-01-06 06:43:41 +13:00
Diego Heras
3534cfd3eb core: add downloading release message (#6826) 2020-01-05 19:51:39 +13:00
Diego Heras
45b205ddc3 core: security fix, authorization first in download / blackhole links (#6825) 2020-01-05 19:41:01 +13:00
Diego Heras
7e93a86ae0 core: fix magnet link encoding. resolves #5372 #4761 (#6824) 2020-01-05 19:31:32 +13:00
IIIspaceIII
9060d8acca filelist: fix login (#6827) resolves #6782 2020-01-05 19:12:19 +13:00
Garfield69
2dcf151396 vizuk: add missing categories
and config sort options
2020-01-05 15:35:14 +13:00
HDVinnie
1e84213f1a Add legacyhd, a private site. formerly HD4Free. (#6820) 2020-01-05 11:56:28 +13:00
Garfield69
6c1044e88c vizuk: ignore expired certificate. resolves #6810
also minor code tidyup
2020-01-05 08:31:29 +13:00
Diego Heras
727e33675c newpct: remove two compilation warnings (#6819) 2020-01-05 08:16:28 +13:00
Diego Heras
22f5b59393 solidtorrents: rewrite in c#. resolves #6681 (#6817) 2020-01-05 08:11:13 +13:00
Cory
e7a48c4234 Fix file location bug in paths with spaces during updates (#6814) resolves #6671 2020-01-05 07:49:53 +13:00
snamds
a865a697fa Newpct - Sites adjustment (#6812) 2020-01-05 07:47:31 +13:00
Diego Heras
ca8fbd081d mejortorrent: fix download urls and grabs. resolves #6449 (#6565) 2020-01-05 07:42:25 +13:00
Garfield69
0046fb2a13 hdreactor: fix search query. resolves #6806 2020-01-04 19:52:30 +13:00
Garfield69
cd39b17307 torrentdownload: refresh categories resolves #6805
change the category selector.
2020-01-04 19:30:01 +13:00
Garfield69
7e9aed1154 eztv: fix ulvf. resolves #6804 2020-01-04 18:51:55 +13:00
Garfield69
de3894e3dc firebit: improve category selection. resolves #6803 2020-01-04 18:30:15 +13:00
Garfield69
fca687a5c4 nyaasi: .torrent links can be missing. resolves #6802 2020-01-04 17:40:44 +13:00
Garfield69
1a8445dc6f acgrip: ignore expired certificate. 2020-01-04 15:21:45 +13:00
Garfield69
429e58c16e hone3hd.net: site broken for over a month. removed. resolves #5525 2020-01-04 12:45:30 +13:00
Garfield69
9220efcc18 update date translations for unit3d indexers. resolves #6786 2020-01-04 09:53:04 +13:00
Garfield69
b8ce4784eb seedfile: date translations 2020-01-04 09:44:25 +13:00
Garfield69
3e04d8ad92 Update README.md 2020-01-04 08:16:36 +13:00
Garfield69
976cfe9182 demonoid: public. resolves #6790 resolves #6716 2020-01-04 06:58:51 +13:00
Garfield69
38edc02df5 Revert "demonoid: switch to private mode. resolves #6716"
This reverts commit 8ced18b4c7.
2020-01-04 06:54:45 +13:00
dlmiheev
93aa1dd759 RuTracker: update existing category, add new one (#6785) 2020-01-04 06:50:08 +13:00
junglebus
201b6997ee readme: .NET Core 3 requires macOS 10.13 or greater (#6784)
https://github.com/dotnet/core/blob/master/release-notes/3.0/3.0-supported-os.md

https://github.com/Jackett/Jackett/issues/6769
2020-01-04 06:49:45 +13:00
ERR1R
8b34e80d5b digitalcore: Cookie workaround because captcha (#6779) resolves #6770
dc added a captcha system.. cookie workaround!
2020-01-04 06:49:08 +13:00
Garfield69
e098943b69 add tlfbits a Chinese private site. resolves #6765 2020-01-03 19:12:13 +13:00
Garfield69
c2174dfdb2 scenehd: ignore the new invalid certificate. resolves #6778 2020-01-03 17:01:59 +13:00
Garfield69
dc07c27531 add moecat a Chinese privat esite. resolves #6767 2020-01-02 17:23:05 +13:00
Garfield69
638586c36d torrentbd: new domain .net and support new engine. resolves #6761
refresh categories
new layout selectors
2020-01-02 16:12:26 +13:00
Garfield69
1f7403f6a5 girotorrent: add new categories
add config sort options
2020-01-02 08:26:57 +13:00
Garfield69
a3cb9ad079 add beitai a Chinese private site. resolves #6764 2020-01-01 20:28:29 +13:00
Garfield69
36a5895664 add 52pt a Chinese private site. resolves #6763 2020-01-01 19:53:36 +13:00
Garfield69
5b45cb438a torrentccf: add login captcha error trap 2020-01-01 19:17:58 +13:00
Garfield69
123a56f577 torrentccf: add config sort options
also handle both date types
2020-01-01 17:12:16 +13:00
Garfield69
6df77c762e Update README.md 2020-01-01 13:16:28 +13:00
Garfield69
51e556b369 add onlineselfeducation a private e-learning site. resolves #6759 2020-01-01 12:30:35 +13:00
Garfield69
aad9c3a9ec mteamtp2fa: cookie login for 2fa. resolves #6741 2019-12-31 18:23:11 +13:00
Garfield69
be329e0bbc bit-titan: new Search Engine. resolves #6748
new layout selectors
2019-12-31 16:15:10 +13:00
Benjamin Hesse
6cb77ab427 speedtorrent reloaded: removed .tableinborder from row selector (#6751) 2019-12-31 14:14:24 +13:00
Garfield69
d91c4891d8 add brasiltracker a Private Brazilian site. resolves #6745 2019-12-30 17:35:37 +13:00
Garfield69
72ab0e4a9f polishsource: add uhd category
delete 3d,dvd,bluray
add config sort options
2019-12-30 13:20:08 +13:00
Garfield69
8ced18b4c7 demonoid: switch to private mode. resolves #6716 2019-12-30 07:27:54 +13:00
thebluepotato
c3f4d9cc53 magnetdl: fix incorrect legacylink. (#6739) 2019-12-30 06:50:18 +13:00
Garfield69
9437d24f45 pornbits: more row selectors 2019-12-30 06:29:22 +13:00
Garfield69
352690e1cd add pornbits a private 3x site. resolves #6710 2019-12-29 22:31:53 +13:00
Garfield69
e217a97e23 totallykids: fix 0 results. resolves #6733 2019-12-29 20:32:02 +13:00
Garfield69
10353c7406 totallykids: add xBtit_Default style notice to config. resolves #6730
also add sort options
2019-12-29 12:22:34 +13:00
Garfield69
ee5686c5d6 piratbit: andmatch. #6719 2019-12-29 12:03:34 +13:00
Garfield69
d671a3dfba loporno: andmatch. #6719 2019-12-29 11:48:12 +13:00
Garfield69
9a876b7dc7 moviesdvdr: andmatch. #6719 2019-12-29 11:40:17 +13:00
Garfield69
00f4cfa50f estrenosdtl: andmatch. #6719 2019-12-29 11:37:09 +13:00
Garfield69
9cf7811a8e gamestorrent: andmatch. #6719 2019-12-29 11:32:38 +13:00
Garfield69
458a797fb8 torlock: handle today/yesterday dates. resolves #6728 2019-12-29 11:26:44 +13:00
Garfield69
c13653f3b9 oxtorrent: add new category xxx. resolves #6714 2019-12-29 10:32:38 +13:00
Garfield69
f9f7978a07 gktorrent: add new category xxx. resolves #6712 2019-12-29 10:27:01 +13:00
Garfield69
a2d3811736 torrentland: refine row selection to prevent errors. resolves #6711 2019-12-29 10:21:10 +13:00
Garfield69
583d575a77 btsow: new title selector. resolves #6720 2019-12-29 10:01:13 +13:00
Garfield69
e47c59eca3 idope: fetch 2 pages to bump total to 20 results. resolves #6722 2019-12-29 08:28:33 +13:00
Garfield69
74e0d12a72 finvip: add style notice to config. #6723 2019-12-29 07:58:30 +13:00
Garfield69
788fef5ce6 galeriens: new domain .com 2019-12-28 17:20:56 +13:00
Garfield69
a3f5ef6acf katli: new domain kickass.ws 2019-12-28 17:06:12 +13:00
Garfield69
2bc130a93a torrentwal: new domain *2.com 2019-12-28 17:02:01 +13:00
Garfield69
897ebe4b14 add nordichd a private site. resolves #6708 2019-12-28 16:57:58 +13:00
Garfield69
c9537128dd add extremetorrents a private Dutch site. resolves #5057 2019-12-28 10:10:56 +13:00
Uilton Oliveira
f0b46a1873 BJShare: Improve search result compatibility with Sonarr on few more TV Shows / Animes (#6692) 2019-12-28 09:04:43 +13:00
Garfield69
7291efebae add finvip a Finnish Private site. resolves #6675 2019-12-25 11:35:42 +13:00
Garfield69
3851d8352e add filebase a Russian Public site. resolves #6669 2019-12-25 08:57:35 +13:00
Garfield69
0cd46efe35 add extremlymtorrents a semi-private site. resolves #6668 2019-12-24 18:02:11 +13:00
Garfield69
1433ffcd13 rptorrents: fix sort is->id 2019-12-24 16:41:31 +13:00
Garfield69
450bc8b5ff add cinemamovies a Polish private site. resolves #6667 2019-12-24 15:54:24 +13:00
Garfield69
4eadff404a btdb: add seeders to config sort option 2019-12-24 07:13:44 +13:00
Garfield69
213141f55e btdb: add seeders/leechers drop grabs. resolves #6673 2019-12-24 06:35:03 +13:00
Cory
370f95f888 720pier: Fix login and search parsing (#6670) resolves #6368 2019-12-24 06:17:48 +13:00
Garfield69
7c8ad8ac41 torrentz2: fix categories 2019-12-23 19:21:47 +13:00
Garfield69
f7401d6344 Update README.md 2019-12-23 18:51:42 +13:00
Garfield69
e85ffec947 elite-tracker: add multi config option. resolves #5064
add cat 97
fix category selector
fix longtitle processing
2019-12-23 10:01:32 +13:00
Jonas Stendahl
cf1f70d581 TorrentBytes: Remove trailing whitespace (#6663) 2019-12-23 06:58:01 +13:00
Garfield69
e0161487fd add broadcity a Turkish private site. resolves #6662 2019-12-22 10:58:30 +13:00
Garfield69
92946670b6 ztracker: size can be mising
add config sort options
2019-12-22 10:23:44 +13:00
Garfield69
4f2ef558ad zooqle: add config sort options 2019-12-22 10:04:49 +13:00
Garfield69
9b0c4c8ed2 yggtorrent: add config sort options 2019-12-22 09:51:15 +13:00
Garfield69
7ae1b57ddd xtremefile: add config sort option 2019-12-22 09:17:54 +13:00
Garfield69
246bf48aba vanila: add config sort options
add login remember and hidepresence
2019-12-22 08:59:45 +13:00
Garfield69
41cbbe5818 unlimitz: add config sort options 2019-12-22 08:45:19 +13:00
Garfield69
66964f9b58 inionfansub: add config sort options 2019-12-22 08:27:24 +13:00
Garfield69
c2123de964 add netcosmo an Italian private site. resolves #6657 2019-12-22 06:57:50 +13:00
Garfield69
b81147812c twilight: add config sort optoins 2019-12-21 20:19:11 +13:00
Garfield69
27a8b8dda4 turktorrent" refresh categories
add config sort option
2019-12-21 20:10:13 +13:00
Garfield69
bc88f98cf4 tribalmixes: add config sort options 2019-12-21 19:46:56 +13:00
Garfield69
af32e419ae torrentz2: update categories
add config sort options
2019-12-21 19:31:40 +13:00
Garfield69
c68d0f27b8 torrentslocal: add config sort options 2019-12-21 17:40:44 +13:00
Garfield69
593680f8d3 torrentquest: return movies and tv when using the TEST button. (sonarr radarr support)
add config sort options
2019-12-21 16:58:35 +13:00
Garfield69
0b59811c77 torrentproject2: add config sort option 2019-12-21 16:17:20 +13:00
Garfield69
c836fa7a74 torrentland: refresh cats 2019-12-21 16:04:40 +13:00
Garfield69
172f71de81 torrentgalaxy: add config sort options 2019-12-21 15:48:56 +13:00
Garfield69
3d582fe851 torrentdownload: add config sort option 2019-12-21 15:36:41 +13:00
Garfield69
8f18304257 torrent-turk: refresh categories
add config sort options
2019-12-21 15:24:58 +13:00
Garfield69
c4e1db0f8a tapochek: download link is required for sonarr radarr. resolves #6654 2019-12-21 11:28:01 +13:00
Garfield69
9044d17d3f torrentexplosiv: add config sort options 2019-12-21 11:01:51 +13:00
Garfield69
83c55f4a43 tsc: add config sort options 2019-12-21 10:48:17 +13:00
Garfield69
5650734a5d toros: add config sort options 2019-12-21 10:34:42 +13:00
Garfield69
8791a8d30b theaudioscene: add config sort option 2019-12-21 10:26:38 +13:00
Garfield69
2fa6db38f6 theshinning: fix date selector
add config sort options
add imdb selector
add comment selector
refresh dlvf and ulvf
2019-12-21 09:07:47 +13:00
Garfield69
318ff175a5 thehorrorcharnel: refresh categories
implement category filter
add config sort options
add banner
fix login use_ssl flag
2019-12-21 08:25:11 +13:00
Garfield69
b9f9c6a136 tellytorrent: add config sort options 2019-12-21 07:01:51 +13:00
Garfield69
257f2928f4 tapochek: add config sort options 2019-12-21 06:22:45 +13:00
Garfield69
3091393470 sukebemyaasi: add config sort options 2019-12-20 20:37:56 +13:00
Garfield69
a5a5821e84 sukebei-pantsu: add config sort options 2019-12-20 20:25:04 +13:00
Garfield69
6e71e32185 sportscult: add config sort options 2019-12-20 20:16:02 +13:00
Garfield69
cbb338a52e solidtorrents: add config sort option 2019-12-20 20:02:19 +13:00
Garfield69
c4f3de644d skytorrentsclone: add config sort option 2019-12-20 19:40:45 +13:00
Garfield69
1266773e9b siambit: add config sort options 2019-12-20 17:14:34 +13:00
Garfield69
0850fc3b9a sharewood: update categories 2019-12-20 17:02:47 +13:00
Garfield69
152bcf14c4 sharewood: add config sort options 2019-12-20 16:36:58 +13:00
Garfield69
609821afa3 shareuniversity: add config sort options 2019-12-20 16:31:46 +13:00
Garfield69
88843a4e0e shareisland: add config sort options 2019-12-20 16:25:19 +13:00
Garfield69
f54541b299 scenerush: add config sort options 2019-12-20 16:12:02 +13:00
Garfield69
094dbbcd06 scenepalace: add config sort options 2019-12-20 16:03:43 +13:00
Garfield69
874ac222c5 rutor: add config sort option 2019-12-20 14:03:50 +13:00
Garfield69
e1897f05b2 rptorrents: refresh categories
add config sort order
2019-12-20 11:06:27 +13:00
Garfield69
8c37db63f7 rockbox: add config sort options 2019-12-20 10:50:28 +13:00
Garfield69
b91c01ba4c rns: add config sort options 2019-12-20 10:41:27 +13:00
Garfield69
f14831cb74 riperam: add config sort options 2019-12-20 10:35:19 +13:00
Garfield69
4808313c10 racingforme: refresh categories
add config sort option
drop from 5 pages to 3 to reduce server workload (its too slow).
2019-12-20 09:48:11 +13:00
Garfield69
66ae983457 r4e: add config sort options
drop banner selector (site does not have any)
2019-12-20 08:32:30 +13:00
Garfield69
4b415cbd81 pt99: add config sort options 2019-12-20 08:01:20 +13:00
Garfield69
d200e61de8 prostylex: refresh categories
add config sort options
2019-12-20 07:17:11 +13:00
Sergey Mikhailov
d901b4d275 rutracker: quality and language fix for some movie titles (#6645) 2019-12-20 06:42:40 +13:00
Garfield69
445344ea6a hdtorrentsit: revert adbe9f3f resolves 6647 2019-12-20 06:15:24 +13:00
Garfield69
66fa125b71 elittraker: gone. removed. #1445 2019-12-19 20:43:17 +13:00
Garfield69
c38f66146b torrentseed: add config sort options
amend login
2019-12-19 20:37:31 +13:00
Garfield69
d720588568 filmpaleis: amend login 2019-12-19 20:28:44 +13:00
Garfield69
7f69f87039 thetorrents: amend login 2019-12-19 20:18:02 +13:00
Garfield69
77e35be0a9 tasmanit: amend login 2019-12-19 20:14:31 +13:00
Garfield69
46cb42f4bf takeabyte: amend login
also add config sort options
2019-12-19 20:10:46 +13:00
Garfield69
365eda7503 ccfbits: amend login. 2019-12-19 20:00:17 +13:00
Garfield69
fba73be438 pwtorrents: add config sort options
amend login
2019-12-19 19:48:28 +13:00
Garfield69
c657aa171a rgu: gone. removed. #3084 2019-12-19 18:45:26 +13:00
Garfield69
bf2ced2005 waffles: gone. removed. #1182 2019-12-19 17:35:52 +13:00
Garfield69
5f73d2261a torviet: gone. removed. #850 2019-12-19 17:31:48 +13:00
Garfield69
60a8fd369f music-master: gone. removed. #5547 2019-12-19 17:15:32 +13:00
Garfield69
adbe9f3f9c hdtorrents.it: gone. removed. #1180 2019-12-19 17:09:29 +13:00
Garfield69
028aeb77dc asiandvdclub: gone. removed. #890 2019-12-19 16:51:52 +13:00
Garfield69
2fe52703b0 bitspiracy: gone. Removed. #4459 2019-12-19 16:46:06 +13:00
Garfield69
8e3cfffa46 bitme: gone. removed. #1977 2019-12-19 16:38:55 +13:00
Garfield69
a2d5fdbcec proaudiotorrents: add config sort options 2019-12-19 16:17:48 +13:00
Garfield69
386090b9c3 add xwt-classics: a private wresting site. resolves #6641 2019-12-19 15:56:55 +13:00
Garfield69
72da838819 xwtorrents: update login
also add config sort options
2019-12-19 15:54:49 +13:00
Sergey Mikhailov
1737c21eea rutracker: fix movies naming when stripping Russian (directors name cut) (#6639) resolves #6638 2019-12-19 09:22:06 +13:00
Garfield69
60ef4d2546 pleasuredome: fix leechers
also handle 2x ul vf
add config sort options
2019-12-18 19:27:06 +13:00
Garfield69
9b994e4b83 pixelcove: add config sort options 2019-12-18 18:51:41 +13:00
Garfield69
07d6a6d902 piratbit: add config sort options 2019-12-18 18:43:54 +13:00
Garfield69
0ce432ed1a peersfm: add config sort options 2019-12-18 18:36:17 +13:00
Garfield69
ff4c192a01 p2pbg: add config sort options 2019-12-18 17:58:38 +13:00
Garfield69
fe5c1d4962 nyaasi: add config sort options
add Spanish tag for puyasubs releases
2019-12-18 16:04:01 +13:00
Garfield69
77ddc9dd2f nyaa-pantsu: refresh categories
add config sort options
2019-12-18 15:46:07 +13:00
Garfield69
29d64294d9 nostalgic: refresh categories
also add config sort options
2019-12-18 15:01:38 +13:00
Garfield69
619e3b3c6b nnm-club: add config sort options 2019-12-18 12:41:42 +13:00
Garfield69
d662666976 nntt: add config sort options 2019-12-18 12:28:55 +13:00
Garfield69
cd6de00aa1 nitro: add config sort options 2019-12-18 10:31:27 +13:00
Garfield69
f698869438 newstudio: add config sort options 2019-12-18 09:23:45 +13:00
Garfield69
470ff8742b nethd: add config sort options 2019-12-18 08:45:14 +13:00
Garfield69
33624244a7 nbtorrents: add config sort options 2019-12-18 08:35:34 +13:00
Garfield69
5e5be1d932 mvgroup: add config sort options 2019-12-18 08:04:17 +13:00
Garfield69
edcb2cc6f8 metaltracker: add config sort options 2019-12-18 06:45:06 +13:00
Garfield69
0603996579 marinetracker: add config sort options 2019-12-18 06:20:04 +13:00
Garfield69
3103862a98 limetorrents: add config sort options 2019-12-18 06:10:41 +13:00
Garfield69
fb7e55cba9 leporno add config sort options 2019-12-17 21:32:16 +13:00
Garfield69
cc7bbcc022 legittorrents: add config sort options 2019-12-17 20:46:08 +13:00
Garfield69
a16f4b1906 learnflakes: add config sort options 2019-12-17 20:38:26 +13:00
Garfield69
913442a4c6 kinozal: add config sort option 2019-12-17 20:25:54 +13:00
Garfield69
765dbcdb3d katli: add config sort options 2019-12-17 20:13:41 +13:00
Garfield69
46851edd0c itorrent: add config sort optiions 2019-12-17 18:58:38 +13:00
Garfield69
c9656a8723 isohunt2: ad configsort option
no need for additional pages
240 hits is excessive with 3 calls
80 in one call is good enough
2019-12-17 18:38:47 +13:00
Garfield69
67a2681bad idope: add config sort options 2019-12-17 18:06:36 +13:00
Garfield69
2228dca126 hdzone: add config sort options 2019-12-17 17:36:06 +13:00
Garfield69
7d413910e4 hdreactor: drop debug on date
add config sort options
2019-12-17 17:13:38 +13:00
Garfield69
5cf3abd7d4 hamsterstudio: add confog sort options 2019-12-17 17:04:51 +13:00
Garfield69
96b16e7d87 greeklegends: add config sort options 2019-12-17 16:13:10 +13:00
Garfield69
083552580c glodls: add config sort options 2019-12-17 15:53:50 +13:00
Garfield69
11a4390307 generationfree: refresh catalog
add config sort options
2019-12-17 15:48:01 +13:00
Garfield69
6174bdf40c freetorrent: add config sort options
and a couple domain redirects
2019-12-17 14:31:49 +13:00
Garfield69
13b859cfb0 focusx: add config sort options 2019-12-17 10:44:16 +13:00
Garfield69
879d03c055 film-paleis: correct login error selector.
correct leechers selector
2019-12-17 10:24:47 +13:00
Garfield69
5661000c19 torrentleech: use download_multiplier for freeleech spotting. resolves #6624 #6579 2019-12-17 08:48:22 +13:00
Marcus
0f7e44f0bb Added Pornbay a private tracker. (#6629) 2019-12-17 08:25:15 +13:00
Garfield69
5f0d2d6129 btdb: new domain .io resolves #6630
Also add config sort option
2019-12-17 07:59:21 +13:00
Garfield69
ea340200f0 zamundanet: add config info aboit LIST view. resolves #6627
also add config sort options
switch to https
correct catalog selector
clean up titles
2019-12-17 07:29:54 +13:00
Garfield69
39b5a9df76 exttorrents: add config sort options 2019-12-16 19:33:41 +13:00
Garfield69
77df49f76e ettv: refresh categories
and add config sort options
2019-12-16 19:03:48 +13:00
Garfield69
c3cec7fa5d estone: add config sort options 2019-12-16 17:53:02 +13:00
Garfield69
3301b1207a esharenet: add config sort option 2019-12-16 16:14:59 +13:00
Garfield69
7790395f96 eniahd: add config sort option 2019-12-16 15:56:32 +13:00
Garfield69
982f77be66 efectodoppler: add config sort option 2019-12-16 15:42:13 +13:00
Garfield69
b9e219d866 ebookparadijs: fix login error selector
also fix leechers selector
2019-12-16 15:33:47 +13:00
Garfield69
ff1a51b698 dxp: add config sort option 2019-12-16 14:09:40 +13:00
Garfield69
422cc64e5f dxdhd: support for unit3d upgrade to 2.2.7
also add config sort support
2019-12-16 14:01:02 +13:00
Garfield69
b8b2a44474 documentarytorrents: add config sort order 2019-12-16 13:42:36 +13:00
Garfield69
9f6c3ffd25 4thd: handle invalid date. resolves #6622
also add config sort option
add new category 44 music pack
2019-12-16 11:33:17 +13:00
Garfield69
2fc244484c ebook-shares: new layout. resolves #6621
also add config sort option
2019-12-16 11:00:01 +13:00
Garfield69
6c02be7136 add muziekfabriek a Dutch semi-rpivate site. resolves #6619 2019-12-16 08:56:56 +13:00
klemk86
40b17a93fd Partis: Updated login check. (#6617) 2019-12-16 05:49:46 +13:00
Garfield69
28cb075d64 divteam: add config sort option 2019-12-15 19:11:29 +13:00
Garfield69
e9cf18825f desireleasers: add config sort option 2019-12-15 19:03:04 +13:00
Garfield69
1ba6f574f4 demonoid: add config sort option 2019-12-15 18:53:10 +13:00
Garfield69
9bbe42c6d6 deildu: add config sort option
also refresh categories
enable category selector
2019-12-15 17:21:11 +13:00
Garfield69
0c6c05179d dark-shadow: gone. removed. #4573 2019-12-15 16:40:21 +13:00
Garfield69
057e624379 cztorrent: add config sort option 2019-12-15 16:34:30 +13:00
Garfield69
676bab3bec crnaberza: add config sort option 2019-12-15 16:19:53 +13:00
Garfield69
622c46e1df crazycorner: add config sort option
also update categories
2019-12-15 12:20:12 +13:00
Garfield69
ba62891535 crazyspirits: add config sort option 2019-12-15 11:40:17 +13:00
Garfield69
8010cbf688 moviesdvdr: add default data for Radarr. resolves #6613 2019-12-15 11:14:40 +13:00
Garfield69
c56ba37cec crazyhd: add config sort option 2019-12-15 09:45:33 +13:00
Garfield69
8f2a5f55ff cpasbien: does not suppoort categories.
default to Other.
2019-12-15 08:50:57 +13:00
Garfield69
8e017e7398 cpasbienclone: add config sort option
site does not provide categories, defaulting to Other.
2019-12-15 08:39:42 +13:00
Garfield69
ac9417caea concertos: add config sort option 2019-12-14 21:07:03 +13:00
Garfield69
e72392d124 concen: add congif sort option 2019-12-14 20:58:15 +13:00
Garfield69
987ea6325e channelx: add config sort option 2019-12-14 20:08:49 +13:00
Garfield69
f7bb02f618 casstudiotv: add config sort option
also refresh categories
2019-12-14 19:20:15 +13:00
Garfield69
dc0fa03144 casatorrent: add config sort option.
also refresh categories
2019-12-14 15:26:13 +13:00
Garfield69
e5a1180a3a cartoonchaos: add config sort option 2019-12-14 14:46:43 +13:00
Garfield69
47743f1dcb underverse: add freeleech. resolves #6599
also add config sort option.
2019-12-14 11:41:33 +13:00
Garfield69
2ffc7899fb newpct: add freeleech. #6599 2019-12-14 11:30:16 +13:00
Garfield69
4da390c1ba corsarored: add freeleech. #6599 2019-12-14 11:24:27 +13:00
Garfield69
696a6b0e1f magnetdl: add alternate domain. resolves #6604
also add config sort option
2019-12-14 11:11:39 +13:00
Garfield69
66927a7020 rus-media: size/seeders/leechers can be missing. resolves #6603
also add config sort option.
2019-12-14 10:58:37 +13:00
Garfield69
d1ac466974 bttree: add andmatch filter. resolves #6601
also add config sort option
2019-12-14 10:19:53 +13:00
Garfield69
004d0d7014 shokweb: add andmatch filter. resolves #6600 2019-12-14 10:00:53 +13:00
Garfield69
fc360a9770 torlock, torrentdownloads: freeleech. resolves #6599
torlock: add config sort option.
2019-12-14 09:54:14 +13:00
Garfield69
4fb6a4f28d btdigg: add config sort option 2019-12-14 09:33:12 +13:00
Garfield69
88092323f1 booktracker: add config sort option 2019-12-14 08:39:06 +13:00
Garfield69
5d82cda21a blutopia: add config sort option 2019-12-14 08:29:56 +13:00
Garfield69
a0a54f74e7 bitturk: add config sort option 2019-12-14 08:14:06 +13:00
Garfield69
80699db8ae bittorrentfiles: add config sort option 2019-12-14 07:25:22 +13:00
Garfield69
d5b6a35473 bittorrentam: add config sort option 2019-12-14 06:36:27 +13:00
Garfield69
2790357a20 bitru: add config sort option 2019-12-14 05:47:59 +13:00
Garfield69
c3f7a3bc60 bithorlo: add config sort option 2019-12-14 05:30:33 +13:00
Garfield69
5b90ecca1c tvchaosuk: update categories. resolves #6596
also add config sort option
add category description to banner
2019-12-14 05:16:13 +13:00
Garfield69
231e974ed3 bit-titan: add config sort option 2019-12-13 21:15:33 +13:00
Garfield69
2346157fcd bigfangroup: add config sort option 2019-12-13 20:58:30 +13:00
Garfield69
6288cc1cea beyondhd: add config sort options 2019-12-13 19:07:50 +13:00
Garfield69
f5e6ca30ef baibako: add config sort option 2019-12-13 17:14:58 +13:00
Garfield69
0610401418 awsomehd: add config sort option 2019-12-13 17:05:44 +13:00
Garfield69
99b40f36e1 audionews: add config sort option 2019-12-13 09:22:30 +13:00
Garfield69
65dcc68c9c asiancinema: add config sort option 2019-12-13 08:31:39 +13:00
Garfield69
ceb45bec27 asgaard: add config sort option 2019-12-13 07:24:04 +13:00
Garfield69
45a21ca33a arenabg: category updates. 2019-12-13 06:48:58 +13:00
Garfield69
809f5feab2 anidex: add config sort option 2019-12-12 20:13:19 +13:00
Garfield69
ff9c5e146f amigosshare: add config sort option.
also update categories
and grab date from poster description if available.
2019-12-12 19:55:17 +13:00
Garfield69
51e101658a alexfilm: add config sort options. 2019-12-12 18:06:38 +13:00
Garfield69
71e5a20f61 alein: add sort to config options. 2019-12-12 17:23:19 +13:00
Garfield69
7255a1c059 aftershock: add config sort options.
and row andmatch filter
2019-12-12 15:52:47 +13:00
Garfield69
38c3d99437 1337x: add config sort options 2019-12-12 12:00:00 +13:00
Garfield69
1cd3329259 3evils: add config sort options. 2019-12-12 11:19:28 +13:00
Garfield69
68b9941d11 nyaasi: handler empty seeders/leechers/grabs. resolves #6587 2019-12-12 09:08:32 +13:00
Garfield69
1afc082bb1 torrent9clone: correction to date 2019-12-12 08:49:32 +13:00
Garfield69
b22bb55b43 torrent9: correction to date 2019-12-12 08:49:15 +13:00
Garfield69
c96dfd74e7 tfile: correction to ULVF and DLVF 2019-12-12 08:45:12 +13:00
Garfield69
6daa7d6976 rutor: correction to ULVF and DLVF 2019-12-12 08:43:33 +13:00
Garfield69
9f2cba9871 racingforme: correction to ULVF and DLVF 2019-12-12 08:40:19 +13:00
Garfield69
af93a613f6 newstudiol: correction to ULVF 2019-12-12 08:38:25 +13:00
Garfield69
2788d40e1f newstudio: correction to ULVF 2019-12-12 08:37:41 +13:00
Garfield69
8f9c93c329 kinozal: correction to ULVF 2019-12-12 08:35:41 +13:00
Garfield69
e9870aab92 loporno: correction to DLVF 2019-12-12 08:34:02 +13:00
Garfield69
ba306d8788 0daykiev: correction to ULVF 2019-12-12 08:24:45 +13:00
Garfield69
7fe4f47279 btsow: ignore header row. resolves #6586 2019-12-12 07:59:54 +13:00
Garfield69
7d8502fb01 2fast4you: add sort options
also fix seeders and leechers selector
2019-12-12 07:31:51 +13:00
Garfield69
5da39c56b7 0daykiev: add sort options 2019-12-12 06:43:04 +13:00
Garfield69
eb458ee29f skytorrentsclone: sort=created for top100 2019-12-12 05:38:32 +13:00
Garfield69
0829b26164 add topnow a public site. resolves #6583 2019-12-11 22:12:13 +13:00
Garfield69
f2739c4ae1 add btsow a public indexer. resolves #6576 2019-12-11 21:39:13 +13:00
Garfield69
c24956d793 add Seedpeer a public indexer. resolves #6450 2019-12-11 21:02:32 +13:00
Garfield69
226fdfd03c torrentleech: check tags for freeleech. resolves #6579 2019-12-11 20:33:27 +13:00
Garfield69
9c22679b41 IPTorrents: drop invalid char from titles. resolves #6582 2019-12-11 19:12:04 +13:00
Garfield69
d85836ce1b cardigannIndexer: if guid not set from details or comments then try magnet uri. resolves #6581 2019-12-11 17:57:10 +13:00
Garfield69
5a7e0158d6 tokyotosho: amend selectors. resolves #6580
also add magnets and DL/UL volume factors.
2019-12-11 17:09:10 +13:00
Garfield69
6aef316220 limetorrents: add alternate domain limetor.pro resolves #6577 2019-12-11 16:40:28 +13:00
klemk86
13f193013c Added Partis a SLOVENIAN Private site. (#6573) resolves #1596 2019-12-11 16:34:32 +13:00
Garfield69
8c856a9a50 torrentland: fix #6570 2019-12-11 16:29:37 +13:00
Garfield69
d44bc93776 Revert "core: fix login redirect with nginx + admin password. resolves #4765 (#6561)"
This reverts commit 642bed1ef4.
2019-12-11 11:49:51 +13:00
Garfield69
090ae2db08 torrentland: swap Sxx with Txx on search and back for titles. resolves #6570 2019-12-11 06:42:29 +13:00
snamds
453165e081 [Newpct] fix No results error (#6567) resolves #6551 2019-12-10 12:25:25 +13:00
csutcliff
9c3f1134b9 Beyond-HD-oneurl: Add support for OneURL login (#6566)
Quick fix for the recaptcha/2FA woes of the current method
2019-12-10 12:18:13 +13:00
Diego Heras
642bed1ef4 core: fix login redirect with nginx + admin password. resolves #4765 (#6561) 2019-12-10 08:30:12 +13:00
Diego Heras
b666b01461 core: fix static resources in web ui (images) (#6564)
* core: fix static resources in web ui (images)

* delete unused .png files
2019-12-10 07:53:51 +13:00
Garfield69
574d41021b torrent9clone: update category selector. resolves #6557 2019-12-09 23:08:52 +13:00
Garfield69
bb8f94f23a dmhy: exclude row without magnets. resolves #6556 2019-12-09 22:55:25 +13:00
Garfield69
b51527d340 torrentwal: size can be empty. resolves #6555
also add bluray movie cat.
2019-12-09 22:44:18 +13:00
Garfield69
a5d055cf33 demonoid: category can be missing. resolves #6554 2019-12-09 22:01:26 +13:00
Garfield69
99feb6f4cf tfile: size/seeders/leechers can be empty. resolves #6553 2019-12-09 21:48:52 +13:00
Garfield69
418ffc9bf3 movecr: handle empty size selector. resolves #6552 2019-12-09 21:29:19 +13:00
Garfield69
0ddefb0328 torrentscsv: bunt datestamp from int to long. resolves #6550 2019-12-09 20:47:01 +13:00
Garfield69
6b66a19631 freetorrent: support for Unit3D 2.2.5 upgrade. 2019-12-09 17:55:26 +13:00
Garfield69
394aec14e6 torrentfunk: add andmatch filter. resolves #6548 2019-12-09 17:32:46 +13:00
Garfield69
a2e93b4f75 yourbittorrent: add andmatch filter. resolves #6547
also update categories.
2019-12-09 17:28:49 +13:00
Garfield69
e2255f1e3a torrentgalaxyorg: add captcha to config. resolves #6546 2019-12-09 17:09:40 +13:00
Garfield69
92fd7d857b mactorrents: correct categories. resolves #6544
and fix category selector.
2019-12-09 16:19:58 +13:00
Garfield69
1b4afc0e72 glodls: accept itorrents.org links. resolves #6543 2019-12-09 16:04:42 +13:00
Garfield69
83b2efb3c4 sukebeinyaasi: handle missing .torrent or magnet links. resolves #6542 2019-12-09 15:46:00 +13:00
Garfield69
08dc395b63 focusx: handle two flavours of date selectors. resolves #6541
also update categories.
2019-12-09 15:21:13 +13:00
Garfield69
5172df48e1 torrentwal: drop rows without categories. resolves #6540 2019-12-09 09:01:09 +13:00
Garfield69
4b1a343f60 itorrent: fix grabs > 999. resolves #6539
also replace new categories
and prevent dataparse error
2019-12-09 08:29:08 +13:00
Garfield69
6acacd1947 estrenosdtl: categories on this site are optional. resolves #6538 2019-12-09 07:16:59 +13:00
Garfield69
a71bd50259 elitetorrent: add andmatch filter. resolves #6537 2019-12-09 06:53:54 +13:00
Garfield69
cbfa1a4732 shokweb: fix search. resolves #6536 2019-12-09 06:32:07 +13:00
Garfield69
741d16cbf5 limetorrents add alternate domains. resolves #6534 2019-12-09 06:09:55 +13:00
Garfield69
4b4ccd74df acgsou: filter rows that have results. resolves #6532 2019-12-09 05:35:59 +13:00
Garfield69
556e7fc738 toros: fix search. resolves #6497 2019-12-09 05:21:19 +13:00
Garfield69
6ec07e0412 improve language support for Unit3D sites. 2019-12-08 15:19:53 +13:00
Garfield69
ae3e10a84a add chinese suppoort for Unit3D indexers. resolves #6529 2019-12-08 14:41:04 +13:00
Garfield69
5536e8314d Update README.md 2019-12-07 14:17:08 +13:00
TuGeek
5d395b6f67 HDCIty: Corrected search of episodes with Sonarr (#6519) resolves #6510 2019-12-07 08:38:34 +13:00
Garfield69
b0a711253a yourbittorrent: add alternate domain. resolves #6500
also covert keywords to lowercase
2019-12-07 05:39:43 +13:00
Garfield69
a5e4299673 torrentfunk: colvert to lowercase before search. resolves #6502 2019-12-07 05:28:41 +13:00
Garfield69
32a7cc5cac add toros a public tracker. resolves #6497 2019-12-06 14:17:59 +13:00
Garfield69
d275971101 Merge branch 'master' of https://github.com/Jackett/Jackett 2019-12-06 09:04:25 +13:00
Garfield69
b20a37d8d6 add hdu a private Chinese site. resolves #5746 2019-12-06 09:04:20 +13:00
Jorman
a36a3a9329 shareisland: update categories (#6512) 2019-12-06 08:00:47 +13:00
Garfield69
070f819e06 add springsunday a private Chinese site. resolves #6483 2019-12-06 07:44:07 +13:00
Garfield69
3bb81d408e add hd4fans a private Chinese site. resolves #6482 2019-12-05 21:33:18 +13:00
Garfield69
71c9ffb7cd retroflix: release_year and quality are optional.
prevents selector not found error
2019-12-05 20:37:23 +13:00
Garfield69
155e46a24d icetorrent: handle both kinds of date selectors 2019-12-05 20:20:33 +13:00
lpearl
fd36eb068c add pornolab a semi-private Russian site (#6465) resolves #4373 2019-12-05 16:26:59 +13:00
Garfield69
f2605b8a3e concen: filter out rows without title. resolves #6506 2019-12-05 16:13:31 +13:00
Garfield69
75020d9a6c mactorrents: filter out torrents without download link. resolves #6505 2019-12-05 16:01:09 +13:00
Garfield69
d028c11bb0 torrentfunk: correct search. resolves #6502 #6501
add alternate domain
2019-12-05 15:35:19 +13:00
Garfield69
dfc130154c yourbittorrent: drop sponsored links. drop andmatch. resolves #6500 2019-12-05 14:58:28 +13:00
Garfield69
25302d939f yourbittorrent: update for current layout. 2019-12-05 14:47:05 +13:00
Garfield69
98fc07e82b Revert "yourbittorrent: new domain .host"
This reverts commit 4c764a022a.
2019-12-05 14:19:03 +13:00
Garfield69
d563063c86 torlock: make .com default domain again. 2019-12-05 14:14:22 +13:00
Garfield69
d6a9a88ae4 add hdroute a private Chinese site. resolves #6477 2019-12-05 09:57:29 +13:00
Garfield69
9cae079014 esharenet: drop search quantity from 100 to 50.
server seems unable to deliver 100 results and times out.
2019-12-05 06:47:56 +13:00
Garfield69
0970a40b9e torrent-explosiv: now private. resolves #6489 2019-12-04 13:14:36 +13:00
Garfield69
edc7d5e4c4 skytorrentsclone: they have dropped the itorrents.org download link. 2019-12-04 08:50:30 +13:00
Garfield69
0eea2f5ef7 desireleasers: drop search quantity from 100 to 50. resolves #6480
it appears that their server cannot handle requests for 100 rows, returning an internal server error message.
2019-12-04 06:12:47 +13:00
Garfield69
bc127cac76 nostalgic: drop rows without download
to prevent download selector error
2019-12-03 21:07:33 +13:00
Garfield69
979bdec229 theempire, thegeeks, theoccult, theplace, theshow, thevault: fix grabs.
replace Never with 0 to prevent selector error.
2019-12-03 21:06:23 +13:00
Garfield69
e798130428 audionews: update categories
and prevent selector row error
2019-12-03 20:37:16 +13:00
Garfield69
8081baad7b hdhome: use cookie login. resolves #6460
also updated the  categories.
2019-12-03 20:02:19 +13:00
Garfield69
310cba2655 GazelleTracker: enable keeplogged #6461 2019-12-03 18:21:48 +13:00
Garfield69
3fc2476bd2 yggtorrent: new domain .ws #6473 2019-12-03 16:11:26 +13:00
Garfield69
4881040830 torrentdownloads: add alternate domain .info resolves #6468 2019-12-03 06:48:02 +13:00
Garfield69
81bc901d08 torrentparadise: new domain .cl 2019-12-02 14:54:53 +13:00
Garfield69
3d09e3d3fd hdhome: swithc to using http. #6460 2019-12-02 08:11:16 +13:00
Garfield69
e8f06cb54f monova: drop sponsored results. resolves #6459 2019-12-02 07:52:57 +13:00
Garfield69
46cb027261 add torrentdownload, a public tracker. resolves #6451 2019-12-01 18:20:58 +13:00
Garfield69
7882fb5699 limetorrents: add movie-search. 2019-12-01 17:45:21 +13:00
Garfield69
6bf0f4a446 add bittirrent.AM a public tracker. resolves #6452 2019-12-01 16:34:46 +13:00
Garfield69
c15be19bff monova: fix search. resolves #6453 2019-12-01 08:08:29 +13:00
Garfield69
dd85da7558 btdb: change search= to s= for #6448 2019-12-01 07:42:26 +13:00
Garfield69
5a72c63ee5 Update README.md 2019-12-01 06:25:33 +13:00
Garfield69
e5258d43db alexfilm: certificate bypass for expired one #6445 2019-11-30 17:11:46 +13:00
Garfield69
1337129cb6 Update README.md 2019-11-29 19:32:24 +13:00
Garfield69
fc09839296 readme: corrections additions to linux prereqs #6442 2019-11-29 19:29:33 +13:00
Garfield69
608c83c8e8 readme: update linux core 3 prereqs. resolves #6442 2019-11-29 19:25:00 +13:00
Garfield69
f6ec6a9fbb 1337x: add an alternate domain to the site link list. 2019-11-29 14:29:33 +13:00
Garfield69
58b9fef9fa CloudflareSolverRe: bump to 1.0.6 2019-11-29 12:12:00 +13:00
Garfield69
216cd7fda7 add moviesdvdr a Spanish public movie site. resolves #6438 2019-11-29 08:08:20 +13:00
Garfield69
bf7d36669b transmitthenet: Add daily show support for NEB. Resolves #6413 2019-11-29 06:53:12 +13:00
Garfield69
1b336b026e mkvkage: gone. removed. #5983 2019-11-28 19:07:47 +13:00
Garfield69
d2a743b779 add EstrenosDTL a public Spanish movie site. resolves #6431 2019-11-28 07:30:21 +13:00
Garfield69
00adba0650 ztracker: update categories
drop grabs.
2019-11-27 21:05:06 +13:00
Garfield69
349790968f add bt.etree a public bootleg site. resolves #6429 2019-11-27 15:48:28 +13:00
Garfield69
2e04a22c63 vanila: correct date selector, update categories. 2019-11-27 10:04:32 +13:00
Garfield69
5b0ba0c53b add legittorrents a public site. resolves #6426 2019-11-27 09:14:14 +13:00
Garfield69
e509cc6784 add riperam a Russian semi-private site. resolves #6425 2019-11-27 07:38:43 +13:00
HDVinnie
a5020dd2f2 ChannelX: support for upgrade to unit3d 2.2.5 (#6423) 2019-11-26 09:37:21 +13:00
Garfield69
94e9aed032 sktorrent: update categories 2019-11-25 18:19:10 +13:00
Garfield69
c01114d2e6 torrent-turk: back to using form#loginbox_form 2019-11-25 18:01:09 +13:00
Garfield69
23612e8576 torrent9: new domain oxtorrent.me 2019-11-25 08:30:40 +13:00
Garfield69
f7ced614e8 add bitru a Russian public site. resolves #6411 2019-11-25 08:19:33 +13:00
Garfield69
71eb6435d7 torrent9clone: new domain .so 2019-11-23 07:31:52 +13:00
Garfield69
fa7162d4f7 hdturk: site is now forcing https:
plus additional changes to the login form.
2019-11-21 10:05:12 +13:00
Garfield69
8e748d159a filmpaleis: site now forcing https. 2019-11-21 09:41:25 +13:00
Garfield69
da16016e7f nostalgic: drop keeploggedin option. #6405 2019-11-21 09:30:24 +13:00
Garfield69
2cf0cc1740 greeklegends: support for upgrade to unit3d 2.2.3 2019-11-21 09:11:35 +13:00
Garfield69
661541ed1f digbt: gone. indexer removed. #4344 2019-11-21 08:50:00 +13:00
Garfield69
90074f89b0 torrent9clone: new domain .ai 2019-11-21 08:44:35 +13:00
Garfield69
68ecb8fafe add firebit a public Ukrainian site. resolves #6395 2019-11-20 21:05:23 +13:00
dimqua
f8f9570b63 dxp: mark VIP categories as 'Other/Misc' (#6404) for #6382 2019-11-20 10:46:26 +13:00
TuGeek
e827ccb52e Optimization Puntotorrent and HDCity Trackers (#6400) 2019-11-20 08:12:36 +13:00
Garfield69
3b65ea3c4e piratbit, piratbitL: new size selector. resolves #6399
also tidy up grabs and date selectors
2019-11-20 07:58:09 +13:00
Garfield69
5a5c0a5f34 torrentparadise: correction to a category. 2019-11-20 06:59:28 +13:00
Garfield69
68275057dd gktorrent, oxtorrent: switch download to magnet. resolves #6398
only the magnet button is now an actual reliable magnet to download.
the telecharger button on gktorrent is always a click bait fake button, and the one on oxtorrent goes to click bait first, and works the second time.
2019-11-20 06:50:17 +13:00
Garfield69
8e80c28f34 add torrentparadise a public magnet indexer. resolves #6385 2019-11-19 20:06:07 +13:00
Garfield69
0feae6768a add dxp a semi-private site for Russian subtitled movies/tv. resolves #6382 2019-11-19 17:21:10 +13:00
cesco-trask
ff7776ed71 bigtower: Update categories (#6387)
BigTower has removed many categories, this should fix the tracker
2019-11-19 06:08:05 +13:00
Alberto Moreno
abbf09c953 hdcity: Optimise search for Complete Season (#6386)
Search for complete seasons with other names than "T1"
2019-11-19 05:54:19 +13:00
Garfield69
0d60ed8326 add rus-media a public Russian site. resolves #6381 2019-11-18 19:48:29 +13:00
Garfield69
dbb3c0faec nntt: correct date parsing 2019-11-18 19:06:28 +13:00
Garfield69
bbf3a3c749 cardigann: only log AFTER processing when debug enabled. #6377 2019-11-17 19:54:33 +13:00
Garfield69
dc7f8e20ab galeriens: new layout. new date selector. 2019-11-16 08:17:41 +13:00
Garfield69
062b967f88 elitetorrentbiz: new domain .tv 2019-11-16 06:39:33 +13:00
Garfield69
632718e1ce gamestorrents: new domain .nu 2019-11-16 06:35:03 +13:00
ZiemusG
9effc3b21b btgigs: update login action path (#6372)
Update login path.
2019-11-16 06:06:29 +13:00
Garfield69
4fb3246b06 oops. misnamed the greeklegends indexer. #6369 2019-11-15 19:22:47 +13:00
Garfield69
d6f737bf48 cpabien: add auto-correct for gktorrent link 2019-11-15 07:49:40 +13:00
Garfield69
bafad8c5a2 add nntt a public Russian site. resolves #6345 2019-11-14 17:53:54 +13:00
Garfield69
0354e10322 underverse, underverseL: handle genmed and seedmed user classes. resolves #6360 2019-11-14 13:53:53 +13:00
Garfield69
8cc5060242 yggtorrent: new domain www5. #6341 2019-11-13 20:05:12 +13:00
Garfield69
48159e9605 piratbit: public, magnets. piratbitl: login for .torrents #6335. 2019-11-13 18:48:43 +13:00
Garfield69
dee185c9ff underverse: magnets only. #6335 2019-11-13 17:55:48 +13:00
Garfield69
34df9096a3 Merge branch 'master' of https://github.com/Jackett/Jackett 2019-11-13 15:51:42 +13:00
Garfield69
b29d5d3620 underversel: underverse with Login for #6335 2019-11-13 15:51:37 +13:00
Leonardo Merza
db0c071313 add greeklegends a private site for hq content (#6349) 2019-11-13 08:21:56 +13:00
Alberto Moreno
9f7b361512 Bug in fields args broke HDCity template (#6343)
Missing spaces in fields args that broke the HDCity template
2019-11-12 21:44:43 +13:00
Garfield69
1917ec296c tvchaosuk: support for upgrade to unit3d 2.1.1 2019-11-12 14:44:34 +13:00
Garfield69
12abedccd0 blutopia: support for upgrade to unit3d 2.2.0 resolves #6342 2019-11-12 14:37:58 +13:00
Garfield69
fdd21b01a2 add hddolby a semi-private Chinese site. resolves #6334 2019-11-12 07:31:38 +13:00
Alberto Moreno
bfec7cc11c hdcity: Added support to search Complete Seasons (#6338) 2019-11-12 06:46:58 +13:00
Garfield69
a5ede2311a ourbits: login test index.php iinstead of torrent.php for performance 2019-11-12 06:41:47 +13:00
Garfield69
0f19be2124 btnext: loginbox_remember="true" -> 1 2019-11-11 20:01:25 +13:00
Garfield69
d5af206696 blutopia: remember=1 -> on and other updates. 2019-11-11 19:36:05 +13:00
Garfield69
4efbb1fc7f sharewood: remember=1 -> on 2019-11-11 19:32:04 +13:00
Garfield69
545aa07040 freetorrent: remember=1 -> on 2019-11-11 19:28:00 +13:00
Garfield69
3de500321c freetorrent: performance updates 2019-11-11 19:26:24 +13:00
Garfield69
f659b748bb kapaki: loginbox_remember="true" -> 1 2019-11-11 19:20:30 +13:00
Garfield69
25a602604f vizuk: loginbox_remember="true" -> 1 2019-11-11 19:13:34 +13:00
Garfield69
d0a9fbc96b magico: loginbox_remember="true" -> 1 2019-11-11 19:12:00 +13:00
Garfield69
751d6c8594 asiancinema: remember=1 -> on plus other updates. 2019-11-11 19:04:50 +13:00
Garfield69
cd0dd32205 channelx: remember=1 -> on and other updates 2019-11-11 18:57:35 +13:00
Garfield69
5591dc6257 concertos: remember=1 -> on 2019-11-11 18:55:33 +13:00
Garfield69
192e258af5 dxdhd: remember=1 -> on and other updates. 2019-11-11 18:44:21 +13:00
Garfield69
bb3135ee74 esharenet: remember=1 -> on and other updates 2019-11-11 18:25:39 +13:00
Garfield69
82700655a2 hush: remember=1 -> on and other updates 2019-11-11 18:23:08 +13:00
Garfield69
a74f2c5b78 immortuos: remember=1 -> on and other updates 2019-11-11 18:21:09 +13:00
Garfield69
be550f803c r4e: remember=1 -> on and other updates 2019-11-11 18:18:59 +13:00
Garfield69
28174f80ce shareuniversity: remember=1 -> on and other updates. 2019-11-11 18:13:31 +13:00
Garfield69
a1701f843a theshinning: remember=1 -> on and other updates. 2019-11-11 18:03:43 +13:00
Garfield69
8645467584 tvchaosuk: remember=1 -> on 2019-11-11 17:45:05 +13:00
Garfield69
1a2aa19e6a desireleasers: remember=1 -> on 2019-11-11 17:40:37 +13:00
Garfield69
2302991470 shareisland: remember=1 -> on 2019-11-11 17:38:00 +13:00
Garfield69
a26ad75238 tellytorrent: unit3d 2.1.1 remember=1 -> on 2019-11-11 17:32:30 +13:00
Garfield69
97ec5137ff beyondhd: remember=1 -> on 2019-11-11 17:28:21 +13:00
Garfield69
f47228db37 xtremezone: _remember_me=1 -> on 2019-11-11 17:09:57 +13:00
Garfield69
dabe7c5d40 bitturk: drop duplicate loginbox_remember 2019-11-11 17:05:45 +13:00
Garfield69
199e0f65f8 tellytorrent: support upgrade to using3d 2.0.0 2019-11-11 12:42:19 +13:00
Garfield69
09cc37f341 shareisland: support upgrade to unit3d 2.1.0 2019-11-11 12:24:50 +13:00
Garfield69
5fc5ffd6cf desireleasers: support for upgrade to unit3d 2.0.0 2019-11-11 08:50:43 +13:00
ERR1R
9f3abf52e0 RevolutionTT : Remove comments redirect. resolves #6044 (#6328) 2019-11-11 06:20:36 +13:00
ERR1R
9aed735325 digitalcore: Show banners and add Pre (#6326) 2019-11-11 06:19:41 +13:00
Garfield69
dc2b780800 elitetorrent: new domain .nu 2019-11-10 18:17:11 +13:00
Garfield69
a07a34f0c6 torrent9clone: new domain .vc 2019-11-10 18:09:00 +13:00
Garfield69
51c72faf68 torrentscsv: site no longer accepts empty search query
so we supply an * instead.
2019-11-10 18:04:36 +13:00
Garfield69
4756be5d60 amend unit3d dl/ul volume factor selection
previous selectors worked only for English language.
replacement selectors are language independent.
2019-11-10 13:59:48 +13:00
Garfield69
663d1f0e8b shareisland: upgrade to unit3d 2019-11-10 07:01:25 +13:00
Garfield69
325294633d btbit: gone. indexer removed. #1934 2019-11-09 20:33:15 +13:00
Garfield69
7232d23f80 lemencili: gone. indexer removed. 2019-11-09 20:30:51 +13:00
Garfield69
1840a45dee hd4free: gone. indexer removed. #3827 2019-11-09 20:19:55 +13:00
Garfield69
fb6361cda9 iloveclassics: gone. indexer removed. #1220 2019-11-09 20:16:23 +13:00
Garfield69
a3bf8cbb6e cpabien: new domain 2019-11-09 20:13:58 +13:00
Garfield69
9f35eced5f oxtorrent: back to the .com domain 2019-11-09 19:46:33 +13:00
ERR1R
33a5960459 digitalcore: Added/updated Categories (#6313) 2019-11-09 07:27:10 +13:00
Garfield69
45b1b9e410 katcrs: gone. indexer removed. 2019-11-08 20:26:02 +13:00
Garfield69
11f73573b5 add gamestorrents a Spanish games site. resolves #6310 2019-11-08 20:14:53 +13:00
Garfield69
fd2b6d7355 newstudiol: newstudio with login. for #6305 2019-11-07 21:05:10 +13:00
Garfield69
53386cd1d2 1337x: cat9 is docs 2019-11-07 19:04:50 +13:00
Christian Franchin
93872dde78 bjshare: Fix naming internal releases and releases with multiple titles. (#6303) 2019-11-07 16:21:03 +13:00
aljohn92
28affde571 amend #5372 to prevent other symbols breaking magnet URL (#6292)
* Fix Issue #5372 without urldecode
By bypassing the decode, apostrophes can now be sent to download clients successfully.
2019-11-06 07:40:37 +13:00
MichaIng
847ee211fc jackett_launcher.sh fine tuning (#6297)
+ Execute script with system default bourne shell. On Debian this is "dash" by default, which has a much lower memory foot print compared to bash. As well systems without bash won't fail. "${BASH_SOURCE[0]}" cannot be used then but "readlink -f" is another reliable method to get a full file path, using another coreutils binary like "dirname".
+ Execute Jackett with "--NoRestart" option. This has currently not effect, but it assures that the updater never attempts to restart the Jackett process, which is done by the systemd unit already. This avoids possible restart collisions if anything about the updater behaviour changes, e.g. to fix the originating issue.
+ Remove the "Jackett update complete" print. This is simply wrong if Jackett was stopped ordinarily and the updater itself logs to the same destination, including a "finished to copy files" after completed.

Signed-off-by: MichaIng <micha@dietpi.com>
2019-11-06 06:45:28 +13:00
Garfield69
79cf3b2104 1337x: alternate domains. 2019-11-05 19:05:47 +13:00
Garfield69
a74ebe50ef arenabg ebooksshares: corrections to category descriptions. 2019-11-04 16:56:09 +13:00
Garfield69
6265a048dd tapochek torrentslocal: corrections to category descriptions. 2019-11-04 16:09:00 +13:00
Garfield69
659fd56801 add hdreactor a public Russian site. resolves #6287 2019-11-03 21:09:05 +13:00
Garfield69
3759666ce1 add glodls a public site. resolves #6286 2019-11-03 15:45:31 +13:00
Garfield69
fe7710299d add exttorrents a public site. resolves #6285 2019-11-03 08:48:54 +13:00
Garfield69
8835a9658d lechaudron: site closed. removed indexer. #5559 2019-11-03 06:42:37 +13:00
Garfield69
61a36af72e torrentlt: new domain .ai -> .lt 2019-11-02 20:09:00 +13:00
Garfield69
96bf1b282b torrentccf: back to https. 2019-11-02 09:41:47 +13:00
Garfield69
c47897d7e6 beyond-hd: add captcha to login. resolves #6281 2019-11-02 08:22:51 +13:00
aljohn92
79288c7376 1337x: Remove \u000f from title (#6280)
Very similar to commit e874255.
Fixes "System.ArgumentException: '', hexadecimal value 0x0F, is an invalid character."
(example: a search for "Legend of Korra S02")
2019-11-02 07:18:31 +13:00
Ruben Pahino
6e4811e788 hdcity: Process VOSE tag as [english] only (#6273) 2019-11-01 07:21:13 +13:00
Garfield69
5f82dad012 alexfilm: new domain .org 2019-10-31 20:22:42 +13:00
Garfield69
f90eb3e4ef tellytorrent: new domain telly.cc 2019-10-31 20:18:26 +13:00
Garfield69
d4390735b6 add bigfangroup a public Russian site. resolves #6275 2019-10-31 15:49:34 +13:00
Garfield69
f8ea65929f scenetime: update categiroes. resolves #6272 2019-10-31 07:41:09 +13:00
Garfield69
08cdde5e9f torrent9clone: new domain www.t9.re 2019-10-30 19:06:18 +13:00
Garfield69
fbc12bc0f5 torrent9: new domain 2019-10-30 18:56:09 +13:00
Diego Heras
b72ad9a7f5 updater: improvements in systemd jackett_launcher (#6270) 2019-10-30 14:58:11 +13:00
dimqua
8a6d3c6c2e unify lang code for Russian (#6268) 2019-10-30 08:56:36 +13:00
send-your-nudes
dbf49b2adc demonoid: new domain plus support for search changes. (#6266) 2019-10-30 08:53:55 +13:00
dimqua
550414ed20 BaibaKo, CasStudio, booktracker, hamsterstudio and piratbit are currently Semi-Private (#6264) 2019-10-30 06:41:34 +13:00
Garfield69
6e403a011d beyond-hd: support for changes to tteh classic theme. resolves #6263 2019-10-29 09:57:23 +13:00
Garfield69
7e6ecede19 add tribalmixes a semi-private music site. resolves #6260 2019-10-28 11:01:39 +13:00
Garfield69
705038369e torlock: fix duplicate results search. #6256 2019-10-28 08:29:44 +13:00
Garfield69
491cf885be lapausetorrents -> Galeriens
lapausetorrents has had all its a/c copied over to Galeriens, as well as all its torrents.
2019-10-26 19:28:08 +13:00
Garfield69
081ef87c81 asgaard: new date selector
also update categories
2019-10-26 19:20:50 +13:00
Diego Heras
78eb6a60e4 updater: fix systemd auto-update (#6249)
This should fix the systemd update issue. #5208
The users with this problem will have to reinstall the systemd service.
2019-10-26 16:04:36 +13:00
Garfield69
2a0f288fb2 also strip Ёё when using the stripRussianLetters option. 2019-10-26 10:46:26 +13:00
Garfield69
0a6af18de4 greekteam: update categories. 2019-10-26 08:14:39 +13:00
Garfield69
75a2944179 torrent9: site now using top_torrent.html 2019-10-26 07:31:00 +13:00
Garfield69
ecdc9d39e7 teamhd: add stripRussianLetters from title config setting. resolves #6241
default: false
2019-10-25 08:50:00 +13:00
Garfield69
7d0b4cca73 kickasstorrent: correct date processing.
preventing debug logging of missmatching dateparse template
2019-10-24 13:23:57 +13:00
Garfield69
2100a4f887 turktorrent: drop sezon blm processing. #6232 2019-10-24 08:36:23 +13:00
Valentin Olaru
1530189ea4 xtremezone: add category 66 (#6234) 2019-10-23 10:43:31 +13:00
Garfield69
eb9bfe943d drop IgnoreSslErrors=true error msg. resolves #6229 2019-10-23 10:40:03 +13:00
Garfield69
d77da3c3a7 turktorrent: new layout and categories. resolves #6232 2019-10-23 10:27:56 +13:00
Tawagot0
97ecf0621a xthor: Fix for anime search when using an anime subcategory (#6227) 2019-10-22 16:54:26 +13:00
Garfield69
bcda5714ad scenereactor domain expired. removed. 2019-10-21 13:42:08 +13:00
Garfield69
635c62c67a hyperay closed. removed. 2019-10-21 13:20:42 +13:00
Garfield69
f24f0fe410 hardbay refusing connection. removed. 2019-10-21 13:09:22 +13:00
Garfield69
82b1015736 gdf76 broken or gone. removed. 2019-10-21 13:03:48 +13:00
Garfield69
975c605066 elitehd gone. removed. 2019-10-21 13:00:00 +13:00
Garfield69
3fd52c6cbc dreamteam gone. removed. 2019-10-21 12:46:51 +13:00
Garfield69
205cd136d1 bitmetv. removed 2019-10-21 12:39:58 +13:00
Garfield69
6d7329d4c6 bitmetv returning cloudflare 522 connection time out. removed. 2019-10-21 12:38:40 +13:00
Garfield69
5e20b6b584 aox.to gone. removed. 2019-10-21 12:27:17 +13:00
Garfield69
c457a0f19f remove avg. gone. #4969 2019-10-21 09:07:32 +13:00
Tawagoto
576efccccc xthor: New domain .tk (#6199) 2019-10-21 07:09:41 +13:00
junglebus
53a92446f8 Restart webhost if the user changes proxy settings resolves #6215 (#6216) 2019-10-20 15:41:51 +13:00
Garfield69
3b9da0d9d5 generationfree: login test now in index.php. resolves #6213 2019-10-20 07:33:24 +13:00
mrmaltgr
13de466a38 magico: Use \w and \d to respect non latin characters (#6200)
Previous setting was replacing all non latin characters. Since this is a greek tracker this is a major pain
2019-10-19 07:12:17 +13:00
Garfield69
00f26031d0 lemencili: new domain 2019-10-18 20:13:41 +13:00
Garfield69
f7e69095f7 yggtorrent: fix anime hack breaking season search. resolves #6172 2019-10-18 16:56:56 +13:00
Garfield69
56b2b8f1bc mkvcage: back on .nl #5983 2019-10-18 11:00:17 +13:00
Garfield69
2b890cc204 add torrent-explosiv a semi-private German tracker. Resolves #6183 2019-10-17 19:45:17 +13:00
feffe
96d5f4800b AnimeBytes: Update synonyms. resolves #6186 resolves #6181 (#6190) 2019-10-17 15:43:02 +13:00
Garfield69
d3d9f4496e bittitan: old categories replaced by new set. resolves #6180
also update download and upload volumefactors.
2019-10-17 09:48:52 +13:00
Garfield69
522bf3371a piratbit: site is redirecting https to http
and the .ml domain is returning cloudflare 520 unknown error
2019-10-16 15:42:02 +13:00
Garfield69
7c2d5508d0 oxtorrent: the category selector is different between search and latest. 2019-10-16 12:38:38 +13:00
Garfield69
6b1224626c oxtorrent: fix category selector 2019-10-16 10:23:52 +13:00
Artur Ligieri Nunes
e6929c0bab bjshare: Fixed search to match with Sonarr and Radarr standards. resolves #4365 (#6174) 2019-10-16 08:35:07 +13:00
Garfield69
9e5dbf9a8f elitetorrent: new domain .is 2019-10-15 17:48:18 +13:00
junglebus
64abc61893 Update to .NET Core 3.0 (#6151)
* Update to .NET Core 3.0

Updated Jackett so that it runs on .NET Core 3.0 now

.NET Core 3.0 brings the following benefits https://devblogs.microsoft.com/dotnet/announcing-net-core-3-0/
One of the benefits is the ability to create single file executables. I haven't enabled this yet, but its only a one line change to turn it on (would likely also require some changes to the updater).

This means that builds for LinuxAMDx64, LinuxARM32, LinuxARM64 and macOS will now run on .NET Core 3.0 instead of 2.2. Windows and Mono remain on full framework. Once .NET Core 3.1 is released (November) I'll look to moving Windows over to .NET Core as well

Tested on
-Windows 10 x64
-Debian running Jackett with Mono
-Debian running Jackett standalone (.NET Core)
2019-10-15 06:51:33 +13:00
eriuhdkjnwwk
6151cc6e8b torrentday: switch cat 17 from Audio to AudioMP3 (#6163) 2019-10-14 18:42:03 +13:00
Garfield69
b02d62a662 Update README.md 2019-10-14 16:09:59 +13:00
Garfield69
0788640be7 anidex: handle all-cats request. resolves #6017 2019-10-14 13:21:11 +13:00
Garfield69
0504dd31cd newstudio: switch to public. resolves #6160 2019-10-14 08:27:24 +13:00
Garfield69
25f87c8ed2 upderverse: complete public switch. #6161 2019-10-14 08:14:33 +13:00
dimqua
58c4c37f90 FocusX: fix incorrect language tag (#6162) 2019-10-14 07:52:21 +13:00
dimqua
1fa421884d Underverse : Make public (#6161) 2019-10-14 07:51:48 +13:00
Garfield69
8b723a3cea hon3yhd: restore form login. resolves #5455 2019-10-14 07:16:15 +13:00
Garfield69
a2046ea73f nnmclub: switch to public. resolves #6155
also update categories.
2019-10-13 10:26:31 +13:00
Garfield69
c7f3ef544e tvchaosuk: switch to unit3d 1.9.4 resolves #6132 2019-10-12 20:05:40 +13:00
Christian Franchin
436970e419 Bj-Share: adds the year when adding 'last 24h torrents' (#6138)
Signed-off-by: Christian Franchin <christian@corp.kionux.com.br>
2019-10-12 19:58:16 +13:00
Garfield69
0c4a742b32 demonoid: ignore sponsored links. resolves #6136 2019-10-11 11:18:09 +13:00
Garfield69
3f314f35cf Update README.md 2019-10-11 09:11:38 +13:00
Garfield69
dcf26bfca1 bitspyder: fix login. resolves #6035
also update the categories
2019-10-10 20:58:08 +13:00
Garfield69
836d0be62f worldofp2p removed. gone. #623 2019-10-10 19:17:46 +13:00
Garfield69
cac5b92d6c turktorrent: changes for new login #4268
my a/c has been deleted so I cannot test login and check torrent results.
I expect this to find no results.
2019-10-10 19:10:21 +13:00
Garfield69
530ccb185f sukebie-pantsu: new domain sukebei.nyaa.net 2019-10-10 17:48:03 +13:00
Garfield69
42a14d5a46 3evils: update for U232-v6 resolves #6127
update categories
update selectors
update login
2019-10-10 16:38:42 +13:00
Tawagoto
1ebfb62b9c nyaa-pantsu: new domain nyaa.net (#6130) 2019-10-10 09:58:51 +13:00
Garfield69
b8e34c4966 add concertos a private site for live concerts. resolves #4975 2019-10-09 12:06:41 +13:00
Garfield69
cc7f753dc3 improve installation notes. 2019-10-08 11:51:08 +13:00
Garfield69
171a70693b Revert "resultpage: support 8 digit imdbid"
This reverts commit 2e102ee456.
2019-10-08 10:51:24 +13:00
Garfield69
2a7ca0803a Revert "parseutil: fix #6101 for 8 digit imdbid support"
This reverts commit 0a03ca1977.
2019-10-08 10:51:18 +13:00
Garfield69
1c449e59f5 yggcookie: yggtorrent new domain www3. 2019-10-07 19:56:42 +13:00
Garfield69
d38410310c add yggcookie: a cookie version of yggtorrent. #6086 2019-10-07 14:18:25 +13:00
Garfield69
0a03ca1977 parseutil: fix #6101 for 8 digit imdbid support 2019-10-07 10:58:29 +13:00
Garfield69
2e102ee456 resultpage: support 8 digit imdbid 2019-10-07 10:57:11 +13:00
Garfield69
85850c0d97 improve imdbid selector matching for a bunch of c# indexers 2019-10-07 10:56:47 +13:00
Garfield69
3c7415e8df custom: support 8 digit imdbid 2019-10-07 10:16:35 +13:00
Garfield69
7d9047cf14 apisearch: support 8 digit imdbid 2019-10-07 10:09:57 +13:00
Garfield69
06c786daee improve imdb selector matching for a bunch of yml indexers 2019-10-07 10:09:25 +13:00
David Pooley
b7daad903f Support 8 digit IMDB ID's (#6101)
Currently receive `Incorrect parameter: invalid imdbid format` when searching for content which uses an 8 digit IMDB id.
2019-10-07 08:32:22 +13:00
Sergio Cambra
3fb26627b1 elitetorrent: Get title from href to get format info (#6105) 2019-10-07 08:31:19 +13:00
Garfield69
55f506db19 hachede: headers in login block are not supported by cardigann. 2019-10-06 18:58:12 +13:00
Garfield69
d9e1ef4440 vizuk: headers in login block are not supported by cardigann. 2019-10-06 18:57:37 +13:00
Garfield69
4ad3738778 add hdzone a private Chinese site. resolves #6078 2019-10-06 16:59:24 +13:00
Garfield69
570790f300 torrentccf: correct movie-search parms. 2019-10-06 09:31:37 +13:00
Garfield69
09499e03de outbits: correct movie-search parms. 2019-10-06 09:31:16 +13:00
Garfield69
0d83ec2a07 PTP: add freeleech tag. resolves #6056 2019-10-06 09:30:28 +13:00
arielbeje
a8f7685446 xspeeds: Removed unused variables + cleaned up code (#6087) 2019-10-06 09:28:20 +13:00
send-your-nudes
c8d8ca511b demonoid: switch to using subcategory (#6090) 2019-10-06 09:25:54 +13:00
arielbeje
86218debd1 gazelletracker abstract: improve imdb in tags processing (#6085)
Replaced foreach loop with more efficient LINQ
2019-10-06 09:20:27 +13:00
Garfield69
c69f621ed4 add HDTurk a Turkish Private site. resolves #5958 2019-10-03 18:25:03 +13:00
arielbeje
0abc2df38d enable IMDb ID support for AlphaRatio (#6074)
added checking results tags for imdbid on GazelleTracker abstract
added searching with imdbid on GazelleTracker abstract via taglist query
2019-10-03 13:45:15 +13:00
Garfield69
fad548cce3 lechaudron: fix title selector 2019-10-02 22:49:44 +13:00
Garfield69
d6aa3b3d1b torrent9clone: new domain ww1. 2019-10-02 21:22:18 +13:00
Garfield69
971f464f90 improve cardigann's need-cookie-for-recaptcha checking. resolves #5963 2019-10-02 20:31:18 +13:00
Garfield69
31e781588d add tekno3d a private uhd movie/tv site. resolves #5615 2019-10-01 19:50:48 +13:00
Garfield69
25b00bd92d freetorrent: update android categories 2019-10-01 11:53:29 +13:00
Garfield69
c2e98cf8b3 add EniaHD a semi-private Russian site. resolves #6066 2019-10-01 11:39:48 +13:00
arielbeje
0cb947037f HeBits: Fixed comment links (#6068) 2019-10-01 11:38:20 +13:00
HDVinnie
4753680229 freetorrent: updates for unit3d 1.9.3 (#6061)
- update UNIT3D ver
- update login block
- add comments selector
- add ratio block
2019-09-30 07:42:37 +13:00
HDVinnie
cf41350150 immortuos: add comments selector (#6062) 2019-09-30 07:37:55 +13:00
Garfield69
29d891a6db Merge branch 'master' of https://github.com/Jackett/Jackett 2019-09-30 00:42:00 +13:00
Garfield69
edc1ee4761 asiancinema: update for unit3d 1.9.3 2019-09-30 00:41:09 +13:00
Aurelien
e5ac79fc3b EliteTracker: removed experimental label in Configuration (#6059) 2019-09-30 00:29:57 +13:00
Garfield69
b55d0d5926 shareuniversity: updates for unit3d 1.9.4 2019-09-30 00:28:39 +13:00
Garfield69
b14b031961 hd4free: updates. unit3d version undetermined. 2019-09-30 00:08:40 +13:00
Garfield69
70064a9f81 R4E: updates for unit3d 1.9.4 plus new categories. 2019-09-29 23:33:07 +13:00
Garfield69
5ee47c7494 revert #6050, apprarently hdforever is still alive 2019-09-29 23:21:47 +13:00
Garfield69
86155059d4 esharenet: update for unit3d 1.9.4 2019-09-29 23:02:07 +13:00
Garfield69
4adbddd5fe tellytorrent: update for unit3d 1.9.4 2019-09-29 22:53:31 +13:00
Garfield69
119c0d6f7e hush: updates for unit3d 1.9.4 2019-09-29 22:45:17 +13:00
Garfield69
a2bd33d48b dxdhd: update for unit3d 1.9.4 plus add new categories 2019-09-29 22:28:53 +13:00
Garfield69
2f9d2893e0 theshinning: add sport and doku categories. 2019-09-29 22:17:54 +13:00
Garfield69
32facf3893 sharewood: update categories 2019-09-29 22:09:56 +13:00
Garfield69
b0eb30e5f8 desireleasers: upgraded to unit3d 1.9.4 2019-09-29 20:58:48 +13:00
Garfield69
ebbbcd3619 rockethd removed. #5317 2019-09-29 20:41:40 +13:00
HDVinnie
0b43ede0c5 channelx: new download selector (#6042) 2019-09-29 20:24:09 +13:00
HDVinnie
d80d7721cc blutopia: add comments selector (#6051) 2019-09-29 10:05:14 +13:00
snamds
209cc56216 Newpct: Fix descargas2020.org site search (#6055) 2019-09-29 09:57:03 +13:00
Aurelien
07e6dd512f remove hd-forever. site is gone. (#6050) 2019-09-29 09:39:38 +13:00
Garfield69
bf3d13f8ca xtremefile: update categories 2019-09-25 20:48:56 +12:00
Garfield69
d72f03263c shareuniversity: update categories
also add banner and imdb
2019-09-25 20:28:33 +12:00
xfouloux
b3d5d1a8e8 yggtorrent domain extension from .ch to .pe (#6038)
* changed yggtorrent.yml domain from .ch to .pe

* Update yggtorrent.yml

changed domain extension from .ch to .pe
2019-09-25 13:04:13 +12:00
Garfield69
524eb1adb3 ilcorsaroblu: adjust selectors. resolves #6034
also update categories.
2019-09-24 23:04:43 +12:00
Ryan
aed9a858af add shareuniversity a private Nordic site. (#6032) 2019-09-24 22:06:50 +12:00
Ryan
a5c9487af3 Update README.md (#6033)
Added ShareUniversity private tracker
2019-09-24 21:47:41 +12:00
ThomasClemenceau
07360524b9 xthor: Add accent parameter. resolves #6025 (#6026) 2019-09-23 06:41:34 +12:00
Garfield69
6a25e73536 xtremezone: new category selector. #5966 2019-09-22 08:16:14 +12:00
Garfield69
84362df260 torrentkitty is gone. 2019-09-21 18:42:55 +12:00
Garfield69
efe428414d kikibt is gone. 2019-09-21 18:41:44 +12:00
Garfield69
8d48e049a2 btkitty is gone. 2019-09-21 18:40:23 +12:00
Garfield69
1a646ac41c asgaard: opps. adjust for #5754 resolves #6019 2019-09-21 06:51:44 +12:00
Garfield69
bcfeea7a49 add btdigg back. do only one get per search. resolves #4907 2019-09-21 06:30:57 +12:00
Garfield69
4af02e5e6e kapaki: refresh categories. resolves #6016 2019-09-20 13:48:32 +12:00
Garfield69
b455b7fc19 movcr: new domain .to 2019-09-20 09:51:42 +12:00
Garfield69
24c00de1df lechaudron: update selectors for new layout. 2019-09-20 09:24:04 +12:00
Garfield69
e51f900bb4 asgaard: adjust selectors. 2019-09-20 08:57:03 +12:00
Garfield69
853e98f949 Revert "Revert "rutracker: amend seeders selector. resolves #6014""
This reverts commit c9c58f5440.
2019-09-19 17:22:23 +12:00
Garfield69
c9c58f5440 Revert "rutracker: amend seeders selector. resolves #6014"
This reverts commit e83034340e.
2019-09-19 17:15:55 +12:00
Garfield69
e83034340e rutracker: amend seeders selector. resolves #6014 2019-09-19 17:14:15 +12:00
ValdikSS
612113d50f Tfile is a public tracker (#6013) 2019-09-19 17:01:38 +12:00
Garfield69
ca230c6c03 add nitro, a Polish public site. resolves #5949 2019-09-17 08:44:43 +12:00
Garfield69
f88c07c792 speedtorrentreloaded: refresh categories. resolves #5998 2019-09-17 08:27:06 +12:00
Garfield69
9d3498c382 Revert "demonoid: apparently category stacking may work, just have to wait for their DB to get updated. #5994"
This reverts commit dfb00e73e8.
2019-09-17 07:39:02 +12:00
Garfield69
dfb00e73e8 demonoid: apparently category stacking may work, just have to wait for their DB to get updated. #5994 2019-09-17 07:17:33 +12:00
Garfield69
5d158c0a9e demonoid: new category structure and layout. resolves #5994 2019-09-16 17:54:32 +12:00
Valentin Olaru
1f1b5e1755 xtremezone: new layout. resolves #5966 (#5993) 2019-09-16 06:26:12 +12:00
Garfield69
383baed220 empornium: adjust download selector. #5991 2019-09-15 15:23:55 +12:00
Garfield69
1284cf72e4 remove mkvcage. gone. resolves #5983 2019-09-14 19:39:22 +12:00
Garfield69
0e906abdfd lechaudron: new layout. 2019-09-14 19:34:20 +12:00
Harald Weber
d795251508 TorrentHeaven: new domain (#5971) 2019-09-11 06:15:15 +12:00
Garfield69
bdced92fdd Merge branch 'master' of https://github.com/Jackett/Jackett 2019-09-09 20:15:25 +12:00
Garfield69
faa7c09375 corsarored: add cat 37 2019-09-09 20:15:20 +12:00
xfouloux
66a3f8e0bc yggtorrent: improve searching. resolves #5955 (#5970)
workaround for anime search after first modification

it for example replace like that : 
One Punch Man S2 10 OR One Punch Man S2 2
BY
One Punch Man S02E10 OR One Punch Man S02E02

#5955
2019-09-09 15:47:50 +12:00
Garfield69
e720bcf2ed xtremezone: fix login. resolves #5966 2019-09-09 09:11:18 +12:00
Garfield69
d94ab16511 remove xktorrent, site closed. resolves #5964 2019-09-09 06:34:45 +12:00
Garfield69
899317ed12 Update Corsarored.cs 2019-09-08 19:49:51 +12:00
dandag
0537949497 add Corsaro.red (#5962) 2019-09-08 10:41:22 +12:00
Ricardo
1bce9beb4f puntotorrent: new domain .com (#5960) 2019-09-07 07:47:51 +12:00
Garfield69
6a5fa51d50 torrent9clone: new domain .sx 2019-09-05 08:06:22 +12:00
Garfield69
253752937e ebookparadijs: fix floating date selector. 2019-09-05 08:03:16 +12:00
Garfield69
4556ce7c69 ebookparadijs: update date selector again. 2019-09-04 10:08:10 +12:00
send-your-nudes
c69e4caa26 Demonoid: update category filtering (#5940)
Based on this:
https://fora.dnoid.to/index.php?topic=316.msg1209#msg1209
Formatting has a bit of a change
2019-09-03 06:52:16 +12:00
Garfield69
e64cef1daa thevault: update download link 2019-09-03 06:33:19 +12:00
Garfield69
c9c91e3603 theplace: update download link 2019-09-03 06:33:06 +12:00
Garfield69
892532ee1d theoccult: update download link. 2019-09-03 06:32:51 +12:00
Garfield69
64f2e88832 theshow: update download link. #5938 2019-09-03 06:30:04 +12:00
Garfield69
9a66b92da9 thegeeks: fixup download link. #5938 2019-09-02 19:22:03 +12:00
Garfield69
ff3ef7c726 thegeeks: new download link. resolves #5938
also refresh categories
2019-09-02 08:53:17 +12:00
Garfield69
4eba6fe859 ebookparadij: update the date selector
and add  new categories
2019-08-31 09:18:44 +12:00
Garfield69
5de24a31dc tntvillage removed, closed. #1111 2019-08-31 08:44:21 +12:00
Garfield69
dab98af241 xspeeds: improve login error parsing. #5924 2019-08-31 07:10:21 +12:00
Garfield69
f13f41e254 remove 7tor, closed. #885 2019-08-29 14:05:00 +12:00
Garfield69
4a394336de TGx: new domain 2019-08-29 13:30:27 +12:00
Garfield69
ed6eb09387 showrss: add legacylink http. #5920 2019-08-28 22:20:53 +12:00
Garfield69
321c11d231 demonoid: new category selector. 2019-08-28 10:04:40 +12:00
Garfield69
17054b938e remove wwt. #1439 2019-08-28 09:51:21 +12:00
Garfield69
5e46af3535 remove tigers-dl. #4961 2019-08-28 09:48:51 +12:00
Garfield69
8223d2567f remove megabliz. #1445 2019-08-28 09:44:53 +12:00
Garfield69
c3c1457493 remove gfxnews. #1445 2019-08-28 09:43:39 +12:00
thudneraan
9430608300 hdchina: update download link (#5918) 2019-08-28 08:15:54 +12:00
Garfield69
70088c068a polishsource: trap new login failed error. #5916 2019-08-28 07:24:09 +12:00
Garfield69
33db98faf3 remove btdigg #4907 2019-08-27 20:48:44 +12:00
Garfield69
02bf80bdf9 btdigg: add accept-encoding header
to avoid bad-gateway trap
2019-08-27 19:44:10 +12:00
Garfield69
1682767b37 delete json.bak when removing indexer. resolves #5692 2019-08-26 19:05:25 +12:00
Garfield69
78e705ee23 torrent9: new domains 2019-08-26 05:38:15 +12:00
Garfield69
db08900db7 kikibt: new domain kikibtba.com 2019-08-25 18:18:56 +12:00
Axel Antoine
f05e1321b5 Fix magnet link in the blackhole controller. resolves #5843 (#5901) 2019-08-24 19:08:37 +12:00
Garfield69
5eae1d4c05 bithorlo: add movie-search. 2019-08-24 08:54:13 +12:00
Garfield69
4c764a022a yourbittorrent: new domain .host
its not identical to the .com site so its probably a clone
2019-08-23 09:36:41 +12:00
Garfield69
38c3458032 cpasbien: new domain .lol resolves 5055 2019-08-23 08:44:19 +12:00
Hazem Ahmed Amr
90c224fdea Fix #4982: replaced CloudFlareUtilities with CloudflareSolverRe (#5897) 2019-08-23 07:35:49 +12:00
Garfield69
d343046e61 add netlab a Russian Private site. resolves #5874 2019-08-21 10:06:00 +12:00
659 changed files with 35117 additions and 17975 deletions

295
.editorconfig Normal file
View File

@@ -0,0 +1,295 @@
root=true
# To learn more about .editorconfig see https://aka.ms/editorconfigdocs
# With more recent updates Visual Studio 2017 supports EditorConfig files out of the box
# Visual Studio Code needs an extension: https://github.com/editorconfig/editorconfig-vscode
# For emacs, vim, np++ and other editors, see here: https://github.com/editorconfig
###############################
# Core EditorConfig Options #
###############################
# All files
[*]
indent_style=space
insert_final_newline=true
charset=utf-8
end_of_line=lf
trim_trailing_whitespace=true
# Microsoft .NET properties
csharp_new_line_before_members_in_object_initializers=true
csharp_space_after_cast=false
csharp_style_var_elsewhere=true:suggestion
csharp_style_var_for_built_in_types=true:suggestion
csharp_style_var_when_type_is_apparent=true:suggestion
dotnet_style_parentheses_in_arithmetic_binary_operators=never_if_unnecessary:none
dotnet_style_parentheses_in_other_binary_operators=never_if_unnecessary:none
dotnet_style_parentheses_in_relational_binary_operators=never_if_unnecessary:none
# ReSharper properties
resharper_align_linq_query=true
resharper_align_multiline_argument=true
resharper_align_multiline_calls_chain=true
resharper_align_multiline_extends_list=true
resharper_align_multiline_for_stmt=true
resharper_align_tuple_components=true
resharper_csharp_alignment_tab_fill_style=optimal_fill
resharper_csharp_align_multiline_parameter=true
resharper_csharp_align_multiple_declaration=true
resharper_csharp_indent_pars=outside
resharper_csharp_keep_blank_lines_in_code=0
resharper_csharp_keep_blank_lines_in_declarations=1
resharper_csharp_max_line_length=125
resharper_csharp_stick_comment=false
resharper_csharp_wrap_after_invocation_lpar=true
resharper_force_attribute_style=join
resharper_indent_invocation_pars=outside
resharper_indent_method_decl_pars=outside
resharper_indent_preprocessor_region=no_indent
resharper_indent_statement_pars=outside
resharper_indent_typearg_angles=outside
resharper_indent_typeparam_angles=outside
resharper_keep_existing_embedded_arrangement=false
resharper_keep_existing_expr_member_arrangement=false
resharper_keep_existing_invocation_parens_arrangement=false
resharper_keep_existing_linebreaks=false
resharper_keep_existing_switch_expression_arrangement=false
resharper_place_attribute_on_same_line=false
resharper_place_expr_accessor_on_single_line=true
resharper_place_expr_method_on_single_line=true
resharper_place_expr_property_on_single_line=true
resharper_place_simple_embedded_statement_on_same_line=false
resharper_space_within_empty_braces=false
resharper_wrap_array_initializer_style=chop_always
resharper_wrap_before_extends_colon=true
resharper_wrap_before_type_parameter_langle=true
resharper_wrap_multiple_type_parameter_constraints_style=wrap_if_long
resharper_wrap_object_and_collection_initializer_style=chop_always
# ReSharper inspection severities
resharper_arrange_attributes_highlighting=suggestion
resharper_arrange_redundant_parentheses_highlighting=suggestion
resharper_enforce_if_statement_braces_highlighting=suggestion
# Xml project files
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
indent_size=2
# JavaScript/HTML
[*.{js,ts,json,html,cshtml}]
indent_size=2
# Code files
[*.{cs,csx,vb,vbx}]
indent_size=4
###############################
# .NET Coding Conventions #
###############################
[*.{cs,vb}]
# Organize usings
dotnet_sort_system_directives_first=true
# this. preferences
dotnet_style_qualification_for_field=false:suggestion
dotnet_style_qualification_for_property=false:suggestion
dotnet_style_qualification_for_method=false:suggestion
dotnet_style_qualification_for_event=false:suggestion
# Language keywords vs BCL types preferences
dotnet_style_predefined_type_for_locals_parameters_members=true:warning
dotnet_style_predefined_type_for_member_access=true:suggestion
# Parentheses preferences
dotnet_style_parentheses_in_arithmetic_binary_operators=always_for_clarity:silent
dotnet_style_parentheses_in_relational_binary_operators=always_for_clarity:silent
dotnet_style_parentheses_in_other_binary_operators=always_for_clarity:silent
dotnet_style_parentheses_in_other_operators=never_if_unnecessary:silent
# Modifier preferences
dotnet_style_require_accessibility_modifiers=for_non_interface_members:silent
dotnet_style_readonly_field=true:suggestion
# Expression-level preferences
dotnet_style_object_initializer=true:warning
dotnet_style_collection_initializer=true:warning
dotnet_style_explicit_tuple_names=true:suggestion
dotnet_style_null_propagation=true:suggestion
dotnet_style_coalesce_expression=true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method=true:suggestion
dotnet_style_prefer_inferred_tuple_names=true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names=true:suggestion
dotnet_style_prefer_auto_properties=true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment=true:suggestion
dotnet_style_prefer_conditional_expression_over_return=true:suggestion
dotnet_style_prefer_compound_assignment=true:suggestion
###############################
# Naming Conventions #
###############################
# Style Definitions
dotnet_naming_style.pascal_case_style.capitalization=pascal_case
# Use PascalCase for constant fields
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity=warning
dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols=constant_fields
dotnet_naming_rule.constant_fields_should_be_pascal_case.style=pascal_case_style
dotnet_naming_symbols.constant_fields.applicable_kinds=field
dotnet_naming_symbols.constant_fields.applicable_accessibilities=*
dotnet_naming_symbols.constant_fields.required_modifiers=const
# Naming rules
dotnet_naming_rule.interface_should_be_begins_with_i.severity = warning
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
dotnet_naming_rule.types_should_be_pascal_case.severity = warning
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = warning
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.private_or_internal_static_field_should_be_private_or_internal_static_with_prefix.severity = warning
dotnet_naming_rule.private_or_internal_static_field_should_be_private_or_internal_static_with_prefix.symbols = private_or_internal_static_field
dotnet_naming_rule.private_or_internal_static_field_should_be_private_or_internal_static_with_prefix.style = private_or_internal_static_with_prefix
dotnet_naming_rule.private_or_internal_field_should_be_private_prefix.severity = warning
dotnet_naming_rule.private_or_internal_field_should_be_private_prefix.symbols = private_or_internal_field
dotnet_naming_rule.private_or_internal_field_should_be_private_prefix.style = private_prefix
dotnet_naming_rule.asyncmethods_should_be_ends_with_async.severity = warning
dotnet_naming_rule.asyncmethods_should_be_ends_with_async.symbols = asyncmethods
dotnet_naming_rule.asyncmethods_should_be_ends_with_async.style = ends_with_async
# Symbol specifications
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.required_modifiers =
dotnet_naming_symbols.private_or_internal_field.applicable_kinds = field
dotnet_naming_symbols.private_or_internal_field.applicable_accessibilities = internal, private, private_protected
dotnet_naming_symbols.private_or_internal_field.required_modifiers =
dotnet_naming_symbols.private_or_internal_static_field.applicable_kinds = field
dotnet_naming_symbols.private_or_internal_static_field.applicable_accessibilities = internal, private, private_protected
dotnet_naming_symbols.private_or_internal_static_field.required_modifiers = static
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.required_modifiers =
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.required_modifiers =
dotnet_naming_symbols.asyncmethods.applicable_kinds = delegate, method, local_function
dotnet_naming_symbols.asyncmethods.applicable_accessibilities = *
dotnet_naming_symbols.asyncmethods.required_modifiers = async
# Naming styles
dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix =
dotnet_naming_style.begins_with_i.word_separator =
dotnet_naming_style.begins_with_i.capitalization = pascal_case
dotnet_naming_style.private_or_internal_static_with_prefix.required_prefix = s_
dotnet_naming_style.private_or_internal_static_with_prefix.required_suffix =
dotnet_naming_style.private_or_internal_static_with_prefix.word_separator =
dotnet_naming_style.private_or_internal_static_with_prefix.capitalization = pascal_case
dotnet_naming_style.private_prefix.required_prefix = _
dotnet_naming_style.private_prefix.required_suffix =
dotnet_naming_style.private_prefix.word_separator =
dotnet_naming_style.private_prefix.capitalization = camel_case
dotnet_naming_style.ends_with_async.required_prefix =
dotnet_naming_style.ends_with_async.required_suffix = Async
dotnet_naming_style.ends_with_async.word_separator =
dotnet_naming_style.ends_with_async.capitalization = pascal_case
###############################
# C# Coding Conventions #
###############################
[*.cs]
# var preferences
csharp_style_var_for_built_in_types=true:suggestion
csharp_style_var_when_type_is_apparent=true:suggestion
csharp_style_var_elsewhere=true:suggestion
# Expression-bodied members
csharp_style_expression_bodied_methods=when_on_single_line:suggestion
csharp_style_expression_bodied_constructors=when_on_single_line:suggestion
csharp_style_expression_bodied_operators=when_on_single_line:suggestion
csharp_style_expression_bodied_properties=true:suggestion
csharp_style_expression_bodied_indexers=true:suggestion
csharp_style_expression_bodied_accessors=true:suggestion
csharp_style_expression_bodied_lambdas=true:suggestion
csharp_style_expression_bodied_local_functions=true:suggestion
# Pattern matching preferences
csharp_style_pattern_matching_over_is_with_cast_check=true:suggestion
csharp_style_pattern_matching_over_as_with_null_check=true:suggestion
# Null-checking preferences
csharp_style_throw_expression=true:warning
csharp_style_conditional_delegate_call=true:warning
# Modifier preferences
csharp_preferred_modifier_order=public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion
# Expression-level preferences
csharp_prefer_braces=false:suggestion
csharp_style_deconstructed_variable_declaration=true:suggestion
csharp_prefer_simple_default_expression=true:warning
csharp_style_pattern_local_over_anonymous_function=true:suggestion
csharp_style_inlined_variable_declaration=true:suggestion
# Prefer C# 8.0 Indexing Features
csharp_style_prefer_index_operator=true:suggestion
csharp_style_prefer_range_operator=true:suggestion
csharp_style_deconstructed_variable_declaration=true:suggestion
csharp_style_pattern_local_over_anonymous_function=true:suggestion
csharp_using_directive_placement=outside_namespace:suggestion
csharp_prefer_static_local_function=true:suggestion
csharp_prefer_simple_using_statement=true:suggestion
csharp_style_prefer_switch_expression=true:suggestion
###############################
# C# Formatting Rules #
###############################
# New line preferences
csharp_new_line_before_open_brace=all
csharp_new_line_before_else=true
csharp_new_line_before_catch=true
csharp_new_line_before_finally=true
csharp_new_line_before_members_in_object_initializers=true
csharp_new_line_before_members_in_anonymous_types=true
csharp_new_line_between_query_expression_clauses=true
# Indentation preferences
csharp_indent_case_contents=true
csharp_indent_switch_labels=true
csharp_indent_labels=flush_left
csharp_indent_block_contents=true
csharp_indent_braces=false
csharp_indent_case_contents_when_block=true
# Space preferences
csharp_space_after_cast=false
csharp_space_after_keywords_in_control_flow_statements=true
csharp_space_between_method_call_parameter_list_parentheses=false
csharp_space_between_method_declaration_parameter_list_parentheses=false
csharp_space_between_parentheses=false
csharp_space_before_colon_in_inheritance_clause=true
csharp_space_after_colon_in_inheritance_clause=true
csharp_space_around_binary_operators=before_and_after
csharp_space_between_method_declaration_empty_parameter_list_parentheses=false
csharp_space_between_method_call_name_and_opening_parenthesis=false
csharp_space_between_method_call_empty_parameter_list_parentheses=false
# Wrapping preferences
csharp_preserve_single_line_statements=false
csharp_preserve_single_line_blocks=true
###############################
# VB Coding Conventions #
###############################
[*.vb]
# Modifier preferences
visual_basic_preferred_modifier_order=Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:suggestion

View File

@@ -1,13 +1,33 @@
**Please use the search bar** at the top of the page and make sure you are not creating an already submitted issue. Duplicating issues makes it more difficult for everyone to follow. Your issue may have already been solved in the past as well.
**Please use the search bar** at the top of the page and make sure you are not creating an already submitted issue.
Check closed issues as well, because your issue may have already been fixed.
Provide a description of the feature request or bug, the more details the better.
Please read our [Contributing Guidelines](https://github.com/Jackett/Jackett/blob/master/CONTRIBUTING.md) before submitting your issue to ensure a prompt response to your bug.
If you are experiencing an issue with a tracker, then:
1. Use your browser to check you can access the site directly, and if a login is required, check you can login and that you do not have any outstanding account issues.
2. If you haven't already, try upgrading to the latest version of Jackett, your issue may have already been resolved.
3. If it is still not working for you, then a **full enhanced log must be included**. Instructions for obtaining logs are here: https://github.com/Jackett/Jackett#troubleshooting
### Environment
(At the bottom of your Jackett Dashboard page) **Jackett version**:
(if you installed using Jackett.Binaries.Mono.tar.gz) **Mono version**:
**OS**:
-------------------------------
**.Net Runtime**: [.Net-Core/.Net-Framework/Mono]
**.Net Version**:
**Jackett Version**:
**Last Working Jackett Version**:
**Are you using a proxy or VPN?** [yes/no]
### Description
[List steps to reproduce the error and details on what happens and what you expected to happen]
### Logged Error Messages
[Place any relevant error messages you noticed from the logs here.]
[Make sure you attach the full logs with your personal information removed in case we need more information]
### Screenshots
[Place any screenshots of the issue here if needed]

BIN
.github/jackett-screenshot1.png vendored Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

BIN
.github/jackett-screenshot2.png vendored Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
.github/jackett-screenshot3.png vendored Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

View File

@@ -2,8 +2,31 @@ Hi @{{ payload.sender.login }},
You've created an issue, but haven't provided any details to allow the community to assist you. To prevent issue tracker clutter, this issue will now be closed. Please provide the information needed below and your comment will automatically re-open this issue.
Provide a description of the feature request or bug, the more details the better.
If you are experiencing an issue with a tracker, a **full enhanced log must be included**. Instructions for obtaining logs are here: https://github.com/Jackett/Jackett#troubleshooting
### Environment
(At the bottom of your Jackett Dashboard page) **Jackett version**:
(if you installed using Jackett.Binaries.Mono.tar.gz) **Mono version**:
**OS**:
**.Net Runtime**: [.Net-Core/.Net-Framework/Mono]
**.Net Version**:
**Jackett Version**:
**Last Working Jackett Version**:
**Are you using a proxy or VPN?** [yes/no]
### Description
[List steps to reproduce the error and details on what happens and what you expected to happen]
### Logged Error Messages
[Place any relevant error messages you noticed from the logs here.]
[Make sure you attach the full logs with your personal information removed in case we need more information]
### Screenshots
[Place any screenshots of the issue here if needed]

200
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,200 @@
# Contributing to Jackett
So, you've decided you want to help make Jackett a better program for everyone. Not everyone chooses to help, so we thank you for your decision.
In order to help us make the most of your contribution please take the time to read these contributing guidelines.
These are just guidelines, not hard rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
## Ways you can help
- [Getting Started](#getting-started)
- [Troubleshooting](#troubleshooting)
- [Reporting a bug](#reporting-a-bug)
- [Adding a new tracker](#adding-a-new-tracker)
- [Contributing Code](#contributing-code)
- [Setting up your environment](#setting-up-your-environment)
- [Coding style](#coding-style)
- [Getting your code accepted & pull requests](#pull-requests)
# Getting Started
Now that you've decided you want to help us make Jackett a better program the big question is: Where do you start?
Why right here of course. You can help in several ways, from finding and reporting bugs, to adding new trackers,
to fixing bugs in the program code itself. Below, we outline the steps needed to file your first bug report.
## Troubleshooting
Before you submit a bug report, it's important to make sure it's not already a known issue,
and to make sure it's a bug we can find and fix quickly.
These troubleshooting tips will help make sure your bug report is high quality and can be fixed quickly.
**Update your Jackett to the latest version**
Before you submit a bug-report or do any other troubleshooting, make sure your Jackett is the latest release version.
We are releasing bug fixes almost daily, so your issue may have been fixed already.
Bugs that are submitted without being on the latest version may be closed.
**Error "An error occurred while sending the request: Error: TrustFailure (A call to SSPI failed, see inner exception.)"**
This is often caused by missing CA certificates.
Try reimporting the certificates in this case:
- On Linux (as user root): `wget -O - https://curl.haxx.se/ca/cacert.pem | cert-sync /dev/stdin`
- On macOS: `curl -sS https://curl.haxx.se/ca/cacert.pem | cert-sync --user /dev/stdin`
**Tracker isn't working**
If you are experiencing an issue with a tracker, then:
- Use your browser to check you can access the site directly, and if a login is required,
check you can login and that you do not have any outstanding account issues.
- If you haven't already, try upgrading to the latest version of Jackett.
- If it is still not working for you, then a **full enhanced log must be included**.
**Enable enhanced logging**
- You can get *enhanced* logging with the command line switches `-t -l` or by enabling `Enhanced logging` via the web interface
(followed by clicking on the `Apply Server Settings` button).
- These enhanced logs are necessary for us to quickly track down your bug and get a fix implemented in code.
- Make sure you remove your username/password/cookies from the log files before submitting them with your issue.
- The logfiles (log.txt/updater.txt) are stored on Windows in `%ProgramData%\Jackett`, on Linux/macOS in `~/.config/Jackett/`,
and on FreeBSD in `/usr/local/jackett`.
## Reporting a Bug
Once you have your enhanced logs and you are still unable to resolve your issue yourself, now it's time to prepare to submit a bug report!
Before you submit your report, make sure you've searched open *and* closed bugs to see if someone's already informed us of your issue.
If your search doesn't help you fix your issue and you can't find a similar bug already listed, then you get to make a new issue.
Your issue should have the following information.
- **Descriptive Title** - The title of your bug should include keywords and a descriptive summary of what you're experiencing
to help others avoid duplicating your bug report
- Keywords in the title should be as follows:
- Tracker bugs should start with the tracker in brackets e.g. [**AnimeBytes**]
- Feature requests should start with [**REQ**]
- New trackers should begin with [**New**] and the tracker type [**Public**/**Private**/**Semi-Private**] e.g. **[New][Public] ThePirateBay**
- **Environment Details** - These are things like your OS version, Jackett type and version, mono/.Net-core/framework version(s).
These are asked for by the issue template when you create a new issue on GitHub.
- **Steps** to cause the problem, if applicable. These should be specific and repeatable.
- **What happens** when you take the steps and **what you expected to happen**
- **Error messages** and/or screenshots of the issue.
- The **last working version** if it's applicable. Tracker issues normally don't need this information.
- An attached copy of your **enhanced logs**. Don't forget to remove usernames/passwords/API-keys from the logs.
We'll be working on making sure these are automatically censored in the future.
- Any other **relevant details** you can think of. The more information we have, the quicker we can solve the problem.
## Adding a New Tracker
Jackett's framework typically allows our team and volunteering developers to implement new trackers in a couple of hours
Depending on logic complexity, there are two common ways new trackers are implemented:
1. simple [definitions](http://github.com/Jackett/Jackett/tree/master/src/Jackett.Common/Definitions) (.yml / YAML)
2. advanced (native) [indexers](http://github.com/Jackett/Jackett/tree/master/src/Jackett.Common/Indexers) (.cs / C#)
Read more about the [simple definition format](https://github.com/Jackett/Jackett/wiki/Definition-format).
# Contributing Code
While reporting the bugs is super helpful since you can't fix bugs you don't know about, they don't get fixed unless someone goes in and fixes them.
Luckily, you're a developer who wants to help us do just that. Thanks!
We really need more developers working on Jackett, no matter their skill level or walk of life.
We've developed the guide below to make sure we're all on the same page because this makes reading and fixing code much simpler, faster, and less bug-prone.
## Setting up your environment
The following guide assumes you've never worked with a Visual Studio project with GitHub before.
This will give you the minimum necessary tools to get started. There are plenty of optional tools that may help you, but we won't cover those here.
- The guide is currently only geared towards developing on Windows using Visual Studio Community 2019.
If you use something else, please add it here for others.
<details open=true> <summary> Windows </summary>
<details open=true> <summary> Visual Studio 2019 </summary>
- Install [Visual Studio Community 2019](http://visualstudio.com) for free.
- About 2GB download. 8GB installed.
- Make sure it includes the following Workloads/Components:
- .Net Desktop Development
- .Net Core Cross-Platform Development
- GitHub extension for Visual Studio
- [Connect and synchronize your forked repository to Visual Studio](https://doc.fireflymigration.com/working-with-github-fork-in-visual-studio.html)
- Open `Tools -> NuGet Package Manager -> Package Manager Console`
- From the PMC, run `dotnet tool install -g dotnet-format` and `dotnet restore`
- Run `Build -> Rebuild Solution` to restore NuGet packages
- Ensure `Jackett.Server` is the Startup Project (instead of `Jackett.Service`), and the Run Target (instead of `IIS Express`)
</details>
</details>
## Coding Style
Now that you're ready to code, it's time to teach you our style guidelines. This style guide helps our code stay readable and bug-free.
You can see the full details in the [Editor Config](.editorconfig) file.
Running `dotnet format` from the Package Manager Console will apply the style guide to the solution and is required before any pull request will be accepted.
- Whitespace
- Indenting is done with 4 spaces
- No whitespace at the end of lines
- All files have a final newline
- Unix style new lines for committed code
- Spaces around all non-unary operators
- Braces
- Opening brace on its own line
- Single line statements do not use braces
- If any part of an `if ... else if ... else` block needs braces, all blocks will use braces
- Naming
- `interface` names begin with I and are `PascalCase`
- `private` variables begin with _ and are `camelCase`
- `private static` variables begin with s_ and are `camelCase`
- local variables are `camelCase`
- `async` function names end with Async
- all others are `PascalCase`
- Others
- Prefer `var` for declarations
- Prefer modern language enhancements (C#7, C#8 features)
- switch expressions
- range operator
- using statements
- `default` over `default(T)`
- Prefer conditional access `?.` and null coalescing `??` over null checks
- Prefer pattern matching
- Prefer expression bodies
- Avoid `this` qualifier
- `using` statements go outside namespace declaration and are sorted:
- `using System`
- `using System.*` alphabetically
- all others alphabetically
- Prefer explicit variable modifiers: `private`, `public`, `protected`
- Prefer `readonly` and `const` variables when appropriate
## Pull Requests
At this point, you've found the bug, fixed it, tested that the bug is gone, and you haven't broken anything else in the process.
Now it's time to share your code with everyone else so we can all enjoy a better version of the program.
Here's what you need to do to give your pull request the best chance at a timely review and maximize that it will be accepted.
- Make sure your code follows GitHub and Jackett's standards and practices.
- Your changes should be made in a new branch based on `master` not directly on your `master` branch
- Your commit messages should start with a capital letter, be in the singular imperative voice, and do not end with punctuation marks, e.g.:
- Fix login handling for xxx tracker
- Add feature yyy
- Remove dead tracker fff
- Run `dotnet format` from the Package Manager Console (found in `Tools -> NuGet Package Manager` or `View -> Other Windows`)
- If your branch falls out of sync and has merge conflicts with the Jackett official `master`
[rebase](https://mohitgoyal.co/2018/04/18/working-with-git-and-visual-studio-use-git-rebase-inside-visual-studio/) your fix before submission.
- If you deleted, moved, or renamed any files/folders, be sure to add the old file/folder path to the appropriate array in `Jacket.Updater/Program.cs`
- If you added or renamed a tracker, update the README to include the new name
- [Squash your local commits](https://github.com/spottedmahn/my-blog/issues/26)
- Push your commit branch to your fork on GitHub.
- Create your Pull Request
- You can do this from the GitHub website or from the GitHub window in Visual Studio.
- Give your Pull Request a descriptive title
- Include keywords like `[New Tracker]` or `[Feature]` at the beginning of the title
- Include any open tickets this Pull Request should fix in the description. **Do not** put ticket numbers in the title.
We will be by when we can to review your Pull Request.

View File

@@ -19,7 +19,7 @@ AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DefaultDirName={commonappdata}\{#MyAppName}
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=yes
OutputBaseFilename={#MyOutputFilename}

335
README.md
View File

@@ -3,13 +3,16 @@
[![GitHub issues](https://img.shields.io/github/issues/Jackett/Jackett.svg?maxAge=60&style=flat-square)](https://github.com/Jackett/Jackett/issues)
[![GitHub pull requests](https://img.shields.io/github/issues-pr/Jackett/Jackett.svg?maxAge=60&style=flat-square)](https://github.com/Jackett/Jackett/pulls)
[![Build status](https://ci.appveyor.com/api/projects/status/gaybh5mvyx418nsp/branch/master?svg=true)](https://ci.appveyor.com/project/Jackett/jackett)
[![Github Releases](https://img.shields.io/github/downloads/Jackett/Jackett/total.svg?maxAge=60&style=flat-square)](https://github.com/Jackett/Jackett/releases/latest)
[![Build Status](https://dev.azure.com/Jackett-project/Jackett/_apis/build/status/Jackett.Jackett?branchName=master)](https://dev.azure.com/Jackett-project/Jackett/_build/latest?definitionId=1&branchName=master)
[![GitHub Releases](https://img.shields.io/github/downloads/Jackett/Jackett/total.svg?maxAge=60&style=flat-square)](https://github.com/Jackett/Jackett/releases/latest)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/jackett.svg?maxAge=60&style=flat-square)](https://hub.docker.com/r/linuxserver/jackett/)
[![Discord](https://img.shields.io/badge/discord-chat-7289DA.svg?maxAge=60&style=flat-square)](https://discord.gg/J865QuA)
This project is a new fork and is recruiting development help. If you are able to help out please contact us.
Jackett works as a proxy server: it translates queries from apps ([Sonarr](https://github.com/Sonarr/Sonarr), [Radarr](https://github.com/Radarr/Radarr), [SickRage](https://sickrage.github.io/), [CouchPotato](https://couchpota.to/), [Mylar](https://github.com/evilhero/mylar), [Lidarr](https://github.com/lidarr/lidarr), [DuckieTV](https://github.com/SchizoDuckie/DuckieTV), [qBittorrent](https://www.qbittorrent.org/), [Nefarious](https://github.com/lardbit/nefarious) etc) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps.
Please see our [troubleshooting and contributing guidelines](CONTRIBUTING.md) before submitting any issues or pull requests
Jackett works as a proxy server: it translates queries from apps ([Sonarr](https://github.com/Sonarr/Sonarr), [Radarr](https://github.com/Radarr/Radarr), [SickRage](https://sickrage.github.io/), [CouchPotato](https://couchpota.to/), [Mylar](https://github.com/evilhero/mylar), [Lidarr](https://github.com/lidarr/lidarr), [DuckieTV](https://github.com/SchizoDuckie/DuckieTV), [qBittorrent](https://www.qbittorrent.org/), [Nefarious](https://github.com/lardbit/nefarious) etc.) into tracker-site-specific http queries, parses the html response, then sends results back to the requesting software. This allows for getting recent uploads (like RSS) and performing searches. Jackett is a single repository of maintained indexer scraping & translation logic - removing the burden from other apps.
Developer note: The software implements the [Torznab](https://github.com/Sonarr/Sonarr/wiki/Implementing-a-Torznab-indexer) (with [nZEDb](https://github.com/nZEDb/nZEDb/blob/dev/docs/newznab_api_specification.txt) category numbering) and [TorrentPotato](https://github.com/RuudBurger/CouchPotatoServer/wiki/Couchpotato-torrent-provider) APIs.
@@ -17,60 +20,84 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
#### Supported Systems
* Windows 7SP1 or greater using .NET 4.6.1 or above [Download here](https://www.microsoft.com/net/framework/versions/net461)
* Linux ([supported operating systems here](https://github.com/dotnet/core/blob/master/release-notes/2.1/2.1-supported-os.md))
* macOS 10.12 or greater
* Linux [supported operating systems here](https://github.com/dotnet/core/blob/master/release-notes/2.1/2.1-supported-os.md#linux)
* macOS 10.13 or greater
<details> <summary> <b> Supported Public Trackers </b> </summary>
### Supported Public Trackers
* 1337x
* 7torrents
* ACG.RIP
* ACGsou
* Anidex
* Anime Tosho
* AniRena
* AudioBook Bay (ABB)
* btbit
* Badass Torrents
* BigFANGroup
* BitRu
* BitTorrent.AM
* BTDB
* BTDigg
* BTKitty
* BTDIGG
* BTeye
* BT.etree
* BTSOW
* Cili180
* ConCen
* Corsaro.red
* cpasbien
* cpasbienClone
* Demonoid
* DIGBT
* dmhy
* ETTV
* EliteTorrent.biz
* ExtraTorrent.ag
* EstrenosDTL
* ExtraTorrent.cd
* EXT Torrents
* EZTV
* Filebase
* FireBit
* Frozen Layer
* GamesTorrents
* GkTorrent
* Hon3yHD.net
* GloDLS
* HDReactor
* Horrible Subs
* IBit
* Idope
* Il Corsaro Nero <!-- maintained by bonny1992 -->
* Il Corsaro Blu
* Internet Archive (archive.org)
* Isohunt2
* iTorrent
* KATcrs
* KickAssTorrent (KATcr)
* KickAssTorrent (thekat.se clone)
* KikiBT
* LemenCili
* KickAssTorrent (kat.li)
* Legit Torrents
* LePorno
* LimeTorrents
* MacTorrents
* Magnet4You
* MagnetDL
* MejorTorrent <!-- maintained by ivandelabeldad -->
* MkvCage
* Monova
* MovCr
* MoviesDVDR
* Newpct (aka: tvsinpagar, descargas2020, torrentlocura, torrentrapid, tumejortorrent, pctnew, etc)
* Newstudio
* Nitro
* NNTT
* NoName Club (NNM-Club)
* Nyaa.si
* Nyaa-Pantsu
* OxTorrent
* PiratBit
* Pirateiro
* PornLeech
* ProStyleX
* RARBG
* Rus-media
* RuTor
* Seedpeer
* shokweb
* ShowRSS
* SkyTorrentsClone
@@ -79,69 +106,85 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* sukebei-Pantsu
* TFile
* The Pirate Bay (TPB)
* TNTVillage <!-- maintained by bonny1992 -->
* Tokyo Tosho
* TopNow
* Torlock
* TOROS
* Torrent Downloads (TD)
* Torrent4You
* Torrent9
* Torrent9Clone
* TorrentDownload
* TorrentFunk
* TorrentGalaxy.org (TGx)
* TorrentGalaxy (TGx)
* TorrentKitty
* TorrentParadise
* TorrentProject2
* TorrentQuest
* Torrents.csv
* TorrentView
* TorrentWal
* Torrent9
* Torernt9 clone (torrents9.ch)
* Torrentz2
* World Wide Torrents
* Underverse
* YourBittorrent
* YTS.ag
* Zooqle
</details>
<details> <summary> <b> Supported Semi-Private Trackers </b> </summary>
### Supported Semi-Private Trackers
* 7tor
* Alein
* AlexFilm
* AniDUB
* ArenaBG
* BaibaKo
* BookTracker
* CasStudioTV
* Crazy's Corner
* CzTorrent
* Deildu
* Film-Paleis
* DXP (Deaf Experts)
* EniaHD
* Erzsebet
* ExtremlymTorrents
* Gay-Torrents.net
* Gay-Torrents.org
* GDF76
* HamsterStudio
* HD Dolby
* Kinozal
* Korsar
* LostFilm.tv
* Marine Tracker
* Metal Tracker
* MuziekFrabriek
* MVGroup Forum
* MVGroup Main
* Newstudio
* NetHD (VietTorrent)
* NoName Club (NNM-Club)
* Pornolab
* RiperAM
* RockBox
* Rustorka
* RuTracker
* Sharewood
* SkTorrent
* SoundPark
* Toloka.to
* Torrent-Explosiv
* Torrents-Local
* Underverse
* TribalMixes
* Union Fansub
* Vanila
* YggTorrent (YGG)
* Ztracker
</details>
<details> <summary> <b> Supported Private Trackers </b> </summary>
### Supported Private Trackers
* 0day.kiev
* 2 Fast 4 You
* 3D Torrents (3DT)
* 3D Torrents (3DT)
* 3evils
* 4thD (4th Dimension)
* 52PT
* 720pier
* Abnormal
* Acid Lounge (A-L)
@@ -151,21 +194,20 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* AnimeBytes (AB)
* AnimeTorrents (AnT)
* Anthelion
* AOX (Chippu)
* Araba Fenice (Phoenix)
* Asgaard (AG)
* AsianCinema
* AsianDVDClub
* AST4u
* Audiobook Torrents (ABT)
* AudioNews (AN)
* Awesome-HD (AHD)
* AVG (Audio Video Games)
* Avistaz (AsiaTorrents)
* Back-ups
* BakaBT
* BaconBits (bB)
* BeiTai
* BeyondHD (BHD)
* Bibliotik
* BIGTorrent
* BigTower
* Bit-City Reloaded
@@ -173,16 +215,16 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* BiT-TiTAN
* Bithorlo (BHO)
* BitHUmen
* BitMe
* BitMeTV
* BitsPiracy
* Bitspyder
* BitTorrentFiles
* BitTurk
* BJ-Share (BJ)
* BlueBird
* Blutopia (BLU)
* Brasil Tracker
* BroadcastTheNet (BTN)
* BroadCity
* BRObits
* BrokenStones
* BTGigs (TG)
* BTNext (BTNT)
@@ -190,20 +232,20 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* Carpathians
* CartoonChaos (CC)
* CasaTorrent
* CasStudioTV
* CCFBits
* CGPeers
* CHDBits
* ChannelX
* Cinemageddon
* CinemaMovies
* Cinematik
* CinemaZ (EuTorrents)
* Classix
* Concertos
* CrazyHD
* CrazySpirits
* CrnaBerza
* DanishBits (DB)
* Dark-Shadow
* Das Unerwartete
* DataScene (DS)
* DesiReleasers
@@ -212,64 +254,72 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* DigitalCore
* DigitalHive
* DivTeam
* DivxTotal
* DocumentaryTorrents (DT)
* Downloadville
* Dragonworld Reloaded
* Dream Team
* DXDHD
* EbookParadijs
* Ebooks-Shares
* EfectoDoppler
* EliteHD (HDClub) [![(invite needed)][inviteneeded]](#)
* Elit Tracker (ET)
* EggMeOn
* Elite-Tracker
* Empornium (EMP)
* eShareNet
* eStone (XiDER, BeLoad)
* Ethor.net (Thor's Land)
* ExtremeTorrents
* FANO.IN
* FileList (FL)
* FeedUrNeed (FuN)
* Femdomcult
* FileList (FL)
* Film-Paleis
* FinVip
* FocusX
* FreeTorrent
* FullMixMusic
* FunFile (FF)
* FunkyTorrents (FT)
* Fuzer (FZ)
* Galeriens (LaPauseTorrents)
* GAYtorrent.ru
* GazelleGames (GGn)
* Generation-Free
* GFXNews
* GFXPeers
* GigaTorrents
* GimmePeers (formerly ILT) <!-- maintained by jamesb2147 -->
* GiroTorrent
* Greek Legends
* Greek Team
* HacheDe
* Hardbay
* HD4Free (HD4)
* HD-Forever (HDF)
* HD-Olimpo
* HD-Only (HDO)
* HD-Space (HDS)
* HD-Spain
* HD-Torrents (HDT)
* HD-Bits.com
* HD4FANS
* HDArea (HDA)
* HDBits
* HDCenter
* HDChina (HDWing)
* HDCity
* HDDisk (HDD)
* HDHome (HDBigger)
* HDME
* HDRoute
* HDSky
* HDTime
* HDTorrents.it
* HDTurk
* HDU
* HDZone
* Hebits
* Hon3y HD
* HQSource (HQS)
* HuSh
* Hyperay
* HuSh
* ICE Torrent
* iLoveClassics (iLC)
* ImmortalSeed (iS)
* Immortuos
* inPeril
@@ -278,9 +328,9 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* JPopsuki
* Kapaki
* Karagarga
* LaPauseTorrents
* Le Chaudron
* LegacyHD (HD4Free)
* Le Saloon
* LeagueHD
* LearnFlakes
* LibraNet (LN)
* LinkoManija
@@ -288,34 +338,40 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* M-Team TP (MTTP)
* Magico (Trellas)
* Majomparádé (TurkDepo)
* Mega-Bliz
* MicroBit (µBit)
* MoeCat
* Mononoké-BT
* MoreThanTV (MTV)
* Music-Master
* MyAnonamouse (MAM)
* myAmity
* MySpleen
* NCore
* NBTorrents
* NCore
* Nebulance (NBL) (TransmiTheNet)
* NetCosmo
* NetLab
* New Real World
* Norbits
* NordicBits (NB)
* NORDiCHD
* Nostalgic (The Archive)
* notwhat.cd
* OnlineSelfEducation
* Orpheus
* Ourbits (HDPter)
* P2PBG
* Passione Torrent <!-- maintained by bonny1992 -->
* P2PElite
* Partis
* PassThePopcorn (PTP)
* Peers.FM
* PiratBit
* PirateTheNet (PTN)
* PixelCove (Ultimate Gamer)
* PiXELHD (PxHD)
* Pleasuredome
* PolishSource (PS)
* PolishTracker
* Pornbay
* PornBits (PB)
* Pretome
* PrivateHD (PHD)
* ProAudioTorrents (PAT)
@@ -333,52 +389,54 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* Red Star Torrent (RST)
* RetroFlix
* RevolutionTT
* RGU
* RocketHD
* RoDVD (Cinefiles)
* Romanian Metal Torrent (RMT)
* RPTorrents
* SceneFZ
* SceneHD
* ScenePalace (SP)
* SceneReactor
* SceneRush
* SceneTime
* SceneXpress
* SDBits
* Secret Cinema
* SeedFile (SF)
* Shareisland
* ShareSpaceDB
* ShareUniversity
* Shazbat
* Shellife (SL)
* SiamBIT
* SnowPT (SSPT)
* SpaceTorrent
* SpeedCD
* SpeedTorrent Reloaded
* SportHD
* SportsCult
* SpringSunday
* SuperBits (SBS)
* TakeaByte
* Tapochek
* Tasmanit
* Tazmania-Den
* TeamHD
* TeamOS
* TEKNO3D
* TellyTorrent
* TenYardTorrents (TYT)
* TheAudioScene
* TheEmpire (TE)
* The Falling Angels (TFA)
* The Geeks
* The Horror Charnel (THC)
* The Movie Cave
* The New Retro
* The Occult
* The Place
* The Resurrection
* The Shinning (TsH)
* The Show
* The-Torrents
* The-Madhouse
* The Vault
* Tigers-dl
* TLFBits
* Torrent Network (TN)
* Torrent Sector Crew (TSC)
* Torrent.LT
@@ -387,15 +445,16 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* TorrentCCF (TCCF)
* TorrentDay (TD)
* Torrentech (TTH)
* TorrentFactory
* TorrentHeaven
* TorrentHR
* Torrenting (TT)
* Torrentland
* TorrentLeech (TL)
* TorrentLeech.pl
* TorrentSeeds (TS)
* Torrent-Syndikat
* TOrrent-tuRK (TORK)
* TorViet (HDVNBits)
* TotallyKids (TK)
* ToTheGlory
* TranceTraffic
@@ -405,28 +464,29 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* TV-Vault
* TVstore
* Twilight Torrents
* Twilights Zoom
* u-torrents (SceneFZ)
* UHDBits
* UnionGang
* UnlimitZ
* Vizuk
* Waffles
* WDT (Wrestling Desires Torrents / Ultimate Wrestling Torrents)
* World-In-HD
* World-of-Tomorrow
* WorldOfP2P (WOP)
* x-ite.me (XM)
* xBytesV2
* XSpeeds (XS)
* XKTorrent
* XWTorrents (XWT)
* XWT-Classics
* Xthor
* XtremeFile
* XtreMeZone (MYXZ)
* ExoticaZ (YourExotic)
* Zamunda.net
* Zelka.org
</details>
Trackers marked with [![(invite needed)][inviteneeded]](#) have no active maintainer and are missing features or are broken. If you have an invite for them please send it to kaso1717 -at- gmail.com to get them fixed/improved.
Trackers marked with [![(invite needed)][inviteneeded]](#) have no active maintainer and are missing features or are broken. If you have an invite for them please send it to garfieldsixtynine -at- gmail.com to get them fixed/improved.
### Aggregate indexers
@@ -436,12 +496,12 @@ 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.
Using the all indexer has no advantages (besides reduced management overhead), only disadvantages:
* you lose control over indexer specific settings (categories, search modes, etc.)
* mixing search modes (IMDB, query, etc.) might cause low quality results
* mixing search modes (IMDB, query, etc.) might cause low-quality results
* indexer specific categories (>= 100000) can't be used.
* slow indexers will slow down the overall result
* total results are limited to 1000
To get all Jackett indexers including their capabilities you can use `t=indexers` on the all indexer. To get only configured/unconfigured indexers you can also add `configured=true/false` as query parameter.
To get all Jackett indexers including their capabilities you can use `t=indexers` on the all indexer. To get only configured/unconfigured indexers you can also add `configured=true/false` as a query parameter.
## Installation on Windows
@@ -453,7 +513,7 @@ To get started with using the installer for Jackett, follow the steps below:
2. When prompted if you would like this app to make changes to your computer, select "yes".
3. If you would like to install Jackett as a Windows Service, make sure the "Install as Windows Service" checkbox is filled.
4. Once the installation has finished, check the "Launch Jackett" box to get started.
5. Navigate your web browser to: http://127.0.0.1:9117
5. Navigate your web browser to http://127.0.0.1:9117
6. You're now ready to begin adding your trackers and using Jackett.
When installed as a service the tray icon acts as a way to open/start/stop Jackett. If you opted to not install it as a service then Jackett will run its web server from the tray tool.
@@ -462,31 +522,31 @@ Jackett can also be run from the command line if you would like to see log messa
## Install on Linux (AMDx64)
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
On most operating systems all the required dependencies will already be present. In case they are not, you can refer to this page https://github.com/dotnet/core/blob/master/Documentation/linux-prereqs.md
### Install as 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`.
2. To install Jackett as a service, open a Terminal, cd to the jackett folder 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`
Download and extract the latest `Jackett.Binaries.LinuxAMDx64.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases), open a Terminal, cd to the jackett folder and run Jackett with the command `./jackett`
### home directory
If you want to run it with a user without a /home directory you need to add `Environment=XDG_CONFIG_HOME=/path/to/folder` to your systemd file, this folder will be used to store your config files.
If you want to run it with a user without a /home directory you need to add `Environment=XDG_CONFIG_HOME=/path/to/folder` to your systemd file, this folder will be used to store your config files.
## Install on Linux (ARMv7 or above)
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
On most operating systems all the required dependencies will already be present. In case they are not, you can refer to this page https://github.com/dotnet/core/blob/master/Documentation/linux-prereqs.md
### Install as 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`.
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 a Terminal, cd to the jackett folder 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`
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), open a Terminal, cd to the jackett folder and run Jackett with the command `./jackett`
### home directory
If you want to run it with a user without a /home directory you need to add `Environment=XDG_CONFIG_HOME=/path/to/folder` to your systemd file, this folder will be used to store your config files.
If you want to run it with a user without a /home directory you need to add `Environment=XDG_CONFIG_HOME=/path/to/folder` to your systemd file, this folder will be used to store your config files.
## Installation on Linux (ARMv6 or below)
@@ -494,13 +554,13 @@ If you want to run it with a user without a /home directory you need to add `Env
* Follow the instructions on the mono website and install the `mono-devel` and the `ca-certificates-mono` packages.
* On Red Hat/CentOS/openSUSE/Fedora the `mono-locale-extras` package is also required.
2. Install libcurl:
* Debian/Ubunutu: `apt-get install libcurl4-openssl-dev`
* Debian/Ubuntu: `apt-get install libcurl4-openssl-dev`
* Redhat/Fedora: `yum install libcurl-devel`
* For other distros see the [Curl docs](http://curl.haxx.se/dlwiz/?type=devel).
3. Download and extract the latest `Jackett.Binaries.Mono.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases) and run Jackett using mono with the command `mono --debug JackettConsole.exe`.
4. (Optional) To install Jackett as a service, open the Terminal and run `sudo ./install_service_systemd_mono.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`.
If you want to run it with a user without a /home directory you need to add `Environment=XDG_CONFIG_HOME=/path/to/folder` to your systemd file, this folder will be used to store your config files.
If you want to run it with a user without a /home directory you need to add `Environment=XDG_CONFIG_HOME=/path/to/folder` to your systemd file, this folder will be used to store your config files.
Mono must be compiled with the Roslyn compiler (default), using MCS will cause "An error has occurred." errors (See https://github.com/Jackett/Jackett/issues/2704).
@@ -515,7 +575,7 @@ On an Ubuntu 16 system: [chrisjohnson00.jackett](https://galaxy.ansible.com/chri
## Installation on macOS
### Prerequisites
macOS 10.12 or greater
macOS 10.13 or greater
### Install as service
1. Download and extract the latest `Jackett.Binaries.macOS.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases).
@@ -528,16 +588,13 @@ Logs are stored as usual under `~/.config/Jackett/log.txt`.
### Run without installing as a service
Download and extract the latest `Jackett.Binaries.macOS.tar.gz` release from the [releases page](https://github.com/Jackett/Jackett/releases) and run Jackett with the command `./jackett`.
### upgrading from mono
If you were previously using the Mono flavour of Jackett then you should shutdown the service from a terminal with with the command `systemctl stop jackett.service` and then remove the startup script at `/etc/systemd/system/jackett.service` and delete the content of the `/Applications/Jackett` folder, prior to performing this install.
## Installation using Docker
Detailed instructions are available at [LinuxServer.io Jackett Docker](https://hub.docker.com/r/linuxserver/jackett/). The Jackett Docker is highly recommended, especially if you are having Mono stability issues or having issues running Mono on your system eg. QNAP, Synology. Thanks to [LinuxServer.io](https://linuxserver.io)
Detailed instructions are available at [LinuxServer.io Jackett Docker](https://hub.docker.com/r/linuxserver/jackett/). The Jackett Docker is highly recommended, especially if you are having Mono stability issues or having issues running Mono on your system e.g. QNAP, Synology. Thanks to [LinuxServer.io](https://linuxserver.io)
## Installation on Synology
Jackett is available as beta package from [SynoCommunity](https://synocommunity.com/)
Jackett is available as a beta package from [SynoCommunity](https://synocommunity.com/)
## Running Jackett behind a reverse proxy
@@ -553,7 +610,7 @@ Example config for apache:
</Location>
```
Example config for nginx:
Example config for Nginx:
```
location /jackett {
proxy_pass http://127.0.0.1:9117;
@@ -565,91 +622,105 @@ location /jackett {
}
```
## Troubleshooting
* __Command line switches__
You can pass various options when running via the command line, see --help for details.
* __Error "An error occurred while sending the request: Error: TrustFailure (A call to SSPI failed, see inner exception.)"__
This is often caused by missing CA certificates.
Try reimporting the certificates in this case:
- On Linux (as user root): `wget -O - https://curl.haxx.se/ca/cacert.pem | cert-sync /dev/stdin`
- On macOS: `curl -sS https://curl.haxx.se/ca/cacert.pem | cert-sync --user /dev/stdin`
* __Enable enhanced logging__
You can get *enhanced* logging with the command line switches `-t -l` or by enabling `Enhanced logging` via the web interface (followed by clicking on the `Apply Server Settings` button).
Please post logs if you are unable to resolve your issue with these switches ensuring to remove your username/password/cookies.
The logfiles (log.txt/updater.txt) are stored in `%ProgramData%\Jackett` on Windows and `~/.config/Jackett/` on Linux/macOS.
## Configuring OMDb
This feature is used as a fallback (when using the aggregate Indexer) to get the movie/series title if only the IMDB ID is provided in the request.
To use it, please just request a free API key on [OMDb](http://www.omdbapi.com/apikey.aspx) (1,000 daily requests limit) and paste the key in Jackett
## Creating an issue
Please supply as much information about the problem you are experiencing as possible. Your issue has a much greater chance of being resolved if logs are supplied so that we can see what is going on. Creating an issue with '### isn't working' doesn't help anyone to fix the problem.
## Command line switches
## Contributing
You can pass various options when running via the command line:
Jackett's framework typically allows our team and volunteering developers to implement new trackers in a couple of hours
<details> <summary> Command Line Switches </summary>
Depending on logic complexity, there are two common ways new trackers are implemented:
- `-i, --Install` Install Jackett windows service (Must be admin)
- `-s, --Start` Start the Jacket Windows service (Must be admin)
- `-k, --Stop` Stop the Jacket Windows service (Must be admin)
- `-u, --Uninstall` Uninstall Jackett windows service (Must be admin).
1. simple [definitions](http://github.com/Jackett/Jackett/tree/master/src/Jackett.Common/Definitions) (.yml / YAML), and;
2. advanced (native) [indexers](http://github.com/Jackett/Jackett/tree/master/src/Jackett.Common/Indexers) (.cs / C#)
- `-r, --ReserveUrls` (Re)Register windows port reservations (Required for
listening on all interfaces).
Read more about the [simple definition format](https://github.com/Jackett/Jackett/wiki/Definition-format).
- `-l, --Logging` Log all requests/responses to Jackett
If you are a developer then it's recommended to download the free community version of [Visual Studio](http://visualstudio.com)
- `-t, --Tracing` Enable tracing
If you are not a developer and would like a (new) tracker supported then feel free to leave an [issue](https://github.com/Jackett/Jackett/issues) request.
- `-c, --UseClient` Override web client selection.
[automatic(Default)/httpclient/httpclient2]
All contributions are welcome just send a pull request.
- `-j, --ProxyConnection` use proxy - e.g. 127.0.0.1:8888
- `-x, --ListenPublic` Listen publicly
- `-z, --ListenPrivate` Only allow local access
- `-p, --Port` Web server port
- `-m, --MigrateSettings` Migrate settings manually (Must be an admin on Windows)
- `-n, --IgnoreSslErrors` [true/false] Ignores invalid SSL certificates
- `-d, --DataFolder` Specify the location of the data folder (Must be an admin on Windows)
- e.g. --DataFolder="D:\Your Data\Jackett\".
- Don't use this on Unix (mono) systems. On Unix just adjust the HOME directory of the user to the datadir or set the XDG_CONFIG_HOME environment variable.
- `--NoRestart` Don't restart after update
- `--PIDFile` Specify the location of PID file
- `--NoUpdates` Disable automatic updates
- `--help` Display this help screen.
- `--version` Display version information.
</details>
## Building from source
### Windows
* Install the .NET Core [SDK](https://www.microsoft.com/net/download/windows)
* Clone Jackett
* 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
* In the drop down menu of the run button select "Jackett.Server" instead of "IIS Express"
* Open PowerShell and from the `src` directory, run `dotnet restore`
* Open the Jackett solution in Visual Studio 2019 (version 16.4 or above)
* Right-click on the Jackett solution and click 'Rebuild Solution' to restore NuGet packages
* Select Jackett.Server as the startup project
* In the drop-down menu of the run button select "Jackett.Server" instead of "IIS Express"
* Build/Start the project
### OSX
```bash
# manually install osx dotnet via:
# manually install osx dotnet via:
https://dotnet.microsoft.com/download?initial-os=macos
# then:
# then:
git clone https://github.com/Jackett/Jackett.git
cd Jackett/src
# dotnet core version
dotnet publish Jackett.Server -f netcoreapp2.2 --self-contained -r osx-x64 -c Debug # takes care of everything
./Jackett.Server/bin/Debug/netcoreapp2.2/osx-x64/jackett # run jackett
dotnet publish Jackett.Server -f netcoreapp3.1 --self-contained -r osx-x64 -c Debug # takes care of everything
./Jackett.Server/bin/Debug/netcoreapp3.1/osx-x64/jackett # run jackett
```
### Linux
```bash
sudo apt install mono-complete nuget msbuild dotnet-sdk-2.2 # install build tools (debian/ubuntu)
sudo apt install mono-complete nuget msbuild dotnet-sdk-3.1 # install build tools (Debian/ubuntu)
git clone https://github.com/Jackett/Jackett.git
cd Jackett/src
# dotnet core version
dotnet publish Jackett.Server -f netcoreapp2.2 --self-contained -r linux-x64 -c Debug # takes care of everything
./Jackett.Server/bin/Debug/netcoreapp2.2/linux-x64/jackett # run jackett
dotnet publish Jackett.Server -f netcoreapp3.1 --self-contained -r linux-x64 -c Debug # takes care of everything
./Jackett.Server/bin/Debug/netcoreapp3.1/linux-x64/jackett # run jackett
```
## Screenshots
![screenshot](https://i.imgur.com/0d1nl7g.png "screenshot")
![screenshot](https://raw.githubusercontent.com/Jackett/Jackett/master/.github/jackett-screenshot1.png)
![screenshot](https://raw.githubusercontent.com/Jackett/Jackett/master/.github/jackett-screenshot2.png)
![screenshot](https://raw.githubusercontent.com/Jackett/Jackett/master/.github/jackett-screenshot3.png)
[inviteneeded]: https://raw.githubusercontent.com/Jackett/Jackett/master/.github/label-inviteneeded.png

View File

@@ -1,50 +0,0 @@
version: 0.11.{build}
skip_tags: true
image:
- Ubuntu
- Visual Studio 2017
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.*'
assembly_version: '{version}'
assembly_file_version: '{version}'
assembly_informational_version: '{version}'
dotnet_csproj:
patch: true
file: '**\*.csproj'
version: '{version}'
package_version: '{version}'
assembly_version: '{version}'
file_version: '{version}'
informational_version: '{version}'
build_script:
- ps: .\build.ps1 --target=Windows-Appveyor
- sh: ./build.sh --target=Linux
test: off
before_deploy:
- ps: ${env:release_description} = ( Get-Content -LiteralPath BuildOutput/ReleaseNotes.txt -Encoding UTF8 ) -join "`n";
deploy:
- provider: GitHub
tag: v$(APPVEYOR_BUILD_VERSION)
description: $(release_description)
auth_token:
secure: hOg+16YTIbq4kO9u4D1YVOTbWDqgCX6mAQYMbnmBBSw2CiUsZh7OKbupoUb3FtWa
artifact: /^(?:(?![Ee]xperimental).)*$/
draft: true
force_update: true
on:
branch: master
notifications:
- provider: Webhook
url: https://skyhook.glitch.me/api/webhooks/346588605843767297/_VWi5abKliaWsBmQO7AX69tD28FhqSLjKyLBwkSwwT13uyWJQHx5TSWK_iAs-0RzmyvZ/appveyor
method: POST
on_build_success: true
on_build_failure: true
on_build_status_changed: true

369
azure-pipelines.yml Normal file
View File

@@ -0,0 +1,369 @@
name: $(majorVersion).$(minorVersion).$(patchVersion)
variables:
majorVersion: 0
minorVersion: 13
patchVersion: $[counter(variables['minorVersion'], 1)] #this will reset when we bump minor
jackettVersion: $(majorVersion).$(minorVersion).$(patchVersion)
buildConfiguration: Release
netCoreFramework: netcoreapp3.1
netCoreSdkVersion: 3.1.x
stages:
- stage: BuildJackett
displayName: Create Binaries
jobs:
- job: Build
workspace:
clean: all
strategy:
matrix:
Mono:
buildDescription: Mono
imageName: ubuntu-latest
framework: net461
runtime: linux-x64
archiveType: tar
artifactName: Jackett.Binaries.Mono.tar.gz
Windows:
buildDescription: Windows
imageName: windows-latest
framework: $(netCoreFramework)
runtime: win-x86
archiveType: zip
artifactName: Jackett.Binaries.Windows.zip
macOS:
buildDescription: macOS
imageName: macOS-latest
framework: $(netCoreFramework)
runtime: osx-x64
archiveType: tar
artifactName: Jackett.Binaries.macOS.tar.gz
LinuxAmdx64:
buildDescription: Linux AMD x64
imageName: ubuntu-latest
framework: $(netCoreFramework)
runtime: linux-x64
archiveType: tar
artifactName: Jackett.Binaries.LinuxAMDx64.tar.gz
LinuxARM32:
buildDescription: Linux ARM32
imageName: ubuntu-latest
framework: $(netCoreFramework)
runtime: linux-arm
archiveType: tar
artifactName: Jackett.Binaries.LinuxARM32.tar.gz
LinuxARM64:
buildDescription: Linux ARM64
imageName: ubuntu-latest
framework: $(netCoreFramework)
runtime: linux-arm64
archiveType: tar
artifactName: Jackett.Binaries.LinuxARM64.tar.gz
pool:
vmImage: $(imageName)
displayName: ${{ variables.buildDescription }}
steps:
- checkout: self
- task: UseDotNet@2
displayName: Install .NET Core SDK
inputs:
packageType: sdk
version: $(netCoreSdkVersion)
installationPath: $(Agent.ToolsDirectory)/dotnet
- task: DotNetCoreCLI@2
displayName: Build Jackett Server
inputs:
command: publish
projects: 'src/Jackett.Server/Jackett.Server.csproj'
publishWebProjects: false
zipAfterPublish: false
arguments: '--configuration $(buildConfiguration) --runtime $(runtime) --framework $(framework) --output $(Build.BinariesDirectory) /p:AssemblyVersion=$(jackettVersion) /p:FileVersion=$(jackettVersion) /p:InformationalVersion=$(jackettVersion) /p:Version=$(jackettVersion)'
- task: DotNetCoreCLI@2
displayName: Build Jackett Updater
inputs:
command: publish
projects: 'src/Jackett.Updater/Jackett.Updater.csproj'
publishWebProjects: false
zipAfterPublish: false
arguments: '--configuration $(buildConfiguration) --runtime $(runtime) --framework $(framework) --output $(Build.BinariesDirectory) /p:AssemblyVersion=$(jackettVersion) /p:FileVersion=$(jackettVersion) /p:InformationalVersion=$(jackettVersion) /p:Version=$(jackettVersion)'
- task: DotNetCoreCLI@2
displayName: Build Jackett Tray (Windows only)
condition: and(succeeded(), startsWith(variables['runtime'], 'win'))
inputs:
command: publish
projects: 'src/Jackett.Tray/Jackett.Tray.csproj'
publishWebProjects: false
zipAfterPublish: false
arguments: '--configuration $(buildConfiguration) --runtime $(runtime) --framework $(framework) --output $(Build.BinariesDirectory) /p:AssemblyVersion=$(jackettVersion) /p:FileVersion=$(jackettVersion) /p:InformationalVersion=$(jackettVersion) /p:Version=$(jackettVersion)'
- task: DotNetCoreCLI@2
displayName: Build Jackett Service (Windows only)
condition: and(succeeded(), startsWith(variables['runtime'], 'win'))
inputs:
command: publish
projects: 'src/Jackett.Service/Jackett.Service.csproj'
publishWebProjects: false
zipAfterPublish: false
arguments: '--configuration $(buildConfiguration) --runtime $(runtime) --framework $(framework) --output $(Build.BinariesDirectory) /p:AssemblyVersion=$(jackettVersion) /p:FileVersion=$(jackettVersion) /p:InformationalVersion=$(jackettVersion) /p:Version=$(jackettVersion)'
- task: CopyFiles@2
displayName: Copy Jackett Server
inputs:
SourceFolder: $(Build.BinariesDirectory)/Jackett.Server
contents: '**'
targetFolder: $(Build.BinariesDirectory)/Jackett
- task: CopyFiles@2
displayName: Copy Jackett Updater
inputs:
SourceFolder: $(Build.BinariesDirectory)/Jackett.Updater
contents: JackettUpdater*
targetFolder: $(Build.BinariesDirectory)/Jackett
- task: CopyFiles@2
displayName: Copy Jackett Tray (Windows only)
condition: and(succeeded(), startsWith(variables['runtime'], 'win'))
inputs:
SourceFolder: $(Build.BinariesDirectory)/Jackett.Tray
contents: |
System.Drawing.dll
System.Security.Cryptography.ProtectedData.dll
WindowsBase.dll
targetFolder: $(Build.BinariesDirectory)/Jackett
overWrite: true
- task: CopyFiles@2
displayName: Copy Jackett Tray Part 2 (Windows only)
condition: and(succeeded(), startsWith(variables['runtime'], 'win'))
inputs:
SourceFolder: $(Build.BinariesDirectory)/Jackett.Tray
contents: '*'
targetFolder: $(Build.BinariesDirectory)/Jackett
overWrite: false
- task: CopyFiles@2
displayName: Copy Jackett Service (Windows only)
condition: and(succeeded(), startsWith(variables['runtime'], 'win'))
inputs:
SourceFolder: $(Build.BinariesDirectory)/Jackett.Service
contents: JackettService*
targetFolder: $(Build.BinariesDirectory)/Jackett
- task: CopyFiles@2
displayName: Copy Mono Specific Scripts
condition: and(succeeded(), startsWith(variables['buildDescription'], 'Mono'))
inputs:
SourceFolder: $(Build.SourcesDirectory)
contents: |
install_service_systemd_mono.sh
Upstart.config
targetFolder: $(Build.BinariesDirectory)/Jackett
- task: CopyFiles@2
displayName: Copy macOS Specific Scripts
condition: and(succeeded(), startsWith(variables['buildDescription'], 'macOS'))
inputs:
SourceFolder: $(Build.SourcesDirectory)
contents: install_service_macos
targetFolder: $(Build.BinariesDirectory)/Jackett
- task: CopyFiles@2
displayName: Copy Linux Specific Scripts
condition: and(succeeded(), startsWith(variables['buildDescription'], 'Linux'))
inputs:
SourceFolder: $(Build.SourcesDirectory)
contents: |
install_service_systemd.sh
jackett_launcher.sh
targetFolder: $(Build.BinariesDirectory)/Jackett
#There is an issue with Mono 5.8 (fixed in Mono 5.12) where its expecting to use its own patched version of System.Net.Http.dll, instead of the version supplied in folder
#https://github.com/dotnet/corefx/issues/19914
#https://bugzilla.xamarin.com/show_bug.cgi?id=60315
#The workaround is to delete System.Net.Http.dll and patch the .exe.config file
#Mono on FreeBSD doesn't like the bundled System.Runtime.InteropServices.RuntimeInformation -> Delete it
#https://github.com/dotnet/corefx/issues/23989
#https://github.com/Jackett/Jackett/issues/3547
- task: PowerShell@2
displayName: Patch Mono Build (Mono only)
condition: and(succeeded(), startsWith(variables['buildDescription'], 'Mono'))
inputs:
workingDirectory: $(Build.BinariesDirectory)/Jackett
targetType: inline
script: |
$file = '$(Build.BinariesDirectory)/Jackett/JackettConsole.exe.config'
$xml = [xml] (Get-Content $file)
$newVersion = $xml.SelectSingleNode("configuration/runtime/*[name()='assemblyBinding']/*[name()='dependentAssembly']/*[name()='assemblyIdentity'][@name='System.Net.Http']/../*[name()='bindingRedirect']/@newVersion")
$newVersion.Value = '4.0.0.0'
$xml.Save($file)
Remove-Item '$(Build.BinariesDirectory)/Jackett/System.Net.Http.dll'
Remove-Item '$(Build.BinariesDirectory)/Jackett/System.Runtime.InteropServices.RuntimeInformation.dll'
- task: Bash@3
displayName: Set Folder and File Permissions (Mono, Linux and macOS)
condition: and(succeeded(), not(startsWith(variables['runtime'], 'win')))
inputs:
workingDirectory: $(Build.BinariesDirectory)/Jackett
targetType: inline
script: |
chmod 755 $(find "$(Build.BinariesDirectory)"/Jackett -type d)
chmod 644 $(find "$(Build.BinariesDirectory)"/Jackett -type f)
chmod 755 jackett
chmod 755 JackettUpdater
if [ -f install_service_systemd_mono.sh ]; then chmod 755 install_service_systemd_mono.sh; fi
if [ -f install_service_macos ]; then chmod 755 install_service_macos; fi
if [ -f install_service_systemd.sh ]; then chmod 755 install_service_systemd.sh; fi
if [ -f jackett_launcher.sh ]; then chmod 755 jackett_launcher.sh; fi
- task: ArchiveFiles@2
displayName: Compress Binaries
inputs:
rootFolderOrFile: $(Build.BinariesDirectory)/Jackett
includeRootFolder: true
archiveType: '$(archiveType)'
tarCompression: gz
archiveFile: '$(Build.ArtifactStagingDirectory)/$(artifactName)'
- task: CmdLine@2
displayName: Create Jackett Installer (Windows only)
condition: and(succeeded(), startsWith(variables['runtime'], 'win'))
inputs:
script: >
iscc.exe $(Build.SourcesDirectory)/Installer.iss
/O"$(Build.ArtifactStagingDirectory)"
/DMyFileForVersion=$(Build.BinariesDirectory)/Jackett/Jackett.Common.dll
/DMySourceFolder=$(Build.BinariesDirectory)/Jackett
/DMyOutputFilename=Jackett.Installer.Windows
- task: PublishBuildArtifacts@1
inputs:
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
- task: DotNetCoreCLI@2
displayName: Unit Tests (Windows only)
condition: and(succeeded(), startsWith(variables['runtime'], 'win'))
inputs:
command: test
projects: '**/*.Test*/*.csproj'
arguments: '--configuration $(buildConfiguration) --framework $(framework)'
- task: DotNetCoreCLI@2
displayName: Unit Tests (Mono, Linux and macOS)
condition: and(succeeded(), not(startsWith(variables['runtime'], 'win')))
inputs:
command: test
projects: '**/*.Test*/*.csproj'
arguments: '--configuration $(buildConfiguration) --framework $(framework) --runtime $(runtime)'
- stage: Integration
displayName: Integration Tests
dependsOn: BuildJackett
jobs:
- job: Selenium
workspace:
clean: all
strategy:
matrix:
Mono:
buildDescription: Mono
imageName: ubuntu-latest
artifactName: Jackett.Binaries.Mono.tar.gz
Windows:
buildDescription: Windows
imageName: windows-latest
artifactName: Jackett.Binaries.Windows.zip
# Enable once ChromeDriver is deployed to macOS image https://github.com/actions/virtual-environments/issues/7
# macOS:
# buildDescription: macOS
# imageName: macOS-latest
# artifactName: Jackett.Binaries.macOS.tar.gz
LinuxAmdx64:
buildDescription: Linux AMD x64
imageName: ubuntu-latest
artifactName: Jackett.Binaries.LinuxAMDx64.tar.gz
pool:
vmImage: $(imageName)
displayName: ${{ variables.buildDescription }}
steps:
- checkout: self
- task: DownloadPipelineArtifact@2
displayName: Download artifacts for integration tests
inputs:
patterns: '**/Jackett*'
path: $(Build.ArtifactStagingDirectory)
- task: PowerShell@2
displayName: Install Jackett (Windows only)
condition: and(succeeded(), eq(variables['buildDescription'], 'Windows'))
inputs:
workingDirectory: $(Build.ArtifactStagingDirectory)/drop
targetType: inline
script: |
Start-Process ./Jackett.Installer.Windows.exe /silent -NoNewWindow -Wait
- task: Bash@3
displayName: Install Jackett (Mono, Linux and macOS)
condition: and(succeeded(), ne(variables['buildDescription'], 'Windows'))
inputs:
workingDirectory: $(Build.ArtifactStagingDirectory)/drop
targetType: inline
script: |
tar xzf "$(artifactName)"
cd Jackett
if [[ "$(artifactName)" == *"Mono"* ]]; then mono --version; fi
if [[ "$(artifactName)" == *"Mono"* ]]; then sudo ./install_service_systemd_mono.sh; fi
if [[ "$(artifactName)" == *"macOS"* ]]; then sudo ./install_service_macos; fi
if [[ "$(artifactName)" == *"LinuxAMDx64"* ]]; then sudo ./install_service_systemd.sh; fi
- task: UseDotNet@2
displayName: Install .NET Core SDK
inputs:
packageType: sdk
version: $(netCoreSdkVersion)
installationPath: $(Agent.ToolsDirectory)/dotnet
- task: DotNetCoreCLI@2
displayName: Run Integration Tests
inputs:
command: test
projects: '**/*IntegrationTest*/*.csproj'
- stage: PublishGithub
displayName: Publish to Github
dependsOn: Integration
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
jobs:
- job: Publish
workspace:
clean: all
steps:
- checkout: self
- task: DownloadPipelineArtifact@2
displayName: Download Artifacts for Publish
inputs:
patterns: '**/Jackett*'
path: $(Build.ArtifactStagingDirectory)
- task: GitHubRelease@0
displayName: Create Github release
inputs:
gitHubConnection: github.com_jackett
repositoryName: '$(Build.Repository.Name)'
action: create
target: $(Build.SourceVersion)
tagSource: manual
tag: v$(Build.BuildNumber)
title: v$(Build.BuildNumber)
assets: $(Build.ArtifactStagingDirectory)/drop/*
assetUploadMode: replace
isDraft: true
addChangeLog: true
compareWith: lastNonDraftRelease

View File

@@ -1,465 +0,0 @@
#tool nuget:?package=NUnit.ConsoleRunner
#addin nuget:?package=Cake.Git
//////////////////////////////////////////////////////////////////////
// ARGUMENTS
//////////////////////////////////////////////////////////////////////
var target = Argument("target", "Default");
var configuration = Argument("configuration", "Debug");
//////////////////////////////////////////////////////////////////////
// PREPARATION
//////////////////////////////////////////////////////////////////////
// Define directories.
var workingDir = MakeAbsolute(Directory("./"));
string artifactsDirName = "Artifacts";
string testResultsDirName = "TestResults";
string netCoreFramework = "netcoreapp2.2";
string serverProjectPath = "./src/Jackett.Server/Jackett.Server.csproj";
string updaterProjectPath = "./src/Jackett.Updater/Jackett.Updater.csproj";
//////////////////////////////////////////////////////////////////////
// TASKS
//////////////////////////////////////////////////////////////////////
Task("Info")
.Does(() =>
{
Information(@"Jackett Cake build script starting...");
Information(@"Requires InnoSetup and C:\cygwin to be present for packaging (Pre-installed on AppVeyor) on Windows");
Information(@"Working directory is: " + workingDir);
if (IsRunningOnWindows())
{
Information("Platform is Windows");
}
else
{
Information("Platform is Linux, Windows builds will be skipped");
}
});
Task("Clean")
.IsDependentOn("Info")
.Does(() =>
{
CleanDirectories("./src/**/obj");
CleanDirectories("./src/**/bin");
CleanDirectories("./BuildOutput");
CleanDirectories("./" + artifactsDirName);
CleanDirectories("./" + testResultsDirName);
CreateDirectory("./" + artifactsDirName);
Information("Clean completed");
});
Task("Build-Full-Framework")
.IsDependentOn("Clean")
.Does(() =>
{
NuGetRestore("./src/Jackett.sln");
var buildSettings = new MSBuildSettings()
.SetConfiguration(configuration)
.UseToolVersion(MSBuildToolVersion.VS2017);
MSBuild("./src/Jackett.sln", buildSettings);
});
Task("Run-Unit-Tests")
.IsDependentOn("Build-Full-Framework")
.Does(() =>
{
CreateDirectory("./" + testResultsDirName);
var resultsFile = $"./{testResultsDirName}/JackettTestResult.xml";
NUnit3("./src/**/bin/" + configuration + "/**/*.Test.dll", new NUnit3Settings
{
Results = new[] { new NUnit3Result { FileName = resultsFile } }
});
if (AppVeyor.IsRunningOnAppVeyor && IsRunningOnWindows())
{
AppVeyor.UploadTestResults(resultsFile, AppVeyorTestResultsType.NUnit3);
}
});
Task("Package-Windows-Full-Framework")
.IsDependentOn("Run-Unit-Tests")
.Does(() =>
{
string buildOutputPath = "./BuildOutput/net461/win7-x86/Jackett";
DotNetCorePublish(serverProjectPath, "net461", "win7-x86", buildOutputPath);
CopyFiles("./src/Jackett.Service/bin/" + configuration + "/JackettService.*", buildOutputPath);
CopyFiles("./src/Jackett.Tray/bin/" + configuration + "/JackettTray.*", buildOutputPath);
CopyFiles("./src/Jackett.Updater/bin/" + configuration + "/net461" + "/JackettUpdater.*", buildOutputPath); //builds against multiple frameworks
Zip("./BuildOutput/net461/win7-x86", $"./{artifactsDirName}/Jackett.Binaries.Windows.zip");
//InnoSetup
string sourceFolder = MakeAbsolute(Directory(buildOutputPath)).ToString();
InnoSetupSettings settings = new InnoSetupSettings();
settings.OutputDirectory = workingDir + "/" + artifactsDirName;
settings.Defines = new Dictionary<string, string>
{
{ "MyFileForVersion", sourceFolder + "/Jackett.Common.dll" },
{ "MySourceFolder", sourceFolder },
{ "MyOutputFilename", "Jackett.Installer.Windows" },
};
InnoSetup("./Installer.iss", settings);
});
Task("Package-Mono-Full-Framework")
.IsDependentOn("Run-Unit-Tests")
.Does(() =>
{
string buildOutputPath = "./BuildOutput/net461/linux-x64/Jackett";
DotNetCorePublish(serverProjectPath, "net461", "linux-x64", buildOutputPath);
CopyFiles("./src/Jackett.Updater/bin/" + configuration + "/net461" + "/JackettUpdater.*", buildOutputPath); //builds against multiple frameworks
CopyFileToDirectory("./install_service_systemd_mono.sh", buildOutputPath);
CopyFileToDirectory("./Upstart.config", buildOutputPath);
//There is an issue with Mono 5.8 (fixed in Mono 5.12) where its expecting to use its own patched version of System.Net.Http.dll, instead of the version supplied in folder
//https://github.com/dotnet/corefx/issues/19914
//https://bugzilla.xamarin.com/show_bug.cgi?id=60315
//The workaround is to delete System.Net.Http.dll and patch the .exe.config file
DeleteFile(buildOutputPath + "/System.Net.Http.dll");
var configFile = File(buildOutputPath + "/JackettConsole.exe.config");
XmlPoke(configFile, "configuration/runtime/*[name()='assemblyBinding']/*[name()='dependentAssembly']/*[name()='assemblyIdentity'][@name='System.Net.Http']/../*[name()='bindingRedirect']/@newVersion", "4.0.0.0");
//Mono on FreeBSD doesn't like the bundled System.Runtime.InteropServices.RuntimeInformation
//https://github.com/dotnet/corefx/issues/23989
//https://github.com/Jackett/Jackett/issues/3547
DeleteFile(buildOutputPath + "/System.Runtime.InteropServices.RuntimeInformation.dll");
Gzip("./BuildOutput/net461/linux-x64", $"./{artifactsDirName}", "Jackett", "Jackett.Binaries.Mono.tar.gz");
});
Task("Package-DotNetCore-macOS")
.IsDependentOn("Clean")
.Does(() =>
{
string runtimeId = "osx-x64";
string buildOutputPath = $"./BuildOutput/{netCoreFramework}/{runtimeId}/Jackett";
string updaterOutputPath = buildOutputPath + "/Updater";
DotNetCorePublish(serverProjectPath, netCoreFramework, runtimeId, buildOutputPath);
DotNetCorePublish(updaterProjectPath, netCoreFramework, runtimeId, updaterOutputPath);
CopyFiles(updaterOutputPath + "/JackettUpdater*", buildOutputPath);
DeleteDirectory(updaterOutputPath, new DeleteDirectorySettings {Recursive = true, Force = true});
CopyFileToDirectory("./install_service_macos", buildOutputPath);
Gzip($"./BuildOutput/{netCoreFramework}/{runtimeId}", $"./{artifactsDirName}", "Jackett", "Jackett.Binaries.macOS.tar.gz");
});
Task("Package-DotNetCore-LinuxAMDx64")
.IsDependentOn("Clean")
.Does(() =>
{
string runtimeId = "linux-x64";
string buildOutputPath = $"./BuildOutput/{netCoreFramework}/{runtimeId}/Jackett";
string updaterOutputPath = buildOutputPath + "/Updater";
DotNetCorePublish(serverProjectPath, netCoreFramework, runtimeId, buildOutputPath);
DotNetCorePublish(updaterProjectPath, netCoreFramework, runtimeId, updaterOutputPath);
CopyFiles(updaterOutputPath + "/JackettUpdater*", buildOutputPath);
DeleteDirectory(updaterOutputPath, new DeleteDirectorySettings {Recursive = true, Force = true});
CopyFileToDirectory("./install_service_systemd.sh", buildOutputPath);
Gzip($"./BuildOutput/{netCoreFramework}/{runtimeId}", $"./{artifactsDirName}", "Jackett", "Jackett.Binaries.LinuxAMDx64.tar.gz");
});
Task("Package-DotNetCore-LinuxARM32")
.IsDependentOn("Clean")
.Does(() =>
{
string runtimeId = "linux-arm";
string buildOutputPath = $"./BuildOutput/{netCoreFramework}/{runtimeId}/Jackett";
string updaterOutputPath = buildOutputPath + "/Updater";
DotNetCorePublish(serverProjectPath, netCoreFramework, runtimeId, buildOutputPath);
DotNetCorePublish(updaterProjectPath, netCoreFramework, runtimeId, updaterOutputPath);
CopyFiles(updaterOutputPath + "/JackettUpdater*", buildOutputPath);
DeleteDirectory(updaterOutputPath, new DeleteDirectorySettings {Recursive = true, Force = true});
CopyFileToDirectory("./install_service_systemd.sh", buildOutputPath);
Gzip($"./BuildOutput/{netCoreFramework}/{runtimeId}", $"./{artifactsDirName}", "Jackett", "Jackett.Binaries.LinuxARM32.tar.gz");
});
Task("Package-DotNetCore-LinuxARM64")
.IsDependentOn("Clean")
.Does(() =>
{
string runtimeId = "linux-arm64";
string buildOutputPath = $"./BuildOutput/{netCoreFramework}/{runtimeId}/Jackett";
string updaterOutputPath = buildOutputPath + "/Updater";
DotNetCorePublish(serverProjectPath, netCoreFramework, runtimeId, buildOutputPath);
DotNetCorePublish(updaterProjectPath, netCoreFramework, runtimeId, updaterOutputPath);
CopyFiles(updaterOutputPath + "/JackettUpdater*", buildOutputPath);
DeleteDirectory(updaterOutputPath, new DeleteDirectorySettings {Recursive = true, Force = true});
CopyFileToDirectory("./install_service_systemd.sh", buildOutputPath);
Gzip($"./BuildOutput/{netCoreFramework}/{runtimeId}", $"./{artifactsDirName}", "Jackett", "Jackett.Binaries.LinuxARM64.tar.gz");
});
Task("Appveyor-Push-Artifacts")
.IsDependentOn("Clean")
.Does(() =>
{
if (AppVeyor.IsRunningOnAppVeyor)
{
foreach (var file in GetFiles(workingDir + $"/{artifactsDirName}/*"))
{
AppVeyor.UploadArtifact(file.FullPath);
}
}
else
{
Information(@"Skipping artifact push as not running in AppVeyor Windows Environment");
}
});
Task("Release-Notes")
.IsDependentOn("Clean")
.Does(() =>
{
string latestTag = GitDescribe(".", false, GitDescribeStrategy.Tags, 0);
Information($"Latest tag is: {latestTag}" + Environment.NewLine);
List<GitCommit> relevantCommits = new List<GitCommit>();
var commitCollection = GitLog("./", 50);
foreach(GitCommit commit in commitCollection)
{
var commitTag = GitDescribe(".", commit.Sha, false, GitDescribeStrategy.Tags, 0);
if (commitTag == latestTag)
{
relevantCommits.Add(commit);
}
else
{
break;
}
}
relevantCommits = relevantCommits.AsEnumerable().Reverse().Skip(1).ToList();
if (relevantCommits.Count() > 0)
{
List<string> notesList = new List<string>();
foreach(GitCommit commit in relevantCommits)
{
notesList.Add($"{commit.MessageShort} (Thank you @{commit.Author.Name})");
}
string buildNote = String.Join(Environment.NewLine, notesList);
Information(buildNote);
System.IO.File.WriteAllLines(workingDir + "/BuildOutput/ReleaseNotes.txt", notesList.ToArray());
}
else
{
Information($"No commit messages found to create release notes");
}
});
Task("Windows-Environment-Dev")
.IsDependentOn("Package-Windows-Full-Framework")
.IsDependentOn("Package-Mono-Full-Framework")
.IsDependentOn("Package-DotNetCore-macOS")
.IsDependentOn("Package-DotNetCore-LinuxAMDx64")
.IsDependentOn("Package-DotNetCore-LinuxARM32")
.IsDependentOn("Package-DotNetCore-LinuxARM64")
.IsDependentOn("Appveyor-Push-Artifacts")
.IsDependentOn("Release-Notes")
.Does(() =>
{
Information("Windows-Environment Task Completed");
});
Task("Windows-Environment-Appveyor")
.IsDependentOn("Package-Windows-Full-Framework")
.IsDependentOn("Package-Mono-Full-Framework")
.IsDependentOn("Appveyor-Push-Artifacts")
.IsDependentOn("Release-Notes")
.Does(() =>
{
Information("Windows-Environment Task Completed");
});
Task("Linux-Environment")
.IsDependentOn("Package-DotNetCore-macOS")
.IsDependentOn("Package-DotNetCore-LinuxAMDx64")
.IsDependentOn("Package-DotNetCore-LinuxARM32")
.IsDependentOn("Package-DotNetCore-LinuxARM64")
.IsDependentOn("Appveyor-Push-Artifacts")
.IsDependentOn("Release-Notes")
.Does(() =>
{
Information("Linux-Environment Task Completed");
});
private void RunCygwinCommand(string utility, string utilityArguments)
{
var cygwinDir = @"C:\cygwin\bin\";
var utilityProcess = cygwinDir + utility + ".exe";
Information("CygWin Utility: " + utility);
Information("CygWin Directory: " + cygwinDir);
Information("Utility Location: " + utilityProcess);
Information("Utility Arguments: " + utilityArguments);
IEnumerable<string> redirectedStandardOutput;
IEnumerable<string> redirectedErrorOutput;
var exitCodeWithArgument =
StartProcess(
utilityProcess,
new ProcessSettings {
Arguments = utilityArguments,
WorkingDirectory = cygwinDir,
RedirectStandardOutput = true
},
out redirectedStandardOutput,
out redirectedErrorOutput
);
Information(utility + " output:" + Environment.NewLine + string.Join(Environment.NewLine, redirectedStandardOutput.ToArray()));
// Throw exception if anything was written to the standard error.
if (redirectedErrorOutput != null && redirectedErrorOutput.Any())
{
throw new Exception(
string.Format(
utility + " Errors ocurred: {0}",
string.Join(", ", redirectedErrorOutput)));
}
Information(utility + " Exit code: {0}", exitCodeWithArgument);
}
private string RelativeWinPathToCygPath(string relativePath)
{
var cygdriveBase = "/cygdrive/" + workingDir.ToString().Replace(":", "").Replace("\\", "/");
var cygPath = cygdriveBase + relativePath.TrimStart('.');
return cygPath;
}
private void RunLinuxCommand(string file, string arg)
{
var startInfo = new System.Diagnostics.ProcessStartInfo()
{
Arguments = arg,
FileName = file,
UseShellExecute = true
};
var process = System.Diagnostics.Process.Start(startInfo);
process.WaitForExit();
}
private void Gzip(string sourceFolder, string outputDirectory, string tarCdirectoryOption, string outputFileName)
{
var tarFileName = outputFileName.Remove(outputFileName.Length - 3, 3);
if (IsRunningOnWindows())
{
var cygSourcePath = RelativeWinPathToCygPath(sourceFolder);
var tarArguments = @"-cvf " + cygSourcePath + "/" + tarFileName + " -C " + cygSourcePath + $" {tarCdirectoryOption} --mode ='755'";
var gzipArguments = @"-k " + cygSourcePath + "/" + tarFileName;
RunCygwinCommand("Tar", tarArguments);
RunCygwinCommand("Gzip", gzipArguments);
MoveFile($"{sourceFolder}/{tarFileName}.gz", $"{outputDirectory}/{tarFileName}.gz");
}
else
{
RunLinuxCommand("find", MakeAbsolute(Directory(sourceFolder)) + @" -type d -exec chmod 755 {} \;");
RunLinuxCommand("find", MakeAbsolute(Directory(sourceFolder)) + @" -type f -exec chmod 644 {} \;");
RunLinuxCommand("chmod", $"755 {MakeAbsolute(Directory(sourceFolder))}/Jackett/jackett");
RunLinuxCommand("chmod", $"755 {MakeAbsolute(Directory(sourceFolder))}/Jackett/JackettUpdater");
string systemdScript = MakeAbsolute(Directory(sourceFolder)) + "/Jackett/install_service_systemd.sh";
if (FileExists(systemdScript))
{
RunLinuxCommand("chmod", $"755 {systemdScript}");
}
string macOsServiceScript = MakeAbsolute(Directory(sourceFolder)) + "/Jackett/install_service_macos";
if (FileExists(macOsServiceScript))
{
RunLinuxCommand("chmod", $"755 {macOsServiceScript}");
}
RunLinuxCommand("tar", $"-C {sourceFolder} -zcvf {outputDirectory}/{tarFileName}.gz {tarCdirectoryOption}");
}
}
private void DotNetCorePublish(string projectPath, string framework, string runtime, string outputPath)
{
var settings = new DotNetCorePublishSettings
{
Framework = framework,
Runtime = runtime,
OutputDirectory = outputPath
};
DotNetCorePublish(projectPath, settings);
}
//////////////////////////////////////////////////////////////////////
// TASK TARGETS
//////////////////////////////////////////////////////////////////////
Task("Default")
.IsDependentOn("Windows-Environment-Dev")
.Does(() =>
{
Information("Default Task Completed");
});
Task("Windows-Appveyor")
.IsDependentOn("Windows-Environment-Appveyor")
.Does(() =>
{
Information("Windows Appveyor Task Completed");
});
Task("Linux")
.IsDependentOn("Linux-Environment")
.Does(() =>
{
Information("Linux Task Completed");
});
//////////////////////////////////////////////////////////////////////
// EXECUTION
//////////////////////////////////////////////////////////////////////
RunTarget(target);

242
build.ps1
View File

@@ -1,242 +0,0 @@
##########################################################################
# This is the Cake bootstrapper script for PowerShell.
# This file was downloaded from https://github.com/cake-build/resources
# Feel free to change this file to fit your needs.
##########################################################################
<#
.SYNOPSIS
This is a Powershell script to bootstrap a Cake build.
.DESCRIPTION
This Powershell script will download NuGet if missing, restore NuGet tools (including Cake)
and execute your Cake build script with the parameters you provide.
.PARAMETER Script
The build script to execute.
.PARAMETER Target
The build script target to run.
.PARAMETER Configuration
The build configuration to use.
.PARAMETER Verbosity
Specifies the amount of information to be displayed.
.PARAMETER ShowDescription
Shows description about tasks.
.PARAMETER DryRun
Performs a dry run.
.PARAMETER SkipToolPackageRestore
Skips restoring of packages.
.PARAMETER ScriptArgs
Remaining arguments are added here.
.LINK
https://cakebuild.net
#>
[CmdletBinding()]
Param(
[string]$Script = "build.cake",
[string]$Target,
[string]$Configuration,
[ValidateSet("Quiet", "Minimal", "Normal", "Verbose", "Diagnostic")]
[string]$Verbosity,
[switch]$ShowDescription,
[Alias("WhatIf", "Noop")]
[switch]$DryRun,
[switch]$SkipToolPackageRestore,
[Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)]
[string[]]$ScriptArgs
)
# Attempt to set highest encryption available for SecurityProtocol.
# PowerShell will not set this by default (until maybe .NET 4.6.x). This
# will typically produce a message for PowerShell v2 (just an info
# message though)
try {
# Set TLS 1.2 (3072), then TLS 1.1 (768), then TLS 1.0 (192), finally SSL 3.0 (48)
# Use integers because the enumeration values for TLS 1.2 and TLS 1.1 won't
# exist in .NET 4.0, even though they are addressable if .NET 4.5+ is
# installed (.NET 4.5 is an in-place upgrade).
[System.Net.ServicePointManager]::SecurityProtocol = 3072 -bor 768 -bor 192 -bor 48
} catch {
Write-Output 'Unable to set PowerShell to use TLS 1.2 and TLS 1.1 due to old .NET Framework installed. If you see underlying connection closed or trust errors, you may need to upgrade to .NET Framework 4.5+ and PowerShell v3'
}
[Reflection.Assembly]::LoadWithPartialName("System.Security") | Out-Null
function MD5HashFile([string] $filePath)
{
if ([string]::IsNullOrEmpty($filePath) -or !(Test-Path $filePath -PathType Leaf))
{
return $null
}
[System.IO.Stream] $file = $null;
[System.Security.Cryptography.MD5] $md5 = $null;
try
{
$md5 = [System.Security.Cryptography.MD5]::Create()
$file = [System.IO.File]::OpenRead($filePath)
return [System.BitConverter]::ToString($md5.ComputeHash($file))
}
finally
{
if ($file -ne $null)
{
$file.Dispose()
}
}
}
function GetProxyEnabledWebClient
{
$wc = New-Object System.Net.WebClient
$proxy = [System.Net.WebRequest]::GetSystemWebProxy()
$proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials
$wc.Proxy = $proxy
return $wc
}
Write-Host "Preparing to run build script..."
if(!$PSScriptRoot){
$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent
}
$TOOLS_DIR = Join-Path $PSScriptRoot "tools"
$ADDINS_DIR = Join-Path $TOOLS_DIR "Addins"
$MODULES_DIR = Join-Path $TOOLS_DIR "Modules"
$NUGET_EXE = Join-Path $TOOLS_DIR "nuget.exe"
$CAKE_EXE = Join-Path $TOOLS_DIR "Cake/Cake.exe"
$NUGET_URL = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
$PACKAGES_CONFIG = Join-Path $TOOLS_DIR "packages.config"
$PACKAGES_CONFIG_MD5 = Join-Path $TOOLS_DIR "packages.config.md5sum"
$ADDINS_PACKAGES_CONFIG = Join-Path $ADDINS_DIR "packages.config"
$MODULES_PACKAGES_CONFIG = Join-Path $MODULES_DIR "packages.config"
# Make sure tools folder exists
if ((Test-Path $PSScriptRoot) -and !(Test-Path $TOOLS_DIR)) {
Write-Verbose -Message "Creating tools directory..."
New-Item -Path $TOOLS_DIR -Type directory | out-null
}
# Make sure that packages.config exist.
if (!(Test-Path $PACKAGES_CONFIG)) {
Write-Verbose -Message "Downloading packages.config..."
try {
$wc = GetProxyEnabledWebClient
$wc.DownloadFile("https://cakebuild.net/download/bootstrapper/packages", $PACKAGES_CONFIG)
} catch {
Throw "Could not download packages.config."
}
}
# Try find NuGet.exe in path if not exists
if (!(Test-Path $NUGET_EXE)) {
Write-Verbose -Message "Trying to find nuget.exe in PATH..."
$existingPaths = $Env:Path -Split ';' | Where-Object { (![string]::IsNullOrEmpty($_)) -and (Test-Path $_ -PathType Container) }
$NUGET_EXE_IN_PATH = Get-ChildItem -Path $existingPaths -Filter "nuget.exe" | Select -First 1
if ($NUGET_EXE_IN_PATH -ne $null -and (Test-Path $NUGET_EXE_IN_PATH.FullName)) {
Write-Verbose -Message "Found in PATH at $($NUGET_EXE_IN_PATH.FullName)."
$NUGET_EXE = $NUGET_EXE_IN_PATH.FullName
}
}
# Try download NuGet.exe if not exists
if (!(Test-Path $NUGET_EXE)) {
Write-Verbose -Message "Downloading NuGet.exe..."
try {
$wc = GetProxyEnabledWebClient
$wc.DownloadFile($NUGET_URL, $NUGET_EXE)
} catch {
Throw "Could not download NuGet.exe."
}
}
# Save nuget.exe path to environment to be available to child processed
$ENV:NUGET_EXE = $NUGET_EXE
# Restore tools from NuGet?
if(-Not $SkipToolPackageRestore.IsPresent) {
Push-Location
Set-Location $TOOLS_DIR
# Check for changes in packages.config and remove installed tools if true.
[string] $md5Hash = MD5HashFile($PACKAGES_CONFIG)
if((!(Test-Path $PACKAGES_CONFIG_MD5)) -Or
($md5Hash -ne (Get-Content $PACKAGES_CONFIG_MD5 ))) {
Write-Verbose -Message "Missing or changed package.config hash..."
Get-ChildItem -Exclude packages.config,nuget.exe,Cake.Bakery |
Remove-Item -Recurse
}
Write-Verbose -Message "Restoring tools from NuGet..."
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$TOOLS_DIR`""
if ($LASTEXITCODE -ne 0) {
Throw "An error occurred while restoring NuGet tools."
}
else
{
$md5Hash | Out-File $PACKAGES_CONFIG_MD5 -Encoding "ASCII"
}
Write-Verbose -Message ($NuGetOutput | out-string)
Pop-Location
}
# Restore addins from NuGet
if (Test-Path $ADDINS_PACKAGES_CONFIG) {
Push-Location
Set-Location $ADDINS_DIR
Write-Verbose -Message "Restoring addins from NuGet..."
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$ADDINS_DIR`""
if ($LASTEXITCODE -ne 0) {
Throw "An error occurred while restoring NuGet addins."
}
Write-Verbose -Message ($NuGetOutput | out-string)
Pop-Location
}
# Restore modules from NuGet
if (Test-Path $MODULES_PACKAGES_CONFIG) {
Push-Location
Set-Location $MODULES_DIR
Write-Verbose -Message "Restoring modules from NuGet..."
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$MODULES_DIR`""
if ($LASTEXITCODE -ne 0) {
Throw "An error occurred while restoring NuGet modules."
}
Write-Verbose -Message ($NuGetOutput | out-string)
Pop-Location
}
# Make sure that Cake has been installed.
if (!(Test-Path $CAKE_EXE)) {
Throw "Could not find Cake.exe at $CAKE_EXE"
}
# Build Cake arguments
$cakeArguments = @("$Script");
if ($Target) { $cakeArguments += "-target=$Target" }
if ($Configuration) { $cakeArguments += "-configuration=$Configuration" }
if ($Verbosity) { $cakeArguments += "-verbosity=$Verbosity" }
if ($ShowDescription) { $cakeArguments += "-showdescription" }
if ($DryRun) { $cakeArguments += "-dryrun" }
$cakeArguments += $ScriptArgs
# Start Cake
Write-Host "Running build script..."
&$CAKE_EXE $cakeArguments
exit $LASTEXITCODE

117
build.sh
View File

@@ -1,117 +0,0 @@
#!/usr/bin/env bash
##########################################################################
# This is the Cake bootstrapper script for Linux and OS X.
# This file was downloaded from https://github.com/cake-build/resources
# Feel free to change this file to fit your needs.
##########################################################################
# Define directories.
SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
TOOLS_DIR=$SCRIPT_DIR/tools
ADDINS_DIR=$TOOLS_DIR/Addins
MODULES_DIR=$TOOLS_DIR/Modules
NUGET_EXE=$TOOLS_DIR/nuget.exe
CAKE_EXE=$TOOLS_DIR/Cake/Cake.exe
PACKAGES_CONFIG=$TOOLS_DIR/packages.config
PACKAGES_CONFIG_MD5=$TOOLS_DIR/packages.config.md5sum
ADDINS_PACKAGES_CONFIG=$ADDINS_DIR/packages.config
MODULES_PACKAGES_CONFIG=$MODULES_DIR/packages.config
# Define md5sum or md5 depending on Linux/OSX
MD5_EXE=
if [[ "$(uname -s)" == "Darwin" ]]; then
MD5_EXE="md5 -r"
else
MD5_EXE="md5sum"
fi
# Define default arguments.
SCRIPT="build.cake"
CAKE_ARGUMENTS=()
# Parse arguments.
for i in "$@"; do
case $1 in
-s|--script) SCRIPT="$2"; shift ;;
--) shift; CAKE_ARGUMENTS+=("$@"); break ;;
*) CAKE_ARGUMENTS+=("$1") ;;
esac
shift
done
# Make sure the tools folder exist.
if [ ! -d "$TOOLS_DIR" ]; then
mkdir "$TOOLS_DIR"
fi
# Make sure that packages.config exist.
if [ ! -f "$TOOLS_DIR/packages.config" ]; then
echo "Downloading packages.config..."
curl -Lsfo "$TOOLS_DIR/packages.config" https://cakebuild.net/download/bootstrapper/packages
if [ $? -ne 0 ]; then
echo "An error occurred while downloading packages.config."
exit 1
fi
fi
# Download NuGet if it does not exist.
if [ ! -f "$NUGET_EXE" ]; then
echo "Downloading NuGet..."
curl -Lsfo "$NUGET_EXE" https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
if [ $? -ne 0 ]; then
echo "An error occurred while downloading nuget.exe."
exit 1
fi
fi
# Restore tools from NuGet.
pushd "$TOOLS_DIR" >/dev/null
if [ ! -f "$PACKAGES_CONFIG_MD5" ] || [ "$( cat "$PACKAGES_CONFIG_MD5" | sed 's/\r$//' )" != "$( $MD5_EXE "$PACKAGES_CONFIG" | awk '{ print $1 }' )" ]; then
find . -type d ! -name . ! -name 'Cake.Bakery' | xargs rm -rf
fi
mono "$NUGET_EXE" install -ExcludeVersion
if [ $? -ne 0 ]; then
echo "Could not restore NuGet tools."
exit 1
fi
$MD5_EXE "$PACKAGES_CONFIG" | awk '{ print $1 }' >| "$PACKAGES_CONFIG_MD5"
popd >/dev/null
# Restore addins from NuGet.
if [ -f "$ADDINS_PACKAGES_CONFIG" ]; then
pushd "$ADDINS_DIR" >/dev/null
mono "$NUGET_EXE" install -ExcludeVersion
if [ $? -ne 0 ]; then
echo "Could not restore NuGet addins."
exit 1
fi
popd >/dev/null
fi
# Restore modules from NuGet.
if [ -f "$MODULES_PACKAGES_CONFIG" ]; then
pushd "$MODULES_DIR" >/dev/null
mono "$NUGET_EXE" install -ExcludeVersion
if [ $? -ne 0 ]; then
echo "Could not restore NuGet modules."
exit 1
fi
popd >/dev/null
fi
# Make sure that Cake has been installed.
if [ ! -f "$CAKE_EXE" ]; then
echo "Could not find Cake.exe at '$CAKE_EXE'."
exit 1
fi
# Start Cake
exec mono "$CAKE_EXE" $SCRIPT "${CAKE_ARGUMENTS[@]}"

View File

@@ -46,7 +46,7 @@ Type=simple
User=${jackettuser}
Group=${jackettuser}
WorkingDirectory=${jackettdir}
ExecStart=${jackettdir}/jackett --NoRestart
ExecStart=${jackettdir}/jackett_launcher.sh
TimeoutStopSec=20
[Install]

18
jackett_launcher.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/sh
# Helper script to fix
# https://github.com/Jackett/Jackett/issues/5208#issuecomment-547565515
# Get full Jackett root path
JACKETT_DIR="$(dirname "$(readlink -f "$0")")"
# Launch Jackett
${JACKETT_DIR}/jackett --NoRestart
# Get user running the service
JACKETT_USER=$(whoami)
# Wait until the updater ends
while pgrep -u ${JACKETT_USER} JackettUpdater > /dev/null; do
sleep 1
done

View File

@@ -25,8 +25,8 @@ namespace DateTimeRoutines
/// <returns>seconds</returns>
public static uint GetSecondsSinceUnixEpoch(this DateTime date_time)
{
TimeSpan t = date_time - new DateTime(1970, 1, 1);
int ss = (int)t.TotalSeconds;
var t = date_time - new DateTime(1970, 1, 1);
var ss = (int)t.TotalSeconds;
if (ss < 0)
return 0;
return (uint)ss;
@@ -44,39 +44,39 @@ namespace DateTimeRoutines
/// <summary>
/// Index of first char of a date substring found in the string
/// </summary>
readonly public int IndexOfDate = -1;
public readonly int IndexOfDate = -1;
/// <summary>
/// Length a date substring found in the string
/// </summary>
readonly public int LengthOfDate = -1;
public readonly int LengthOfDate = -1;
/// <summary>
/// Index of first char of a time substring found in the string
/// </summary>
readonly public int IndexOfTime = -1;
public readonly int IndexOfTime = -1;
/// <summary>
/// Length of a time substring found in the string
/// </summary>
readonly public int LengthOfTime = -1;
public readonly int LengthOfTime = -1;
/// <summary>
/// DateTime found in the string
/// </summary>
readonly public DateTime DateTime;
public readonly DateTime DateTime;
/// <summary>
/// True if a date was found within the string
/// </summary>
readonly public bool IsDateFound;
public readonly bool IsDateFound;
/// <summary>
/// True if a time was found within the string
/// </summary>
readonly public bool IsTimeFound;
public readonly bool IsTimeFound;
/// <summary>
/// UTC offset if it was found within the string
/// </summary>
readonly public TimeSpan UtcOffset;
public readonly TimeSpan UtcOffset;
/// <summary>
/// True if UTC offset was found in the string
/// </summary>
readonly public bool IsUtcOffsetFound;
public readonly bool IsUtcOffsetFound;
/// <summary>
/// Utc gotten from DateTime if IsUtcOffsetFound is True
/// </summary>
@@ -113,7 +113,7 @@ namespace DateTimeRoutines
{
if (index_of_date < 0)//to avoid negative date exception when date is undefined
{
TimeSpan ts = date_time.TimeOfDay + utc_offset;
var ts = date_time.TimeOfDay + utc_offset;
if (ts < new TimeSpan(0))
UtcDateTime = new DateTime(1, 1, 2) + ts;
else
@@ -146,7 +146,8 @@ namespace DateTimeRoutines
return _DefaultDate;
}
}
static DateTime _DefaultDate = DateTime.Now;
private static DateTime _DefaultDate = DateTime.Now;
/// <summary>
/// If true then DefaultDate property is ignored and DefaultDate is always DateTime.Now
@@ -183,10 +184,9 @@ namespace DateTimeRoutines
/// <param name="default_format">format to be used preferably in ambivalent instances</param>
/// <param name="date_time">parsed date-time output</param>
/// <returns>true if both date and time were found, else false</returns>
static public bool TryParseDateTime(this string str, DateTimeFormat default_format, out DateTime date_time)
public static bool TryParseDateTime(this string str, DateTimeFormat default_format, out DateTime date_time)
{
ParsedDateTime parsed_date_time;
if (!TryParseDateTime(str, default_format, out parsed_date_time))
if (!TryParseDateTime(str, default_format, out ParsedDateTime parsed_date_time))
{
date_time = new DateTime(1, 1, 1);
return false;
@@ -204,10 +204,9 @@ namespace DateTimeRoutines
/// <param name="default_format">format to be used preferably in ambivalent instances</param>
/// <param name="date_time">parsed date-time output</param>
/// <returns>true if date and/or time was found, else false</returns>
static public bool TryParseDateOrTime(this string str, DateTimeFormat default_format, out DateTime date_time)
public static bool TryParseDateOrTime(this string str, DateTimeFormat default_format, out DateTime date_time)
{
ParsedDateTime parsed_date_time;
if (!TryParseDateOrTime(str, default_format, out parsed_date_time))
if (!TryParseDateOrTime(str, default_format, out ParsedDateTime parsed_date_time))
{
date_time = new DateTime(1, 1, 1);
return false;
@@ -226,8 +225,7 @@ namespace DateTimeRoutines
/// <returns>true if time was found, else false</returns>
public static bool TryParseTime(this string str, DateTimeFormat default_format, out DateTime time)
{
ParsedDateTime parsed_time;
if (!TryParseTime(str, default_format, out parsed_time, null))
if (!TryParseTime(str, default_format, out var parsed_time, null))
{
time = new DateTime(1, 1, 1);
return false;
@@ -245,10 +243,9 @@ namespace DateTimeRoutines
/// <param name="default_format">format to be used preferably in ambivalent instances</param>
/// <param name="date">parsed date output</param>
/// <returns>true if date was found, else false</returns>
static public bool TryParseDate(this string str, DateTimeFormat default_format, out DateTime date)
public static bool TryParseDate(this string str, DateTimeFormat default_format, out DateTime date)
{
ParsedDateTime parsed_date;
if (!TryParseDate(str, default_format, out parsed_date))
if (!TryParseDate(str, default_format, out ParsedDateTime parsed_date))
{
date = new DateTime(1, 1, 1);
return false;
@@ -268,7 +265,7 @@ namespace DateTimeRoutines
/// <param name="default_format">format to be used preferably in ambivalent instances</param>
/// <param name="parsed_date_time">parsed date-time output</param>
/// <returns>true if both date and time were found, else false</returns>
static public bool TryParseDateTime(this string str, DateTimeFormat default_format, out ParsedDateTime parsed_date_time)
public static bool TryParseDateTime(this string str, DateTimeFormat default_format, out ParsedDateTime parsed_date_time)
{
if (DateTimeRoutines.TryParseDateOrTime(str, default_format, out parsed_date_time)
&& parsed_date_time.IsDateFound
@@ -288,7 +285,7 @@ namespace DateTimeRoutines
/// <param name="default_format">format to be used preferably in ambivalent instances</param>
/// <param name="parsed_time">parsed date-time output</param>
/// <returns>true if time was found, else false</returns>
static public bool TryParseTime(this string str, DateTimeFormat default_format, out ParsedDateTime parsed_time)
public static bool TryParseTime(this string str, DateTimeFormat default_format, out ParsedDateTime parsed_time)
{
return TryParseTime(str, default_format, out parsed_time, null);
}
@@ -302,30 +299,30 @@ namespace DateTimeRoutines
/// <param name="default_format">format to be used preferably in ambivalent instances</param>
/// <param name="parsed_date_time">parsed date-time output</param>
/// <returns>true if date or time was found, else false</returns>
static public bool TryParseDateOrTime(this string str, DateTimeFormat default_format, out ParsedDateTime parsed_date_time)
public static bool TryParseDateOrTime(this string str, DateTimeFormat default_format, out ParsedDateTime parsed_date_time)
{
parsed_date_time = null;
ParsedDateTime parsed_date;
ParsedDateTime parsed_time;
if (!TryParseDate(str, default_format, out parsed_date))
if (!TryParseDate(str, default_format, out
ParsedDateTime parsed_date))
{
if (!TryParseTime(str, default_format, out parsed_time, null))
return false;
DateTime date_time = new DateTime(DefaultDate.Year, DefaultDate.Month, DefaultDate.Day, parsed_time.DateTime.Hour, parsed_time.DateTime.Minute, parsed_time.DateTime.Second);
var date_time = new DateTime(DefaultDate.Year, DefaultDate.Month, DefaultDate.Day, parsed_time.DateTime.Hour, parsed_time.DateTime.Minute, parsed_time.DateTime.Second);
parsed_date_time = new ParsedDateTime(-1, -1, parsed_time.IndexOfTime, parsed_time.LengthOfTime, date_time, parsed_time.UtcOffset);
}
else
{
if (!TryParseTime(str, default_format, out parsed_time, parsed_date))
{
DateTime date_time = new DateTime(parsed_date.DateTime.Year, parsed_date.DateTime.Month, parsed_date.DateTime.Day, 0, 0, 0);
var date_time = new DateTime(parsed_date.DateTime.Year, parsed_date.DateTime.Month, parsed_date.DateTime.Day, 0, 0, 0);
parsed_date_time = new ParsedDateTime(parsed_date.IndexOfDate, parsed_date.LengthOfDate, -1, -1, date_time);
}
else
{
DateTime date_time = new DateTime(parsed_date.DateTime.Year, parsed_date.DateTime.Month, parsed_date.DateTime.Day, parsed_time.DateTime.Hour, parsed_time.DateTime.Minute, parsed_time.DateTime.Second);
var date_time = new DateTime(parsed_date.DateTime.Year, parsed_date.DateTime.Month, parsed_date.DateTime.Day, parsed_time.DateTime.Hour, parsed_time.DateTime.Minute, parsed_time.DateTime.Second);
parsed_date_time = new ParsedDateTime(parsed_date.IndexOfDate, parsed_date.LengthOfDate, parsed_time.IndexOfTime, parsed_time.LengthOfTime, date_time, parsed_time.UtcOffset);
}
}
@@ -351,7 +348,7 @@ namespace DateTimeRoutines
parsed_time = null;
string time_zone_r;
if(default_format == DateTimeFormat.USA_DATE)
if (default_format == DateTimeFormat.USA_DATE)
time_zone_r = @"(?:\s*(?'time_zone'UTC|GMT|CST|EST))?";
else
time_zone_r = @"(?:\s*(?'time_zone'UTC|GMT))?";
@@ -363,13 +360,13 @@ namespace DateTimeRoutines
m = Regex.Match(str.Substring(parsed_date.IndexOfDate + parsed_date.LengthOfDate), @"(?<=^\s*,?\s+|^\s*at\s*|^\s*[T\-]\s*)(?'hour'\d{2})\s*:\s*(?'minute'\d{2})\s*:\s*(?'second'\d{2})\s+(?'offset_sign'[\+\-])(?'offset_hh'\d{2}):?(?'offset_mm'\d{2})(?=$|[^\d\w])", RegexOptions.Compiled);
if (!m.Success)
//look for <date> [h]h:mm[:ss] [PM/AM] [UTC/GMT]
m = Regex.Match(str.Substring(parsed_date.IndexOfDate + parsed_date.LengthOfDate), @"(?<=^\s*,?\s+|^\s*at\s*|^\s*[T\-]\s*)(?'hour'\d{1,2})\s*:\s*(?'minute'\d{2})\s*(?::\s*(?'second'\d{2}))?(?:\s*(?'ampm'AM|am|PM|pm))?"+time_zone_r+@"(?=$|[^\d\w])", RegexOptions.Compiled);
m = Regex.Match(str.Substring(parsed_date.IndexOfDate + parsed_date.LengthOfDate), @"(?<=^\s*,?\s+|^\s*at\s*|^\s*[T\-]\s*)(?'hour'\d{1,2})\s*:\s*(?'minute'\d{2})\s*(?::\s*(?'second'\d{2}))?(?:\s*(?'ampm'AM|am|PM|pm))?" + time_zone_r + @"(?=$|[^\d\w])", RegexOptions.Compiled);
if (!m.Success)
//look for [h]h:mm:ss [PM/AM] [UTC/GMT] <date>
m = Regex.Match(str.Substring(0, parsed_date.IndexOfDate), @"(?<=^|[^\d])(?'hour'\d{1,2})\s*:\s*(?'minute'\d{2})\s*(?::\s*(?'second'\d{2}))?(?:\s*(?'ampm'AM|am|PM|pm))?"+time_zone_r+@"(?=$|[\s,]+)", RegexOptions.Compiled);
m = Regex.Match(str.Substring(0, parsed_date.IndexOfDate), @"(?<=^|[^\d])(?'hour'\d{1,2})\s*:\s*(?'minute'\d{2})\s*(?::\s*(?'second'\d{2}))?(?:\s*(?'ampm'AM|am|PM|pm))?" + time_zone_r + @"(?=$|[\s,]+)", RegexOptions.Compiled);
if (!m.Success)
//look for [h]h:mm:ss [PM/AM] [UTC/GMT] within <date>
m = Regex.Match(str.Substring(parsed_date.IndexOfDate, parsed_date.LengthOfDate), @"(?<=^|[^\d])(?'hour'\d{1,2})\s*:\s*(?'minute'\d{2})\s*(?::\s*(?'second'\d{2}))?(?:\s*(?'ampm'AM|am|PM|pm))?"+time_zone_r+@"(?=$|[\s,]+)", RegexOptions.Compiled);
m = Regex.Match(str.Substring(parsed_date.IndexOfDate, parsed_date.LengthOfDate), @"(?<=^|[^\d])(?'hour'\d{1,2})\s*:\s*(?'minute'\d{2})\s*(?::\s*(?'second'\d{2}))?(?:\s*(?'ampm'AM|am|PM|pm))?" + time_zone_r + @"(?=$|[\s,]+)", RegexOptions.Compiled);
}
else//look anywhere within string
{
@@ -377,7 +374,7 @@ namespace DateTimeRoutines
m = Regex.Match(str, @"(?<=^|\s+|\s*T\s*)(?'hour'\d{2})\s*:\s*(?'minute'\d{2})\s*:\s*(?'second'\d{2})\s+(?'offset_sign'[\+\-])(?'offset_hh'\d{2}):?(?'offset_mm'\d{2})?(?=$|[^\d\w])", RegexOptions.Compiled);
if (!m.Success)
//look for [h]h:mm[:ss] [PM/AM] [UTC/GMT]
m = Regex.Match(str, @"(?<=^|\s+|\s*T\s*)(?'hour'\d{1,2})\s*:\s*(?'minute'\d{2})\s*(?::\s*(?'second'\d{2}))?(?:\s*(?'ampm'AM|am|PM|pm))?"+time_zone_r+@"(?=$|[^\d\w])", RegexOptions.Compiled);
m = Regex.Match(str, @"(?<=^|\s+|\s*T\s*)(?'hour'\d{1,2})\s*:\s*(?'minute'\d{2})\s*(?::\s*(?'second'\d{2}))?(?:\s*(?'ampm'AM|am|PM|pm))?" + time_zone_r + @"(?=$|[^\d\w])", RegexOptions.Compiled);
}
if (!m.Success)
@@ -385,15 +382,15 @@ namespace DateTimeRoutines
//try
//{
int hour = int.Parse(m.Groups["hour"].Value);
var hour = int.Parse(m.Groups["hour"].Value);
if (hour < 0 || hour > 23)
return false;
int minute = int.Parse(m.Groups["minute"].Value);
var minute = int.Parse(m.Groups["minute"].Value);
if (minute < 0 || minute > 59)
return false;
int second = 0;
var second = 0;
if (!string.IsNullOrEmpty(m.Groups["second"].Value))
{
second = int.Parse(m.Groups["second"].Value);
@@ -406,15 +403,15 @@ namespace DateTimeRoutines
else if (string.Compare(m.Groups["ampm"].Value, "AM", true) == 0 && hour == 12)
hour -= 12;
DateTime date_time = new DateTime(1, 1, 1, hour, minute, second);
var date_time = new DateTime(1, 1, 1, hour, minute, second);
if (m.Groups["offset_hh"].Success)
{
int offset_hh = int.Parse(m.Groups["offset_hh"].Value);
int offset_mm = 0;
var offset_hh = int.Parse(m.Groups["offset_hh"].Value);
var offset_mm = 0;
if (m.Groups["offset_mm"].Success)
offset_mm = int.Parse(m.Groups["offset_mm"].Value);
TimeSpan utc_offset = new TimeSpan(offset_hh, offset_mm, 0);
var utc_offset = new TimeSpan(offset_hh, offset_mm, 0);
if (m.Groups["offset_sign"].Value == "-")
utc_offset = -utc_offset;
parsed_time = new ParsedDateTime(-1, -1, m.Index, m.Length, date_time, utc_offset);
@@ -428,7 +425,7 @@ namespace DateTimeRoutines
{
case "UTC":
case "GMT":
utc_offset = new TimeSpan(0, 0, 0);
utc_offset = new TimeSpan(0, 0, 0);
break;
case "CST":
utc_offset = new TimeSpan(-6, 0, 0);
@@ -461,7 +458,7 @@ namespace DateTimeRoutines
/// <param name="default_format">format to be used preferably in ambivalent instances</param>
/// <param name="parsed_date">parsed date output</param>
/// <returns>true if date was found, else false</returns>
static public bool TryParseDate(this string str, DateTimeFormat default_format, out ParsedDateTime parsed_date)
public static bool TryParseDate(this string str, DateTimeFormat default_format, out ParsedDateTime parsed_date)
{
parsed_date = null;
@@ -469,7 +466,7 @@ namespace DateTimeRoutines
return false;
//look for dd/mm/yy
Match m = Regex.Match(str, @"(?<=^|[^\d])(?'day'\d{1,2})\s*(?'separator'[\\/\.])+\s*(?'month'\d{1,2})\s*\'separator'+\s*(?'year'\d{2}|\d{4})(?=$|[^\d])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
var m = Regex.Match(str, @"(?<=^|[^\d])(?'day'\d{1,2})\s*(?'separator'[\\/\.])+\s*(?'month'\d{1,2})\s*\'separator'+\s*(?'year'\d{2}|\d{4})(?=$|[^\d])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
if (m.Success)
{
DateTime date;
@@ -491,8 +488,7 @@ namespace DateTimeRoutines
m = Regex.Match(str, @"(?<=^|[^\d])(?'year'\d{2}|\d{4})\s*(?'separator'[\-])\s*(?'month'\d{1,2})\s*\'separator'+\s*(?'day'\d{1,2})(?=$|[^\d])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
if (m.Success)
{
DateTime date;
if (!convert_to_date(int.Parse(m.Groups["year"].Value), int.Parse(m.Groups["month"].Value), int.Parse(m.Groups["day"].Value), out date))
if (!convert_to_date(int.Parse(m.Groups["year"].Value), int.Parse(m.Groups["month"].Value), int.Parse(m.Groups["day"].Value), out var date))
return false;
parsed_date = new ParsedDateTime(m.Index, m.Length, -1, -1, date);
return true;
@@ -514,9 +510,9 @@ namespace DateTimeRoutines
m = Regex.Match(str, @"(?:^|[^\d\w])(?'month'Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[uarychilestmbro]*\s+(?'day'\d{1,2})(?:-?st|-?th|-?rd|-?nd)?(?:\s*,?\s*(?'year'\d{4}))?(?=$|[^\d\w])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
if (m.Success)
{
int month = -1;
int index_of_date = m.Index;
int length_of_date = m.Length;
var month = -1;
var index_of_date = m.Index;
var length_of_date = m.Length;
switch (m.Groups["month"].Value)
{
@@ -575,8 +571,7 @@ namespace DateTimeRoutines
else
year = DefaultDate.Year;
DateTime date;
if (!convert_to_date(year, month, int.Parse(m.Groups["day"].Value), out date))
if (!convert_to_date(year, month, int.Parse(m.Groups["day"].Value), out var date))
return false;
parsed_date = new ParsedDateTime(index_of_date, length_of_date, -1, -1, date);
return true;
@@ -585,7 +580,7 @@ namespace DateTimeRoutines
return false;
}
static bool convert_to_date(int year, int month, int day, out DateTime date)
private static bool convert_to_date(int year, int month, int day, out DateTime date)
{
if (year >= 100)
{
@@ -597,9 +592,9 @@ namespace DateTimeRoutines
}
else
if (year > 30)
year += 1900;
else
year += 2000;
year += 1900;
else
year += 2000;
try
{
@@ -615,4 +610,4 @@ namespace DateTimeRoutines
#endregion
}
}
}

View File

@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
</Project>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

View File

@@ -7,10 +7,8 @@ body {
border-radius: 6px;
background-color: white;
max-width: 900px;
margin: 0 auto;
margin-top: 30px;
padding: 20px;
margin-bottom: 100px;
margin: 30px auto 100px;
}
.container-fluid {
@@ -22,7 +20,7 @@ body {
#indexers {
text-align: center;
margin-top: 30px;
margin-top: 20px;
}
.indexer-table {
@@ -57,6 +55,14 @@ body {
max-width: 255px;
}
.setup-item-inputcheckbox label {
padding: 0 1.5em;
}
.setup-item-inputcheckbox input {
height: 20px;
}
.setup-item-inputbool input {
max-width: 100px;
height: 20px;
@@ -116,7 +122,7 @@ hr {
}
.input-area {
margin: 4px 0px;
margin: 4px 0;
}
.input-area > * {
@@ -155,8 +161,7 @@ hr {
#footer {
color: #444444;
margin: 0 auto;
margin-top: 10px;
margin: 10px auto 0;
text-align: center;
}
@@ -170,7 +175,7 @@ hr {
}
.indexer-caps {
padding: 0px 15px 15px 15px;
padding: 0 15px 15px 15px;
border-top: 1px solid #e5e5e5;
}
@@ -178,6 +183,12 @@ hr {
border-bottom: 1px solid #ddd;
}
.jackettlog-narrowcol {
width: 1px;
white-space: nowrap;
vertical-align: top;
}
.jackettlogWarn {
background-color: #FFFF8E !important;
}
@@ -201,23 +212,57 @@ hr {
pre {
display: block;
padding: 3px;
margin: 0 0 0px;
margin: 0 0 0;
font-size: 13px;
line-height: 1.42857143;
color: #333;
word-break: break-all;
word-wrap: break-word;
background-color: transparent;
border: 0px;
border-radius: 0px;
border: 0;
border-radius: 0;
word-break: normal;
white-space: pre-wrap; /* Since CSS 2.1 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}
.modal-open .modal {
overflow-x: auto; /* Model can be bigger than the screen on mobiles */
}
.dataTables_length {
white-space: nowrap;
}
.dataTables_length select, .dataTables_filter input, .dataTable.compact tfoot td select {
display: inline-block;
height: 26px;
padding: 0 8px;
background-color: #fff;
border: 1px solid #ccc;
border-radius: 4px;
}
.dataTables_length select {
width: inherit;
}
.dataTables_filter input {
width: 400px
width: 400px;
}
.dataTable.compact tfoot td {
padding: 4px 0;
}
.dataTable.compact tfoot td select {
height: 26px;
padding: 0;
}
.dataTables_wrapper .dataTables_paginate .paginate_button {
padding: 3px 9px !important;
}
#unconfigured-indexers-template {
@@ -250,7 +295,7 @@ table td.fit{
.tooltip-inner img {
max-width: 250px;
height: auto;
height: auto;
}
.type-public {
@@ -272,7 +317,8 @@ table td.fit{
}
input#searchquery {
width:400px;
width: 400px;
display: inline-block;
}
#proxy-warning {

View File

@@ -32,7 +32,15 @@ $(document).ready(function () {
return opts.fn(this);
else
return opts.inverse(this);
});
});
Handlebars.registerHelper('if_in', function(elem, list, opts) {
if(list.indexOf(elem) > -1) {
return opts.fn(this);
}
return opts.inverse(this);
});
var index = window.location.pathname.indexOf("/UI");
var pathPrefix = window.location.pathname.substr(0, index);
@@ -43,7 +51,12 @@ $(document).ready(function () {
});
function openSearchIfNecessary() {
const hashArgs = location.hash.substring(1).split('&').reduce((prev, item) => Object.assign({ [item.split('=')[0]]: (item.split('=').length < 2 ? undefined : decodeURIComponent(item.split('=')[1])) }, prev), {});
const hashArgs = location.hash.substring(1).split('&').reduce((prev, item) =>
Object.assign({
[item.split('=')[0]]: (item.split('=').length < 2 ?
undefined :
decodeURIComponent(item.split('=')[1].replace(/\+/g,'%20')))
}, prev), {});
if ("search" in hashArgs) {
showSearch(hashArgs.tracker, hashArgs.search, hashArgs.category);
}
@@ -333,6 +346,7 @@ function copyToClipboard(text) {
var succeed;
try {
succeed = document.execCommand("copy");
doNotify("Copied to clipboard!", "success", "glyphicon glyphicon-ok");
} catch (e) {
succeed = false;
}
@@ -607,6 +621,11 @@ function getConfigModalJson(configForm) {
case "inputbool":
itemEntry.value = $el.find(".setup-item-inputbool input").is(":checked");
break;
case "inputcheckbox":
itemEntry.values = [];
$el.find(".setup-item-inputcheckbox input:checked").each(function () {
itemEntry.values.push($(this).val());
});
case "inputselect":
itemEntry.value = $el.find(".setup-item-inputselect select").val();
break;
@@ -738,7 +757,7 @@ function updateReleasesRow(row)
labels.empty();
if (IMDBId) {
labels.append('\n<a href="http://www.imdb.com/title/tt' + ("000000" + IMDBId).slice(-7) + '/" class="label label-imdb" alt="IMDB" title="IMDB">IMDB</a>');
labels.append('\n<a href="http://www.imdb.com/title/tt' + ("0000000" + IMDBId).slice(-8) + '/" class="label label-imdb" alt="IMDB" title="IMDB">IMDB</a>');
}
if (!isNaN(DownloadVolumeFactor)) {
@@ -761,7 +780,7 @@ function updateReleasesRow(row)
}
function showSearch(selectedIndexer, query, category) {
var selectedIndexers = []
var selectedIndexers = [];
if (selectedIndexer)
selectedIndexers = selectedIndexer.split(",");
$('#select-indexer-modal').remove();
@@ -828,7 +847,11 @@ function showSearch(selectedIndexer, query, category) {
Tracker: releaseDialog.find('#searchTracker').val()
};
window.location.hash = $.param({ search: queryObj.Query, tracker: queryObj.Tracker.join(","), category: queryObj.Category.join(",") });
window.location.hash = Object.entries({
search: encodeURIComponent(queryObj.Query).replace(/%20/g,'+'),
tracker: queryObj.Tracker.join(","),
category: queryObj.Category.join(",")
}).map(([k, v], i) => k + '=' + v).join('&');
$('#jackett-search-perform').html($('#spinner').html());
$('#searchResults div.dataTables_filter input').val("");
@@ -876,7 +899,7 @@ function showSearch(selectedIndexer, query, category) {
enableCaseInsensitiveFiltering: true,
nonSelectedText: 'All'
});
if (category !== undefined) {
searchCategory.val(category.split(","));
@@ -955,22 +978,22 @@ function updateSearchResultTable(element, results) {
"searchable": false,
"type": 'num'
},
{
"targets": 5,
"visible": true,
"searchable": false,
"iDataSort": 4
}
{
"targets": 5,
"visible": true,
"searchable": false,
"iDataSort": 4
}
],
fnPreDrawCallback: function () {
var table = this;
var deadfilterdiv = element.find(".dataTables_deadfilter");
var deadfiltercheckbox = deadfilterdiv.find("input");
if (!deadfiltercheckbox.length) {
deadfilterlabel = $('<label><input type="checkbox" id="jackett-search-results-datatable_deadfilter_checkbox" value="1">Show dead torrents</label>'
deadfilterlabel = $('<label><input type="checkbox" id="jackett-search-results-datatable_deadfilter_checkbox" value="1"> Show dead torrents</label>'
);
deadfilterdiv.append(deadfilterlabel);
deadfiltercheckbox = deadfilterlabel.find("input")
deadfiltercheckbox = deadfilterlabel.find("input");
deadfiltercheckbox.on("change", function () {
settings.deadfilter = this.checked;
table.api().draw();
@@ -1154,8 +1177,8 @@ function bindUIButtons() {
var jackett_port = Number($("#jackett-port").val());
var jackett_basepathoverride = $("#jackett-basepathoverride").val();
var jackett_external = $("#jackett-allowext").is(':checked');
var jackett_update = $("#jackett-allowupdate").is(':checked');
var jackett_prerelease = $("#jackett-prerelease").is(':checked');
var jackett_update = $("#jackett-allowupdate").is(':checked');
var jackett_prerelease = $("#jackett-prerelease").is(':checked');
var jackett_logging = $("#jackett-logging").is(':checked');
var jackett_omdb_key = $("#jackett-omdbkey").val();
var jackett_omdb_url = $("#jackett-omdburl").val();

View File

@@ -7,10 +7,8 @@ body {
border-radius: 6px;
background-color: white;
max-width: 900px;
margin: 0 auto;
margin-top: 30px;
padding: 20px;
margin-bottom: 30px;
margin: 30px auto;
}
.container-fluid {
@@ -22,7 +20,7 @@ body {
#indexers {
text-align: center;
margin-top: 30px;
margin-top: 20px;
}
.indexer-table {
@@ -116,7 +114,7 @@ hr {
}
.input-area {
margin: 4px 0px;
margin: 4px 0;
}
.input-area > * {
@@ -155,8 +153,7 @@ hr {
#footer {
color: #444444;
margin: 0 auto;
margin-top: 10px;
margin: 10px auto 0;
text-align: center;
}
@@ -170,7 +167,7 @@ hr {
}
.indexer-caps {
padding: 0px 15px 15px 15px;
padding: 0 15px 15px 15px;
border-top: 1px solid #e5e5e5;
}
@@ -178,6 +175,12 @@ hr {
border-bottom: 1px solid #ddd;
}
.jackettlog-narrowcol {
width: 1px;
white-space: nowrap;
vertical-align: top;
}
.jackettlogWarn {
background-color: #FFFF8E !important;
}
@@ -201,23 +204,57 @@ hr {
pre {
display: block;
padding: 3px;
margin: 0 0 0px;
margin: 0 0 0;
font-size: 13px;
line-height: 1.42857143;
color: #333;
word-break: break-all;
word-wrap: break-word;
background-color: transparent;
border: 0px;
border-radius: 0px;
border: 0;
border-radius: 0;
word-break: normal;
white-space: pre-wrap; /* Since CSS 2.1 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}
.modal-open .modal {
overflow-x: auto; /* Model can be bigger than the screen on mobiles */
}
.dataTables_length {
white-space: nowrap;
}
.dataTables_length select, .dataTables_filter input, .dataTable.compact tfoot td select {
display: inline-block;
height: 26px;
padding: 0 8px;
background-color: #fff;
border: 1px solid #ccc;
border-radius: 4px;
}
.dataTables_length select {
width: inherit;
}
.dataTables_filter input {
width: 75%
width: 75%;
}
.dataTable.compact tfoot td {
padding: 4px 0;
}
.dataTable.compact tfoot td select {
height: 26px;
padding: 0;
}
.dataTables_wrapper .dataTables_paginate .paginate_button {
padding: 3px 9px !important;
}
#unconfigured-indexers-template {
@@ -249,7 +286,7 @@ table td.fit{
.tooltip-inner img {
max-width: 250px;
height: auto;
height: auto;
}
.type-public {
@@ -282,7 +319,8 @@ div#jackett-releases-datatable_wrapper {
overflow-x: scroll;
}
input#searchquery {
width:50%;
width: 50%;
display: inline-block;
}
#proxy-warning {

View File

@@ -14,12 +14,12 @@
<link rel="apple-touch-icon" sizes="76x76" href="../apple-touch-icon-76x76.png" />
<link rel="apple-touch-icon" sizes="114x114" href="../apple-touch-icon-114x114.png" />
<link rel="apple-touch-icon" sizes="120x120" href="../apple-touch-icon-120x120.png" />
<link rel="apple-touch-icon" sizes="144x144" href="../apple-touch-icon-144x144" />
<link rel="apple-touch-icon" sizes="144x144" href="../apple-touch-icon-144x144.png" />
<link rel="apple-touch-icon" sizes="152x152" href="../apple-touch-icon-152x152.png" />
<link rel="apple-touch-icon" sizes="180x180" href="../apple-touch-icon-180x180.png" />
<link rel="mask-icon" href="jackett_medium.png" color="#35c5f4">
<link rel="mask-icon" href="../jackett_medium.png" color="#35c5f4">
<link rel="icon" type="image/ico" href="../favicon.ico" />
<link rel='shortcut icon' type='image/x-icon' href='../favicon.ico?' />
<link rel='shortcut icon' type='image/x-icon' href='../favicon.ico' />
<script type="text/javascript" src="../libs/filesize.min.js?changed=2017083001"></script>
<script type="text/javascript" src="../libs/jquery.min.js?changed=2017083001"></script>
<script type="text/javascript" src="../libs/jquery.dataTables.min.js?changed=2017083001" charset="utf8"></script>
@@ -34,8 +34,8 @@
<link rel="stylesheet" type="text/css" href="../bootstrap/bootstrap.min.css?changed=2017083001">
<link rel="stylesheet" type="text/css" href="../animate.css?changed=2017083001">
<link rel="stylesheet" type="text/css" href="../custom.css?changed=20190401" media="only screen and (min-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom_mobile.css?changed=20190401" media="only screen and (max-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom.css?changed=20200223" media="only screen and (min-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom_mobile.css?changed=20200223" media="only screen and (max-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../css/jquery.dataTables.min.css?changed=2017083001">
<link rel="stylesheet" type="text/css" href="../css/bootstrap-multiselect.css?changed=2017083001" />
<link rel="stylesheet" type="text/css" href="../css/font-awesome.min.css?changed=2017083001">
@@ -52,11 +52,11 @@
</div>
<hr />
<div id="can-upgrade-from-mono" hidden class="alert alert-info" role="alert">
<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.
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">
@@ -235,6 +235,19 @@
{{/if}}
</div>
</script>
<script id="setup-item-inputcheckbox" type="text/x-handlebars-template">
<div class="setup-item-inputcheckbox">
{{#each options}}
<div class="checkbox"><label>
{{#if_in @key ../values}}
<input type="checkbox" data-id="{{../../id}}" class="form-control" value="{{@key}}" checked />
{{else}}
<input type="checkbox" data-id="{{../../id}}" class="form-control" value="{{@key}}" />
{{/if_in}}
{{this}}</label></div>
{{/each}}
</div>
</script>
<script id="setup-item-inputselect" type="text/x-handlebars-template">
<div class="setup-item-inputselect">
<select class="form-control" data-id="{{id}}">
@@ -471,7 +484,7 @@
<div class="modal-body">
<p>You can search all configured indexers from this screen.</p>
<label for="text">Query</label>
<input type="text" name="query" id="searchquery" />
<input class="form-control" type="text" name="query" id="searchquery" />
<label for="tracker">Tracker</label>
<select name="tracker" id="searchTracker" multiple="multiple">
{{#each indexers}}
@@ -603,16 +616,16 @@
<table class="dataTable compact cell-border hover stripe">
<thead>
<tr>
<th style="width: 200px">When</th>
<th style="width: 80px">Level</th>
<th>Date</th>
<th>Level</th>
<th>Message</th>
</tr>
</thead>
<tbody>
{{#each logs}}
<tr class="jackettlog{{Level}}">
<td>{{dateFormat When}}</td>
<td>{{Level}}</td>
<td class="jackettlog-narrowcol">{{dateFormat When}}</td>
<td class="jackettlog-narrowcol">{{Level}}</td>
<td><pre>{{Message}}</pre></td>
</tr>
{{/each}}
@@ -678,6 +691,6 @@
</script>
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></script>
<script type="text/javascript" src="../custom.js?changed=20190427"></script>
<script type="text/javascript" src="../custom.js?changed=20200222"></script>
</body>
</html>

View File

@@ -1,11 +1,11 @@

Handlebars.registerHelper('dateFormat', function (context, block) {
if (window.moment) {
var f = block.hash.format || "MMM DD, YYYY hh:mm:ss A";
var f = block.hash.format || "YYYY-MM-DD HH:mm:ss";
return moment(context).format(f); //had to remove Date(context)
} else {
return context; // moment plugin not available. return data as is.
};
}
});
Handlebars.registerHelper('jacketTimespan', function (context, block) {
@@ -22,7 +22,7 @@ Handlebars.registerHelper('jacketTimespan', function (context, block) {
if (hours < 48) {
return Math.round(hours) + 'h ago';
}
var days = timeSpan.asDays();
if (days < 365) {
return Math.round(days) + 'd ago';
@@ -34,4 +34,4 @@ Handlebars.registerHelper('jacketTimespan', function (context, block) {
Handlebars.registerHelper('jacketSize', function (context, block) {
return filesize(context, { round: 1 });
});
});

View File

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

View File

@@ -50,6 +50,22 @@
type: checkbox
label: Strip Russian Letters
default: true
- name: sort
type: select
label: Sort requested from site
default: "4"
options:
"4": "created"
"7": "seeders"
"5": "size"
"1": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: takelogin.php
@@ -84,6 +100,9 @@
incldead: 1
# 0 title 1 title and descr
where: 0
sort: "{{ .Config.sort}}"
type: "{{ .Config.type}}"
rows:
selector: table > tbody > tr.rowtorrentinfo
fields:
@@ -110,7 +129,7 @@
- name: re_replace
args: ["(.*)\\([CСcс]езон\\s+(\\d+)\\)(.*)", "$1 S$2 rus $3"]
- name: re_replace
args: ["(\\([А-Яа-я\\W]+\\))|(^[А-Яа-я\\W\\d]+\\/ )|([а-яА-Я \\-]+,+)|([а-яА-Я]+)", "{{ if .Config.striprussian }}{{ else }}$1$2$3$4{{ end }}"]
args: ["(\\([А-Яа-яЁё\\W]+\\))|(^[А-Яа-яЁё\\W\\d]+\\/ )|([а-яА-ЯЁё \\-]+,+)|([а-яА-ЯЁё]+)", "{{ if .Config.striprussian }}{{ else }}$1$2$3$4{{ end }}"]
- name: replace
args: ["WEB DL", "WEBDL"]
- name: replace
@@ -162,4 +181,5 @@
img[src="pic/silverdownload.gif"]: 0.5
"*": 1
uploadvolumefactor:
text: 1
text: 1
# engine n/a

View File

@@ -7,6 +7,13 @@
encoding: UTF-8
links:
- https://1337x.to/
- https://1337x.gd/
- https://1337x.is/
- https://1337x.st/
- https://x1337x.ws/
- https://x1337x.eu/
- https://x1337x.se/
- https://1337x.unblocked.earth/
caps:
categorymappings:
@@ -36,7 +43,6 @@
- {id: 2, cat: Movies/SD, desc: "Movies/Divx/Xvid"}
- {id: 3, cat: Movies, desc: "Movies/SVCD/VCD"}
- {id: 4, cat: Movies/Foreign, desc: "Movies/Dubs/Dual Audio"}
- {id: 9, cat: Movies, desc: "Documentaries/Documentary"}
- {id: 42, cat: Movies/HD, desc: "Movies/HD"}
- {id: 54, cat: Movies, desc: "Movies/h.264/x264"}
- {id: 55, cat: Movies, desc: "Movies/Mp4"}
@@ -53,6 +59,7 @@
- {id: 71, cat: TV, desc: "TV/HEVC/x265"}
- {id: 74, cat: TV, desc: "TV/Cartoons"}
- {id: 75, cat: TV/SD, desc: "TV/SD"}
- {id: 9, cat: TV/Documentary, desc: "TV/Documentary"}
#Apps
- {id: 18, cat: PC, desc: "Apps/PC Software"}
@@ -102,6 +109,7 @@
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q, album, artist, label, year]
settings:
- name: downloadlink
@@ -113,36 +121,48 @@
"http://torrage.info/" : "Torrage.info"
"http://btcache.me/" : "BTcache.me"
"magnet:": "magnet"
- name: sort
type: select
label: Sort requested from site
default: "time"
options:
"time": "created"
"seeders": "seeders"
"size": "size"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
download:
# the .torrent url is on the on the details page
selector: ul li a[href^="{{ .Config.downloadlink }}"]
# temp fix for #5372
filters:
- name: urldecode
- name: replace
args: [" ⭐", ""]
attribute: href
search:
paths:
# present first page of movies and tv results if there are no search parms supplied
- path: "{{if .Keywords}}sort-search/{{ .Keywords}}/time/desc/1/{{else}}cat/Movies/1/{{end}}"
- path: "{{if .Keywords}}{{else}}cat/TV/1/{{end}}"
- path: "{{if .Keywords}}sort-search/{{ .Keywords}}/time/desc/2/{{else}}{{end}}"
- path: "{{if .Keywords}}sort-search/{{ .Keywords}}/time/desc/3/{{else}}{{end}}"
- path: "{{if .Keywords}}sort-search/{{ .Keywords}}/time/desc/4/{{else}}{{end}}"
- path: "{{if .Keywords}}sort-search/{{ .Keywords}}/time/desc/5/{{else}}{{end}}"
# present first page of movies tv and music results if there are no search parms supplied (20 hits per page)
- path: "{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}sort-search{{else}}cat/Movies{{end}}{{if or (.Query.Album) (.Query.Artist) }}/{{ or (.Query.Album) (.Query.Artist) }}{{else}}/{{ .Keywords }}{{end}}{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}/{{else}}{{end}}{{ .Config.sort }}/{{ .Config.type }}/1/"
- path: "{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}sort-search{{else}}cat/TV{{end}}{{if or (.Query.Album) (.Query.Artist) }}/{{ or (.Query.Album) (.Query.Artist) }}{{else}}/{{ .Keywords }}{{end}}{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}/{{else}}{{end}}{{ .Config.sort }}/{{ .Config.type }}/{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}2{{else}}1{{end}}/"
- path: "{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}sort-search{{else}}cat/Music{{end}}{{if or (.Query.Album) (.Query.Artist) }}/{{ or (.Query.Album) (.Query.Artist) }}{{else}}/{{ .Keywords }}{{end}}{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}/{{else}}{{end}}{{ .Config.sort }}/{{ .Config.type }}/{{if or (.Query.Album) (.Query.Artist) (.Keywords) }}3{{else}}1{{end}}/"
keywordsfilters:
- name: replace # use this as a workaround till #893 is implemented
args: ["Greys Anatomy", "Grey's Anatomy"]
rows:
selector: tr:has(a[href^="/torrent/"])
fields:
title:
selector: td[class^="coll-1"] a[href^="/torrent/"]
filters:
- name: replace
args: ["Grey's Anatomy", "Greys Anatomy"]
- name: replace
args: ["\u000f", ""] # get rid of unwanted character
category:
optional: true
selector: td[class^="coll-1"] a[href^="/sub/"]
@@ -192,7 +212,7 @@
- name: dateparse
args: "Jan. 2 06"
date:
# # (today) 12:25am
# (today) 12:25am
optional: true
selector: td[class^="coll-date"]:contains(":")
filters:
@@ -205,6 +225,7 @@
leechers:
selector: td[class^="coll-3"]
downloadvolumefactor:
text: "0"
text: 0
uploadvolumefactor:
text: "1"
text: 1
# engine n/a

View File

@@ -82,6 +82,30 @@
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "id"
options:
"id": "created"
"seeders": "seeders"
"size": "size"
"name": "title"
- name: order
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: account-login.php
method: post
@@ -108,11 +132,15 @@
freeleech: 0
# 0 any 1 French 2 English 3 Multi 4-8 32-41
lang: 0
sort: "{{ .Config.sort}}"
order: "{{ .Config.order}}"
keywordsfilters:
- name: re_replace
args: ["^$", "%"] # replace empty search string with %
rows:
selector: table.ttable_headinner > tbody > tr[class^="t-row"]
fields:
category:
selector: a[href^="torrents.php?cat="]
@@ -140,15 +168,16 @@
size:
selector: td:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
date:
text: now
downloadvolumefactor:
case:
img[title="freeleech"]: "0"
"*": "1"
img[title="freeleech"]: 0
"*": 1
uploadvolumefactor:
case:
"*": "1"
"*": 1
# engine n/a

View File

@@ -33,6 +33,18 @@
modes:
search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: info
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
path: index.php?page=login&amp;returnto=index.php
method: form
@@ -53,14 +65,16 @@
paths:
- path: index.php
inputs:
$raw: "{{range .Categories}}filter_cat[{{.}}]=1&{{end}}"
search: "{{ .Query.Keywords }}"
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
search: "{{ .Keywords }}"
page: torrents
category: 0
3dformat: 0
active: 1
rows:
selector: table[cellspacing!="1"].lista > tbody > tr:has(a[href^="index.php?page=torrents&category="])
fields:
category:
selector: a[href^="index.php?page=torrents&category="]
@@ -93,8 +107,9 @@
args: "02/01/2006"
downloadvolumefactor:
case:
img[title^="You get 50% off download count on this torrent"]: "0.5"
"*": "1"
img[title^="You get 50% off download count on this torrent"]: 0.5
"*": 1
uploadvolumefactor:
case:
"*": "1"
"*": 1
# xbtit

View File

@@ -11,132 +11,144 @@
caps:
categorymappings:
- {id: 65, cat: Books, desc: "Books"}
- {id: 27, cat: Console/NDS, desc: "Games/Nintendo-DS"}
- {id: 28, cat: Console/Other, desc: "Games/Switch"}
- {id: 42, cat: PC/Phone-Android, desc: "Mobile/Android"}
- {id: 44, cat: Movies/UHD, desc: "Movies/4K"}
- {id: 13, cat: Movies/BluRay, desc: "Movies/Bluray"}
- {id: 12, cat: Movies/DVD, desc: "Movies/DVD-R"}
- {id: 11, cat: Movies/UHD, desc: "Movies/Encodes 2160p"}
- {id: 12, cat: Movies/UHD, desc: "Movies/Remux 2160p"}
- {id: 13, cat: Movies/HD, desc: "Movies/Remux 1080p"}
- {id: 14, cat: Movies, desc: "Movies/Packs"}
- {id: 67, cat: Movies/HD, desc: "Movies/x264"}
- {id: 55, cat: Movies/HD, desc: "Movies/X265"}
- {id: 45, cat: Movies, desc: "Movies/Remux"}
- {id: 62, cat: Audio, desc: "Music/Audio"}
- {id: 16, cat: Movies/HD, desc: "Movies/x264"}
- {id: 17, cat: Movies/HD, desc: "Movies/X265"}
- {id: 33, cat: Audio, desc: "Music/Audio"}
- {id: 32, cat: Audio, desc: "Music/Packs"}
- {id: 6, cat: TV, desc: "TV/Packs"}
- {id: 3, cat: TV/HD, desc: "TV/x264"}
- {id: 4, cat: TV/HD, desc: "TV/x265"}
- {id: 8, cat: TV/SD, desc: "TV/Xvid"}
- {id: 63, cat: PC/0day, desc: "Windows/Applications"}
- {id: 43, cat: PC/0day, desc: "Appz/Windows"}
- {id: 42, cat: PC/Phone-Android, desc: "Appz/Android"}
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: sort
type: select
label: Sort requested from site
default: "4"
options:
"4": "created"
"7": "seeders"
"5": "size"
"1": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: login.php
method: form
form: form[action="takelogin.php"]
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
returnto: "/browse.php"
submitme: "X"
error:
- selector: h2:contains("Login failed!")
message:
selector: table tr td.colhead2
- selector: div.callout:contains("Login failed!")
test:
path: /
selector: :has(a[href$="/logout.php?hash_please="])
selector: a[href*="/logout.php?hash_please="]
search:
paths:
# ttps://www.3evils.com/browse.php?search=black+lightning+s02e11&searchin=title&incldead=1
# https://www.3evils.com/browse.php?c3=1&c4=1&search=&searchin=title&incldead=0
# https://www.3evils.com/browse.php?search=black+lightning+s02e11&searchin=title&incldead=1
# https://www.3evils.com/browse.php?c3=1&c4=1&search=&searchin=title&incldead=1
- path: browse.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{.Keywords}}"
searchin: "title"
# title descr genre all
searchin: title
# 0 active 1 incldead 2 onlydead
incldead: 1
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table.table-bordered tr:has(a[href^="browse.php?cat="])
selector: table.responsive-card-table tr:has(td[data-label])
filters:
- name: andmatch
fields:
category:
selector: td[data-label="Type"] a
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="] b
title:
# if this is available it is the full length title, as the one above can be abbreviated with ...
optional: true
selector: a[href^="details.php?id="][onmouseover]
selector: td[data-label="Name"] a[onmouseover]
attribute: onmouseover
filters:
- name: regexp
args: "Tip\\('<b>(.*?)</b>"
details:
selector: a[href^="details.php?id="]
selector: td[data-label="Name"] a
attribute: href
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
download:
selector: a[href^="details.php?id="]
selector: td[data-label="Download"] a
attribute: href
filters:
- name: replace
args: ["details.php?id=", "download.php?torrent="]
banner:
selector: a[href^="details.php?id="][onmouseover]
selector: td[data-label="Name"] a[onmouseover]
attribute: onmouseover
optional: true
filters:
# onmouseover="Tip('<b>blahblah /><img src=\'/imdb/images/0090293.jpg\' blahblah />');"
# onmouseover="Tip('<b>blahblah /><img src=\'img.php/tvmaze/80.jpg\' blahblah />');"
# <img src=\'./pic/noposter.png\'
- name: regexp
args: "/imdb/(.*?).jpg"
- name: prepend
args: "/imdb/"
- name: append
args: ".jpg"
args: "src=\\\\\'(.+?)\\\\\'"
- name: replace
args: ["./pic/noposter.png", ""]
size:
selector: td:nth-last-child(4)
selector: td[data-label="Size"]
files:
selector: a[href^="filelist.php?id="]
selector: td[data-label="Files"]
grabs:
selector: a[href^="snatches.php?id="]
selector: td[data-label="Snatched"]
filters:
- name: regexp
args: "(\\d+)"
args: (\d+)
# 2 flavours of dates
date:
# Today<br /> 10:20 AM
# Yesterday<br /> 08:03 PM
# Today<br> 10:20 AM
# Yesterday<br> 08:03 PM
optional: true
selector: td:nth-last-child(5):contains("day")
selector: td[data-label="Added"]:contains("day")
date:
# Feb 14 2019<br /> 10:20 AM
# Feb 14 2019<br> 10:20 AM
optional: true
selector: td:nth-last-child(5):not(:contains("day"))
selector: td[data-label="Added"]:not(:contains("day"))
filters:
- name: dateparse
args: "Jan 2 2006 03:04 pm"
args: "Jan 2 2006 03:04 PM"
seeders:
text: "0"
seeders:
optional: true
selector: a[href$="#seeders"]
selector: td[data-label="Seeders"]
leechers:
text: "0"
leechers:
optional: true
selector: a[href$="#leechers"]
selector: td[data-label="Leechers"]
downloadvolumefactor:
case:
"b:contains(\"[FREE]\")": "0"
"*": "1"
img[src="./pic/freedownload.gif"]: 0
"*": 1
uploadvolumefactor:
case:
"*": "1"
"*": 1
# U-232 V5

View File

@@ -26,6 +26,7 @@
- {id: 2, cat: TV/SD, "TV/SD MP4/mkv"}
- {id: 31, cat: TV/SD, "TV/XviD"}
- {id: 18, cat: PC/Games, "Games/PC"}
- {id: 44, cat: Audio, "Music/Pack"}
- {id: 12, cat: Audio/Lossless, "Music/FLAC"}
- {id: 15, cat: Audio/MP3, "Music/MP3"}
- {id: 37, cat: Audio, "Radio"}
@@ -38,6 +39,29 @@
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "time"
options:
"time": "created"
"seeders": "seeders"
"size": "size"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: login.php
method: form
@@ -57,24 +81,26 @@
- path: torrents.php
inputs:
# https://4thd.xyz/torrents.php?order_by=time&order_way=desc&filter_freeleech=1&title=twilight+zone&search_type=1&taglist=&tags_type=0
$raw: "{{range .Categories}}filter_cat[{{.}}]=1&{{end}}"
order_by: time
order_way: desc
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
order_by: "{{ .Config.sort }}"
order_way: "{{ .Config.type }}"
# 0 all 1 onlyfree
filter_freeleech: 0
title: "{{ .Keywords }}"
search_type: 1
taglist: ""
tags_type: 0
rows:
selector: table#torrent_table > tbody > tr.torrent
fields:
category:
selector: td.cats_col div a
attribute: href
filters:
- name: regexp
args: "\\[(\\d+)\\]"
args: \[(\d+)\]
title:
selector: a[href^="torrents.php?id="]
details:
@@ -97,6 +123,9 @@
selector: td:nth-child(3)
date:
selector: td:nth-child(5)
filters:
- name: replace
args: ["Never", "99 years ago"]
size:
selector: td:nth-child(6)
grabs:
@@ -112,3 +141,4 @@
uploadvolumefactor:
case:
"*": 1
# Engine n/a

View File

@@ -0,0 +1,158 @@
---
site: 52pt
name: 52PT
description: "52PT is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
language: zh-cn
type: private
encoding: UTF-8
links:
- https://52pt.site/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
- {id: 402, cat: TV, desc: "TV Series/剧集"}
- {id: 403, cat: TV, desc: "TV Shows/综艺"}
- {id: 406, cat: Audio/Video, desc: "MusicVideo/音乐MV"}
- {id: 407, cat: TV/Sport, desc: "Sports/运体"}
- {id: 409, cat: Other, desc: "Misc/其他"}
- {id: 410, cat: Other, desc: "Opera/戏曲 曲艺"}
- {id: 408, cat: Audio, desc: "HQ Audio/无损音乐"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "4"
options:
"4": "created"
"7": "seeders"
"5": "size"
"1": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: td.embedded:has(h2:contains("失败"))
- selector: td.embedded:has(h2:contains("登录失败"))
test:
path: index.php
selector: a[href*="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
# 0 incldead 1 active 2 dead
incldead: 0
# 0 all 1 normal 2 free 3 2x 4 2xfree 5 50% 6 2x50% 7 30%
spstate: 0
# 0 title 1 descr 3 uploaded 4 imdburl
search_area: "{{ if .Query.IMDBID }}4{{else}}0{{end}}"
# 0 AND 1 OR 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
title:
selector: a[href^="details.php?id="]
title:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
imdb:
optional: true
selector: div.imdb_100 > a
attribute: href
date:
# time type: time elapsed (default)
selector: td:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00"
- name: dateparse
args: "2006-01-02 15:04:05 -07:00"
date:
# time added
selector: td:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00"
- name: dateparse
args: "2006-01-0215:04:05 -07:00"
size:
selector: td:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
description:
selector: td:nth-child(2)
remove: a, img
# NexusPHP Standard v1.5 Beta 4

View File

@@ -0,0 +1,77 @@
---
site: 7torrents
name: 7torrents
description: "7torrents is a Public BitTorrent DHT search engine."
language: en-us
type: public
encoding: UTF-8
links:
- https://www.7torrents.cc/
caps:
categories:
1: Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: info
type: info
default: 7torrents does not use categories. In your software Indexer settings, set the category to 100001.
- name: sort
type: select
label: Sort requested from site
default: "created"
options:
"created": "created"
"length": "size"
"seeders": "seeders"
search:
# https://www.7torrents.cc/search?query=2020&sort=created
paths:
- path: search
inputs:
query: "{{ if .Keywords }}{{ .Keywords }}{{else}}2020{{end}}"
sort: "{{ .Config.sort }}"
rows:
selector: div.media
fields:
category:
text: 1
title:
selector: div.media
attribute: data-name
details:
selector: div.media h5 a
attribute: href
download:
selector: div.media-right a[href*="/torrent/"]
attribute: href
magnet:
selector: a[href^="magnet:?xt="]
attribute: href
date:
selector: div.media
attribute: data-added
filters:
- name: timeago
size:
selector: div.media
attribute: data-size
seeders:
selector: div.media
attribute: data-seeders
leechers:
selector: div.media
attribute: data-leechers
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -107,6 +107,22 @@
- name: pass
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "added"
options:
"added": "created"
"seeds": "seeders"
"size": "size"
"name": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: signin.php
@@ -123,15 +139,18 @@
search:
path: browse.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{if .Query.IMDBID}}{{.Query.IMDBID}}{{else}}{{.Keywords}}{{end}}"
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
# 0=title 1=descr 2=nfo 3=all
search_where: "{{if .Query.IMDBID}}3{{else}}0{{end}}"
search_where: "{{ if .Query.IMDBID }}3{{else}}0{{end}}"
# 0=active 1=all 2=dead 4=upload 5=doubleup 6=halfdown 7=highlight =request
status: 1
orderby: "{{ .Config.sort }}"
sort: "{{ .Config.type }}"
rows:
selector: table.tableinborder > tbody > tr:has(a[href^="details.php"])
fields:
title:
selector: a[href^="details.php"]
@@ -199,11 +218,12 @@
args: "02.01.2006 15:04:05"
downloadvolumefactor:
case:
img[alt="OU"]: "0"
img[alt="D/2"]: "0.5"
img[alt="D / 2"]: "0.5"
"*": "1"
img[alt="OU"]: 0
img[alt="D/2"]: 0.5
img[alt="D / 2"]: 0.5
"*": 1
uploadvolumefactor:
case:
img[alt="2xU"]: "2"
"*": "1"
img[alt="2xU"]: 2
"*": 1
# engine n/a

View File

@@ -8,13 +8,15 @@
encoding: UTF-8
links:
- https://acg.rip/
certificates:
- bfd88de41aeeda5c9d98d5e081e8c4ec40204b6b # expired 4 jan 20
caps:
categories:
1: TV
modes:
tv-search: [q, season, ep]
search: [q]
tv-search: [q, season, ep]
settings: []
@@ -22,9 +24,11 @@
paths:
- path: /
inputs:
term: "{{ .Query.Keywords }}"
term: "{{ .Keywords }}"
rows:
selector: tbody tr
fields:
title:
selector: td.title > span.title a
@@ -50,6 +54,7 @@
filters:
- name: fuzzytime
downloadvolumefactor:
text: "0"
text: 0
uploadvolumefactor:
text: "1"
text: 1
# engine n/a

View File

@@ -38,14 +38,17 @@
download:
selector: a[href^="magnet:?xt="]
attribute: href
search:
paths:
# https://www.acgsou.com/1.html
# https://www.acgsou.com/search.php?keyword=test
- path: "{{ if .Keywords }}search.php?keyword={{ .Keywords }}{{else}}1.html{{end}}"
rows:
selector: table tbody tr[class^="alt"]
selector: table tbody tr[class^="alt"]:has(td:nth-child(3) a)
fields:
date:
selector: td:nth-child(1):contains("昨天")
@@ -86,6 +89,7 @@
leechers:
text: 1
downloadvolumefactor:
text: "0"
text: 0
uploadvolumefactor:
text: "1"
text: 1
# BTMaster 2.1.1

View File

@@ -53,6 +53,30 @@
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "0"
options:
"0": "created"
"6": "seeders"
"4": "size"
"1": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: takelogin.php
method: post
@@ -78,11 +102,17 @@
paths:
- path: browse.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
incldead: 1
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table tbody#torrent_background tr:has(a.index)
filters:
- name: andmatch
fields:
title:
selector: a.index
@@ -134,9 +164,10 @@
args: "2006-01-02 15:04:05"
downloadvolumefactor:
case:
span.icon_gift: "0"
"*": "1"
span.icon_gift: 0
"*": 1
uploadvolumefactor:
case:
span.icon_upload: "2"
"*": "1"
span.icon_upload: 2
"*": 1
# XBT v3

View File

@@ -40,7 +40,6 @@
- {id: 24, cat: PC/Phone-Other, desc: "Mobile-GSM"}
- {id: 23, cat: TV/Sport, desc: "Sport"}
modes:
search: [q]
tv-search: [q, season, ep]
@@ -53,6 +52,22 @@
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "3"
options:
"3": "created"
"5": "seeders"
"4": "size"
"2": "title"
- name: type
type: select
label: Order requested from site
default: "2"
options:
"2": "desc"
"1": "asc"
login:
path: index.php?page=login
@@ -65,20 +80,24 @@
- selector: td.lista span[style="color:#FF0000;"]
test:
path: /
selector: :has(a[href="logout.php"])
selector: a[href="logout.php"]
search:
paths:
# http://alein.org/index.php?page=torrents&category=1%3B15%3B41%3B14%3B48%3B39%3B20%3B16%3B5%3B21%3B22%3B11&search=venom&active=1
# http://alein.org/index.php?page=torrents&category=1;15;41;14;48;39;20;16;5;21;22;11&search=venom&active=1
- path: index.php
inputs:
page: "torrents"
category: "{{range .Categories}}{{.}};{{end}}"
search: "{{if .Keywords }}{{.Keywords}}{{else}}{{end}}"
active: "1"
page: torrents
category: "{{ range .Categories }}{{.}};{{end}}"
search: "{{ .Keywords }}"
# 0 all 1 active only 2 dead only
active: 0
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"
rows:
selector: tr.trclass:not(:has(td.lista-cat-rec))
fields:
title:
selector: td a[href*="id="]
@@ -100,7 +119,7 @@
- name: prepend
args: "download.php?id="
- name: append
args: "&f={{.Result.title}}.torrent"
args: "&f={{ .Result.title }}.torrent"
banner:
selector: td a[href*="id="]
attribute: onmouseover
@@ -121,6 +140,7 @@
- name: dateparse
args: "02/01/2006"
downloadvolumefactor:
text: "0"
text: 0
uploadvolumefactor:
text: "1"
text: 1
# xbtit 2.3

View File

@@ -6,7 +6,11 @@
type: semi-private
encoding: UTF-8
links:
- https://alexfilm.org/
legacylinks:
- https://alexfilm.cc/
certificates:
- 9200e15406272061df1f609a0f40d76282f54295 # expired 30 nov '19
caps:
categorymappings:
@@ -27,6 +31,22 @@
type: checkbox
label: Strip Russian Letters
default: false
- name: sort
type: select
label: Sort requested from site
default: "1"
options:
"1": "created"
"10": "seeders"
"7": "size"
"2": "title"
- name: type
type: select
label: Order requested from site
default: "1"
options:
"2": "desc"
"1": "asc"
login:
path: login.php
@@ -62,9 +82,9 @@
prev_ds: 0
prev_tor_type: 0
# sort by 1=registered 2=topicTitle 4=completed 10=seed 11=leech 12=up 13=down 5=replies 6=views 7=size 8=lastPost 9=seedLastSeen
o: 1
o: "{{ .Config.sort }}"
# 1=asc 2=desc
s: 2
s: "{{ .Config.type }}"
# show category
dc: 0
# show forum
@@ -87,6 +107,7 @@
rows:
selector: tr[id^="tor_"]
fields:
title:
selector: td a.tLink
@@ -106,7 +127,7 @@
- name: re_replace
args: ["(.*)[CСcс]езон\\s+(\\d+)(.*)", "$1 S$2 rus $3"]
- name: re_replace
args: ["(\\([А-Яа-я\\W]+\\))|(^[А-Яа-я\\W\\d]+\\/ )|([а-яА-Я \\-]+,+)|([а-яА-Я]+)", "{{ if .Config.striprussian }}{{ else }}$1$2$3$4{{ end }}"]
args: ["(\\([А-Яа-яЁё\\W]+\\))|(^[А-Яа-яЁё\\W\\d]+\\/ )|([а-яА-ЯЁё \\-]+,+)|([а-яА-ЯЁё]+)", "{{ if .Config.striprussian }}{{ else }}$1$2$3$4{{ end }}"]
details:
selector: td a.tLink
attribute: href
@@ -127,9 +148,10 @@
selector: td:nth-child(6) span:nth-last-child(1)
downloadvolumefactor:
case:
img[src="./styles/images/tor_gold.gif"]: "0"
img[src="./styles/images/tor_silver.gif"]: "0.5"
"*": "1"
img[src="./styles/images/tor_gold.gif"]: 0
img[src="./styles/images/tor_silver.gif"]: 0.5
"*": 1
uploadvolumefactor:
case:
"*": "1"
"*": 1
# engine n/a

View File

@@ -21,96 +21,92 @@
type: info
label: "Search results"
default: "Set <b>Exibição De Torrents</b> to <b>Lista</b> in your <b>Minhas Configurações</b>.<br />Using <b>Capas</b> is not supported and will return 0 results."
- name: sort
type: select
label: Sort requested from site
default: "id"
options:
"id": "created"
"seeders": "seeders"
"size": "size"
"name": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
caps:
categorymappings:
- {id: 107, cat: XXX, desc: "Adultos: Gay"}
- {id: 75, cat: XXX, desc: "Adultos: Hentai"}
- {id: 108, cat: XXX, desc: "Adultos: Transex/Female"}
- {id: 74, cat: XXX, desc: "Adultos: XXX"}
- {id: 75, cat: XXX, desc: "Adultos: Hentai"}
- {id: 69, cat: TV/Anime, desc: "Anime: Anime"}
- {id: 118, cat: TV/Anime, desc: "Anime: Séries"}
- {id: 116, cat: TV/Anime, desc: "Anime: Filmes"}
- {id: 21, cat: PC/0day, desc: "Aplicativos: Windows"}
- {id: 22, cat: PC/Mac, desc: "Aplicativos: Mac"}
- {id: 118, cat: TV/Anime, desc: "Anime: Séries"}
- {id: 23, cat: PC/Phone-Android, desc: "Aplicativos: Android"}
- {id: 25, cat: PC, desc: "Aplicativos: Linux"}
- {id: 26, cat: PC/Phone-IOS, desc: "Aplicativos: iPhone"}
- {id: 27, cat: PC/Phone-IOS, desc: "Aplicativos: iPad"}
- {id: 26, cat: PC/Phone-IOS, desc: "Aplicativos: iPhone"}
- {id: 28, cat: PC/Phone-IOS, desc: "Aplicativos: iPod"}
- {id: 71, cat: Books, desc: "Apostila: Cursos"}
- {id: 25, cat: PC, desc: "Aplicativos: Linux"}
- {id: 22, cat: PC/Mac, desc: "Aplicativos: Mac"}
- {id: 21, cat: PC/0day, desc: "Aplicativos: Windows"}
- {id: 72, cat: Books, desc: "Apostila: Apostila"}
- {id: 71, cat: Books, desc: "Apostila: Cursos"}
- {id: 121, cat: Audio/Audiobook, desc: "Ebook: Audio-book"}
- {id: 112, cat: Books, desc: "Ebook: HQs"}
- {id: 67, cat: Books, desc: "Ebook: Livros"}
- {id: 68, cat: Books, desc: "Ebook: Revistas"}
- {id: 112, cat: Books, desc: "Ebook: HQs"}
- {id: 119, cat: Movies, desc: "Filmes:"}
- {id: 70, cat: XXX, desc: "Fotos: XXX"}
- {id: 79, cat: Console/PS4, desc: "Jogos: Ps4"}
- {id: 57, cat: Console, desc: "Jogos: Android"}
- {id: 52, cat: Console, desc: "Jogos: Dreamcast"}
- {id: 109, cat: Console, desc: "Jogos: Emulação"}
- {id: 47, cat: PC/Games, desc: "Jogos: Pc"}
- {id: 61, cat: Console, desc: "Jogos: Emuladores e Roms"}
- {id: 48, cat: PC/Mac, desc: "Jogos: Mac"}
- {id: 58, cat: Console/NDS, desc: "Jogos: Nintendo DS"}
- {id: 110, cat: Console, desc: "Jogos: Nintendo Switch"}
- {id: 47, cat: PC/Games, desc: "Jogos: Pc"}
- {id: 49, cat: Console, desc: "Jogos: Ps1"}
- {id: 50, cat: Console, desc: "Jogos: Ps2"}
- {id: 51, cat: Console/PS3, desc: "Jogos: Ps3"}
- {id: 52, cat: Console, desc: "Jogos: Dreamcast"}
- {id: 79, cat: Console/PS4, desc: "Jogos: Ps4"}
- {id: 82, cat: Console/PSP, desc: "Jogos: PSP"}
- {id: 55, cat: Console/Wii, desc: "Jogos: Wii"}
- {id: 54, cat: Console/Xbox 360, desc: "Jogos: Xbox360"}
- {id: 56, cat: Console/Xbox, desc: "Jogos: Xbox"}
- {id: 55, cat: Console/Wii, desc: "Jogos: Wii"}
- {id: 58, cat: Console/NDS, desc: "Jogos: Nintendo DS"}
- {id: 110, cat: Console, desc: "Jogos: Nintendo Switch"}
- {id: 57, cat: Console, desc: "Jogos: Android"}
- {id: 82, cat: Console/PSP, desc: "Jogos: PSP"}
- {id: 78, cat: Console/Xbox One, desc: "Jogos: Xbox One"}
- {id: 29, cat: Audio, desc: "Musica: Axé"}
- {id: 31, cat: Audio, desc: "Musica: Funk"}
- {id: 32, cat: Audio, desc: "Musica: Pagode"}
- {id: 33, cat: Audio, desc: "Musica: Hip-Hop"}
- {id: 34, cat: Audio, desc: "Musica: Rap"}
- {id: 36, cat: Audio, desc: "Musica: Rock"}
- {id: 37, cat: Audio, desc: "Musica: Hard Rock"}
- {id: 38, cat: Audio, desc: "Musica: Blues"}
- {id: 39, cat: Audio, desc: "Musica: Dance"}
- {id: 40, cat: Audio, desc: "Musica: Discografia"}
- {id: 43, cat: Audio, desc: "Musica: Dubstep"}
- {id: 41, cat: Audio, desc: "Musica: Erudita"}
- {id: 42, cat: Audio, desc: "Musica: Forró"}
- {id: 43, cat: Audio, desc: "Musica: Dubstep"}
- {id: 46, cat: Audio, desc: "Musica: Sertanejo"}
- {id: 45, cat: Audio, desc: "Musica: Samba"}
- {id: 77, cat: Audio, desc: "Musica: Outros"}
- {id: 76, cat: Audio, desc: "Musica: Reggae"}
- {id: 83, cat: Audio, desc: "Musica: Gospel"}
- {id: 115, cat: Audio, desc: "Musica: POP"}
- {id: 114, cat: Audio, desc: "Musica: MPB"}
- {id: 31, cat: Audio, desc: "Musica: Funk"}
- {id: 84, cat: Audio, desc: "Musica: Game (OST)"}
- {id: 88, cat: TV, desc: "Series: Musical"}
- {id: 86, cat: TV, desc: "Series: Guerra"}
- {id: 105, cat: TV, desc: "Series: Biografia"}
- {id: 99, cat: TV/Sport, desc: "Series: Esportes"}
- {id: 103, cat: TV, desc: "Series: Ficção"}
- {id: 102, cat: TV, desc: "Series: Infantil"}
- {id: 89, cat: TV, desc: "Series: Nacionais"}
- {id: 100, cat: TV, desc: "Series: Policial"}
- {id: 98, cat: TV, desc: "Series: Religioso"}
- {id: 90, cat: TV, desc: "Series: Suspense"}
- {id: 91, cat: TV, desc: "Series: Western"}
- {id: 92, cat: TV, desc: "Series: Animação"}
- {id: 93, cat: TV, desc: "Series: Clássicos"}
- {id: 94, cat: TV, desc: "Series: Comédia"}
- {id: 95, cat: TV/Documentary, desc: "Series: Documentário"}
- {id: 96, cat: TV, desc: "Series: Drama"}
- {id: 97, cat: TV, desc: "Series: Romance"}
- {id: 101, cat: TV, desc: "Series: Terror"}
- {id: 104, cat: TV, desc: "Series: Ação"}
- {id: 24, cat: TV, desc: "Series: Cartoon"}
- {id: 19, cat: TV/HD, desc: "Series: HD"}
- {id: 20, cat: TV, desc: "Series: Seriados"}
- {id: 87, cat: TV, desc: "Series: Aventura"}
- {id: 83, cat: Audio, desc: "Musica: Gospel"}
- {id: 37, cat: Audio, desc: "Musica: Hard Rock"}
- {id: 33, cat: Audio, desc: "Musica: Hip-Hop"}
- {id: 114, cat: Audio, desc: "Musica: MPB"}
- {id: 77, cat: Audio, desc: "Musica: Outros"}
- {id: 32, cat: Audio, desc: "Musica: Pagode"}
- {id: 115, cat: Audio, desc: "Musica: POP"}
- {id: 34, cat: Audio, desc: "Musica: Rap"}
- {id: 76, cat: Audio, desc: "Musica: Reggae"}
- {id: 36, cat: Audio, desc: "Musica: Rock"}
- {id: 45, cat: Audio, desc: "Musica: Samba"}
- {id: 46, cat: Audio, desc: "Musica: Sertanejo"}
- {id: 120, cat: TV, desc: "Series:"}
- {id: 65, cat: TV, desc: "Shows: Show"}
- {id: 63, cat: TV, desc: "Tv: Aberta"}
- {id: 62, cat: TV/Sport, desc: "Tv: Esportes"}
- {id: 64, cat: TV, desc: "Tv: Fechada"}
- {id: 73, cat: TV, desc: "Video Aula: Video Aula"}
- {id: 999, cat: Other, desc: "Error Cat not Found"}
modes:
search: [q]
@@ -123,7 +119,7 @@
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: "yes"
remember: yes
error:
- selector: div.alert-error
test:
@@ -152,13 +148,13 @@
inputs:
page: 4
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ re_replace .Keywords \"[\\s]+\" \"%\" }}"
incldead: 1
freeleech: 0
lang: 0
sort: "id"
order: "desc"
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
keywordsfilters:
- name: re_replace
args: ["([12][0-9]{3})", ""]
@@ -239,7 +235,7 @@
"[src$=\"/Axe.png\"]": "29"
"[src$=\"/Funk.png\"]": "31"
"[src$=\"/Pagode.png\"]": "32"
"[src$=\"/Hip_Hop.png\"]": "33"
"[src$=\"/HIP_HOP.png\"]": "33"
"[src$=\"/Rap.png\"]": "34"
"[src$=\"/Rock.png\"]": "36"
"[src$=\"/Hard-Rock.png\"]": "37"
@@ -257,29 +253,7 @@
"[src$=\"/POP.png\"]": "115"
"[src$=\"/MPB.png\"]": "114"
"[src$=\"/OST.png\"]": "84"
"[src$=\"/Musical.png\"]": "88"
"[src$=\"/Guerra.png\"]": "86"
"[src$=\"/Biografia.png\"]": "105"
"[src$=\"/Esportes.png\"]": "99"
"[src$=\"/Ficcao.png\"]": "103"
"[src$=\"/Infantil.png\"]": "102"
"[src$=\"/Nacionais.png\"]": "89"
"[src$=\"/Policial.png\"]": "100"
"[src$=\"/Religioso.png\"]": "98"
"[src$=\"/Suspense.png\"]": "90"
"[src$=\"/Western.png\"]": "91"
"[src$=\"/Animacao.png\"]": "92"
"[src$=\"/Classicos.png\"]": "93"
"[src$=\"/Comedia.png\"]": "94"
"[src$=\"/Documentario.png\"]": "95"
"[src$=\"/Drama.png\"]": "96"
"[src$=\"/Romance.png\"]": "97"
"[src$=\"/Terror.png\"]": "101"
"[src$=\"/Acao.png\"]": "104"
"[src$=\"/Cartoon.png\"]": "24"
"[src$=\"/Serieshd.png\"]": "19"
"[src$=\"/Seriado.png\"]": "20"
"[src$=\"/Aventura.png\"]": "87"
"[src$=\"/Seriados.png\"]": "120"
"[src$=\"/Shows.png\"]": "65"
"[src$=\"/Aberta.png\"]": "63"
"[src$=\"/Esporte.png\"]": "62"
@@ -287,6 +261,16 @@
"[src$=\"/Videoaula.png\"]": "73"
date:
text: now
date:
selector: p:contains("Lançado:")
optional: true
filters:
- name: regexp
args: "Lançado: (.+?)$"
- name: re_replace
args: [" (\\d:)", " 0$1"]
- name: dateparse
args: "02/01/06 15:04:05"
size:
selector: div.list-group-item-content p.m-0 span.badge-info
seeders:
@@ -297,8 +281,8 @@
selector: div.list-group-item-controls a:nth-child(3)
downloadvolumefactor:
case:
"span.badge-success:contains(\"FREE\")": "0"
"*": "1"
"span.badge-success:contains(\"FREE\")": 0
"*": 1
uploadvolumefactor:
case:
"*": "1"
"*": 1

View File

@@ -1,88 +0,0 @@
---
site: anidex
name: Anidex
description: "Anidex is a Public torrent tracker and indexer, primarily for English fansub groups of anime"
language: en-us
encoding: UTF-8
type: public
links:
- https://anidex.info/
caps:
categorymappings:
- {id: 1, cat: TV/Anime, desc: "Anime - Sub"}
- {id: 2, cat: TV/Anime, desc: "Anime - Raw"}
- {id: 3, cat: TV/Anime, desc: "Anime - Dub"}
- {id: 4, cat: TV/Anime, desc: "LA - Sub"}
- {id: 5, cat: TV/Anime, desc: "LA - Raw"}
- {id: 6, cat: TV/Anime, desc: "Light Novel"}
- {id: 7, cat: TV/Anime, desc: "Manga - TLed"}
- {id: 8, cat: TV/Anime, desc: "Manga - Raw"}
- {id: 9, cat: TV/Anime, desc: "♫ - Lossy"}
- {id: 10, cat: TV/Anime, desc: "♫ - Lossless"}
- {id: 11, cat: TV/Anime, desc: "♫ - Video"}
- {id: 12, cat: TV/Anime, desc: "Games"}
- {id: 13, cat: TV/Anime, desc: "Applications"}
- {id: 14, cat: TV/Anime, desc: "Pictures"}
- {id: 15, cat: TV/Anime, desc: "Adult Video"}
- {id: 16, cat: TV/Anime, desc: "Other"}
modes:
search: [q]
tv-search: [q, season, ep]
settings:
- name: lang-id
type: text
label: Language ID
- name: info
type: info
label: Language ID Note
default: "You can filter your searches using any of the following language ID (comma delimited):<br>19 :Arabic<br>22 :Bengali<br>14 :Bulgarian<br>21 :Chinese (Simplified)<br>24 :Czech<br>20 :Danish<br>5 :Dutch<br>1 :English<br>11 :Finnish<br>10 :French<br>8 :German<br>13 :Greek<br>9 :Hungarian<br>27 :Indonesian<br>6 :Italian<br>2 :Japanese<br>28 :Korean<br>31 :Malaysian<br>25 :Mongolian<br>30 :Persian<br>3 :Polish<br>16 :Portuguese (Brazil)<br>17 :Portuguese (Portugal)<br>23 :Romanian<br>7 :Russian<br>4 :Serbo-Croatian<br>29 :Spanish (LATAM)<br>15 :Spanish (Spain)<br>18 :Swedish<br>26 :Turkish<br>12 :Vietnamese"
search:
paths:
# https://anidex.info/?page=search&id=1,2,3&lang_id=5,1,10&group_id=0&q=rinshi
- path: "?page=search&id={{if .Categories}}{{range .Categories}}{{.}},{{end}}{{else}}0{{end}}{{if .Config.lang-id}}&lang_id={{.Config.lang-id}}{{else}}{{end}}&group_id=0&q={{if .Keywords}}{{.Keywords}}{{else}}{{end}}"
rows:
selector: div.table-responsive > table > tbody > tr
fields:
category:
selector: a[href^="/?id="]
attribute: href
filters:
- name: querystring
args: id
title:
selector: td:nth-child(3) > a.torrent > span.span-1440
filters:
- name: re_replace # remove anidb id from return string
args: ["(\\[[A-Z0-9]*\\])\\.", "."]
details:
selector: td:nth-child(3) > a.torrent
attribute: href
download:
selector: td:nth-child(5) > a
attribute: href
magnet:
selector: a[href^="magnet:?"]
attribute: href
size:
selector: td:nth-child(7)
date:
selector: td:nth-child(8)
attribute: title
filters:
- name: replace
args: ["UTC", "+00:00"]
- name: dateparse
args: "2006-01-02 15:04:05 -07:00"
seeders:
selector: td:nth-child(9)
leechers:
selector: td:nth-child(10)
grabs:
selector: td:nth-child(11)
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -36,8 +36,10 @@
search:
paths:
- path: "{{if .Keywords}}?s={{ .Keywords}}{{else}}{{end}}"
rows:
selector: table tbody tr:has(td.torrents_small_type_data1)
fields:
title:
selector: .torrents_small_info_data1 div
@@ -61,18 +63,19 @@
selector: .torrents_small_type_data1 img
attribute: src
case:
"[src=\"./styles/tracker/imageset/cat_raw_small.png\"]": "1"
"[src=\"./styles/tracker/imageset/cat_anime_small.png\"]": "2"
"[src=\"./styles/tracker/imageset/cat_hentai_small.png\"]": "3"
"[src=\"./styles/tracker/imageset/cat_drama_small.png\"]": "4"
"[src=\"./styles/tracker/imageset/cat_dvd_small.png\"]": "5"
"[src=\"./styles/tracker/imageset/cat_hgame2_small.png\"]": "6"
"[src=\"./styles/tracker/imageset/cat_manga_small.png\"]": "7"
"[src=\"./styles/tracker/imageset/cat_music_small.png\"]": "8"
"[src=\"./styles/tracker/imageset/cat_musicvid_small.png\"]": "9"
"[src=\"./styles/tracker/imageset/cat_noneng_small.png\"]": "10"
"[src=\"./styles/tracker/imageset/cat_other_small.png\"]": "11"
"[src=\"./styles/tracker/imageset/cat_raw_small.png\"]": 1
"[src=\"./styles/tracker/imageset/cat_anime_small.png\"]": 2
"[src=\"./styles/tracker/imageset/cat_hentai_small.png\"]": 3
"[src=\"./styles/tracker/imageset/cat_drama_small.png\"]": 4
"[src=\"./styles/tracker/imageset/cat_dvd_small.png\"]": 5
"[src=\"./styles/tracker/imageset/cat_hgame2_small.png\"]": 6
"[src=\"./styles/tracker/imageset/cat_manga_small.png\"]": 7
"[src=\"./styles/tracker/imageset/cat_music_small.png\"]": 8
"[src=\"./styles/tracker/imageset/cat_musicvid_small.png\"]": 9
"[src=\"./styles/tracker/imageset/cat_noneng_small.png\"]": 10
"[src=\"./styles/tracker/imageset/cat_other_small.png\"]": 11
downloadvolumefactor:
text: "0"
text: 0
uploadvolumefactor:
text: "1"
text: 1
# engine n/a

View File

@@ -1,106 +0,0 @@
---
site: aox
name: AOX
description: "AOX (Chippu) is a Private Torrent Tracker for ASIAN MOVIES / TV"
language: en-us
type: private
encoding: UTF-8
links:
- https://aox.to/
caps:
categorymappings:
- {id: 13, cat: Movies, desc: "Movie"}
- {id: 11, cat: TV, desc: "TV-Show"}
- {id: 5, cat: TV/Other, desc: "Variety Show"}
- {id: 24, cat: XXX, desc: "Adult"}
modes:
search: [q]
tv-search: [q, season, ep]
login:
path: index.php?page=login
method: post
inputs:
uid: "{{ .Config.username }}"
pwd: "{{ .Config.password }}"
error:
- selector: body[onLoad^="makeAlert('"]
message:
selector: body[onLoad^="makeAlert('"]
attribute: onLoad
filters:
- name: replace
args: ["makeAlert('Error' , '", ""]
- name: replace
args: ["');", ""]
test:
path: index.php
search:
paths:
- path: index.php
inputs:
search: "{{ .Query.Keywords }}"
page: "torrents"
category: "{{range .Categories}}{{.}};{{end}}"
options: "0"
active: "0"
rows:
selector: table.table.table-bordered > tbody > tr:has(a[href^="index.php?page=torrent-details&id="])
fields:
download:
selector: a[href^="download.php"]
attribute: href
title:
selector: a[title][href^="index.php?page=torrent-details&id="]
banner:
selector: img[src^="torrentimg/"]
attribute: src
category:
selector: a[href^="index.php?page=torrents&category="]
attribute: href
filters:
- name: querystring
args: category
details:
selector: a[title][href^="index.php?page=torrent-details&id="]
attribute: href
size:
selector: p:has(b:contains("Size:"))
remove: b
date:
selector: p:has(b:contains("Added:"))
remove: b
filters:
- name: replace
args: ["@ ", ""]
- name: append
args: " +01:00"
- name: dateparse
args: "01/02/2006 15:04:05 -07:00"
seeders:
selector: b:contains("Seeds:") + a
leechers:
selector: b:contains("Leechers:") + a
grabs:
selector: p:has(b:contains("Complete:"))
remove: b, a[href^="index.php?page=peers"]
filters:
- name: replace
args: ["---", "0"]
downloadvolumefactor:
case:
i.fa-star: "0"
i.fa-star-half-o: "0.5"
i.fa-star-o: "0.75"
"*": "1"
uploadvolumefactor:
case:
span[title="2x Upload Multiplier"]: "2"
"*": "1"
description:
selector: p:has(b:contains("Language:"))

View File

@@ -69,6 +69,34 @@
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "3"
options:
"3": "created"
"5": "seeders"
"4": "size"
"2": "title"
- name: type
type: select
label: Order requested from site
default: "2"
options:
"2": "desc"
"1": "asc"
- name: info
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
path: index.php?page=login
method: post
@@ -91,12 +119,13 @@
download:
before:
path: thanks.php
method: "post"
method: post
inputs:
infohash: "{{ .DownloadUri.Query.id }}"
thanks: "1"
thanks: 1
rndval: "1487013827343"
selector: a[href^="download.php?id="]
attribute: href
search:
paths:
@@ -110,12 +139,16 @@
args: ["(?i)\\bS0*(\\d+)E0*(\\d+)\\b", "$1 $2"]
inputs:
search: "{{if .Query.IMDBID}}{{ .Query.IMDBIDShort }}{{else}}{{ .Keywords }}{{end}}"
page: "torrents"
category: "{{range .Categories}}{{.}};{{end}}"
page: torrents
category: "{{ range .Categories }}{{.}};{{end}}"
options: "{{ if .Query.IMDBID }}4{{else}}0{{end}}"
active: "0"
active: 0
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"
rows:
selector: table > tbody > tr > td > table.lista > tbody > tr:has(a[href^="index.php?page=torrent-details&id="])
fields:
download:
selector: a[href^="index.php?page=downloadcheck&id="]
@@ -172,19 +205,20 @@
selector: td:nth-last-child(7)
downloadvolumefactor:
case:
img[alt="Gold 100% Free"]: "0"
img[alt="Silver 50% Free"]: "0.5"
img[alt="Bronze 25% Free"]: "0.75"
"*": "1"
img[alt="Gold 100% Free"]: 0
img[alt="Silver 50% Free"]: 0.5
img[alt="Bronze 25% Free"]: 0.75
"*": 1
uploadvolumefactor:
case:
img[alt="2x Upload Multiplier"]: "2"
img[alt="3x Upload Multiplier"]: "3"
img[alt="4x Upload Multiplier"]: "4"
img[alt="5x Upload Multiplier"]: "5"
img[alt="6x Upload Multiplier"]: "6"
img[alt="7x Upload Multiplier"]: "7"
img[alt="8x Upload Multiplier"]: "8"
img[alt="9x Upload Multiplier"]: "9"
img[alt="10x Upload Multiplier"]: "10"
"*": "1"
img[alt="2x Upload Multiplier"]: 2
img[alt="3x Upload Multiplier"]: 3
img[alt="4x Upload Multiplier"]: 4
img[alt="5x Upload Multiplier"]: 5
img[alt="6x Upload Multiplier"]: 6
img[alt="7x Upload Multiplier"]: 7
img[alt="8x Upload Multiplier"]: 8
img[alt="9x Upload Multiplier"]: 9
img[alt="10x Upload Multiplier"]: 10
"*": 1
# xbtitFM v1.16

View File

@@ -12,53 +12,54 @@
categorymappings:
- {id: "movies", cat: Movies, desc: "Movies"}
- {id: "arenabgtv", cat: Movies, desc: "Movies / ArenaBG.TV"}
- {id: "xvid", cat: Movies, desc: "Movies / XviD"}
- {id: "dvd-r", cat: Movies, desc: "Movies / DVD-R"}
- {id: "x264", cat: Movies, desc: "Movies / x264"}
- {id: "animemanga", cat: Movies, desc: "Movies / Anime &amp; Manga"}
- {id: "documentaries", cat: Movies, desc: "Movies / Documentaries"}
- {id: "blu-ray", cat: Movies, desc: "Movies / Blu-ray"}
- {id: "xvid", cat: Movies/SD, desc: "Movies / XviD"}
- {id: "dvd-r", cat: Movies/DVD, desc: "Movies / DVD-R"}
- {id: "x264", cat: Movies/HD, desc: "Movies / x264"}
- {id: "animemanga", cat: TV/Anime, desc: "Movies / Anime & Manga"}
- {id: "documentaries", cat: TV/Documentary, desc: "Movies / Documentaries"}
- {id: "blu-ray", cat: Movies/BluRay, desc: "Movies / Blu-ray"}
- {id: "boxset", cat: Movies, desc: "Movies / Boxset"}
- {id: "x264boxset", cat: Movies, desc: "Movies / x264 Boxset"}
- {id: "tvepisodeshd", cat: Movies, desc: "Movies / HDTV"}
- {id: "3d", cat: Movies, desc: "Movies / 3D"}
- {id: "movies-hd", cat: Movies, desc: "Movies / Movies HD"}
- {id: "x265", cat: Movies, desc: "Movies / x265"}
- {id: "x264boxset", cat: Movies/HD, desc: "Movies / x264 Boxset"}
- {id: "tvepisodeshd", cat: Movies/HD, desc: "Movies / HDTV"}
- {id: "3d", cat: Movies/3D, desc: "Movies / 3D"}
- {id: "movies-hd", cat: Movies/HD, desc: "Movies / Movies HD"}
- {id: "x265", cat: Movies/HD, desc: "Movies / x265"}
- {id: "4k", cat: Movies/UHD, desc: "Movies / 4K"}
- {id: "series", cat: TV, desc: "Series"}
- {id: "hdtv", cat: TV, desc: "Series / TV Episodes HD"}
- {id: "hdtv", cat: TV/HD, desc: "Series / TV Episodes HD"}
- {id: "tvepisodes", cat: TV, desc: "Series / TV Episodes"}
- {id: "tvboxset", cat: TV, desc: "Series / TV Boxset"}
- {id: "tvboxsethd", cat: TV, desc: "Series / TV Boxset HD"}
- {id: "tvboxsethd", cat: TV/HD, desc: "Series / TV Boxset HD"}
- {id: "music", cat: Audio, desc: "Music"}
- {id: "mp3", cat: Audio, desc: "Music / MP3"}
- {id: "music-video", cat: Audio, desc: "Music / Video"}
- {id: "flac", cat: Audio, desc: "Music / FLAC"}
- {id: "mp3", cat: Audio/MP3, desc: "Music / MP3"}
- {id: "music-video", cat: Audio/Video, desc: "Music / Video"}
- {id: "flac", cat: Audio/Lossless, desc: "Music / FLAC"}
- {id: "music-dvd", cat: Audio, desc: "Music / DVD"}
- {id: "music-ape", cat: Audio, desc: "Music / APE"}
- {id: "music-ape", cat: Audio/Lossless, desc: "Music / APE"}
- {id: "music-dts", cat: Audio, desc: "Music / DTS"}
- {id: "musicwavpack", cat: Audio, desc: "Music / WavePack"}
- {id: "musicost", cat: Audio, desc: "Music / OST"}
- {id: "games", cat: PC, desc: "Games"}
- {id: "games-iso", cat: PC, desc: "Games / PC ISO"}
- {id: "games", cat: PC/Games, desc: "Games"}
- {id: "games-iso", cat: PC/Games, desc: "Games / PC ISO"}
- {id: "pc-rip", cat: PC, desc: "Games / PC RIP"}
- {id: "ps2", cat: Console, desc: "Games / PS2"}
- {id: "psp", cat: Console, desc: "Games / PSP"}
- {id: "xbox", cat: Console, desc: "Games / XBOX"}
- {id: "xbox-360", cat: Console, desc: "Games / XBOX-360"}
- {id: "ps3", cat: Console, desc: "Games / PS3"}
- {id: "wii", cat: Console, desc: "Games / WII"}
- {id: "PS4", cat: Console, desc: "Games / PS4"}
- {id: "psp", cat: Console/PSP, desc: "Games / PSP"}
- {id: "xbox", cat: Console/Xbox, desc: "Games / XBOX"}
- {id: "xbox-360", cat: Console/Xbox 360, desc: "Games / XBOX-360"}
- {id: "ps3", cat: Console/PS3, desc: "Games / PS3"}
- {id: "wii", cat: Console/Wii, desc: "Games / WII"}
- {id: "PS4", cat: Console/PS4, desc: "Games / PS4"}
- {id: "software", cat: PC, desc: "Software"}
- {id: "pc-iso", cat: PC, desc: "Software / PC ISO"}
- {id: "pdasmartphone", cat: PC, desc: "Software / Smartphone"}
- {id: "pc-iso", cat: PC/ISO, desc: "Software / PC ISO"}
- {id: "pdasmartphone", cat: PC/Phone-Other, desc: "Software / Smartphone"}
- {id: "tutorial", cat: PC, desc: "Software / Tutorial"}
- {id: "android", cat: PC, desc: "Software / Android"}
- {id: "ios", cat: PC, desc: "Software / iOS"}
- {id: "misc", cat: Other, desc: "Misc"}
- {id: "android", cat: PC/Phone-Android, desc: "Software / Android"}
- {id: "ios", cat: PC/Phone-IOS, desc: "Software / iOS"}
- {id: "misc", cat: Other/Misc, desc: "Misc"}
- {id: "other", cat: Other, desc: "Misc / Other"}
- {id: "e-books", cat: Other, desc: "Misc / e-Books"}
- {id: "sports", cat: Other, desc: "Misc / Sports"}
- {id: "0-day", cat: Other, desc: "Misc / 0-Day"}
- {id: "e-books", cat: Books/Ebook, desc: "Misc / e-Books"}
- {id: "sports", cat: TV/Sport, desc: "Misc / Sports"}
- {id: "0-day", cat: PC/0day, desc: "Misc / 0-Day"}
- {id: "xxx", cat: XXX, desc: "XXX"}
- {id: "porn", cat: XXX, desc: "XXX / Porn"}
- {id: "xxx-hd", cat: XXX, desc: "XXX / XXX HD"}
@@ -101,6 +102,7 @@
download:
selector: a[href*="{{ .Config.downloadlink }}"]
attribute: href
search:
paths:
@@ -117,6 +119,7 @@
rows:
selector: tr:has(td.category)
fields:
title:
# use the second div for full title
@@ -173,6 +176,7 @@
- name: regexp
args: src=\\'([^\s\\]+)
downloadvolumefactor:
text: "0"
text: 0
uploadvolumefactor:
text: "1"
text: 1
# engine n/a

View File

@@ -22,22 +22,18 @@
- {id: 10, cat: TV, desc: "Kidz Boxset"}
- {id: 54, cat: Movies/SD, desc: "Movies SD"}
- {id: 55, cat: Movies/DVD, desc: "Movies DVDR"}
- {id: 13, cat: Movies/HD, desc: "Movies 720p"}
- {id: 14, cat: Movies/HD, desc: "Movies 1080p"}
- {id: 56, cat: Movies/HD, desc: "Movies x265"}
- {id: 14, cat: Movies/HD, desc: "Movies HD"}
- {id: 15, cat: Movies/UHD, desc: "Movies 4K"}
- {id: 16, cat: Movies, desc: "Movies Remux"}
- {id: 17, cat: Movies/BluRay, desc: "Movies Bluray Disc"}
- {id: 53, cat: Movies, desc: "Movies Boxset"}
- {id: 17, cat: Movies/BluRay, desc: "Movies BD"}
- {id: 73, cat: Movies, desc: "Movies Boxset"}
- {id: 51, cat: Movies, desc: "Movies No Nordic Subs"}
- {id: 52, cat: TV/SD, desc: "TV SD"}
- {id: 58, cat: TV/SD, desc: "TV DVDR"}
- {id: 18, cat: TV/HD, desc: "TV 720p"}
- {id: 19, cat: TV/HD, desc: "TV 1080p"}
- {id: 60, cat: TV/HD, desc: "TV Bluray Disc"}
- {id: 18, cat: TV/HD, desc: "TV HD"}
- {id: 19, cat: TV/UHD, desc: "TV 4K"}
- {id: 60, cat: TV/HD, desc: "TV BD"}
- {id: 20, cat: TV, desc: "TV Boxset"}
- {id: 50, cat: TV, desc: "TV No Nordic Subs"}
- {id: 59, cat: TV/UHD, desc: "TV 4K"}
- {id: 49, cat: Audio/Video, desc: "Music Video"}
- {id: 23, cat: Audio/MP3, desc: "Music MP3"}
- {id: 61, cat: Audio/MP3, desc: "Music MP3 Boxset"}
@@ -66,16 +62,32 @@
movie-search: [q, imdbid]
settings:
- name: info
type: info
label: "About the Username field"
default: "Enter your <b>Email address</b> in the username field."
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: info
type: info
label: "About the Username field"
default: "Enter your <b>Email address</b> in the username field."
- name: sort
type: select
label: Sort requested from site
default: "2"
options:
"2": "created"
"7": "seeders"
"5": "size"
"1": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: login.php
@@ -98,9 +110,9 @@
# https://asgrd.org/browse.php?sns=&sna=&spf=&sr=&sg=&sys=&sye=&srs=&sre=&si=tt2401090&ss=&incldead=0&only_free=0&sort=4&type=desc
- path: browse.php
inputs:
$raw: "{{range .Categories}}cats[]={{.}}&{{end}}"
$raw: "{{ range .Categories }}cats[]={{.}}&{{end}}"
sns: ""
sna: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
sna: "{{ if .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
spf: ""
sr: ""
sg: ""
@@ -114,12 +126,14 @@
incldead: 0
# 0 incl non-free 1 incl only-free
only_free: 0
sort: 4
type: desc
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table.table-striped > tbody > tr:has(a[href*="details.php?id="])
filters:
- name: andmatch
fields:
title:
selector: div.torrent-name
@@ -143,28 +157,27 @@
download:
selector: a[href*="download.php?torrent="]
attribute: href
files:
selector: td:nth-child(5)
date:
selector: td:nth-child(7)
selector: td:nth-child(2) > div > div:last-of-type
filters:
- name: dateparse
args: "2 Jan 2006 15:04:05"
files:
# remember #5754 advanced users have additional last TD so dont go using nth-last-child ;-)
selector: td:nth-child(5)
size:
selector: td:nth-child(8)
selector: td:nth-child(7)
grabs:
selector: td:nth-child(9)
filters:
- name: regexp
args: (\d+)
selector: td:nth-child(8)
seeders:
selector: td:nth-child(11)
selector: td:nth-child(9)
leechers:
selector: td:nth-child(12)
selector: td:nth-child(10)
downloadvolumefactor:
case:
img[src="./images/gold.png"]: "0"
"*": "1"
img[src="./images/gold.png"]: 0
"*": 1
uploadvolumefactor:
case:
"*": "1"
"*": 1
# Midgaard

View File

@@ -19,21 +19,47 @@
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "created_at"
options:
"created_at": "created"
"seeders": "seeders"
"size": "size"
"name": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: login
method: form
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: 1
remember: on
error:
- selector: div.has-error
- selector: script[nonce]:contains("Error")
message:
selector: script[nonce]:contains("Error")
test:
path: torrents
path: /
selector: a[href$="/logout"]
ratio:
path: torrents
path: /
selector: li:has(i.fa-sync-alt)
filters:
- name: regexp
@@ -41,24 +67,28 @@
download:
selector: a[href*="/download/"]
attribute: href
search:
paths:
- path: filterTorrents
inputs:
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
$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"
sorting: "{{ .Config.sort }}"
sort: "{{ .Config.sort }}"
direction: "{{ .Config.type }}"
qty: 100
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/categories/"]
@@ -81,17 +111,20 @@
filters:
- name: replace
args: ["https://via.placeholder.com/600x900", ""]
comments:
selector: a[href*="#comments"]
attribute: href
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\.]+)
args: (\d+)
imdb:
optional: true
selector: a[href*="www.imdb.com/title/tt"]
@@ -99,42 +132,51 @@
date:
selector: time
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portoguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese
- name: re_replace
args: ["(önce|tagasi|geleden|fa|temu|siden|atrás|nazpět|назад|acum|hace|il y a|vor|преди)", "ago"]
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前)", " ago"]
- name: re_replace
args: ["(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut)", "minute"]
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten)", "minutes"]
- name: re_replace
args: ["(dakika|minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten)", "minutes"]
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟)", " minute"]
- name: re_replace
args: ["(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur)", "hour"]
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden)", "hours"]
- name: re_replace
args: ["(saat|tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden)", "hours"]
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时)", " hour"]
- name: re_replace
args: ["(gün|päev|dag|giorno|dzień|dia|den|день|zi|día|jour|Tag|ден)", "day"]
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen)", "days"]
- name: re_replace
args: ["(gün|päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen)", "days"]
args: ["(?i)(gün|päev|dag|giorno|dzień|dia|den|день|zi|día|jour|Tag|ден|天)", " day"]
- name: re_replace
args: ["(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица)", "week"]
args: ["(?i)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
- name: re_replace
args: ["(hafta|nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周)", " week"]
- name: re_replace
args: [" (ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
args: ["(?i) (ay)", "month"]
- name: re_replace
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
downloadvolumefactor:
case:
"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"
i[class*="fa-id-badge text-orange"]: 0 # 24 Hour FreeLeech From BON Store
i[class*="fa-trophy text-purple"]: 0 # Special FreeLeech For Certain User Groups
i[class*="fa-star text-bold"]: 0 # Freeleech From Token
i[class*="fa-coins text-bold"]: 0 # Freeleech From Token
i[class*="fa-globe text-blue"]: 0 # Global Freeleech
i[class*="fa-star text-gold"]: 0 # Freeleech
i[class*="fa-certificate text-pink"]: 0 # Featured Torrent
"*": 1
uploadvolumefactor:
case:
"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 1.9.2
i[class*="fa-gem text-green"]: 2 # Single Torrent Double Upload
i[class*="fa-globe text-green"]: 2 # Global Double Upload
i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
"*": 1
# UNIT3D 1.9.3

View File

@@ -1,112 +0,0 @@
---
site: asiandvdclub
name: AsianDVDClub
description: "AsianDVDClub is an ASIAN Private Torrent Tracker for HD MOVIES / TV"
language: en-us
type: private
encoding: UTF-8
links:
- https://asiandvdclub.org/
caps:
categorymappings:
- {id: 19, cat: TV/Anime, desc: "Anime"}
- {id: 12, cat: Movies/Foreign, desc: "China"}
- {id: 15, cat: Movies/Foreign, desc: "Hong Kong"}
- {id: 27, cat: Movies/Foreign, desc: "India"}
- {id: 13, cat: Movies/Foreign, desc: "Japan"}
- {id: 14, cat: Movies/Foreign, desc: "Korea"}
- {id: 20, cat: Movies/Foreign, desc: "Music DVDs"}
- {id: 18, cat: Movies/Foreign, desc: "Other Asian"}
- {id: 25, cat: Movies/Foreign, desc: "Patches"}
- {id: 24, cat: Movies/Foreign, desc: "Philippines"}
- {id: 23, cat: Movies/Foreign, desc: "Pinku"}
- {id: 21, cat: Audio, desc: "Soundtracks"}
- {id: 26, cat: Movies/Foreign, desc: "Taiwan"}
- {id: 17, cat: Movies/Foreign, desc: "Thailand"}
- {id: 22, cat: TV, desc: "TV Series"}
- {id: 16, cat: Movies/Foreign, desc: "Viet Nam"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
apple: "evil"
error:
- selector: td.embedded:has(h2:contains("failed"))
test:
path: browse.php
search:
paths:
- path: browse.php
keywordsfilters:
- name: replace
args: ["-", " "]
- name: replace
args: ["(", " "]
- name: replace
args: [")", " "]
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
incldead: "1"
rows:
selector: table.torrenttable > tbody > tr
filters:
- name: andmatch
fields:
download:
selector: a[href^="/details.php?id="]
attribute: href
filters:
- name: replace
args: ["details.php", "download.php"]
title:
selector: td.torrentname > a
details:
selector: a[href^="/details.php?id="]
attribute: href
category:
selector: td.cat_pic > a
attribute: href
filters:
- name: regexp
args: c(\d+)=1
seeders:
selector: td.seeders
filters:
- name: replace
args: ["-\xA0-\xA0-", "0"]
leechers:
selector: td.leechers
filters:
- name: replace
args: ["-\xA0-\xA0-", "0"]
grabs:
selector: td.dls
filters:
- name: replace
args: ["-\xA0-\xA0-", "0"]
date:
selector: td.time
filters:
- name: append
args: " ago"
size:
selector: td.size
downloadvolumefactor:
case:
img[title="Free to download"]: "0"
img[title="Download counts 50%"]: "0"
"*": "1"
uploadvolumefactor:
case:
"*": "1"

View File

@@ -1,11 +1,10 @@
---
site: audiobookbay
name: AudioBookBay
description: "AudioBook Bay (ABB) is a semi-private Torrent Tracker for AUDIOBOOKS"
description: "AudioBook Bay (ABB) is a public Torrent Tracker for AUDIOBOOKS"
language: en-us
type: semi-private
type: public
encoding: UTF-8
followredirect: true
links:
- http://audiobookbay.nl/
legacylinks:
@@ -75,41 +74,30 @@
modes:
search: [q]
login:
path: https://audiobookbay.nl/member/login.php
form: form[action$="/member/login.php"]
method: post
form: form
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: div.warning
test:
path: http://audiobookbay.nl/member/users/
selector: a[href="/member/logout"]
settings: []
download:
method: get
before:
path: https://audiobookbay.nl/member/login.php
method: "post"
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
selector: td:contains("Info Hash:") ~ td
filters:
- name: prepend
args: "magnet:?xt=urn:btih:"
- name: append
args: "&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=udp%3A%2F%2Fopen.demonii.si%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce&tr=udp%3A%2F%2Ftracker.pirateparty.gr%3A6969%2Fannounce&tr=udp%3A%2F%2Fipv4.tracker.harry.lu%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.cyberia.is%3A6969%2Fannounce&tr=udp%3A%2F%2F9.rarbg.to%3A2710%2Fannounce&tr=udp%3A%2F%2Fdenis.stalker.upeer.me%3A6969%2Fannounce"
search:
paths:
# with just 7 results per page, try to grab up to 35 results
# http://audiobookbay.nl/?s=teeth
# http://audiobookbay.nl/page/2/?s=teeth
- path: "{{if .Keywords}}/?s={{ .Keywords}}{{else}}/{{end}}"
- path: "{{if .Keywords}}/page/2/?s={{ .Keywords}}{{else}}{{end}}"
- path: "{{if .Keywords}}/page/3/?s={{ .Keywords}}{{else}}{{end}}"
- path: "{{if .Keywords}}/page/4/?s={{ .Keywords}}{{else}}{{end}}"
- path: "{{if .Keywords}}/page/5/?s={{ .Keywords}}{{else}}{{end}}"
- path: "{{ if .Keywords }}/?s={{ .Keywords }}{{else}}/{{end}}"
- path: "{{ if .Keywords }}/page/2/?s={{ .Keywords }}{{else}}{{end}}"
- path: "{{ if .Keywords }}/page/3/?s={{ .Keywords }}{{else}}{{end}}"
- path: "{{ if .Keywords }}/page/4/?s={{ .Keywords }}{{else}}{{end}}"
- path: "{{ if .Keywords }}/page/5/?s={{ .Keywords }}{{else}}{{end}}"
rows:
selector: div.post:has(div[class="postTitle"])
fields:
title:
selector: div.postTitle
@@ -117,11 +105,8 @@
selector: div.postTitle h2 a
attribute: href
download:
selector: a[href^="/dl-now?f="]
selector: div.postTitle h2 a
attribute: href
filters:
- name: replace
args: ["/dl-now?f=", "/download?f="]
banner:
optional: true
selector: img
@@ -142,7 +127,13 @@
selector: div.postContent p:contains("File Size:")
filters:
- name: regexp
args: "File Size: (.+?)s"
args: "File Size: (.+?)$"
- name: replace
args: ["MBs", "MB"]
- name: replace
args: ["GBs", "GB"]
- name: replace
args: ["KBs", "KB"]
seeders:
text: 1
leechers:
@@ -151,3 +142,4 @@
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -162,11 +162,58 @@
- {id: 164, cat: Audio/Other, desc: "PRESETS Sylenth"}
- {id: 168, cat: Audio/Other, desc: "PRESETS Toontrack"}
- {id: 21, cat: Other, desc: "UPDATE"}
- {id: 222, cat: Other, desc: "GFXNEWS 3D"}
- {id: 207, cat: Other, desc: "GFXNEWS APPS WIN"}
- {id: 215, cat: Other, desc: "GFXNEWS APPS LINUX"}
- {id: 214, cat: Other, desc: "GFXNEWS APPS MAC"}
- {id: 211, cat: Other, desc: "GFXNEWS BOOKS"}
- {id: 224, cat: Other, desc: "GFXNEWS CAD/CAM"}
- {id: 212, cat: Other, desc: "GFXNEWS FONTS"}
- {id: 213, cat: Other, desc: "GFXNEWS FOOTAGE"}
- {id: 226, cat: Other, desc: "GFXNEWS MAGAZINE"}
- {id: 216, cat: Other, desc: "GFXNEWS PHOTOSTOCK"}
- {id: 220, cat: Other, desc: "GFXNEWS PHOTOGRAPHY - ART"}
- {id: 227, cat: Other, desc: "GFXNEWS PHOTOSHOP"}
- {id: 228, cat: Other, desc: "GFXNEWS PHOTOSHOP Actions, Pattern & Styles"}
- {id: 229, cat: Other, desc: "GFXNEWS PHOTOSHOP Background & PSD Source"}
- {id: 230, cat: Other, desc: "GFXNEWS PHOTOSHOP Brushes & Gradient"}
- {id: 231, cat: Other, desc: "GFXNEWS PHOTOSHOP Toolkits, Papers & Objects"}
- {id: 225, cat: Other, desc: "GFXNEWS PLUGINS LINUX"}
- {id: 223, cat: Other, desc: "GFXNEWS PLUGINS MAC"}
- {id: 210, cat: Other, desc: "GFXNEWS PLUGINS WIN"}
- {id: 217, cat: Other, desc: "GFXNEWS SCRIPTS - WEB PROGRAMMING"}
- {id: 218, cat: Other, desc: "GFXNEWS TEMPLATES"}
- {id: 232, cat: Other, desc: "GFXNEWS TEXTURES"}
- {id: 219, cat: Other, desc: "GFXNEWS TUTORIALS"}
- {id: 221, cat: Other, desc: "GFXNEWS VIDEO PRODUCTION"}
modes:
search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "1"
options:
"1": "created"
"10": "seeders"
"7": "size"
"2": "title"
- name: type
type: select
label: Order requested from site
default: "2"
options:
"2": "desc"
"1": "asc"
login:
path: login.php
method: post
@@ -207,8 +254,8 @@
prev_date_from: ""
prev_date_to: ""
prev_hide_rereg: 0
o: 1
s: 2
o: "{{ .Config.sort }}"
s: "{{ .Config.type }}"
df: 1
da: 1
nm: "{{ .Keywords }}"
@@ -216,12 +263,13 @@
submit: "Search"
rows:
selector: table > tbody > tr:has(a[href*="/dl.php?id="])
selector: table.forumline > tbody > tr:has(a[href*="/dl.php?id="])
dateheaders:
selector: td[colspan="20"] > strong
filters:
- name: dateparse
args: "01-02-2006"
fields:
title:
selector: td a[href*="/viewtopic.php?t="]
@@ -252,21 +300,22 @@
optional: true
selector: td:contains(\00a0B)
seeders:
text: "0"
text: 0
seeders:
optional: true
selector: td[title="Seeders"]
leechers:
text: "0"
text: 0
leechers:
optional: true
selector: td[title="Leechers"]
grabs:
text: "0"
text: 0
grabs:
optional: true
selector: td[title^="Replies:"]
downloadvolumefactor:
text: "1"
text: 1
uploadvolumefactor:
text: "1"
text: 1
# engine n/a

View File

@@ -1,299 +0,0 @@
---
site: avg
name: AVG
description: "Audio Video Games (BestRepack) is a RUSSIAN Private Torrent Tracker for GAMES"
language: ru-ru
type: private
encoding: UTF-8
links:
- https://avg.club/
caps:
categorymappings:
- {id: 110, cat: PC/Games, desc: "Репаки от R.G. Catalyst"}
- {id: 146, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Горячие новинки"}
- {id: 112, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Action"}
- {id: 113, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Fighting"}
- {id: 114, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst RPG"}
- {id: 118, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Аркады"}
- {id: 120, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Квесты и приключения"}
- {id: 122, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Стратегии"}
- {id: 124, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Симуляторы"}
- {id: 126, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Гонки"}
- {id: 147, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Горячие новинки"}
- {id: 115, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Action"}
- {id: 116, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Fighting"}
- {id: 117, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst RPG"}
- {id: 119, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Аркады"}
- {id: 121, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Квесты и приключения"}
- {id: 123, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Стратегии"}
- {id: 125, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Симуляторы"}
- {id: 127, cat: PC/Games, desc: "Игры PC (Репаки) от R.G. Catalyst Гонки"}
- {id: 9, cat: PC/Games, desc: "Игры PC (Репаки) Горячие новинки"}
- {id: 2, cat: PC/Games, desc: "Игры PC (Репаки) Action"}
- {id: 8, cat: PC/Games, desc: "Игры PC (Репаки) Fighting"}
- {id: 3, cat: PC/Games, desc: "Игры PC (Репаки) RPG"}
- {id: 7, cat: PC/Games, desc: "Игры PC (Репаки) Аркады"}
- {id: 6, cat: PC/Games, desc: "Игры PC (Репаки) Квесты и приключения"}
- {id: 4, cat: PC/Games, desc: "Игры PC (Репаки) Стратегии"}
- {id: 5, cat: PC/Games, desc: "Игры PC (Репаки) Симуляторы"}
- {id: 73, cat: PC/Games, desc: "Игры PC (Репаки) Гонки"}
- {id: 149, cat: PC/Games, desc: "Игры PC (Репаки) «Стройбат»"}
- {id: 148, cat: PC/Games, desc: "Игры PC (Оригиналы) Горячие новинки"}
- {id: 129, cat: PC/Games, desc: "Игры PC (Оригиналы) Action"}
- {id: 131, cat: PC/Games, desc: "Игры PC (Оригиналы) Fighting"}
- {id: 133, cat: PC/Games, desc: "Игры PC (Оригиналы) RPG"}
- {id: 135, cat: PC/Games, desc: "Игры PC (Оригиналы) Аркады"}
- {id: 137, cat: PC/Games, desc: "Игры PC (Оригиналы) Квесты и приключения"}
- {id: 139, cat: PC/Games, desc: "Игры PC (Оригиналы) Стратегии"}
- {id: 141, cat: PC/Games, desc: "Игры PC (Оригиналы) Симуляторы"}
- {id: 143, cat: PC/Games, desc: "Игры PC (Оригиналы) Гонки"}
- {id: 19, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты)"}
- {id: 130, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) Action"}
- {id: 132, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) Fighting"}
- {id: 134, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) RPG"}
- {id: 136, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) Аркады"}
- {id: 138, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) Квесты и приключения"}
- {id: 140, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) Стратегии"}
- {id: 142, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) Симуляторы"}
- {id: 144, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) Гонки"}
- {id: 145, cat: PC/Games, desc: "Игры PC (Оригиналы) Релизы с GOG.com (игры без защиты) Linux / MacOS"}
- {id: 10, cat: PC/Games, desc: "Игры PC (Оригиналы) Горячие новинки"}
- {id: 11, cat: PC/Games, desc: "Игры PC (Оригиналы) Action"}
- {id: 12, cat: PC/Games, desc: "Игры PC (Оригиналы) Fighting"}
- {id: 13, cat: PC/Games, desc: "Игры PC (Оригиналы) RPG"}
- {id: 14, cat: PC/Games, desc: "Игры PC (Оригиналы) Аркады"}
- {id: 15, cat: PC/Games, desc: "Игры PC (Оригиналы) Квесты и приключения"}
- {id: 16, cat: PC/Games, desc: "Игры PC (Оригиналы) Стратегии"}
- {id: 17, cat: PC/Games, desc: "Игры PC (Оригиналы) Симуляторы"}
- {id: 74, cat: PC/Games, desc: "Игры PC (Оригиналы) Гонки"}
- {id: 98, cat: PC/Games, desc: "Игры PC (Оригиналы) Игры для Linux"}
- {id: 99, cat: PC/Games, desc: "Игры PC (Оригиналы) Игры для MacOS"}
- {id: 70, cat: Console/Xbox, desc: "Игры для консолей Xbox"}
- {id: 71, cat: Console/PSP, desc: "Игры для консолей Playstation"}
- {id: 72, cat: Console/Other, desc: "Игры для консолей Другие консоли"}
- {id: 34, cat: Movies, desc: "Кинематограф Новинки"}
- {id: 109, cat: Movies/HD, desc: "Кинематограф Новинки HD Remux / Blu-Ray Discs"}
- {id: 108, cat: Movies/HD, desc: "Кинематограф Новинки HD Rips (720p,1080p)"}
- {id: 20, cat: Movies, desc: "Кинематограф Отечественное кино"}
- {id: 21, cat: Movies, desc: "Кинематограф Зарубежное кино"}
- {id: 28, cat: TV, desc: "Отечественные сериалы"}
- {id: 27, cat: TV, desc: "Зарубежные сериалы"}
- {id: 29, cat: TV, desc: "Мультфильмы"}
- {id: 30, cat: TV, desc: "Мультсериалы"}
- {id: 37, cat: TV, desc: "Документальное кино"}
- {id: 38, cat: TV, desc: "Концерты и передачи"}
- {id: 67, cat: TV/Anime, desc: "Аниме Релизы"}
- {id: 45, cat: Audio, desc: "Музыка Тяжелая и альтернативная музыка"}
- {id: 85, cat: Audio, desc: "Музыка Эстрадная и поп-музыка"}
- {id: 77, cat: Audio, desc: "Музыка Электронная музыка"}
- {id: 58, cat: Audio, desc: "Музыка Рэп, хип-хоп, R`n`B"}
- {id: 78, cat: Audio, desc: "Музыка Фолк, этническая и народная музыка"}
- {id: 42, cat: Audio, desc: "Музыка Классическая и академическая музыка"}
- {id: 82, cat: Audio, desc: "Музыка New Age, Chillout, музыка для медитации"}
- {id: 79, cat: Audio, desc: "Музыка Джаз, блюз"}
- {id: 80, cat: Audio, desc: "Музыка Авторская песня, шансон"}
- {id: 49, cat: Audio, desc: "Музыка Саундтреки"}
- {id: 50, cat: Audio, desc: "Музыка Саундтреки Саундтреки к фильмам, мультфильмам, сериалам"}
- {id: 51, cat: Audio, desc: "Музыка Саундтреки Саундтреки к играм"}
- {id: 81, cat: Audio, desc: "Музыка Прочая музыка"}
- {id: 83, cat: Audio, desc: "Музыка Прочая музыка Неофициальные сборники"}
- {id: 156, cat: PC, desc: "Программное обеспечение Live CD, DVD, USB версии"}
- {id: 157, cat: PC, desc: "Программное обеспечение Windows 10 и более поздние"}
- {id: 158, cat: PC, desc: "Программное обеспечение Windows 8.1 и более ранние"}
- {id: 159, cat: PC, desc: "Программное обеспечение Обновления и языковые пакеты"}
- {id: 160, cat: PC, desc: "Программное обеспечение Серверные версии"}
- {id: 193, cat: PC/Mac, desc: "Программное обеспечение macOS"}
- {id: 194, cat: PC/Mac, desc: "Программное обеспечение macOS Stable (Release)"}
- {id: 195, cat: PC/Mac, desc: "Программное обеспечение macOS Dev (Beta)"}
- {id: 164, cat: PC/Mac, desc: "Программное обеспечение macOS Дистрибутивы Linux"}
- {id: 163, cat: PC/Mac, desc: "Программное обеспечение macOS *nix OS"}
- {id: 162, cat: PC/Mac, desc: "Программное обеспечение macOS Программное обеспечение"}
- {id: 165, cat: PC, desc: "Программное обеспечение Мультимедиа и графика"}
- {id: 172, cat: PC, desc: "Программное обеспечение Мультимедиа и графика Аудио-редакторы"}
- {id: 171, cat: PC, desc: "Программное обеспечение Мультимедиа и графика Видео-редакторы"}
- {id: 170, cat: PC, desc: "Программное обеспечение Мультимедиа и графика Графические редакторы"}
- {id: 169, cat: PC, desc: "Программное обеспечение Мультимедиа и графика Материалы для аудио"}
- {id: 168, cat: PC, desc: "Программное обеспечение Мультимедиа и графика Материалы для видео"}
- {id: 167, cat: PC, desc: "Программное обеспечение Мультимедиа и графика Материалы для графики"}
- {id: 166, cat: PC, desc: "Программное обеспечение Мультимедиа и графика Моделирование, рендеринг, плагины"}
- {id: 173, cat: PC, desc: "Программное обеспечение Программирование и веб-разработка"}
- {id: 177, cat: PC, desc: "Программное обеспечение Программирование и веб-разработка DDK/SDK"}
- {id: 178, cat: PC, desc: "Программное обеспечение Программирование и веб-разработка Веб-редакторы"}
- {id: 176, cat: PC, desc: "Программное обеспечение Программирование и веб-разработка Системы управления базами данных (СУБД)"}
- {id: 175, cat: PC, desc: "Программное обеспечение Программирование и веб-разработка Компиляторы и среды разработки"}
- {id: 174, cat: PC, desc: "Программное обеспечение Программирование и веб-разработка Компоненты и дополнения"}
- {id: 179, cat: PC/0day, desc: "Программное обеспечение Windows Software"}
- {id: 188, cat: PC/0day, desc: "Программное обеспечение Windows Software Интернет-приложения"}
- {id: 187, cat: PC/0day, desc: "Программное обеспечение Windows Software Информационная безопасность"}
- {id: 186, cat: PC/0day, desc: "Программное обеспечение Windows Software Офисные приложения и редакторы"}
- {id: 185, cat: PC/0day, desc: "Программное обеспечение Windows Software Переводчики и словари"}
- {id: 184, cat: PC/0day, desc: "Программное обеспечение Windows Software Проигрыватели и кодеки"}
- {id: 183, cat: PC/0day, desc: "Программное обеспечение Windows Software Работа с носителями и медиа"}
- {id: 182, cat: PC/0day, desc: "Программное обеспечение Windows Software Системные приложения"}
- {id: 181, cat: PC/0day, desc: "Программное обеспечение Windows Software Эмуляторы"}
- {id: 180, cat: PC/0day, desc: "Программное обеспечение Windows Software Прочие приложения"}
- {id: 197, cat: PC/0day, desc: "Программное обеспечение Windows Software Архиваторы и файловые менеджеры"}
- {id: 203, cat: PC/0day, desc: "Программное обеспечение Windows Software Проигрыватели и кодеки"}
- {id: 202, cat: PC/0day, desc: "Программное обеспечение Windows Software Офисные приложения и редакторы"}
- {id: 201, cat: PC/0day, desc: "Программное обеспечение Windows Software Работа с носителями и медиа"}
- {id: 200, cat: PC/0day, desc: "Программное обеспечение Windows Software Информационная безопасность"}
- {id: 199, cat: PC/0day, desc: "Программное обеспечение Windows Software Интернет-приложения"}
- {id: 198, cat: PC/0day, desc: "Программное обеспечение Windows Software Системные приложения"}
- {id: 22, cat: Other, desc: "Прочее Оформление релизов"}
- {id: 53, cat: Other, desc: "Прочее Оформление релизов Оформление релизов (игры)"}
- {id: 54, cat: Other, desc: "Прочее Оформление релизов Оформление релизов (кино/мультфильмы/аниме)"}
- {id: 55, cat: Other, desc: "Прочее Оформление релизов Оформление релизов (музыка)"}
- {id: 192, cat: Other, desc: "Прочее Оформление релизов Оформление релизов (софт)"}
- {id: 31, cat: Other, desc: "Прочее Обновления/DLC"}
- {id: 102, cat: Other, desc: "Прочее Обновления/DLC для MacOS"}
- {id: 101, cat: Other, desc: "Прочее Обновления/DLC для Linux"}
- {id: 100, cat: Other, desc: "Прочее Обновления/DLC для Windows"}
- {id: 76, cat: Other, desc: "Прочее Языковые пакеты"}
- {id: 103, cat: Other, desc: "Прочее Языковые пакеты для MacOS"}
- {id: 104, cat: Other, desc: "Прочее Языковые пакеты для Linux"}
- {id: 105, cat: Other, desc: "Прочее Языковые пакеты для Windows"}
- {id: 84, cat: Other, desc: "Прочее Демо-, альфа-, бета-версии"}
- {id: 32, cat: Other, desc: "Прочее NoCD/NoDVD"}
- {id: 75, cat: Other, desc: "Прочее Моды"}
- {id: 106, cat: Other, desc: "Прочее Моды Моды для Titan Quest (+ Immortal Throne)"}
- {id: 95, cat: Other, desc: "Прочее Моды Моды для Dungeon Siege"}
- {id: 94, cat: Other, desc: "Прочее Моды Моды для Resident Evil 4"}
- {id: 93, cat: Other, desc: "Прочее Моды Моды для Doom III"}
- {id: 92, cat: Other, desc: "Прочее Моды Плагины для TESV Skyrim"}
- {id: 91, cat: Other, desc: "Прочее Моды Плагины для TESIV Oblivion"}
- {id: 90, cat: Other, desc: "Прочее Моды Плагины для TESIII Morrowind"}
- {id: 97, cat: Other, desc: "Прочее Пиратки"}
modes:
search: [q]
login:
path: login.php
method: post
inputs:
"login_username": "{{ .Config.username }}"
"login_password": "{{ .Config.password }}"
autologin: 1
login: "Log in"
error:
- selector: table.error tr td div.msg:not(:contains(">>>"))
test:
path: tracker.php
selector: a[href="./login.php?logout=1"]
search:
paths:
- path: tracker.php
method: post
inputs:
$raw: "{{ if .Categories }}{{ range .Categories }}f[]={{.}}&{{end}}{{else}}f[]=-1{{end}}"
prev_allw: 1
prev_a: 0
prev_dla: 0
prev_dlc: 0
prev_dld: 0
prev_dlw: 0
prev_my: 0
prev_new: 0
prev_sd: 0
prev_da: 1
prev_dc: 0
prev_df: 1
prev_ds: 0
prev_tor_type: 0
# sort by 1=registered 2=topicTitle 4=completed 10=seed 11=leech 12=up 13=down 5=replies 6=views 7=size 8=lastPost 9=seedLastSeen
o: 1
# 1=asc 2=desc
s: 2
# show category
dc: 0
# show forum
df: 1
# show author
da: 1
# show speed
ds: 0
# -1=all time
tm: -1
# seed not seen -1=disregard
sns: -1
# group releases -1=not selected
srg: -1
nm: "{{ .Keywords }}"
# find a username
pn: ""
submit: " Search "
rows:
selector: tr[id^="tor_"]
fields:
title:
selector: td a.genmed b
details:
selector: td a.genmed
attribute: href
download:
selector: td a.tr-dl
attribute: href
category:
selector: td a.gen
attribute: href
filters:
- name: regexp
args: "=(\\d+)\\."
size:
selector: td a.tr-dl
seeders:
selector: td.seedmed
leechers:
selector: td.leechmed
# Russian and Ukranian and English languages are supported
grabs:
optional: true
selector: td[title^="Ответов"]
grabs:
optional: true
selector: td[title^="Відповідей"]
grabs:
optional: true
selector: td[title^="Replies"]
# date for English, Russian, Ukrainian
date:
selector: td[title="Added"] p:last-of-type, td[title="Добавлен"] p:last-of-type, td[title="Додано"] p:last-of-type
filters:
# replace month abbreviations
- name: re_replace
args: ["Янв|Січ", "Jan"]
- name: re_replace
args: ["Фев|Лют", "Feb"]
- name: re_replace
args: ["Мар|Бер", "Mar"]
- name: re_replace
args: ["Апр|Кві", "Apr"]
- name: re_replace
args: ["Май|Травень", "May"]
- name: re_replace
args: ["Июн|Чер", "Jun"]
- name: re_replace
args: ["Июл|Лип", "Jul"]
- name: re_replace
args: ["Авг|Сер", "Aug"]
- name: re_replace
args: ["Сен|Вер", "Sep"]
- name: re_replace
args: ["Окт|Жов", "Oct"]
- name: re_replace
args: ["Ноя|Лис", "Nov"]
- name: re_replace
args: ["Дек|Грудень", "Dec"]
- name: dateparse
args: "2-Jan-06"
downloadvolumefactor:
case:
img[src="styles/images/tor_gold.gif"]: "0"
img[src="styles/images/tor_silver.gif"]: "0.5"
"*": "1"
uploadvolumefactor:
case:
"*": "1"

View File

@@ -18,6 +18,29 @@
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "time"
options:
"time": "created"
"seeders": "seeders"
"size": "size"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: login.php
method: form
@@ -35,11 +58,15 @@
paths:
- path: torrents.php
inputs:
$raw: "{{range .Categories}}filter_cat[{{.}}]=1&{{end}}"
searchstr: "{{ .Query.Keywords }}"
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
searchstr: "{{ .Keywords }}"
page: torrents
order_by: "{{ .Config.sort }}"
order_way: "{{ .Config.type }}"
rows:
selector: table#torrent_table > tbody > tr.group, tr.torrent, tr.group_torrent:not(.edition_info)
fields:
download:
selector: a[href^="torrents.php?action=download&id="]
@@ -52,8 +79,6 @@
selector: td:nth-child(3) > a
category:
selector: td:nth-child(2)
# files:
# selector: td:nth-child(4)
date:
selector: td:nth-last-child(5)
size:
@@ -66,7 +91,7 @@
selector: td:nth-last-child(1)
downloadvolumefactor:
case:
"*": "1"
"*": 1
uploadvolumefactor:
case:
"*": "1"
"*": 1

View File

@@ -0,0 +1,73 @@
---
site: badasstorrents
name: Badass Torrents
description: "Badass Torrents is a Public torrent site for MOVIES / TV / GENERAL"
language: en-us
type: public
encoding: UTF-8
links:
- https://badasstorrents.com/
caps:
categories:
"Anime": TV/Anime
"apps": PC
"Books": Books
"Games": PC/Games
"Movies": Movies
"Music": Audio
"Other": Other
"TV": TV
"XXX": XXX
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: downloadlink
type: select
label: Download link
default: "magnet:?xt="
options:
"/download/" : ".torrent"
"magnet:?xt=": "magnet"
download:
selector: a[href*="{{ .Config.downloadlink }}"]
attribute: href
search:
paths:
- path: "torrents/search/{{ .Keywords }}"
rows:
selector: table.table-hover > tbody > tr:has(a[href*="/torrent/"])
fields:
category:
selector: a[href*="/cat/"]
title:
selector: a[href*="/torrent/"]
details:
selector: a[href*="/torrent/"]
attribute: href
download:
selector: a[href*="/torrent/"]
attribute: href
date:
selector: td:nth-child(3)
filters:
- name: timeago
size:
selector: td:nth-child(4)
seeders:
selector: td:nth-child(5)
leechers:
selector: td:nth-child(6)
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -3,7 +3,7 @@
name: BaibaKo
description: "BaibaKo is a RUSSIAN Semi-Private Torrent Tracker for TV"
language: ru-ru
type: private
type: semi-private
encoding: windows-1251
links:
- http://baibako.tv/
@@ -27,6 +27,22 @@
type: checkbox
label: Strip Russian Letters
default: false
- name: sort
type: select
label: Sort requested from site
default: "4"
options:
"4": "created"
"7": "seeders"
"5": "size"
"1": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: takelogin.php
@@ -46,12 +62,16 @@
inputs:
search: "{{.Keywords }}"
# 0 active 1 incldead 2 onlydead 3 gold 4 seedfree
incldead: "1"
incldead: 1
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
keywordsfilters:
- name: re_replace
args: ["[s|S](\\d+)[e|E][\\d]+", "/s$1"]
rows:
selector: table > tbody > tr:has(a[href^="details.php?id="])
fields:
title:
selector: a[href^="details.php?id="]
@@ -77,7 +97,7 @@
- name: replace
args: ["HDR1080p", "HD 1080p"]
- name: re_replace
args: ["(\\([А-Яа-я\\W]+\\))|(^[А-Яа-я\\W\\d]+\\/ )|([а-яА-Я \\-]+,+)|([а-яА-Я]+)", "{{ if .Config.striprussian }}{{ else }}$1$2$3$4{{ end }}"]
args: ["(\\([А-Яа-яЁё\\W]+\\))|(^[А-Яа-яЁё\\W\\d]+\\/ )|([а-яА-ЯЁё \\-]+,+)|([а-яА-ЯЁё]+)", "{{ if .Config.striprussian }}{{ else }}$1$2$3$4{{ end }}"]
- name: append
args: " - rus"
details:
@@ -142,8 +162,9 @@
selector: td:nth-last-child(1)
downloadvolumefactor:
case:
"a[href^=\"details.php?id=\"]:contains(\"(Золото)\")": "0"
"*": "1"
"a[href^=\"details.php?id=\"]:contains(\"(Золото)\")": 0
"*": 1
uploadvolumefactor:
case:
"*": "1"
"*": 1
# engine n/a

View File

@@ -0,0 +1,151 @@
---
site: beitai
name: BeiTai
description: "BeiTai is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
language: zh-cn
type: private
encoding: UTF-8
links:
- https://www.beitai.pt/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 405, cat: TV/Anime, desc: "Animations/动漫"}
- {id: 402, cat: TV, desc: "TV Series/剧集"}
- {id: 403, cat: TV, desc: "TV Shows/综艺"}
- {id: 406, cat: Audio/Video, desc: "MusicVideo/音乐MV"}
- {id: 407, cat: TV/Sport, desc: "Sports/运体"}
- {id: 409, cat: Other, desc: "Misc/其他"}
- {id: 408, cat: Audio, desc: "HQ Audio/无损音乐"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "4"
options:
"4": "created"
"7": "seeders"
"5": "size"
"1": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: td.embedded:has(h2:contains("登录失败"))
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
# 0 incldead 1 active 2 dead
incldead: 0
# 0 all 1 normal 2 free 3 2x 4 2xfree 5 50% 6 2x50% 7 30%
spstate: 0
# 0 title 1 descr 3 uploaded 4 imdburl
search_area: "{{ if .Query.IMDBID }}4{{else}}0{{end}}"
# 0 AND 1 OR 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
title:
selector: a[href^="details.php?id="]
title:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
imdb:
optional: true
selector: div.imdb_100 > a
attribute: href
date:
# time type: time elapsed (default)
selector: td:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00"
- name: dateparse
args: "2006-01-02 15:04:05 -07:00"
date:
# time added
selector: td:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00"
- name: dateparse
args: "2006-01-0215:04:05 -07:00"
size:
selector: td:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
description:
selector: td:nth-child(2)
remove: a, img
# NexusPHP Standard v1.5 Beta 4

View File

@@ -0,0 +1,119 @@
---
site: beyond-hd-oneurl
name: Beyond-HD (OneURL)
description: "Without BeyondHD, your HDTV is just a TV"
language: en-us
type: private
encoding: UTF-8
links:
- https://beyond-hd.me/
settings:
- name: oneurl
type: text
label: OneURL
- name: sort
type: select
label: Sort requested from site
default: "created_at"
options:
"created_at": "created"
"seeders": "seeders"
"size": "size"
"name": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
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:
method: oneurl
inputs:
oneurl: "{{ .Config.oneurl }}"
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: "{{ .Config.sort }}"
direction: "{{ .Config.type }}"
qty: 100
rows:
selector: table > tbody > tr
after: 1
fields:
_category:
selector: a[href*="/categories/"]
optional: true
attribute: href
filters:
- name: regexp
args: "/categories/.*?\\.(\\d+)"
category:
text: "{{if .Result._category}}{{.Result._category}}{{else}}1{{end}}"
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: ["/img/person.png", ""]
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="100% Free (Limited UL)"]: 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

@@ -18,13 +18,41 @@
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "created_at"
options:
"created_at": "created"
"seeders": "seeders"
"size": "size"
"name": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: login
method: form
captcha:
type: text
selector: div[style*="#999999;"]
input: key
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: 1
remember: on
error:
- selector: div.has-error
test:
@@ -34,17 +62,20 @@
paths:
- path: torrents
inputs:
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
search: "{{ if .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
description: ""
uploader: ""
imdb: "{{ .Query.IMDBIDShort }}"
tmdb: ""
sorting: created_at
direction: desc
sorting: "{{ .Config.sort }}"
direction: "{{ .Config.type }}"
qty: 100
rows:
selector: table > tbody > tr
after: 1
fields:
_category:
selector: a[href*="/categories/"]
@@ -69,7 +100,7 @@
attribute: src
filters:
- name: replace
args: ["https://via.placeholder.com/600x900", ""]
args: ["/img/person.png", ""]
date:
selector: td:not(a[href$="/history"]) span.text-orange
filters:
@@ -88,13 +119,13 @@
attribute: href
downloadvolumefactor:
case:
i[data-original-title="100% Free"]: "0"
i[data-original-title="100% Free (Limited UL)"]: "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"
i[data-original-title="100% Free"]: 0
i[data-original-title="100% Free (Limited UL)"]: 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"
"*": 1
# UNIT3D

View File

@@ -0,0 +1,143 @@
---
site: bibliotik
name: Bibliotik
description: "Bibliotik is a private site for eBooks and audiobooks"
language: en-US
type: private
encoding: UTF-8
links:
- https://bibliotik.me/
caps:
categorymappings:
- { id: 1, cat: PC, desc: "Applications" }
- { id: 3, cat: Audio/Audiobook, desc: "Audiobooks" }
- { id: 4, cat: Books/Comics, desc: "Comics" }
- { id: 5, cat: Books/Ebook, desc: "eBooks" }
- { id: 7, cat: Books/Magazines, desc: "Magazines" }
modes:
search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: orderby
type: select
label: Sort requested from site
default: "relevance"
options:
"relevance": "relevance"
"year": "year"
"size": "size"
"duration": "duration"
"added": "added"
"leechers": "leechers"
"seeders": "seeders"
"snatches": "snatches"
"comments": "comments"
"files": "files"
- name: order
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: /
method: form
form: form#loginform
submitpath: /
inputs:
action: login
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
keeploggedin: 1
error:
- selector: center:first-of-type
test:
path: torrents/
selector: div#pre_header
search:
paths:
- path: torrents/
inputs:
search: "{{ .Keywords }}"
$raw: "{{ range .Categories }}cat[]={{.}}&{{end}}"
orderby: "{{ .Config.orderby }}"
order: "{{ .Config.order }}"
rows:
selector: table#torrents_table > tbody > tr:has(.title)
fields:
category:
selector: td:first-child
case:
div[title="Applications"]: 1
div[title="Audiobooks"]: 3
div[title="Comics"]: 4
div[title="Ebooks"]: 5
div[title="Magazines"]: 7
_year:
selector: .torYear
optional: true
_filetype:
selector: .torFormat
optional: true
title:
selector: .title a
filters:
- name: append
args: "{{ if .Result._year }} {{ .Result._year }}{{else}}{{end}}{{ if .Result._filetype }} {{ .Result._filetype }}{{else}}{{end}}"
details:
selector: .title a
attribute: href
date:
optional: true
selector: .t_files_size_added time
filters:
- name: timeago
download:
selector: a[title="Download"]
attribute: href
# files:
# selector: .t_files_size_added
# filters:
# - name: regexp
# args: "^\\s*(\\d+)\\s*file"
size:
selector: .t_files_size_added
filters:
- name: split
args: [",", 1]
- name: trim
seeders:
text: 0
seeders:
optional: true
selector: .seeders
leechers:
text: 0
leechers:
optional: true
selector: .leechers
grabs:
text: 0
grabs:
optional: true
selector: .snatches
downloadvolumefactor:
case:
"*": 1
uploadvolumefactor:
case:
"*": 1
# engine tbc

View File

@@ -0,0 +1,193 @@
---
site: bigfangroup
name: BigFANGroup
description: "BigFANGroup is a RUSSIAN Public Torrent Tracker for MOVIES / TV"
language: ru-ru
type: public
encoding: windows-1251
links:
- https://bigfangroup.org/
- https://www.freebfg.org/
caps:
categorymappings:
# Movies
- {id: 13, cat: Movies, desc: "Боевик"}
- {id: 18, cat: Movies, desc: "Катастрофа"}
- {id: 19, cat: Movies, desc: "Мелодрама"}
- {id: 21, cat: Movies, desc: "Драма"}
- {id: 22, cat: Movies, desc: "Триллер"}
- {id: 23, cat: Movies, desc: "Фантастика"}
- {id: 24, cat: Movies, desc: "Комедия"}
- {id: 26, cat: Movies, desc: "Ужасы"}
- {id: 27, cat: Movies, desc: "Приключения"}
- {id: 28, cat: Movies, desc: "Исторический"}
- {id: 29, cat: Movies/Foreign, desc: "Наше кино"}
- {id: 30, cat: Movies, desc: "Фэнтази"}
- {id: 31, cat: Movies, desc: "Мистика"}
- {id: 33, cat: Movies, desc: "Военный"}
- {id: 36, cat: Movies, desc: "Криминал"}
- {id: 39, cat: Movies, desc: "Детектив"}
- {id: 47, cat: Movies, desc: "Сказки"}
- {id: 48, cat: Movies, desc: "Вестерн"}
- {id: 52, cat: Movies, desc: "Биография"}
- {id: 53, cat: Movies, desc: "Классика"}
- {id: 14, cat: Movies/HD, desc: "HDTV"}
- {id: 15, cat: Movies/DVD, desc: "DVD"}
- {id: 51, cat: Movies/3D, desc: "3D"}
- {id: 20, cat: Movies, desc: "Мультфильм"}
# Audio
- {id: 35, cat: Audio/Audiobook, desc: "Аудио-книги"}
- {id: 43, cat: Audio/Foreign, desc: "Русская музыка"}
- {id: 44, cat: Audio, desc: "Зарубежная музыка"}
- {id: 45, cat: Audio/Video, desc: "Видеоклипы"}
- {id: 46, cat: Audio, desc: "Муз. сборники"}
- {id: 54, cat: Audio, desc: "Классическая музыка"}
- {id: 55, cat: Audio, desc: "Саундтрек"}
# TV
- {id: 11, cat: TV, desc: "Сериалы"}
- {id: 25, cat: TV, desc: "ТВ-шоу"}
- {id: 37, cat: TV/Sport, desc: "Спорт"}
- {id: 50, cat: TV, desc: "Новости"}
- {id: 49, cat: TV, desc: "Научно-популярное"}
- {id: 32, cat: TV/Documentary, desc: "Документальный"}
- {id: 12, cat: TV, desc: "Анимация"}
# PC
- {id: 1, cat: PC, desc: "Софт"}
- {id: 5, cat: PC/Games, desc: "Игры"}
# Other
- {id: 38, cat: Books, desc: "Книги и журналы"}
- {id: 42, cat: XXX, desc: "Эротика"}
- {id: 9, cat: Other, desc: "Разное"}
modes:
search: [q]
movie-search: [q]
settings:
- name: striprussian
type: checkbox
label: Strip Russian Letters
default: false
- name: sort
type: select
label: Sort requested from site
default: "added"
options:
"added": "created"
"seed": "seeders"
"size": "size"
"name": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
search:
# https://bigfangroup.org/browse.php?search=black+lightning&cat=0&incldead=0&year=0&format=0
#
paths:
- path: browse.php
inputs:
search: "{{ .Keywords }}"
cat: 0
# 0 active 1 incldead 2 onlydead 3 gold 4 noseed 5 silver 7 BFG
incldead: 1
ajax: 1
year: 0
format: 0
s: "{{ .Config.sort }}"
d: "{{ .Config.type }}"
rows:
selector: table > tbody#highlighted > tr:has(a[href^="browse.php?cat="])
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="]
filters:
# normalize to SXXEYY format
- name: re_replace
args: ["[\\.\\,\\:\\-\\/\\|]", " "]
- name: re_replace
args: ["(.*)[CСcс]езон\\s+(\\d+).+[CСcс]ери[ия]\\s+(\\d+)\\s+(\\d+)\\s+из\\s+\\d+(.*)", "$1 S$2E$3-$4 rus $5"]
- name: re_replace
args: ["(.*)[CСcс]езон\\s+(\\d+).+[CСcс]ери[ия]\\s+(\\d+)\\s+из\\s+\\d+(.*)", "$1 S$2E$3 rus $4"]
- name: re_replace
args: ["(.*)[CСcс]езон\\s+(\\d+)(.*)", "$1 S$2 rus $3"]
- name: re_replace
args: ["(.*)[CСcс]]ери[ия]\\s+(\\d+)(.*)", "$1 E$2 rus $3"]
- name: re_replace
args: ["(\\([А-Яа-яЁё\\W]+\\))|(^[А-Яа-яЁё\\W\\d]+\\/ )|([а-яА-ЯЁё \\-]+,+)|([а-яА-ЯЁё]+)", "{{ if .Config.striprussian }}{{ else }}$1$2$3$4{{ end }}"]
- name: replace
args: ["WEBRip", "WEBDL"]
- name: replace
args: ["WEB DL", "WEBDL"]
- name: replace
args: ["WEB DLRip", "WEBDL"]
- name: replace
args: ["HDTVRip", "HDTV"]
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="details.php?id="]
attribute: href
filters:
- name: replace
args: ["details", "download"]
size:
selector: td:nth-child(6)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
date:
selector: img[src="pic/time.png"]
attribute: title
filters:
- name: replace
args: [" в ", " "]
- name: replace
args: ["января", "January"]
- name: replace
args: ["февраля", "February"]
- name: replace
args: ["марта ", "March"]
- name: replace
args: ["апреля", "April"]
- name: replace
args: ["мая", "May"]
- name: replace
args: ["июня", "June"]
- name: replace
args: ["июля", "July"]
- name: replace
args: ["августа", "August"]
- name: replace
args: ["сентября", "September"]
- name: replace
args: ["октября", "October"]
- name: replace
args: ["ноября", "November"]
- name: replace
args: ["декабря", "December"]
- name: dateparse
args: "2 January 2006 15:04:05"
downloadvolumefactor:
case:
img[src="pic/freedownload.gif"]: 0
img[src="pic/silverdown.gif"]: 0
"*": 1
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -55,7 +55,8 @@
download:
selector: a[href^="download.php?id="]
attribute: href
search:
paths:
- path: browse.php

View File

@@ -12,63 +12,31 @@
categorymappings:
# Movies
- {id: 91, cat: Movies/HD, desc: "DSS"}
- {id: 92, cat: Movies/HD, desc: "DSS 3D"}
- {id: 14, cat: Movies, desc: "Screener"}
- {id: 15, cat: Movies/SD, desc: "DVDRip"}
- {id: 16, cat: Movies/HD, desc: "BDRip"}
- {id: 17, cat: Movies/HD, desc: "HD 720p"}
- {id: 18, cat: Movies/HD, desc: "HD 1080p"}
- {id: 19, cat: Movies/HD, desc: "HD 3D"}
- {id: 83, cat: Movies/HD, desc: "4K (Ultra HD)"}
- {id: 89, cat: Movies/DVD, desc: "DVD 5"}
- {id: 90, cat: Movies/DVD, desc: "DVD 9"}
- {id: 37, cat: Movies, desc: "MP4"}
- {id: 61, cat: TV, desc: "TV Show"}
- {id: 78, cat: TV, desc: "Serie TV"}
- {id: 96, cat: TV/HD, desc: "Serie TV 720p"}
- {id: 97, cat: TV/HD, desc: "Serie TV 1080p"}
- {id: 98, cat: TV, desc: "Serie TV MP4"}
- {id: 24, cat: TV/Anime, desc: "Cartoni"}
- {id: 66, cat: TV/Anime, desc: "Anime"}
- {id: 71, cat: TV, desc: "SUB iTA"}
- {id: 75, cat: TV/Documentary, desc: "Documentari"}
- {id: 72, cat: TV/Sport, desc: "Sport"}
- {id: 11, cat: Movies/HD, desc: "DSS"}
- {id: 1, cat: Movies, desc: "Screener"}
- {id: 2, cat: Movies, desc: "DVDRip & BDRip"}
- {id: 3, cat: Movies/BluRay, desc: "Bluray 1080p & 720p"}
- {id: 5, cat: Movies/UHD, desc: "Ultra HD 4K"}
- {id: 6, cat: TV, desc: "Serie TV"}
- {id: 4, cat: TV/Anime, desc: "Cartoni"}
# GAMES
- {id: 28, cat: PC/Games, desc: "PC Games"}
- {id: 63, cat: Console/Xbox 360, desc: "XBOX 360"}
- {id: 64, cat: Console/PS3, desc: "PS3"}
- {id: 33, cat: Console/Wii, desc: "WII"}
- {id: 76, cat: Console/Other, desc: "PS2"}
- {id: 81, cat: Console/Xbox One, desc: "XBOX ONE"}
- {id: 84, cat: Console/PS4, desc: "PS4"}
- {id: 7, cat: PC/Games, desc: "Giochi"}
# MUSIC
- {id: 35, cat: Audio, desc: "MP3"}
- {id: 67, cat: Audio, desc: "FLAC"}
- {id: 8, cat: Audio, desc: "Musica"}
# SOFTWARE
- {id: 52, cat: PC/ISO, desc: "Windows"}
- {id: 54, cat: PC/ISO, desc: "Mac"}
- {id: 69, cat: PC/ISO, desc: "Linux"}
- {id: 9, cat: PC/0day, desc: "Software"}
# PHONE
- {id: 40, cat: PC/Phone-IOS, desc: "Android"}
- {id: 41, cat: PC/Phone-Android, desc: "Iphone"}
- {id: 12, cat: PC/Phone-Other, desc: "Applicazioni"}
# OTHER
- {id: 44, cat: Other, desc: "Varie"}
- {id: 82, cat: Other, desc: "Music Video"}
- {id: 86, cat: Other, desc: "Navigatori"}
- {id: 95, cat: Other, desc: "Immagini"}
- {id: 99, cat: Other, desc: "AudioLibri"}
- {id: 14, cat: Other, desc: "Varie & Altro"}
# EBOOK
- {id: 46, cat: Books, desc: "Ebook"}
- {id: 73, cat: Books/Comics, desc: "Fumetti"}
- {id: 74, cat: Books/Comics, desc: "Manga"}
- {id: 87, cat: Books, desc: "Giornali"}
- {id: 13, cat: Books, desc: "Libri & Edicola"}
modes:
search: [q]
@@ -86,6 +54,10 @@
type: checkbox
label: Show donor torrent? (Enable if you're a donor)
default: false
- name: info
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
path: index.php?page=login
@@ -104,12 +76,14 @@
- path: index.php
inputs:
search: "{{ .Keywords }}"
page: "torrents"
category: "{{range .Categories}}{{.}};{{end}}"
options: "0"
active: "0"
page: torrents
category: "{{ range .Categories }}{{.}};{{end}}"
options: 0
active: 0
rows:
selector: table > tbody > tr > td > table.lista > tbody > tr:has(a[href^="index.php?page=torrent-details&id="]){{if .Config.donor }}{{else}}:not(:has(img[src*="keditbookmarks.png"])){{end}}
fields:
download:
selector: a[href^="index.php?page=torrent-details&id="]
@@ -157,19 +131,20 @@
selector: td:nth-last-child(6)
downloadvolumefactor:
case:
img[alt="Gold 100% Free"]: "0"
img[alt="Silver 50% Free"]: "0.5"
img[alt="Bronze 25% Free"]: "0.75"
"*": "1"
img[alt="Gold 100% Free"]: 0
img[alt="Silver 50% Free"]: 0.5
img[alt="Bronze 25% Free"]: 0.75
"*": 1
uploadvolumefactor:
case:
img[alt="2x Upload Multiplier"]: "2"
img[alt="3x Upload Multiplier"]: "3"
img[alt="4x Upload Multiplier"]: "4"
img[alt="5x Upload Multiplier"]: "5"
img[alt="6x Upload Multiplier"]: "6"
img[alt="7x Upload Multiplier"]: "7"
img[alt="8x Upload Multiplier"]: "8"
img[alt="9x Upload Multiplier"]: "9"
img[alt="10x Upload Multiplier"]: "10"
"*": "1"
img[alt="2x Upload Multiplier"]: 2
img[alt="3x Upload Multiplier"]: 3
img[alt="4x Upload Multiplier"]: 4
img[alt="5x Upload Multiplier"]: 5
img[alt="6x Upload Multiplier"]: 6
img[alt="7x Upload Multiplier"]: 7
img[alt="8x Upload Multiplier"]: 8
img[alt="9x Upload Multiplier"]: 9
img[alt="10x Upload Multiplier"]: 10
"*": 1
# xbtitFM v3.0.00

View File

@@ -10,46 +10,82 @@
caps:
categorymappings:
- {id: 1, cat: TV/Documentary, desc: "Doku HD"}
- {id: 2, cat: TV/Documentary, desc: "Doku Packs"}
- {id: 3, cat: TV/Documentary, desc: "Doku SD"}
- {id: 4, cat: Movies/FOREIGN, desc: "International"}
- {id: 5, cat: Movies/HD, desc: "Movies 1080p"}
- {id: 6, cat: Movies/3D, desc: "Movies 3D"}
- {id: 7, cat: Movies/HD, desc: "Movies 720p"}
- {id: 36, cat: Movies/BluRay, desc: "Movies BluRay"}
- {id: 8, cat: Movies/DVD, desc: "Movies DVD / HDVD"}
- {id: 37, cat: Movies/HD, desc: "Movies HD Pack"}
- {id: 9, cat: Movies/SD, desc: "Movies SD"}
- {id: 38, cat: Movies/SD, desc: "Movies SD Pack"}
- {id: 10, cat: Movies/UHD, desc: "Movies UHD"}
- {id: 11, cat: TV/HD, desc: "Serien HD"}
- {id: 12, cat: TV/OTHER, desc: "Serien Packs"}
- {id: 13, cat: TV/SD, desc: "Serien SD"}
- {id: 14, cat: TV/Sport, desc: "Sport"}
- {id: 15, cat: XXX/x264, desc: "XXX HD"}
- {id: 16, cat: XXX/XviD, desc: "XXX SD"}
- {id: 17, cat: Audio/Lossless, desc: "Musik FLAC"}
- {id: 18, cat: Audio/MP3, desc: "Musik MP3"}
- {id: 19, cat: Audio/Other, desc: "Musik Sonstiges"}
- {id: 20, cat: Audio/Video, desc: "Musik Videos"}
- {id: 23, cat: Console, desc: "Spiele Handy"}
- {id: 24, cat: Console, desc: "Spiele Linux"}
- {id: 21, cat: Console/NDS, desc: "Spiele Nintendo"}
- {id: 22, cat: Console/PSP, desc: "Spiele PlayStation"}
- {id: 25, cat: Console, desc: "Spiele Sonstige"}
- {id: 40, cat: Console, desc: "Spiele Wimmelbild"}
- {id: 26, cat: PC/Games, desc: "Spiele Windows"}
- {id: 27, cat: Console, desc: "XBOX 360/ONE"}
- {id: 28, cat: PC, desc: "Software Handy"}
- {id: 29, cat: PC, desc: "Software Linux"}
- {id: 30, cat: PC/Mac, desc: "Software Mac Os"}
- {id: 31, cat: PC, desc: "Software Sonstige"}
- {id: 32, cat: PC/0day, desc: "Software Windows"}
- {id: 33, cat: TV/Anime, desc: "Anime"}
- {id: 39, cat: Books/Ebook, desc: "eBook"}
- {id: 34, cat: Audio/Audiobook, desc: "Hörbücher/ -spiele"}
- {id: 35, cat: XXX/Other, desc: "XXX Sonstiges"}
- {id: 1010, cat: Movies/UHD, desc: "Movies 2160p"}
- {id: 1020, cat: Movies/HD, desc: "Movies 1080p"}
- {id: 1030, cat: Movies/HD, desc: "Movies 720p"}
- {id: 1040, cat: Movies/HD, desc: "Movies x264"}
- {id: 1050, cat: Movies/HD, desc: "Movies x265"}
- {id: 1060, cat: Movies/SD, desc: "Movies XviD"}
- {id: 1070, cat: Movies/3D, desc: "Movies 3D"}
- {id: 1080, cat: Movies/DVD, desc: "Movies DVD"}
- {id: 1090, cat: Movies/BluRay, desc: "Movies BluRay"}
- {id: 1100, cat: Movies/DVD, desc: "Movies HD2DVD"}
- {id: 1110, cat: Movies/Foreign, desc: "Movies International"}
- {id: 1120, cat: Movies/HD, desc: "Movies HD Packs"}
- {id: 1130, cat: Movies/SD, desc: "Movies SD Packs"}
- {id: 2010, cat: TV/UHD, desc: "TV 2160p"}
- {id: 2020, cat: TV/HD, desc: "TV 1080p"}
- {id: 2030, cat: TV/HD, desc: "TV 720p"}
- {id: 2040, cat: TV/HD, desc: "TV x264"}
- {id: 2050, cat: TV/HD, desc: "TV x265"}
- {id: 2060, cat: TV/SD, desc: "TV XviD"}
- {id: 2070, cat: TV/HD, desc: "TV HD Packs"}
- {id: 2080, cat: TV/SD, desc: "TV SD Packs"}
- {id: 2090, cat: TV/FOREIGN, desc: "TV International"}
- {id: 3010, cat: TV/Documentary, desc: "Docu 2160p"}
- {id: 3020, cat: TV/Documentary, desc: "Docu 1080p"}
- {id: 3030, cat: TV/Documentary, desc: "Docu 720p"}
- {id: 3040, cat: TV/Documentary, desc: "Docu x264"}
- {id: 3050, cat: TV/Documentary, desc: "Docu x265"}
- {id: 3060, cat: TV/Documentary, desc: "Docu XviD"}
- {id: 3070, cat: TV/Documentary, desc: "Docu HD Packs"}
- {id: 3080, cat: TV/Documentary, desc: "Docu SD Packs"}
- {id: 3090, cat: TV/Documentary, desc: "Docu International"}
- {id: 4010, cat: TV/Sport, desc: "Sport 2160p"}
- {id: 4020, cat: TV/Sport, desc: "Sport 1080p"}
- {id: 4030, cat: TV/Sport, desc: "Sport 720p"}
- {id: 4040, cat: TV/Sport, desc: "Sport SD Sport"}
- {id: 4050, cat: TV/Sport, desc: "Sport HD Packs"}
- {id: 4060, cat: TV/Sport, desc: "Sport SD Packs"}
- {id: 5010, cat: XXX, desc: "XXX 2160p"}
- {id: 5020, cat: XXX, desc: "XXX 1080p"}
- {id: 5030, cat: XXX, desc: "XXX 720p"}
- {id: 5040, cat: XXX, desc: "XXX x264"}
- {id: 5050, cat: XXX, desc: "XXX x265"}
- {id: 5060, cat: XXX, desc: "XXX XviD"}
- {id: 5070, cat: XXX, desc: "XXX HD Packs"}
- {id: 5080, cat: XXX, desc: "XXX SD Packs"}
- {id: 5090, cat: XXX, desc: "XXX Sonstiges"}
- {id: 6010, cat: PC/Games, desc: "Games Windows"}
- {id: 6020, cat: Console, desc: "Games Linux"}
- {id: 6030, cat: PC/Mac, desc: "Games MacOS"}
- {id: 6040, cat: PC/Phone-Android, desc: "Games Android"}
- {id: 6050, cat: Console/Xbox, desc: "Games Xbox"}
- {id: 6060, cat: Console/PSP, desc: "Games PlayStation"}
- {id: 6070, cat: Console/NDS, desc: "Games Nintendo"}
- {id: 6080, cat: Console, desc: "Games Sonstige"}
- {id: 7010, cat: PC/0day, desc: "Software Windows"}
- {id: 7020, cat: PC, desc: "Software Linux"}
- {id: 7030, cat: PC/Mac, desc: "Software MacOS"}
- {id: 7040, cat: PC/Phone-Android, desc: "Software Android"}
- {id: 8010, cat: Audio/MP3, desc: "Music MP3-Album"}
- {id: 8020, cat: Audio/MP3, desc: "Music MP3-Charts"}
- {id: 8030, cat: Audio/MP3, desc: "Music MP3-Sampler"}
- {id: 8040, cat: Audio/MP3, desc: "Music MP3-Single"}
- {id: 8050, cat: Audio/Lossless, desc: "Music FLAC-Album"}
- {id: 8060, cat: Audio/Lossless, desc: "Music FLAC-Charts"}
- {id: 8070, cat: Audio/Lossless, desc: "Music FLAC-Sampler"}
- {id: 8080, cat: Audio/Lossless, desc: "Music FLAC-Single"}
- {id: 8090, cat: Audio/Video, desc: "Music Video"}
- {id: 9010, cat: Audio/Audiobook, desc: "Books A-Book"}
- {id: 9020, cat: Books/Ebook, desc: "Books E-Book"}
- {id: 9030, cat: Books, desc: "Books E-Paper"}
- {id: 9040, cat: Books, desc: "Books E-Learning"}
- {id: 9050, cat: TV, desc: "TV Kids"}
- {id: 9060, cat: TV/Anime, desc: "Anime HD"}
- {id: 9070, cat: TV/Anime, desc: "Anime SD"}
- {id: 9080, cat: TV/Anime, desc: "Anime Pack"}
- {id: 9999, cat: Other, desc: "unsort"}
modes:
search: [q]
@@ -63,6 +99,22 @@
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "1"
options:
"1": "created"
"8": "seeders"
"6": "size"
"2": "title"
- name: type
type: select
label: Order requested from site
default: "1"
options:
"1": "desc"
"2": "asc"
login:
path: login.php
@@ -95,42 +147,46 @@
paths:
- path: browse.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# seachin 0=name 1=descr 2=both
blah: 0
# include dead 0=active 1=all 2=dead
incldead: 1
orderby: "added"
sort: "desc"
showsearch: 0
suchfeld: 2
alleanzeigen: 1
$raw: "{{ range .Categories }}kategorie[]={{.}}&{{end}}"
suche: "{{ .Keywords }}"
# searchin 1 name 2 descr 3 both
durchsuche: 1
# includedead 1 active 2 all 3 dead 4 highlight 5 bookmark 6 onlyups 7 freeleech 8 multi2 9 multi5 10 multi10 11 25%dl 12 50%dl 13 75%dl
suchein: 2
# cat 1 all 1000 film 2000 tv 3000 docs 4000 sport 5000 xxx 6000 games 7000 apps 8000 music 9000 other
sucheaus: 1
sortierenach: "{{ .Config.sort }}"
sortierung: "{{ .Config.type }}"
rows:
selector: table.tableinborder[border="0"][cellspacing="0"][cellpadding="0"] tr
fields:
category:
selector: td.tableb a
selector: a.bt-cat
attribute: href
filters:
- name: querystring
args: cat
- name: regexp
args: (\d+)$
title:
selector: div a.tor-name
selector: a.tor-name
details:
selector: div a.tor-name
selector: a.tor-name
attribute: href
download:
selector: div a.tor-name
selector: div.tor-metadl a
attribute: href
filters:
- name: replace
args: ["details.php?id=", "download.php?torrent="]
banner:
selector: div[id^="details-"] img
attribute: src
seeders:
selector: div.tor-sl b
selector: div.tor-seeder
leechers:
selector: div.tor-sl b:last-of-type
selector: div.tor-leecher
grabs:
selector: div.tor-snatcher
# 2 flavours of dates
date:
# Heute 13:30:04
@@ -143,12 +199,12 @@
- name: replace
args: ["Gestern", "Yesterday"]
date:
# 30.02.2018&nbsp;23:12:50
# &nbsp;&nbsp;27.05.2019 <b>12:52:11</b>
selector: div.tor-date:contains(".")
optional: true
filters:
- name: replace
args: ["\u00a0", " "]
args: ["\u00a0", ""]
- name: dateparse
args: "02.01.2006 15:04:05"
size:
@@ -158,15 +214,16 @@
args: [".", ""]
- name: replace
args: [",", "."]
grabs:
selector: div.tor-take
filters:
- name: regexp
args: "(\\d+)"
downloadvolumefactor:
case:
img[src="pic/ou_new.png"]: "0"
"*": "1"
font.ou: 0 # only upload is counted
font.fl: 0 # freeleech neither dl or ul is counted
"*": 1
uploadvolumefactor:
case:
"*": "1"
"font.mu:contains(\"2x\")": 2
"font.mu:contains(\"5x\")": 5
"font.mu:contains(\"10x\")": 10
font.fl: 0 # freeleech neither dl or ul is counted
"*": 1
# engine n/a

View File

@@ -53,6 +53,7 @@
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: cookie
@@ -62,6 +63,22 @@
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>"
- name: sort
type: select
label: Sort requested from site
default: "4"
options:
"4": "created"
"7": "seeders"
"5": "size"
"1": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
method: cookie
@@ -72,33 +89,15 @@
paths:
- path: browse.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
search: "{{ .Query.Keywords }}"
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: tr[class^="browse"]
fields:
download:
selector: a[href^="download.php?id="]
attribute: href
title:
selector: a[href^="torrent.php?id="]
attribute: title
banner:
optional: true
selector: a[href^="torrent.php?id="][onmouseover]
attribute: onmouseover
filters:
- name: regexp
args: ", '(.*)'"
downloadvolumefactor:
case:
img[title="Ingyenes letöltés"]: "0"
"*": "1"
uploadvolumefactor:
selector: span:contains("Feltöltési szorzó")
filters:
- name: replace
args: ["Feltöltési szorzó × ", ""]
category:
selector: a[href^="browse.php?cat="]
attribute: href
@@ -106,9 +105,22 @@
- name: querystring
args: cat
- name: trim # some torrents have an extra space
title:
selector: a[href^="torrent.php?id="]
attribute: title
details:
selector: a[href^="torrent.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
banner:
optional: true
selector: a[href^="torrent.php?id="][onmouseover]
attribute: onmouseover
filters:
- name: regexp
args: ", '(.*)'"
size:
selector: td:nth-child(4)
grabs:
@@ -119,3 +131,13 @@
selector: td:nth-child(7)
date:
selector: "a[style=\"font-size: 8pt;cursor: pointer;\"][title]"
downloadvolumefactor:
case:
img[title="Ingyenes letöltés"]: 0
"*": 1
uploadvolumefactor:
selector: span:contains("Feltöltési szorzó")
filters:
- name: replace
args: ["Feltöltési szorzó × ", ""]
# engine n/a

View File

@@ -91,7 +91,7 @@
selector: a[href^="details.php?id="]
attribute: href
imdb:
selector: a[href^="http://anonym.to/?http://www.imdb.com/title/"]
selector: a[href*="www.imdb.com/title/tt"]
attribute: href
banner:
selector: a[onmouseover^="bithumen.UI.images.coverShow"]

View File

@@ -1,128 +0,0 @@
---
site: bitme
name: BitMe
description: "BitMe.ORG is an E-Learning torrent tracker"
language: en-us
type: private
encoding: windows-1252
links:
- http://www.bitme.org/
caps:
categorymappings:
- {id: 20, cat: Books, desc: "3D"}
- {id: 1, cat: Books, desc: "AppDev"}
- {id: 14, cat: Books, desc: "Art"}
- {id: 2, cat: Audio/Audiobook, desc: "Audio"}
- {id: 3, cat: Books, desc: "CBT"}
- {id: 21, cat: Books, desc: "Dating"}
- {id: 29, cat: Books, desc: "Do It Yourself"}
- {id: 5, cat: TV/Documentary, desc: "Documentaries"}
- {id: 6, cat: Books, desc: "e-Books"}
- {id: 7, cat: Books, desc: "Keystone"}
- {id: 8, cat: Books, desc: "Languages"}
- {id: 9, cat: Books, desc: "LearnKey"}
- {id: 10, cat: Books, desc: "Lynda.com"}
- {id: 19, cat: Books, desc: "Magic"}
- {id: 30, cat: Books, desc: "MATH"}
- {id: 18, cat: Books, desc: "Medical"}
- {id: 11, cat: Books, desc: "Misc"}
- {id: 12, cat: Books, desc: "Misc E-Learning"}
- {id: 22, cat: Books, desc: "Music Learning"}
- {id: 28, cat: Books, desc: "Photography"}
- {id: 23, cat: Books, desc: "Political"}
- {id: 24, cat: Books, desc: "Religion"}
- {id: 25, cat: Books, desc: "Self Improvement"}
- {id: 16, cat: Audio/Other, desc: "SFX"}
- {id: 26, cat: Books, desc: "Sports"}
- {id: 17, cat: Other, desc: "Stock Photography"}
- {id: 13, cat: Books, desc: "Total Training"}
- {id: 4, cat: Books, desc: "TTC"}
- {id: 27, cat: Other, desc: "Video Stock"}
modes:
search: [q]
tv-search: [q, season, ep]
login:
method: form
path: login.php
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[src="visual.php"]
input: secimage
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
logout: "no"
error:
- selector: table:contains("Login failed!")
- selector: table:contains("Wrong Code!")
test:
path: browse.php
search:
path: browse.php
method: get
inputs:
search: "{{ .Query.Keywords }}"
incldead: 1
rows:
selector: table[cellpadding="5"] > tbody > tr:has(td.latest)
fields:
title:
selector: a[href^="details.php?id="]
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php/"]
attribute: href
size:
selector: td:nth-child(7)
filters:
- name: replace
args: ["<br>", ""]
grabs:
selector: td:nth-child(8)
filters:
- name: replace
args: ["<br>", ""]
- name: replace
args: ["times", ""]
seeders:
selector: td:nth-child(9)
leechers:
selector: td:nth-child(10)
date:
selector: font[color="999999"]
filters:
- name: replace
args: ["at", ""]
- name: replace
args: [",", ""]
- name: replace
args: ["st", ""]
- name: replace
args: ["nd", ""]
- name: replace
args: ["rd", ""]
- name: replace
args: ["th", ""]
- dateparse:
args: "Monday January 2 2006 15:04:05 PM"
downloadvolumefactor:
case:
"*": "1"
uploadvolumefactor:
case:
"*": "1"

View File

@@ -0,0 +1,158 @@
---
site: bitru
name: BitRu
description: "BitRu is a RUSSIAN Public Torrent Tracker for MOVIES / TV / GENERAL"
language: ru-ru
type: public
encoding: UTF-8
links:
- http://bitru.org/
caps:
categories:
"movie": Movies
"serial": TV
"music": Audio
"game": PC/Games
"soft": PC
"literature": Books
"audiobook": Audio/Audiobook
"video": Movies
"image": Other
"xxx": XXX
modes:
search: [q]
settings:
- name: adverts
type: select
label: Include Advertising
default: "yes"
options:
"yes": "yes"
"no": "no"
- name: sort
type: select
label: Sort requested from site
default: "_"
options:
"_": "created"
"seeders": "seeders"
"size": "size"
search:
paths:
- path: browse.php
inputs:
s: "{{ .Keywords }}"
rek: "{{ .Config.adverts }}"
sort: "{{ re_replace .Config.sort \"_\" \"\"}}"
rows:
selector: table.browse-list > tbody > tr
fields:
category:
selector: td:nth-child(1) a
attribute: href
filters:
- name: querystring
args: tmp
title:
selector: a[href^="details.php?id="]
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="details.php?id="]
attribute: href
filters:
- name: replace
args: ["details", "download"]
description:
selector: img[src="styles/images/adwarn.png"]
optional: true
attribute: title
filters:
- name: replace
args: ["Присутствует реклама", "Contains Adverts"]
banner:
selector: a[href^="details.php?id="]
attribute: onmouseover
filters:
- name: regexp
args: "src=(.*?) "
date:
# Сегодня в 09:09 от
# Вчера в 22:47 от
selector: td:nth-child(2) div.b-info div span:nth-child(2):contains("Сегодня"), td:nth-child(2) div.b-info div span:nth-child(2):contains("Вчера")
optional: true
filters:
- name: regexp
args: "(.*?) от "
- name: replace
args: ["Сегодня в", "Today"]
- name: replace
args: ["Вчера в", "Yesterday"]
date:
# 08 ноября 2019 в 23:53 от
selector: td:nth-child(2) div.b-info div span:nth-child(2):not(:contains("Сегодня")):not(:contains("Вчера"))
optional: true
filters:
- name: regexp
args: "(.*?) от "
- name: replace
args: [" в ", " "]
- name: replace
args: ["января", "January"]
- name: replace
args: ["февраля", "February"]
- name: replace
args: ["марта ", "March"]
- name: replace
args: ["апреля", "April"]
- name: replace
args: ["мая", "May"]
- name: replace
args: ["июня", "June"]
- name: replace
args: ["июля", "July"]
- name: replace
args: ["августа", "August"]
- name: replace
args: ["сентября", "September"]
- name: replace
args: ["октября", "October"]
- name: replace
args: ["ноября", "November"]
- name: replace
args: ["декабря", "December"]
- name: dateparse
args: "02 January 2006 15:04"
size:
selector: td:nth-child(3)
filters:
- name: replace
args: ["ТБ", "TB"]
- name: replace
args: ["ГБ", "GB"]
- name: replace
args: ["МБ", "MB"]
- name: replace
args: ["КБ", "KB"]
seeders:
selector: td:nth-child(4)
filters:
- name: replace
args: ["?", "1"]
leechers:
selector: td:nth-child(5)
filters:
- name: replace
args: ["?", "0"]
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -6,6 +6,8 @@
type: private
encoding: windows-1252
links:
- https://bitspyder.net/
legacylinks:
- http://bitspyder.net/
caps:
@@ -21,7 +23,7 @@
- {id: 63, cat: Books, desc: "College"}
- {id: 53, cat: Books, desc: "Cooking"}
- {id: 42, cat: Books, desc: "Documentary"}
- {id: 37, cat: Books, desc: "e-Books"}
- {id: 37, cat: Books/Ebook, desc: "e-Books"}
- {id: 65, cat: Books, desc: "Engineering"}
- {id: 54, cat: Books, desc: "Health-Fitness"}
- {id: 64, cat: Books, desc: "Kids"}
@@ -29,28 +31,52 @@
- {id: 49, cat: Books, desc: "Linux CBTs"}
- {id: 43, cat: Books, desc: "Lynda.com"}
- {id: 57, cat: Books/Magazines, desc: "Magazines"}
- {id: 71, cat: Books, desc: "Magic"}
- {id: 71, cat: Books, desc: "Pluralsight"}
- {id: 60, cat: Books, desc: "Medical"}
- {id: 44, cat: Books, desc: "Misc Learning"}
- {id: 51, cat: Books, desc: "Music Learning"}
- {id: 41, cat: Books, desc: "Others"}
- {id: 52, cat: Books, desc: "Photography"}
- {id: 35, cat: Books, desc: "PPT 'n Docs"}
- {id: 38, cat: Books, desc: "Religion"}
- {id: 35, cat: Books, desc: "Developer"}
- {id: 38, cat: Books, desc: "Udemy"}
- {id: 68, cat: Books, desc: "Self Growth"}
- {id: 72, cat: Books, desc: "Templates"}
- {id: 58, cat: Books, desc: "Total Training"}
- {id: 45, cat: Books, desc: "Trainsignal"}
- {id: 59, cat: Books, desc: "VTC"}
- {id: 58, cat: Books, desc: "Packt"}
- {id: 45, cat: Books, desc: "Ethical hacking"}
- {id: 59, cat: Books, desc: "WEB | SocialMedia"}
modes:
search: [q]
tv-search: [q, season, ep]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "8"
options:
"8": "created"
"6": "seeders"
"4": "size"
"1": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: processid.php
method: post
path: login.php
method: form
form: form
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
@@ -62,14 +88,20 @@
search:
paths:
- path: browse.php
method: post
inputs:
search: "{{ .Query.Keywords }}"
incldead: "1"
search: "{{ .Keywords }}"
# 0 active 1 incldead 2 onlydead
incldead: 1
# 0 title 1 default
scope: 1
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table > tbody > tr[class]
filters:
- name: andmatch
fields:
# there are two styles, we support both
title:
@@ -99,7 +131,7 @@
selector: td.rowcol:nth-child(7):has(br), td.clear:nth-child(4)
filters:
- name: regexp
args: ([\d,]+)
args: (\d+)
seeders:
selector: td.rowcol:nth-last-child(3)
leechers:
@@ -136,3 +168,4 @@
description:
optional: true
selector: font[color="#990000"]
# custom v4

View File

@@ -0,0 +1,83 @@
---
site: bittorrentam
name: Bittorrent.AM
description: "Bittorrent.AM is a Public torrent index"
language: en-us
type: public
encoding: UTF-8
links:
- http://www.bittorrent.am/
caps:
categorymappings:
- {id: 0, cat: XXX, desc: "Adult"}
- {id: 1, cat: TV/Anime, desc: "Anime / Hentai"}
- {id: 2, cat: PC, desc: "Apps"}
- {id: 3, cat: Console, desc: "Games"}
- {id: 4, cat: Movies, desc: "Movies"}
- {id: 5, cat: Audio, desc: "Music"}
- {id: 6, cat: Other, desc: "Other"}
- {id: 7, cat: TV, desc: "Series / TV Shows"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: sort
type: select
label: Sort requested from site
default: "pdd"
options:
"pdd": "created desc"
"pd": "created asc"
"sdsd": "seeders desc"
"sds": "seeders asc"
"szd": "size desc"
"sz": "size asc"
"td": "title desc"
"t": "title asc"
download:
selector: a[ href^="magnet:?xt="]
attribute: href
search:
paths:
- path: "{{ if .Keywords }}search.php?kwds={{ .Keywords }}&ord={{ .Config.sort }}&cat=100{{else}}/{{end}}"
rows:
selector: table.torrentsTable:has(tr.r) tbody tr.r
fields:
category:
text: 6
title:
selector: td:nth-child(3) a
details:
selector: td:nth-child(3) a
attribute: href
download:
selector: td:nth-child(3) a
attribute: href
date:
selector: td:nth-child(1)
filters:
- name: dateparse
args: "02 Jan 2006"
size:
selector: td:nth-child(4)
seeders:
selector: td:nth-child(5)
filters:
- name: replace
args: ["-", "1"]
leechers:
selector: td:nth-child(6)
filters:
- name: replace
args: ["-", "0"]
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -69,6 +69,21 @@
type: info
label: Layout
default: "<ol><li>Only the English Classic profile is supported.<li>Make sure to set the <b>Torrent Listing (Listeleme Biçimi)</b> option in your profile to <b>Classic (Klasik)</b><li>And set the <b>Language (Dil)</b> to <b>English</b><li>Using the <i>Modern</i> theme will prevent results, and using <i>Turkish</i> will prevent upload dates.</ol>"
- name: sort
type: select
label: Sort requested from site
default: "added"
options:
"added": "created"
"seeders": "seeders"
"size": "size"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: ?p=home&pid=1
@@ -76,11 +91,10 @@
form: form#loginbox_form
submitpath: ajax/login.php
inputs:
action: "login"
action: login
loginbox_membername: "{{ .Config.username }}"
loginbox_password: "{{ .Config.password }}"
loginbox_remember: 1
loginbox_remember: "true"
selectorinputs:
securitytoken:
selector: "script:contains(\"stKey: \")"
@@ -100,16 +114,20 @@
- name: re_replace
args: ["[^a-zA-Z0-9]+", "%25"]
inputs:
p: "torrents"
pid: "32"
$raw: "{{range .Categories}}cid[]={{.}}&{{end}}"
p: torrents
pid: 32
$raw: "{{ range .Categories }}cid[]={{.}}&{{end}}"
keywords: "{{ .Keywords }}"
search_type: "name"
searchin: "title"
search_type: name
searchin: title
"sortOptions[sortBy]": "{{ .Config.sort }}"
"sortOptions[sortOrder]": "{{ .Config.type }}"
error:
- selector: div.error:not(:contains("Gösterilecek sonuç bulunamadı."))
rows:
selector: table#torrents_table_classic tr:has(td.torrent_name)
fields:
title:
selector: a[href*="?p=torrents&pid=10&action=details"]
@@ -159,9 +177,10 @@
attribute: href
downloadvolumefactor:
case:
"img[src$=\"/torrent_free.png\"]": "0.5"
"*": "1"
"img[src$=\"/torrent_free.png\"]": 0.5
"*": 1
uploadvolumefactor:
case:
"img[src$=\"/torrent_multiple_upload.png\"]": "2"
"*": "1"
"img[src$=\"/torrent_multiple_upload.png\"]": 2
"*": 1
# TSUE 2.2

View File

@@ -19,45 +19,74 @@
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 with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>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>"
- name: sort
type: select
label: Sort requested from site
default: "created_at"
options:
"created_at": "created"
"seeders": "seeders"
"size": "size"
"name": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: login
method: form
method: cookie
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: 1
error:
- selector: script[nonce]:contains("Error")
message:
selector: script[nonce]:contains("Error")
cookie: "{{ .Config.cookie }}"
test:
path: torrents
path: /
selector: a[href$="/logout"]
ratio:
path: /
selector: li:has(i.fa-sync-alt)
filters:
- name: regexp
args: "Ratio : (\\d+)"
search:
paths:
- path: filterTorrents
- path: torrents/filter
inputs:
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
$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
igdb: ""
sorting: "{{ .Config.sort }}"
sort: "{{ .Config.sort }}"
direction: "{{ .Config.type }}"
qty: 100
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="/categories/"]
attribute: href
filters:
- name: regexp
args: "/categories/.*?\\.(\\d+)"
args: "/categories/(\\d+)"
title:
selector: a.view-torrent
download:
@@ -73,6 +102,9 @@
filters:
- name: replace
args: ["https://via.placeholder.com/600x900", ""]
comments:
selector: a[href*="#comments"]
attribute: href
size:
selector: td:nth-last-child(4)
seeders:
@@ -83,7 +115,7 @@
selector: td:nth-last-child(1)
filters:
- name: regexp
args: ([\d\.]+)
args: (\d+)
imdb:
optional: true
selector: a[href*="www.imdb.com/title/tt"]
@@ -91,42 +123,51 @@
date:
selector: time
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portoguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese
- name: re_replace
args: ["(önce|tagasi|geleden|fa|temu|siden|atrás|nazpět|назад|acum|hace|il y a|vor|преди)", "ago"]
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前)", " ago"]
- name: re_replace
args: ["(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut)", "minute"]
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten)", "minutes"]
- name: re_replace
args: ["(dakika|minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten)", "minutes"]
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟)", " minute"]
- name: re_replace
args: ["(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur)", "hour"]
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden)", "hours"]
- name: re_replace
args: ["(saat|tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden)", "hours"]
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时)", " hour"]
- name: re_replace
args: ["(gün|päev|dag|giorno|dzień|dia|den|день|zi|día|jour|Tag|ден)", "day"]
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen)", "days"]
- name: re_replace
args: ["(gün|päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen)", "days"]
args: ["(?i)(gün|päev|dag|giorno|dzień|dia|den|день|zi|día|jour|Tag|ден|天)", " day"]
- name: re_replace
args: ["(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица)", "week"]
args: ["(?i)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
- name: re_replace
args: ["(hafta|nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周)", " week"]
- name: re_replace
args: [" (ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
args: ["(?i) (ay)", "month"]
- name: re_replace
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
downloadvolumefactor:
case:
"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"
i[class*="fa-id-badge text-orange"]: 0 # 24 Hour FreeLeech From BON Store
i[class*="fa-trophy text-purple"]: 0 # Special FreeLeech For Certain User Groups
i[class*="fa-star text-bold"]: 0 # Freeleech From Token
i[class*="fa-coins text-bold"]: 0 # Freeleech From Token
i[class*="fa-globe text-blue"]: 0 # Global Freeleech
i[class*="fa-star text-gold"]: 0 # Freeleech
i[class*="fa-certificate text-pink"]: 0 # Featured Torrent
"*": 1
uploadvolumefactor:
case:
"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 1.9.2
i[class*="fa-gem text-green"]: 2 # Single Torrent Double Upload
i[class*="fa-globe text-green"]: 2 # Global Double Upload
i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
"*": 1
# UNIT3D 2.3.0

View File

@@ -3,7 +3,7 @@
name: BookTracker
description: "BookTracker is a RUSSIAN Semi-Private Torrent Tracker for EBOOKS"
language: ru-ru
type: private
type: semi-private
encoding: UTF-8
links:
- https://booktracker.org/
@@ -15,6 +15,30 @@
modes:
search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "1"
options:
"1": "created"
"10": "seeders"
"7": "size"
"2": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: login.php
method: form
@@ -39,8 +63,8 @@
- path: tracker.php
inputs:
nm: "{{ .Keywords }}"
o: 1
s: 2
o: "{{ .Config.sort }}"
s: "{{ .Config.type }}"
tm: -1
sns: -1
@@ -69,6 +93,7 @@
date:
selector: td:last-child > u
downloadvolumefactor:
text: "1"
text: 1
uploadvolumefactor:
text: "1"
text: 1
# TorrentPier

View File

@@ -0,0 +1,118 @@
---
site: brasiltracker
name: BrasilTracker
description: "BrasilTracker is a BRAZILIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: en-us
encoding: UTF-8
type: private
links:
- https://brasiltracker.org/
caps:
categorymappings:
- {id: 1, cat: Other, desc: "Filmes/Series/Música"}
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: sort
type: select
label: Sort requested from site
default: "time"
options:
"time": "created"
"seeders": "seeders"
"size": "size"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
- name: info_results
type: info
label: "Search results"
default: "This indexer does not support <b>Torrent Groups</b><br />Un-tick the <b>Torrent grouping</b><i> (Habilitar Grupo de Torrents)</i> checkbox in your <b>Configurações</b>."
- name: info_categories
type: info
label: "About categories"
default: "BrasilTracker does not show <b>Categories</b> in its Search Results.<br />To use this indexer with Sonarr/Radarr set your indexer category to <b>7000</b>."
login:
path: login.php
method: form
form: form#loginform
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
keeplogged: 1
error:
- selector: form#loginform:contains("incorretos")
test:
path: index.php
selector: a[href^="logout.php?auth="]
search:
paths:
- path: torrents.php
inputs:
# torrents.php?searchstr=mandalorain&order_by=size&order_way=desc&action=basic&searchsubmit=1
searchstr: "{{ .Keywords }}"
order_by: "{{ .Config.sort }}"
order_way: "{{ .Config.type }}"
action: basic
searchsubmit: 1
rows:
selector: table#torrent_table > tbody > tr.torrent
fields:
category:
text: 1
title:
selector: a[href^="torrents.php?id="]
details:
selector: a[href^="torrents.php?id="]
attribute: href
download:
selector: a[href^="torrents.php?action=download&id="]
attribute: href
description:
selector: div.tags
banner:
selector: img[alt="Cover"]
attribute: src
files:
selector: td:nth-child(3)
date:
selector: span.time
attribute: title
filters:
- name: dateparse
args: "Jan 2 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.tl_free: 0
"*": 1
uploadvolumefactor:
case:
"*": 1
# engine n/a

View File

@@ -0,0 +1,145 @@
---
site: broadcity
name: BroadCity
description: "BroadCity is a TURKISH Private Torrent Tracker for MOVIES and TV"
language: tr
type: private
encoding: UTF-8
links:
- http://broadcity.in/
caps:
categorymappings:
- {id: 1, cat: Movies/UHD, desc: "UHD"}
- {id: 2, cat: Movies/HD, desc: "BluRay"}
- {id: 8, cat: Movies/HD, desc: "TV"}
- {id: 6, cat: Movies/HD, desc: "WEB-DL"}
- {id: 16, cat: Movies/HD, desc: "WEBRip"}
- {id: 3, cat: Movies/HD, desc: "Movies HD"}
- {id: 25, cat: Movies/3D, desc: "Movies 3D"}
- {id: 4, cat: Movies/HD, desc: "BluRay"}
- {id: 7, cat: Movies/HD, desc: "TV"}
- {id: 5, cat: Movies/HD, desc: "WEB-DL"}
- {id: 14, cat: Movies/HD, desc: "WEBRip"}
- {id: 27, cat: Movies/HD, desc: "LORD Rips"}
- {id: 9, cat: Movies/SD, desc: "SD"}
- {id: 23, cat: Movies/SD, desc: "BluRay"}
- {id: 10, cat: Movies/SD, desc: "DVD"}
- {id: 12, cat: Movies/SD, desc: "TV"}
- {id: 13, cat: Movies/SD, desc: "WEB-DL"}
- {id: 15, cat: Movies/SD, desc: "WEBRip"}
- {id: 17, cat: TV, desc: "TV"}
- {id: 26, cat: TV/Other, desc: "TV Program"}
- {id: 19, cat: TV, desc: "Yabanci Dizi"}
- {id: 18, cat: TV, desc: "Yerli Dizi"}
- {id: 20, cat: Movies/HD, desc: "VIP"}
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: info
type: info
label: Captcha Text Note
default: The <i>Captcha Text</i> code is <b>case sensitive</b>.
login:
path: login.php
method: form
form: form[action$="takelogin.php"]
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
captcha:
type: image
selector: img#regimage
input: imagestring
error:
- selector: table:contains("Bir Hata oluştu!")
- selector: table:contains("Bir Hata Oluştu!")
- selector: table:contains("Login Giriş Kilitlendi!")
test:
path: index.php
selector: a[href*="/logout.php?logouthash="]
ratio:
path: index.php
selector: div#top div:nth-child(2) span:nth-child(2)
filters:
- name: regexp
args: "Ratio: (.+?) Bonus:"
search:
paths:
- path: browse.php
keywordsfilters:
- name: re_replace # E01 to BL01
args: ["(?i)\\bE(\\d+)\\b", "E$1"]
inputs:
# does not support multi categories so defaulting to ALL
do: search
keywords: "{{ .Keywords }}"
category: 0
search_type: t_name
include_dead_torrents: yes
rows:
selector: table#sortabletable tbody tr:has(div[id^="port-target-"])
fields:
title:
selector: div[id^="port-target-"] a
filters:
- name: re_replace # BL01 to E01
args: ["(?i)\\bBL(\\d+)\\b", " E$1 "]
details:
selector: div[id^="port-target-"] a
attribute: href
category:
selector: a[href*="browse.php?category="]
attribute: href
filters:
- name: querystring
args: category
banner:
selector: div[id^="port-content-"] img
attribute: src
date:
selector: td:nth-child(2)
filters:
- name: regexp
args: (\d{2}-\d{2}-\d{4} \d{2}:\d{2})
filters:
- name: dateparse
args: "02-01-2006 15:04"
download:
selector: a[href*="download.php?id="]
attribute: href
comments:
selector: td:nth-child(4) a
attribute: href
size:
selector: td:nth-child(5)
grabs:
selector: td:nth-child(6)
seeders:
selector: td:nth-child(7)
leechers:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img[src$="/freedownload.gif"]: 0
img[src$="/silverdownload.gif"]: 0.5
"*": 1
uploadvolumefactor:
case:
img[src$="/x2.gif"]: 2
"*": 1

View File

@@ -0,0 +1,141 @@
---
site: brobits
name: BRObits
description: "BRObits is a CHINESE Private Torrent Tracker for HD MOVIES / TV"
language: zh-cn
type: private
encoding: UTF-8
links:
- https://brobits.cc/
caps:
categorymappings:
- {id: 401, cat: Movies, desc: "Movies/电影"}
- {id: 404, cat: TV/Documentary, desc: "Documentaries/纪录片"}
- {id: 410, cat: TV, desc: "TV Series/剧集"}
modes:
search: [q]
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>"
- name: sort
type: select
label: Sort requested from site
default: "4"
options:
"4": "created"
"7": "seeders"
"5": "size"
"1": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
search:
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
# 0 incldead 1 active 2 dead
incldead: 0
# 0 all 1 normal 2 free 3 2x 4 2xfree 5 50% 6 2x50% 7 30%
spstate: 0
# 0 title 1 descr 3 uploader 4 imdburl
search_area: "{{ if .Query.IMDBID }}4{{else}}0{{end}}"
# 0 AND 1 OR 2 exact
search_mode: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
title:
selector: a[href^="details.php?id="]
title:
optional: true
selector: a[title][href^="details.php?id="]
attribute: title
category:
selector: a[href^="?cat="]
attribute: href
filters:
- name: querystring
args: cat
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
imdb:
optional: true
selector: div.imdb_100 > a
attribute: href
date:
# time type: time elapsed (default)
selector: td:nth-child(4) > span[title]
attribute: title
optional: true
filters:
- name: append
args: " +08:00"
- name: dateparse
args: "2006-01-02 15:04:05 -07:00"
date:
# time added
selector: td:nth-child(4):not(:has(span))
optional: true
filters:
- name: append
args: " +08:00"
- name: dateparse
args: "2006-01-0215:04:05 -07:00"
size:
selector: td:nth-child(5)
seeders:
selector: td:nth-child(6)
leechers:
selector: td:nth-child(7)
grabs:
selector: td:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
description:
selector: td:nth-child(2)
remove: a, img
# NexusPHP Standard v1.5 Beta 4

View File

@@ -1,70 +0,0 @@
---
site: btbit
name: btbit
description: "btbit is a public magnet search engine for MOVIES / GENERAL. This definition is for the English site."
language: en-us
type: public
encoding: UTF-8
links:
- http://en.btbit.org/
caps:
categories:
"Movie": Movies
"Package": PC/0day
"Other": Other
"Software": PC
"Mirror": PC/ISO
"Music": Audio
"Picture": Other/Misc
"Document": Books
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
search:
paths:
# site returns just 15 results per page, attempt to fetch 100
- path: "list/{{if .Keywords}}{{.Keywords}}{{else}}movie{{end}}/1-1-0.html"
- path: "list/{{if .Keywords}}{{.Keywords}}{{else}}movie{{end}}/2-1-0.html"
- path: "list/{{if .Keywords}}{{.Keywords}}{{else}}movie{{end}}/3-1-0.html"
- path: "list/{{if .Keywords}}{{.Keywords}}{{else}}movie{{end}}/4-1-0.html"
- path: "list/{{if .Keywords}}{{.Keywords}}{{else}}movie{{end}}/5-1-0.html"
- path: "list/{{if .Keywords}}{{.Keywords}}{{else}}movie{{end}}/6-1-0.html"
- path: "list/{{if .Keywords}}{{.Keywords}}{{else}}movie{{end}}/7-1-0.html"
rows:
selector: .rs:has(a[href^="magnet:?xt"])
fields:
title:
selector: .title
category:
selector: .sbar span[class^="cpill"]
details:
selector: .title h3 a
attribute: href
download:
selector: .sbar a[href^="magnet:?xt"]
attribute: href
date:
selector: .sbar span:nth-of-type(3) b
filters:
- name: dateparse
args: "2006-01-02"
size:
selector: .sbar span:nth-of-type(4) b
files:
selector: .sbar span:nth-of-type(5) b
grabs:
selector: .sbar span:nth-of-type(6) b
seeders:
text: "1"
leechers:
text: "1"
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -6,10 +6,11 @@
type: public
encoding: UTF-8
links:
- https://btdb.eu/
- https://btdb.io/
legacylinks:
- https://btdb.to/
- https://btdb.unblocked.app/
- https://btdb.eu/
caps:
categorymappings:
@@ -25,43 +26,66 @@
type: info
label: Category for Sonarr and Radarr
default: BTDB does not use categories. In your Sonarr or Radarr Torznab Indexer settings, set the category to 100001.
- name: sort
type: select
label: Sort requested from site
default: "time"
options:
"time": "created"
"length": "size"
"seeders": "seeders"
search:
paths:
- path: "{{if .Keywords}}?search={{ .Keywords}}&sort=time{{else}}recent{{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}}"
- path: "{{ if .Keywords }}search/{{ .Keywords }}/{{else}}recent{{end}}?sort={{ .Config.sort }}"
- path: "{{ if .Keywords }}search/{{ .Keywords }}/{{else}}recent{{end}}?sort={{ .Config.sort }}&page=2"
- path: "{{ if .Keywords }}search/{{ .Keywords }}/{{else}}recent{{end}}?sort={{ .Config.sort }}&page=3"
- path: "{{ if .Keywords }}search/{{ .Keywords }}/{{else}}recent{{end}}?sort={{ .Config.sort }}&page=4"
- path: "{{ if .Keywords }}search/{{ .Keywords }}/{{else}}recent{{end}}?sort={{ .Config.sort }}&page=5"
rows:
selector: li[class$="item"]
selector: div.media
fields:
title:
selector: h2[class$="title"] a[href*="/torrent/"]
attribute: title
category:
text: "1"
text: 1
title:
selector: a[href^="/torrent/"]
details:
selector: h2[class$="title"] a[href*="/torrent/"]
selector: a[href^="/torrent/"]
attribute: href
download:
selector: a[href$=".torrent"]
attribute: href
magnet:
selector: div[class$="info"] a[href^="magnet:?xt="]
selector: a[href^="magnet:?xt="]
attribute: href
banner:
selector: a.img-thumbnail img
attribute: src
filters:
- name: replace
args: ["https://btdb.io/assets/img/placeholder.png", ""]
size:
selector: div[class$="info"] span:nth-of-type(1)
selector: small:nth-of-type(1) strong
files:
selector: div[class$="info"] span:nth-of-type(2)
selector: small:nth-of-type(2) strong
seeders:
selector: small:nth-of-type(3) strong
filters:
- name: replace
args: [",", ""]
leechers:
selector: small:nth-of-type(4) strong
filters:
- name: replace
args: [",", ""]
date:
selector: div[class$="info"] span:nth-of-type(3)
selector: small:nth-of-type(5) strong
filters:
- name: timeago
grabs:
selector: div[class$="info"] span:nth-of-type(4)
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: "0"
text: 0
uploadvolumefactor:
text: "1"
text: 1
# engine n/a

View File

@@ -21,34 +21,29 @@
- name: info
type: info
default: BTDigg does not use categories. In your software Indexer settings, set the category to 100001.
- name: sort
type: select
label: Sort requested from site
default: "2"
options:
"2": "created"
"3": "size"
search:
# https://btdig.com/search?q=test&order=2
# only 10 results per page
# https://btdig.com/search?q=test&p=1&order=2
paths:
- path: search
- path: search
inputs:
p: 1
- path: search
inputs:
p: 2
- path: search
inputs:
p: 3
- path: search
inputs:
p: 4
inputs:
q: "{{if .Keywords }}{{.Keywords}}{{else}}test{{end}}"
order: 2
headers:
user-agent: ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"]
q: "{{ if .Keywords }}{{ .Keywords }}{{else}}test{{end}}"
# 0 relevance 2 age 3 size 4 files
order: "{{ .Config.sort }}"
rows:
selector: div.one_result
filters:
- name: andmatch
fields:
title:
selector: div.torrent_name a
@@ -77,6 +72,7 @@
leechers:
text: 1
downloadvolumefactor:
text: "0"
text: 0
uploadvolumefactor:
text: "1"
text: 1
# dhtcrawler2

View File

@@ -0,0 +1,81 @@
---
site: btetree
name: BT.etree
description: "BT.etree is a Public Tracker dedicated to Bootleg FLAC MUSIC"
language: en-us
type: public
encoding: UTF-8
links:
- https://bt.etree.org/
legacylinks:
- http://bt.etree.org/
caps:
categories:
"Music": Audio/Lossless
modes:
search: [q]
music-search: [q, album, artist, label, year]
settings:
- name: sort
type: select
label: Sort requested from site
default: "added"
options:
"added": "created"
"seeders": "seeders"
"name": "title"
search:
paths:
# http://bt.etree.org/?searchzzzz=&cat=0
- path: /
inputs:
searchzzzz: "{{ if .Query.Artist }}{{ .Query.Artist }}{{else}}{{ .Keywords }}{{end}}"
cat: 0
sort: "{{ .Config.sort }}"
rows:
selector: table[bgcolor="#CCCCCC"] tbody tr:has(a[href^="download.php"])
filters:
- name: andmatch
fields:
category:
text: "Music"
title:
selector: a.details_link
details:
selector: a.details_link
attribute: href
download:
selector: a[href^="download.php"]
attribute: href
files:
selector: td:nth-child(4)
comments:
selector: td:nth-child(5) a
attribute: href
date:
selector: td:nth-child(6)
filters:
- name: dateparse
args: "01/02 15:04"
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:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -0,0 +1,68 @@
---
site: bteye
name: BTeye
description: "BTeye is a Public BitTorrent DHT search engine."
language: en-us
type: public
encoding: UTF-8
links:
- https://www.bteye.org/
caps:
categories:
1: Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: info
type: info
default: BTeye does not use categories. In your software Indexer settings, set the category to 100001.
download:
selector: a[href^="magnet:?xt="]
attribute: href
search:
# https://www.bteye.org/q/2020
paths:
- path: "q/{{ if .Keywords }}{{ .Keywords }}{{else}}2020{{end}}"
rows:
selector: div.plist
filters:
- name: andmatch
fields:
category:
text: 1
title:
selector: div.pname a
attribute: title
details:
selector: div.pname a
attribute: href
download:
selector: div.pname a
attribute: href
date:
selector: div.plink b:nth-of-type(3)
filters:
- name: dateparse
args: "2006-01-02"
files:
selector: div.plink b:nth-of-type(2)
size:
selector: div.plink b:nth-of-type(1)
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -39,7 +39,7 @@
movie-search: [q]
login:
path: takelogin__akcja.php
path: takelogin_action.php
method: post
inputs:
username_dupa: "{{ .Config.username }}"
@@ -89,7 +89,7 @@
args: "{{ .Result.description }}"
imdb:
optional: true
selector: a[href^="http://www.imdb.com/title/tt"]
selector: a[href*="www.imdb.com/title/tt"]
date:
selector: td:nth-child(5)
filters:
@@ -114,4 +114,4 @@
"img[src=\"pic/ico_disk2.png\"]": 1
"*": 1
uploadvolumefactor:
text: "1"
text: "1"

View File

@@ -1,79 +0,0 @@
---
site: btkitty
name: BTKitty
description: "BTKITTY is a Public BitTorrent DHT search engine."
language: en-us
type: public
encoding: UTF-8
followredirect: true
links:
- 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/
- http://btkitty.pet/
caps:
categorymappings:
- {id: 1, cat: Other, desc: "Other"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: info
type: info
default: BTKitty does not use categories. In your software Indexer settings, set the category to 100001.
download:
selector: a[href^="magnet:?"]
search:
paths:
- path: /
method: post
followredirect: true
inputs:
keyword: "{{if .Keywords }}{{.Keywords}}{{else}}test{{end}}"
hidden: "true"
rows:
selector: dl.list-con
filters:
- name: andmatch
fields:
title:
selector: dt a
category:
text: "1"
details:
selector: dt a
attribute: href
download:
selector: dt a
attribute: href
size:
selector: dd span:nth-of-type(4) b
files:
selector: dd span:nth-of-type(5) b
date:
selector: dd span:nth-of-type(3) b
filters:
- name: dateparse
args: "2006-01-02"
grabs:
selector: dd span:nth-of-type(7) b
seeders:
text: "1"
leechers:
text: "1"
downloadvolumefactor:
text: "0"
uploadvolumefactor:
text: "1"

View File

@@ -7,6 +7,7 @@
encoding: UTF-8
links:
- http://tracker.btnext.com/
# note: the site forces http, https is not supported
caps:
categorymappings:
@@ -15,67 +16,76 @@
- {id: 89, cat: Console, desc: "Games"}
- {id: 87, cat: TV, desc: "Series"}
- {id: 93, cat: Audio, desc: "Musica"}
- {id: 108, cat: Movies, desc: "ViP"}
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 70, cat: Movies/3D, desc: "3D"}
- {id: 71, cat: Movies/Sd, desc: "480p"}
- {id: 72, cat: Movies/BluRay, desc: "BD-R"}
- {id: 31, cat: Movies/HD, desc: "BDRIP/BRRip"}
- {id: 16, cat: Movies/SD, desc: "CAM"}
- {id: 74, cat: Movies/DVD, desc: "DvD-R"}
- {id: 17, cat: Movies/HD, desc: "HD"}
- {id: 91, cat: Movies/Other, desc: "Kids"}
- {id: 76, cat: Movies, desc: "Packs"}
- {id: 77, cat: Movies/WEBDL, desc: "WEB-DL"}
- {id: 14, cat: Movies/SD, desc: "DVDRip/XViD"}
- {id: 85, cat: Movies/DVD, desc: "Custom-DVDR"}
- {id: 96, cat: Movies/HD, desc: "4K"}
- {id: 6, cat: PC, desc: "Applications"}
- {id: 18, cat: PC/ISO, desc: "PC Applications"}
- {id: 19, cat: PC/Mac, desc: "Macintosh Applications"}
- {id: 34, cat: PC/ISO, desc: "Linux Applications"}
- {id: 7, cat: Audio, desc: "Music"}
- {id: 20, cat: Audio/Video, desc: "MVideo"}
- {id: 21, cat: Audio/MP3, desc: "Mp3"}
- {id: 33, cat: Audio/Other, desc: "Mp4"}
- {id: 32, cat: Audio/Lossless, desc: "FLAC"}
- {id: 2, cat: Console, desc: "Games"}
- {id: 78, cat: PC/Games, desc: "Linux"}
- {id: 79, cat: PC/Mac, desc: "MacOSX"}
- {id: 28, cat: Console/NDS, desc: "Nintendo DS"}
- {id: 27, cat: PC/Games, desc: "PC/Windows"}
- {id: 80, cat: Console/PS3, desc: "PS2"}
- {id: 81, cat: Console/PS3, desc: "PS3"}
- {id: 82, cat: Console/PS4, desc: "PS4"}
- {id: 83, cat: Console/PSP, desc: "PSP"}
- {id: 95, cat: Console/PSVita, desc: "PSVITA"}
- {id: 4, cat: Console/Wii, desc: "Wii"}
- {id: 26, cat: Console/Xbox360, desc: "XBOX360"}
- {id: 84, cat: Console/Xbox, desc: "XONE"}
- {id: 70, cat: Movies/3D, desc: "Movies 3D"}
- {id: 71, cat: Movies/SD, desc: "Movies 480p"}
- {id: 72, cat: Movies/BluRay, desc: "Movies BD-R"}
- {id: 31, cat: Movies/HD, desc: "Movies BDRIP/BRRip"}
- {id: 16, cat: Movies/SD, desc: "Movies CAM"}
- {id: 74, cat: Movies/DVD, desc: "Movies DvD-R"}
- {id: 76, cat: Movies, desc: "Movies Packs"}
- {id: 91, cat: Movies/Other, desc: "Movies Kids"}
- {id: 77, cat: Movies/WEBDL, desc: "Movies WEB-DL"}
- {id: 85, cat: Movies/DVD, desc: "Movies Custom-DVDR"}
- {id: 14, cat: Movies/SD, desc: "Movies DVDRip/XViD"}
- {id: 98, cat: Movies/Other, desc: "Movies Juvenil"}
- {id: 104, cat: Movies/UHD, desc: "Movies Bluray-UHD"}
- {id: 102, cat: Movies/HD, desc: "Movies HD-720p"}
- {id: 101, cat: Movies/HD, desc: "Movies HD-1080p"}
- {id: 103, cat: Movies/UHD, desc: "Movies HD-2160p"}
- {id: 42, cat: TV, desc: "TV Series"}
- {id: 45, cat: TV/Documentary, desc: "Documentaries"}
- {id: 46, cat: TV/Sport, desc: "Sports"}
- {id: 47, cat: TV/HD, desc: "TV-Bluray"}
- {id: 48, cat: TV/SD, desc: "TV-Dvd-R"}
- {id: 49, cat: TV/SD, desc: "TV-DVDRiP"}
- {id: 50, cat: TV, desc: "TV-Packs"}
- {id: 92, cat: TV/Anime, desc: "TV-Kids"}
- {id: 52, cat: TV/SD, desc: "TV-SDx264"}
- {id: 53, cat: TV/WEB-DL, desc: "TV-WEB-DL"}
- {id: 55, cat: TV/HD, desc: "TV-X264"}
- {id: 47, cat: TV/HD, desc: "TV Bluray"}
- {id: 48, cat: TV/SD, desc: "TV Dvd-R"}
- {id: 49, cat: TV/SD, desc: "TV DVDRiP"}
- {id: 50, cat: TV, desc: "TV Packs"}
- {id: 92, cat: TV, desc: "TV Kids"}
- {id: 112, cat: TV, desc: "TV Juvenil"}
- {id: 52, cat: TV/SD, desc: "TV SDx264"}
- {id: 53, cat: TV/WEB-DL, desc: "TV WEB-DL"}
- {id: 55, cat: TV/HD, desc: "TV X264"}
- {id: 56, cat: TV/SD, desc: "TV-XViD"}
- {id: 44, cat: TV, desc: "Miscellaneous"}
- {id: 51, cat: TV/Anime, desc: "Anime"}
- {id: 54, cat: Audio/Audiobook, desc: "Audiobook"}
- {id: 57, cat: Books, desc: "E-Books"}
- {id: 58, cat: Books/Comics, desc: "Comics"}
- {id: 59, cat: Books, desc: "Educational"}
- {id: 60, cat: Books, desc: "Magazines/Journals"}
- {id: 7, cat: Audio, desc: "Music"}
- {id: 20, cat: Audio/Video, desc: "Music MVideo"}
- {id: 21, cat: Audio/MP3, desc: "Music MP3"}
- {id: 33, cat: Audio/Other, desc: "Music MP4"}
- {id: 32, cat: Audio/Lossless, desc: "Music FLAC"}
- {id: 2, cat: Console, desc: "Games"}
- {id: 78, cat: PC/Games, desc: "Games Linux"}
- {id: 79, cat: PC/Mac, desc: "Games MacOSX"}
- {id: 28, cat: Console/NDS, desc: "Games Nintendo DS"}
- {id: 27, cat: PC/Games, desc: "Games PC/Windows"}
- {id: 80, cat: Console/PS3, desc: "Games PS2"}
- {id: 81, cat: Console/PS3, desc: "Games PS3"}
- {id: 82, cat: Console/PS4, desc: "Games PS4"}
- {id: 83, cat: Console/PSP, desc: "Games PSP"}
- {id: 95, cat: Console/PSVita, desc: "Games PSVITA"}
- {id: 4, cat: Console/Wii, desc: "Games Wii"}
- {id: 26, cat: Console/Xbox360, desc: "Games XBOX360"}
- {id: 84, cat: Console/Xbox, desc: "Games XONE"}
- {id: 6, cat: PC, desc: "Applications"}
- {id: 18, cat: PC/ISO, desc: "Applications PC"}
- {id: 19, cat: PC/Mac, desc: "Applications Macintosh"}
- {id: 34, cat: PC/ISO, desc: "Applications Linux"}
- {id: 44, cat: Other, desc: "Miscellaneous"}
- {id: 54, cat: Audio/Audiobook, desc: "Books Audiobook"}
- {id: 57, cat: Books, desc: "Books E-Books"}
- {id: 58, cat: Books/Comics, desc: "Books Comics"}
- {id: 59, cat: Books, desc: "Books Educational"}
- {id: 60, cat: Books, desc: "Books Magazines/Journals"}
- {id: 61, cat: Other, desc: "Pics/Wallpapers"}
- {id: 62, cat: PC/Phone-Android, desc: "Android"}
- {id: 63, cat: PC/Phone-IOS, desc: "iOS"}
- {id: 66, cat: PC/Phone-Other, desc: "WindowsPhone"}
- {id: 90, cat: Other, desc: "GPS"}
- {id: 68, cat: Other, desc: "Others"}
- {id: 100, cat: Other, desc: "Revistas"}
- {id: 109, cat: TV/Anime, desc: "Anime"}
- {id: 51, cat: TV/Anime, desc: "Anime Filmes"}
- {id: 99, cat: TV/Anime, desc: "Anime Hentai"}
- {id: 110, cat: TV/Anime, desc: "Anime TV Séries"}
- {id: 41, cat: XXX, desc: "XXX"}
- {id: 64, cat: XXX, desc: "XXX-Magazines"}
- {id: 65, cat: XXX, desc: "XXX-Movies"}
@@ -85,6 +95,34 @@
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: info
type: info
label: Layout
default: "<ol><li>Only the English Classic profile is supported.<li>Make sure to set the <b>Torrent Listing (Lista de Torrents)</b> option in your profile to <b>Classic (Clássico)</b><li>Using the <i>Moderna</i> theme will prevent results.</ol>"
- name: sort
type: select
label: Sort requested from site
default: "added"
options:
"added": "created"
"seeders": "seeders"
"size": "size"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: ?p=home&pid=1
@@ -92,10 +130,10 @@
form: form#loginbox_form
submitpath: /ajax/login.php
inputs:
action: "login"
action: login
loginbox_membername: "{{ .Config.username }}"
loginbox_password: "{{ .Config.password }}"
loginbox_remember: "true"
loginbox_remember: 1
selectorinputs:
securitytoken:
selector: "script:contains(\"stKey: \")"
@@ -115,16 +153,20 @@
- name: re_replace
args: ["[^a-zA-Z0-9]+", "%25"]
inputs:
p: "torrents"
pid: "32"
$raw: "{{range .Categories}}cid[]={{.}}&{{end}}"
p: torrents
pid: 32
$raw: "{{ range .Categories }}cid[]={{.}}&{{end}}"
keywords: "{{ .Keywords }}"
search_type: "name"
searchin: "title"
search_type: name
searchin: title
"sortOptions[sortBy]": "{{ .Config.sort }}"
"sortOptions[sortOrder]": "{{ .Config.type }}"
error:
- selector: div.error:not(:contains("Não existem resultados encontrados."))
- selector: div.error:not(:contains("Não existem resultados encontrados.")):not(:contains("There are no results found."))
rows:
selector: table#torrents_table_classic > tbody > tr:has(td.torrent_name)
fields:
title:
selector: a[href*="?p=torrents&pid=10&action=details"]
@@ -154,11 +196,11 @@
attribute: href
downloadvolumefactor:
case:
"img[title=\"FREE!\"]": "0"
"*": "1"
"img[title=\"FREE!\"]": 0
"*": 1
uploadvolumefactor:
case:
"*": "1"
"*": 1
date:
selector: td.torrent_name > abbr.timeago
optional: true
@@ -194,3 +236,4 @@
args: ["Domingo", "Sunday"]
- name: dateparse
args: "02-01-2006 15:04"
# TSUE 2.2

View File

@@ -27,30 +27,29 @@
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:
path: login.php
method: form
form: form[action="takelogin.php"]
captcha:
type: image
selector: img[alt="CAPTCHA"]
input: imagestring
method: cookie
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: td.embedded:has(h2:contains("登錄失敗"))
- selector: td.embedded:has(h2:contains("失败"))
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: torrents.php
inputs:
$raw: "{{range .Categories}}cat{{.}}=1&{{end}}"
search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
$raw: "{{ range .Categories }}cat{{.}}=1&{{end}}"
search: "{{if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
# 0 incldead 1 active 2 justdead
incldead: 0
# promotion: 0 all 1 normal 2 free 3 2x 4 2xfree 5 50% 6 2x 50% 7 30%
@@ -63,8 +62,10 @@
search_mode: 0
sort: 4
type: desc
rows:
selector: table.torrents > tbody > tr:has(table.torrentname)
fields:
category:
selector: a[href^="?cat="]
@@ -99,19 +100,19 @@
selector: td.rowfollow:nth-child(8)
downloadvolumefactor:
case:
img.pro_free: "0"
img.pro_free2up: "0"
img.pro_50pctdown: "0.5"
img.pro_50pctdown2up: "0.5"
img.pro_30pctdown: "0.3"
"*": "1"
img.pro_free: 0
img.pro_free2up: 0
img.pro_50pctdown: 0.5
img.pro_50pctdown2up: 0.5
img.pro_30pctdown: 0.3
"*": 1
uploadvolumefactor:
case:
img.pro_50pctdown2up: "2"
img.pro_free2up: "2"
img.pro_2up: "2"
"*": "1"
img.pro_50pctdown2up: 2
img.pro_free2up: 2
img.pro_2up: 2
"*": 1
description:
selector: td:nth-child(2)
remove: a, img
# NexusPHP
# NexusPHP Standard v1.5 Beta 4

View File

@@ -0,0 +1,60 @@
---
site: btsow
name: BTSOW
description: "BTSOW is a Public torrent indexer"
language: en-us
type: public
encoding: UTF-8
links:
- https://btio.pw/
legacylinks:
- https://btos.pw/
caps:
categories:
"other": Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
download:
selector: a#magnetOpen
attribute: href
search:
paths:
- path: "search/{{ if .Keywords }}{{ .Keywords }}{{else}}2019{{end}}"
rows:
selector: div.row:has(a[href*="/detail/hash/"])
fields:
category:
text: other
title:
selector: a[href*="/detail/hash/"]
attribute: title
details:
selector: a[href*="/detail/hash/"]
attribute: href
download:
selector: a[href*="/detail/hash/"]
attribute: href
date:
selector: div.date
filters:
- name: dateparse
args: "2006-01-02"
size:
selector: div.size
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -19,6 +19,22 @@
type: info
label: "Search results"
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."
- name: sort
type: select
label: Sort requested from site
default: "3"
options:
"3": "created"
"5": "seeders"
"4": "size"
"2": "title"
- name: type
type: select
label: Order requested from site
default: "2"
options:
"2": "desc"
"1": "asc"
caps:
categorymappings:
@@ -63,14 +79,17 @@
- path: index.php
inputs:
page: torrents
search: "{{if .Query.IMDBID}}{{.Query.IMDBID}}{{else}}{{.Keywords}}{{end}}"
category: "{{if .Categories}}{{range .Categories}}{{.}};{{end}}{{else}}0{{end}}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
category: "{{ if .Categories }}{{ range .Categories }}{{.}};{{end}}{{else}}0{{end}}"
# options: 0=title, 1=title&descr, 2=descr
options: "{{if .Query.IMDBID}}1{{else}}0{{end}}"
options: "{{ if .Query.IMDBID }}1{{else}}0{{end}}"
active: 0
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"
rows:
selector: table.lista tr td table.lista tr:has(a[href^="index.php?page=torrent-details"])
fields:
title:
selector: td a[href^="index.php?page=torrent-details"]
@@ -88,7 +107,7 @@
attribute: href
imdb:
optional: true
selector: a[href*="http://www.imdb.com/title/"]
selector: a[href*="www.imdb.com/title/tt"]
attribute: href
filters:
# http://anonym.to?javascript:popdetails('http://www.imdb.com/title/tt0086817');
@@ -123,7 +142,8 @@
selector: td:nth-child(8)
downloadvolumefactor:
case:
img[src="gold/gold.gif"]: "0"
"*": "1"
img[src="gold/gold.gif"]: 0
"*": 1
uploadvolumefactor:
text: "1"
text: 1
# xbtit 2.0.0

View File

@@ -15,53 +15,53 @@
categorymappings:
- {id: 65, cat: Movies/HD, desc: "BD: BD"}
- {id: 68, cat: Books/Magazines, desc: "Ebooks: Presse"}
- {id: 56, cat: Books/Ebook, desc: "Ebooks: Ebooks"}
- {id: 90, cat: Audio/Audiobook, desc: "Ebooks: Audio books"}
- {id: 84, cat: XXX, desc: "Ebooks: XXX"}
- {id: 56, cat: Books/Ebook, desc: "Ebooks: Ebooks"}
- {id: 95, cat: Books/Comics, desc: "Ebooks: Mangas"}
- {id: 53, cat: Movies/HD, desc: "Films: 4K"}
- {id: 50, cat: Movies/UHD, desc: "Films: 4K-Remux"}
- {id: 72, cat: Movies/HD, desc: "Films: x265"}
- {id: 84, cat: XXX, desc: "Ebooks: XXX"}
- {id: 54, cat: Movies/3D, desc: "Films: 3D"}
- {id: 71, cat: Movies/BluRay, desc: "Films: Full Bluray"}
- {id: 96, cat: Movies, desc: "Films: Remux"}
- {id: 53, cat: Movies/HD, desc: "Films: 4K"}
- {id: 77, cat: Movies/UHD, desc: "Films: 4K-HDR"}
- {id: 82, cat: Movies/UHD, desc: "Films: 4K-light"}
- {id: 50, cat: Movies/UHD, desc: "Films: 4K-Remux"}
- {id: 61, cat: Movies, desc: "Films: Animation"}
- {id: 48, cat: Movies/BluRay, desc: "Films: BDRip / BRRip"}
- {id: 78, cat: Movies/DVD, desc: "Films: DVD-R"}
- {id: 47, cat: Movies/DVD, desc: "Films: DVDRip"}
- {id: 71, cat: Movies/BluRay, desc: "Films: Full Bluray"}
- {id: 63, cat: Movies/HD, desc: "Films: HD TV"}
- {id: 52, cat: Movies/HD, desc: "Films: HD.1080p"}
- {id: 51, cat: Movies/HD, desc: "Films: HD.720p"}
- {id: 80, cat: Movies/HD, desc: "Films: HDLiGHT / M-HD"}
- {id: 87, cat: Movies/HD, desc: "Films: HDRiP"}
- {id: 60, cat: Movies, desc: "Films: Pack"}
- {id: 47, cat: Movies/DVD, desc: "Films: DVDRip"}
- {id: 48, cat: Movies/BluRay, desc: "Films: BDRip / BRRip"}
- {id: 80, cat: Movies/HD, desc: "Films: HDLiGHT / M-HD"}
- {id: 63, cat: Movies/HD, desc: "Films: HD TV"}
- {id: 58, cat: Movies/WEBDL, desc: "Films: Web - DL"}
- {id: 96, cat: Movies, desc: "Films: Remux"}
- {id: 75, cat: TV, desc: "Films: TVRiP"}
- {id: 61, cat: Movies, desc: "Films: Animation"}
- {id: 82, cat: TV/Anime, desc: "Films: Mangas"}
- {id: 55, cat: Movies, desc: "Films: VOSTFR"}
- {id: 89, cat: Movies, desc: "Films: VO"}
- {id: 57, cat: Movies/WEBDL, desc: "Films: WebRip"}
- {id: 98, cat: Movies, desc: "Films: VFSTFR"}
- {id: 89, cat: Movies, desc: "Films: VO"}
- {id: 55, cat: Movies, desc: "Films: VOSTFR"}
- {id: 58, cat: Movies/WEBDL, desc: "Films: Web - DL"}
- {id: 57, cat: Movies/WEBDL, desc: "Films: WebRip"}
- {id: 72, cat: Movies/HD, desc: "Films: x265"}
- {id: 1, cat: XXX, desc: "Films: XXX"}
- {id: 97, cat: Console, desc: "Jeux : Android"}
- {id: 81, cat: Console, desc: "Jeux : Consoles"}
- {id: 66, cat: PC/Games, desc: "Jeux: PC"}
- {id: 97, cat: Console/PSP, desc: "Jeux : Jeux PS"}
- {id: 81, cat: Console/Xbox, desc: "Jeux : XboX"}
- {id: 62, cat: PC/0day, desc: "Logiciels: Windows"}
- {id: 99, cat: Other, desc: "Logiciels: Graph / Wallpaper"}
- {id: 77, cat: PC/Phone-Android, desc: "Logiciels: Android"}
- {id: 94, cat: PC/Mac, desc: "Logiciels: MAC"}
- {id: 93, cat: TV/Anime, desc: "Mangas: Animés"}
- {id: 94, cat: TV/HD, desc: "Series: 4K HDR"}
- {id: 93, cat: TV/Anime, desc: "Series: Animés"}
- {id: 86, cat: TV/HD, desc: "Series: Episode HD"}
- {id: 85, cat: TV/SD, desc: "Series: Episode SD"}
- {id: 59, cat: TV/SD, desc: "Series: Tv - Pack SD"}
- {id: 100, cat: TV/HD, desc: "Series: Tv - Pack HD"}
- {id: 101, cat: TV/HD, desc: "Series: Episode HD Vostfr"}
- {id: 85, cat: TV/SD, desc: "Series: Episode SD"}
- {id: 102, cat: TV/SD, desc: "Series: Episode SD Vostfr"}
- {id: 100, cat: TV/HD, desc: "Series: Tv - Pack HD"}
- {id: 103, cat: TV/HD, desc: "Series: Tv - Pack HD Vostfr"}
- {id: 59, cat: TV/SD, desc: "Series: Tv - Pack SD"}
- {id: 104, cat: TV/SD, desc: "Series: Tv - Pack SD Vostfr"}
- {id: 88, cat: TV, desc: "Spectacles: Tous"}
- {id: 73, cat: TV/Documentary, desc: "TV: Documentaires"}
- {id: 83, cat: TV, desc: "TV: Emissions"}
- {id: 73, cat: TV/Documentary, desc: "TV: Documentaires"}
- {id: 74, cat: TV/Sport, desc: "TV: Sports"}
modes:
@@ -69,6 +69,30 @@
tv-search: [q, season, ep]
movie-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "id"
options:
"id": "created"
"seeders": "seeders"
"size": "size"
"name": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: account-login.php
method: post
@@ -89,14 +113,20 @@
paths:
- path: torrents-search.php
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
incldead: 1
freeleech: 0
lang: 0
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
keywordsfilters:
- name: re_replace
args: ["(\\w+)", " +$1"] # prepend + to each word
rows:
selector: table.ttable_headinner > tbody > tr.t-row
fields:
title:
selector: a[href^="torrents-details.php?id="] b
@@ -137,8 +167,9 @@
args: "02-01-2006"
downloadvolumefactor:
case:
img[src="images/free.gif"]: "0"
"*": "1"
img[src="images/free.gif"]: 0
"*": 1
uploadvolumefactor:
case:
"*": "1"
"*": 1
# engine n/a

View File

@@ -1,9 +1,9 @@
---
site: casstudiotv
name: CasStudioTV
description: "CasStudioTV is a RUSSIAN Private Torrent Tracker for TV"
language: ru
type: private
description: "CasStudioTV is a RUSSIAN Semi-Private Torrent Tracker for TV"
language: ru-ru
type: semi-private
encoding: UTF-8
links:
- https://casstudio.tk/
@@ -12,226 +12,248 @@
caps:
categorymappings:
- {id: 259, cat: TV, desc: "Сериалы (TV Series)"}
- {id: 56, cat: TV, desc: "Зарубежные сериалы (Foreign series)"}
- {id: 310, cat: TV, desc: "9-1-1"}
- {id: 246, cat: TV, desc: "11.22.63"}
- {id: 158, cat: TV, desc: "4400 / The 4400"}
- {id: 86, cat: TV, desc: "12 Обезьян / 12 Monkeys"}
- {id: 120, cat: TV, desc: "Агенты Щ.И.Т. / Agents of S.H.I.E.L.D."}
- {id: 259, cat: TV, desc: "Сериалы"}
- {id: 372, cat: TV, desc: "Австралийские сериалы"}
- {id: 375, cat: TV, desc: "Американские сериалы"}
- {id: 343, cat: TV, desc: "A&E"}
- {id: 126, cat: TV, desc: "Мотель Бейтс / Bates Motel"}
- {id: 317, cat: TV, desc: "ABC"}
- {id: 72, cat: TV, desc: "Агент Картер / Agent Carter"}
- {id: 103, cat: TV, desc: "Ад На Колёсах / Hell On Wheels"}
- {id: 120, cat: TV, desc: "Агенты Щ.И.Т. / Agents of S.H.I.E.L.D."}
- {id: 110, cat: TV, desc: "Американская семейка / Modern Family"}
- {id: 62, cat: TV, desc: "Американцы / The Americans"}
- {id: 70, cat: TV, desc: "Анатомия страсти / Анатомия Грей / Grey's Anatomy"}
- {id: 210, cat: TV, desc: "База Куантико / Quantico"}
- {id: 305, cat: TV, desc: "Беглецы / Runaways"}
- {id: 122, cat: TV, desc: "Безумцы / Mad Men"}
- {id: 134, cat: TV, desc: "Белый воротничок / White Collar"}
- {id: 281, cat: TV, desc: "Барыги / Narcos"}
- {id: 239, cat: TV, desc: "Баскетс / Baskets"}
- {id: 155, cat: TV, desc: "Бешеные псы / Mad Dogs"}
- {id: 243, cat: TV, desc: "Библиотекари / The Librarians"}
- {id: 154, cat: TV, desc: "Блудливая Калифорния / Californication"}
- {id: 208, cat: TV, desc: "Бойтесь ходячих мертвецов / Fear the Walking Dead"}
- {id: 150, cat: TV, desc: "Больница Никербокер / The Knick"}
- {id: 119, cat: TV, desc: "Бывает и хуже / The Middle"}
- {id: 87, cat: TV, desc: "В поле зрения / Person of Interest"}
- {id: 219, cat: TV, desc: "В пустыне смерти / Into the Badlands"}
- {id: 118, cat: TV, desc: "Веб терапия / Web Therapy"}
- {id: 123, cat: TV, desc: "Ведьмы Ист-Энда / Witches of East End"}
- {id: 309, cat: TV, desc: "Видоизмененный углерод / Altered Carbon"}
- {id: 241, cat: TV, desc: "Винил / Vinyl"}
- {id: 91, cat: TV, desc: "Викинги / Vikings"}
- {id: 172, cat: TV, desc: "Вице-Президент / Veep"}
- {id: 204, cat: TV, desc: "Власть в ночном городе / Power"}
- {id: 228, cat: TV, desc: "Волшебники / The Magicians"}
- {id: 220, cat: TV, desc: "Восприятие / Perception"}
- {id: 254, cat: TV, desc: "Восстание / Rebellion"}
- {id: 248, cat: TV, desc: "Вместе / Togetherness"}
- {id: 192, cat: TV, desc: "Водолей / Aquarius"}
- {id: 65, cat: TV, desc: "Возмездие / Revenge"}
- {id: 121, cat: TV, desc: "Все Ненавидят Криса / Everybody Hates Chris"}
- {id: 166, cat: TV, desc: "Ганнибал / Hannibal"}
- {id: 211, cat: TV, desc: "Герои: Возрождение / Heroes Reborn"}
- {id: 293, cat: TV, desc: "Голубая кровь / Blue Bloods"}
- {id: 119, cat: TV, desc: "Бывает и хуже / The Middle"}
- {id: 145, cat: TV, desc: "Город Хищниц / Cougar Town"}
- {id: 61, cat: TV, desc: "Готэм / Gotham"}
- {id: 117, cat: TV, desc: "Гримм / Grimm"}
- {id: 108, cat: TV, desc: "Две девицы на мели / 2 Broke Girls"}
- {id: 66, cat: TV, desc: "Девочки / Girls"}
- {id: 271, cat: TV, desc: "Девушка по вызову / The Girlfriend Experience"}
- {id: 176, cat: TV, desc: "Декстер / Dexter"}
- {id: 232, cat: TV, desc: "Десница Божья / Hand of God"}
- {id: 307, cat: TV, desc: "Династия / Dynasty"}
- {id: 102, cat: TV, desc: "Дневники вампира / The Vampire Diaries"}
- {id: 229, cat: TV, desc: "Джессика Джонс / Jessica Jones"}
- {id: 282, cat: TV, desc: "Дорожная команда / Roadies"}
- {id: 205, cat: TV, desc: "До смерти красива / Drop Dead Diva"}
- {id: 104, cat: TV, desc: "Древние / The Originals"}
- {id: 278, cat: TV, desc: "Загадочные события / Stranger Things"}
- {id: 182, cat: TV, desc: "Задержка в развитии / Arrested Development"}
- {id: 201, cat: TV, desc: "За пределами / Выжившая / Род человеческий / Extant"}
- {id: 301, cat: TV, desc: "Защитники / The Defenders"}
- {id: 314, cat: TV, desc: "Звёздный путь / Star Trek"}
- {id: 167, cat: TV, desc: "Зов крови / Потерянная / Фейри / Lost Girl"}
- {id: 116, cat: TV, desc: "Зовите меня Фитц / Call Me Fitz"}
- {id: 74, cat: TV, desc: "Империя / Empire"}
- {id: 75, cat: TV, desc: "Как избежать наказания за убийство / How to Get Away with Murder"}
- {id: 203, cat: TV, desc: "Как бы счастье / Happyish"}
- {id: 141, cat: TV, desc: "Как Я Встретил Вашу Маму / How I Met Your Mother"}
- {id: 277, cat: TV, desc: "Карантин / Containment"}
- {id: 306, cat: TV, desc: "Каратель / The Punisher"}
- {id: 174, cat: TV, desc: "Карточный домик / House of Cards"}
- {id: 63, cat: TV, desc: "Касл / Castle"}
- {id: 285, cat: TV, desc: "Квантовый скачок / Quantum Leap"}
- {id: 169, cat: TV, desc: "Кей и Пил / Key and Peele"}
- {id: 195, cat: TV, desc: "Киллджойс / Killjoys"}
- {id: 222, cat: TV, desc: "Клуб жен астронавтов / The Astronaut Wives Club"}
- {id: 197, cat: TV, desc: "Коварные горничные / Devious Maids"}
- {id: 230, cat: TV, desc: "Колония / Colony"}
- {id: 170, cat: TV, desc: "Континуум / Continuum"}
- {id: 233, cat: TV, desc: "Конец детства / Childhood's End"}
- {id: 147, cat: TV, desc: "Копы-новобранцы / Rookie Blue"}
- {id: 291, cat: TV, desc: "Королева Юга / Queen of the South"}
- {id: 193, cat: TV, desc: "Красавица и чудовище / Beauty and the Beast"}
- {id: 132, cat: TV, desc: "Крах / The Fall"}
- {id: 146, cat: TV, desc: "Красотки в Кливленде / Hot in Cleveland"}
- {id: 171, cat: TV, desc: "Красавцы / Антураж / Entourage"}
- {id: 207, cat: TV, desc: "Кремниевая долина / Silicon Valley"}
- {id: 238, cat: TV, desc: "Легенды завтрашнего дня / Legends of Tomorrow"}
- {id: 300, cat: TV, desc: "Легион / Legion"}
- {id: 294, cat: TV, desc: "Лемони Сникет: 33 несчастья / A Series of Unfortunate Events"}
- {id: 130, cat: TV, desc: "Лиллехаммер / Lilyhammer"}
- {id: 276, cat: TV, desc: "Любовницы / Mistresses US"}
- {id: 198, cat: TV, desc: "Люди / Humans"}
- {id: 165, cat: TV, desc: "Лютер / Luther"}
- {id: 247, cat: TV, desc: "Люцифер / Lucifer"}
- {id: 313, cat: TV, desc: "МакГайвер / MacGyver"}
- {id: 127, cat: TV, desc: "Майк и Молли / Mike & Molly"}
- {id: 156, cat: TV, desc: "Мастера Секса / Masters of Sex"}
- {id: 245, cat: TV, desc: "Медики Чикаго / Chicago Med"}
- {id: 180, cat: TV, desc: "Миллеры в разводе / The Millers"}
- {id: 244, cat: TV, desc: "Миллиарды / Billions"}
- {id: 234, cat: TV, desc: "Мистер Робинсон / Mr. Robinson"}
- {id: 200, cat: TV, desc: "Мистер робот / Mr. Robot"}
- {id: 173, cat: TV, desc: "Мост / Broen / Bron"}
- {id: 126, cat: TV, desc: "Мотель Бейтс / Bates Motel"}
- {id: 231, cat: TV, desc: "Моцарт в джунглях / Mozart in the Jungle"}
- {id: 69, cat: TV, desc: "Мушкетеры / The Musketeers"}
- {id: 76, cat: TV, desc: "Мыслить как преступник / Criminal Minds"}
- {id: 202, cat: TV, desc: "На грани / The Brink"}
- {id: 175, cat: TV, desc: "Налёт / Braquo"}
- {id: 125, cat: TV, desc: "Настоящая кровь / True Blood"}
- {id: 152, cat: TV, desc: "Настоящий детектив / True Detective"}
- {id: 79, cat: TV, desc: "Не те парни / The Wrong Mans"}
- {id: 308, cat: TV, desc: "Хороший доктор / The Good Doctor"}
- {id: 189, cat: TV, desc: "Шёпот / The Whispers"}
- {id: 164, cat: TV, desc: "Нэшвилл / Nashville"}
- {id: 58, cat: TV, desc: "Обитель лжи / House of Lies"}
- {id: 137, cat: TV, desc: "Оборотень / Teen Wolf"}
- {id: 303, cat: TV, desc: "Одаренные / The Gifted"}
- {id: 92, cat: TV, desc: "Однажды в сказке / Once Upon A Time"}
- {id: 279, cat: TV, desc: "Однажды ночью / The Night Of"}
- {id: 275, cat: TV, desc: "Оранжевый - хит сезона / Orange is the New Black"}
- {id: 304, cat: TV, desc: "Орвилл / The Orville"}
- {id: 212, cat: TV, desc: "Оставленные / The Leftovers"}
- {id: 139, cat: TV, desc: "Острые козырьки / Peaky Blinders"}
- {id: 163, cat: TV, desc: "Отчаянные домохозяйки / Desperate Housewives"}
- {id: 138, cat: TV, desc: "Отбросы / Misfits"}
- {id: 80, cat: TV, desc: "Пересекающиеся линии / Пересекая черту / Crossing Lines"}
- {id: 218, cat: TV, desc: "Плоть и кости / Flesh and Bone"}
- {id: 99, cat: TV, desc: "Под куполом / Under The Dome"}
- {id: 149, cat: TV, desc: "Подпольная Империя / Boardwalk Empire"}
- {id: 78, cat: TV, desc: "Помнить все / Незабываемое / Unforgettable"}
- {id: 272, cat: TV, desc: "Поворот / TURN"}
- {id: 90, cat: TV, desc: "Пожарные Чикаго / Chicago Fire"}
- {id: 236, cat: TV, desc: "Полицейские на велосипедах / Pacific Blue"}
- {id: 144, cat: TV, desc: "Полиция Гавайев / Hawaii Five-0"}
- {id: 77, cat: TV, desc: "Полиция Чикаго / Chicago PD"}
- {id: 162, cat: TV, desc: "Последователи / The Following"}
- {id: 287, cat: TV, desc: "Приговор / Conviction"}
- {id: 135, cat: TV, desc: "ПригорАД / Suburgatory"}
- {id: 274, cat: TV, desc: "Проповедник / Preacher"}
- {id: 113, cat: TV, desc: "Просветленная / Enlightened"}
- {id: 235, cat: TV, desc: "Пространство / The Expanse"}
- {id: 290, cat: TV, desc: "Радиоволна / Frequency"}
- {id: 112, cat: TV, desc: "Революция / Revolution"}
- {id: 83, cat: TV, desc: "Родина / Homeland"}
- {id: 128, cat: TV, desc: "Рэй Донован / Ray Donovan"}
- {id: 136, cat: TV, desc: "Риццоли и Айлc / Rizzoli & Isles"}
- {id: 160, cat: TV, desc: "Рухнувшие Небеса / Falling Skies"}
- {id: 199, cat: TV, desc: "Салем / Salem"}
- {id: 111, cat: TV, desc: "Сверхъестественное / Supernatural"}
- {id: 157, cat: TV, desc: "Секретные материалы / X-Files"}
- {id: 267, cat: TV, desc: "Семья / The Family"}
- {id: 311, cat: TV, desc: "Сирена / Siren"}
- {id: 64, cat: TV, desc: "Скандал / Scandal"}
- {id: 213, cat: TV, desc: "Слепое пятно / Blindspot"}
- {id: 129, cat: TV, desc: "Служба новостей / Новости / The Newsroom"}
- {id: 286, cat: TV, desc: "Смертельное Оружие / Lethal Weapon"}
- {id: 93, cat: TV, desc: "Сообщество / Community"}
- {id: 179, cat: TV, desc: "Сопрано / The Sopranos"}
- {id: 194, cat: TV, desc: "Сорвиголова / Daredevil"}
- {id: 106, cat: TV, desc: "Шпионка / Alias"}
- {id: 358, cat: TV, desc: "Adult Swim"}
- {id: 323, cat: TV, desc: "Amazon"}
- {id: 232, cat: TV, desc: "Десница Божья / Hand of God"}
- {id: 231, cat: TV, desc: "Моцарт в джунглях / Mozart in the Jungle"}
- {id: 280, cat: TV, desc: "Тик / The Tick"}
- {id: 328, cat: TV, desc: "AMC"}
- {id: 103, cat: TV, desc: "Ад На Колёсах / Hell On Wheels"}
- {id: 122, cat: TV, desc: "Безумцы / Mad Men"}
- {id: 208, cat: TV, desc: "Бойтесь ходячих мертвецов / Fear the Walking Dead"}
- {id: 219, cat: TV, desc: "В пустыне смерти / Into the Badlands"}
- {id: 198, cat: TV, desc: "Люди / Humans"}
- {id: 274, cat: TV, desc: "Проповедник / Preacher"}
- {id: 95, cat: TV, desc: "Убийство / The Killing"}
- {id: 59, cat: TV, desc: "Ходячие мертвецы / The Walking Dead"}
- {id: 356, cat: TV, desc: "Audience"}
- {id: 320, cat: TV, desc: "CBS"}
- {id: 87, cat: TV, desc: "В поле зрения / Person of Interest"}
- {id: 293, cat: TV, desc: "Голубая кровь / Blue Bloods"}
- {id: 108, cat: TV, desc: "Две девицы на мели / 2 Broke Girls"}
- {id: 201, cat: TV, desc: "За пределами / Выжившая / Род человеческий / Extant"}
- {id: 314, cat: TV, desc: "Звёздный путь / Star Trek"}
- {id: 141, cat: TV, desc: "Как Я Встретил Вашу Маму / How I Met Your Mother"}
- {id: 127, cat: TV, desc: "Майк и Молли / Mike & Molly"}
- {id: 313, cat: TV, desc: "МакГайвер / MacGyver"}
- {id: 180, cat: TV, desc: "Миллеры в разводе / The Millers"}
- {id: 76, cat: TV, desc: "Мыслить как преступник / Criminal Minds"}
- {id: 144, cat: TV, desc: "Полиция Гавайев / Hawaii Five-0"}
- {id: 99, cat: TV, desc: "Под куполом / Under The Dome"}
- {id: 78, cat: TV, desc: "Помнить все / Незабываемое / Unforgettable"}
- {id: 107, cat: TV, desc: "Теория Большого Взрыва / The Big Bang Theory"}
- {id: 105, cat: TV, desc: "Элементарно / Elementary"}
- {id: 318, cat: TV, desc: "CW"}
- {id: 307, cat: TV, desc: "Династия / Dynasty"}
- {id: 102, cat: TV, desc: "Дневники вампира / The Vampire Diaries"}
- {id: 104, cat: TV, desc: "Древние / The Originals"}
- {id: 277, cat: TV, desc: "Карантин / Containment"}
- {id: 193, cat: TV, desc: "Красавица и чудовище / Beauty and the Beast"}
- {id: 238, cat: TV, desc: "Легенды завтрашнего дня / Legends of Tomorrow"}
- {id: 290, cat: TV, desc: "Радиоволна / Frequency"}
- {id: 111, cat: TV, desc: "Сверхъестественное / Supernatural"}
- {id: 109, cat: TV, desc: "Сотня / 100 / The Hundred"}
- {id: 153, cat: TV, desc: "Спартак / Spartacus"}
- {id: 266, cat: TV, desc: "Страна чудес / Wonderland"}
- {id: 191, cat: TV, desc: "Страшные сказки / Penny Dreadful"}
- {id: 131, cat: TV, desc: "Стрела / Arrow"}
- {id: 190, cat: TV, desc: "Супергёрл / Supergirl"}
- {id: 82, cat: TV, desc: "Сыны Анархии / Sons of Anarchy"}
- {id: 295, cat: TV, desc: "Табу / Taboo"}
- {id: 273, cat: TV, desc: "Тайны Лауры / The Mysteries of Laura"}
- {id: 178, cat: TV, desc: "Твин Пикс / Twin Peaks"}
- {id: 107, cat: TV, desc: "Теория Большого Взрыва / The Big Bang Theory"}
- {id: 196, cat: TV, desc: "Тёмная материя / Dark Matter"}
- {id: 280, cat: TV, desc: "Тик / The Tick"}
- {id: 181, cat: TV, desc: "Тугая струна / Wire in the Blood"}
- {id: 95, cat: TV, desc: "Убийство / The Killing"}
- {id: 81, cat: TV, desc: "Убить скуку / Bored to Death"}
- {id: 98, cat: TV, desc: "Уилфред / Wilfred"}
- {id: 187, cat: TV, desc: "Уэйуорд Пайнс / Wayward Pines"}
- {id: 142, cat: TV, desc: "Флэш / Flash"}
- {id: 168, cat: TV, desc: "Форс-мажоры / Костюмы / Suits"}
- {id: 59, cat: TV, desc: "Ходячие мертвецы / The Walking Dead"}
- {id: 308, cat: TV, desc: "Хороший доктор / The Good Doctor"}
- {id: 143, cat: TV, desc: "Хранилище 13 / Warehouse 13"}
- {id: 237, cat: TV, desc: "Хроники Шаннары / The Shannara Chronicles"}
- {id: 94, cat: TV, desc: "Хэйвен / Haven"}
- {id: 124, cat: TV, desc: "Царство / Reign"}
- {id: 268, cat: TV, desc: "Час пик / Rush Hour"}
- {id: 115, cat: TV, desc: "Чёрное зеркало / Black Mirror"}
- {id: 73, cat: TV, desc: "Черные Паруса / Black Sails"}
- {id: 177, cat: TV, desc: "Черный список / The Blacklist"}
- {id: 189, cat: TV, desc: "Шёпот / The Whispers"}
- {id: 106, cat: TV, desc: "Шпионка / Alias"}
- {id: 85, cat: TV, desc: "Штамм / The Strain"}
- {id: 288, cat: TV, desc: "Экзорцист / The Exorcist"}
- {id: 105, cat: TV, desc: "Элементарно / Elementary"}
- {id: 217, cat: TV, desc: "Эш против Зловещих мертвецов / Ash vs Evil Dead"}
- {id: 270, cat: TV, desc: "яЗомби / iZombie"}
- {id: 53, cat: TV, desc: "Другие сериалы (Other TV series)"}
- {id: 240, cat: TV, desc: "Клим (Klim)"}
- {id: 283, cat: TV, desc: "Amazon"}
- {id: 284, cat: TV, desc: "Amazon English"}
- {id: 88, cat: TV, desc: "Мультсериалы (Cartoons)"}
- {id: 336, cat: TV, desc: "DC"}
- {id: 316, cat: TV, desc: "FOX"}
- {id: 310, cat: TV, desc: "9-1-1"}
- {id: 61, cat: TV, desc: "Готэм / Gotham"}
- {id: 182, cat: TV, desc: "Задержка в развитии / Arrested Development"}
- {id: 74, cat: TV, desc: "Империя / Empire"}
- {id: 247, cat: TV, desc: "Люцифер / Lucifer"}
- {id: 157, cat: TV, desc: "Секретные материалы / X-Files"}
- {id: 286, cat: TV, desc: "Смертельное Оружие / Lethal Weapon"}
- {id: 304, cat: TV, desc: "Орвилл / The Orville"}
- {id: 162, cat: TV, desc: "Последователи / The Following"}
- {id: 187, cat: TV, desc: "Уэйуорд Пайнс / Wayward Pines"}
- {id: 288, cat: TV, desc: "Экзорцист / The Exorcist"}
- {id: 327, cat: TV, desc: "FX"}
- {id: 62, cat: TV, desc: "Американцы / The Americans"}
- {id: 239, cat: TV, desc: "Баскетс / Baskets"}
- {id: 300, cat: TV, desc: "Легион / Legion"}
- {id: 85, cat: TV, desc: "Штамм / The Strain"}
- {id: 82, cat: TV, desc: "Сыны Анархии / Sons of Anarchy"}
- {id: 98, cat: TV, desc: "Уилфред / Wilfred"}
- {id: 337, cat: TV, desc: "History"}
- {id: 91, cat: TV, desc: "Викинги / Vikings"}
- {id: 324, cat: TV, desc: "HULU"}
- {id: 246, cat: TV, desc: "11.22.63"}
- {id: 305, cat: TV, desc: "Беглецы / Runaways"}
- {id: 345, cat: TV, desc: "MTV, Sprike"}
- {id: 137, cat: TV, desc: "Оборотень / Teen Wolf"}
- {id: 237, cat: TV, desc: "Хроники Шаннары / The Shannara Chronicles"}
- {id: 319, cat: TV, desc: "NBC"}
- {id: 192, cat: TV, desc: "Водолей / Aquarius"}
- {id: 166, cat: TV, desc: "Ганнибал / Hannibal"}
- {id: 211, cat: TV, desc: "Герои: Возрождение / Heroes Reborn"}
- {id: 117, cat: TV, desc: "Гримм / Grimm"}
- {id: 285, cat: TV, desc: "Квантовый скачок / Quantum Leap"}
- {id: 245, cat: TV, desc: "Медики Чикаго / Chicago Med"}
- {id: 234, cat: TV, desc: "Мистер Робинсон / Mr. Robinson"}
- {id: 80, cat: TV, desc: "Пересекающиеся линии / Пересекая черту / Crossing Lines"}
- {id: 90, cat: TV, desc: "Пожарные Чикаго / Chicago Fire"}
- {id: 77, cat: TV, desc: "Полиция Чикаго / Chicago PD"}
- {id: 112, cat: TV, desc: "Революция / Revolution"}
- {id: 213, cat: TV, desc: "Слепое пятно / Blindspot"}
- {id: 93, cat: TV, desc: "Сообщество / Community"}
- {id: 273, cat: TV, desc: "Тайны Лауры / The Mysteries of Laura"}
- {id: 177, cat: TV, desc: "Черный список / The Blacklist"}
- {id: 321, cat: TV, desc: "NETFLIX"}
- {id: 281, cat: TV, desc: "Барыги / Narcos"}
- {id: 309, cat: TV, desc: "Видоизмененный углерод / Altered Carbon"}
- {id: 229, cat: TV, desc: "Джессика Джонс / Jessica Jones"}
- {id: 278, cat: TV, desc: "Загадочные события / Stranger Things"}
- {id: 301, cat: TV, desc: "Защитники / The Defenders"}
- {id: 306, cat: TV, desc: "Каратель / The Punisher"}
- {id: 174, cat: TV, desc: "Карточный домик / House of Cards"}
- {id: 130, cat: TV, desc: "Лиллехаммер / Lilyhammer"}
- {id: 294, cat: TV, desc: "Лемони Сникет: 33 несчастья / A Series of Unfortunate Events"}
- {id: 275, cat: TV, desc: "Оранжевый - хит сезона / Orange is the New Black"}
- {id: 194, cat: TV, desc: "Сорвиголова / Daredevil"}
- {id: 115, cat: TV, desc: "Чёрное зеркало / Black Mirror"}
- {id: 333, cat: TV, desc: "Showtime"}
- {id: 154, cat: TV, desc: "Блудливая Калифорния / Californication"}
- {id: 118, cat: TV, desc: "Веб терапия / Web Therapy"}
- {id: 176, cat: TV, desc: "Декстер / Dexter"}
- {id: 282, cat: TV, desc: "Дорожная команда / Roadies"}
- {id: 203, cat: TV, desc: "Как бы счастье / Happyish"}
- {id: 156, cat: TV, desc: "Мастера Секса / Masters of Sex"}
- {id: 244, cat: TV, desc: "Миллиарды / Billions"}
- {id: 58, cat: TV, desc: "Обитель лжи / House of Lies"}
- {id: 83, cat: TV, desc: "Родина / Homeland"}
- {id: 128, cat: TV, desc: "Рэй Донован / Ray Donovan"}
- {id: 191, cat: TV, desc: "Страшные сказки / Penny Dreadful"}
- {id: 330, cat: TV, desc: "STARZ"}
- {id: 204, cat: TV, desc: "Власть в ночном городе / Power"}
- {id: 271, cat: TV, desc: "Девушка по вызову / The Girlfriend Experience"}
- {id: 218, cat: TV, desc: "Плоть и кости / Flesh and Bone"}
- {id: 217, cat: TV, desc: "Эш против Зловещих мертвецов / Ash vs Evil Dead"}
- {id: 153, cat: TV, desc: "Спартак / Spartacus"}
- {id: 73, cat: TV, desc: "Черные Паруса / Black Sails"}
- {id: 326, cat: TV, desc: "SyFy"}
- {id: 86, cat: TV, desc: "12 Обезьян / 12 Monkeys"}
- {id: 228, cat: TV, desc: "Волшебники / The Magicians"}
- {id: 195, cat: TV, desc: "Киллджойс / Killjoys"}
- {id: 233, cat: TV, desc: "Конец детства / Childhood's End"}
- {id: 235, cat: TV, desc: "Пространство / The Expanse"}
- {id: 196, cat: TV, desc: "Тёмная материя / Dark Matter"}
- {id: 143, cat: TV, desc: "Хранилище 13 / Warehouse 13"}
- {id: 94, cat: TV, desc: "Хэйвен / Haven"}
- {id: 351, cat: TV, desc: "TBS"}
- {id: 334, cat: TV, desc: "TNT"}
- {id: 243, cat: TV, desc: "Библиотекари / The Librarians"}
- {id: 220, cat: TV, desc: "Восприятие / Perception"}
- {id: 136, cat: TV, desc: "Риццоли и Айлc / Rizzoli & Isles"}
- {id: 160, cat: TV, desc: "Рухнувшие Небеса / Falling Skies"}
- {id: 341, cat: TV, desc: "TV Land"}
- {id: 146, cat: TV, desc: "Красотки в Кливленде / Hot in Cleveland"}
- {id: 325, cat: TV, desc: "USA"}
- {id: 158, cat: TV, desc: "4400 / The 4400"}
- {id: 134, cat: TV, desc: "Белый воротничок / White Collar"}
- {id: 230, cat: TV, desc: "Колония / Colony"}
- {id: 291, cat: TV, desc: "Королева Юга / Queen of the South"}
- {id: 200, cat: TV, desc: "Мистер робот / Mr. Robot"}
- {id: 236, cat: TV, desc: "Полицейские на велосипедах / Pacific Blue"}
- {id: 168, cat: TV, desc: "Форс-мажоры / Костюмы / Suits"}
- {id: 352, cat: TV, desc: "YouTube"}
- {id: 370, cat: TV, desc: "Британские сериалы"}
- {id: 69, cat: TV, desc: "Мушкетеры / The Musketeers"}
- {id: 139, cat: TV, desc: "Острые козырьки / Peaky Blinders"}
- {id: 165, cat: TV, desc: "Лютер / Luther"}
- {id: 272, cat: TV, desc: "Поворот / TURN"}
- {id: 373, cat: TV, desc: "Датские и Шведские сериалы"}
- {id: 381, cat: TV, desc: "Ирландские сериалы"}
- {id: 367, cat: TV, desc: "Испанские сериалы"}
- {id: 380, cat: TV, desc: "Итальянские сериалы"}
- {id: 371, cat: TV, desc: "Канадские сериалы"}
- {id: 368, cat: TV, desc: "Немецкие сериалы"}
- {id: 376, cat: TV, desc: "Нидерландские сериалы"}
- {id: 379, cat: TV, desc: "Норвежские сериалы"}
- {id: 377, cat: TV, desc: "Российские сериалы"}
- {id: 369, cat: TV, desc: "Французкие сериалы"}
- {id: 374, cat: TV, desc: "Швейцарские сериалы"}
- {id: 382, cat: TV, desc: "Японские сериалы"}
- {id: 357, cat: TV, desc: "Сериалы только с субтитрами"}
- {id: 378, cat: TV, desc: "Сериалы производства нескольких стран"}
- {id: 88, cat: TV, desc: "Мультсериалы"}
- {id: 101, cat: TV, desc: "Южный Парк / South Park"}
- {id: 89, cat: TV, desc: "Спецагент Арчер / Archer"}
- {id: 225, cat: TV, desc: "Стендап / Stand Up"}
- {id: 54, cat: TV, desc: "Особый раздел (Special section)"}
- {id: 100, cat: TV, desc: "Короткометражки (Short films)"}
- {id: 60, cat: TV, desc: "Документальные (Documentaries)"}
- {id: 159, cat: TV, desc: "Разное (Misc.)"}
- {id: 261, cat: TV, desc: "Спорт (Sport)"}
- {id: 262, cat: TV, desc: "Автомотоспорт (Autosport)"}
- {id: 54, cat: TV, desc: "Особый раздел"}
- {id: 100, cat: TV, desc: "Короткометражки"}
- {id: 60, cat: TV, desc: "Документальные и научно-популярные передачи"}
- {id: 159, cat: TV, desc: "Разное"}
- {id: 261, cat: TV, desc: "Спорт"}
- {id: 262, cat: TV, desc: "Автомотоспорт"}
- {id: 263, cat: TV, desc: "Формула 1 / Formula 1"}
- {id: 264, cat: TV, desc: "MotoGP / SBK"}
- {id: 265, cat: TV, desc: "V8 supercars"}
- {id: 31, cat: TV, desc: "Пользователи (Users)"}
- {id: 188, cat: TV, desc: "Поздравления (Congratulations)"}
- {id: 31, cat: TV, desc: "Пользователи"}
- {id: 188, cat: TV, desc: "Поздравления"}
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: sort
type: select
label: Sort requested from site
default: "t"
options:
"t": "created"
"ts": "seeders"
"sz": "size"
"i": "title"
- name: type
type: select
label: Order requested from site
default: "d"
options:
"d": "desc"
"a": "asc"
login:
path: ucp.php?mode=login
method: form
@@ -245,30 +267,28 @@
path: /
selector: :has(a[href^="./ucp.php?mode=logout&sid="])
# download:
# selector: a[href^="./download/file.php?id="]:not(img)
search:
paths:
#https://casstudio.tv/search.php?tracker_search=torrent&keywords=star&terms=all&author=&sc=1&sf=titleonly&sr=topics&sk=t&sd=d&st=0&ch=300&t=0&submit=Search
- path: search.php
inputs:
tracker_search: "torrent"
keywords: "{{if .Keywords }}{{.Keywords}}{{else}}star{{end}}"
terms: "all"
tracker_search: torrent
keywords: "{{ if .Keywords }}{{ .Keywords }}{{else}}2019{{end}}"
terms: all
author: ""
sc: "1"
sf: "titleonly"
sr: "topics"
sk: "t"
sd: "d"
st: "0"
ch: "300"
t: "0"
submit: "Search"
sc: 1
sf: titleonly
sr: topics
sk: "{{ .Config.sort }}"
sd: "{{ .Config.type }}"
st: 0
ch: 300
t: 0
submit: Search
rows:
selector: tr.row
fields:
title:
selector: a.topictitle
@@ -336,6 +356,7 @@
- name: dateparse
args: "02 Jan 06, 15:04"
downloadvolumefactor:
text: "1"
text: 1
uploadvolumefactor:
text: "1"
text: 1
# phpBB

View File

@@ -47,9 +47,8 @@
movie-search: [q]
login:
path: login.php
method: form
form: form[action="takelogin.php"]
path: takelogin.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
@@ -63,13 +62,15 @@
- path: browse.php
method: get
inputs:
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
incldead: "1"
d: DESC
incldead: 1
sort: added
d: DESC
rows:
selector: table[border="1"][cellpadding="5"] > tbody > tr:has(a[href^="details.php?id="])
fields:
title:
selector: a[title][href^="details.php?id="]
@@ -91,7 +92,7 @@
attribute: href
imdb:
optional: true
selector: a[href^="http://www.imdb.com/title/"]
selector: a[href*="www.imdb.com/title/tt"]
attribute: href
files:
selector: a[href$="&filelist=1"]
@@ -116,12 +117,12 @@
args: "2006-01-0215:04:05 -07:00"
downloadvolumefactor:
case:
"font[color=\"#C20603\"]:contains(\"免费\")": "0"
"font:has([src=\"/pic/arrowdown1.gif\"]):contains(\"0.5x\")": "0.5"
"*": "1"
"font[color=\"#C20603\"]:contains(\"免费\")": 0
"font:has([src=\"/pic/arrowdown1.gif\"]):contains(\"0.5x\")": 0.5
"*": 1
uploadvolumefactor:
case:
"*": "1"
"*": 1
description:
selector: td:nth-child(2) > table > tbody > tr:nth-child(2)
remove: a, img

View File

@@ -6,6 +6,8 @@
type: private
encoding: UTF-8
links:
- https://channelx.xyz/
legacylinks:
- https://channelx.online/
caps:
@@ -20,45 +22,68 @@
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "created_at"
options:
"created_at": "created"
"seeders": "seeders"
"size": "size"
"name": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: login
method: form
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: 1
remember: on
error:
- selector: script[nonce]:contains("Error")
message:
selector: script[nonce]:contains("Error")
test:
path: torrents
path: /
selector: a[href$="/logout"]
ratio:
path: torrents
path: /
selector: li:has(i.fa-sync-alt)
filters:
- name: regexp
args: "Ratio : (\\d+)"
download:
selector: a[href*="/download/"]
search:
paths:
- path: filterTorrents
- path: torrents/filter
inputs:
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
$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
igdb: ""
sorting: "{{ .Config.sort }}"
sort: "{{ .Config.sort }}"
direction: "{{ .Config.type }}"
qty: 100
rows:
selector: table > tbody > tr
@@ -68,11 +93,11 @@
attribute: href
filters:
- name: regexp
args: "/categories/.*?\\.(\\d+)"
args: "/categories/(\\d+)"
title:
selector: a.view-torrent
download:
selector: a[href*="/download_check/"]
selector: a[href*="/download/"]
attribute: href
details:
selector: a.view-torrent
@@ -84,6 +109,9 @@
filters:
- name: replace
args: ["https://via.placeholder.com/600x900", ""]
comments:
selector: a[href*="#comments"]
attribute: href
size:
selector: td:nth-last-child(4)
seeders:
@@ -94,7 +122,7 @@
selector: td:nth-last-child(1)
filters:
- name: regexp
args: ([\d\.]+)
args: (\d+)
imdb:
optional: true
selector: a[href*="www.imdb.com/title/tt"]
@@ -102,42 +130,51 @@
date:
selector: time
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portoguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese
- name: re_replace
args: ["(önce|tagasi|geleden|fa|temu|siden|atrás|nazpět|назад|acum|hace|il y a|vor|преди)", "ago"]
args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前)", " ago"]
- name: re_replace
args: ["(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut)", "minute"]
args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten)", "minutes"]
- name: re_replace
args: ["(dakika|minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten)", "minutes"]
args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟)", " minute"]
- name: re_replace
args: ["(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur)", "hour"]
args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden)", "hours"]
- name: re_replace
args: ["(saat|tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden)", "hours"]
args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时)", " hour"]
- name: re_replace
args: ["(gün|päev|dag|giorno|dzień|dia|den|день|zi|día|jour|Tag|ден)", "day"]
args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen)", "days"]
- name: re_replace
args: ["(gün|päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen)", "days"]
args: ["(?i)(gün|päev|dag|giorno|dzień|dia|den|день|zi|día|jour|Tag|ден|天)", " day"]
- name: re_replace
args: ["(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица)", "week"]
args: ["(?i)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
- name: re_replace
args: ["(hafta|nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周)", " week"]
- name: re_replace
args: [" (ay|kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|mois|Monat|месец|maand)", "month"]
args: ["(?i) (ay)", "month"]
- name: re_replace
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
- name: re_replace
args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月)", " month"]
- name: re_replace
args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
- name: re_replace
args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
- name: re_replace
args: ["(?i) (an)", "year"]
downloadvolumefactor:
case:
"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"
i[class*="fa-id-badge text-orange"]: 0 # 24 Hour FreeLeech From BON Store
i[class*="fa-trophy text-purple"]: 0 # Special FreeLeech For Certain User Groups
i[class*="fa-star text-bold"]: 0 # Freeleech From Token
i[class*="fa-coins text-bold"]: 0 # Freeleech From Token
i[class*="fa-globe text-blue"]: 0 # Global Freeleech
i[class*="fa-star text-gold"]: 0 # Freeleech
i[class*="fa-certificate text-pink"]: 0 # Featured Torrent
"*": 1
uploadvolumefactor:
case:
"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 1.9.2
i[class*="fa-gem text-green"]: 2 # Single Torrent Double Upload
i[class*="fa-globe text-green"]: 2 # Global Double Upload
i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
"*": 1
# UNIT3D 2.2.5

View File

@@ -0,0 +1,63 @@
---
site: cili180
name: Cili180
description: "Cili180 is a Public BitTorrent DHT search engine."
language: en-us
type: public
encoding: UTF-8
links:
- http://www.cilijj.xyz/
legacylinks:
- http://www.cili180.com/
caps:
categories:
1: Other
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
search:
paths:
- path: search/
method: post
followredirect: true
inputs:
keyword: "{{ if .Keywords }}{{ .Keywords }}{{else}}2019{{end}}"
rows:
selector: div.list-area > dl.item
filters:
- name: andmatch
fields:
category:
text: 1
title:
selector: dt a
details:
selector: dt a
attribute: href
download:
selector: a[href^="magnet:?xt="]
attribute: href
date:
selector: dd.attr span:nth-child(1) b
filters:
- name: dateparse
args: "2006-01-02"
size:
selector: dd.attr span:nth-child(2) b
seeders:
text: 1
leechers:
text: 1
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -0,0 +1,138 @@
---
site: cinemamovies
name: CinemaMovies
description: "CinemaMovies is a POLISH Private Torrent Tracker for MOVIES / TV / GENERAL"
language: pl-pl
type: private
encoding: ISO-8859-2
links:
- https://cinemamovies.pl/
caps:
categorymappings:
- {id: 3, cat: Movies/BluRay, desc: "Filmy BD25/50_5/9"}
- {id: 5, cat: Movies/3D, desc: "Filmy 3D"}
- {id: 6, cat: Movies/DVD, desc: "Filmy DVD5/9"}
- {id: 8, cat: Movies/HD, desc: "Filmy HD"}
- {id: 11, cat: Movies/SD, desc: "Filmy SD"}
- {id: 12, cat: Movies/Other, desc: "Filmy Inne"}
- {id: 32, cat: Movies/UHD, desc: "Filmy UHD"}
- {id: 2, cat: TV/Anime, desc: "Anime"}
- {id: 2, cat: TV/Documentary, desc: "TV Dokumentalne"}
- {id: 20, cat: TV, desc: "TV Paczki"}
- {id: 22, cat: TV/Sport, desc: "TV Sport"}
- {id: 24, cat: TV/HD, desc: "TV HD"}
- {id: 25, cat: TV/SD, desc: "TV SD"}
- {id: 1, cat: PC, desc: "Aplikacje"}
- {id: 15, cat: PC/Games, desc: "Gry"}
- {id: 16, cat: PC/Phone-Other, desc: "Mobile"}
- {id: 17, cat: Other, desc: "Inne"}
- {id: 19, cat: Audio, desc: "Muzyka"}
- {id: 21, cat: Books, desc: "Book"}
modes:
search: [q]
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 with your browser<li>Open the <b>DevTools</b> panel by pressing <b>F12</b><li>Select the <b>Network</b> tab<li>Click on the <b>Doc</b> button<li>Refresh the page by pressing <b>F5</b><li>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>"
- name: sort
type: select
label: Sort requested from site
default: "2"
options:
"2": "created"
"5": "seeders"
"3": "size"
"1": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href^="/logout.php"]
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 onlyactive 1 all 4 requests 5 onlydead 6 polish 8 free 10 doubleup 11 premier 13 VOD
incldead: 1
# 0 title 1 descr
blah: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table[width="100%"] > tbody > tr:has(a[href^="browse.php?cat="])
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="details.php?id="]
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="download.php/"]
attribute: href
banner:
selector: a[href^="details.php?id="]
attribute: onmouseover
filters:
- name: regexp
args: "src=(.+?) "
description:
optional: true
selector: img[src="pic/Poland.png"]
attribute: src
filters:
- name: replace
args: ["pic/Poland.png", "Polish"]
date:
selector: td[width="66%"] > span > span
filters:
- name: append
args: " +00:00"
- name: dateparse
args: "2006-01-02 15:04:05 -07:00"
size:
selector: td:nth-child(4)
seeders:
selector: a[href$="#seedy"]
leechers:
selector: a[href$="#leechy"]
grabs:
selector: td:last-child > small> span
downloadvolumefactor:
case:
img[src="pic/free.png"]: 0
"*": 1
uploadvolumefactor:
case:
img[src="pic/double.png"]: 2
"*": 1
# engine n/a

View File

@@ -28,7 +28,8 @@
download:
selector: a[href^="download.php?id="]
attribute: href
search:
paths:
- path: torrents-search.php

View File

@@ -15,20 +15,40 @@
modes:
search: [q]
settings: []
settings:
- name: sort
type: select
label: Sort requested from site
default: "created"
options:
"created": "created"
"seeds": "seeders"
"size": "size"
"title": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
search:
paths:
- path: "torrents/concen.org/content/ufos-extraterrestrials-and-classified-free-energy-pack"
# https://concen.org/torrents?title_op=allwords&title=cbc+national&title_1_op=not&title_1=&seeds=1
- path: torrents
inputs:
title_op: "allwords"
title: "{{.Keywords}}"
title_1_op: "not"
title_op: allwords
title: "{{ .Keywords }}"
title_1_op: not
title_1: ""
seeds: "All"
seeds: All
order: "{{ .Config.sort }}"
sort: "{{ .Config.type }}"
rows:
selector: table > tbody > tr
selector: table > tbody > tr:has(td.views-field-title)
fields:
title:
selector: td.views-field-title a
@@ -57,6 +77,7 @@
grabs:
selector: td.views-field-completed
downloadvolumefactor:
text: "0"
text: 0
uploadvolumefactor:
text: "1"
text: 1
# Drupal 7

View File

@@ -0,0 +1,124 @@
---
site: concertos
name: Concertos
description: "Concertos - Private site for Live Concerts with Strict Quality Control"
language: en-us
type: private
encoding: UTF-8
links:
- https://concertos.live/
caps:
categorymappings:
- {id: 1, cat: TV, desc: "Live Concert"}
- {id: 2, cat: Audio/Video, desc: "Music Video"}
- {id: 4, cat: TV, desc: "Music Documentary"}
- {id: 5, cat: Audio/Lossless, desc: "Pure Audio"}
- {id: 7, cat: TV, desc: "Opera"}
- {id: 8, cat: TV, desc: "Musical"}
- {id: 9, cat: Audio, desc: "Podcast"}
modes:
search: [q, imdbid]
tv-search: [q, imdbid]
movie-search: [q, imdbid]
music-search: [q, imdbid]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "created_at"
options:
"created_at": "created"
"seeders": "seeders"
"size": "size"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: login
method: form
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
remember: on
error:
- selector: form[action$="/login"] .text-red
test:
path: /
selector: a[href$="/logout"]
ratio:
path: /
selector: span:has(i.fa-percent)
filters:
- name: regexp
args: "Ratio : (\\d+)"
search:
paths:
- path: torrents
inputs:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
title: "{{ if .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
imdb: "{{ .Query.IMDBIDShort }}"
order_by: "{{ .Config.sort }}"
direction: "{{ .Config.type }}"
rows:
selector: table > tbody > tr
fields:
category:
selector: a[href*="?category_"]
attribute: href
filters:
- name: regexp
args: "category_(\\d+)"
title:
selector: a[href*="/torrent/"]
details:
selector: a[href*="/torrent/"]
attribute: href
download:
selector: a[href*="/torrent/"]
attribute: href
filters:
- name: append
args: "/download"
size:
selector: td.torrents__size
date:
selector: td.torrents__age
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
grabs:
selector: td:nth-last-child(1)
imdb:
optional: true
selector: a[href*="www.imdb.com/title/tt"]
attribute: href
downloadvolumefactor:
case:
i.fa-star: 0 # Freeleech
i.fa-certificate: 0 # Featured
"*": 1
uploadvolumefactor:
case:
i.fa-certificate: 2 # Featured
i.fa-gem: 2 # Double Upload
"*": 1
# UNIT3D

View File

@@ -7,7 +7,7 @@
encoding: UTF-8
followredirect: true
links:
- https://www.cpasbien.vg/
- https://vww.cpasbien-fr.fr/
legacylinks:
- http://www.cpasbiens.cc/
- http://www.cpabien.cm/
@@ -35,27 +35,38 @@
- https://www.cpabien.link/
- https://www.cpasbiens.cz/
- https://www.cpasbiens.bz/
- https://www.cpasbien.vg/
- https://www.cpasbien.lol/
- https://www.gktorrent.biz/
caps:
categorymappings:
- {id: films, cat: Movies, desc: "Movies"}
- {id: series, cat: TV, desc: "TV"}
- {id: other, cat: Other, desc: "Other"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
download:
selector: div.btn-download a
selector: a[href^="magnet:?xt="]
attribute: href
search:
paths:
- path: "{{if .Keywords}}recherche/{{.Keywords}}{{else}}{{end}}"
# https://vww.cpasbien-fr.fr/index.php?do=search&subaction=search&story=dickinson%20s01e10
- path: "{{ if .Keywords }}index.php?do=search&subaction=search&story={{ .Keywords }}{{else}}{{end}}"
rows:
selector: div#gauche > table > tbody > tr:has(a)
fields:
category:
text: other
site_date:
selector: a
filters:
@@ -85,27 +96,8 @@
attribute: href
size:
selector: div.poid
filters:
- name: re_replace
args: [ "\\.(\\d) Ko", "$1X00"]
- name: re_replace
args: [ " Ko", "000"]
- name: re_replace
args: [ "\\.(\\d) Mo", "$1X00000"]
- name: re_replace
args: [ " Mo", "000000"]
- name: re_replace
args: [ "\\.(\\d) Go", "$1X00000000"]
- name: re_replace
args: [ " Go", "000000000"]
- name: re_replace
args: [ "\\.(\\d) To", "$1X00000000000"]
- name: re_replace
args: [ " To", "000000000000"]
- name: replace
args: [ "X", "" ]
date:
text: "now"
text: now
seeders:
text: 0
seeders:
@@ -117,6 +109,7 @@
selector: div.down
optional: true
downloadvolumefactor:
text: "0"
text: 0
uploadvolumefactor:
text: "1"
text: 1
# engine n/a

View File

@@ -17,18 +17,27 @@
categorymappings:
- {id: films, cat: Movies, desc: "Movies"}
- {id: series, cat: TV, desc: "TV"}
- {id: musique, cat: Audio, desc: "Music"}
- {id: ebook, cat: Books, desc: "Ebook"}
- {id: logiciels, cat: PC, desc: "Software"}
- {id: jeux-pc, cat: PC/Games, desc: "PC Games"}
- {id: jeux-consoles, cat: Console, desc: "Console Games"}
- {id: other, cat: Other, desc: "Other"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
settings: []
settings:
- name: sort
type: select
label: Sort requested from site (Only works for searches with Keywords)
default: "?trie-date-d"
options:
"?trie-date-d": "created desc"
"?trie-date-a": "created asc"
"?trie-seeds-d": "seeders desc"
"?trie-seeds-a": "seeders asc"
"?trie-poid-d": "size desc"
"?trie-poid-a": "size asc"
"?trie-nom-d": "title desc"
"?trie-nom-a": "title asc"
download:
selector: a[href^="magnet:"]
@@ -36,10 +45,14 @@
search:
paths:
- path: "{{if .Keywords}}recherche/{{.Keywords}}{{else}}{{end}}"
- path: "{{ if .Keywords }}recherche/{{ .Keywords }}{{ .Config.sort }}{{else}}{{end}}"
rows:
selector: table.table-corps > tbody > tr:has(a)
fields:
category:
text: other
site_date:
selector: a
filters:
@@ -92,7 +105,7 @@
- name: re_replace
args: [ "(\\d+)\\.\\d", "$1 MB"]
date:
text: "now"
text: now
seeders:
text: 0
seeders:
@@ -104,6 +117,7 @@
selector: div.down
optional: true
downloadvolumefactor:
text: "0"
text: 0
uploadvolumefactor:
text: "1"
text: 1
# engine n/a

View File

@@ -85,6 +85,30 @@
movie-search: [q]
music-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "3"
options:
"3": "created"
"5": "seeders"
"4": "size"
"2": "title"
- name: type
type: select
label: Order requested from site
default: "2"
options:
"2": "desc"
"1": "asc"
login:
path: index.php?page=login
method: form
@@ -112,19 +136,20 @@
inputs:
page: searchlist
pages: 1
order: 3
by: 2
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"
# 0=mixed 1=no free 2=50%free 3=100%free 4=50%&100%free
gold: 0
# 0=filename 1=file&descr 2=descr 3=uploader
options: 0
# 0=all 1=onlyactive 2=onlydead
active: 0
category: "{{if .Categories}}{{range .Categories}}{{.}};{{end}}{{else}}0{{end}}"
category: "{{ if .Categories }}{{ range .Categories }}{{.}};{{end}}{{else}}0{{end}}"
search: "{{ .Keywords }}"
rows:
selector: div.inf-table-row
fields:
title:
selector: div.list-name a.tlink
@@ -170,8 +195,9 @@
selector: div.torrent-completed
downloadvolumefactor:
case:
img[src="gold/gold.gif"]: "0"
img[src="gold/silver.gif"]: "0.5"
"*": "1"
img[src="gold/gold.gif"]: 0
img[src="gold/silver.gif"]: 0.5
"*": 1
uploadvolumefactor:
text: "1"
text: 1
# engine n/a

View File

@@ -1,7 +1,7 @@
---
site: crazyscorner
name: Crazy's Corner
description: "Crazy's Corner is a Private Torrent Tracker"
description: "Crazy's Corner is a Private Torrent Tracker for MUSIC"
language: en-us
type: private
encoding: UTF-8
@@ -10,167 +10,155 @@
caps:
categorymappings:
- {id: 11, cat: Movies/DVD, desc: "VIP MOVIES DVD-R"}
- {id: 34, cat: Movies/3D, desc: "VIP MOVIES 3D-Movies"}
- {id: 46, cat: Movies, desc: "VIP MOVIES VENOM-Packs"}
- {id: 52, cat: Movies/HD, desc: "VIP MOVIES High Def Mkv/Mp4"}
- {id: 70, cat: Movies, desc: "VIP MOVIES Movies Animation"}
- {id: 78, cat: TV, desc: "MISC POD CASTS"}
- {id: 35, cat: Movies/BluRay, desc: "VIP MOVIES Blu-Ray Movies"}
- {id: 36, cat: Movies/DVD, desc: "VIP MOVIES DvD-Rips"}
- {id: 37, cat: Movies, desc: "VIP MOVIES Classic-Movies"}
- {id: 38, cat: Movies, desc: "VIP MOVIES Classic-Kids-Movies"}
- {id: 47, cat: Movies/WEBDL, desc: "VIP MOVIES Webrip/WEB-DL"}
- {id: 39, cat: Movies, desc: "VIP MOVIES Movie-Packs"}
- {id: 1, cat: Movies, desc: "VIP MOVIES Movies"}
- {id: 5, cat: Movies, desc: "VIP MOVIES Anime"}
- {id: 32, cat: XXX, desc: "VIP MOVIES Adult-Movies"}
- {id: 33, cat: Movies/UHD, desc: "VIP MOVIES 4K-Movies"}
- {id: 4, cat: Movies, desc: "VIP MOVIES Misc-Torrents"}
- {id: 79, cat: Audio/Audiobook, desc: "MISC AUDIO BOOKS"}
- {id: 81, cat: Audio/Other, desc: "MISC RADIO SHOWS"}
- {id: 43, cat: TV, desc: "VIP TV Kids-tv"}
- {id: 48, cat: TV/Sport, desc: "VIP SPORTS Sport-Misc"}
- {id: 97, cat: Movies, desc: "DISNEY Movies"}
- {id: 44, cat: PC/ISO, desc: "VIP GAMES Games-Pc-Iso"}
- {id: 45, cat: Console, desc: "VIP GAMES All Console Games"}
- {id: 41, cat: TV, desc: "VIP TV Tv Episodes"}
- {id: 91, cat: Movies, desc: "U.B.D Movies"}
- {id: 92, cat: Audio, desc: "U.B.D Music"}
- {id: 93, cat: TV, desc: "U.B.D MISC TV"}
- {id: 94, cat: Other, desc: "U.B.D MISC"}
- {id: 95, cat: Movies, desc: "U.B.D.Classic picks"}
- {id: 42, cat: TV, desc: "VIP TV Tv Packs"}
- {id: 84, cat: PC, desc: "VIP APPS MISC"}
- {id: 2, cat: Audio, desc: "VIP Music"}
- {id: 30, cat: Audio, desc: "VIP Music-Packs"}
- {id: 31, cat: Audio, desc: "VIP Music-Albums"}
- {id: 3, cat: PC/Games, desc: "VIP Misc Games"}
- {id: 40, cat: TV, desc: "VIP TV Tv Single Seasons"}
- {id: 7, cat: PC/0day, desc: "VIP Apps Win"}
- {id: 8, cat: PC, desc: "VIP Apps Linux"}
- {id: 9, cat: PC/Mac, desc: "VIP Apps Mac"}
- {id: 15, cat: Books/Ebook, desc: "E Books Adventure"}
- {id: 55, cat: Books/Ebook, desc: "E Books Sci-Fi"}
- {id: 51, cat: Books/Ebook, desc: "E Books Food/Cook-Books"}
- {id: 56, cat: Books/Ebook, desc: "E Books Fantasy/Paranormal"}
- {id: 57, cat: Books/Ebook, desc: "E Books Science"}
- {id: 58, cat: Books/Ebook, desc: "E Books Wildlife & Pets"}
- {id: 59, cat: Books/Ebook, desc: "E Books Hobbies"}
- {id: 60, cat: Books/Ebook, desc: "E Books Arts & Crafts"}
- {id: 61, cat: Books/Ebook, desc: "E Books Reference/Manuals"}
- {id: 62, cat: Books/Ebook, desc: "E Books Outdoors/Gardening"}
- {id: 63, cat: Books/Ebook, desc: "E Books Romance"}
- {id: 64, cat: Books/Ebook, desc: "E Books Book Packs"}
- {id: 65, cat: Books/Ebook, desc: "E Books Thriller"}
- {id: 66, cat: Books/Ebook, desc: "E Books Travel"}
- {id: 71, cat: Books/Ebook, desc: "E Books Children's Books"}
- {id: 16, cat: Books/Ebook, desc: "E Books Biography"}
- {id: 17, cat: Books/Ebook, desc: "E Books Fiction & Literature"}
- {id: 18, cat: Books/Ebook, desc: "E Books Gay/Lesbian"}
- {id: 19, cat: Books/Ebook, desc: "E Books Ghost Stories"}
- {id: 20, cat: Books/Ebook, desc: "E Books Health"}
- {id: 21, cat: Books/Ebook, desc: "E Books History"}
- {id: 22, cat: Books/Ebook, desc: "E Books Horror"}
- {id: 23, cat: Books/Ebook, desc: "E Books Humor"}
- {id: 24, cat: Books/Ebook, desc: "E Books Nature"}
- {id: 26, cat: Books/Ebook, desc: "E Books Magazines"}
- {id: 27, cat: Books/Ebook, desc: "E Books War & Crime"}
- {id: 28, cat: Books/Ebook, desc: "E Books Comics"}
- {id: 29, cat: Books/Ebook, desc: "E Books Misc Books"}
- {id: 12, cat: Books/Ebook, desc: "E Books Adult"}
- {id: 1, cat: Audio, desc: "Alternative"}
- {id: 2, cat: Audio, desc: " |-- "}
- {id: 3, cat: Audio, desc: "Blues"}
- {id: 35, cat: Audio, desc: "Christmas Music"}
- {id: 4, cat: Audio, desc: "Classic Rock"}
- {id: 6, cat: Audio, desc: "Country"}
- {id: 7, cat: Audio, desc: "Dance"}
- {id: 8, cat: Audio, desc: "Disco"}
- {id: 9, cat: Audio, desc: "Electronic"}
- {id: 10, cat: Audio, desc: "Folk"}
- {id: 11, cat: Audio, desc: "Gospel"}
- {id: 37, cat: Audio, desc: "HardCore"}
- {id: 12, cat: Audio, desc: "Heavy-Metal"}
- {id: 13, cat: Audio, desc: "Hip-Hop"}
- {id: 14, cat: Audio, desc: "Jazz"}
- {id: 15, cat: Audio, desc: "Karaoke"}
- {id: 16, cat: Audio, desc: "Metal"}
- {id: 34, cat: Audio, desc: "Misc Compilation Albums Packs"}
- {id: 17, cat: Audio, desc: "Music Apps"}
- {id: 18, cat: Audio, desc: "Music Video"}
- {id: 19, cat: Audio, desc: "Opera"}
- {id: 20, cat: Audio, desc: "Pop"}
- {id: 21, cat: Audio, desc: "Punk"}
- {id: 22, cat: Audio, desc: "Punk Pop"}
- {id: 24, cat: Audio, desc: "R & B"}
- {id: 23, cat: Audio, desc: "Rap"}
- {id: 25, cat: Audio, desc: "Reggae"}
- {id: 26, cat: Audio, desc: "Rock"}
- {id: 27, cat: Audio, desc: "Rock-70s"}
- {id: 28, cat: Audio, desc: "Rock-80s"}
- {id: 29, cat: Audio, desc: "Soul"}
- {id: 30, cat: Audio, desc: "Sound Tracks"}
- {id: 31, cat: Audio, desc: "Techno"}
- {id: 32, cat: Audio, desc: "Teen-Pop"}
- {id: 33, cat: Audio, desc: "Trance"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q, album, artist, label, year]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: sort
type: select
label: Sort requested from site
default: "added"
options:
"added": "created"
"seeders": "seeders"
"size": "size"
"name": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
path: index.php?page=login
path: takelogin.php
method: post
inputs:
uid: "{{ .Config.username }}"
pwd: "{{ .Config.password }}"
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
submit: LOGIN
error:
- selector: tr td span[style="color:#FF0000;"]
- selector: table:contains("ERROR")
test:
path: index.php
selector: a[href="logout.php"]
selector: a[href*="/logout.php?logouthash="]
download:
before:
path: takethanks.php
method: post
inputs:
torrentid: "{{ .DownloadUri.Query.id }}"
selector: a[href*="/download.php?id="]
attribute: href
search:
paths:
# http://crazys-corner.info/index.php?page=torrents&search=captain&category=0&uploader=0&options=0&active=0&gold=0
- path: index.php
- path: browse.php
method: post
inputs:
search: "{{ .Keywords }}"
page: "torrents"
category: "{{range .Categories}}{{.}};{{end}}"
uploader: 0
# 0 filename 1 file&descr 2 descr
options: 0
# 0 all 1 active 2 deadonly
active: 0
# 0 all 1 classic 2 silver 3 gold 4 silver&gold
gold: 0
do: search
keywords: "{{if or (.Query.Album) (.Query.Artist) }}{{ or (.Query.Album) (.Query.Artist) }}{{else}}{{ .Keywords }}{{end}}"
category: "{{ if .Categories }}{{ range .Categories }}{{.}};{{end}}{{else}}0{{end}}"
# t_name t_description t_both t_uploader t_genre
search_type: t_name
include_dead_torrents: yes
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
rows:
selector: table.lista tr:has(a[href^="index.php?page=torrent-details&id="])
selector: table.sortable tr:has(a[href*="/download.php?id="])
fields:
category:
selector: a[href^="index.php?page=torrents&category="]
selector: a[href*="/browse.php?category="]
attribute: href
filters:
- name: querystring
args: category
title:
selector: a[title][href^="index.php?page=torrent-details&id="]
# abbreviated title
selector: a[href*="/details.php?id="]
title:
selector: div.tooltip-content > div
optional: true
details:
selector: a[title][href^="index.php?page=torrent-details&id="]
selector: a[href*="/details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
selector: a[href*="/details.php?id="]
attribute: href
magnet:
selector: a[href^="magnet:?xt="]
attribute: href
banner:
selector: a[title][href^="index.php?page=torrent-details&id="]
attribute: onmouseover
filters:
- name: regexp
args: "src=(.+?) width"
size:
selector: a[title][href^="index.php?page=torrent-details&id="]
attribute: onmouseover
filters:
- name: regexp
args: "Size: (.+?)<"
selector: img[src*="/torrents/images/"]
attribute: src
date:
selector: a[title][href^="index.php?page=torrent-details&id="]
attribute: onmouseover
selector: td:nth-child(2)
filters:
- name: regexp
args: "Added:(.+?)<"
- name: timeago
seeders:
selector: a[title][href^="index.php?page=torrent-details&id="]
attribute: onmouseover
filters:
- name: regexp
args: "Seeders: (\\d+)<"
leechers:
selector: a[title][href^="index.php?page=torrent-details&id="]
attribute: onmouseover
filters:
- name: regexp
args: "Leechers: (\\d+)<"
args: "(\\d{2}-\\d{2}-\\d{4} \\d{2}:\\d{2})"
- name: dateparse
args: "02-01-2006 15:04"
size:
selector: td:nth-last-child(5)
grabs:
selector: a[title][href^="index.php?page=torrent-details&id="]
attribute: onmouseover
filters:
- name: regexp
args: "Done: (\\d+)<"
selector: td:nth-last-child(4)
seeders:
selector: td:nth-last-child(3)
leechers:
selector: td:nth-last-child(2)
downloadvolumefactor:
case:
img[src="images/freeleech.gif"]: "0"
img[src="gold/gold.gif"]: "0"
"*": "1"
img[src$="_flags/freedownload.gif"]: 0
"*": 1
uploadvolumefactor:
case:
"*": "1"
img[src$="_flags/x2.gif"]: 2
"*": 1
# TS Special Edition v.7.5

View File

@@ -108,6 +108,22 @@
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>"
- name: sort
type: select
label: Sort requested from site
default: "id"
options:
"id": "created"
"seeders": "seeders"
"size": "size"
"name": "title"
- name: type
type: select
label: Order requested from site
default: "desc"
options:
"desc": "desc"
"asc": "asc"
login:
method: cookie
@@ -126,6 +142,7 @@
to: "give"
torrent: "{{ .DownloadUri.Query.id }}"
selector: a:contains("Télécharger ce torrent")
attribute: href
search:
paths:
@@ -137,9 +154,12 @@
incldead: 1
freeleech: 0
lang: 0
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
rows:
selector: table.border_table > tbody > tr.t-row
fields:
title:
selector: a[href^="torrents-details.php?id="] b
@@ -183,9 +203,9 @@
args: "02-01-2006"
downloadvolumefactor:
case:
img[src="images/Torrents/free.png"]: "0"
"*": "1"
img[src="images/Torrents/free.png"]: 0
"*": 1
uploadvolumefactor:
case:
"*": "1"
"*": 1
# TT3.0

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