mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-11 14:19:17 +02:00
Compare commits
312 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
cf3848a54f | ||
![]() |
f1d774aa07 | ||
![]() |
c109133fcc | ||
![]() |
3538fdfaf7 | ||
![]() |
3468e7d404 | ||
![]() |
ec4afda184 | ||
![]() |
67b1835264 | ||
![]() |
aee64aa589 | ||
![]() |
687e6e237f | ||
![]() |
b48dd5e930 | ||
![]() |
5ee6833610 | ||
![]() |
c998ba3762 | ||
![]() |
2d4f7ab0e9 | ||
![]() |
676d03eb88 | ||
![]() |
6f7ecbfb7b | ||
![]() |
c4aa49eb32 | ||
![]() |
32aae44ffc | ||
![]() |
7883534c5e | ||
![]() |
b58c9fb718 | ||
![]() |
99d8f63f9e | ||
![]() |
635e8240d2 | ||
![]() |
117a670aa3 | ||
![]() |
f49c58a1fa | ||
![]() |
2492f1b797 | ||
![]() |
d6781f67b2 | ||
![]() |
2e0c22eb6d | ||
![]() |
f7bf4060ea | ||
![]() |
8c953bbf01 | ||
![]() |
4e91761fdf | ||
![]() |
53f8465e67 | ||
![]() |
e8bc2816ef | ||
![]() |
28ed7cc8a5 | ||
![]() |
089d9f2e3d | ||
![]() |
b4eda2ed54 | ||
![]() |
4d8d21a815 | ||
![]() |
f3290800d8 | ||
![]() |
22a858c076 | ||
![]() |
823419c032 | ||
![]() |
908d3f64f4 | ||
![]() |
4b599f391c | ||
![]() |
6d8239caab | ||
![]() |
dae37f273a | ||
![]() |
1615bff2d0 | ||
![]() |
b303befbb9 | ||
![]() |
e243c11cc0 | ||
![]() |
c860bca320 | ||
![]() |
a60c1fca36 | ||
![]() |
5ad2c7a371 | ||
![]() |
3df0218347 | ||
![]() |
601783aef6 | ||
![]() |
ac5af81344 | ||
![]() |
823563c84f | ||
![]() |
47410c5eb6 | ||
![]() |
af135f4ae9 | ||
![]() |
3eeced3a04 | ||
![]() |
8ea99b548d | ||
![]() |
ae73e8188d | ||
![]() |
9c5cda72da | ||
![]() |
fb1e24799d | ||
![]() |
5721948434 | ||
![]() |
d7b6f413be | ||
![]() |
959ec4667d | ||
![]() |
20433db169 | ||
![]() |
54465798e9 | ||
![]() |
313147d224 | ||
![]() |
84bd947eca | ||
![]() |
366abc4431 | ||
![]() |
2f7fa2f063 | ||
![]() |
205f6cac12 | ||
![]() |
f602b3db24 | ||
![]() |
0d72f1f228 | ||
![]() |
508125e68f | ||
![]() |
cfb714e13c | ||
![]() |
b9dcfd1b02 | ||
![]() |
a1b2dc67b8 | ||
![]() |
2207c5a961 | ||
![]() |
2caa09bb1e | ||
![]() |
68906f6e40 | ||
![]() |
2cf3cf15e3 | ||
![]() |
88202c1f7f | ||
![]() |
6293c787e7 | ||
![]() |
f67fda3bf4 | ||
![]() |
c81dd24fe7 | ||
![]() |
af94dd2757 | ||
![]() |
0a07738c5b | ||
![]() |
e05783a25a | ||
![]() |
27d4ab3967 | ||
![]() |
04b3efbbc2 | ||
![]() |
ccd5347be2 | ||
![]() |
e1c5f3ed6d | ||
![]() |
c1fb41204c | ||
![]() |
b50733054f | ||
![]() |
e324773c91 | ||
![]() |
6a4c34d5df | ||
![]() |
bc34b9f176 | ||
![]() |
96af05fbef | ||
![]() |
842d9e79ce | ||
![]() |
086d8b32e9 | ||
![]() |
a6390f2bc5 | ||
![]() |
1ab0827ae7 | ||
![]() |
db0f651f33 | ||
![]() |
7f163c3945 | ||
![]() |
cb53867b37 | ||
![]() |
b5b907c9ed | ||
![]() |
2f8ef4aec2 | ||
![]() |
e5929c850c | ||
![]() |
86771a87c6 | ||
![]() |
fca6ac0dbc | ||
![]() |
da61eb8988 | ||
![]() |
ef22d43f46 | ||
![]() |
f63f1361ce | ||
![]() |
547c9174b1 | ||
![]() |
cb292bbf06 | ||
![]() |
784c41b83a | ||
![]() |
42fbe9270a | ||
![]() |
8067f1948e | ||
![]() |
143cc6e8d0 | ||
![]() |
628ab0ca82 | ||
![]() |
cc13d7edf6 | ||
![]() |
6ea2c18384 | ||
![]() |
fb316d9068 | ||
![]() |
fda730dcad | ||
![]() |
8d921202fa | ||
![]() |
e6b135e151 | ||
![]() |
dbde3b469a | ||
![]() |
7841bcab06 | ||
![]() |
efe1346d41 | ||
![]() |
42beb6018e | ||
![]() |
2d0e82159d | ||
![]() |
08ad94a2f5 | ||
![]() |
0eebea0ef7 | ||
![]() |
e4888b83d8 | ||
![]() |
37f8066901 | ||
![]() |
92f976916f | ||
![]() |
530ad7ecf5 | ||
![]() |
c1bc750059 | ||
![]() |
364061fde0 | ||
![]() |
1b4826f966 | ||
![]() |
580eacdb18 | ||
![]() |
270b8c9041 | ||
![]() |
9f7590783d | ||
![]() |
63dceed010 | ||
![]() |
ee3e0dd0e1 | ||
![]() |
e19d59c4ab | ||
![]() |
d29132a540 | ||
![]() |
0037811fb5 | ||
![]() |
1f1b8d0074 | ||
![]() |
dae6aeb4b5 | ||
![]() |
9bfb249425 | ||
![]() |
0bbcecc1c3 | ||
![]() |
a871e35449 | ||
![]() |
9961031b0e | ||
![]() |
c2d3214c01 | ||
![]() |
13e14f3e62 | ||
![]() |
ffe435051b | ||
![]() |
5e00b2ec33 | ||
![]() |
a73fbccd22 | ||
![]() |
48cdc3bb5e | ||
![]() |
535f71c18c | ||
![]() |
9ceeb71448 | ||
![]() |
457449866e | ||
![]() |
427428d09b | ||
![]() |
82b203c9c3 | ||
![]() |
9677c2deee | ||
![]() |
9000745877 | ||
![]() |
2fb413123c | ||
![]() |
6316b82600 | ||
![]() |
2746d797ee | ||
![]() |
7e5a7ad153 | ||
![]() |
e947059da1 | ||
![]() |
65aaaa3d77 | ||
![]() |
c2b2c94e1b | ||
![]() |
e8465f23b9 | ||
![]() |
09d37ab232 | ||
![]() |
f413355610 | ||
![]() |
5a97cd7dd2 | ||
![]() |
7b354d1582 | ||
![]() |
b964a33ae2 | ||
![]() |
dfa513da24 | ||
![]() |
dcee9128f9 | ||
![]() |
30a8e1b4c5 | ||
![]() |
a5e2e6ef60 | ||
![]() |
772709d46c | ||
![]() |
71f60c612a | ||
![]() |
e6834990ec | ||
![]() |
17d7ed5a2b | ||
![]() |
10bf70c663 | ||
![]() |
8c14820a38 | ||
![]() |
63772f289d | ||
![]() |
8d5aec030c | ||
![]() |
280547ad01 | ||
![]() |
d01d57037e | ||
![]() |
48279699eb | ||
![]() |
b26e287a62 | ||
![]() |
66289cb3f3 | ||
![]() |
5bfe0179b2 | ||
![]() |
b9b5b3a442 | ||
![]() |
402dd9d917 | ||
![]() |
7d332aada4 | ||
![]() |
df8f634ede | ||
![]() |
fcd0167ee7 | ||
![]() |
8cd330e5fb | ||
![]() |
77d8ef50b3 | ||
![]() |
4d480e204a | ||
![]() |
a6486fc233 | ||
![]() |
655bc5c05e | ||
![]() |
3dfd0d22bb | ||
![]() |
c56c2b0dd9 | ||
![]() |
01a43e04e1 | ||
![]() |
2ad2e06754 | ||
![]() |
20d1813793 | ||
![]() |
534e718925 | ||
![]() |
9fc5b97de8 | ||
![]() |
684fadd2d2 | ||
![]() |
b66fd18380 | ||
![]() |
d1d8ef916e | ||
![]() |
c9a53fa2b2 | ||
![]() |
93d1976a14 | ||
![]() |
5b07e6424a | ||
![]() |
ecec3d2006 | ||
![]() |
f99bc5ba41 | ||
![]() |
9aae53bfb7 | ||
![]() |
59700dcd91 | ||
![]() |
13e1ab231f | ||
![]() |
8fd10dd2d1 | ||
![]() |
271036b527 | ||
![]() |
66ca1942b3 | ||
![]() |
87db689ea9 | ||
![]() |
525f78caca | ||
![]() |
0e38b1ada8 | ||
![]() |
50da308553 | ||
![]() |
c11de64a35 | ||
![]() |
d232acb85e | ||
![]() |
9cfbdd3545 | ||
![]() |
cdc6210160 | ||
![]() |
c866748de3 | ||
![]() |
af869583e3 | ||
![]() |
756cf7c0a6 | ||
![]() |
a839f7d56f | ||
![]() |
06bf11b64e | ||
![]() |
626a9cbc6a | ||
![]() |
ef9f5ad865 | ||
![]() |
b775064c60 | ||
![]() |
21f8fa966d | ||
![]() |
257295ed08 | ||
![]() |
57fc97dff7 | ||
![]() |
55ee2148e1 | ||
![]() |
65b008b75a | ||
![]() |
dc8d1698f0 | ||
![]() |
9071b1fe29 | ||
![]() |
3190cd0fd5 | ||
![]() |
0e5f843bac | ||
![]() |
5eb84f6236 | ||
![]() |
c94b8682c8 | ||
![]() |
4ba5e64ccb | ||
![]() |
799b7ca422 | ||
![]() |
9d188996ca | ||
![]() |
f808b61210 | ||
![]() |
e4a8ef36c0 | ||
![]() |
478e3ba74e | ||
![]() |
cbde01d520 | ||
![]() |
403621ab8a | ||
![]() |
71a42b089e | ||
![]() |
65ce4f54a1 | ||
![]() |
2d900d1734 | ||
![]() |
af90708fad | ||
![]() |
649f57b0bf | ||
![]() |
792d2a433f | ||
![]() |
b55d55c640 | ||
![]() |
021468d6f5 | ||
![]() |
6e5e326d64 | ||
![]() |
da212064f4 | ||
![]() |
f4a0dfb6de | ||
![]() |
d4e184fbca | ||
![]() |
e4cd2351cf | ||
![]() |
b1a9361221 | ||
![]() |
c137530f5d | ||
![]() |
aa1583497c | ||
![]() |
e564149ee0 | ||
![]() |
a2fbaba8e8 | ||
![]() |
15ff725ee5 | ||
![]() |
8db85b5abb | ||
![]() |
6ad732cd87 | ||
![]() |
7d1110e86a | ||
![]() |
b4fd588e9b | ||
![]() |
2120457518 | ||
![]() |
24c4a1e002 | ||
![]() |
7c5e557f7f | ||
![]() |
e3fc4a86a3 | ||
![]() |
0e3baba110 | ||
![]() |
c2e7282bd3 | ||
![]() |
119784ab5c | ||
![]() |
3e5e48c3a0 | ||
![]() |
7ab8138060 | ||
![]() |
60505e1638 | ||
![]() |
b52c67848c | ||
![]() |
a0a7055583 | ||
![]() |
83163c2b9b | ||
![]() |
fb499570aa | ||
![]() |
536d6a65db | ||
![]() |
82d0c934ff | ||
![]() |
75bb28f376 | ||
![]() |
21c7bf604a | ||
![]() |
a3de7fc47b | ||
![]() |
e3d9c68f5a | ||
![]() |
3b27a04590 | ||
![]() |
4b9ff6a6f8 | ||
![]() |
a2185bf957 | ||
![]() |
02f0dd8c59 | ||
![]() |
3848a0bcd6 | ||
![]() |
e2cc72589a | ||
![]() |
4216136d42 |
2
.github/ISSUE_TEMPLATE.md
vendored
2
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,7 +1,7 @@
|
||||
**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.
|
||||
|
||||
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 log must be included**. Instructions for obtaining logs are here: https://github.com/Jackett/Jackett#troubleshooting
|
||||
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
|
||||
|
||||
**Jackett version**:
|
||||
**Mono version** (if not using Windows):
|
||||
|
7
.github/duplicate_issue.md
vendored
Normal file
7
.github/duplicate_issue.md
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
Duplicate of #{{ chosenIssue.number }}
|
||||
|
||||
Hi @{{ payload.sender.login }},
|
||||
|
||||
This issue looks similar to #{{ chosenIssue.number }}.
|
||||
|
||||
To prevent issue tracker clutter, this issue will now be closed. If you feel this issue isn't a duplicate of #{{ chosenIssue.number }}, then feel free to post a comment on this issue stating why it's not a duplicate. Your comment will automatically re-open this issue.
|
9
.github/no_information_provided.md
vendored
Normal file
9
.github/no_information_provided.md
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
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
|
||||
|
||||
**Jackett version**:
|
||||
**Mono version** (if not using Windows):
|
3
.github/no_response.md
vendored
Normal file
3
.github/no_response.md
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
Hi @{{ payload.data.user.login }},
|
||||
|
||||
No response has been received for {{ days }} days. To prevent issue tracker clutter, this issue will now be closed. To re-open the issue, please provide the information requested and the issue will automatically re-open.
|
7
.github/pull_request_readme.md
vendored
Normal file
7
.github/pull_request_readme.md
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
Hi @{{ payload.pull_request.user.login }},
|
||||
|
||||
Thanks for your contribution to Jackett!
|
||||
|
||||
If you are adding a new indexer, please ensure that you've added it to the readme as well
|
||||
|
||||
A human will be along soon to review
|
2
.gitignore
vendored
2
.gitignore
vendored
@@ -199,3 +199,5 @@ FakesAssemblies/
|
||||
/Artifacts
|
||||
/TestResults
|
||||
*.DS_Store
|
||||
.idea/
|
||||
launchSettings.json
|
||||
|
71
README.md
71
README.md
@@ -2,7 +2,6 @@
|
||||
|
||||
[](https://github.com/Jackett/Jackett/issues)
|
||||
[](https://github.com/Jackett/Jackett/pulls)
|
||||
[](https://www.bountysource.com/teams/jackett)
|
||||
[](https://ci.appveyor.com/project/Jackett/jackett)
|
||||
[](https://github.com/Jackett/Jackett/releases/latest)
|
||||
[](https://hub.docker.com/r/linuxserver/jackett/)
|
||||
@@ -17,8 +16,8 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
|
||||
|
||||
#### Supported Systems
|
||||
* Windows using .NET 4.5.2 [Download here](https://www.microsoft.com/net/framework/versions/net452).
|
||||
* Linux and macOS using Mono 4.6.0 and above. [Download here](http://www.mono-project.com/download/). Earlier versions of mono may work but some trackers may fail to negotiate SSL correctly, and others may cause Jackett to crash when used.
|
||||
* Windows using .NET 4.6.1 or above [Download here](https://www.microsoft.com/net/framework/versions/net461).
|
||||
* Linux and macOS using Mono 5.8 or above. [Download here](http://www.mono-project.com/download/). Earlier versions of mono may work, but some trackers may fail to negotiate SSL correctly, and others may cause Jackett to crash when used.
|
||||
|
||||
### Supported Public Trackers
|
||||
* 1337x
|
||||
@@ -37,19 +36,22 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Horrible Subs
|
||||
* Idope
|
||||
* Il Corsaro Nero <!-- maintained by bonny1992 -->
|
||||
* Il Corsaro Blu
|
||||
* Isohunt2
|
||||
* KickAssTorrent
|
||||
* KickAssTorrent (thekat.se clone)
|
||||
* LimeTorrents
|
||||
* MagnetDL
|
||||
* NextTorrent
|
||||
* Newpct (aka: tvsinpagar, descargas2020, torrentlocura, torrentrapid, etc)
|
||||
* Nyaa.si
|
||||
* Nyaa-Pantsu
|
||||
* Nyoo
|
||||
* OxTorrent
|
||||
* RARBG
|
||||
* RuTor
|
||||
* ShowRSS
|
||||
* sukebei.Nyaa.si
|
||||
* sukebei-Pantsu
|
||||
* The Pirate Bay
|
||||
* TNTVillage <!-- maintained by bonny1992 -->
|
||||
* Tokyo Toshokan
|
||||
@@ -90,7 +92,6 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Abnormal
|
||||
* Acid-Lounge
|
||||
* AlphaRatio
|
||||
* Andraste
|
||||
* AnimeBytes
|
||||
* AnimeTorrents
|
||||
* AOX
|
||||
@@ -120,9 +121,11 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* BJ-Share
|
||||
* BlueBird
|
||||
* Blutopia
|
||||
* Brasil Tracker
|
||||
* BroadcastTheNet
|
||||
* BrokenStones
|
||||
* BTNext
|
||||
* BTWorld
|
||||
* Carpathians
|
||||
* CCFBits
|
||||
* CGPeers
|
||||
@@ -131,7 +134,6 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Cinemageddon
|
||||
* CinemaZ
|
||||
* Classix
|
||||
* CZTeam
|
||||
* DanishBits
|
||||
* DataScene
|
||||
* Demonoid
|
||||
@@ -157,20 +159,19 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Fuzer
|
||||
* GayTorrent.ru
|
||||
* GazelleGames
|
||||
* GFTracker
|
||||
* Gfxnews
|
||||
* GFXPeers
|
||||
* Ghost City
|
||||
* GigaTorrents
|
||||
* GimmePeers <!-- maintained by jamesb2147 -->
|
||||
* Girotottent
|
||||
* GODS [![(invite needed)][inviteneeded]](#)
|
||||
* Gormogon
|
||||
* Greek Team
|
||||
* HacheDe
|
||||
* Hardbay
|
||||
* HD-Forever
|
||||
* HD-Only
|
||||
* HD-Space
|
||||
* HD-Spain
|
||||
* HD-Torrents
|
||||
* HD-Bits.com
|
||||
* HDBits
|
||||
@@ -182,7 +183,6 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* HDTorrents.it
|
||||
* Hebits
|
||||
* Hon3y HD
|
||||
* House-of-Torrents
|
||||
* Hyperay
|
||||
* ICE Torrent
|
||||
* I Love Classics
|
||||
@@ -211,7 +211,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* notwhat.cd
|
||||
* Ourbits
|
||||
* Passione Torrent <!-- maintained by bonny1992 -->
|
||||
* PassThePopcorn [![(invite needed)][inviteneeded]](#)
|
||||
* PassThePopcorn
|
||||
* PirateTheNet
|
||||
* PiXELHD
|
||||
* PolishSource
|
||||
@@ -221,9 +221,10 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Psytorrents
|
||||
* PTFiles
|
||||
* PuntoTorrent
|
||||
* Racing4Everyone (R4E)
|
||||
* Redacted (PassTheHeadphones)
|
||||
* RevolutionTT
|
||||
* Rockhard Lossless
|
||||
* RGU
|
||||
* RoDVD
|
||||
* SceneFZ
|
||||
* SceneReactor
|
||||
@@ -240,9 +241,9 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* SportsCult
|
||||
* SportHD
|
||||
* Superbits
|
||||
* Synthesiz3r
|
||||
* Tasmanit
|
||||
* TBPlus
|
||||
* TenYardTracker
|
||||
* The Empire
|
||||
* The Geeks
|
||||
* The Horror Charnel
|
||||
@@ -253,7 +254,6 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* The Show
|
||||
* The Vault
|
||||
* The-Torrents
|
||||
* TenYardTracker
|
||||
* Torrent Network
|
||||
* Torrent Sector Crew
|
||||
* Torrent.LT
|
||||
@@ -268,8 +268,9 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* Torrentland
|
||||
* TorrentLeech
|
||||
* Torrents.Md
|
||||
* TorrentSeeds
|
||||
* Torrent-Syndikat
|
||||
* TorrentWTF
|
||||
* TOrrent-tuRK (TORK)
|
||||
* TorViet
|
||||
* ToTheGlory
|
||||
* TranceTraffic
|
||||
@@ -283,6 +284,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* World-In-HD
|
||||
* WorldOfP2P
|
||||
* x264
|
||||
* xBytesV2
|
||||
* XSpeeds
|
||||
* Xthor
|
||||
* Your Exotic Torrents
|
||||
@@ -291,6 +293,13 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
|
||||
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.
|
||||
|
||||
### Aggregate indexers
|
||||
|
||||
A special "all" indexer is available at `/api/v2.0/indexers/all/results/torznab/api`.
|
||||
It will query all configured indexers and return the combined results.
|
||||
|
||||
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.
|
||||
|
||||
## Installation on Windows
|
||||
|
||||
We recommend you install Jackett as a Windows service using the supplied installer. You may also download the zipped version if you would like to configure everything manually.
|
||||
@@ -309,7 +318,7 @@ When installed as a service the tray icon acts as a way to open/start/stop Jacke
|
||||
Jackett can also be run from the command line if you would like to see log messages (Ensure the server isn't already running from the tray/service). This can be done by using "JackettConsole.exe" (for Command Prompt), found in the Jackett data folder: "%ProgramData%\Jackett".
|
||||
|
||||
## Installation on Linux
|
||||
1. Install [Mono 4.6](http://www.mono-project.com/download/#download-lin) or better (using the latest stable release for your distribution is recommended)
|
||||
1. Install [Mono 5.8](http://www.mono-project.com/download/#download-lin) or better (using the latest stable release is recommended)
|
||||
* 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:
|
||||
@@ -322,6 +331,8 @@ Detailed instructions for [Ubuntu 14.x](http://www.htpcguides.com/install-jacket
|
||||
|
||||
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).
|
||||
|
||||
## Installation on macOS
|
||||
|
||||
### Prerequisites
|
||||
@@ -371,18 +382,42 @@ Example config for apache:
|
||||
- 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 logging__
|
||||
* __Enable enhanced logging__
|
||||
|
||||
You can get additional 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).
|
||||
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 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.
|
||||
|
||||
## Contributing
|
||||
All contributions are welcome just send a pull request. Jackett's framework allows our team (and any other volunteering dev) to implement new trackers in an hour or two. If you'd like support for a new tracker but are not a developer then feel free to leave a request on the [issues page](https://github.com/Jackett/Jackett/issues). It is recommended to use Visual Studio 2017 when making code changes in this project. You can download the community version for free [here](https://www.visualstudio.com/downloads/).
|
||||
|
||||
|
||||
## Building from source
|
||||
|
||||
### Windows
|
||||
* Open the Jackett solution in Visual Studio 2017 (version 15.7 or above)
|
||||
* Right click on the Jackett solution and click 'Rebuild Solution' to restore nuget packages
|
||||
* Select Jackett.Console as startup project
|
||||
* Build/Start the project
|
||||
|
||||
### Linux
|
||||
|
||||
```bash
|
||||
sudo apt install mono-complete nuget msbuild # install build tools (debian/ubuntu)
|
||||
git clone https://github.com/Jackett/Jackett.git
|
||||
cd Jackett/src
|
||||
nuget restore Jackett.sln # prepare dependencies
|
||||
msbuild Jackett.Console/Jackett.Console.csproj /t:Build /p:Configuration=Debug # compile
|
||||
mono Jackett.Console/bin/Debug/JackettConsole.exe # run jackett
|
||||
```
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
|
@@ -27,6 +27,7 @@ deploy:
|
||||
description: $(release_description)
|
||||
auth_token:
|
||||
secure: hOg+16YTIbq4kO9u4D1YVOTbWDqgCX6mAQYMbnmBBSw2CiUsZh7OKbupoUb3FtWa
|
||||
artifact: /^(?:(?![Ee]xperimental).)*$/
|
||||
draft: true
|
||||
on:
|
||||
branch: master
|
||||
|
@@ -1,5 +1,4 @@
|
||||
#tool nuget:?package=NUnit.ConsoleRunner
|
||||
#addin nuget:?package=Cake.FileHelpers
|
||||
#addin nuget:?package=Cake.Git
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
@@ -174,7 +173,7 @@ Task("Appveyor-Push-Artifacts")
|
||||
}
|
||||
});
|
||||
|
||||
Task("Potential-Release-Notes")
|
||||
Task("Release-Notes")
|
||||
.IsDependentOn("Appveyor-Push-Artifacts")
|
||||
.Does(() =>
|
||||
{
|
||||
@@ -213,7 +212,7 @@ Task("Potential-Release-Notes")
|
||||
string buildNote = String.Join(Environment.NewLine, notesList);
|
||||
Information(buildNote);
|
||||
|
||||
FileAppendLines(workingDir + "\\BuildOutput\\ReleaseNotes.txt", notesList.ToArray());
|
||||
System.IO.File.WriteAllLines(workingDir + "\\BuildOutput\\ReleaseNotes.txt", notesList.ToArray());
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -273,7 +272,7 @@ private string RelativeWinPathToCygPath(string relativePath)
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
Task("Default")
|
||||
.IsDependentOn("Potential-Release-Notes")
|
||||
.IsDependentOn("Release-Notes")
|
||||
.Does(() =>
|
||||
{
|
||||
Information("Default Task Completed");
|
||||
|
@@ -158,14 +158,15 @@ if(-Not $SkipToolPackageRestore.IsPresent) {
|
||||
if((!(Test-Path $PACKAGES_CONFIG_MD5)) -Or
|
||||
($md5Hash -ne (Get-Content $PACKAGES_CONFIG_MD5 ))) {
|
||||
Write-Verbose -Message "Missing or changed package.config hash..."
|
||||
Remove-Item * -Recurse -Exclude packages.config,nuget.exe
|
||||
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 occured while restoring NuGet tools."
|
||||
Throw "An error occurred while restoring NuGet tools."
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -185,7 +186,7 @@ if (Test-Path $ADDINS_PACKAGES_CONFIG) {
|
||||
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$ADDINS_DIR`""
|
||||
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Throw "An error occured while restoring NuGet addins."
|
||||
Throw "An error occurred while restoring NuGet addins."
|
||||
}
|
||||
|
||||
Write-Verbose -Message ($NuGetOutput | out-string)
|
||||
@@ -202,7 +203,7 @@ if (Test-Path $MODULES_PACKAGES_CONFIG) {
|
||||
$NuGetOutput = Invoke-Expression "&`"$NUGET_EXE`" install -ExcludeVersion -OutputDirectory `"$MODULES_DIR`""
|
||||
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Throw "An error occured while restoring NuGet modules."
|
||||
Throw "An error occurred while restoring NuGet modules."
|
||||
}
|
||||
|
||||
Write-Verbose -Message ($NuGetOutput | out-string)
|
||||
|
@@ -1,7 +1,8 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using CurlSharp.Enums;
|
||||
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Callbacks
|
||||
{
|
||||
/// <summary>
|
||||
/// Called when cURL has debug information for the client.
|
||||
|
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using CurlSharp.Enums;
|
||||
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Callbacks
|
||||
{
|
||||
/// <summary>
|
||||
/// Called when <c>cURL</c> wants to lock a shared resource.
|
||||
|
@@ -19,6 +19,7 @@
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using CurlSharp.Enums;
|
||||
|
||||
namespace CurlSharp
|
||||
{
|
||||
|
@@ -19,6 +19,8 @@
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using CurlSharp.Callbacks;
|
||||
using CurlSharp.Enums;
|
||||
|
||||
namespace CurlSharp
|
||||
{
|
||||
|
@@ -19,6 +19,7 @@
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using CurlSharp.Enums;
|
||||
|
||||
namespace CurlSharp
|
||||
{
|
||||
|
@@ -20,6 +20,7 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Runtime.InteropServices;
|
||||
using CurlSharp.Enums;
|
||||
|
||||
namespace CurlSharp
|
||||
{
|
||||
|
@@ -17,6 +17,8 @@
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
using CurlSharp.Enums;
|
||||
|
||||
namespace CurlSharp
|
||||
{
|
||||
/// <summary>
|
||||
|
@@ -19,6 +19,8 @@
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using CurlSharp.Callbacks;
|
||||
using CurlSharp.Enums;
|
||||
|
||||
namespace CurlSharp
|
||||
{
|
||||
|
@@ -20,6 +20,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using CurlSharp.Enums;
|
||||
|
||||
namespace CurlSharp
|
||||
{
|
||||
|
@@ -18,6 +18,7 @@
|
||||
**************************************************************************/
|
||||
|
||||
using System;
|
||||
using CurlSharp.Callbacks;
|
||||
|
||||
namespace CurlSharp
|
||||
{
|
||||
|
@@ -18,7 +18,7 @@
|
||||
**************************************************************************/
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using CurlSharp.Enums;
|
||||
|
||||
namespace CurlSharp
|
||||
{
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains values used to specify the order in which cached connections
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// Status code returned from <see cref="CurlEasy" /> functions.
|
||||
|
@@ -17,7 +17,7 @@
|
||||
* $Id: Enums.cs,v 1.1 2005/02/17 22:47:25 jeffreyphillips Exp $
|
||||
**************************************************************************/
|
||||
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// One of these is returned by <see cref="CurlHttpMultiPartForm.AddSection" />.
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// These are options available to build a multi-part form section
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// This enumeration contains values used to specify the FTP Ssl
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// This enumeration contains values used to specify the FTP Ssl level
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// This enumeration contains values used to specify the HTTP authentication
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains values used to specify the HTTP version level when using
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// This enumeration is used to extract information associated with an
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// A member of this enumeration is passed as the first parameter to the
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains values used to initialize libcurl internally. One of
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// Your handler for the <see cref="CurlEasy.CurlIoctlCallback" />
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// Your handler for the <see cref="CurlEasy.CurlIoctlCallback" /> delegate
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// This enumeration contains values used to specify the IP resolution
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// Values containing the type of shared access requested when libcurl
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// Members of this enumeration should be passed to
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// The status code associated with an <see cref="CurlEasy" /> object in a
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains return codes for many of the functions in the
|
||||
|
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
public enum CurlMultiOption
|
||||
{
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains values used to specify the preference of libcurl between
|
||||
|
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
public enum CurlOptType
|
||||
{
|
||||
|
@@ -17,7 +17,9 @@
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
namespace CurlSharp
|
||||
using CurlSharp.Callbacks;
|
||||
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// One of these is passed as the first parameter to
|
||||
|
@@ -8,7 +8,7 @@
|
||||
//
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/* bitmask bits for CURLMOPT_PIPELINING */
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// This enumeration contains values used to specify the proxy type when
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains return codes from many of the functions in the
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// A member of this enumeration is passed to the function
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains values used to specify the Ssl version level when using
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains values used to specify the time condition when using
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// A member of this enumeration is passed to the function
|
||||
|
@@ -1,4 +1,4 @@
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp.Enums
|
||||
{
|
||||
/// <summary>
|
||||
/// A bitmask of libcurl features OR'd together as the value of the
|
||||
|
@@ -24,6 +24,7 @@ using System;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using CurlSharp.Enums;
|
||||
|
||||
namespace CurlSharp
|
||||
{
|
||||
|
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace CurlSharp
|
||||
namespace CurlSharp
|
||||
{
|
||||
public class SSLFix
|
||||
{
|
||||
|
@@ -5,14 +5,11 @@
|
||||
// sergey.stoyan@gmail.com
|
||||
// 27 February 2007
|
||||
//********************************************************************************************
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using System.Collections;
|
||||
namespace Cliver
|
||||
|
||||
namespace DateTimeRoutines
|
||||
{
|
||||
/// <summary>
|
||||
/// Miscellaneous and parsing methods for DateTime
|
||||
|
@@ -221,7 +221,7 @@ function displayUnconfiguredIndexersList() {
|
||||
}
|
||||
}).fail(function (data) {
|
||||
if(data.responseJSON.error !== undefined) {
|
||||
doNotify("An error occured while configuring this indexer<br /><b>" + data.responseJSON.error + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + indexerId + "] " + data.responseJSON.error + " (Config)\" target=\"_blank\">Click here to open an issue on Github for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
|
||||
doNotify("An error occured while configuring this indexer<br /><b>" + data.responseJSON.error + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + indexerId + "] " + data.responseJSON.error + " (Config)\" target=\"_blank\">Click here to open an issue on GitHub for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
|
||||
} else {
|
||||
doNotify("An error occured while configuring this indexer, is Jackett server running ?", "danger", "glyphicon glyphicon-alert");
|
||||
}
|
||||
@@ -444,7 +444,7 @@ function testIndexer(id, notifyResult) {
|
||||
}).fail(function (data) {
|
||||
updateTestState(id, "error", data.error, indexers);
|
||||
if(data.responseJSON.error !== undefined && notifyResult) {
|
||||
doNotify("An error occured while testing this indexer<br /><b>" + data.responseJSON.error + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + id + "] " + data.responseJSON.error + " (Test)\" target=\"_blank\">Click here to open an issue on Github for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
|
||||
doNotify("An error occured while testing this indexer<br /><b>" + data.responseJSON.error + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + id + "] " + data.responseJSON.error + " (Test)\" target=\"_blank\">Click here to open an issue on GitHub for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
|
||||
} else {
|
||||
doNotify("An error occured while testing indexers, please take a look at indexers with failed test for more informations.", "danger", "glyphicon glyphicon-alert");
|
||||
}
|
||||
@@ -497,10 +497,14 @@ function populateConfigItems(configForm, config) {
|
||||
hasReacaptcha = true;
|
||||
captchaItem = config[i];
|
||||
}
|
||||
else if (config[i].id === 'cookieheader' && hasReacaptcha) { // inject cookie into captcha item
|
||||
captchaItem.cookieheader = config[i].value;
|
||||
console.log(captchaItem);
|
||||
}
|
||||
}
|
||||
|
||||
var setupItemTemplate = Handlebars.compile($("#setup-item").html());
|
||||
if (hasReacaptcha && !window.jackettIsLocal) {
|
||||
if (hasReacaptcha && !window.jackettIsLocal && false) { // disable this for now, use inline cookie (below)
|
||||
var setupValueTemplate = Handlebars.compile($("#setup-item-nonlocalrecaptcha").html());
|
||||
captchaItem.value_element = setupValueTemplate(captchaItem);
|
||||
var template = setupItemTemplate(captchaItem);
|
||||
@@ -509,11 +513,22 @@ function populateConfigItems(configForm, config) {
|
||||
|
||||
for (var i = 0; i < config.length; i++) {
|
||||
var item = config[i];
|
||||
var setupValueTemplate = Handlebars.compile($("#setup-item-" + item.type).html());
|
||||
item.value_element = setupValueTemplate(item);
|
||||
var template = setupItemTemplate(item);
|
||||
$formItemContainer.append(template);
|
||||
if ((item.id === 'username' || item.id === 'password') && hasReacaptcha) {
|
||||
continue; // skip username/password if there's a recaptcha
|
||||
}
|
||||
if (item.type != 'recaptcha') {
|
||||
var setupValueTemplate = Handlebars.compile($("#setup-item-" + item.type).html());
|
||||
item.value_element = setupValueTemplate(item);
|
||||
var template = setupItemTemplate(item);
|
||||
$formItemContainer.append(template);
|
||||
}
|
||||
if (item.type === 'recaptcha') {
|
||||
// inject cookie dialog until recaptcha can be solved again
|
||||
var setupValueTemplate = Handlebars.compile($("#setup-item-nonlocalrecaptcha").html());
|
||||
captchaItem.value_element = setupValueTemplate(captchaItem);
|
||||
var template = setupItemTemplate(captchaItem);
|
||||
$formItemContainer.append(template);
|
||||
/*
|
||||
var jackettrecaptcha = $('.jackettrecaptcha');
|
||||
jackettrecaptcha.data("version", item.version);
|
||||
switch (item.version) {
|
||||
@@ -543,6 +558,7 @@ function populateConfigItems(configForm, config) {
|
||||
});
|
||||
break;
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -634,7 +650,7 @@ function populateSetupForm(indexerId, name, config, caps, link, alternativesitel
|
||||
}
|
||||
}).fail(function (data) {
|
||||
if(data.responseJSON.error !== undefined) {
|
||||
doNotify("An error occured while updating this indexer<br /><b>" + data.responseJSON.error + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + indexerId + "] " + data.responseJSON.error + " (Config)\" target=\"_blank\">Click here to open an issue on Github for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
|
||||
doNotify("An error occured while updating this indexer<br /><b>" + data.responseJSON.error + "</b><br /><i><a href=\"https://github.com/Jackett/Jackett/issues/new?title=[" + indexerId + "] " + data.responseJSON.error + " (Config)\" target=\"_blank\">Click here to open an issue on GitHub for this indexer.</a><i>", "danger", "glyphicon glyphicon-alert", false);
|
||||
} else {
|
||||
doNotify("An error occured while updating this indexer, request to Jackett server failed, is server running ?", "danger", "glyphicon glyphicon-alert");
|
||||
}
|
||||
|
@@ -30,7 +30,7 @@
|
||||
<script type="text/javascript" src="../bootstrap/bootstrap.min.js?changed=2017083001"></script>
|
||||
<script type="text/javascript" src="../libs/bootstrap-notify.js?changed=2017083001"></script>
|
||||
<script type="text/javascript" src="../libs/bootstrap-multiselect.js?changed=2017083001"></script>
|
||||
<script type="text/javascript" src="https://www.google.com/recaptcha/api.js?render=explicit" async defer></script>
|
||||
<!--<script type="text/javascript" src="https://www.google.com/recaptcha/api.js?render=explicit" async defer></script>-->
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../bootstrap/bootstrap.min.css?changed=2017083001">
|
||||
<link rel="stylesheet" type="text/css" href="../animate.css?changed=2017083001">
|
||||
@@ -94,11 +94,11 @@
|
||||
<hr />
|
||||
<h3>Jackett Configuration</h3>
|
||||
<div class="text-center">
|
||||
<div class="btn-group">
|
||||
<div class="btn-toolbar">
|
||||
<button id="change-jackett-port" class="btn btn-primary btn-sm">
|
||||
<i class="fa fa-wrench"></i> Apply server settings <span class="glyphicon glyphicon-ok-wrench" aria-hidden="true"></span>
|
||||
</button>
|
||||
<button id="view-jackett-logs" class="btn btn-danger btn-sm">
|
||||
<button id="view-jackett-logs" class="btn btn-success btn-sm">
|
||||
<i class="fa fa-rss"></i> View logs <span class="glyphicon glyphicon-ok-wrench" aria-hidden="true"></span>
|
||||
</button>
|
||||
<button id="trigger-updater" class="btn btn-warning btn-sm">
|
||||
@@ -189,7 +189,7 @@
|
||||
<div class="setup-item-recaptcha">
|
||||
<p>This site requires you to solve a ReCaptcha. It's no longer possible to solve the captcha in Jackett. Please enter the cookie for the site manually. <a href="https://github.com/Jackett/Jackett/wiki/Finding-cookies" target="_blank">See here</a> on how get the cookies.</p>
|
||||
<div class="setup-item-label">Full cookie header</div>
|
||||
<input class="form-control" type="text" value="" />
|
||||
<input class="form-control" type="text" value="{{cookieheader}}" />
|
||||
</div>
|
||||
</script>
|
||||
<script id="setup-item" type="text/x-handlebars-template">
|
||||
@@ -659,6 +659,6 @@
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></script>
|
||||
<script type="text/javascript" src="../custom.js?changed=2017110602"></script>
|
||||
<script type="text/javascript" src="../custom.js?changed=2017110603"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -1,19 +1,16 @@
|
||||
using CurlSharp;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Net.Http.Headers;
|
||||
using Jackett.Utils;
|
||||
using System.Net;
|
||||
using System.Threading;
|
||||
using Jacket.Common;
|
||||
using Jackett.Models.Config;
|
||||
using CurlSharp;
|
||||
using CurlSharp.Enums;
|
||||
using Jackett.Common.Models.Config;
|
||||
using Jackett.Common.Utils;
|
||||
|
||||
namespace Jackett
|
||||
namespace Jackett.Common
|
||||
{
|
||||
public class CurlHelper
|
||||
{
|
||||
|
@@ -120,11 +120,17 @@
|
||||
paths:
|
||||
# present trending results if there are no search parms supplied
|
||||
- path: "{{if .Keywords}}/search/{{ .Keywords}}/1/{{else}}/trending{{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"]
|
||||
category:
|
||||
optional: true
|
||||
selector: td[class^="coll-1"] a[href^="/sub/"]
|
||||
|
@@ -68,7 +68,9 @@
|
||||
- {id: 22, cat: Audio/MP3, desc: "Musique: Album MP3"}
|
||||
- {id: 23, cat: Audio/Lossless, desc: "Musique: Album Flac"}
|
||||
- {id: 64, cat: Audio, desc: "Musique: Mégamix Maison"}
|
||||
- {id: 94, cat: Audio, desc: "Musique: Podcast"}
|
||||
- {id: 58, cat: Audio, desc: "Musique: Concert"}
|
||||
- {id: 93, cat: TV, desc: "Serie TV: Saison VOSTFR"}
|
||||
- {id: 61, cat: TV, desc: "Serie TV: Episode VOSTFR"}
|
||||
- {id: 63, cat: TV, desc: "Serie TV: Episode VO"}
|
||||
- {id: 12, cat: TV/Anime, desc: "Serie TV: Animation"}
|
||||
@@ -100,9 +102,11 @@
|
||||
- path: torrents-search.php
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Query.Keywords }}"
|
||||
search: "{{ .Keywords }}"
|
||||
incldead: "1"
|
||||
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["^$", "%"] # replace empty search string with %
|
||||
rows:
|
||||
selector: table.ttable_headinner > tbody > tr[class^="t-row"]
|
||||
fields:
|
||||
|
@@ -48,9 +48,6 @@
|
||||
- selector: span.errormsg
|
||||
test:
|
||||
path: index.php
|
||||
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
|
||||
search:
|
||||
paths:
|
||||
|
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
site: Bittorrentfiles
|
||||
name: Bittorrentfiles
|
||||
description: "Bittorrentfiles is a Private GERMAN tracker"
|
||||
@@ -135,22 +135,22 @@
|
||||
selector: a[href^="/download.php"]
|
||||
attribute: href
|
||||
files:
|
||||
selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(5) > a
|
||||
selector: td:nth-child(7)
|
||||
grabs:
|
||||
selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(2)
|
||||
selector: td:nth-child(6)
|
||||
size:
|
||||
selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(6)
|
||||
selector: td:nth-child(8)
|
||||
filters:
|
||||
- name: replace
|
||||
args: [".", ""]
|
||||
- name: replace
|
||||
args: [",", "."]
|
||||
seeders:
|
||||
selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(2)
|
||||
selector: td:nth-child(3) > a
|
||||
leechers:
|
||||
selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(3)
|
||||
selector: td:nth-child(4)
|
||||
date:
|
||||
selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(10)
|
||||
selector: td:nth-child(9)
|
||||
filters:
|
||||
- name: split
|
||||
args: ["by", 0]
|
||||
@@ -168,4 +168,4 @@
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
img[alt="2xU"]: "2"
|
||||
"*": "1"
|
||||
"*": "1"
|
||||
|
@@ -38,10 +38,13 @@
|
||||
type: info
|
||||
label: Category Id Note
|
||||
default: "You can filter your searches by using any of the following category numbers (comma delimited):<br>1 :Anime - Sub<br>2 :Anime - Raw<br>3 :Anime - Dub<br>4 :LA - Sub<br>5 :LA - Raw<br>6 :Light Novel<br>7 :Manga - TLed<br>8 :Manga - Raw<br>9 :♫ - Lossy<br>10 :♫ - Lossless<br>11 :♫ - Video<br>12 :Games<br>13 :Applications<br>14 :Pictures<br>15 :Adult Video<br>16 :Other"
|
||||
|
||||
- name: lang-id
|
||||
type: text
|
||||
label: Language Id
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: "?{{if .Config.cat-id}}id={{.Config.cat-id }}&{{else}}{{end}}q={{if .Keywords}}{{.Keywords}}{{else}}{{end}}"
|
||||
- path: "?{{if .Config.cat-id}}id={{.Config.cat-id }}&{{else}}{{end}}{{if .Config.lang-id}}lang_id={{.Config.lang-id}}&{{else}}{{end}}q={{if .Keywords}}{{.Keywords}}{{else}}{{end}}"
|
||||
rows:
|
||||
selector: div.table-responsive > table > tbody > tr
|
||||
fields:
|
||||
|
@@ -10,23 +10,10 @@
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
# Japanese
|
||||
- {id: 1, cat: Movies, desc: "jMovies"}
|
||||
- {id: 2, cat: TV, desc: "TV Shows"}
|
||||
- {id: 3, cat: TV/Other, desc: "Variety Shows"}
|
||||
|
||||
# Korean
|
||||
- {id: 6, cat: Movies, desc: "kMovies"}
|
||||
- {id: 4, cat: TV, desc: "TV Shows"}
|
||||
- {id: 14, cat: TV/Other, desc: "Variety Shows"}
|
||||
|
||||
# Chinese
|
||||
- {id: 8, cat: Movies, desc: "cMovies"}
|
||||
- {id: 9, cat: TV, desc: "TV Shows"}
|
||||
- {id: 13, cat: TV/Other, desc: "Variety Shows"}
|
||||
|
||||
# Adult
|
||||
- {id: 13, cat: XXX, desc: "Adult"}
|
||||
- {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]
|
||||
@@ -51,9 +38,6 @@
|
||||
test:
|
||||
path: index.php
|
||||
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: index.php
|
||||
@@ -64,19 +48,16 @@
|
||||
options: "0"
|
||||
active: "0"
|
||||
rows:
|
||||
selector: table > tbody > tr > td > table.lista > tbody > tr:has(a[href^="index.php?page=torrent-details&id="])
|
||||
selector: table.table.table-bordered > tbody > tr:has(a[href^="index.php?page=torrent-details&id="])
|
||||
fields:
|
||||
download:
|
||||
selector: a[href^="index.php?page=downloadcheck&id="]
|
||||
selector: a[href^="download.php"]
|
||||
attribute: href
|
||||
title:
|
||||
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
|
||||
selector: a[title][href^="index.php?page=torrent-details&id="]
|
||||
banner:
|
||||
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "src=(.*?) "
|
||||
selector: img[src^="torrentimg/"]
|
||||
attribute: src
|
||||
category:
|
||||
selector: a[href^="index.php?page=torrents&category="]
|
||||
attribute: href
|
||||
@@ -84,43 +65,42 @@
|
||||
- name: querystring
|
||||
args: category
|
||||
details:
|
||||
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
|
||||
selector: a[title][href^="index.php?page=torrent-details&id="]
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(12)
|
||||
selector: p:has(b:contains("Size:"))
|
||||
remove: b
|
||||
date:
|
||||
selector: td:nth-child(7)
|
||||
selector: p:has(b:contains("Added:"))
|
||||
remove: b
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["@ ", ""]
|
||||
- name: append
|
||||
args: " +01:00"
|
||||
- name: dateparse
|
||||
args: "02/01/2006 -07:00"
|
||||
args: "01/02/2006 15:04:05 -07:00"
|
||||
seeders:
|
||||
selector: b:contains("Seeds:") + a
|
||||
leechers:
|
||||
selector: b:contains("Leechers:") + a
|
||||
grabs:
|
||||
selector: td:nth-child(10)
|
||||
selector: p:has(b:contains("Complete:"))
|
||||
remove: b, a[href^="index.php?page=peers"]
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["---", "0"]
|
||||
seeders:
|
||||
selector: td:nth-child(8)
|
||||
leechers:
|
||||
selector: td:nth-child(9)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[alt="Full Star 100% Free"]: "0"
|
||||
img[alt="Half Star 50% Free"]: "0.5"
|
||||
img[alt="Empty Star 25% Free"]: "0.75"
|
||||
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: td:nth-child(2)
|
||||
remove: a
|
||||
description|append:
|
||||
selector: td:nth-child(3) > img
|
||||
attribute: title
|
||||
filters:
|
||||
- name: prepend
|
||||
args: "<br>Language: "
|
||||
|
||||
selector: p:has(b:contains("Language:"))
|
||||
|
||||
|
||||
|
@@ -72,7 +72,7 @@
|
||||
rows:
|
||||
selector: tr.browse_color, tr.freeleech_color, tr[id^="kdescr"]
|
||||
after: 1
|
||||
fields:
|
||||
fields: # some users (rank specific?) have an extra column (td:nth-child(4)) with bookmark features
|
||||
banner:
|
||||
selector: a[href^="details.php?id="][onmouseover]
|
||||
attribute: onmouseover
|
||||
@@ -98,20 +98,20 @@
|
||||
selector: a[href^="download.php"]
|
||||
attribute: href
|
||||
files:
|
||||
selector: td:nth-child(4)
|
||||
selector: a[href^="filelist.php"]
|
||||
size:
|
||||
selector: td:nth-child(7)
|
||||
selector: td:nth-last-child(6)
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
selector: td:nth-last-child(5)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d,]+)
|
||||
seeders:
|
||||
selector: td:nth-child(9)
|
||||
selector: td:nth-last-child(4)
|
||||
leechers:
|
||||
selector: td:nth-child(10)
|
||||
selector: td:nth-last-child(3)
|
||||
date:
|
||||
selector: td:nth-child(6)
|
||||
selector: td:nth-last-child(7)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"a.info > b:contains(\"[FREE]\")": "0"
|
||||
|
@@ -1,7 +1,7 @@
|
||||
---
|
||||
site: blutopia
|
||||
name: Blutopia
|
||||
description: "HD Movie tracker"
|
||||
description: "HD Tracker Movies/TV/FANRES"
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
@@ -32,13 +32,15 @@
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: /filter
|
||||
- path: /filterTorrents
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
|
||||
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
|
||||
uploader: ""
|
||||
imdb: "{{ .Query.IMDBIDShort }}"
|
||||
tvdb: ""
|
||||
tmdb: ""
|
||||
mal: ""
|
||||
sorting: created_at
|
||||
direction: desc
|
||||
qty: 100
|
||||
@@ -100,4 +102,4 @@
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"Double upload\"]": "2"
|
||||
"*": "1"
|
||||
"*": "1"
|
||||
|
@@ -28,7 +28,7 @@
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: "list/{{if .Keywords}}{{.Keywords}}{{else}}movie{{end}}.html"
|
||||
- path: "list/{{if .Keywords}}{{.Keywords}}{{else}}movie{{end}}/1-1-0.html"
|
||||
rows:
|
||||
selector: .rs
|
||||
fields:
|
||||
|
@@ -1,29 +1,23 @@
|
||||
---
|
||||
site: torrentwtf
|
||||
name: Torrentwtf
|
||||
description: "Torrentwtf is a Czech Private site for TV / MOVIES / GENERAL"
|
||||
language: cs-cz
|
||||
site: btworld
|
||||
name: BTWorld
|
||||
description: "HD Movie/TV Tracker"
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://torrent.wtf/
|
||||
|
||||
- https://btworld.org/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Filmy"}
|
||||
- {id: 2, cat: TV, desc: "Seriály"}
|
||||
- {id: 3, cat: Audio, desc: "Hudba"}
|
||||
- {id: 5, cat: PC/Games, desc: "Hry"}
|
||||
- {id: 6, cat: Books, desc: "Knihy"}
|
||||
- {id: 8, cat: PC, desc: "Software"}
|
||||
- {id: 9, cat: XXX, desc: "xXx"}
|
||||
- {id: 10, cat: Other, desc: "Ostatní"}
|
||||
|
||||
- {id: 1, cat: Movies, desc: "Movies"}
|
||||
- {id: 2, cat: TV, desc: "TV"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, imdbid]
|
||||
movie-search: [q, imdbid]
|
||||
|
||||
|
||||
login:
|
||||
path: /login
|
||||
method: form
|
||||
@@ -31,19 +25,21 @@
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: table.main:contains("Tieto poverenia sa nezhodujú s našimi záznamami.")
|
||||
- selector: table.main:contains("Login Failed!")
|
||||
test:
|
||||
path: /torrents
|
||||
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: /filter
|
||||
- path: /filterTorrents
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
|
||||
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
|
||||
uploader: ""
|
||||
imdb: "{{ .Query.IMDBIDShort }}"
|
||||
tvdb: ""
|
||||
tmdb: ""
|
||||
mal: ""
|
||||
sorting: created_at
|
||||
direction: desc
|
||||
qty: 100
|
||||
@@ -65,9 +61,6 @@
|
||||
args: "/categories/.*?\\.(\\d+)"
|
||||
title:
|
||||
selector: a.view-torrent
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: [".*? / ", ""]
|
||||
download:
|
||||
selector: a[href*="/download_check/"]
|
||||
attribute: href
|
||||
@@ -108,4 +101,4 @@
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"Double upload\"]": "2"
|
||||
"*": "1"
|
||||
"*": "1"
|
@@ -6,8 +6,12 @@
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- http://cpabien.mx/
|
||||
- http://www.cpasbiens.cc/
|
||||
legacylinks:
|
||||
- http://www.cpabien.cm/
|
||||
- http://cpabien.cm/
|
||||
- http://cpasbiens1.com/
|
||||
- http://cpabien.mx/
|
||||
- https://www.cpabien.bz/
|
||||
- http://www.cpabien.bz/
|
||||
- http://www.cpabien.cx/
|
||||
@@ -29,13 +33,13 @@
|
||||
settings: []
|
||||
|
||||
download:
|
||||
selector: "#telecharger a"
|
||||
|
||||
selector: div.btn-download a
|
||||
attribute: href
|
||||
search:
|
||||
paths:
|
||||
- path: "/search.php?t={{ .Keywords }}"
|
||||
- path: "{{ if .Keywords }}recherche/{{ .Keywords }}{{else}}derniers/{{end}}"
|
||||
rows:
|
||||
selector: div[class^='ligne']
|
||||
selector: table.table-corps tbody tr td
|
||||
fields:
|
||||
site_date:
|
||||
selector: a
|
||||
|
@@ -1,96 +0,0 @@
|
||||
---
|
||||
site: czteam
|
||||
name: CZTeam
|
||||
description: "CZTeam (CZT) is a ROMANIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: cs-cz
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://czteam.club/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Movies"}
|
||||
- {id: 2, cat: TV, desc: "TV-Eps"}
|
||||
- {id: 3, cat: Audio, desc: "Music"}
|
||||
- {id: 4, cat: PC/Games, desc: "Games"}
|
||||
- {id: 5, cat: PC/ISO, desc: "Software"}
|
||||
- {id: 6, cat: XXX, desc: "XxX"}
|
||||
- {id: 7, cat: Other, desc: "Other"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
|
||||
login:
|
||||
path: login.php
|
||||
method: post
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
keeplogged: 1
|
||||
login: "Log in"
|
||||
error:
|
||||
- selector: form#loginform > span.warning
|
||||
test:
|
||||
path: torrents.php
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: torrents.php
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}filter_cat[{{.}}]=1&{{end}}"
|
||||
searchstr: "{{ .Query.Keywords }}"
|
||||
order_by: time
|
||||
order_way: desc
|
||||
action: basic
|
||||
searchsubmit: 1
|
||||
rows:
|
||||
selector: table#torrent_table > tbody > tr.torrent
|
||||
fields:
|
||||
download:
|
||||
selector: a[href^="torrents.php?action=download&id="]
|
||||
attribute: href
|
||||
title:
|
||||
selector: a.torrent_name
|
||||
category:
|
||||
selector: td.cats_col
|
||||
case:
|
||||
div.cats_movies: 1
|
||||
div.cats_tveps: 2
|
||||
div.cats_music: 3
|
||||
div.cats_games: 4
|
||||
div.cats_software: 5
|
||||
div.cats_xxx: 6
|
||||
div.cats_other: 7
|
||||
details:
|
||||
selector: a.torrent_name
|
||||
attribute: href
|
||||
banner:
|
||||
selector: a.torrent_name
|
||||
optional: true
|
||||
attribute: cover
|
||||
files:
|
||||
selector: td:nth-child(3)
|
||||
date:
|
||||
selector: td:nth-child(4)
|
||||
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"
|
||||
"strong.tl_neutral": "0"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"strong.tl_neutral": "0"
|
||||
"*": "1"
|
||||
description:
|
||||
selector: div.torrent_info
|
||||
remove: strong
|
@@ -38,16 +38,15 @@
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings:
|
||||
- name: cookie
|
||||
type: text
|
||||
label: Cookie
|
||||
|
||||
login:
|
||||
path: /login-page
|
||||
method: form
|
||||
form: form[action^="/login"]
|
||||
method: cookie
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
persistent_login: "1"
|
||||
error:
|
||||
- selector: div.error
|
||||
cookie: "{{ .Config.cookie }}"
|
||||
test:
|
||||
path: /torrents
|
||||
|
||||
|
@@ -128,7 +128,18 @@
|
||||
"2" : "Argent (Silver)"
|
||||
"3" : "Or (Gold)"
|
||||
"4" : "Argent & Or (Both)"
|
||||
|
||||
- name: multilang
|
||||
type: checkbox
|
||||
label: Replace MULTI by another language in release name
|
||||
default: false
|
||||
- name: multilanguage
|
||||
type: select
|
||||
label: Replace MULTI by this language
|
||||
default: FRENCH
|
||||
options:
|
||||
FRENCH : "FRENCH"
|
||||
MULTI.FRENCH : "MULTI.FRENCH"
|
||||
ENGLISH: "ENGLISH"
|
||||
login:
|
||||
path: tracker/index.php?page=login
|
||||
method: post
|
||||
@@ -168,8 +179,15 @@
|
||||
rows:
|
||||
selector: table > tbody > tr > td > table.lista > tbody > tr:has(td[onmouseover="this.className='post'"])
|
||||
fields:
|
||||
title:
|
||||
title_phase1:
|
||||
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
|
||||
title_multilang:
|
||||
text: "{{ .Result.title_phase1 }}"
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["[\\.\\s\\[\\-][Mm][Uu][Ll][Tt][Ii][\\.\\s\\]\\-]", ".{{ .Config.multilanguage }}."]
|
||||
title:
|
||||
text: "{{if .Config.multilang }}{{ .Result.title_multilang }}{{else}}{{ .Result.title_phase1 }}{{end}}"
|
||||
details:
|
||||
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
|
||||
attribute: href
|
||||
|
@@ -115,6 +115,8 @@
|
||||
|
||||
rows:
|
||||
selector: table > tbody > tr:has(img[src*="/pic/categories/"])
|
||||
filters:
|
||||
- name: andmatch
|
||||
fields:
|
||||
title:
|
||||
# using attribute title from td(3) because the text from td(2) a(2) can be abbreviated
|
||||
|
@@ -90,11 +90,7 @@
|
||||
- selector: td.lista[align="center"][colspan="2"] > span
|
||||
test:
|
||||
path: index.php
|
||||
selector: img[alt="Ratio"]
|
||||
|
||||
ratio:
|
||||
path: index.php
|
||||
selector: img[alt="Ratio"] + font
|
||||
selector: a[href^="logout.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
|
@@ -52,16 +52,25 @@
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings: []
|
||||
settings:
|
||||
- name: downloadlink
|
||||
type: select
|
||||
label: Download link
|
||||
default: "magnet:"
|
||||
options:
|
||||
"https://etorrent.click/" : "eTorrent.click"
|
||||
"magnet:": "magnet"
|
||||
|
||||
download:
|
||||
selector: a[href^="magnet:"]
|
||||
selector: a[href^="{{ .Config.downloadlink }}"]
|
||||
|
||||
search:
|
||||
path: torrents-search.php
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
sort: "id"
|
||||
order: "desc"
|
||||
incldead: "1"
|
||||
keywordsfilters:
|
||||
- name: replace
|
||||
@@ -103,4 +112,4 @@
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
||||
text: "1"
|
||||
|
@@ -87,6 +87,7 @@
|
||||
- selector: div.myFrame:has(font.error)
|
||||
test:
|
||||
path: torrents-search.php
|
||||
selector: a.logout
|
||||
|
||||
search:
|
||||
paths:
|
||||
|
225
src/Jackett.Common/Definitions/girotorrent.yml
Normal file
225
src/Jackett.Common/Definitions/girotorrent.yml
Normal file
@@ -0,0 +1,225 @@
|
||||
---
|
||||
site: girotorrent
|
||||
name: Girotorrent
|
||||
description: "Girotorrent is an ITALIAN Private site for TV / MOVIES / GENERAL"
|
||||
language: it-it
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- http://girotorrent.org/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
# LIBREDICOLA
|
||||
- {id: 13, cat: Books, desc: "Giornali e Riviste"}
|
||||
- {id: 15, cat: Books, desc: "Ebook"}
|
||||
- {id: 16, cat: Books, desc: "Fumetti"}
|
||||
- {id: 70, cat: Books, desc: "Manuali e Guide"}
|
||||
- {id: 72, cat: Audio/Audiobook, desc: "Audiolibri"}
|
||||
# CINEMA
|
||||
- {id: 17, cat: Movies/Other, desc: "Movie Cam-Ts"}
|
||||
- {id: 18, cat: Movies/Other, desc: "Movie Screener"}
|
||||
- {id: 61, cat: Movies/Other, desc: "Movie R5-R6"}
|
||||
- {id: 19, cat: Movies/Other, desc: "Movie DVDRip"}
|
||||
- {id: 20, cat: Movies/Other, desc: "Movie BDRip"}
|
||||
- {id: 60, cat: Movies/Other, desc: "Movie BluRay"}
|
||||
- {id: 63, cat: Movies/Other, desc: "Movie WEBDLRip"}
|
||||
# VIDEOTECA
|
||||
- {id: 22, cat: Movies/SD, desc: "Movie BDRip"}
|
||||
- {id: 23, cat: Movies/SD, desc: "Movie DvdRip"}
|
||||
- {id: 23, cat: Movies/SD, desc: "Movie WEBRip"}
|
||||
- {id: 24, cat: Movies/DVD, desc: "Movie DVD-R 5"}
|
||||
- {id: 25, cat: Movies/DVD, desc: "Movie DVD-R 9"}
|
||||
- {id: 26, cat: Movies/HD, desc: "Movie Blu-Ray HD"}
|
||||
- {id: 27, cat: Movies/3D, desc: "Movie 3D-SBS"}
|
||||
- {id: 96, cat: Movies/HD, desc: "Movie x265 HEVC"}
|
||||
- {id: 28, cat: Movies/Foreign, desc: "Movie Subbet-ita"}
|
||||
- {id: 73, cat: Movies/SD, desc: "Movie MP4"}
|
||||
- {id: 29, cat: Movies/Foreign, desc: "Movie Ligua Originale"}
|
||||
# ANIMAZIONE
|
||||
- {id: 32, cat: TV/Anime, desc: "Anime Disney"}
|
||||
- {id: 33, cat: TV/Anime, desc: "Anime"}
|
||||
- {id: 34, cat: TV/Anime, desc: "Anime Altri Cartoni"}
|
||||
# TELEVISIONE
|
||||
- {id: 36, cat: TV, desc: "TV Serie TV"}
|
||||
- {id: 77, cat: TV, desc: "TV Reality"}
|
||||
- {id: 37, cat: TV, desc: "TV Film TV"}
|
||||
- {id: 59, cat: TV, desc: "TV Sport"}
|
||||
- {id: 38, cat: TV, desc: "TV Concerti-Spettacoli"}
|
||||
- {id: 39, cat: TV, desc: "TV Teatro-Cabaret"}
|
||||
- {id: 40, cat: TV/Documentary, desc: "Tv Documentario"}
|
||||
# MUSICA
|
||||
- {id: 42, cat: Audio, desc: "Musica CD Singoli"}
|
||||
- {id: 43, cat: Audio, desc: "Musica Italiana"}
|
||||
- {id: 44, cat: Audio, desc: "Musica Straniera"}
|
||||
- {id: 45, cat: Audio, desc: "Musica Compilation"}
|
||||
- {id: 46, cat: Audio, desc: "Musica Video Clip"}
|
||||
- {id: 58, cat: Audio, desc: "Musica Discografie"}
|
||||
# SALA GIOCHI
|
||||
- {id: 47, cat: PC/Games, desc: "PC Games"}
|
||||
- {id: 48, cat: PC/Games, desc: "PC Giochi PS2-PS3"}
|
||||
- {id: 49, cat: PC/Games, desc: "PC Giochi Nintendo Wii"}
|
||||
- {id: 50, cat: PC/Games, desc: "PC Giochi Xbox"}
|
||||
- {id: 52, cat: PC/Games, desc: "PC Giochi DS-DS3"}
|
||||
# SOFTWARE
|
||||
- {id: 54, cat: PC, desc: "PC Programmi Windows"}
|
||||
- {id: 55, cat: PC/Mac, desc: "PC Mac"}
|
||||
- {id: 69, cat: PC, desc: "PC Portable"}
|
||||
- {id: 56, cat: PC, desc: "PC Linux"}
|
||||
# CELLULARI-PALMARI
|
||||
- {id: 71, cat: PC/Phone-Android, desc: "Android APP"}
|
||||
- {id: 74, cat: Other, desc: "Varie"}
|
||||
- {id: 75, cat: Other, desc: "Immagini Wallpaper"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
login:
|
||||
path: /index.php?page=login
|
||||
method: post
|
||||
inputs:
|
||||
uid: "{{ .Config.username }}"
|
||||
pwd: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: div.error
|
||||
test:
|
||||
path: /index.php
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
download:
|
||||
before:
|
||||
path: "thanks.php"
|
||||
method: "post"
|
||||
inputs:
|
||||
infohash: "{{ .DownloadUri.Query.id }}"
|
||||
thanks: "1"
|
||||
rndval: "1487013827343"
|
||||
selector: a[href^="download.php?id="]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: /index.php
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["S[0-9]{2}([^E]|$)", ""] # remove season tag without episode (search doesn't support it)
|
||||
- name: diacritics
|
||||
args: replace
|
||||
# most ITA TV torrents are in XXxYY format, so we search without S/E prefixes and filter later
|
||||
- name: re_replace
|
||||
args: ["S0?(\\d{1,2})", " $1 "]
|
||||
- name: re_replace
|
||||
args: ["E(\\d{2,3})", " $1 "]
|
||||
inputs:
|
||||
search: "{{ .Keywords }}"
|
||||
category: "{{range .Categories}}{{.}};{{end}}"
|
||||
page: "torrents"
|
||||
active: 0
|
||||
rows:
|
||||
selector: div.b-content > table > tbody > tr > td > table.lista > tbody > tr:has(a[href^="index.php?page=torrent-details&id="])
|
||||
#http://girotorrent.org/index.php?page=torrent-details&id=73d93dccf84ea3a8b614a3113acfd9eea186d730
|
||||
fields:
|
||||
download:
|
||||
selector: a[href^="index.php?page=downloadcheck&id="]
|
||||
attribute: href
|
||||
title: # shortened title?
|
||||
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
|
||||
# normalize to SXXEYY format
|
||||
filters:
|
||||
- name: re_replace # replace special characters with " " (space)
|
||||
args: ["[^a-zA-Z0-9]|\\.", " "]
|
||||
# normalize to SXXEYY format
|
||||
- name: re_replace
|
||||
args: ["(\\d{2})x(\\d{2})", "S$1E$2"]
|
||||
- name: re_replace
|
||||
args: ["(\\d{1})x(\\d{2})", "S0$1E$2"]
|
||||
- name: re_replace #Stagione X --> S0X
|
||||
args: ["Stagione (\\d{0,1}\\s)", "S0$1"]
|
||||
- name: re_replace #Stagione XX --> SXX
|
||||
args: ["Stagione (\\d{2}\\s)", "S$1"]
|
||||
- name: re_replace #/ Episodio [YY-YY --> EYY-YY
|
||||
args: ["(\\s\\/\\sEpisodio|\\s\\/\\sEpisodi|\\sEpisodio|\\s\\|\\sEpisodio|\\sEpisodi)\\s\\[", "E"]
|
||||
- name: re_replace #/ Completa [episodi YY-YY --> EYY-YY
|
||||
args: ["(\\s\\/\\sCompleta\\s\\[episodi\\s)", "E"]
|
||||
- name: re_replace #remove di YY] | remove /YY]
|
||||
args: ["(\\sdi\\s\\d{1,2}|\\/\\d{1,2})\\]", " "]
|
||||
- name: re_replace #remove various
|
||||
args: ["(Serie completa|Completa|\\[in pausa\\])", ""]
|
||||
# fine prova
|
||||
title: # long titles?
|
||||
optional: true
|
||||
selector: a[title][href^="index.php?page=torrent-details"]
|
||||
attribute: title
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["Vedi Dettagli: ", ""]
|
||||
# inizio prova
|
||||
- name: re_replace # replace special characters with " " (space)
|
||||
args: ["[^a-zA-Z0-9]|\\.", " "]
|
||||
# normalize to SXXEYY format
|
||||
- name: re_replace
|
||||
args: ["(\\d{2})x(\\d{2})", "S$1E$2"]
|
||||
- name: re_replace
|
||||
args: ["(\\d{1})x(\\d{2})", "S0$1E$2"]
|
||||
- name: re_replace #Stagione X --> S0X
|
||||
args: ["Stagione (\\d{0,1}\\s)", "S0$1"]
|
||||
- name: re_replace #Stagione XX --> SXX
|
||||
args: ["Stagione (\\d{2}\\s)", "S$1"]
|
||||
- name: re_replace #/ Episodio [YY-YY --> EYY-YY
|
||||
args: ["(\\s\\/\\sEpisodio|\\s\\/\\sEpisodi|\\sEpisodio|\\s\\|\\sEpisodio|\\sEpisodi)\\s\\[", "E"]
|
||||
- name: re_replace #/ Completa [episodi YY-YY --> EYY-YY
|
||||
args: ["(\\s\\/\\sCompleta\\s\\[episodi\\s)", "E"]
|
||||
- name: re_replace #remove di YY] | remove /YY]
|
||||
args: ["(\\sdi\\s\\d{1,2}|\\/\\d{1,2})\\]", " "]
|
||||
- name: re_replace #remove various
|
||||
args: ["(Serie completa|Completa|\\[in pausa\\])", ""]
|
||||
# fine prova
|
||||
category:
|
||||
selector: a[href^="index.php?page=torrents&category="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: category
|
||||
details:
|
||||
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
|
||||
attribute: href
|
||||
banner:
|
||||
optional: true
|
||||
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "src=(.+?) "
|
||||
size:
|
||||
selector: td:nth-child(11)
|
||||
date:
|
||||
selector: td:nth-child(6)
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "02/01/2006"
|
||||
grabs:
|
||||
selector: td:nth-child(9)
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["---", "0"]
|
||||
seeders:
|
||||
selector: td:nth-child(7)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[alt="Free Leech"]: "0"
|
||||
img[alt="Gold 100% Free"]: "0"
|
||||
img[alt="Silver 50% Free"]: "0.5"
|
||||
img[alt="Bronze 25% Free"]: "0.75"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
||||
uploadvolumefactor:
|
||||
optional: true
|
||||
selector: img[alt$="x Upload Multiplier"]
|
||||
attribute: alt
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["x Upload Multiplier", ""]
|
@@ -1,195 +0,0 @@
|
||||
---
|
||||
site: gormogon
|
||||
name: Gormogon
|
||||
description: "Gormogon is a Private Torrent Tracker for CLASSIC MOVIES / TV / GENERAL"
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- http://www.gormogon.com
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
# Movies:
|
||||
- {id: 1, cat: Movies/DVD, desc: "DVD-R"}
|
||||
- {id: 2, cat: Movies, desc: "Action"}
|
||||
- {id: 14, cat: Movies, desc: "Adventure"}
|
||||
- {id: 15, cat: Movies, desc: "Animation"}
|
||||
- {id: 16, cat: Movies, desc: "Biography"}
|
||||
- {id: 17, cat: Movies, desc: "Comedy"}
|
||||
- {id: 18, cat: Movies, desc: "Crime"}
|
||||
- {id: 19, cat: Movies, desc: "Disney"}
|
||||
- {id: 92, cat: Movies, desc: "Documentary"}
|
||||
- {id: 20, cat: Movies, desc: "Drama"}
|
||||
- {id: 21, cat: Movies, desc: "Family"}
|
||||
- {id: 22, cat: Movies, desc: "Fantasy"}
|
||||
- {id: 23, cat: Movies, desc: "Film Noir"}
|
||||
- {id: 97, cat: Movies, desc: "History"}
|
||||
- {id: 24, cat: Movies, desc: "Horror"}
|
||||
- {id: 25, cat: Movies, desc: "Martial Arts"}
|
||||
- {id: 26, cat: Movies, desc: "Musicals"}
|
||||
- {id: 27, cat: Movies, desc: "Mystery"}
|
||||
- {id: 28, cat: Movies, desc: "Romance"}
|
||||
- {id: 29, cat: Movies, desc: "Sci-Fi"}
|
||||
- {id: 30, cat: Movies, desc: "Thriller"}
|
||||
- {id: 31, cat: Movies, desc: "War"}
|
||||
- {id: 32, cat: Movies, desc: "Western"}
|
||||
- {id: 33, cat: Movies, desc: "Other"}
|
||||
|
||||
# Classic TV:
|
||||
- {id: 34, cat: TV, desc: "Action"}
|
||||
- {id: 35, cat: TV, desc: "Adventure"}
|
||||
- {id: 36, cat: TV, desc: "Animation"}
|
||||
- {id: 37, cat: TV, desc: "Biography"}
|
||||
- {id: 38, cat: TV, desc: "Comedy"}
|
||||
- {id: 39, cat: TV, desc: "Crime"}
|
||||
- {id: 40, cat: TV, desc: "Disney"}
|
||||
- {id: 41, cat: TV, desc: "Documentary"}
|
||||
- {id: 42, cat: TV, desc: "Drama"}
|
||||
- {id: 43, cat: TV, desc: "Family"}
|
||||
- {id: 44, cat: TV, desc: "Fantasy"}
|
||||
- {id: 45, cat: TV, desc: "TV Noir"}
|
||||
- {id: 46, cat: TV, desc: "Horror"}
|
||||
- {id: 47, cat: TV, desc: "Martial Arts"}
|
||||
- {id: 49, cat: TV, desc: "Musicals"}
|
||||
- {id: 50, cat: TV, desc: "Mystery"}
|
||||
- {id: 51, cat: TV, desc: "Romance"}
|
||||
- {id: 52, cat: TV, desc: "Sci-Fi"}
|
||||
- {id: 48, cat: TV, desc: "Shows"}
|
||||
- {id: 53, cat: TV, desc: "Thriller"}
|
||||
- {id: 54, cat: TV, desc: "War"}
|
||||
- {id: 55, cat: TV, desc: "Western"}
|
||||
- {id: 56, cat: TV, desc: "Other"}
|
||||
- {id: 90, cat: TV, desc: "TV Movies"}
|
||||
|
||||
# Old Time Radio
|
||||
- {id: 57, cat: Audio, desc: "Action"}
|
||||
- {id: 58, cat: Audio, desc: "Adventure"}
|
||||
- {id: 59, cat: Audio, desc: "Biography"}
|
||||
- {id: 60, cat: Audio, desc: "Comedy"}
|
||||
- {id: 61, cat: Audio, desc: "Crime"}
|
||||
- {id: 62, cat: Audio, desc: "Documentary"}
|
||||
- {id: 63, cat: Audio, desc: "Drama"}
|
||||
- {id: 64, cat: Audio, desc: "Family"}
|
||||
- {id: 65, cat: Audio, desc: "Fantasy"}
|
||||
- {id: 66, cat: Audio, desc: "Radio Noir"}
|
||||
- {id: 67, cat: Audio, desc: "Horror"}
|
||||
- {id: 68, cat: Audio, desc: "Musicals"}
|
||||
- {id: 69, cat: Audio, desc: "Mystery"}
|
||||
- {id: 70, cat: Audio, desc: "Romance"}
|
||||
- {id: 71, cat: Audio, desc: "Sci-Fi"}
|
||||
- {id: 72, cat: Audio, desc: "Shows"}
|
||||
- {id: 73, cat: Audio, desc: "Thriller"}
|
||||
- {id: 74, cat: Audio, desc: "War"}
|
||||
- {id: 75, cat: Audio, desc: "Western"}
|
||||
- {id: 76, cat: Audio, desc: "Other"}
|
||||
|
||||
# Music:
|
||||
- {id: 77, cat: Audio, desc: "Official Sountracks"}
|
||||
- {id: 78, cat: Audio, desc: "Theme Tunes"}
|
||||
- {id: 79, cat: Audio, desc: "Music 30s"}
|
||||
- {id: 80, cat: Audio, desc: "Music 40s"}
|
||||
- {id: 81, cat: Audio, desc: "Music 50s"}
|
||||
- {id: 85, cat: Audio, desc: "Music 60s"}
|
||||
- {id: 86, cat: Audio, desc: "Music 70s"}
|
||||
- {id: 87, cat: Audio, desc: "Music '80 - '84"}
|
||||
|
||||
# Printed:
|
||||
- {id: 82, cat: Books, desc: "Books"}
|
||||
- {id: 91, cat: Books, desc: "Newspaper"}
|
||||
- {id: 83, cat: Books, desc: "Scripts"}
|
||||
- {id: 84, cat: Books, desc: "Posters"}
|
||||
- {id: 88, cat: Books, desc: "Comics"}
|
||||
- {id: 89, cat: Books, desc: "Magazines"}
|
||||
|
||||
# Software:
|
||||
- {id: 94, cat: Other, desc: "Screensavers"}
|
||||
- {id: 95, cat: PC, desc: "Programs"}
|
||||
- {id: 96, cat: Other, desc: "Other"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
|
||||
login:
|
||||
path: index.php?page=login&returnto=index.php
|
||||
method: post
|
||||
inputs:
|
||||
uid: "{{ .Config.username }}"
|
||||
pwd: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: td.lista > span[style="color:#FF0000;"]
|
||||
test:
|
||||
path: index.php
|
||||
selector: form[name="jump1"]
|
||||
|
||||
ratio:
|
||||
path: index.php
|
||||
selector: form[name="jump1"] > table > tbody > tr > td:contains("SR ")
|
||||
filters:
|
||||
- name: trim
|
||||
args: ")"
|
||||
- name: split
|
||||
args: [" ", 1]
|
||||
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: index.php
|
||||
inputs:
|
||||
search: "{{ .Query.Keywords }}"
|
||||
category: "{{range .Categories}}{{.}};{{end}}"
|
||||
page: torrents
|
||||
active: 0
|
||||
rows:
|
||||
selector: table.lista > tbody > tr:has(a[href^="index.php?page=torrents&category="])
|
||||
fields:
|
||||
download:
|
||||
selector: a[href^="index.php?page=downloadcheck&id="]
|
||||
attribute: href
|
||||
title:
|
||||
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
|
||||
category:
|
||||
selector: a[href^="index.php?page=torrents&category="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: category
|
||||
details:
|
||||
selector: a[onmouseover][href^="index.php?page=torrent-details&id="]
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(10)
|
||||
date:
|
||||
selector: td:nth-child(5)
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "02/01/2006"
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["---", "0"]
|
||||
seeders:
|
||||
selector: td:nth-child(6)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[alt="gold"]: "0"
|
||||
img[alt="silver"]: "0.5"
|
||||
"*": "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"
|
@@ -80,12 +80,15 @@
|
||||
|
||||
search:
|
||||
path: /
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["S0?(\\d{1,2})E(\\d{1,2})", "$1x$2"]
|
||||
inputs:
|
||||
p: "torrents"
|
||||
page: "1"
|
||||
pid: "10"
|
||||
$raw: "{{range .Categories}}&cid[]={{.}}{{end}}"
|
||||
keywords: "{{ .Query.Keywords }}"
|
||||
keywords: "{{ .Keywords }}"
|
||||
search_type: "name"
|
||||
searchin: "title"
|
||||
rows:
|
||||
@@ -93,6 +96,9 @@
|
||||
fields:
|
||||
title:
|
||||
selector: td.torrent_name > a, .newIndicator > a
|
||||
filters:
|
||||
- name: append
|
||||
args: " [spanish]"
|
||||
details:
|
||||
selector: td.torrent_name > a, .newIndicator > a
|
||||
attribute: href
|
||||
|
@@ -33,9 +33,6 @@
|
||||
- selector: table.main:contains("Login Failed!")
|
||||
test:
|
||||
path: my.php
|
||||
|
||||
download:
|
||||
selector: a[href^="/download.php"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
|
@@ -61,7 +61,6 @@
|
||||
search:
|
||||
paths:
|
||||
- path: /torrents.php
|
||||
method: post
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}cat{{.}}=1&{{end}}"
|
||||
search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
|
||||
|
@@ -4,7 +4,7 @@
|
||||
description: "HDCity is a SPANISH site for HD content"
|
||||
language: es-es
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
encoding: ISO-8859-1
|
||||
links:
|
||||
- https://hdcity.li/
|
||||
|
||||
@@ -129,11 +129,14 @@
|
||||
|
||||
search:
|
||||
path: index.php
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["S0?(\\d{1,2})E(\\d{1,2})", "$1x$2"]
|
||||
inputs:
|
||||
page: "torrents"
|
||||
$raw: "&category={{range .Categories}}{{.}};{{end}}"
|
||||
active: "1"
|
||||
search: "{{ .Query.Keywords }}"
|
||||
search: "{{ .Keywords }}"
|
||||
rows:
|
||||
selector: "#category+table table tr:not(:first-child):not(:last-child)"
|
||||
fields:
|
||||
@@ -145,6 +148,9 @@
|
||||
args: category
|
||||
title:
|
||||
selector: td[valign="middle"] a
|
||||
filters:
|
||||
- name: append
|
||||
args: " [spanish]"
|
||||
details:
|
||||
selector: td[valign="middle"] a
|
||||
attribute: href
|
||||
|
@@ -82,7 +82,6 @@
|
||||
search:
|
||||
paths:
|
||||
- path: /torrents.php
|
||||
method: post
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}cat{{.}}=1&{{end}}"
|
||||
search: "{{if .Query.IMDBID}}{{ .Query.IMDBID }}{{else}}{{ .Keywords }}{{end}}"
|
||||
|
@@ -91,6 +91,11 @@
|
||||
download:
|
||||
selector: td:nth-child(11) > a
|
||||
attribute: href
|
||||
filters:
|
||||
- name: prepend
|
||||
args: "{{ .Config.sitelink }}"
|
||||
- name: replace # https download links are redirected to http causing invalid cookies => invalid passkeys
|
||||
args: ["https", "http"]
|
||||
size:
|
||||
selector: td:nth-child(6)
|
||||
remove: br
|
||||
@@ -103,3 +108,9 @@
|
||||
selector: td:nth-child(8)
|
||||
leechers:
|
||||
selector: td:nth-child(9)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"font:contains(\"(FreeLeech)\")": "0"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
||||
|
142
src/Jackett.Common/Definitions/hdspain.yml
Normal file
142
src/Jackett.Common/Definitions/hdspain.yml
Normal file
@@ -0,0 +1,142 @@
|
||||
---
|
||||
site: hdspain
|
||||
name: HD-Spain
|
||||
description: "HD-Spain is a SPANISH site for HD content"
|
||||
language: es-es
|
||||
type: private
|
||||
encoding: ISO-8859-1
|
||||
links:
|
||||
- https://www.hd-spain.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1 , cat: Movies/HD, desc: "Películas"}
|
||||
- {id: 5 , cat: Movies/HD, desc: "Pelíc. Anim."}
|
||||
- {id: 4 , cat: TV/HD, desc: "Series"}
|
||||
- {id: 3 , cat: TV/HD, desc: "Series Anim."}
|
||||
- {id: 6 , cat: TV/Documentary, desc: "Documentales"}
|
||||
- {id: 11, cat: TV/Sport, desc: "Deportes"}
|
||||
- {id: 7 , cat: Audio/Video, desc: "Música/Espec."}
|
||||
- {id: 9 , cat: TV/OTHER, desc: "Programas TV"}
|
||||
- {id: 8 , cat: Audio/Lossless, desc: "Audios"}
|
||||
- {id: 10, cat: XXX/x264, desc: "XXX"}
|
||||
modes:
|
||||
search: [q]
|
||||
|
||||
login:
|
||||
path: index.php
|
||||
method: form
|
||||
inputs:
|
||||
usuario: "{{ .Config.username }}"
|
||||
contrasena: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: p.error
|
||||
test:
|
||||
path: index.php
|
||||
selector: .tcabecera
|
||||
|
||||
search:
|
||||
path: index.php
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["S0?(\\d{1,2})E(\\d{1,2})", "$1x$2"]
|
||||
inputs:
|
||||
sec: listado
|
||||
ord: 9
|
||||
b: "{{ .Keywords }}"
|
||||
ver: "0"
|
||||
relanz: "0"
|
||||
$raw: "{{range .Categories}}&cat[]={{.}}{{end}}"
|
||||
rows:
|
||||
selector: "table.listatorrents tr:not(:first-child)"
|
||||
fields:
|
||||
category:
|
||||
selector: td.categorias a
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title:
|
||||
selector: td.titulo a[id]
|
||||
filters:
|
||||
- name: append
|
||||
args: " [spanish]"
|
||||
details:
|
||||
selector: td.titulo a
|
||||
attribute: href
|
||||
size:
|
||||
selector: td.tamano
|
||||
seeders:
|
||||
selector: td.usuarios.seeds a
|
||||
leechers:
|
||||
selector: td.usuarios.leechers a
|
||||
grabs:
|
||||
selector: td.usuarios.completados
|
||||
date:
|
||||
optional: true
|
||||
selector: td.fecha
|
||||
attribute: title
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["Lunes", "Monday"]
|
||||
- name: replace
|
||||
args: ["Martes", "Tuesday"]
|
||||
- name: re_replace
|
||||
args: ["Miércoles", "Wednesday"]
|
||||
- name: replace
|
||||
args: ["Jueves", "Thursday"]
|
||||
- name: replace
|
||||
args: ["Viernes", "Friday"]
|
||||
- name: re_replace
|
||||
args: ["Sábado", "Saturday"]
|
||||
- name: replace
|
||||
args: ["Domingo", "Sunday"]
|
||||
- name: replace
|
||||
args: ["Enero", "January"]
|
||||
- name: replace
|
||||
args: ["Febrero", "February"]
|
||||
- name: replace
|
||||
args: ["Marzo", "March"]
|
||||
- name: replace
|
||||
args: ["Abril", "April"]
|
||||
- name: replace
|
||||
args: ["Mayo", "May"]
|
||||
- name: replace
|
||||
args: ["Junio", "June"]
|
||||
- name: replace
|
||||
args: ["Julio", "July"]
|
||||
- name: replace
|
||||
args: ["Agosto", "August"]
|
||||
- name: replace
|
||||
args: ["Septiembre", "September"]
|
||||
- name: replace
|
||||
args: ["Octubre", "October"]
|
||||
- name: replace
|
||||
args: ["Noviembre", "November"]
|
||||
- name: replace
|
||||
args: ["Diciembre", "December"]
|
||||
- name: dateparse
|
||||
args: "Monday 2 January 2006, 15:04"
|
||||
download:
|
||||
selector: td.descargar a
|
||||
attribute: href
|
||||
|
||||
downloadvolumefactor:
|
||||
text: "1"
|
||||
downloadvolumefactor:
|
||||
optional: true
|
||||
selector: td.descargar a b strong
|
||||
filters:
|
||||
- name: replace
|
||||
args: [" X2", ""]
|
||||
- name: replace
|
||||
args: ["Freeleech", "0"]
|
||||
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
||||
uploadvolumefactor:
|
||||
optional: true
|
||||
selector: td.descargar a b strong
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["Freeleech X2", "2"]
|
@@ -114,7 +114,7 @@
|
||||
selector: td:has(a[href$="filelist=1#filelist"])
|
||||
remove: a
|
||||
date:
|
||||
selector: td > font:contains("Added on")
|
||||
selector: td > font:has(i.fa-clock-o)
|
||||
remove: b
|
||||
filters:
|
||||
- name: replace
|
||||
|
160
src/Jackett.Common/Definitions/ilcorsaroblu.yml
Normal file
160
src/Jackett.Common/Definitions/ilcorsaroblu.yml
Normal file
@@ -0,0 +1,160 @@
|
||||
---
|
||||
site: ilcorsaroblu
|
||||
name: Il Corsaro Blu
|
||||
description: "Il Corsaro Blu is an ITALIAN Public site for TV / MOVIES / GENERAL"
|
||||
language: it-it
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.ilcorsaroblu.info/
|
||||
legacylinks:
|
||||
- http://ilcorsaroblu.org/
|
||||
- https://www.ilcorsaroblu.org/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
# Adult
|
||||
- {id: 12, cat: XXX, desc: "Adult"}
|
||||
# Applicazioni
|
||||
- {id: 5, cat: PC/Phone-Android, desc: "Android"}
|
||||
# Books
|
||||
- {id: 6, cat: Books, desc: "Books"}
|
||||
# Games
|
||||
- {id: 3, cat: Other, desc: "Games"}
|
||||
# Music
|
||||
- {id: 2, cat: Audio, desc: "Music"}
|
||||
# Movies
|
||||
- {id: 17, cat: Movies/SD, desc: "Movie BDRip"}
|
||||
- {id: 21, cat: Movies/Other, desc: "Movies - Films"}
|
||||
- {id: 11, cat: Movies/DVD, desc: "DVD-R"}
|
||||
- {id: 14, cat: Movies/HD, desc: "Movie 720p"}
|
||||
- {id: 13, cat: Movies/HD, desc: "Movie 1080p"}
|
||||
- {id: 15, cat: Movies/3D, desc: "Movie 3D"}
|
||||
- {id: 24, cat: TV/OTHER, desc: "TV Show Standard"}
|
||||
- {id: 19, cat: TV/HD, desc: "Tv Show 1080p"}
|
||||
- {id: 20, cat: TV/HD, desc: "Tv Show 720"}
|
||||
# Various
|
||||
- {id: 4, cat: Other, desc: "Other"}
|
||||
- {id: 7, cat: PC, desc: "Windows"}
|
||||
- {id: 8, cat: Other, desc: "Linux"}
|
||||
- {id: 9, cat: PC/Mac, desc: "Mac"}
|
||||
- {id: 23, cat: Other, desc: "Archive"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
settings: []
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: /index.php
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["S[0-9]{2}([^E]|$)", ""] # remove season tag without episode (search doesn't support it)
|
||||
- name: diacritics
|
||||
args: replace
|
||||
# most ITA TV torrents are in XXxYY format, so we search without S/E prefixes and filter later
|
||||
- name: re_replace
|
||||
args: ["S0?(\\d{1,2})", " $1 "]
|
||||
- name: re_replace
|
||||
args: ["E(\\d{2,3})", " $1 "]
|
||||
inputs:
|
||||
search: "{{ .Keywords }}"
|
||||
category: "{{range .Categories}}{{.}};{{end}}"
|
||||
page: torrents
|
||||
active: 0
|
||||
rows:
|
||||
selector: div.b-content > table > tbody > tr > td > table.lista > tbody > tr:has(a[href^="index.php?page=torrents&category="])
|
||||
fields:
|
||||
title:
|
||||
selector: td:nth-child(2) > a
|
||||
# normalize to SXXEYY format
|
||||
filters:
|
||||
- name: re_replace # replace special characters with " " (space)
|
||||
args: ["[^a-zA-Z0-9]|\\.", " "]
|
||||
# normalize to SXXEYY format
|
||||
- name: re_replace
|
||||
args: ["(\\d{2})x(\\d{2})", "S$1E$2"]
|
||||
- name: re_replace
|
||||
args: ["(\\d{1})x(\\d{2})", "S0$1E$2"]
|
||||
- name: re_replace #Stagione X --> S0X
|
||||
args: ["Stagione (\\d{0,1}\\s)", "S0$1"]
|
||||
- name: re_replace #Stagione XX --> SXX
|
||||
args: ["Stagione (\\d{2}\\s)", "S$1"]
|
||||
- name: re_replace #/ Episodio [YY-YY --> EYY-YY
|
||||
args: ["(\\s\\/\\sEpisodio|\\s\\/\\sEpisodi|\\sEpisodio|\\s\\|\\sEpisodio|\\sEpisodi)\\s\\[", "E"]
|
||||
- name: re_replace #/ Completa [episodi YY-YY --> EYY-YY
|
||||
args: ["(\\s\\/\\sCompleta\\s\\[episodi\\s)", "E"]
|
||||
- name: re_replace #remove di YY] | remove /YY]
|
||||
args: ["(\\sdi\\s\\d{1,2}|\\/\\d{1,2})\\]", " "]
|
||||
- name: re_replace #remove various
|
||||
args: ["(Serie completa|Completa|\\[in pausa\\])", ""]
|
||||
# fine prova
|
||||
download: # handle torrents with normal torrent file download
|
||||
optional: true
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: id
|
||||
- name: toupper
|
||||
- name: prepend
|
||||
args: http://itorrents.org/torrent/
|
||||
- name: append
|
||||
args: ".torrent"
|
||||
_magnetfilename: # convert title to valid magnet filename
|
||||
text: "{{ .Result.title }}"
|
||||
filters:
|
||||
- name: validfilename
|
||||
- name: urlencode
|
||||
magnet: # generate magnet link from download link
|
||||
optional: true
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: id
|
||||
- name: prepend
|
||||
args: "magnet:?xt=urn:btih:"
|
||||
- name: append
|
||||
args: "&dn={{ .Result._magnetfilename }}.torrent"
|
||||
- name: append # add some well known public trackers
|
||||
args: "&tr=udp://tracker.openbittorrent.com:80/announce&tr=udp://tracker.opentrackr.org:1337/announce"
|
||||
magnet: # in case a direct magnet link is provided use it
|
||||
optional: true
|
||||
selector: a[href^="magnet:?xt="]
|
||||
attribute: href
|
||||
category:
|
||||
selector: a[href^="index.php?page=torrents&category="]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: category
|
||||
details:
|
||||
selector: td:nth-child(2) a
|
||||
attribute: href
|
||||
banner:
|
||||
optional: true
|
||||
selector: td:nth-child(2) > a
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "src=(.+?) "
|
||||
size:
|
||||
selector: td:nth-child(9)
|
||||
date:
|
||||
selector: td:nth-child(5)
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "02/01/2006"
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["---", "0"]
|
||||
seeders:
|
||||
selector: td:nth-child(6)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
@@ -1,4 +1,4 @@
|
||||
---
|
||||
---
|
||||
site: ilcorsaronero
|
||||
name: Il Corsaro Nero
|
||||
description: "Il Corsaro Nero is an ITALIAN Public site for TV / MOVIES / GENERAL"
|
||||
@@ -8,7 +8,7 @@
|
||||
links:
|
||||
- https://ilcorsaronero.info/
|
||||
certificates:
|
||||
- 65cfce90841c5522003c8a29f1c139e72b40a88a # incomplete CA chain
|
||||
- aa7c40aa360a1cec8a9687312fd50402b912e618 # incomplete CA chain
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
@@ -41,9 +41,19 @@
|
||||
# {{else if and .Query.Keywords (not .advanced-search)}}argh.php?search={{ .Query.Keywords}}
|
||||
# {{else}}/recenti
|
||||
# {{end}}"
|
||||
- path: "{{if .Query.Keywords}}argh.php?search={{ .Query.Keywords}}
|
||||
- path: "{{if .Keywords}}argh.php?search={{ .Keywords}}
|
||||
{{else}}/recenti
|
||||
{{end}}"
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["S[0-9]{2}([^E]|$)", ""] # remove season tag without episode (search doesn't support it)
|
||||
- name: diacritics
|
||||
args: replace
|
||||
# most ITA TV torrents are in XXxYY format, so we search without S/E prefixes and filter later
|
||||
- name: re_replace
|
||||
args: ["S0?(\\d{1,2})", " $1 "]
|
||||
- name: re_replace
|
||||
args: ["E(\\d{2,3})", " $1 "]
|
||||
rows:
|
||||
selector: "tr.odd,tr.odd2"
|
||||
fields:
|
||||
@@ -54,15 +64,32 @@
|
||||
- name: split
|
||||
args: [ "/", -1 ]
|
||||
- name: urldecode
|
||||
- name: re_replace
|
||||
args: [ "_+", " "]
|
||||
- name: replace
|
||||
args: [ "_", " "]
|
||||
- name: replace
|
||||
args: [ " ", " "]
|
||||
args: [ ".", " "]
|
||||
- name: re_replace
|
||||
args: [ "\\s{2,}", " "]
|
||||
# normalize to SXXEYY format
|
||||
- name: re_replace
|
||||
args: ["(\\d{2})x(\\d{2})", "S$1E$2"]
|
||||
- name: re_replace
|
||||
args: ["(\\d{1})x(\\d{2})", "S0$1E$2"]
|
||||
- name: re_replace #Stagione X --> S0X
|
||||
args: ["Stagione (\\d{0,1}\\s)", "S0$1"]
|
||||
- name: re_replace #Stagione XX --> SXX
|
||||
args: ["Stagione (\\d{2}\\s)", "S$1"]
|
||||
- name: re_replace #/ Episodio [YY-YY --> EYY-YY
|
||||
args: ["(\\s\\/\\sEpisodio|\\s\\/\\sEpisodi|\\sEpisodio|\\s\\|\\sEpisodio|\\sEpisodi)\\s\\[", "E"]
|
||||
- name: re_replace #/ Completa [episodi YY-YY --> EYY-YY
|
||||
args: ["(\\s\\/\\sCompleta\\s\\[episodi\\s)", "E"]
|
||||
- name: re_replace #remove di YY] | remove /YY]
|
||||
args: ["(\\sdi\\s\\d{1,2}|\\/\\d{1,2})\\]", " "]
|
||||
- name: re_replace #remove various
|
||||
args: ["(Serie completa|Completa|\\[in pausa\\])", ""]
|
||||
# fine prova
|
||||
- name: re_replace #try to find multi episode
|
||||
args: ["(S\\d{2}E\\d{2})\\s(\\d{2})", "$1-$2"]
|
||||
category:
|
||||
selector: td:nth-child(1) a
|
||||
attribute: href
|
||||
|
@@ -77,6 +77,9 @@
|
||||
attribute: href
|
||||
size:
|
||||
selector: td.size-row
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["(\\d+).(?=\\d{3}(\\D|$))", "$1"]
|
||||
seeders:
|
||||
selector: td.sn
|
||||
date:
|
||||
@@ -96,4 +99,4 @@
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
||||
text: "1"
|
||||
|
@@ -1,3 +1,5 @@
|
||||
# looks like gazelle but ajax.php seems to be disabled:
|
||||
# https://jpopsuki.eu/ajax.php?action=browse&order_by=time&order_way=desc => Invalid
|
||||
---
|
||||
site: jpopsuki
|
||||
name: JPopsuki
|
||||
@@ -34,7 +36,7 @@
|
||||
keeplogged: 1
|
||||
login: "Log in"
|
||||
error:
|
||||
- selector: form#loginform > span.warning
|
||||
- selector: form#loginform > span.warning, font[color="red"]
|
||||
test:
|
||||
path: torrents.php
|
||||
|
||||
|
@@ -1,13 +1,16 @@
|
||||
---
|
||||
site: kickasstorrent-kathow
|
||||
name: KickAssTorrent (thekat.nz)
|
||||
description: "thekat.nz is a Public KickAssTorrent clone for TV / MOVIES / GENERAL"
|
||||
name: KickAssTorrent (kat.li)
|
||||
description: "kat.li is a Public KickAssTorrent clone for TV / MOVIES / GENERAL"
|
||||
language: en-us
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://thekat.nz/
|
||||
- https://kat.li/
|
||||
legacylinks:
|
||||
- https://kickass.gg/
|
||||
- https://katcr.io/
|
||||
- https://thekat.nz/
|
||||
- https://thekat.se/
|
||||
- https://kat.how/
|
||||
|
||||
@@ -35,6 +38,7 @@
|
||||
selector: table[class="data"] tr[id]
|
||||
fields:
|
||||
category:
|
||||
optional: true
|
||||
selector: span[id^="cat_"] > strong > a
|
||||
attribute: href
|
||||
filters:
|
||||
@@ -54,12 +58,23 @@
|
||||
- name: urldecode
|
||||
size:
|
||||
selector: td:nth-child(2)
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["N/A", "0 Bytes"]
|
||||
- name: re_replace # replace all but last dot (They use dots as decimal and thousands separators)
|
||||
args: ["[.](?=.*[.])", ""]
|
||||
date:
|
||||
selector: td:nth-child(3)
|
||||
seeders:
|
||||
selector: td:nth-child(4)
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["N/A", "0"]
|
||||
leechers:
|
||||
selector: td:nth-child(5)
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["N/A", "0"]
|
||||
description:
|
||||
selector: td:nth-child(1) > div > div > span
|
||||
downloadvolumefactor:
|
||||
|
@@ -258,6 +258,8 @@
|
||||
args: ["^Extinct", "Extinct 2017"]
|
||||
- name: re_replace
|
||||
args: ["^The Flash", "The Flash 2014"]
|
||||
- name: replace
|
||||
args: ["Nanatsu no Taizai - Imashime no Fukkatsu - E", "Nanatsu no Taizai - Imashime no Fukkatsu - S02E"]
|
||||
- name: re_replace
|
||||
args: ["^The Magicians", "The Magicians 2015"]
|
||||
# Workaround to remove the translated name from the series, didn't found an better and reliable way to do this, feel free to add more as needed.
|
||||
|
@@ -10,53 +10,20 @@
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
# TV
|
||||
- {id: 23, cat: TV, desc: "TV/HD"}
|
||||
- {id: 47, cat: TV, desc: "TV/PACKS"}
|
||||
- {id: 28, cat: TV, desc: "TV/eps"}
|
||||
- {id: 25, cat: TV, desc: "TV/HDRIP"}
|
||||
- {id: 24, cat: TV, desc: "TV/TV-packs"}
|
||||
- {id: 26, cat: TV/HD, desc: "TV/X264-HD"}
|
||||
- {id: 27, cat: TV/SD, desc: "TV/X264-SD"}
|
||||
# Movies
|
||||
- {id: 10, cat: Movies, desc: "Movies/0DAY"}
|
||||
- {id: 56, cat: Movies/3D, desc: "Movies/3D"}
|
||||
- {id: 16, cat: TV/Anime, desc: "Movies/ANIME"}
|
||||
- {id: 44, cat: Movies, desc: "Movies/CAM"}
|
||||
- {id: 18, cat: Movies/DVD, desc: "Movies/DVDR"}
|
||||
- {id: 49, cat: Movies/HD, desc: "Movies/hd 1080p"}
|
||||
- {id: 48, cat: Movies/HD, desc: "Movies/hd 720p"}
|
||||
- {id: 55, cat: Movies, desc: "Movies/Box Sets"}
|
||||
- {id: 53, cat: Movies, desc: "Movies/Sports"}
|
||||
- {id: 17, cat: Movies, desc: "Movies/X264"}
|
||||
- {id: 57, cat: Movies, desc: "Movies/xmas"}
|
||||
- {id: 15, cat: Movies/SD, desc: "Movies/XVID"}
|
||||
# Music
|
||||
- {id: 54, cat: Audio/Audiobook, desc: "Music/Audio Book"}
|
||||
- {id: 19, cat: Audio/Lossless, desc: "Music/FLAC"}
|
||||
- {id: 20, cat: Audio, desc: "Music/DVDR"}
|
||||
- {id: 21, cat: Audio/MP3, desc: "Music/MP3"}
|
||||
- {id: 42, cat: Audio, desc: "Music/0DAY"}
|
||||
- {id: 22, cat: Audio/Video, desc: "Music/VID"}
|
||||
# Apps
|
||||
- {id: 9, cat: PC/0day, desc: "Apps/APPS"}
|
||||
- {id: 11, cat: Books/Ebook, desc: "Apps/EBOOKS"}
|
||||
- {id: 46, cat: PC/Phone-Other, desc: "Apps/IPHONE/ANDROID"}
|
||||
- {id: 51, cat: PC, desc: "Apps/Linux"}
|
||||
- {id: 52, cat: PC/Mac, desc: "Apps/MAC"}
|
||||
# Games
|
||||
- {id: 58, cat: Console/Other, desc: "Games/Android"}
|
||||
- {id: 45, cat: PC/Games, desc: "Games/GAMES"}
|
||||
- {id: 59, cat: Console/NDS, desc: "Games/NDS"}
|
||||
- {id: 50, cat: Console, desc: "Games/PS2"}
|
||||
- {id: 14, cat: Console/PS3, desc: "Games/PS3"}
|
||||
- {id: 12, cat: Console/Wii, desc: "Games/WII"}
|
||||
- {id: 13, cat: Console/Xbox 360, desc: "Games/XBOX360"}
|
||||
# XXX
|
||||
- {id: 38, cat: XXX, desc: "XXX"}
|
||||
- {id: 39, cat: XXX, desc: "XXX/0DAY"}
|
||||
- {id: 40, cat: XXX/Imageset, desc: "XXX/IMAGESET"}
|
||||
- {id: 41, cat: XXX/Other, desc: "XXX/SITERIPS"}
|
||||
- {id: 9, cat: TV/Anime, desc: "Anime"}
|
||||
- {id: 1, cat: PC/0day, desc: "Apps"}
|
||||
- {id: 13, cat: PC/0day, desc: "Apps"}
|
||||
- {id: 5, cat: TV, desc: "Episodes"}
|
||||
- {id: 2, cat: PC/Games, desc: "Games"}
|
||||
- {id: 12, cat: PC/Games, desc: "Games/PC Rips"}
|
||||
- {id: 8, cat: Console/Other, desc: "Games/PS2"}
|
||||
- {id: 7, cat: Console/PSP, desc: "Games/PSP"}
|
||||
- {id: 3, cat: Movies, desc: "Movies"}
|
||||
- {id: 11, cat: Movies/SD, desc: "Movies/HDTV"}
|
||||
- {id: 10, cat: Movies/SD, desc: "Movies/XviD"}
|
||||
- {id: 4, cat: Audio, desc: "Music"}
|
||||
- {id: 14, cat: Audio, desc: "Music"}
|
||||
- {id: 6, cat: XXX, desc: "XXX"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
@@ -101,12 +68,13 @@
|
||||
selector: table tr td.text
|
||||
test:
|
||||
path: browse.php
|
||||
selector: li a[href^="logout.php?hash_please="]
|
||||
selector: a[href*="logout.php?hash_please="]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
searchin: "title"
|
||||
incldead: "{{ .Config.incldead }}"
|
||||
@@ -136,11 +104,7 @@
|
||||
selector: td:nth-of-type(3) a
|
||||
attribute: href
|
||||
files:
|
||||
optional: true
|
||||
selector: td:nth-of-type(5) a
|
||||
files:
|
||||
optional: true
|
||||
selector: td:nth-of-type(5):not(:has(a))
|
||||
selector: td:nth-of-type(5)
|
||||
date:
|
||||
selector: td:nth-of-type(7)
|
||||
filters:
|
||||
@@ -154,12 +118,13 @@
|
||||
- name: regexp
|
||||
args: "([\\d]+)"
|
||||
seeders:
|
||||
selector: td:nth-of-type(10) a font
|
||||
selector: td:nth-of-type(10)
|
||||
leechers:
|
||||
selector: td:nth-of-type(11)
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"span:contains(\"Unlimited\")": "0"
|
||||
"img[title=\"Free Torrent\"]": "0" # torrent specific free leech (icon)?
|
||||
"a.info:contains(\"Free\")": "0" # global freeleech note?
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
||||
|
@@ -6,19 +6,24 @@
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- http://www.nextorrent.pro/
|
||||
- http://www.nextorrent.tv/
|
||||
legacylinks:
|
||||
- https://www.nextorrent.site/
|
||||
- http://www.nextorrent.site/
|
||||
- http://www.nextorrent.bz/
|
||||
- http://www.nextorrent.pro/
|
||||
- https://www.nextorrent.cc/
|
||||
- https://www.nextorrent.org/
|
||||
- https://www.nextorrent.tv/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: Film, cat: Movies, desc: "Movies"}
|
||||
- {id: Films, cat: Movies, desc: "Movies"}
|
||||
- {id: Séries, cat: TV, desc: "TV"}
|
||||
- {id: Animes, cat: TV/Anime, desc: "TV/Anime"}
|
||||
- {id: Jeux, cat: Console, desc: "Games"}
|
||||
- {id: Ebooks, cat: Books, desc: "EBooks"}
|
||||
- {id: Jeux-PC, cat: PC/Games, desc: "Games PC"}
|
||||
- {id: Jeux-Consoles, cat: Console, desc: "Games Console"}
|
||||
- {id: Musique, cat: Audio, desc: "Music"}
|
||||
- {id: Ebook, cat: Books, desc: "EBooks"}
|
||||
- {id: Logiciels, cat: PC, desc: "Software"}
|
||||
|
||||
modes:
|
||||
@@ -29,24 +34,22 @@
|
||||
settings: []
|
||||
|
||||
download:
|
||||
selector: a[href^="/_get/NexTorrent.pro-"]
|
||||
selector: a[href^="/get_torrent/"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: /
|
||||
inputs:
|
||||
s: "{{ .Keywords }}"
|
||||
- path: "recherche/{{ .Query.Keywords }}"
|
||||
rows:
|
||||
selector: article[id^="post-"]
|
||||
selector: div.listing-torrent > table tbody tr:has(a)
|
||||
fields:
|
||||
site_date:
|
||||
selector: h2 a
|
||||
selector: td:nth-child(1) a
|
||||
filters:
|
||||
# date is at the end of the title, so we get it and name it site_date
|
||||
- name: regexp
|
||||
args: "(\\w+)$"
|
||||
title:
|
||||
selector: h2 a
|
||||
selector: td:nth-child(1) a
|
||||
filters:
|
||||
# now we put the date at the right place according scene naming rules using .Result.site_date
|
||||
- name: replace
|
||||
@@ -59,32 +62,28 @@
|
||||
- name: re_replace
|
||||
args: ["(\\w+)$", ""]
|
||||
details:
|
||||
selector: h2 a
|
||||
selector: td:nth-child(1) a
|
||||
attribute: href
|
||||
download:
|
||||
selector: h2 a
|
||||
selector: td:nth-child(1) a
|
||||
attribute: href
|
||||
banner:
|
||||
selector: div.post_image
|
||||
attribute: src
|
||||
category:
|
||||
selector: p.meta span.post-category a
|
||||
|
||||
selector: td:nth-child(1) i
|
||||
attribute: class
|
||||
size:
|
||||
# there is no size on the primary search results page. defaulting to 500 MB
|
||||
text: "500 MB"
|
||||
selector: td:nth-child(2)
|
||||
date:
|
||||
selector: p.meta span.post-date a time.entry-date
|
||||
attribute: datetime
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "2006-01-02T15:04:05-07:00"
|
||||
text: now
|
||||
seeders:
|
||||
# there is no seeders on the primary search results page. defaulting to 0
|
||||
text: 0
|
||||
seeders:
|
||||
optional: true
|
||||
selector: td:nth-child(3)
|
||||
leechers:
|
||||
text: 0
|
||||
leechers:
|
||||
# there is no leechers on the primary search results page. defaulting to 0
|
||||
text: 0
|
||||
optional: true
|
||||
selector: td:nth-child(4)
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
|
@@ -113,3 +113,7 @@
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["Unknown", "0"]
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
||||
|
@@ -122,3 +122,7 @@
|
||||
selector: td:nth-child(7)
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
||||
|
@@ -1,93 +0,0 @@
|
||||
---
|
||||
site: OxTorrent
|
||||
name: OxTorrent
|
||||
description: "OxTorrent is a FRENCH Public site for TV / MOVIES / GENERAL"
|
||||
language: fr-fr
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- http://www.oxtorrent.com/
|
||||
# legacylinks:
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: films, cat: Movies, desc: "Movies"}
|
||||
- {id: series, cat: TV, desc: "TV"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
|
||||
settings: []
|
||||
|
||||
download:
|
||||
selector: a[href^="/get_torrent/"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: "recherche/{{ .Query.Keywords }}"
|
||||
rows:
|
||||
selector: div.listing-torrent > table tbody tr:has(a)
|
||||
fields:
|
||||
site_date:
|
||||
selector: td:nth-child(1) a
|
||||
filters:
|
||||
# date is at the end of the title, so we get it and name it site_date
|
||||
- name: regexp
|
||||
args: "(\\w+)$"
|
||||
title:
|
||||
selector: td:nth-child(1) a
|
||||
filters:
|
||||
# now we put the date at the right place according scene naming rules using .Result.site_date
|
||||
- name: replace
|
||||
args: ["FRENCH", "{{ .Result.site_date }} FRENCH"]
|
||||
- name: replace
|
||||
args: ["TRUEFRENCH", "{{ .Result.site_date }} TRUEFRENCH"]
|
||||
- name: replace
|
||||
args: ["VOSTFR", "{{ .Result.site_date }} VOSTFR"]
|
||||
# and we delete it at the end
|
||||
- name: re_replace
|
||||
args: ["(\\w+)$", ""]
|
||||
details:
|
||||
selector: td:nth-child(1) a
|
||||
attribute: href
|
||||
download:
|
||||
selector: td:nth-child(1) a
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(2)
|
||||
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"
|
||||
seeders:
|
||||
text: 0
|
||||
seeders:
|
||||
selector: td:nth-child(3)
|
||||
optional: true
|
||||
leechers:
|
||||
text: 0
|
||||
leechers:
|
||||
selector: td:nth-child(4)
|
||||
optional: true
|
||||
downloadvolumefactor:
|
||||
text: "0"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
@@ -44,6 +44,7 @@
|
||||
- selector: td.embedded:has(h2:contains("failed"))
|
||||
- selector: td.embedded:has(h2:contains("Error"))
|
||||
test:
|
||||
selector: a[href^="logout.php"]
|
||||
path: /browse.php
|
||||
|
||||
search:
|
||||
|
@@ -106,11 +106,14 @@
|
||||
|
||||
search:
|
||||
path: index.php
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["S0?(\\d{1,2})E(\\d{1,2})", "T$1 $2"]
|
||||
inputs:
|
||||
page: "torrents"
|
||||
$raw: "&category={{range .Categories}}{{.}};{{end}}"
|
||||
active: "1"
|
||||
search: "{{ .Query.Keywords }}"
|
||||
search: "{{ .Keywords }}"
|
||||
rows:
|
||||
selector: "#mcol .block-content-l table table.lista > tbody > tr:not(:first-child):not(.descripcion)"
|
||||
fields:
|
||||
@@ -122,6 +125,9 @@
|
||||
args: category
|
||||
title:
|
||||
selector: td:nth-child(2) a
|
||||
filters:
|
||||
- name: append
|
||||
args: " [spanish]"
|
||||
details:
|
||||
selector: td:nth-child(3) a
|
||||
attribute: href
|
||||
|
111
src/Jackett.Common/Definitions/racing4everyone.yml
Normal file
111
src/Jackett.Common/Definitions/racing4everyone.yml
Normal file
@@ -0,0 +1,111 @@
|
||||
---
|
||||
site: racing4everyone
|
||||
name: Racing4Everyone (R4E)
|
||||
description: "Private Torrent Tracker for RACING"
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://racing4everyone.eu/
|
||||
legacylinks:
|
||||
- https://racing4everyone.jp/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 1, cat: TV/Sport, desc: "BTCC"}
|
||||
- {id: 3, cat: TV/Sport, desc: "DTM"}
|
||||
- {id: 4, cat: TV/Sport, desc: "Formula 1 2018"}
|
||||
- {id: 6, cat: TV/Sport, desc: "Formula 1 2017-1950 (HD)"}
|
||||
- {id: 21, cat: TV/Sport, desc: "Formula 1 2017-1950 (SD)"}
|
||||
- {id: 22, cat: TV/Sport, desc: "Formula 2"}
|
||||
- {id: 23, cat: TV/Sport, desc: "Formula E"}
|
||||
- {id: 24, cat: TV/Sport, desc: "Misc"}
|
||||
- {id: 25, cat: TV/Sport, desc: "Motorbikes"}
|
||||
- {id: 26, cat: TV/Sport, desc: "MotoGP/2/3"}
|
||||
- {id: 31, cat: TV/Sport, desc: "Nascar"}
|
||||
- {id: 32, cat: TV/Sport, desc: "Stockcars"}
|
||||
- {id: 33, cat: TV/Sport, desc: "Touring Cars"}
|
||||
- {id: 50, cat: TV/Sport, desc: "WRC"}
|
||||
- {id: 53, cat: TV/Sport, desc: "Open-Wheelers"}
|
||||
- {id: 54, cat: TV/Sport, desc: "Documentaries/Movies"}
|
||||
- {id: 55, cat: TV/Sport, desc: "Season Reviews"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
||||
login:
|
||||
path: /login
|
||||
method: form
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: table.main:contains("Login Failed!")
|
||||
test:
|
||||
path: /torrents
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: /filterTorrents
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
uploader: ""
|
||||
sorting: created_at
|
||||
direction: desc
|
||||
qty: 100
|
||||
preprocessingfilters:
|
||||
- name: jsonjoinarray
|
||||
args: ["$.result", ""]
|
||||
- name: prepend
|
||||
args: "<table>"
|
||||
- name: append
|
||||
args: "</table>"
|
||||
rows:
|
||||
selector: tr
|
||||
fields:
|
||||
category:
|
||||
selector: a[href*="/categories/"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "/categories/.*?\\.(\\d+)"
|
||||
title:
|
||||
selector: a.view-torrent
|
||||
download:
|
||||
selector: a[href*="/download_check/"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["/download_check/", "/download/"]
|
||||
details:
|
||||
selector: a.view-torrent
|
||||
attribute: href
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
seeders:
|
||||
selector: td:nth-child(7)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
grabs:
|
||||
selector: td:nth-child(6)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d\.]+)
|
||||
date:
|
||||
selector: time
|
||||
attribute: datetime
|
||||
filters:
|
||||
- name: append
|
||||
args: " +00:00"
|
||||
- name: dateparse
|
||||
args: "2006-01-02 15:04:05 -07:00"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"100% Free\"]": "0"
|
||||
"i[data-original-title=\"Global FreeLeech\"]": "0"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"Double upload\"]": "2"
|
||||
"*": "1"
|
152
src/Jackett.Common/Definitions/rgu.yml
Normal file
152
src/Jackett.Common/Definitions/rgu.yml
Normal file
@@ -0,0 +1,152 @@
|
||||
---
|
||||
site: RGU
|
||||
name: RGU
|
||||
description: "RGU is a Private site for MOVIES / TV / GENERAL"
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://rgu.rgt.life/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 19, cat: Movies/BluRay, desc: "007 Movies"}
|
||||
- {id: 9, cat: TV/Anime, desc: "ANIME/HD"}
|
||||
- {id: 1, cat: PC/0day, desc: "Apps"}
|
||||
- {id: 18, cat: Movies/BluRay, desc: "Dr Who"}
|
||||
- {id: 5, cat: TV, desc: "TV Episodes"}
|
||||
- {id: 2, cat: PC/Games, desc: "Games/PC"}
|
||||
- {id: 11, cat: TV/HD, desc: "TV/HD"}
|
||||
- {id: 30, cat: Console/PS4, desc: "GAMES/PS4"}
|
||||
- {id: 7, cat: Console/PSP, desc: "Games/PSP"}
|
||||
- {id: 17, cat: Movies/BluRay, desc: "Movie Packs"}
|
||||
- {id: 10, cat: Movies, desc: "Movies X264"}
|
||||
- {id: 3, cat: Movies/DVD, desc: "Movies/DVDR"}
|
||||
- {id: 50, cat: Movies/BluRay, desc: "Movies/Bluray-UHD"}
|
||||
- {id: 31, cat: Movies/BluRay, desc: "MOVIES/COMPLETE-BLURAY"}
|
||||
- {id: 3, cat: Movies/DVD, desc: "MOVIES/DVDR"}
|
||||
- {id: 16, cat: TV, desc: "TV Packs"}
|
||||
- {id: 6, cat: XXX, desc: "MOVIES/XXX"}
|
||||
|
||||
|
||||
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: incldead
|
||||
type: select
|
||||
label: "Search Torrents that are:"
|
||||
default: "0"
|
||||
options:
|
||||
"0" : "Active"
|
||||
"1": "Including Dead"
|
||||
"2": "Only Dead"
|
||||
- name: onlyfree
|
||||
type: checkbox
|
||||
label: Show only Free torrents
|
||||
default: false
|
||||
- name: info
|
||||
type: info
|
||||
label: Results Per Page
|
||||
default: For best results, change the 'Torrents per page' setting to 100 on your profile.
|
||||
|
||||
login:
|
||||
path: login.php
|
||||
method: form
|
||||
form: form[action="takelogin.php"]
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
submitme: "X"
|
||||
submitme: "X" # two submitme needed?!? shouldn't make a difference
|
||||
error:
|
||||
- selector: h2:contains("Login failed!")
|
||||
message:
|
||||
selector: td.colhead2
|
||||
test:
|
||||
path: browse.php
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: browse.php
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}c{{.}}=1&{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
searchin: "title"
|
||||
incldead: "{{ .Config.incldead }}"
|
||||
"only_free": "{{ if .Config.onlyfree }}1{{else}}0{{end}}"
|
||||
keywordsfilters:
|
||||
- name: re_replace
|
||||
args: ["(\\w+)", " +$1"] # prepend + to each word
|
||||
rows:
|
||||
selector: tr.browse_color, tr[id^="kdescr"]
|
||||
after: 1
|
||||
fields:
|
||||
category:
|
||||
selector: td:nth-of-type(1) a
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: cat
|
||||
title:
|
||||
selector: td:nth-of-type(2) a
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: split
|
||||
args: [">", "1"]
|
||||
- name: replace
|
||||
args: ["</b", ""]
|
||||
details:
|
||||
selector: td:nth-of-type(2) > a[onmouseover]
|
||||
attribute: href
|
||||
banner:
|
||||
selector: td:nth-of-type(2) > a[onmouseover]
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "src=\\\\'(.+?)\\\\'"
|
||||
- name: replace
|
||||
args: ["./pic/noposter.png", ""]
|
||||
download:
|
||||
selector: td:nth-of-type(3) a
|
||||
attribute: href
|
||||
files:
|
||||
selector: td:nth-of-type(5)
|
||||
date:
|
||||
selector: td:nth-of-type(7)
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "Jan 02 2006 03:04 PM"
|
||||
size:
|
||||
selector: td:nth-of-type(8)
|
||||
grabs:
|
||||
selector: td:nth-of-type(9)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "([\\d]+)"
|
||||
seeders:
|
||||
selector: td:nth-of-type(10)
|
||||
leechers:
|
||||
selector: td:nth-of-type(11)
|
||||
description:
|
||||
selector: td[colspan="14"]
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["\n", "<br>\n"]
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"b:contains(\"[Free and Double]\")": "0"
|
||||
"img[alt=\"Free Torrent\"]": "0"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"b:contains(\"[Free and Double]\")": "2"
|
||||
"*": "1"
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user