Compare commits

...

22 Commits

Author SHA1 Message Date
Bogdan
7e8fdfa2b1 bitsearch: update title selector 2023-06-12 04:47:48 +03:00
Bogdan
35e1218861 common: bump Newtonsoft.Json to 13.0.3 2023-06-11 23:34:42 +03:00
Bogdan
af54a3f9d0 core: use project name as relative path in builds (#14447) 2023-06-11 23:24:19 +03:00
Bogdan
04cc9939a6 add ids to bug report issue template 2023-06-11 22:36:42 +03:00
Bogdan
5640a86838 cardigann: use CheckIfLoginIsNeeded in response type is json (#14444) 2023-06-11 09:54:01 +03:00
ilike2burnthing
bcc00f91bb lostfilm: remove down *.run domain. resolves #14441 2023-06-10 23:18:04 +01:00
Bogdan
6905cdc103 arabafenice: add login test selector 2023-06-10 23:54:05 +03:00
Garfield69
f1415f32c6 mejortorrent: new domain 2023-06-10 05:53:15 +12:00
Bogdan
4e55187bdb cardigann: catch JsonReaderException when parsing JSON
Fixes #14439
2023-06-09 01:47:22 +03:00
Garfield69
967ff6db99 torrentqq: bump domain 2023-06-09 05:46:57 +12:00
Bogdan
23cff411ed logging: cleanse messages in log files (#14433)
Co-authored-by: ilike2burnthing <59480337+ilike2burnthing@users.noreply.github.com>
2023-06-08 18:09:16 +03:00
Garfield69
f42b76fb36 add fappaizuri a private site for hentai/jav resolves #14438
new site, expect changes.
2023-06-08 21:40:30 +12:00
Garfield69
28c5c427e8 mejortorrent: fix cat detection. resolves #14435 2023-06-08 17:30:14 +12:00
Garfield69
68205b13ca torrentland: new layout. resolves #14437 2023-06-08 09:22:06 +12:00
Bogdan
dcec23434f hdolimpo-api: add auth header 2023-06-07 20:59:07 +03:00
Garfield69
09dc556140 assorted: new unblockit domain 2023-06-07 22:04:49 +12:00
Garfield69
0d69d7ba1b add therebels a Brazilian private site. resolves #14434 2023-06-07 21:53:13 +12:00
Bogdan
cc8a980a70 abtorrents: fix publish date 2023-06-07 04:47:27 +03:00
Bogdan
e9f7e4d13f unit3d: move api key auth in headers (#14429) 2023-06-07 02:48:56 +03:00
Bogdan
c6180f6860 lesaloon: update base url (#14431) 2023-06-06 21:56:46 +03:00
Garfield69
8c5fb64aec assorted unit3d: replacement API docs
https://github.com/HDInnovations/UNIT3D-Community-Edition/discussions/2816
2023-06-07 06:01:26 +12:00
Garfield69
a293346ce8 assorted unit3d: update api doc links 2023-06-06 20:43:36 +12:00
67 changed files with 772 additions and 282 deletions

View File

@@ -2,6 +2,7 @@ name: Bug report
description: Create a report of your issue
body:
- type: checkboxes
id: troubleshooting
attributes:
label: Have you checked our Troubleshooting page for your issue?
description: Please read the <a href="https://github.com/Jackett/Jackett/wiki/Troubleshooting">Troubleshooting</a> page for steps to resolve common issues.
@@ -9,6 +10,7 @@ body:
- label: I have checked the Troubleshooting page
required: true
- type: checkboxes
id: already-an-issue
attributes:
label: Is there already an issue for your problem?
description: Please make sure you are not creating an already submitted <a href="https://github.com/Jackett/Jackett/issues">Issue</a>. Check closed issues as well, because your issue may have already been fixed.
@@ -16,6 +18,7 @@ body:
- label: I have checked older issues, open and closed
required: true
- type: checkboxes
id: contributing-guidelines
attributes:
label: Have you read our Contributing Guidelines?
description: Please read our <a href="https://github.com/Jackett/Jackett/blob/master/CONTRIBUTING.md">Contributing Guidelines</a> before submitting your issue to ensure a prompt response to your bug.
@@ -23,6 +26,7 @@ body:
- label: I have read the Contributing Guidelines
required: true
- type: textarea
id: environment
attributes:
label: Environment
description: Please provide the details of the system Jackett is running on. The best way to do this is to restart Jackett, access the dashboard, view the log, and copy/paste replacing the example below with the last 10 Info lines at the bottom of the log.
@@ -40,12 +44,14 @@ body:
validations:
required: true
- type: textarea
id: description
attributes:
label: Description
description: List steps to reproduce the error and details on what happens and what you expected to happen.
validations:
required: true
- type: textarea
id: error-logs
attributes:
label: Logged Error Messages
description: |
@@ -55,6 +61,7 @@ body:
validations:
required: true
- type: textarea
id: screenshots
attributes:
label: Screenshots
description: Place any screenshots of the issue here if needed

View File

@@ -339,6 +339,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* FANO.IN [![(invite needed)][inviteneeded]](#)
* Fantastic Heaven
* Fantastiko
* Fappaizuri
* Femdomcult
* FileList (FL)
* FinElite (FE)
@@ -547,6 +548,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* TheDarkCommunity (TDC)
* TheEmpire (TE)
* TheLeachZone (TLZ)
* TheRebels
* TheScenePlace (TSP)
* Thor's Land
* TJUPT
@@ -607,7 +609,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* ZonaQ
</details>
Trackers marked with [![(invite needed)][inviteneeded]](#) have no active maintainer and may be missing features or be broken. If you have an invite for them please send it to garfieldsixtynine -at- gmail.com to get them fixed/improved.
Trackers marked with [![(invite needed)][inviteneeded]](#) have no active maintainer and may be missing features or be broken. If you have an invite for them please send it to garfieldsixtynine -at- gmail.com or jacketttest -at- gmail.com to get them fixed/improved.
### Aggregate indexers

13
src/Directory.Build.props Normal file
View File

@@ -0,0 +1,13 @@
<Project>
<!-- Common to all Jackett Projects -->
<PropertyGroup>
<!-- Specifies whether it's one of our own libraries -->
<JackettProject>false</JackettProject>
<JackettProject Condition="$(MSBuildProjectName.StartsWith('Jackett'))">true</JackettProject>
</PropertyGroup>
<!-- Set the Product and Version info for our own projects -->
<PropertyGroup Condition="'$(JackettProject)'=='true'">
<PathMap>$(MSBuildProjectDirectory)=./$(MSBuildProjectName)/</PathMap>
</PropertyGroup>
</Project>

View File

@@ -13,12 +13,11 @@ links:
- https://x1337x.ws/
- https://x1337x.eu/
- https://x1337x.se/
- https://1337x.unblockit.asia/
- https://1337x.unblockit.mov/
- https://1337x.unblockninja.com/
legacylinks:
- https://1337x.is/
- https://1337x.nocensor.work/
- https://1337x.unblockit.cam/
- https://1337x.nocensor.biz/
- https://1337x.gd/
- https://1337x.unblockit.day/
@@ -41,6 +40,7 @@ legacylinks:
- https://1337x.mrunblock.guru/
- https://1337x.mrunblock.life/ # cloudflare 403
- https://1337x.unblockit.click/
- https://1337x.unblockit.asia/
caps:
categorymappings:

View File

@@ -139,20 +139,22 @@ search:
files:
selector: td:nth-last-child(9)
date_day:
# Yesterday<br/>6:00 AM
selector: td:nth-last-child(7):contains("day")
# auto adjusted by site account profile
# Yesterday, 6:00 AM
selector: td:nth-last-child(7) > span[title*="day"]
attribute: title
optional: true
filters:
- name: fuzzytime
date_year:
# Aug 6 2021<br/>7:25 PM
selector: td:nth-last-child(7):not(:contains("day"))
# auto adjusted by site account profile
# Aug 6 2021, 7:25 PM
selector: td:nth-last-child(7) > span[title]:not([title*="day"])
attribute: title
optional: true
filters:
- name: dateparse
args: "MMM d yyyy h:mm tt"
args: "MMM d yyyy, h:mm tt"
date:
text: "{{ if or .Result.date_day .Result.date_year }}{{ or .Result.date_day .Result.date_year }}{{ else }}now{{ end }}"
size:

View File

@@ -60,8 +60,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -69,15 +67,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -62,8 +62,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -71,15 +69,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -65,8 +65,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -74,15 +72,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -124,6 +124,7 @@ login:
args: ["');", ""]
test:
path: index.php
selector: a[href="logout.php"]
download:
before:

View File

@@ -93,7 +93,7 @@ search:
category:
selector: a.category
title:
selector: h5
selector: h5 a
details:
selector: h5 a
attribute: href

View File

@@ -54,8 +54,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -63,15 +61,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -55,8 +55,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -64,14 +62,16 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"

View File

@@ -68,8 +68,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -81,8 +79,10 @@ search:
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
search: "{{ .Keywords }}"
imdb: "{{ .Query.IMDBIDShort }}"

View File

@@ -61,8 +61,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -70,15 +68,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -10,12 +10,11 @@ links:
- https://www.demonoid.is/
- https://www.dnoid.to/
- https://www.dnoid.pw/
- https://demonoid.unblockit.asia/
- https://demonoid.unblockit.mov/
- https://demonoid.torrentbay.net/
- https://demonoid.mrunblock.life/
- https://demonoid.nocensor.click/
legacylinks:
- https://demonoid.unblockit.cam/
- https://demonoid.nocensor.biz/
- https://demonoid.unblockit.day/
- https://demonoid.unblockit.llc/
@@ -42,6 +41,7 @@ legacylinks:
- https://demonoid.mrunblock.guru/
- https://demonoid.torrentbay.to/
- https://demonoid.unblockit.click/
- https://demonoid.unblockit.asia/
caps:
categorymappings:

View File

@@ -54,8 +54,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -63,15 +61,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -7,12 +7,11 @@ type: public
encoding: UTF-8
links:
- https://extratorrent.st/
- https://extratorrent.unblockit.asia/
- https://extratorrent.unblockit.mov/
- https://extratorrent.mrunblock.life/
- https://extratorrent.nocensor.click/
legacylinks:
- https://extratorrent.nocensor.work/
- https://extratorrent.unblockit.cam/
- https://extratorrent.nocensor.biz/
- https://extratorrent.unblockit.day/
- https://extratorrent.unblockit.llc/
@@ -33,6 +32,7 @@ legacylinks:
- https://extratorrent.unblockit.boo/
- https://extratorrent.mrunblock.guru/
- https://extratorrent.unblockit.click/
- https://extratorrent.unblockit.asia/
caps:
categorymappings:

View File

@@ -13,7 +13,7 @@ links:
- https://eztv.yt/
- https://eztv1.xyz/
- https://eztv.unblockninja.com/
- https://eztv.unblockit.asia/
- https://eztv.unblockit.mov/
- https://eztv.mrunblock.life/
- https://eztv.nocensor.click/
legacylinks:
@@ -41,6 +41,7 @@ legacylinks:
- https://eztv.unblockit.boo/
- https://eztv.mrunblock.guru/
- https://eztv.unblockit.click/
- https://eztv.unblockit.asia/
caps:
categories:

View File

@@ -0,0 +1,139 @@
---
id: fappaizuri
name: Fappaizuri
description: "Fappaizuri is a Private Torrent Tracker for HENTAI / JAV"
language: en-US
type: private
encoding: UTF-8
links:
- https://fappaizuri.me/
caps:
categorymappings:
- {id: 8, cat: TV/Anime, desc: "Hentai"}
- {id: 7, cat: Console, desc: "H-games"}
- {id: 5, cat: XXX, desc: "JAV"}
- {id: 6, cat: Books, desc: "Manga"}
modes:
search: [q]
tv-search: [q, season, ep]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: lang
type: select
label: Language
default: 0
options:
0: All
4: Japanese
5: Chinese
6: Malaysia
7: North Korea
8: English
- name: sort
type: select
label: Sort requested from site
default: id
options:
id: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
method: post
path: account-login.php
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
error:
- selector: b:contains("The specified username or password was incorrect.")
test:
path: account.php
search:
paths:
# https://fappaizuri.me/torrents-search.php?search=&c8=1&c6=1&incldead=1&freeleech=0&lang=0
- path: torrents-search.php
inputs:
$raw: "{{ range .Categories }}&c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active, 1 incldead, 2 onlydead
incldead: 1
# 0 all, 1 notfree, 2 onlyfree
freeleech: "{{ if .Config.freeleech }}{{ .Config.freeleech }}2{{ else }}0{{ end }}"
lang: "{{ .Config.lang }}"
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
rows:
selector: tr.t-row:has(a[href^="download.php?id="])
fields:
category:
selector: a[href^="search-torrents.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: a[href^="torrents-details.php?id="] > b
details:
selector: a[href^="torrents-details.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: a[href^="torrents-details.php?id="]
attribute: onmouseover
filters:
- name: regexp
args: src=(.+?)>
_language:
selector: img[src*="images/languages/"]
attribute: alt
description:
selector: font[color="red"]
filters:
- name: append
args: " - {{ .Result._language }}"
size:
selector: td:nth-child(4)
seeders:
selector: td:nth-child(5)
leechers:
selector: td:nth-child(6)
date:
text: now
downloadvolumefactor:
case:
img[src="images/free.png"]: 0
"*": 1
uploadvolumefactor:
case:
img[src="images/doubleupload.gif"]: 2
"*": 1
minimumratio:
text: 1.0
# evolution

View File

@@ -84,8 +84,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -93,15 +91,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -10,14 +10,13 @@ links:
- https://glodls.to/
- https://gtdb.cc/
- https://www.gtdb.to/
- https://glotorrents.unblockit.asia/
- https://glotorrents.unblockit.mov/
- https://glotorrents.mrunblock.life/
- https://glodls.unblockninja.com/
- https://glotorrents.nocensor.click/
legacylinks:
- https://glodls.rocks/
- https://gtdb.to/
- https://glotorrents.unblockit.cam/
- https://glotorrents.nocensor.biz/
- https://glotorrents.unblockit.day/
- https://glotorrents.unblockit.llc/
@@ -38,6 +37,7 @@ legacylinks:
- https://glotorrents.unblockit.boo/
- https://glotorrents.mrunblock.guru/
- https://glotorrents.unblockit.click/
- https://glotorrents.unblockit.asia/
caps:
categorymappings:

View File

@@ -50,8 +50,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -59,14 +57,16 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
imdbId: "{{ .Query.IMDBIDShort }}"

View File

@@ -53,8 +53,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -62,15 +60,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -56,8 +56,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -65,15 +63,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: api/torrents/filter
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -59,8 +59,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -68,15 +66,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -61,8 +61,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -70,15 +68,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -65,8 +65,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -74,15 +72,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -6,8 +6,9 @@ language: fr-FR
type: private
encoding: UTF-8
links:
- https://lesaloonv2-0.net/
- https://lesaloonv2-0.xyz/
legacylinks:
- https://lesaloonv2-0.net/
- http://lesaloonv2-0.net/ # site forces https
caps:
@@ -121,7 +122,7 @@ settings:
default: false
login:
# https://lesaloonv2-0.net/yupy_login.php
# https://lesaloonv2-0.xyz/yupy_login.php
path: yupy_login.php
method: form
form: form[action^="login"]
@@ -137,7 +138,7 @@ login:
search:
paths:
# http://lesaloonv2-0.net/index.php?page=torrents&search=supernatural+s13e20&parentcategory=0&category=0&genre=0&options=0&active=0
# http://lesaloonv2-0.xyz/index.php?page=torrents&search=supernatural+s13e20&parentcategory=0&category=0&genre=0&options=0&active=0
- path: index.php
inputs:
page: torrents

View File

@@ -9,7 +9,7 @@ followredirect: true
# changes to this indexer should also be made to limetorrentsclone
links:
- https://www.limetorrents.lol/
- https://limetorrents.unblockit.asia/
- https://limetorrents.unblockit.mov/
- https://limetorrents.unblockninja.com/
- https://limetorrents.mrunblock.life/
- https://limetorrents.nocensor.click/
@@ -38,6 +38,7 @@ legacylinks:
- https://limetorrents.unblockit.boo/
- https://limetorrents.mrunblock.guru/
- https://limetorrents.unblockit.click/
- https://limetorrents.unblockit.asia/
caps:
categorymappings:

View File

@@ -55,8 +55,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -64,15 +62,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -59,8 +59,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -68,15 +66,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -58,8 +58,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -67,15 +65,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -60,8 +60,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -69,15 +67,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -59,8 +59,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -68,15 +66,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -83,8 +83,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -92,15 +90,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -69,8 +69,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -78,15 +76,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -57,8 +57,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -66,15 +64,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -53,8 +53,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -62,15 +60,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -61,8 +61,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -70,15 +68,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -49,8 +49,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -58,15 +56,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -49,8 +49,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -58,15 +56,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -61,8 +61,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -70,15 +68,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -50,8 +50,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -59,15 +57,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -83,8 +83,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -92,15 +90,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -0,0 +1,175 @@
---
id: therebels-api
name: TheRebels (API)
description: "TheRebels is a BRAZILIAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: pt-BR
type: private
encoding: UTF-8
links:
- https://therebels.tv/
caps:
categorymappings:
- {id: 10, cat: TV/Anime, desc: "Animes"}
- {id: 5, cat: PC, desc: "Aplicativos"}
- {id: 12, cat: Audio/Audiobook, desc: "Audiobooks"}
- {id: 7, cat: XXX, desc: "Conteúdo Adulto"}
- {id: 9, cat: Other, desc: "Cursos"}
- {id: 8, cat: Books/EBook, desc: "E-Books"}
- {id: 1, cat: Movies, desc: "Filmes"}
- {id: 4, cat: Console, desc: "Jogos"}
- {id: 3, cat: Audio, desc: "Músicas"}
- {id: 11, cat: Books/Mags, desc: "Revistas"}
- {id: 2, cat: TV, desc: "Series"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
movie-search: [q, imdbid, tmdbid]
music-search: [q]
book-search: [q]
settings:
- name: apikey
type: text
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://therebels.tv/\" target=\"_blank\">TheRebels</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: /api/torrents
method: get
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"
episodeNumber: "{{ .Query.Ep }}"
imdbId: "{{ .Query.IMDBIDShort }}"
tmdbId: "{{ .Query.TMDBID }}"
tvdbId: "{{ .Query.TVDBID }}"
"free[]": "{{ if .Config.freeleech }}100{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
fields:
category:
selector: category_id
title:
selector: name
details:
selector: details_link
download:
selector: download_link
infohash:
selector: info_hash
poster:
selector: meta.poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
genre:
selector: meta.genres
filters:
- name: re_replace
args: ["(?i)(Science Fiction)", "Science_Fiction"]
- name: re_replace
args: ["(?i)(TV Movie)", "TV_Movie"]
- name: replace
args: [" & ", "_&_"]
description:
text: "{{ .Result.genre }}"
files:
selector: num_file
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: times_completed
date:
# "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50
selector: created_at
filters:
- name: append
args: " +00:00" # GMT
- name: dateparse
args: "MM/dd/yyyy HH:mm:ss zzz"
size:
selector: size
downloadvolumefactor:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
0%: 1 # not free
25%: 0.75
50%: 0.5
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
case:
0: 1 # normal
1: 2 # double
# global MR is 1.0 but torrents must be seeded for 2 days regardless of ratio
# minimumratio:
# text: 1.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# json UNIT3D 6.5.0

View File

@@ -63,8 +63,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -72,15 +70,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -10,12 +10,11 @@ requestDelay: 2
links:
- https://www.torlock2.com/
- https://www.torlock.com/
- https://torlock.unblockit.asia/
- https://torlock.unblockit.mov/
- https://torlock.mrunblock.life/
- https://torlock.nocensor.click/
legacylinks:
- https://torlock.com/
- https://torlock.unblockit.cam/
- https://torlock.nocensor.biz/
- https://torlock.unblockit.day/
- https://torlock.unblockit.llc/
@@ -36,6 +35,7 @@ legacylinks:
- https://torlock.unblockit.boo/
- https://torlock.mrunblock.guru/
- https://torlock.unblockit.click/
- https://torlock.unblockit.asia/
caps:
# dont forget to update the search fields category case block

View File

@@ -8,13 +8,12 @@ encoding: UTF-8
followredirect: true
links:
- https://www.torrentdownload.info/
- https://torrentdownload.unblockit.asia/
- https://torrentdownload.unblockit.mov/
- https://torrentdownload.mrunblock.life/
- https://torrentdownload.nocensor.click/
legacylinks:
- https://torrentdownload.nocensor.space/
- https://torrentdownload.nocensor.work/
- https://torrentdownload.unblockit.cam/
- https://torrentdownload.nocensor.biz/
- https://torrentdownload.unblockit.day/
- https://torrentdownload.unblockit.llc/
@@ -34,6 +33,7 @@ legacylinks:
- https://torrentdownload.unblockit.boo/
- https://torrentdownload.mrunblock.guru/
- https://torrentdownload.unblockit.click/
- https://torrentdownload.unblockit.asia/
caps:
categorymappings:

View File

@@ -8,14 +8,13 @@ encoding: UTF-8
followredirect: true
links:
- https://www.torrentdownloads.pro/
- https://torrentdownloads.unblockit.asia/
- https://torrentdownloads.unblockit.mov/
- https://torrentdownloads.mrunblock.life/
- https://torrentdownloads.unblockninja.com/
- https://torrentdownloads.nocensor.click/
legacylinks:
- https://www.torrentdownloads.me/
- https://torrentdownloads.nocensor.work/
- https://torrentdownloads.unblockit.cam/
- https://torrentdownloads.nocensor.biz/
- https://torrentdownloads.unblockit.day/
- https://torrentdownloads.unblockit.llc/
@@ -36,6 +35,7 @@ legacylinks:
- https://www.torrentdownloads.info/
- https://torrentdownloads.mrunblock.guru/
- https://torrentdownloads.unblockit.click/
- https://torrentdownloads.unblockit.asia/
caps:
categorymappings:

View File

@@ -56,8 +56,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -65,15 +63,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -9,13 +9,12 @@ followredirect: true
links:
- https://www.torrentfunk.com/
- https://www.torrentfunk2.com/
- https://torrentfunk.unblockit.asia/
- https://torrentfunk.unblockit.mov/
- https://torrentfunk.mrunblock.life/
- https://torrentfunk.nocensor.click/
legacylinks:
- https://torrentfunk.nocensor.space/
- https://torrentfunk.nocensor.work/
- https://torrentfunk.unblockit.cam/
- https://torrentfunk.nocensor.biz/
- https://torrentfunk.unblockit.day/
- https://torrentfunk.unblockit.llc/
@@ -35,6 +34,7 @@ legacylinks:
- https://torrentfunk.unblockit.boo/
- https://torrentfunk.mrunblock.guru/
- https://torrentfunk.unblockit.click/
- https://torrentfunk.unblockit.asia/
caps:
categorymappings:

View File

@@ -10,7 +10,7 @@ links:
- https://torrentgalaxy.to/
- https://torrentgalaxy.mx/
- https://tgx.rs/
- https://torrentgalaxy.unblockit.asia/
- https://torrentgalaxy.unblockit.mov/
- https://torrentgalaxy.unblockninja.com/
legacylinks:
- https://torrentgalaxy.org/ # redirects to *.to
@@ -18,7 +18,6 @@ legacylinks:
- https://tgx.unblocked.monster/
- https://torrentgalaxy.nocensor.space/
- https://torrentgalaxy.nocensor.work/
- https://torrentgalaxy.unblockit.cam/
- https://torrentgalaxy.nocensor.biz/
- https://torrentgalaxy.unblockit.day/
- https://torrentgalaxy.unblockit.llc/
@@ -36,6 +35,7 @@ legacylinks:
- https://torrentgalaxy.unblockit.bio/
- https://torrentgalaxy.su/
- https://torrentgalaxy.unblockit.click/
- https://torrentgalaxy.unblockit.asia/
caps:
categorymappings:

View File

@@ -84,6 +84,7 @@ search:
# name=&description=&mediainfo=&uploader=&keywords=&tmdbId=&imdbId=&tvdbId=&malId=
# &startYear=&endYear=&playlistId=&collectionId=&categories[]=1&perPage=100&free[0]=100
- path: torrents
inputs:
$raw: "{{ range .Categories }}categories[]={{.}}&{{end}}"
name: "{{ if .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}" # for dashboard imdbid search
@@ -96,6 +97,7 @@ search:
perPage: 100
page: 1
# supports genre search but you need to know the id, example genres=28 for Acción
keywordsfilters:
- name: re_replace
args: ["(?i)\\bS(\\d+)", "{{ if .Config.compatOld }}T$1{{ else }}S$1{{ end }}"]
@@ -143,24 +145,17 @@ search:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: a[href*="imdb.com/title/tt"]
attribute: href
tmdbid:
selector: a[href*="themoviedb.org/"]
attribute: href
tvdbid:
selector: a[href*="thetvdb.com/?tab="]
attribute: href
selector: div#imdb_id
size:
selector: td:nth-last-child(5)
selector: td.torrent-listings-size
seeders:
selector: td:nth-last-child(4)
selector: td.torrent-listings-seeders
leechers:
selector: td:nth-last-child(3)
selector: td.torrent-listings-leechers
grabs:
selector: td:nth-last-child(2)
selector: td.torrent-listings-completed
date:
selector: td:nth-last-child(1)
selector: td.torrent-listings-age
filters:
# translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
- name: re_replace

View File

@@ -7,9 +7,8 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentqq259.com/
- https://torrentqq260.com/
legacylinks:
- https://torrentqq244.com/
- https://torrentqq245.com/. # typo
- https://torrentqq245.com/
- https://torrentqq246.com/
@@ -25,6 +24,7 @@ legacylinks:
- https://torrentqq256.com/
- https://torrentqq257.com/
- https://torrentqq258.com/
- https://torrentqq259.com/
caps:
categorymappings:

View File

@@ -63,8 +63,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -72,14 +70,16 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: api/torrents/filter
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
imdbId: "{{ .Query.IMDBIDShort }}"

View File

@@ -50,8 +50,6 @@ settings:
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
@@ -59,15 +57,17 @@ login:
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
# https://github.com/HDInnovations/UNIT3D-Community-Edition/wiki/Torrent-API-(UNIT3D-v7.0.0)
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php#L349
- path: "/api/torrents/filter"
response:
type: json
headers:
Authorization: ["Bearer {{ .Config.apikey }}"]
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
$raw: "{{ range .Categories }}&categories[]={{.}}{{end}}"
name: "{{ .Keywords }}"
seasonNumber: "{{ .Query.Season }}"

View File

@@ -9,7 +9,7 @@ requestDelay: 2.5 # 2.5 requests per second (2 causes problems)
links:
# dont forget to update the details, download and poster replace args
- https://yts.mx/
- https://yts.unblockit.asia/
- https://yts.unblockit.mov/
- https://yts.unblockninja.com/
- https://yts.mrunblock.life/
- https://yts.nocensor.click/
@@ -17,7 +17,6 @@ legacylinks:
- https://yts.ag/
- https://yts.am/
- https://yts.lt/
- https://yts.unblockit.cam/
- https://yts.nocensor.biz/
- https://yts.unblockit.day/
- https://yts.unblockit.llc/
@@ -38,6 +37,7 @@ legacylinks:
- https://yts.unblockit.boo/
- https://yts.mrunblock.guru/
- https://yts.unblockit.click/
- https://yts.unblockit.asia/
caps:
categorymappings:

View File

@@ -35,5 +35,13 @@ namespace Jackett.Common.Extensions
return true;
}
public static string Replace(this string text, int index, int length, string replacement)
{
text = text.Remove(index, length);
text = text.Insert(index, replacement);
return text;
}
}
}

View File

@@ -21,6 +21,7 @@ using Jackett.Common.Services.Interfaces;
using Jackett.Common.Utils;
using Jackett.Common.Utils.Clients;
using Microsoft.AspNetCore.WebUtilities;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NLog;
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
@@ -877,40 +878,52 @@ namespace Jackett.Common.Indexers
return true;
}
protected bool CheckIfLoginIsNeeded(WebResult Result, IHtmlDocument document)
private bool CheckIfLoginIsNeeded(WebResult response)
{
if (Result.IsRedirect)
if (response.IsRedirect)
{
var DomainHint = getRedirectDomainHint(Result);
if (DomainHint != null)
var domainHint = getRedirectDomainHint(response);
if (domainHint != null)
{
var errormessage = "Got redirected to another domain. Try changing the indexer URL to " + DomainHint + ".";
var errorMessage = "Got redirected to another domain. Try changing the indexer URL to " + domainHint + ".";
if (Definition.Followredirect)
{
configData.SiteLink.Value = DomainHint;
configData.SiteLink.Value = domainHint;
SiteLink = configData.SiteLink.Value;
SaveConfig();
errormessage += " Updated site link, please try again.";
errorMessage += " Updated site link, please try again.";
}
throw new ExceptionWithConfigData(errormessage, configData);
throw new ExceptionWithConfigData(errorMessage, configData);
}
logger.Error($"Redirected to: {Result.RedirectingTo}");
logger.Error($"Redirected to: {response.RedirectingTo}");
return true;
}
if (Definition.Login == null || Definition.Login.Test == null)
return false;
if (Definition.Login.Test.Selector != null)
{
return false;
}
var contentType = response.Headers.TryGetValue("Content-Type", out var header) ? header.FirstOrDefault() : null;
if (Definition.Login.Test.Selector != null && (contentType?.Contains("text/html") ?? true))
{
var parser = new HtmlParser();
var document = parser.ParseDocument(response.ContentString);
var selection = document.QuerySelectorAll(Definition.Login.Test.Selector);
if (selection.Length == 0)
{
return true;
}
}
return false;
}
@@ -1467,12 +1480,40 @@ namespace Jackett.Common.Indexers
searchUrl, method: method, headers: headers, data: queryCollection);
if (response.IsRedirect && SearchPath.Followredirect)
{
await FollowIfRedirect(response);
}
var results = response.ContentString;
if (SearchPath.Response != null && SearchPath.Response.Type.Equals("json"))
{
// check if we need to login again
var loginNeeded = CheckIfLoginIsNeeded(response);
if (loginNeeded)
{
logger.Info("CardigannIndexer({0}): Relogin required", Id);
var loginResult = await DoLogin();
if (!loginResult)
{
throw new Exception("Relogin failed");
}
await TestLogin();
response = await RequestWithCookiesAsync(searchUrl, method: method, data: queryCollection, headers: headers);
if (response.IsRedirect && SearchPath.Followredirect)
{
await FollowIfRedirect(response);
}
results = response.ContentString;
}
if (response.Status != HttpStatusCode.OK)
{
throw new Exception($"Error Parsing Json Response: Status={response.Status} Response={results}");
@@ -1486,7 +1527,18 @@ namespace Jackett.Common.Indexers
continue;
}
var parsedJson = JToken.Parse(results);
JToken parsedJson;
try
{
parsedJson = JToken.Parse(results);
}
catch (JsonReaderException ex)
{
logger.Warn("Unexpected response content ({0} bytes): {1}", response.ContentBytes.Length, response.ContentString);
throw new Exception("Error Parsing Json Response", ex);
}
if (parsedJson == null)
{
@@ -1627,37 +1679,46 @@ namespace Jackett.Common.Indexers
}
else
{
var SearchResultParser = new HtmlParser();
var SearchResultDocument = SearchResultParser.ParseDocument(results);
// check if we need to login again
var loginNeeded = CheckIfLoginIsNeeded(response, SearchResultDocument);
var loginNeeded = CheckIfLoginIsNeeded(response);
if (loginNeeded)
{
logger.Info(string.Format("CardigannIndexer ({0}): Relogin required", Id));
var LoginResult = await DoLogin();
if (!LoginResult)
throw new Exception(string.Format("Relogin failed"));
logger.Info("CardigannIndexer({0}): Relogin required", Id);
var loginResult = await DoLogin();
if (!loginResult)
{
throw new Exception("Relogin failed");
}
await TestLogin();
response = await RequestWithCookiesAsync(searchUrl, method: method, data: queryCollection, headers: headers);
if (response.IsRedirect && SearchPath.Followredirect)
{
await FollowIfRedirect(response);
}
results = response.ContentString;
SearchResultDocument = SearchResultParser.ParseDocument(results);
}
var searchResultParser = new HtmlParser();
var searchResultDocument = searchResultParser.ParseDocument(results);
checkForError(response, Definition.Search.Error);
if (Search.Preprocessingfilters != null)
{
results = applyFilters(results, Search.Preprocessingfilters, variables);
SearchResultDocument = SearchResultParser.ParseDocument(results);
searchResultDocument = searchResultParser.ParseDocument(results);
logger.Debug(string.Format("CardigannIndexer ({0}): result after preprocessingfilters: {1}", Id, results));
}
var rowsSelector = applyGoTemplateText(Search.Rows.Selector, variables);
rowsDom = SearchResultDocument.QuerySelectorAll(rowsSelector);
rowsDom = searchResultDocument.QuerySelectorAll(rowsSelector);
}
var Rows = rowsDom.ToList();

View File

@@ -26,12 +26,11 @@ namespace Jackett.Common.Indexers
public override string[] AlternativeSiteLinks => new[]
{
"https://www.epublibre.org/",
"https://epublibre.unblockit.asia/"
"https://epublibre.unblockit.mov/"
};
public override string[] LegacySiteLinks => new[]
{
"https://epublibre.org/",
"https://epublibre.unblockit.cam/",
"https://epublibre.unblockit.day/",
"https://epublibre.unblockit.llc/",
"https://epublibre.unblockit.blue/",
@@ -45,7 +44,8 @@ namespace Jackett.Common.Indexers
"https://epublibre.unblockit.ink/",
"https://epublibre.unblockit.bio/",
"https://epublibre.unblockit.boo/",
"https://epublibre.unblockit.click/"
"https://epublibre.unblockit.click/",
"https://epublibre.unblockit.asia/"
};
public override string Language => "es-ES";
public override string Type => "public";

View File

@@ -28,20 +28,20 @@ namespace Jackett.Common.Indexers
public override string[] AlternativeSiteLinks => new[]
{
"https://www.lostfilm.life/",
"https://www.lostfilm.run/",
"https://www.lostfilmtv.site/",
"https://www.lostfilm.tv/",
"https://www.lostfilm.win/",
"https://www.lostfilm.tw/",
"https://www.lostfilm.uno/",
"https://www.lostfilmtv2.site/",
"https://www.lostfilmtv3.site/",
"https://www.lostfilmtv5.site/",
"https://www.lostfilm.uno/"
"https://www.lostfilmtv5.site/"
};
public override string[] LegacySiteLinks => new[]
{
"https://lostfilm.site",
"https://lostfilm.tw/"
"https://lostfilm.tw/",
"https://www.lostfilm.run/"
};
public override string Language => "ru-RU";
public override string Type => "semi-private";

View File

@@ -26,19 +26,14 @@ namespace Jackett.Common.Indexers
public override string Id => "mejortorrent";
public override string Name => "MejorTorrent";
public override string Description => "MejorTorrent - Hay veces que un torrent viene mejor! :)";
public override string SiteLink { get; protected set; } = "https://www2.mejortorrent.rip/";
public override string SiteLink { get; protected set; } = "https://www3.mejortorrent.rip/";
public override string[] AlternativeSiteLinks => new[]
{
"https://www2.mejortorrent.rip/",
"https://mejortorrent.unblockit.asia/"
"https://www3.mejortorrent.rip/",
"https://mejortorrent.unblockit.mov/"
};
public override string[] LegacySiteLinks => new[]
{
"https://www.mejortorrentt.net/",
"http://www.mejortorrent.org/",
"http://www.mejortorrent.tv/",
"http://www.mejortorrentt.com/",
"https://www.mejortorrentt.org/",
"http://www.mejortorrentt.org/",
"https://www.mejortorrents.net/",
"https://www.mejortorrents1.com/",
@@ -52,7 +47,6 @@ namespace Jackett.Common.Indexers
"https://www.mejortorrento.info/",
"https://mejortorrent.nocensor.work/",
"https://www.mejortorrentes.net/",
"https://mejortorrent.unblockit.cam/",
"https://mejortorrent.nocensor.biz/",
"https://mejortorrent.unblockit.day/",
"https://mejortorrent.unblockit.llc/",
@@ -64,7 +58,9 @@ namespace Jackett.Common.Indexers
"https://mejortorrent.wtf/",
"https://mejortorrent.unblockit.boo/",
"https://mejortorrent.unblockit.click/",
"https://www1.mejortorrent.rip/"
"https://www1.mejortorrent.rip/",
"https://mejortorrent.unblockit.asia/",
"https://www2.mejortorrent.rip/",
};
public override string Language => "es-ES";
public override string Type => "public";
@@ -541,14 +537,12 @@ namespace Jackett.Common.Indexers
var cat = MejorTorrentCatType.Otro;
if (mejortorrentCat == null)
{
if (detailsStr.Contains("peliculas_extend"))
if (detailsStr.Contains("pelicula"))
cat = MejorTorrentCatType.Pelicula;
else if (detailsStr.Contains("series_extend"))
else if (detailsStr.Contains("serie"))
cat = MejorTorrentCatType.Serie;
else if (detailsStr.Contains("musica_extend"))
else if (detailsStr.Contains("musica"))
cat = MejorTorrentCatType.Musica;
else if (detailsStr.Contains("pelicula"))
cat = MejorTorrentCatType.Pelicula;
}
else if (mejortorrentCat.Equals(MejorTorrentCatType.Pelicula) ||
mejortorrentCat.Equals(MejorTorrentCatType.Serie) ||

View File

@@ -22,7 +22,7 @@
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.2.0" />
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="MimeMapping" Version="1.0.1.50" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="NLog" Version="5.1.2" />
<PackageReference Include="polly" Version="7.2.3" />
<PackageReference Include="SharpZipLib" Version="1.4.2" />

View File

@@ -2,43 +2,43 @@ using System.Collections.Generic;
using System.Linq;
using Jackett.Common.Models;
using Jackett.Common.Services.Interfaces;
using Jackett.Common.Utils.Logging;
using NLog;
using NLog.Targets;
namespace Jackett.Common.Services
{
[Target("LogService")]
public class LogCacheService : TargetWithLayout, ILogCacheService
{
private static List<CachedLog> logs = new List<CachedLog>();
public void AddLog(LogEventInfo l)
{
lock (logs)
{
logs.Insert(0, new CachedLog()
{
Level = l.Level.Name,
Message = l.FormattedMessage,
When = l.TimeStamp
});
logs = logs.Take(200).ToList();
}
}
private static List<CachedLog> _Logs = new List<CachedLog>();
public List<CachedLog> Logs
{
get
{
lock (logs)
lock (_Logs)
{
return logs.ToList();
return _Logs.ToList();
}
}
}
protected override void Write(LogEventInfo logEvent) => AddLog(logEvent);
private static void AddLog(LogEventInfo logEvent)
{
lock (_Logs)
{
_Logs.Insert(0, new CachedLog
{
Level = logEvent.Level.Name,
Message = CleanseLogMessage.Cleanse(logEvent.FormattedMessage),
When = logEvent.TimeStamp
});
_Logs = _Logs.Take(200).ToList();
}
}
}
}

View File

@@ -0,0 +1,15 @@
using System.Text;
using NLog;
using NLog.Targets;
namespace Jackett.Common.Utils.Logging
{
public class CleanseFileTarget : FileTarget
{
protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
{
var result = CleanseLogMessage.Cleanse(Layout.Render(logEvent));
target.Append(result);
}
}
}

View File

@@ -0,0 +1,74 @@
using System.Linq;
using System.Text.RegularExpressions;
using Jackett.Common.Extensions;
namespace Jackett.Common.Utils.Logging
{
// See https://github.com/Prowlarr/Prowlarr/blob/develop/src/NzbDrone.Common/Instrumentation/CleanseLogMessage.cs
public class CleanseLogMessage
{
private static readonly Regex[] _CleansingRules =
{
// Url
new Regex(@"(?<=[?&: ;])(apikey|api_key|(?:(?:access|api)[-_]?)?token|pass(?:key|wd)?|auth|authkey|user|u?id|api|[a-z_]*apikey|account|pid|pwd)=(?<secret>[^&=""]+?)(?=[ ""&=]|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"(?<=[?& ;])[^=]*?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"rss\.torrentleech\.org/(?!rss)(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"rss\.torrentleech\.org/rss/download/[0-9]+/(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"iptorrents\.com/[/a-z0-9?&;]*?(?:[?&;](u|tp)=(?<secret>[^&=;]+?))+(?= |;|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"/fetch/[a-z0-9]{32}/(?<secret>[a-z0-9]{32})", RegexOptions.Compiled),
new Regex(@"\b(\w*)?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"(?<=authkey = "")(?<secret>[^&=]+?)(?="")", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"(?<=beyond-hd\.[a-z]+/api/torrents/)(?<secret>[^&=][a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"(?<=beyond-hd\.[a-z]+/torrent/download/[\w\d-]+[.]\d+[.])(?<secret>[a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// UNIT3D
new Regex(@"(?<=[a-z0-9-]+\.[a-z]+/torrent/download/\d+\.)(?<secret>[^&=][a-z0-9]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Path
new Regex(@"""C:\\Users\\(?<secret>[^\""]+?)(\\|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"""/(home|Users)/(?<secret>[^/""]+?)(/|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// uTorrent
new Regex(@"\[""[a-z._]*(username|password)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"\[""(boss_key|boss_key_salt|proxy\.proxy)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// BroadcastheNet (;torrent_pass|torrents_notify_ is for MTV)
new Regex(@"""?method""?\s*:\s*""(getTorrents)"",\s*""?params""?\s*:\s*\[\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"getTorrents\(""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"(?<=\?|&|;|=)(authkey|torrent_pass|torrents_notify)[_=](?<secret>[^&=]+?)(?=""|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Indexer Responses
new Regex(@"(?:avistaz|exoticaz|cinemaz|privatehd)\.[a-z]{2,3}/rss/download/(?<secret>[^&=]+?)/(?<secret>[^&=]+?)\.torrent", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"(?:animebytes)\.[a-z]{2,3}/torrent/[0-9]+/download/(?<secret>[^&=]+?)[""]", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@",""info_hash"":""(?<secret>[^&=]+?)"",", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"""token"":""(?<secret>[^&=]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@",""pass[- _]?key"":""(?<secret>[^&=]+?)"",", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@",""rss[- _]?key"":""(?<secret>[^&=]+?)"",", RegexOptions.Compiled | RegexOptions.IgnoreCase),
};
public static string Cleanse(string message)
{
if (message.IsNullOrWhiteSpace())
{
return message;
}
foreach (var regex in _CleansingRules)
{
message = regex.Replace(message, m =>
{
var value = m.Value;
foreach (var capture in m.Groups["secret"].Captures.OfType<Capture>().Reverse())
{
value = value.Replace(capture.Index - m.Index, capture.Length, "(removed)");
}
return value;
});
}
return message;
}
}
}

View File

@@ -3,6 +3,7 @@ using System.IO;
using System.Text;
using Jackett.Common.Models.Config;
using Jackett.Common.Services;
using Jackett.Common.Utils.Logging;
using NLog;
using NLog.Config;
using NLog.LayoutRenderers;
@@ -21,7 +22,7 @@ namespace Jackett.Common.Utils
var logConfig = new LoggingConfiguration();
var logFile = new FileTarget
var logFile = new CleanseFileTarget
{
Layout = "${longdate} ${level} ${message} ${onexception:inner=${newline}${newline}[v${assembly-version}] ${exception:format=ToString}${newline}${exception:format=Data}${newline}}",
FileName = Path.Combine(settings.DataFolder, logFileName),