Compare commits

..

61 Commits

Author SHA1 Message Date
Garfield69
fa2025cfd4 exoticaz: add cat descriptions 2022-04-07 17:50:56 +12:00
Garfield69
dfbd9753af dontorrent: new domain *.run -> *.cat 2022-04-06 18:52:39 +12:00
Alexander Regueiro
65a673f02d core: Use Mono.Posix package instead of Mono.Posix.NETStandard package (#13114) resolves #13080
Avoids problems documented in issue #13080.
2022-04-06 17:40:41 +12:00
Garfield69
842a844966 gimmepeers: new date layout resolves #13115 2022-04-06 14:49:28 +12:00
amoreno
d0a988b40e hdspain: replace tag "VERSIÓN MEJORADA" with "PROPER" (#13110) 2022-04-06 06:38:29 +12:00
Garfield69
222afe4672 r4e: bump version tag 2022-04-05 20:36:34 +12:00
Garfield69
86bb86c68e aither: bump version tag 2022-04-05 20:36:19 +12:00
Garfield69
ad1b84ee89 cartoonchaos: drop category=0
entries with cat=0 are marked for deletion so there is no point returning these in results.
2022-04-05 15:09:31 +12:00
Garfield69
2108c139aa torlook: expired CA 2022-04-05 15:08:09 +12:00
amoreno
dd74f55711 HDSpain: Rename tags MEGAPACK to REPACK and AUDIOEDITADO to PROPER (#13109) 2022-04-05 11:26:46 +12:00
Garfield69
a8b4da3eb7 torrentmasters: DL no longer on search results page
add new freeleech tag
2022-04-04 17:17:27 +12:00
Garfield69
6162de159d the-devils-lounge: removed. resolves #12552 2022-04-04 16:48:29 +12:00
ilike2burnthing
f2f8a2eb3d arabp2p: add new category 2022-04-03 03:34:29 +01:00
missingfile
3938b4ecb4 morethantv: update scraper to use torrents/browse endpoint (#13106) 2022-04-03 06:45:34 +12:00
Garfield69
3943302e0d rudub: drop brackets in titles. resolves #13102 2022-04-02 19:53:26 +13:00
Garfield69
34b5887e2f skipthecommercials: use category_id 2022-04-02 17:13:32 +13:00
Garfield69
b38627b7d4 torrentsir: bump http *52.com -> https: *.53.com #13101 2022-04-02 11:56:33 +13:00
Garfield69
7af3b141e2 torrentqq: bump domain 2022-04-01 14:12:46 +13:00
Garfield69
4e6a470c62 dontorrent: new domain *.wf -> 8.run 2022-03-31 20:38:06 +13:00
Garfield69
49e8d72a94 assorted torrent*: bump domains 2022-03-31 20:36:46 +13:00
Garfield69
cbffbe5738 reelflix: new MR 2022-03-31 10:05:24 +13:00
Garfield69
0568c226b1 blutopia: use category_id 2022-03-31 10:05:02 +13:00
Garfield69
e1cc732293 assorted unit3d: bump version tag 2022-03-31 10:04:41 +13:00
Garfield69
89dc15ad80 bit-titan: removed. resolves #4896 2022-03-30 17:51:11 +13:00
Garfield69
32128b5c61 magico: new domain, #13094 2022-03-30 06:28:45 +13:00
Garfield69
76644c380b sosulki: fix path 2022-03-29 17:30:26 +13:00
ilike2burnthing
9ec189367e assorted: change nocensor proxies domain *.sbs (#13093) 2022-03-29 02:47:54 +01:00
Garfield69
56c3a0c21b sexxi: removed. resolves #12478 2022-03-28 14:43:11 +13:00
Garfield69
d47f059031 rudub: new layout 2022-03-28 12:31:04 +13:00
ilike2burnthing
5f8c2de953 kinorun: cat can be missing, pt2
a3225049e7 (r69619331)
2022-03-27 04:21:25 +01:00
ilike2burnthing
4963cacc07 torrentsir: change domain *52.com 2022-03-27 04:02:03 +01:00
ilike2burnthing
c95fb103fe xiteme: fix cat id 2022-03-27 03:24:32 +01:00
ilike2burnthing
a3225049e7 kinorun: cat can be missing 2022-03-27 03:06:20 +01:00
ilike2burnthing
3b87b862da lostfilm: update ignored expired certs 2022-03-27 03:03:43 +01:00
Garfield69
655262e76b cinecalidad: new domain 2022-03-27 11:26:50 +13:00
ilike2burnthing
47b6e1594f hidden-palace: change to *.net and unit3d. resolves #13042 2022-03-26 16:36:34 +00:00
Garfield69
d31e084f4f zetorrents: new domain *.bz -> *.nl 2022-03-26 15:45:58 +13:00
Garfield69
a3dfdc6aaf hdmonkey: new date layout 2022-03-26 15:45:35 +13:00
Garfield69
ce11beb6e1 xthor: drop andmatch #13083 2022-03-26 07:32:43 +13:00
Bright-W
4773e3bc4c Abnormal: fix size 0 issue (#13084) 2022-03-25 17:25:52 +13:00
Garfield69
e47d2b1961 torrentmasters: add new cat 2022-03-25 15:28:21 +13:00
Garfield69
319e196341 zooqle: cat can be missing 2022-03-25 15:18:08 +13:00
Garfield69
30fee2b231 torrentqq: bump domain 2022-03-25 15:17:49 +13:00
Garfield69
80d3f4c1a0 xthor: fix path. resolves #13083 2022-03-25 11:47:24 +13:00
Garfield69
aae061e7a9 bitbazis: lint 2022-03-25 07:39:13 +13:00
Garfield69
48ba07f500 add animeitalia an Italian private site. resolves #13082 2022-03-25 07:38:45 +13:00
Garfield69
144957821f dontorrent: new domain *.re -> *.wf 2022-03-24 06:40:59 +13:00
Garfield69
8d468be93a toros: removed. resolves #6497 2022-03-23 18:29:52 +13:00
Gauthier
97e8196edd tasmanit.es: re-Add certificate hash (#13079) 2022-03-23 15:45:52 +13:00
Bright-W
b5f457e06f torrentgalaxy : add imdbid search (#13078) 2022-03-23 15:24:12 +13:00
Garfield69
8b5ef12567 xthor: more fixes for a78a0e94d 2022-03-23 12:59:05 +13:00
Garfield69
674ddc09b8 xthor: more lint a78a0e94d 2022-03-23 09:57:22 +13:00
Garfield69
51d5eee095 xthor: lint a78a0e94d 2022-03-23 09:51:40 +13:00
Garfield69
a78a0e94d5 xthor: C# -> yml
credit: 45a61ab9b1
2022-03-23 09:43:11 +13:00
Garfield69
a4f7c7a826 hdonly: fix cat 2022-03-23 09:17:03 +13:00
Garfield69
c2b2d51875 zamundanet: incldead
credit: 73c9c0cb1e
2022-03-23 09:08:22 +13:00
Garfield69
6f761d1bc4 hidden-palace: add new cat 2022-03-22 16:36:05 +13:00
ilike2burnthing
ed8be733fc Revert "the-devils-lounge: invalid CA resolves #12552"
No longer using Plesk cert
2022-03-21 16:43:16 +00:00
Garfield69
5584438a94 tasmanit: expired CA 2022-03-21 19:40:30 +13:00
Garfield69
b68ba1b338 legacyhd: -> reelflix cleanup 2022-03-21 19:23:48 +13:00
Garfield69
d06272a26a hdcity: expired CA 2022-03-21 19:00:04 +13:00
79 changed files with 629 additions and 1675 deletions

View File

@@ -127,7 +127,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* RuTor
* RuTracker.RU
* seleZen
* Sexxi
* Sexy-Pics
* ShizaProject
* ShowRSS
@@ -139,7 +138,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* Tokyo Tosho
* Torlock
* Torlook
* TOROS
* Torrent Downloads (TD)
* Torrent Oyun indir
* torrent.by
@@ -256,6 +254,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* AmigosShareClub
* anasch.cc
* AnimeBytes (AB)
* AnimeItalia
* AnimeTorrents (AnT) [![(invite needed)][inviteneeded]](#)
* AnimeWorld [![(invite needed)][inviteneeded]](#)
* Anthelion
@@ -275,7 +274,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* Bit-Bázis
* Bit-City Reloaded
* BIT-HDTV
* BiT-TiTAN
* BitBR
* Bitded
* Bithorlo (BHO)
@@ -535,7 +533,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* TellyTorrent
* teracod (Movie Zone)
* The-Crazy-Ones
* The-Devils-Lounge
* The Falling Angels (TFA) [![(invite needed)][inviteneeded]](#)
* The Geeks
* The Horror Charnel (THC)

View File

@@ -14,9 +14,8 @@ links:
- https://x1337x.eu/
- https://x1337x.se/
- https://1337x.unblockit.day/
- https://1337x.nocensor.biz/
- https://1337x.nocensor.sbs/
legacylinks:
- https://1337x.unblocked.rest/
- https://1337x.unblockit.dev/
- https://1337x.unblockit.ltd/
- https://1337x.unblockit.link/
@@ -36,6 +35,7 @@ legacylinks:
- https://1337x.unblockit.tv/
- https://1337x.unblockit.how/
- https://1337x.unblockit.cam/
- https://1337x.nocensor.biz/
caps:
categorymappings:

View File

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

View File

@@ -0,0 +1,155 @@
---
id: animeitalia
name: AnimeItalia
description: "AnimeItalia is an ITALIAN Private Torrent Tracker for ANIME"
language: it-IT
type: private
encoding: UTF-8
links:
- https://animeitalia.org/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Film ITA"}
- {id: 2, cat: TV, desc: "Serie TV"}
- {id: 3, cat: Audio, desc: "Musica"}
- {id: 4, cat: Console, desc: "Giochi"}
- {id: 5, cat: PC, desc: "Programmi"}
- {id: 6, cat: TV/Anime, desc: "Anime SUB-ITA"}
- {id: 7, cat: TV/Anime, desc: "Anime ITA"}
- {id: 8, cat: Movies/Other, desc: "Film Anime SUB-ITA"}
- {id: 9, cat: Movies/Other, desc: "Film Anime ITA"}
- {id: 10, cat: Books/Comics, desc: "Manga ITA"}
- {id: 11, cat: Books/Comics, desc: "Manga ENG"}
- {id: 12, cat: Audio, desc: "Anime Music"}
- {id: 13, cat: Other, desc: "Foto Anime"}
- {id: 14, cat: XXX/Other, desc: "Hentai SUB-ITA"}
- {id: 15, cat: XXX/Other, desc: "Hentai ITA"}
- {id: 16, cat: XXX/ImageSet, desc: "Foto Hentai"}
modes:
search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
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://animeitalia.org/\" target =_blank>AnimeItalia</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: created_at
options:
created_at: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: /api/torrents
method: get
inputs:
api_token: "{{ .Config.apikey }}"
error:
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
paths:
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
- path: "/api/torrents/filter"
response:
type: json
inputs:
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
page: 1
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
rows:
selector: data
attribute: attributes
count:
selector: meta.total
fields:
categorydesc:
selector: category
title:
selector: name
details:
selector: details_link
download:
selector: download_link
poster:
selector: poster
filters:
- name: replace
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
files:
selector: num_file
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: times_completed
date:
# 2021-10-18T00:34:50.000000Z"
selector: created_at
size:
selector: size
downloadvolumefactor:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
0%: 1 # not free
25%: 0.75
50%: 0.5
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
case:
0: 1 # normal
1: 2 # double
minimumratio:
text: 1.0
# json UNIT3D 6.0.4

View File

@@ -47,6 +47,7 @@ caps:
- {id: 52, cat: TV, desc: "مسرحيات (Plays)"}
- {id: 71, cat: TV, desc: "مسلسلات مدبلجه عربي (Arabic Dubbed Series)"}
- {id: 90, cat: TV, desc: "برامج ومسابقات (Shows)"}
- {id: 111, cat: TV, desc: "2022 رمضان (2022 Ramadan)"}
# المرئيات الاجنبية Foreign Movies
- {id: 92, cat: TV/Foreign, desc: "تعليمي (Educational)"}
- {id: 93, cat: TV/Documentary, desc: "وثائقي (Documentary)"}

View File

@@ -7,9 +7,10 @@ type: public
encoding: UTF-8
links:
- https://badasstorrents.com/
- https://badasstorrents.nocensor.biz/
- https://badasstorrents.nocensor.sbs/
legacylinks:
- https://badasstorrents.nocensor.work/
- https://badasstorrents.nocensor.biz/
caps:
categories:

View File

@@ -1,191 +0,0 @@
---
id: bit-titan
name: BiT-TiTAN
description: "BiT-TiTAN is a GERMAN Private Torrent Tracker for MOVIES / TV / GENERAL"
language: de-DE
type: private
encoding: UTF-8
links:
- https://bit-titan.net/
caps:
categorymappings:
- {id: 1010, cat: Movies/UHD, desc: "Movies 2160p"}
- {id: 1020, cat: Movies/HD, desc: "Movies 1080p"}
- {id: 1030, cat: Movies/HD, desc: "Movies 720p"}
- {id: 1040, cat: Movies/HD, desc: "Movies x264"}
- {id: 1050, cat: Movies/HD, desc: "Movies x265"}
- {id: 1060, cat: Movies/SD, desc: "Movies XviD"}
- {id: 1070, cat: Movies/3D, desc: "Movies 3D"}
- {id: 1080, cat: Movies/DVD, desc: "Movies DVD"}
- {id: 1090, cat: Movies/BluRay, desc: "Movies BluRay"}
- {id: 1100, cat: Movies/DVD, desc: "Movies HD2DVD"}
- {id: 1110, cat: Movies/Foreign, desc: "Movies International"}
- {id: 1120, cat: Movies/HD, desc: "Movies HD Packs"}
- {id: 1130, cat: Movies/SD, desc: "Movies SD Packs"}
- {id: 2010, cat: TV/UHD, desc: "TV 2160p"}
- {id: 2020, cat: TV/HD, desc: "TV 1080p"}
- {id: 2030, cat: TV/HD, desc: "TV 720p"}
- {id: 2040, cat: TV/HD, desc: "TV x264"}
- {id: 2050, cat: TV/HD, desc: "TV x265"}
- {id: 2060, cat: TV/SD, desc: "TV XviD"}
- {id: 2070, cat: TV/HD, desc: "TV HD Packs"}
- {id: 2080, cat: TV/SD, desc: "TV SD Packs"}
- {id: 2090, cat: TV/Foreign, desc: "TV International"}
- {id: 3010, cat: TV/Documentary, desc: "Docu 2160p"}
- {id: 3020, cat: TV/Documentary, desc: "Docu 1080p"}
- {id: 3030, cat: TV/Documentary, desc: "Docu 720p"}
- {id: 3040, cat: TV/Documentary, desc: "Docu x264"}
- {id: 3050, cat: TV/Documentary, desc: "Docu x265"}
- {id: 3060, cat: TV/Documentary, desc: "Docu XviD"}
- {id: 3070, cat: TV/Documentary, desc: "Docu HD Packs"}
- {id: 3080, cat: TV/Documentary, desc: "Docu SD Packs"}
- {id: 3090, cat: TV/Documentary, desc: "Docu International"}
- {id: 4010, cat: TV/Sport, desc: "Sport 2160p"}
- {id: 4020, cat: TV/Sport, desc: "Sport 1080p"}
- {id: 4030, cat: TV/Sport, desc: "Sport 720p"}
- {id: 4040, cat: TV/Sport, desc: "Sport SD Sport"}
- {id: 4050, cat: TV/Sport, desc: "Sport HD Packs"}
- {id: 4060, cat: TV/Sport, desc: "Sport SD Packs"}
- {id: 5010, cat: XXX, desc: "XXX 2160p"}
- {id: 5020, cat: XXX, desc: "XXX 1080p"}
- {id: 5030, cat: XXX, desc: "XXX 720p"}
- {id: 5040, cat: XXX, desc: "XXX x264"}
- {id: 5050, cat: XXX, desc: "XXX x265"}
- {id: 5060, cat: XXX, desc: "XXX XviD"}
- {id: 5070, cat: XXX, desc: "XXX HD Packs"}
- {id: 5080, cat: XXX, desc: "XXX SD Packs"}
- {id: 5090, cat: XXX, desc: "XXX Sonstiges"}
- {id: 6010, cat: PC/Games, desc: "Games Windows"}
- {id: 6020, cat: Console, desc: "Games Linux"}
- {id: 6030, cat: PC/Mac, desc: "Games MacOS"}
- {id: 6040, cat: PC/Mobile-Android, desc: "Games Android"}
- {id: 6050, cat: Console/XBox, desc: "Games Xbox"}
- {id: 6060, cat: Console/PSP, desc: "Games PlayStation"}
- {id: 6070, cat: Console/NDS, desc: "Games Nintendo"}
- {id: 6080, cat: Console, desc: "Games Sonstige"}
- {id: 7010, cat: PC/0day, desc: "Software Windows"}
- {id: 7020, cat: PC, desc: "Software Linux"}
- {id: 7030, cat: PC/Mac, desc: "Software MacOS"}
- {id: 7040, cat: PC/Mobile-Android, desc: "Software Android"}
- {id: 8010, cat: Audio/MP3, desc: "Music MP3-Album"}
- {id: 8020, cat: Audio/MP3, desc: "Music MP3-Charts"}
- {id: 8030, cat: Audio/MP3, desc: "Music MP3-Sampler"}
- {id: 8040, cat: Audio/MP3, desc: "Music MP3-Single"}
- {id: 8050, cat: Audio/Lossless, desc: "Music FLAC-Album"}
- {id: 8060, cat: Audio/Lossless, desc: "Music FLAC-Charts"}
- {id: 8070, cat: Audio/Lossless, desc: "Music FLAC-Sampler"}
- {id: 8080, cat: Audio/Lossless, desc: "Music FLAC-Single"}
- {id: 8090, cat: Audio/Video, desc: "Music Video"}
- {id: 9010, cat: Audio/Audiobook, desc: "Books A-Book"}
- {id: 9020, cat: Books/EBook, desc: "Books E-Book"}
- {id: 9030, cat: Books, desc: "Books E-Paper"}
- {id: 9040, cat: Books, desc: "Books E-Learning"}
- {id: 9060, cat: TV/Anime, desc: "Anime HD"}
- {id: 9070, cat: TV/Anime, desc: "Anime SD"}
- {id: 9080, cat: TV/Anime, desc: "Anime Pack"}
- {id: 9999, cat: Other, desc: "unsort"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
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 key <a href=\"https://bit-titan.net/api_cp.php\" target =_blank>here</a>."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort type requested from site
default: 1
options:
1: created
2: seeders
5: size
9: title
- name: type
type: select
label: Order direction requested from site
default: 1
options:
1: desc
2: asc
search:
paths:
- path: api.php
response:
type: json
inputs:
apiKey: "{{ .Config.apikey }}"
categories: "{{ if .Categories }}{{ join .Categories \",\" }}{{ else }}0{{ end }}"
search: "{{ .Keywords }}"
# searchIn: 0 all, 1 active, 2 dead, 3 highlights, 4 uploads, 5 BOT uploads, 6 onlyupload, 7 multiplier, 8 %download, 9 freeleech
searchIn: "{{ if .Config.freeleech }}9{{ else }}0{{ end }}"
# 1 25, 2 50, 3 75, 4 100
limit: 2
page: 1
# 1 JSON, 2 XML, 3 HTML
response: 1
# 0 NO, 1 YES
downloadLink: 1
# 1 = Sat, 28 Nov 2020 23:29:38 +0100 (DEFAULT VALUE) , 2 = 1606606178 (UNIX TIMESTAMP) , 3 = 28.11.2020 23:29.38 (German Timestamp) , 4 = 2020-11-28 23:29:38 (Default Datetime)
timeFormat: 2
# 1 bytes, 2 units
sizeFormat: 1
# 0 NO, 1 YES
categoryName: 0
orderBy: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
rows:
selector: results
count:
selector: filesFound
fields:
id:
selector: id
category:
selector: category
title:
selector: name
details:
text: "details.php?id={{ .Result.id }}"
download:
selector: download
poster:
selector: poster
seeders:
selector: seeds
leechers:
selector: leechers
grabs:
selector: snatchers
date:
# unix
selector: added
size:
selector: size
downloadvolumefactor:
selector: downloadFactor
uploadvolumefactor:
selector: uploadFactor
minimumratio:
text: 1.0
minimumseedtime:
# 2 day (as seconds = 2 x 24 x 60 x 60)
text: 172800
# json engine v.2.011.022

View File

@@ -130,7 +130,7 @@ search:
size:
selector: td:nth-child(6)
date:
#2022<br>03/15.
# 2022<br>03/15.
selector: td:nth-child(7)
filters:
- name: append

View File

@@ -7,6 +7,8 @@ type: public
encoding: UTF-8
links:
- https://bitsearch.to/
- https://bitsearch.nocensor.sbs/
legacylinks:
- https://bitsearch.nocensor.biz/
caps:

View File

@@ -88,8 +88,8 @@ search:
selector: meta.total
fields:
categorydesc:
selector: category
category:
selector: category_id
title:
selector: name
details:
@@ -142,4 +142,4 @@ search:
minimumseedtime:
# 7 day (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 6.0.0 beta
# json UNIT3D 6.0.6 beta

View File

@@ -100,7 +100,7 @@ search:
by: "{{ .Config.type }}"
rows:
selector: "table.lista tr td table.lista tr:has(a[href^=\"index.php?page=torrent-details\"]){{ if .Config.freeleech }}:has(img[src=\"gold/gold.gif\"]){{ else }}{{ end }}"
selector: "table.lista tr td table.lista tr:has(a[href^=\"index.php?page=torrent-details\"]):not(:has(a[href=\"index.php?page=torrents&category=0\"])){{ if .Config.freeleech }}:has(img[src=\"gold/gold.gif\"]){{ else }}{{ end }}"
fields:
category:

View File

@@ -133,4 +133,4 @@ search:
minimumseedtime:
# 2 day (as seconds = 2 x 24 x 60 x 60)
text: 172800
# json DBy v0.95
# json DBy v0.96

View File

@@ -13,9 +13,8 @@ links:
- https://demonoidevmsgasmojajlhikwetsr4pxzw6xkjt3dgdv6nr5yxvsamid.onion.ly/
- https://demonoid.unblockit.day/
- https://demonoid.torrentbay.to/
- https://demonoid.nocensor.biz/
- https://demonoid.nocensor.sbs/
legacylinks:
- https://demonoid.unblockit.top/
- https://demonoid.unblockit.lat/
- https://demonoid.unblockit.app/
- https://demonoid.unblockit.dev/
@@ -35,6 +34,7 @@ legacylinks:
- https://demonoid.unblockit.tv/
- https://demonoid.unblockit.how/
- https://demonoid.unblockit.cam/
- https://demonoid.nocensor.biz/
caps:
categorymappings:

View File

@@ -7,7 +7,7 @@ type: public
encoding: UTF-8
links:
- https://elitetorrent.la/
- https://elitetorrent.nocensor.biz/
- https://elitetorrent.nocensor.sbs/
legacylinks:
- https://www.elitetorrent.biz/
- https://www.elitetorrent.io/
@@ -28,6 +28,7 @@ legacylinks:
- https://elitetorrent.nocensor.work/
- https://elitetorrent.com/
- https://elitetorrent.app/
- https://elitetorrent.nocensor.biz/
caps:
categories:

View File

@@ -8,7 +8,7 @@ encoding: UTF-8
links:
- https://extratorrent.st/
- https://extratorrent.unblockit.day/
- https://extratorrent.nocensor.biz/
- https://extratorrent.nocensor.sbs/
legacylinks:
- https://extratorrent.nocensor.work/
- https://extratorrent.unblockit.kim/
@@ -16,6 +16,7 @@ legacylinks:
- https://extratorrent.unblockit.tv/
- https://extratorrent.unblockit.how/
- https://extratorrent.unblockit.cam/
- https://extratorrent.nocensor.biz/
caps:
categorymappings:

View File

@@ -13,13 +13,12 @@ links:
- https://eztv.yt/
- https://eztv.unblockninja.com/
- https://eztv.unblockit.day/
- https://eztv.nocensor.biz/
- https://eztv.nocensor.sbs/
legacylinks:
- https://eztv.ag/ # redirects to .re
- https://eztv.it/ # redirects to .re
- https://eztv.ch/ # redirects to .re
- https://eztv.io/
- https://eztv.unblockit.link/
- https://eztv.unblockit.buzz/
- https://eztv.unblocked.monster/
- https://eztv.unblockit.club/
@@ -35,6 +34,7 @@ legacylinks:
- https://eztv.unblockit.tv/
- https://eztv.unblockit.how/
- https://eztv.unblockit.cam/
- https://eztv.nocensor.biz/
caps:
categories:

View File

@@ -7,6 +7,8 @@ type: public
encoding: UTF-8
links:
- https://filelisting.com/
- https://filelisting.nocensor.sbs/
legacylinks:
- https://filelisting.nocensor.biz/
caps:

View File

@@ -7,13 +7,14 @@ type: public
encoding: UTF-8
links:
- https://www.gamestorrents.fm/
- https://gamestorrents.nocensor.biz/
- https://gamestorrents.nocensor.sbs/
legacylinks:
- https://www.gamestorrents.com/
- https://www.gamestorrents.tv/
- https://www.gamestorrents.nu/
- https://gamestorrents.nocensor.space/
- https://gamestorrents.nocensor.work/
- https://gamestorrents.nocensor.biz/
caps:
categorymappings:

View File

@@ -184,4 +184,4 @@ search:
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# json UNIT3D 6.0.4
# json UNIT3D 6.0.5

View File

@@ -8,16 +8,8 @@ encoding: UTF-8
followredirect: true
links:
- https://www.gktorrents.org/
- https://gktorrent.nocensor.biz/
- https://gktorrent.nocensor.sbs/
legacylinks:
- https://www.gktorrent.com/
- http://www.gktorrent.com/
- http://ww1.gktorrent.com/
- http://ww2.gktorrent.com/
- https://ww2.gktorrent.com/
- https://ww3.gktorrent.com/
- http://www.gktorrent.net/
- https://ww4.gktorrent.com/
- http://www.gktorrent.co/
- https://www.gktorrent.co/
- https://www.gktorrent.ws/
@@ -37,6 +29,7 @@ legacylinks:
- https://www.gktorrents.com/
- https://gktorrent.nocensor.work/
- https://www.gktorrents.net/
- https://gktorrent.nocensor.biz/
caps:
categorymappings:

View File

@@ -11,11 +11,10 @@ links:
- https://gtdb.cc/
- https://www.gtdb.to/
- https://glotorrents.unblockit.day/
- https://glotorrents.nocensor.biz/
- https://glotorrents.nocensor.sbs/
legacylinks:
- https://glodls.rocks/
- https://gtdb.to/
- https://glotorrents.unblockit.dev/
- https://glotorrents.unblockit.ltd/
- https://glotorrents.unblockit.link/
- https://glotorrents.unblockit.buzz/
@@ -33,6 +32,7 @@ legacylinks:
- https://glotorrents.unblockit.tv/
- https://glotorrents.unblockit.how/
- https://glotorrents.unblockit.cam/
- https://glotorrents.nocensor.biz/
caps:
categorymappings:

View File

@@ -5,6 +5,8 @@ description: "HDCity is a SPANISH site for HD content"
language: es-ES
type: private
encoding: ISO-8859-1
certificates:
- a10f2f7a863cd3fba9663185b0943cde01698451 # expired 25 October 2021
links:
- https://hdcity.li/

View File

@@ -132,13 +132,13 @@ search:
size:
selector: td:nth-child(4)
date:
# 19.Jul<br>2021<br>06:57
# 15.11.21<br>07:47
selector: td:nth-child(5)
filters:
- name: append
args: " +00:00" # auto adjusted by site account profile
- name: dateparse
args: "2.Jan200615:04 -07:00"
args: "2.01.0615:04 -07:00"
grabs:
selector: td:nth-child(7)
seeders:

View File

@@ -16,7 +16,7 @@ caps:
- {id: 5, cat: TV, desc: "Série"}
- {id: 6, cat: TV/Anime, desc: "Série anim"}
- {id: 7, cat: Movies/Other, desc: "Film d'animation"}
- {id: 7, cat: Audio/Video, desc: "Concert"}
- {id: 9, cat: Audio/Video, desc: "Concert"}
- {id: 11, cat: TV/Documentary, desc: "Documentaire"}
- {id: 13, cat: Movies/Other, desc: "Court-métrage"}
- {id: 14, cat: Movies/Other, desc: "Clip"}

View File

@@ -79,6 +79,12 @@ search:
args: "["
- name: append
args: "]"
- name: re_replace
args: ["(?i)(MEGAPACK)", "REPACK"]
- name: re_replace
args: ["(?i)(AUDIOEDITADO)", "PROPER"]
- name: re_replace
args: ["(?i)(VERSIÓN MEJORADA)", "PROPER"]
title_vose:
selector: td.titulo a[id]:contains("VOSE")
optional: true

View File

@@ -1,70 +1,33 @@
---
id: hidden-palace
name: Hidden-Palace
description: "Hidden-Palace is a Private torrent site for MOVIES / TV / GENERAL"
description: "Hidden-Palace is a Private torrent site for MOVIES / TV"
language: en-US
type: private
encoding: UTF-8
testlinktorrent: false
links:
- https://hidden-palace.net/
legacylinks:
- https://hidden-palace.xyz/
caps:
categorymappings:
- {id: 39, cat: Audio/Audiobook, desc: "Abook: Abook"}
- {id: 1, cat: PC/0day, desc: "Application: 0-Day"}
- {id: 2, cat: PC, desc: "Application: Pc"}
- {id: 3, cat: PC/Mac, desc: "Application: Mac"}
- {id: 38, cat: Books/EBook, desc: "Ebooks: Ebook"}
- {id: 32, cat: TV/Anime, desc: "Episodes: Anime"}
- {id: 33, cat: TV, desc: "Episodes: Classic"}
- {id: 34, cat: TV/Foreign, desc: "Episodes: Foreign"}
- {id: 35, cat: TV/HD, desc: "Episodes: TvHD"}
- {id: 36, cat: TV/SD, desc: "Episodes: TvSD"}
- {id: 37, cat: TV/Sport, desc: "Episodes: TVsports"}
- {id: 22, cat: PC/Games, desc: "Games: Pc"}
- {id: 23, cat: Console/PS4, desc: "Games: Ps4"}
- {id: 24, cat: Console/PS3, desc: "Games: Ps3"}
- {id: 25, cat: Console/PSP, desc: "Games: Ps1"}
- {id: 26, cat: Console/PSP, desc: "Games: Ps2"}
- {id: 27, cat: Console/PSP, desc: "Games: PsP"}
- {id: 28, cat: Console/XBox, desc: "Games: xbox"}
- {id: 29, cat: Console/Wii, desc: "Games: Wii"}
- {id: 30, cat: Console/NDS, desc: "Games: Nintendo"}
- {id: 31, cat: Console/Other, desc: "Games: Dreamcast"}
- {id: 4, cat: Movies/HD, desc: "Movies: 1080P"}
- {id: 5, cat: TV/Anime, desc: "Movies: Anime"}
- {id: 6, cat: Movies/DVD, desc: "Movies: DvdR"}
- {id: 7, cat: Movies/SD, desc: "Movies: Camer"}
- {id: 8, cat: Movies/3D, desc: "Movies: 3D"}
- {id: 9, cat: Movies/WEB-DL, desc: "Movies: WEBRip"}
- {id: 10, cat: XXX, desc: "Movies: XxX"}
- {id: 11, cat: Movies/UHD, desc: "Movies: Real-4K"}
- {id: 12, cat: Movies, desc: "Movies: Classic"}
- {id: 13, cat: Movies/Foreign, desc: "Movies: Foreign"}
- {id: 14, cat: Movies, desc: "Movies: Remux"}
- {id: 15, cat: Movies/HD, desc: "Movies: HD"}
- {id: 16, cat: Movies/SD, desc: "Movies: SD"}
- {id: 17, cat: Movies, desc: "Movies: Packs"}
- {id: 18, cat: Movies, desc: "Movies: Animation"}
- {id: 19, cat: Audio, desc: "Music: Audio"}
- {id: 20, cat: Audio, desc: "Music: Packs"}
- {id: 21, cat: Audio/Video, desc: "Music: Video"}
- {id: 1, cat: Movies, desc: "Movie"}
- {id: 2, cat: TV, desc: "TV"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
tv-search: [q, season, ep, imdbid, tvdbid]
movie-search: [q, imdbid, tmdbid]
settings:
- name: username
- name: apikey
type: text
label: Username
- name: password
type: password
label: Password
label: APIKey
- name: info_key
type: info
label: About your API key
default: "Find or Generate a new API Token by accessing your <a href=\"https://hidden-palace.net/\" target =_blank>Hidden-Palace</a> account <i>My Security</i> page and clicking on the <b>API Token</b> tab."
- name: freeleech
type: checkbox
label: Search freeleech only
@@ -72,9 +35,9 @@ settings:
- name: sort
type: select
label: Sort requested from site
default: id
default: created_at
options:
id: created
created_at: created
seeders: seeders
size: size
name: title
@@ -87,102 +50,95 @@ settings:
asc: asc
login:
path: account-login.php
method: post
path: /api/torrents
method: get
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
returnto: /
api_token: "{{ .Config.apikey }}"
error:
- selector: div.my_block:contains("Access Denied")
test:
path: index.php
selector: a[href="account-logout.php"]
download:
before:
path: thanks.php
method: post
inputs:
torrent: "{{ .DownloadUri.Query.id }}"
selectors:
- selector: a[href^="download.php?id="]
attribute: href
- selector: a[href*="/login"]
message:
text: "The API key was not accepted by {{ .Config.sitelink }}."
search:
# https://hidden-palace.xyz/torrents.php?search=&cat=0&incldead=1&freeleech=0&lang=0
paths:
- path: torrents.php
# https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
# https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
- path: "/api/torrents/filter"
response:
type: json
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
cat: 0
# 0 active, 1 incldead, 2 onlydead
incldead: 1
# 0 all, 1 notfree, 2 onlyfree
freeleech: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 all, 1 English, 2 etc...
lang: 0
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
# does not support imdbid searching or display imdbid links.
# if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
api_token: "{{ .Config.apikey }}"
name: "{{ .Keywords }}"
$raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free=1{{ else }}{{ end }}"
sortField: "{{ .Config.sort }}"
sortDirection: "{{ .Config.type }}"
perPage: 100
page: 1
keywordsfilters:
- name: re_replace
args: ["(\\w+)", " +$1"] # prepend + to each word
args: ["\\.", " "]
rows:
selector: tr.t-row
selector: data
attribute: attributes
count:
selector: meta.total
fields:
category:
selector: td a[href^="torrents.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
categorydesc:
selector: category
title:
selector: td a[href^="torrents-details.php?id="]
selector: name
details:
selector: td a[href^="torrents-details.php?id="]
attribute: href
selector: details_link
download:
selector: td a[href^="torrents-details.php?id="]
attribute: href
selector: download_link
poster:
selector: td a[href^="torrents-details.php?id="]
attribute: onMouseover
selector: poster
filters:
- name: regexp
args: "img\\ssrc=\\\\'(http.+?)\\\\'"
- name: replace
args: ["themes/default/images/nocover.jpg", ""]
date:
selector: td a[href^="torrents-details.php?id="]
attribute: onmouseover
filters:
- name: regexp
args: "Date\\sAdded\\s:(\\d{2}-\\d{2}-\\d{4})"
- name: append
args: " +00:00" # auto adjusted by site account profile
- name: dateparse
args: "02-01-2006 -07:00"
size:
selector: td:nth-child(5)
grabs:
selector: td:nth-child(8)
args: ["https://via.placeholder.com/90x135", ""]
imdbid:
selector: imdb_id
tmdbid:
selector: tmdb_id
tvdbid:
selector: tvdb_id
files:
selector: num_file
seeders:
selector: td:nth-child(6)
selector: seeders
leechers:
selector: td:nth-child(7)
selector: leechers
grabs:
selector: times_completed
date:
# 2021-10-18T00:34:50.000000Z"
selector: created_at
size:
selector: size
downloadvolumefactor:
text: 1
uploadvolumefactor:
# api returns 0%, 25%, 50%, 75%, 100%
selector: freeleech
case:
"font:contains(\"Doubleupload\")": 2
"*": 1
0%: 1 # not free
25%: 0.75
50%: 0.5
75%: 0.25
100%: 0 # freeleech
"*": 0 # catch errors
uploadvolumefactor:
# api returns 0=false, 1=true
selector: double_upload
case:
0: 1 # normal
1: 2 # double
minimumratio:
text: 1.0
minimumseedtime:
# 1 day (as seconds = 24 x 60 x 60)
# 1 day (as seconds = 1 x 24 x 60 x 60)
text: 86400
# FMEDition 3 (TorrentTrader)
# json UNIT3D 6.0.5

View File

@@ -11,7 +11,7 @@ links:
- https://ilcorsaronero.fun/
- https://ilcorsaronero.pro/
- https://ilcorsaronero.torrentbay.to/
- https://ilcorsaronero.nocensor.biz/
- https://ilcorsaronero.nocensor.sbs/
legacylinks:
- https://ilcorsaronero.live/
- https://ilcorsaronero.vip/
@@ -27,6 +27,7 @@ legacylinks:
- https://ilcorsaronero.unblockit.pw/
- https://ilcorsaronero.nocensor.space/
- https://ilcorsaronero.nocensor.work/
- https://ilcorsaronero.nocensor.biz/
caps:
categorymappings:

View File

@@ -116,6 +116,9 @@ search:
fields:
category:
text: 24
category|noappend:
optional: true
selector: a[href^="browse.php?cat="]
attribute: href
filters:

View File

@@ -11,7 +11,7 @@ links:
- https://www.limetorrents.pro/
- https://limetorrents.unblockit.day/
- https://limetorrents.unblockninja.com/
- https://limetorrents.nocensor.biz/
- https://limetorrents.nocensor.sbs/
legacylinks:
- https://www.limetorrents.io/
- https://www.limetorrents.cc/
@@ -22,7 +22,6 @@ legacylinks:
- https://www.limetorrents.co/
- https://limetor.com/
- https://www.limetor.pro/
- https://limetorrents.unblockit.li/
- https://limetorrents.unblockit.uno/
- https://limetorrents.unblockit.ch/
- https://limetorrents.nocensor.space/
@@ -33,6 +32,7 @@ legacylinks:
- https://limetorrents.unblockit.tv/
- https://limetorrents.unblockit.how/
- https://limetorrents.unblockit.cam/
- https://limetorrents.nocensor.biz/
caps:
categorymappings:

View File

@@ -6,13 +6,14 @@ language: el-GR
type: private
encoding: UTF-8
links:
- https://trelas.club/
- https://trellas.net/
legacylinks:
- https://magico.info/
- https://magico.one/
- https://magico.club/
- https://magico.fun/
- https://trellas.info/
- https://trelas.club/
caps:
categorymappings:

View File

@@ -7,9 +7,10 @@ type: public
encoding: UTF-8
links:
- https://www.newpct.net/
- https://newpct.nocensor.biz/
- https://newpct.nocensor.sbs/
legacylinks:
- https://www.newpct.me/
- https://newpct.nocensor.biz/
caps:
categories:

View File

@@ -9,7 +9,7 @@ followredirect: true
links:
- https://www.oxtorrent.re/
- https://oxtorrent.unblockit.day/
- https://oxtorrent.nocensor.biz/
- https://oxtorrent.nocensor.sbs/
legacylinks:
- https://www.oxtorrent.bz/
- https://www.oxtorrent.ws/
@@ -19,7 +19,6 @@ legacylinks:
- https://www.oxtorrent.co/
- https://www.oxtorrent.io/
- https://www.oxtorrent.cx/
- https://oxtorrent.unblockit.ws/
- https://www.oxtorrent.nz/
- https://oxtorrent.nocensor.work/
- https://oxtorrent.unblockit.kim/
@@ -31,6 +30,7 @@ legacylinks:
- https://oxtorrent.unblockit.how/
- https://www.oxtorrent.be/
- https://oxtorrent.unblockit.cam/
- https://oxtorrent.nocensor.biz/
caps:
categorymappings:

View File

@@ -169,4 +169,4 @@ search:
1: 2 # double
minimumratio:
text: 1.0
# json UNIT3D 6.0.0
# json UNIT3D 6.0.4

View File

@@ -138,8 +138,5 @@ search:
0: 1 # normal
1: 2 # double
minimumratio:
text: 0.4
minimumseedtime:
# 5 days (as seconds = 5 x 24 x 60 x 60)
text: 432000
# json UNIT3D 6.0.1
text: 1.0
# json UNIT3D 6.0.5

View File

@@ -66,6 +66,7 @@ login:
search:
paths:
# http://rudub.tv/browse.php?search=&incldead=1&sort=4&type=desc
- path: browse.php
inputs:
search: "{{.Keywords }}"
@@ -78,7 +79,7 @@ search:
args: ["[s|S](\\d+)[e|E][\\d]+", "/s$1"]
rows:
selector: table > tbody > tr:has(a[href^="details.php?id="])
selector: div.card__torlist__browse_2
fields:
category:
@@ -89,7 +90,9 @@ search:
- name: re_replace
args: ["[\\/]+", ""]
- name: replace
args: [" (Золото)", ""]
args: [" (Золото)", ""] # remove gold tag
- name: re_replace
args: ["[()]", " "] # remove the brackets around the English title and attributes
- name: replace
args: ["-Rip", "Rip"]
- name: replace
@@ -110,66 +113,37 @@ search:
args: ["(\\([А-Яа-яЁё\\W]+\\))|(^[А-Яа-яЁё\\W\\d]+\\/ )|([а-яА-ЯЁё \\-]+,+)|([а-яА-ЯЁё]+)", "{{ if .Config.striprussian }}{{ else }}$1$2$3$4{{ end }}"]
- name: append
args: " - rus"
- name: trim # clean up any leading and trailing spaces left over from above editing
details:
selector: a[href^="details.php?id="]
attribute: href
poster:
selector: img[src^="/posters/"]
attribute: src
download:
selector: a[href^="download.php?id="]
attribute: href
date:
selector: small
# 2022-03-28 01:28:07
selector: li[title="Дата"]
filters:
- name: replace
args: ["Загружена: ", ""]
- name: replace
args: [" в ", " "]
- name: replace
args: ["января", "January"]
- name: replace
args: ["февраля", "February"]
- name: replace
args: ["марта", "March"]
- name: replace
args: ["апреля", "April"]
- name: replace
args: ["мая", "May"]
- name: replace
args: ["июня", "June"]
- name: replace
args: ["июля", "July"]
- name: replace
args: ["августа", "August"]
- name: replace
args: ["сентября", "September"]
- name: replace
args: ["октября", "October"]
- name: replace
args: ["ноября", "November"]
- name: replace
args: ["декабря", "December"]
- name: append
args: " +03:00" # MSK
- name: dateparse
args: "2 January 2006 15:04:05 -07:00"
args: "2006-01-02 15:04:05 -07:00"
files:
selector: td:nth-last-child(5)
selector: li[title="Файлов"]
size:
selector: td:nth-last-child(3)
selector: li[title="Размер"]
seeders:
selector: td:nth-last-child(2)
selector: li[title="Активность"]
filters:
- name: split
args: ["|", 0]
- name: regexp
args: (\d+)\s+\d+
leechers:
selector: td:nth-last-child(2)
selector: li[title="Активность"]
filters:
- name: split
args: ["|", 1]
- name: regexp
args: \d+\s+(\d+)
grabs:
selector: td:nth-last-child(1)
selector: li[title="Завершено"]
downloadvolumefactor:
case:
"a[href^=\"details.php?id=\"]:contains(\"(Золото)\")": 0

View File

@@ -1,170 +0,0 @@
---
id: sexxi
name: Sexxi
description: "Sexxi is a RUSSIAN Public Torrent Tracker for 3X"
language: ru-RU
type: public
encoding: UTF-8
links:
- https://sexxi.club/
caps:
# don't forget to update the search fields category case block
categorymappings:
- {id: 1, cat: XXX, desc: "Любительское"}
- {id: 20, cat: XXX, desc: "Орал"}
- {id: 13, cat: XXX, desc: "Минет"}
- {id: 2, cat: XXX, desc: "Анал"}
- {id: 31, cat: XXX, desc: "Куннилингус"}
- {id: 32, cat: XXX, desc: "Большие сиськи"}
- {id: 27, cat: XXX, desc: "HD-видео"}
- {id: 10, cat: XXX, desc: "Хардкор"}
- {id: 35, cat: XXX, desc: "Втроем"}
- {id: 19, cat: XXX, desc: "Мастурбация"}
- {id: 34, cat: XXX, desc: "Русские"}
- {id: 7, cat: XXX, desc: "Молодые"}
- {id: 17, cat: XXX, desc: "Зрелые"}
- {id: 5, cat: XXX, desc: "Блондинки"}
- {id: 6, cat: XXX, desc: "Брюнетки"}
- {id: 3, cat: XXX, desc: "Азиатки"}
- {id: 15, cat: XXX, desc: "Лесбиянки"}
- {id: 12, cat: XXX, desc: "Межрасовый"}
- {id: 30, cat: XXX, desc: "Групповое"}
- {id: 36, cat: XXX, desc: "От первого лица"}
- {id: 22, cat: XXX, desc: "ПорноЗвезды"}
- {id: 11, cat: XXX, desc: "Кастинг"}
- {id: 33, cat: XXX, desc: "Ролевая игра"}
- {id: 14, cat: XXX, desc: "Фетиш"}
- {id: 25, cat: XXX, desc: "Униформа"}
- {id: 18, cat: XXX, desc: "Пьяные"}
- {id: 21, cat: XXX, desc: "Колготки"}
- {id: 28, cat: XXX, desc: "Волосатые"}
- {id: 23, cat: XXX, desc: "Рыжая"}
- {id: 24, cat: XXX, desc: "Ретро"}
- {id: 29, cat: XXX, desc: "Нудизм"}
- {id: 4, cat: XXX, desc: "БДСМ"}
- {id: 8, cat: XXX, desc: "Эротика"}
modes:
search: [q]
settings:
- name: sort
type: select
label: Sort requested from site
default: date
options:
date: created
title: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
download:
selectors:
- selector: a[href*="index.php?do=download&id="]
attribute: href
search:
headers:
Referer: ["{{ .Config.sitelink }}"]
paths:
- path: index.php
inputs:
$raw: "{{ range .Categories }}catlist[]={{.}}&{{end}}"
do: search
subaction: search
search_start: 0
full_search: 1
result_from: 1
all_word_seach: 0
showposts: 0
# 0 in article 1 in comments 2 in static pages 3 in article titles
titleonly: 3
story: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}"
sortby: "{{ .Config.sort }}"
resorder: "{{ .Config.type }}"
rows:
selector: div.short-item
fields:
category:
selector: p a:last-child
case:
a[href$="/amateur/"]: 1
a[href$="/pornstars/"]: 22
a[href$="/hdvideo/"]: 27
a[href$="/blonde/"]: 5
a[href$="/hairy/"]: 28
a[href$="/brunette/"]: 6
a[href$="/russians/"]: 34
a[href$="/asian/"]: 3
a[href$="/redhead/"]: 23
a[href$="/anal/"]: 2
a[href$="/oral/"]: 20
a[href$="/bdsm/"]: 4
a[href$="/erotic/"]: 8
a[href$="/hardcore/"]: 10
a[href$="/uniforms/"]: 25
a[href$="/masturbation/"]: 19
a[href$="/big_boobs/"]: 32
a[href$="/role-playing-game/"]: 33
a[href$="/interracial/"]: 12
a[href$="/lesbians/"]: 15
a[href$="/young/"]: 7
a[href$="/threesome/"]: 35
a[href$="/kasting/"]: 11
a[href$="/blowjob/"]: 13
a[href$="/retro/"]: 24
a[href$="/fetish/"]: 14
a[href$="/mature/"]: 17
a[href$="/drunk/"]: 18
a[href$="/nudism/"]: 29
a[href$="/pantyhose/"]: 21
a[href$="/group/"]: 30
a[href$="/cunnilingus/"]: 31
a[href$="/first_person/"]: 36
"*": 27
title:
selector: a.short-title
details:
selector: a.short-title
attribute: href
download:
selector: a.short-title
attribute: href
poster:
selector: img
attribute: src
size:
text: "512 MB"
seeders:
text: 1
leechers:
text: 1
cat_tags:
selector: p.argcat
description:
selector: ul.short-list
filters:
- name: append
args: "</br>{{ .Result.cat_tags }}"
date:
selector: div.short-meta-item:has(span.fa-calendar-alt)
filters:
# 28.10.2021
- name: append
args: " +03:00" # MSK
- name: dateparse
args: "02.01.2006 -07:00"
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# DataLife

View File

@@ -179,4 +179,4 @@ search:
minimumseedtime:
# 7 day (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 6.0.0
# json UNIT3D 6.0.4

View File

@@ -85,8 +85,8 @@ search:
selector: meta.total
fields:
categorydesc:
selector: category
category:
selector: category_id
title:
selector: name
details:
@@ -136,4 +136,4 @@ search:
minimumseedtime:
# 7 days (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 6.0.0
# json UNIT3D 6.0.6

View File

@@ -140,4 +140,4 @@ search:
minimumseedtime:
# 7 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# json UNIT3D 6.0.4
# json UNIT3D 6.0.5

View File

@@ -41,7 +41,7 @@ download:
search:
paths:
- path: "{{ if .Keywords }}?do=search&subaction=search&search_start=0&full_search=1&result_from=1&story={{ .Keywords }}&titleonly=3catlist[]=0&searchdate=0&resorder=desc{{ else }}lastnews/{{ end }}"
- path: "{{ if .Keywords }}?do=search&subaction=search&search_start=0&full_search=1&result_from=1&story={{ .Keywords }}&titleonly=3&catlist[]=0&searchdate=0&resorder=desc{{ else }}lastnews/{{ end }}"
rows:
selector: tr.fr_viewn_in:has(td.frs:contains("B"))

View File

@@ -9,6 +9,7 @@ links:
- https://tasmanit.es/
certificates:
- 23C30AC9655A8A7351A549538062B8C6B0D01A78 # expired 24 Jan 2022
- 4325e8f1f13f6074f2bed6a6186fe183791ab32d # expired 1 March 2022
caps:
categorymappings:

View File

@@ -151,4 +151,4 @@ search:
minimumseedtime:
# 7 day (as seconds = 7 x 24 x 60 x 60)
text: 604800
# json UNIT3D 6.0.0
# json UNIT3D 6.0.2

View File

@@ -1,196 +0,0 @@
---
id: the-devils-lounge
name: The-Devils-Lounge
description: "The-Devils-Lounge is a Private torrent site for MOVIES / TV / GENERAL"
language: en-US
type: private
encoding: UTF-8
testlinktorrent: false
certificates:
- be7852fc8f50130cb50984ef001dbe9c8788f377 # this is the Plesk self signed CA
links:
- https://the-devils-lounge.xyz/
caps:
categorymappings:
- {id: 39, cat: Audio/Audiobook, desc: "Abook: Abook"}
- {id: 1, cat: PC/0day, desc: "Application: 0-Day"}
- {id: 2, cat: PC, desc: "Application: Pc"}
- {id: 3, cat: PC/Mac, desc: "Application: Mac"}
- {id: 38, cat: Books/EBook, desc: "Ebooks: Ebook"}
- {id: 32, cat: TV/Anime, desc: "Episodes: Anime"}
- {id: 33, cat: TV, desc: "Episodes: Classic"}
- {id: 34, cat: TV/Foreign, desc: "Episodes: Foreign"}
- {id: 35, cat: TV/HD, desc: "Episodes: TvHD"}
- {id: 36, cat: TV/SD, desc: "Episodes: TvSD"}
- {id: 37, cat: TV/Sport, desc: "Episodes: TVsports"}
- {id: 22, cat: PC/Games, desc: "Games: Pc"}
- {id: 23, cat: Console/PS4, desc: "Games: Ps4"}
- {id: 24, cat: Console/PS3, desc: "Games: Ps3"}
- {id: 25, cat: Console/PSP, desc: "Games: Ps1"}
- {id: 26, cat: Console/PSP, desc: "Games: Ps2"}
- {id: 27, cat: Console/PSP, desc: "Games: PsP"}
- {id: 28, cat: Console/XBox, desc: "Games: xbox"}
- {id: 29, cat: Console/Wii, desc: "Games: Wii"}
- {id: 30, cat: Console/NDS, desc: "Games: Nintendo"}
- {id: 31, cat: Console/Other, desc: "Games: Dreamcast"}
- {id: 4, cat: Movies/HD, desc: "Movies: 1080P"}
- {id: 5, cat: TV/Anime, desc: "Movies: Anime"}
- {id: 6, cat: Movies/DVD, desc: "Movies: DvdR"}
- {id: 7, cat: Movies/SD, desc: "Movies: Camer"}
- {id: 8, cat: Movies/3D, desc: "Movies: 3D"}
- {id: 9, cat: Movies/WEB-DL, desc: "Movies: WEBRip"}
- {id: 10, cat: XXX, desc: "Movies: XxX"}
- {id: 11, cat: Movies/UHD, desc: "Movies: Real-4K"}
- {id: 12, cat: Movies, desc: "Movies: Classic"}
- {id: 13, cat: Movies/Foreign, desc: "Movies: Foreign"}
- {id: 14, cat: Movies, desc: "Movies: Remux"}
- {id: 15, cat: Movies/HD, desc: "Movies: HD"}
- {id: 16, cat: Movies/SD, desc: "Movies: SD"}
- {id: 17, cat: Movies, desc: "Movies: Packs"}
- {id: 18, cat: Movies, desc: "Movies: Animation"}
- {id: 19, cat: Audio, desc: "Music: Audio"}
- {id: 20, cat: Audio, desc: "Music: Packs"}
- {id: 21, cat: Audio/Video, desc: "Music: Video"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: id
options:
id: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: account-login.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
returnto: /
error:
- selector: div.myFrame:contains("Access Denied")
test:
path: /
selector: a[href="account-logout.php"]
download:
before:
path: thanks.php
method: post
inputs:
torrent: "{{ .DownloadUri.Query.id }}"
selectors:
- selector: a[href^="download.php?id="]
attribute: href
search:
# https://the-devils-lounge.xyz/torrents.php?search=&cat=0&incldead=0&freeleech=0&inclexternal=0&lang=0
paths:
- path: torrents.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
cat: 0
# 0 active, 1 incldead, 2 onlydead
incldead: 1
# 0 all, 1 notfree, 2 onlyfree
freeleech: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 both, 1 local, 2 external
inclexternal: 0
# 0 all, 1 English, 2 etc...
lang: 0
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
# does not support imdbid searching or display imdbid links.
keywordsfilters:
- name: re_replace
args: ["(\\w+)", " +$1"] # prepend + to each word
rows:
selector: tr.t-row
fields:
category:
selector: td a[href^="torrents.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
title:
selector: td a[href^="torrents-details.php?id="]
details:
selector: td a[href^="torrents-details.php?id="]
attribute: href
download:
selector: td a[href^="torrents-details.php?id="]
attribute: href
poster:
selector: td a[href^="torrents-details.php?id="]
attribute: onmouseover
filters:
- name: regexp
args: "img\\ssrc=\\\\'(http.+?)\\\\'"
date:
selector: td a[href^="torrents-details.php?id="]
attribute: onmouseover
filters:
- name: regexp
args: "Date\\sAdded\\s:(\\d{2}-\\d{2}-\\d{4})"
- name: dateparse
args: "02-01-2006"
size:
selector: td:nth-child(6)
seeders:
selector: td:nth-child(7) font:first-of-type
filters:
- name: replace
args: [",", ""]
leechers:
selector: td:nth-child(7) font:last-of-type
filters:
- name: replace
args: [",", ""]
description:
selector: td:last-of-type img
attribute: title
downloadvolumefactor:
case:
img[src$="/images/free.gif"]: 0
td:last-of-type img[title="Extern"]: 0 # all external torrents are free
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
minimumseedtime:
# 1 day (as seconds = 24 x 60 x 60)
text: 86400
# FMEDition 3 (TorrentTrader)

View File

@@ -7,7 +7,7 @@ type: public
encoding: UTF-8
links:
- https://www.tokyotosho.info/
- https://tokyotosho.nocensor.biz/
- https://tokyotosho.nocensor.sbs/
legacylinks:
- https://tokyotosho.black-mirror.xyz/
- https://tokyotosho.unblocked.casa/
@@ -21,6 +21,7 @@ legacylinks:
- https://tokyotosho.unblocked.monster/
- https://tokyotosho.nocensor.space/
- https://tokyotosho.nocensor.work/
- https://tokyotosho.nocensor.biz/
settings:
- name: cat

View File

@@ -11,10 +11,9 @@ links:
- https://www.torlock2.com/
- https://www.torlock.icu/
- https://torlock.unblockit.day/
- https://torlock.nocensor.biz/
- https://torlock.nocensor.sbs/
legacylinks:
- https://torlock.com/
- https://torlock.unblockit.lat/
- https://torlock.unblockit.app/
- https://torlock.unblockit.dev/
- https://torlock.unblockit.ltd/
@@ -33,6 +32,7 @@ legacylinks:
- https://torlock.unblockit.tv/
- https://torlock.unblockit.how/
- https://torlock.unblockit.cam/
- https://torlock.nocensor.biz/
caps:
# dont forget to update the search fields category case block

View File

@@ -5,8 +5,12 @@ description: "Torlook is a Russian Public torrent meta-search engine combining r
language: en-US
type: public
encoding: UTF-8
certificates:
- 273066e4b30229dfb0bb99474269f58b6fa8971a # expired 5 April 2022
links:
- https://gw1.torlook.info/
- https://torlook.nocensor.sbs/
legacylinks:
- https://torlook.nocensor.biz/
caps:

View File

@@ -1,118 +0,0 @@
---
id: toros
name: TOROS
description: "TOROS is a Public torrent index"
language: en-US
type: public
encoding: UTF-8
links:
- https://www.toros.co/
- https://toros.nocensor.biz/
legacylinks:
- https://toros.nocensor.space/
- https://toros.nocensor.work/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: Movies}
- {id: 2, cat: Audio, desc: Music}
- {id: 3, cat: TV, desc: Television}
- {id: 4, cat: PC/Games, desc: Games}
- {id: 5, cat: PC, desc: Software}
- {id: 6, cat: TV/Anime, desc: Anime}
- {id: 7, cat: XXX, desc: Adult}
- {id: 8, cat: Books, desc: Ebooks}
- {id: 9, cat: TV/Anime, desc: Animation}
- {id: 10, cat: Other, desc: Other}
- {id: 0, cat: Other, desc: TBC}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
settings:
- name: sort
type: select
label: Sort requested from site
default: added
options:
added: created
seeds: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
download:
selectors:
- selector: a[href^="magnet:?xt="]
attribute: href
search:
paths:
# https://www.toros.co/all/torrents/capital-hill.html?v=&smi=&sma=&i=100&sort=added&o=desc
- path: "{{ if .Keywords }}all/torrents/{{ .Keywords }}.html?v=&smi=&sma=&i=100&sort={{ .Config.sort }}&o={{ .Config.type }}{{ else }}top100.html{{ end }}"
keywordsfilters:
- name: re_replace
args: ["[\\s]+", "-"]
- name: tolower
rows:
selector: table.table-responsive tr:has(a[href^="/torrent/"])
filters:
- name: andmatch
fields:
category:
selector: td:nth-child(1)
attribute: class
filters:
- name: regexp
args: (\d+)
title:
selector: a[href^="/torrent/"]
details:
selector: a[href^="/torrent/"]
attribute: href
download:
selector: a[href^="/torrent/"]
attribute: href
date_day:
selector: td:nth-child(2):contains("day")
optional: true
filters:
- name: fuzzytime
date_ago:
selector: td:nth-child(2):contains("ago")
optional: true
filters:
- name: timeago
date_year:
selector: td:nth-child(2):not(:contains("ago")):not(:contains("day"))
optional: true
filters:
- name: append
args: " +01:00" # CET
- name: dateparse
args: "2 Jan -07:00"
date:
text: "{{ if or .Result.date_year .Result.date_ago .Result.date_day }}{{ or .Result.date_year .Result.date_ago .Result.date_day }}{{ else }}now{{ end }}"
size:
selector: td:nth-child(3)
seeders:
selector: td:nth-child(4)
leechers:
selector: td:nth-child(5)
downloadvolumefactor:
text: 0
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -8,41 +8,12 @@ encoding: UTF-8
followredirect: true
links:
- https://www.torrent9.nl/
- https://torrent9.nocensor.biz/
- https://torrent9.nocensor.sbs/
legacylinks:
- https://www.torrents9.pw/
- https://www.torrent9.ch/
- https://www1.torrent9.ch/
- https://www2.torrent9.ch/
- https://wwv.torrent9.vg/
- https://www.torrent9.vc/
- https://wvw.torrent9.vc/
- https://www.torrent9.lol/
- https://wvw.torrent9.lol/
- https://wwv.torrent9.lol/
- https://ww1.torrent9.lol/
- https://ww5.torrent9.lol/
- https://ww6.torrent9.lol/
- https://www.torrent9.tw/
- https://ww7.torrent9.lol/
- https://www.torrent9.dev/
- https://www.torrent9.sx/
- https://ww1.torrent9.sx/
- https://www.t9.re/
- https://www.t9.vc/
- https://www.torrent9.ai/
- https://torrent9.black-mirror.xyz/
- https://torrent9.unblocked.casa/
- https://torrent9.proxyportal.fun/
- https://torrent9.uk-unblock.xyz/
- https://torrent9.ind-unblock.xyz/
- https://www.torrent9.pl/
- https://www.torrent9.ac/
- https://torrent9.unblocked.bar/
- https://torrent9.proxyportal.pw/
- https://torrent9.uk-unblock.pro/
- https://torrent9.unblockninja.com/ # this is a proxy for torrent9
- https://torrent9.unblocked.rest/
- https://www.torrent9.so/
- https://wvw.torrent9.sh/
- https://www.torrent9.sh/
@@ -58,6 +29,7 @@ legacylinks:
- https://torrent9.nocensor.work/
- https://www.torrent9.pw/
- https://www.torrent9.si/
- https://torrent9.nocensor.biz/
caps:
categorymappings:

View File

@@ -9,9 +9,8 @@ followredirect: true
links:
- https://www.torrentdownload.info/
- https://torrentdownload.unblockit.day/
- https://torrentdownload.nocensor.biz/
- https://torrentdownload.nocensor.sbs/
legacylinks:
- https://torrentdownload.unblockit.app/
- https://torrentdownload.unblocked.rest/
- https://torrentdownload.unblockit.dev/
- https://torrentdownload.unblockit.ltd/
@@ -31,6 +30,7 @@ legacylinks:
- https://torrentdownload.unblockit.tv/
- https://torrentdownload.unblockit.how/
- https://torrentdownload.unblockit.cam/
- https://torrentdownload.nocensor.biz/
caps:
categorymappings:

View File

@@ -10,9 +10,8 @@ links:
- https://www.torrentdownloads.info/
- https://www.torrentdownloads.pro/
- https://torrentdownloads.unblockit.day/
- https://torrentdownloads.nocensor.biz/
- https://torrentdownloads.nocensor.sbs/
legacylinks:
- https://torrentdownloads.unblocked.rest/
- https://torrentdownloads.unblockit.dev/
- https://torrentdownloads.unblockit.ltd/
- https://torrentdownloads.unblockit.link/
@@ -32,6 +31,7 @@ legacylinks:
- https://torrentdownloads.unblockit.tv/
- https://torrentdownloads.unblockit.how/
- https://torrentdownloads.unblockit.cam/
- https://torrentdownloads.nocensor.biz/
caps:
categorymappings:

View File

@@ -10,9 +10,8 @@ links:
- https://www.torrentfunk.com/
- https://www.torrentfunk2.com/
- https://torrentfunk.unblockit.day/
- https://torrentfunk.nocensor.biz/
- https://torrentfunk.nocensor.sbs/
legacylinks:
- https://torrentfunk.unblockit.top/
- https://torrentfunk.unblockit.lat/
- https://torrentfunk.unblockit.app/
- https://torrentfunk.unblockit.dev/
@@ -32,6 +31,7 @@ legacylinks:
- https://torrentfunk.unblockit.tv/
- https://torrentfunk.unblockit.how/
- https://torrentfunk.unblockit.cam/
- https://torrentfunk.nocensor.biz/
caps:
categorymappings:

View File

@@ -12,11 +12,10 @@ links:
- https://torrentgalaxy.su/
- https://torrentgalaxy.unblockninja.com/
- https://torrentgalaxy.unblockit.day/
- https://torrentgalaxy.nocensor.biz/
- https://torrentgalaxy.nocensor.sbs/
legacylinks:
- https://torrentgalaxy.org/ # redirects to *.to
- https://torrentgalaxy.pw/ # proxy list only
- https://torrentgalaxy.unblockit.dev/
- https://torrentgalaxy.unblockit.ltd/
- https://torrentgalaxy.unblockit.link/
- https://torrentgalaxy.unblockit.buzz/
@@ -34,6 +33,7 @@ legacylinks:
- https://torrentgalaxy.unblockit.tv/
- https://torrentgalaxy.unblockit.how/
- https://torrentgalaxy.unblockit.cam/
- https://torrentgalaxy.nocensor.biz/
caps:
categorymappings:
@@ -75,8 +75,8 @@ caps:
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]
book-search: [q]
@@ -119,7 +119,7 @@ search:
path: torrents.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
lang: 0
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
@@ -157,6 +157,12 @@ search:
magnet:
selector: div a[href^="magnet:?"]
attribute: href
imdbid:
selector: a[href^="/torrents.php?search=tt"]
attribute: href
filters:
- name: regexp
args: tt(\d+)
size:
selector: div span[style^="border-radius"]
seeders:

View File

@@ -13,6 +13,7 @@ caps:
- {id: 92, cat: Books/EBook, desc: "e-Book (ENG)"}
- {id: 78, cat: Books/EBook, desc: "e-Book (HUN)"}
- {id: 80, cat: Other, desc: "Egyéb"}
- {id: 111, cat: Movies/SD, desc: "Film - Cam (HUN)"}
- {id: 85, cat: Movies/DVD, desc: "Film - DVD/9 (ENG)"}
- {id: 66, cat: Movies/DVD, desc: "Film - DVD/9 (HUN)"}
- {id: 84, cat: Movies/HD, desc: "Film - HD (ENG)"}
@@ -32,8 +33,8 @@ caps:
- {id: 97, cat: TV/HD, desc: "Sorozat - HD (HUN)"}
- {id: 86, cat: TV/SD, desc: "Sorozat - XviD (ENG)"}
- {id: 90, cat: TV/SD, desc: "Sorozat - XviD (HUN)"}
- {id: 98, cat: XXX/x264, desc: "XXX - HD"}
- {id: 99, cat: XXX/DVD, desc: "XXX - DVD"}
- {id: 98, cat: XXX/x264, desc: "XXX - HD"}
- {id: 76, cat: XXX/ImageSet, desc: "XXX - Képek"}
- {id: 69, cat: XXX/XviD, desc: "XXX - XviD"}
- {id: 70, cat: Audio, desc: "Zene - HUN"}
@@ -90,6 +91,11 @@ login:
path: index.php
selector: a[href^="logout.php"]
download:
selectors:
- selector: a[href^="download.php?id="]
attribute: href
search:
paths:
- path: letoltes.php
@@ -118,7 +124,7 @@ search:
selector: a[href^="torrent_adatok.php?id="]
attribute: href
download:
selector: a[href^="download.php?id="]
selector: a[href^="torrent_adatok.php?id="]
attribute: href
description:
selector: td:nth-child(3) font[color="gray"]
@@ -149,6 +155,7 @@ search:
downloadvolumefactor:
case:
"img[src=\"pic/orokos.gif\"]": 0
"img[src=\"images/ellenorzes/ingyenes.gif\"]": 0
"*": 1
uploadvolumefactor:
case:

View File

@@ -7,10 +7,8 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentqq135.com/
- https://torrentqq137.com/
legacylinks:
- https://torrentqq119.com/
- https://torrentqq120.com/
- https://torrentqq121.com/
- https://torrentqq122.com/
- https://torrentqq123.com/
@@ -24,6 +22,8 @@ legacylinks:
- https://torrentqq132.com/
- https://torrentqq133.com/
- https://torrentqq134.com/
- https://torrentqq135.com/
- https://torrentqq136.com/
caps:
categorymappings:

View File

@@ -7,9 +7,8 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentsir51.com/
- https://torrentsir53.com/
legacylinks:
- https://torrentsir36.com/
- https://torrentsir37.com/
- https://torrentsir38.com/
- https://torrentsir39.com/
@@ -24,6 +23,9 @@ legacylinks:
- https://torrentsir48.com/
- https://torrentsir49.com/
- https://torrentsir50.com/
- https://torrentsir51.com/
- https://torrentsir52.com/
- http://torrentsir52.com/
caps:
categorymappings:

View File

@@ -7,7 +7,7 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentview53.com/
- https://torrentview57.com/
legacylinks:
- https://torrentview.net/
- https://torrentview.co/
@@ -25,6 +25,7 @@ legacylinks:
- https://torrentview49.com/
- https://torrentview50.com/
- https://torrentview52.com/
- https://torrentview53.com/
caps:
categorymappings:

View File

@@ -7,9 +7,8 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentwiz40.com/
- https://torrentwiz41.com/
legacylinks:
- https://torrentwiz24.me/
- https://torrentwiz25.me/
- https://torrentwiz26.me/
- https://torrentwiz27.me/
@@ -25,6 +24,7 @@ legacylinks:
- https://torrentwiz37.com/
- https://torrentwiz38.com/
- https://torrentwiz39.com/
- https://torrentwiz40.com/
caps:
categorymappings:

View File

@@ -27,7 +27,7 @@ caps:
- {id: 6300, cat: TV/Anime, desc: "Animations - Hentai"}
- {id: 6900, cat: TV/Anime, desc: "Animations - Other"}
- {id: 6120, cat: TV/Anime, desc: "Animations - Shoujo Ai"}
- {id: 6330, cat: TV/Anime, desc: "Animations - Shounen Ai"}
- {id: 6130, cat: TV/Anime, desc: "Animations - Shounen Ai"}
- {id: 6320, cat: TV/Anime, desc: "Animations - Yaoi"}
- {id: 6310, cat: TV/Anime, desc: "Animations - Yuri"}
- {id: 14000, cat: PC, desc: "Applications - All"}

View File

@@ -0,0 +1,192 @@
---
id: xthor-api
name: Xthor (API)
description: "General French Private Tracker"
language: fr-FR
type: private
encoding: windows-1252
requestDelay: 2.5
links:
- https://xthor.tk/
legacylinks:
- https://xthor.bz/
- https://xthor.to/
caps:
categorymappings:
# Movies / Films
- {id: 118, cat: Movies/BluRay, desc: "Films/2160p/Bluray"}
- {id: 119, cat: Movies/UHD, desc: "Films/2160p/Remux"}
- {id: 107, cat: Movies/UHD, desc: "Films/2160p/x265"}
- {id: 1, cat: Movies/BluRay, desc: "Films/1080p/BluRay"}
- {id: 2, cat: Movies/HD, desc: "Films/1080p/Remux"}
- {id: 100, cat: Movies/HD, desc: "Films/1080p/x265"}
- {id: 4, cat: Movies/HD, desc: "Films/1080p/x264"}
- {id: 5, cat: Movies/HD, desc: "Films/720p/x264"}
- {id: 7, cat: Movies/SD, desc: "Films/SD/x264"}
- {id: 3, cat: Movies/3D, desc: "Films/3D"}
- {id: 6, cat: Movies/SD, desc: "Films/XviD"}
- {id: 8, cat: Movies/DVD, desc: "Films/DVD"}
- {id: 122, cat: Movies/HD, desc: "Films/HDTV"}
- {id: 94, cat: Movies/WEB-DL, desc: "Films/WEBDL"}
- {id: 95, cat: Movies/WEB-DL, desc: "Films/WEBRiP"}
- {id: 12, cat: TV/Documentary, desc: "Films/Documentaire"}
- {id: 31, cat: Movies/Other, desc: "Films/Animation"}
- {id: 33, cat: Movies/Other, desc: "Films/Spectacle"}
- {id: 125, cat: TV/Sport, desc: "Films/Sports"}
- {id: 20, cat: Audio/Video, desc: "Films/Concerts, Clips"}
- {id: 9, cat: Movies/Other, desc: "Films/VOSTFR"}
# TV Series / Series TV
- {id: 104, cat: TV/Other, desc: "Series/BluRay"}
- {id: 13, cat: TV, desc: "Series/Pack VF"}
- {id: 15, cat: TV/HD, desc: "Series/HD VF"}
- {id: 14, cat: TV/SD, desc: "Series/SD VF"}
- {id: 98, cat: TV/Other, desc: "Series/Pack VOSTFR"}
- {id: 17, cat: TV/HD, desc: "Series/HD VOSTFR"}
- {id: 16, cat: TV/SD, desc: "Series/SD VOSTFR"}
- {id: 101, cat: TV/Anime, desc: "Series/Packs Anime"}
- {id: 32, cat: TV/Anime, desc: "Series/Animes"}
- {id: 110, cat: TV/Anime, desc: "Series/Anime VOSTFR"}
- {id: 123, cat: TV/Other, desc: "Series/Animation"}
- {id: 109, cat: TV/Documentary, desc: "Series/DOC"}
- {id: 34, cat: TV/Sport, desc: "Series/Sport"}
- {id: 30, cat: TV/Other, desc: "Series/Emission TV"}
# Porn / XxX
- {id: 36, cat: XXX, desc: "MISC/XxX/Films"}
- {id: 105, cat: XXX, desc: "MISC/XxX/Séries"}
- {id: 114, cat: XXX, desc: "MISC/XxX/Lesbiennes"}
- {id: 115, cat: XXX, desc: "MISC/XxX/Gays"}
- {id: 113, cat: XXX, desc: "MISC/XxX/Hentai"}
- {id: 120, cat: XXX, desc: "MISC/XxX/Magazines"}
# Books / Livres
- {id: 24, cat: Books/EBook, desc: "Livres/Romans"}
- {id: 124, cat: Audio/Audiobook, desc: "Livres/Audio Books"}
- {id: 96, cat: Books/Mags, desc: "Livres/Magazines"}
- {id: 99, cat: Books/Other, desc: "Livres/Bandes dessinées"}
- {id: 116, cat: Books/EBook, desc: "Livres/Romans Jeunesse"}
- {id: 102, cat: Books/Comics, desc: "Livres/Comics"}
- {id: 103, cat: Books/Other, desc: "Livres/Mangas"}
# Softwares / Logiciels
- {id: 25, cat: PC/Games, desc: "Logiciels/Jeux PC"}
- {id: 27, cat: Console/PS3, desc: "Logiciels/Playstation"}
- {id: 111, cat: PC/Mac, desc: "Logiciels/Jeux MAC"}
- {id: 26, cat: Console/XBox 360, desc: "Logiciels/XboX"}
- {id: 112, cat: PC, desc: "Logiciels/Jeux Linux"}
- {id: 28, cat: Console/Wii, desc: "Logiciels/Nintendo"}
- {id: 29, cat: Console/NDS, desc: "Logiciels/NDS"}
- {id: 117, cat: PC, desc: "Logiciels/ROM"}
- {id: 21, cat: PC, desc: "Logiciels/Applis PC"}
- {id: 22, cat: PC/Mac, desc: "Logiciels/Applis Mac"}
- {id: 23, cat: PC/Mobile-Android, desc: "Logiciels/Smartphone"}
modes:
search: [q]
movie-search: [q, tmdbid]
tv-search: [q, season, ep]
book-search: [q]
settings:
- name: passkey
type: text
label: Passkey
- name: info_key
type: info
label: About your Passkey
default: "Find your Passkey on <a href=\"https://xthor.tk/api_doc.php\" target =_blank>Xthor > API page</a>."
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: multilanguage
type: text
label: Replace MULTI by
default: MULTI
- name: subfrench
type: text
label: Replace "VOSTFR/SUBFRENCH" by
default: ""
search:
paths:
# https://api.xthor.tk/?passkey=<redacted>&search=&category=&freeleech=&tmdbid=&size=&accent=&price=&page=
- path: "https://api.xthor.tk/"
inputs:
passkey: "{{ .Config.passkey }}"
category: "{{ if .Categories }}{{ range .Categories }}{{.}}+{{end}}{{ else }}{{ end }}"
search: "{{ if .Query.TMDBID }}{{ else }}{{ .Keywords }}{{ end }}"
tmdbid: "{{ .Query.TMDBID }}"
freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
response:
type: json
rows:
selector: torrents
# jackett yml json does not currently support andmatch #13083
# filters:
# - name: andmatch
fields:
id:
selector: id
category:
selector: category
title_original:
selector: name
title_multi:
text: "{{ .Result.title_original }}"
filters:
- name: re_replace
args: ["(?i)[\\.\\s\\[\\-]multi[\\.\\s\\]\\-]", ".{{ .Config.multilanguage }}."]
title_multi_out:
text: "{{ if .Config.multilanguage }}{{ .Result.title_multi }}{{ else }}{{ .Result.title_original }}{{ end }}"
title_vostfr:
text: "{{ .Result.title_multi_out }}"
filters:
- name: re_replace
args: ["(?i)[\\.\\s\\[\\-]vostfr[\\.\\s\\]\\-]", ".{{ .Config.subfrench }}."]
- name: re_replace
args: ["(?i)[\\.\\s\\[\\-]subfrench[\\.\\s\\]\\-]", ".{{ .Config.subfrench }}."]
title:
text: "{{ if .Config.subfrench }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_multi_out }}{{ end }}"
details:
text: "{{ .Config.sitelink }}details.php?id={{ .Result.id }}"
download:
selector: download_link
poster:
selector: descr
filters:
- name: regexp
args: ["({{ .Config.sitelink }}info_images\\/allocine\\/covers\\/film\\/small_\\d+?\\.jpg)"]
tmdbid:
selector: tmdb_id
files:
selector: numfiles
date:
selector: added
size:
selector: size
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: times_completed
downloadvolumefactor:
# api returns 0=false, 1=true
selector: freeleech
case:
0: 1 # not free
1: 0 # freeleech
uploadvolumefactor:
text: 1
minimumseedtime:
# 24 hours (as seconds = 1 x 24 x 60 x 60)
text: 86400
minimumratio:
# minimum ratio per torrent is 0.8
text: 0.8
# json api

View File

@@ -8,11 +8,12 @@ encoding: UTF-8
links:
- https://yourbittorrent.com/
- https://yourbittorrent2.com/
- https://yourbittorrent.nocensor.biz/
- https://yourbittorrent.nocensor.sbs/
legacylinks:
- https://yourbittorrent.host/
- https://yourbittorrent.nocensor.space/
- https://yourbittorrent.nocensor.work/
- https://yourbittorrent.nocensor.biz/
caps:
categorymappings:

View File

@@ -11,12 +11,11 @@ links:
- https://yts.mx/
- https://yts.unblockit.day/
- https://yts.unblockninja.com/
- https://yts.nocensor.biz/
- https://yts.nocensor.sbs/
legacylinks:
- https://yts.ag/
- https://yts.am/
- https://yts.lt/
- https://yts.root.yt/
- https://yts.unblockit.ltd/
- https://yts.unblockit.buzz/
- https://yts.unblockit.club/
@@ -33,6 +32,7 @@ legacylinks:
- https://yts.unblockit.tv/
- https://yts.unblockit.how/
- https://yts.unblockit.cam/
- https://yts.nocensor.biz/
caps:
categorymappings:

View File

@@ -120,7 +120,8 @@ search:
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
incldead: 1
# blank = incldead
incldead: ""
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"

View File

@@ -6,7 +6,7 @@ language: fr-FR
type: public
encoding: UTF-8
links:
- https://www.zetorrents.bz/
- https://www.zetorrents.nl/
legacylinks:
- https://www.zetorrents.co/
- https://www.zetorrents.io/
@@ -18,6 +18,7 @@ legacylinks:
- https://wvw.zetorrents.org/
- https://www.zetorrents.cc/
- https://www.zetorrents.tv/
- https://www.zetorrents.bz/
caps:
categories:

View File

@@ -10,9 +10,8 @@ links:
- https://zooqle.com/
- https://zooqle.unblockninja.com/
- https://zooqle.unblockit.day/
- https://zooqle.nocensor.biz/
- https://zooqle.nocensor.sbs/
legacylinks:
- https://zooqle.unblockit.app/
- https://zooqle.unblocked.rest/
- https://zooqle.unblockit.dev/
- https://zooqle.unblockit.ltd/
@@ -32,6 +31,7 @@ legacylinks:
- https://zooqle.unblockit.tv/
- https://zooqle.unblockit.how/
- https://zooqle.unblockit.cam/
- https://zooqle.nocensor.biz/
caps:
categorymappings:
@@ -83,6 +83,10 @@ search:
title:
selector: td:nth-child(2) a
category:
text: other
category|noappend:
# cat may be missing
optional: true
selector: td:nth-child(2) > i
attribute: class
filters:

View File

@@ -252,7 +252,7 @@ namespace Jackett.Common.Indexers
var completed = torrent.QuerySelector("td:nth-of-type(3)").TextContent; // Completed
var seeders = torrent.QuerySelector("td.text-green").TextContent; // Seeders
var leechers = torrent.QuerySelector("td.text-red").TextContent; // Leechers
var size = torrent.QuerySelector("td:nth-of-type(5)").TextContent; // Size
var size = torrent.QuerySelector("td:nth-of-type(6)").TextContent; // Size
var release = new ReleaseInfo
{

View File

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

View File

@@ -39,7 +39,7 @@ namespace Jackett.Common.Indexers
private const string SearchUrl = "buscar/";
public override string[] AlternativeSiteLinks { get; protected set; } = {
"https://dontorrent.re/",
"https://dontorrent.cat/",
"https://todotorrents.net/",
"https://tomadivx.net/",
"https://seriesblanco.one/",
@@ -55,6 +55,9 @@ namespace Jackett.Common.Indexers
"https://dontorrent.li/",
"https://dontorrent.top/",
"https://dontorrent.pm/",
"https://dontorrent.re/",
"https://dontorrent.wf/",
"https://dontorrent.run/",
"https://dontorrent.eu/"
};
@@ -73,7 +76,7 @@ namespace Jackett.Common.Indexers
: base(id: "dontorrent",
name: "DonTorrent",
description: "DonTorrent is a SPANISH public tracker for MOVIES / TV / GENERAL",
link: "https://dontorrent.re/",
link: "https://dontorrent.cat/",
caps: new TorznabCapabilities
{
TvSearchParams = new List<TvSearchParam>

View File

@@ -21,12 +21,13 @@ namespace Jackett.Common.Indexers
public override string[] AlternativeSiteLinks { get; protected set; } = {
"https://www.erai-raws.info/",
"https://beta.erai-raws.info/",
"https://erairaws.nocensor.biz/"
"https://erairaws.nocensor.sbs/"
};
public override string[] LegacySiteLinks { get; protected set; } = {
"https://erairaws.nocensor.space/",
"https://erairaws.nocensor.work/"
"https://erairaws.nocensor.work/",
"https://erairaws.nocensor.biz/"
};
public EraiRaws(IIndexerConfigurationService configService, Utils.Clients.WebClient wc, Logger l,

View File

@@ -39,14 +39,14 @@ namespace Jackett.Common.Indexers
cs: cs
)
{
AddCategoryMapping(1, TorznabCatType.XXXx264);
AddCategoryMapping(2, TorznabCatType.XXXPack);
AddCategoryMapping(3, TorznabCatType.XXXPack);
AddCategoryMapping(4, TorznabCatType.XXXPack);
AddCategoryMapping(5, TorznabCatType.XXXDVD);
AddCategoryMapping(6, TorznabCatType.XXXx264);
AddCategoryMapping(7, TorznabCatType.XXXImageSet);
AddCategoryMapping(8, TorznabCatType.XXXImageSet);
AddCategoryMapping(1, TorznabCatType.XXXx264, "Video Clip");
AddCategoryMapping(2, TorznabCatType.XXXPack, "Video Pack");
AddCategoryMapping(3, TorznabCatType.XXXPack, "Siterip Pack");
AddCategoryMapping(4, TorznabCatType.XXXPack, "Pornstar Pack");
AddCategoryMapping(5, TorznabCatType.XXXDVD, "DVD");
AddCategoryMapping(6, TorznabCatType.XXXx264, "BluRay");
AddCategoryMapping(7, TorznabCatType.XXXImageSet, "Photo Pack");
AddCategoryMapping(8, TorznabCatType.XXXImageSet, "Books & Magazines");
}
protected override List<KeyValuePair<string, string>> GetSearchQueryParameters(TorznabQuery query)

View File

@@ -184,9 +184,10 @@ namespace Jackett.Common.Indexers
var qLink = row.QuerySelector("td:nth-of-type(3) a");
release.Link = new Uri(SiteLink + qLink.GetAttribute("href"));
// <td align=center>&nbsp;2022-04-05&nbsp;&nbsp;19:04:38&nbsp;<br><font size=1>(2 hours ago)</font></td>
var added = row.QuerySelector("td:nth-of-type(7)").TextContent.Trim();
var date = added.Substring(0, 10);
var time = added.Substring(11, 8); //date layout wasn't quite right
var time = added.Substring(12, 8);
var dateTime = date + time;
release.PublishDate = DateTime.ParseExact(dateTime, "yyyy-MM-ddHH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal).ToLocalTime();

View File

@@ -132,7 +132,7 @@ namespace Jackett.Common.Indexers
Language = "ru-RU";
Type = "semi-private";
webclient.AddTrustedCertificate(new Uri(SiteLink).Host, "25234600906DF82792DE9F4AA75A5AED2F226577"); // for *.run expired 07/Jun/21
webclient.AddTrustedCertificate(new Uri(SiteLink).Host, "98D43B6E740B42C02A9BD1A9D1A813E4350BE332"); // for *.win expired 26/Mar/22
webclient.AddTrustedCertificate(new Uri(SiteLink).Host, "34287FB53A58EC6AE590E7DD7E03C70C0263CADC"); // for *.tw expired 01/Apr/21
// TODO: review if there is only this category (movie search is enabled)

View File

@@ -37,8 +37,8 @@ namespace Jackett.Common.Indexers
public override string[] AlternativeSiteLinks { get; protected set; } = {
"https://www.mejortorrentes.org/",
"https://mejortorrent.nocensor.biz/",
"https://mejortorrent.unblockit.day/"
"https://mejortorrent.unblockit.day/",
"https://mejortorrent.nocensor.sbs/"
};
public override string[] LegacySiteLinks { get; protected set; } = {
@@ -62,7 +62,8 @@ namespace Jackett.Common.Indexers
"https://www.mejortorrentes.net/",
"https://mejortorrent.unblockit.how/",
"https://mejortorrent.unblockit.tv/",
"https://mejortorrent.unblockit.cam/"
"https://mejortorrent.unblockit.cam/",
"https://mejortorrent.nocensor.biz/"
};
public MejorTorrent(IIndexerConfigurationService configService, WebClient w, Logger l, IProtectionService ps,

View File

@@ -22,7 +22,7 @@ using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
namespace Jackett.Common.Indexers
{
// This tracker uses a hybrid Luminance (based on GazelleTracker)
// This tracker uses a hybrid Luminance (based on GazelleTracker)
[ExcludeFromCodeCoverage]
public class MoreThanTV : BaseWebIndexer
{
@@ -31,7 +31,8 @@ namespace Jackett.Common.Indexers
};
private string LoginUrl => SiteLink + "login";
private string BrowseUrl => SiteLink + "torrents.php";
private string BrowseUrl => SiteLink + "torrents/browse";
private string DownloadUrl => SiteLink + "torrents.php";
private string DetailsUrl => SiteLink + "details.php";
private string _sort;
@@ -230,7 +231,7 @@ namespace Jackett.Common.Indexers
if (query.Categories.Contains(TorznabCatType.TV.ID))
{
qc.Add("filter_cat[3]", "1"); // HD EPISODE
qc.Add("filter_cat[3]", "1"); // HD Episode
qc.Add("filter_cat[4]", "1"); // SD Episode
qc.Add("filter_cat[5]", "1"); // HD Season
qc.Add("filter_cat[6]", "1"); // SD Season
@@ -262,23 +263,20 @@ namespace Jackett.Common.Indexers
foreach (var torrent in torrents)
{
// Parse required data
var torrentGroup = torrent.QuerySelectorAll("table a[href^=\"/torrents.php?action=download\"]");
foreach (var downloadAnchor in torrentGroup)
{
var title = downloadAnchor.ParentElement.ParentElement.ParentElement.TextContent.Trim();
title = CleanUpTitle(title);
var downloadAnchor = torrent.QuerySelector("span a[href^=\"/torrents.php?action=download\"]");
var title = downloadAnchor.ParentElement.ParentElement.ParentElement.QuerySelector("a[class=\"overlay_torrent\"]").TextContent.Trim();
title = CleanUpTitle(title);
var category = torrent.QuerySelector(".cats_col div").GetAttribute("title");
// default to Other
var categoryId = TorznabCatType.Other.ID;
var category = torrent.QuerySelector(".cats_col div").GetAttribute("title");
// default to Other
var categoryId = TorznabCatType.Other.ID;
if (movies.Any(category.Contains))
categoryId = TorznabCatType.Movies.ID;
else if (tv.Any(category.Contains))
categoryId = TorznabCatType.TV.ID;
if (movies.Any(category.Contains))
categoryId = TorznabCatType.Movies.ID;
else if (tv.Any(category.Contains))
categoryId = TorznabCatType.TV.ID;
releases.Add(GetReleaseInfo(torrent, downloadAnchor, title, categoryId));
}
releases.Add(GetReleaseInfo(torrent, downloadAnchor, title, categoryId));
}
}
catch (Exception ex)
@@ -299,7 +297,7 @@ namespace Jackett.Common.Indexers
{
// count from bottom
const int FILES_COL = 8;
const int FILES_COL = 7;
/*const int COMMENTS_COL = 7;*/
const int DATE_COL = 6;
const int FILESIZE_COL = 5;
@@ -337,7 +335,7 @@ namespace Jackett.Common.Indexers
var seeders = int.Parse(seeds, NumberStyles.AllowThousands, CultureInfo.InvariantCulture);
var leechers = int.Parse(leechs, NumberStyles.AllowThousands, CultureInfo.InvariantCulture);
var detailsUri = new Uri(DetailsUrl + "?torrentid=" + torrentId);
var downloadLink = new Uri(BrowseUrl + "?action=download&id=" + torrentId);
var downloadLink = new Uri(DownloadUrl + "?action=download&id=" + torrentId);
return new ReleaseInfo
{

View File

@@ -22,12 +22,13 @@ namespace Jackett.Common.Indexers
{
public override string[] AlternativeSiteLinks { get; protected set; } = {
"https://subsplease.org/",
"https://subsplease.nocensor.biz/"
"https://subsplease.nocensor.sbs/"
};
public override string[] LegacySiteLinks { get; protected set; } = {
"https://subsplease.nocensor.space/",
"https://subsplease.nocensor.work/"
"https://subsplease.nocensor.work/",
"https://subsplease.nocensor.biz/"
};
private string ApiEndpoint => SiteLink + "/api/?";

View File

@@ -1,659 +0,0 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig;
using Jackett.Common.Services.Interfaces;
using Jackett.Common.Utils;
using Jackett.Common.Utils.Clients;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NLog;
using static Jackett.Common.Models.IndexerConfig.ConfigurationData;
using WebRequest = Jackett.Common.Utils.Clients.WebRequest;
namespace Jackett.Common.Indexers
{
[ExcludeFromCodeCoverage]
public class Xthor : BaseCachingWebIndexer
{
private static string ApiEndpoint => "https://api.xthor.tk/";
private int MaxPagesHardLimit => 4;
private string TorrentDetailsUrl => SiteLink + "details.php?id={id}";
private string WebRequestDelay => ((SingleSelectConfigurationItem)configData.GetDynamic("webRequestDelay")).Value;
private int MaxPages => Convert.ToInt32(((SingleSelectConfigurationItem)configData.GetDynamic("maxPages")).Value);
private bool MaxPagesBypassForTMDB => ((BoolConfigurationItem)configData.GetDynamic("maxPagesBypassForTMDB")).Value;
private int DropCategories => Convert.ToInt32(((SingleSelectConfigurationItem)configData.GetDynamic("dropCategories")).Value);
private string MultiReplacement => ((StringConfigurationItem)configData.GetDynamic("multiReplacement")).Value;
private bool SubReplacement => ((BoolConfigurationItem)configData.GetDynamic("subReplacement")).Value;
private bool EnhancedAnimeSearch => ((BoolConfigurationItem)configData.GetDynamic("enhancedAnimeSearch")).Value;
private string SpecificLanguageAccent => ((SingleSelectConfigurationItem)configData.GetDynamic("specificLanguageAccent")).Value;
private bool FreeleechOnly => ((BoolConfigurationItem)configData.GetDynamic("freeleechOnly")).Value;
public override string[] LegacySiteLinks { get; protected set; } = {
"https://xthor.bz/",
"https://xthor.to"
};
private ConfigurationDataPasskey ConfigData => (ConfigurationDataPasskey)configData;
public Xthor(IIndexerConfigurationService configService, Utils.Clients.WebClient w, Logger l,
IProtectionService ps, ICacheService cs)
: base(id: "xthor-api",
name: "Xthor API",
description: "General French Private Tracker",
link: "https://xthor.tk/",
caps: new TorznabCapabilities
{
TvSearchParams = new List<TvSearchParam>
{
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep
},
MovieSearchParams = new List<MovieSearchParam>
{
MovieSearchParam.Q, MovieSearchParam.TmdbId
},
MusicSearchParams = new List<MusicSearchParam>
{
MusicSearchParam.Q
},
BookSearchParams = new List<BookSearchParam>
{
BookSearchParam.Q
}
},
configService: configService,
client: w,
logger: l,
p: ps,
cacheService: cs,
downloadBase: "https://xthor.tk/download.php?torrent=",
configData: new ConfigurationDataPasskey()
)
{
Encoding = Encoding.UTF8;
Language = "fr-FR";
Type = "private";
// Movies / Films
AddCategoryMapping(118, TorznabCatType.MoviesBluRay, "Films 2160p/Bluray");
AddCategoryMapping(119, TorznabCatType.MoviesBluRay, "Films 2160p/Remux");
AddCategoryMapping(107, TorznabCatType.MoviesUHD, "Films 2160p/x265");
AddCategoryMapping(1, TorznabCatType.MoviesBluRay, "Films 1080p/BluRay");
AddCategoryMapping(2, TorznabCatType.MoviesBluRay, "Films 1080p/Remux");
AddCategoryMapping(100, TorznabCatType.MoviesHD, "Films 1080p/x265");
AddCategoryMapping(4, TorznabCatType.MoviesHD, "Films 1080p/x264");
AddCategoryMapping(5, TorznabCatType.MoviesHD, "Films 720p/x264");
AddCategoryMapping(7, TorznabCatType.MoviesSD, "Films SD/x264");
AddCategoryMapping(3, TorznabCatType.Movies3D, "Films 3D");
AddCategoryMapping(6, TorznabCatType.MoviesSD, "Films XviD");
AddCategoryMapping(8, TorznabCatType.MoviesDVD, "Films DVD");
AddCategoryMapping(122, TorznabCatType.MoviesHD, "Films HDTV");
AddCategoryMapping(94, TorznabCatType.MoviesWEBDL, "Films WEBDL");
AddCategoryMapping(95, TorznabCatType.MoviesWEBDL, "Films WEBRiP");
AddCategoryMapping(12, TorznabCatType.TVDocumentary, "Films Documentaire");
AddCategoryMapping(31, TorznabCatType.MoviesOther, "Films Animation");
AddCategoryMapping(33, TorznabCatType.MoviesOther, "Films Spectacle");
AddCategoryMapping(125, TorznabCatType.TVSport, "Films Sports");
AddCategoryMapping(20, TorznabCatType.AudioVideo, "Films Concerts, Clips");
AddCategoryMapping(9, TorznabCatType.MoviesOther, "Films VOSTFR");
// TV / Series
AddCategoryMapping(104, TorznabCatType.TVOther, "Series BluRay");
AddCategoryMapping(13, TorznabCatType.TVOther, "Series Pack VF");
AddCategoryMapping(15, TorznabCatType.TVHD, "Series HD VF");
AddCategoryMapping(14, TorznabCatType.TVSD, "Series SD VF");
AddCategoryMapping(98, TorznabCatType.TVOther, "Series Pack VOSTFR");
AddCategoryMapping(17, TorznabCatType.TVHD, "Series HD VOSTFR");
AddCategoryMapping(16, TorznabCatType.TVSD, "Series SD VOSTFR");
AddCategoryMapping(101, TorznabCatType.TVAnime, "Series Packs Anime");
AddCategoryMapping(32, TorznabCatType.TVAnime, "Series Animes");
AddCategoryMapping(110, TorznabCatType.TVAnime, "Series Anime VOSTFR");
AddCategoryMapping(123, TorznabCatType.TVOther, "Series Animation");
AddCategoryMapping(109, TorznabCatType.TVDocumentary, "Series DOC");
AddCategoryMapping(34, TorznabCatType.TVOther, "Series Sport");
AddCategoryMapping(30, TorznabCatType.TVOther, "Series Emission TV");
// XxX / MISC
AddCategoryMapping(36, TorznabCatType.XXX, "MISC XxX/Films");
AddCategoryMapping(105, TorznabCatType.XXX, "MISC XxX/Séries");
AddCategoryMapping(114, TorznabCatType.XXX, "MISC XxX/Lesbiennes");
AddCategoryMapping(115, TorznabCatType.XXX, "MISC XxX/Gays");
AddCategoryMapping(113, TorznabCatType.XXX, "MISC XxX/Hentai");
AddCategoryMapping(120, TorznabCatType.XXX, "MISC XxX/Magazines");
// Books / Livres
AddCategoryMapping(24, TorznabCatType.BooksEBook, "Livres Romans");
AddCategoryMapping(124, TorznabCatType.AudioAudiobook, "Livres Audio Books");
AddCategoryMapping(96, TorznabCatType.BooksMags, "Livres Magazines");
AddCategoryMapping(99, TorznabCatType.BooksOther, "Livres Bandes dessinées");
AddCategoryMapping(116, TorznabCatType.BooksEBook, "Livres Romans Jeunesse");
AddCategoryMapping(102, TorznabCatType.BooksComics, "Livres Comics");
AddCategoryMapping(103, TorznabCatType.BooksOther, "Livres Mangas");
// SOFTWARE / Logiciels
AddCategoryMapping(25, TorznabCatType.PCGames, "Logiciels Jeux PC");
AddCategoryMapping(27, TorznabCatType.ConsolePS3, "Logiciels Playstation");
AddCategoryMapping(111, TorznabCatType.PCMac, "Logiciels Jeux MAC");
AddCategoryMapping(26, TorznabCatType.ConsoleXBox360, "Logiciels XboX");
AddCategoryMapping(112, TorznabCatType.PC, "Logiciels Jeux Linux");
AddCategoryMapping(28, TorznabCatType.ConsoleWii, "Logiciels Nintendo");
AddCategoryMapping(29, TorznabCatType.ConsoleNDS, "Logiciels NDS");
AddCategoryMapping(117, TorznabCatType.PC, "Logiciels ROM");
AddCategoryMapping(21, TorznabCatType.PC, "Logiciels Applis PC");
AddCategoryMapping(22, TorznabCatType.PCMac, "Logiciels Applis Mac");
AddCategoryMapping(23, TorznabCatType.PCMobileAndroid, "Logiciels Smartphone");
// Dynamic Configuration
ConfigData.AddDynamic("optionsConfigurationWarning", new DisplayInfoConfigurationItem(string.Empty, "<center><b>Available Options</b></center>,<br /><br /> <ul><li><b>Freeleech Only</b>: (<i>Restrictive</i>) If you want to discover only freeleech torrents to not impact your ratio, check the related box. So only torrents marked as freeleech will be returned instead of all.</li><br /><li><b>Specific Language</b>: (<i>Restrictive</i>) You can scope your searches with a specific language / accent.</li></ul>"));
var ConfigFreeleechOnly = new BoolConfigurationItem("Do you want to discover only freeleech tagged torrents ?");
ConfigData.AddDynamic("freeleechOnly", ConfigFreeleechOnly);
var ConfigSpecificLanguageAccent = new SingleSelectConfigurationItem("Do you want to scope your searches with a specific language ? (Accent)", new Dictionary<string, string>
{
{"0", "All Voices (default)"},
{"1", "Françaises"},
{"2", "Quebecoises"},
{"47", "Françaises et Québécoises"},
{"3", "Anglaises"},
{"4", "Japonaises"},
{"5", "Espagnoles"},
{"6", "Allemandes"},
{"7", "Chinoises"},
{"8", "Italiennes"},
{"9", "Coréennes"},
{"10", "Danoises"},
{"11", "Russes"},
{"12", "Portugaises"},
{"13", "Hindi"},
{"14", "Hollandaises"},
{"15", "Suédoises"},
{"16", "Norvégiennes"},
{"17", "Thaïlandaises"},
{"18", "Hébreu"},
{"19", "Persanes"},
{"20", "Arabes"},
{"21", "Turques"},
{"22", "Hongroises"},
{"23", "Polonaises"},
{"24", "Finnoises"},
{"25", "Indonésiennes"},
{"26", "Roumaines"},
{"27", "Malaisiennes"},
{"28", "Estoniennes"},
{"29", "Islandaises"},
{"30", "Grecques"},
{"31", "Serbes"},
{"32", "Norvégiennes"},
{"33", "Ukrainiennes"},
{"34", "Bulgares"},
{"35", "Tagalogues"},
{"36", "Xhosa"},
{"37", "Kurdes"},
{"38", "Bengali"},
{"39", "Amhariques"},
{"40", "Bosniaques"},
{"41", "Malayalam"},
{"42", "Télougou"},
{"43", "Bambara"},
{"44", "Catalanes"},
{"45", "Tchèques"},
{"46", "Afrikaans"}
})
{ Value = "0" };
ConfigData.AddDynamic("specificLanguageAccent", ConfigSpecificLanguageAccent);
ConfigData.AddDynamic("advancedConfigurationWarning", new DisplayInfoConfigurationItem(string.Empty, "<center><b>Advanced Configuration</b></center>,<br /><br /> <center><b><u>WARNING !</u></b> <i>Be sure to read instructions before editing options bellow, you can <b>drastically reduce performance</b> of queries or have <b>non-accurate results</b>.</i></center><br/><br/><ul><li><b>Delay betwwen Requests</b>: (<i>not recommended</i>) you can increase delay to requests made to the tracker, but a minimum of 2.1s is enforced as there is an anti-spam protection.</li><br /><li><b>Max Pages</b>: (<i>not recommended</i>) you can increase max pages to follow when making a request. But be aware that others apps can consider this indexer not working if jackett take too many times to return results. Another thing is that API is very buggy on tracker side, most of time, results of next pages are same ... as the first page. Even if we deduplicate rows, you will loose performance for the same results. You can check logs to see if an higher pages following is not benefical, you will see an error percentage (duplicates) with recommandations.</li><br /><li><b>Bypass for TMDB</b>: (<i>recommended</i>) this indexer is compatible with TMDB queries (<i>for movies only</i>), so when requesting content with an TMDB ID, we will search directly ID on API instead of name. Results will be more accurate, so you can enable a max pages bypass for this query type. You will be at least limited by the hard limit of 4 pages.</li><br /><li><b>Drop categories</b>: (<i>recommended</i>) this indexer has some problems when too many categories are requested for filtering, so you will have better results by dropping categories from TMDB queries or selecting fewer categories in 3rd apps.</li><br /><li><b>Enhanced Anime</b>: if you have \"Anime\", this will improve queries made to this tracker related to this type when making searches.</li><br /><li><b>Multi Replacement</b>: you can dynamically replace the word \"MULTI\" with another of your choice like \"MULTI.FRENCH\" for better analysis of 3rd party softwares.</li><br /><li><b>Sub Replacement</b>: you can dynamically replace the word \"VOSTFR\" or \"SUBFRENCH\" with the word \"ENGLISH\" for better analysis of 3rd party softwares.</li></ul>"));
var ConfigWebRequestDelay = new SingleSelectConfigurationItem("Which delay do you want to apply between each requests made to tracker ?", new Dictionary<string, string>
{
{"2.1", "2.1s (minimum)"},
{"2.2", "2.2s"},
{"2.3", "2.3s"},
{"2.4", "2.4s" },
{"2.5", "2.5s"},
{"2.6", "2.6s"}
})
{ Value = "2.1" };
ConfigData.AddDynamic("webRequestDelay", ConfigWebRequestDelay);
var ConfigMaxPages = new SingleSelectConfigurationItem("How many pages do you want to follow ?", new Dictionary<string, string>
{
{"1", "1 (32 results - default / best perf.)"},
{"2", "2 (64 results)"},
{"3", "3 (96 results)"},
{"4", "4 (128 results - hard limit max)" },
})
{ Value = "1" };
ConfigData.AddDynamic("maxPages", ConfigMaxPages);
var ConfigMaxPagesBypassForTMDB = new BoolConfigurationItem("Do you want to bypass max pages for TMDB searches ? (Radarr) - Hard limit of 4") { Value = true };
ConfigData.AddDynamic("maxPagesBypassForTMDB", ConfigMaxPagesBypassForTMDB);
var ConfigDropCategories = new SingleSelectConfigurationItem("Drop requested categories", new Dictionary<string, string>
{
{"0", "Disabled"},
{"1", "Yes, only for TMDB requests (default)"},
{"2", "Yes, for all requests"},
})
{ Value = "1" };
ConfigData.AddDynamic("dropCategories", ConfigDropCategories);
var ConfigEnhancedAnimeSearch = new BoolConfigurationItem("Do you want to use enhanced ANIME search ?") { Value = false };
ConfigData.AddDynamic("enhancedAnimeSearch", ConfigEnhancedAnimeSearch);
var ConfigMultiReplacement = new StringConfigurationItem("Do you want to replace \"MULTI\" keyword in release title by another word ?") { Value = "MULTI.FRENCH" };
ConfigData.AddDynamic("multiReplacement", ConfigMultiReplacement);
var ConfigSubReplacement = new BoolConfigurationItem("Do you want to replace \"VOSTFR\" and \"SUBFRENCH\" with \"ENGLISH\" word ?") { Value = false };
ConfigData.AddDynamic("subReplacement", ConfigSubReplacement);
// Api has 1req/2s limit (minimum)
webclient.requestDelay = Convert.ToDouble(WebRequestDelay);
}
/// <summary>
/// Configure our Provider
/// </summary>
/// <param name="configJson">Our params in Json</param>
/// <returns>Configuration state</returns>
// Warning 1998 is async method with no await calls inside
// TODO: Remove pragma by wrapping return in Task.FromResult and removing async
#pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously
public override async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
#pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously
{
// Provider not yet configured
IsConfigured = false;
// Retrieve config values set by Jackett's user
LoadValuesFromJson(configJson);
logger.Debug("\nXthor - Validating Settings ... \n");
// Check Passkey Setting
if (string.IsNullOrEmpty(ConfigData.Passkey.Value))
{
throw new ExceptionWithConfigData("You must provide your passkey for this tracker to be allowed to use API !", ConfigData);
}
else
{
logger.Debug("Xthor - Validated Setting -- PassKey (auth) => " + ConfigData.Passkey.Value);
}
// Tracker is now configured
IsConfigured = true;
// Saving data
SaveConfig();
return IndexerConfigurationStatus.RequiresTesting;
}
/// <summary>
/// Execute our search query
/// </summary>
/// <param name="query">Query</param>
/// <returns>Releases</returns>
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{
var releases = new List<ReleaseInfo>();
var searchTerm = query.SanitizedSearchTerm + " " + query.GetEpisodeSearchString();
if (EnhancedAnimeSearch && query.HasSpecifiedCategories && (query.Categories.Contains(TorznabCatType.TVAnime.ID) || query.Categories.Contains(100032) || query.Categories.Contains(100101) || query.Categories.Contains(100110)))
{
var regex = new Regex(" ([0-9]+)");
searchTerm = regex.Replace(searchTerm, " E$1");
}
searchTerm = searchTerm.Trim();
searchTerm = searchTerm.ToLower();
searchTerm = searchTerm.Replace(" ", ".");
// Multiple page support
var nextPage = 1;
var followingPages = true;
do
{
// Build our query
var request = BuildQuery(searchTerm, query, ApiEndpoint, nextPage);
// Getting results
logger.Info("\nXthor - Querying API page " + nextPage);
var results = await QueryTrackerAsync(request);
// Torrents Result Count
var torrentsCount = 0;
try
{
// Deserialize our Json Response
var xthorResponse = JsonConvert.DeserializeObject<XthorResponse>(results);
// Check Tracker's State
CheckApiState(xthorResponse.Error);
// If contains torrents
if (xthorResponse.Torrents != null)
{
// Store torrents rows count result
torrentsCount = xthorResponse.Torrents.Count();
logger.Info("\nXthor - Found " + torrentsCount + " torrents on current page.");
// Adding each torrent row to releases
// Exclude hidden torrents (category 106, example => search 'yoda' in the API) #10407
releases.AddRange(xthorResponse.Torrents
.Where(torrent => torrent.Category != 106).Select(torrent =>
{
//issue #3847 replace multi keyword
if (!string.IsNullOrEmpty(MultiReplacement))
{
var regex = new Regex("(?i)([\\.\\- ])MULTI([\\.\\- ])");
torrent.Name = regex.Replace(torrent.Name, "$1" + MultiReplacement + "$2");
}
// issue #8759 replace vostfr and subfrench with English
if (SubReplacement)
torrent.Name = torrent.Name.Replace("VOSTFR", "ENGLISH").Replace("SUBFRENCH", "ENGLISH");
var publishDate = DateTimeUtil.UnixTimestampToDateTime(torrent.Added);
//TODO replace with download link?
var guid = new Uri(TorrentDetailsUrl.Replace("{id}", torrent.Id.ToString()));
var details = new Uri(TorrentDetailsUrl.Replace("{id}", torrent.Id.ToString()));
var link = new Uri(torrent.Download_link);
var release = new ReleaseInfo
{
// Mapping data
Category = MapTrackerCatToNewznab(torrent.Category.ToString()),
Title = torrent.Name,
Seeders = torrent.Seeders,
Peers = torrent.Seeders + torrent.Leechers,
MinimumRatio = 1,
MinimumSeedTime = 345600,
PublishDate = publishDate,
Size = torrent.Size,
Grabs = torrent.Times_completed,
Files = torrent.Numfiles,
UploadVolumeFactor = 1,
DownloadVolumeFactor = (torrent.Freeleech == 1 ? 0 : 1),
Guid = guid,
Details = details,
Link = link,
TMDb = torrent.Tmdb_id
};
return release;
}));
nextPage++;
}
else
{
logger.Info("\nXthor - No results found on page " + nextPage + ", stopping follow of next page.");
// No results or no more results available
followingPages = false;
break;
}
}
catch (Exception ex)
{
OnParseError("Unable to parse result \n" + ex.StackTrace, ex);
}
// Stop ?
if (query.IsTmdbQuery && MaxPagesBypassForTMDB)
{
if (nextPage > MaxPagesHardLimit)
{
logger.Info("\nXthor - Stopping follow of next page " + nextPage + " due to page hard limit reached.");
break;
}
logger.Info("\nXthor - Continue to next page " + nextPage + " due to TMDB request and activated max page bypass for this type of query. Max page hard limit: 4.");
continue;
}
else
{
if (torrentsCount < 32)
{
logger.Info("\nXthor - Stopping follow of next page " + nextPage + " due max available results reached.");
break;
}
else if (nextPage > MaxPages)
{
logger.Info("\nXthor - Stopping follow of next page " + nextPage + " due to page limit reached.");
break;
}
else if (query.IsTest)
{
logger.Info("\nXthor - Stopping follow of next page " + nextPage + " due to index test query.");
break;
}
}
} while (followingPages);
// Check if there is duplicate and return unique rows - Xthor API can be very buggy !
var uniqReleases = releases.GroupBy(x => x.Guid).Select(x => x.First()).ToList();
var errorPercentage = 1 - ((double)uniqReleases.Count() / releases.Count());
if (errorPercentage >= 0.25)
{
logger.Warn("\nXthor - High percentage error detected: " + string.Format("{0:0.0%}", errorPercentage) + "\nWe strongly recommend that you lower max page to 1, as there is no benefit to grab additionnals.\nTracker API sent us duplicated pages with same results, even if we deduplicate returned rows, please consider to lower as it's unnecessary and increase time used for query for the same result.");
}
// Return found releases
return uniqReleases;
}
/// <summary>
/// Response from Tracker's API
/// </summary>
public class XthorResponse
{
public XthorError Error { get; set; }
public XthorUser User { get; set; }
public List<XthorTorrent> Torrents { get; set; }
}
/// <summary>
/// State of API
/// </summary>
public class XthorError
{
public int Code { get; set; }
public string Descr { get; set; }
}
/// <summary>
/// User Informations
/// </summary>
public class XthorUser
{
public int Id { get; set; }
public string Username { get; set; }
public long Uploaded { get; set; }
public long Downloaded { get; set; }
public int Uclass { get; set; } // Class is a reserved keyword.
public decimal Bonus_point { get; set; }
public int Hits_and_run { get; set; }
public string Avatar_url { get; set; }
}
/// <summary>
/// Torrent Informations
/// </summary>
public class XthorTorrent
{
public int Id { get; set; }
public int Category { get; set; }
public int Seeders { get; set; }
public int Leechers { get; set; }
public string Name { get; set; }
public int Times_completed { get; set; }
public long Size { get; set; }
public int Added { get; set; }
public int Freeleech { get; set; }
public int Numfiles { get; set; }
public string Release_group { get; set; }
public string Download_link { get; set; }
public int Tmdb_id { get; set; }
public override string ToString() => string.Format("[XthorTorrent: id={0}, category={1}, seeders={2}, leechers={3}, name={4}, times_completed={5}, size={6}, added={7}, freeleech={8}, numfiles={9}, release_group={10}, download_link={11}, tmdb_id={12}]", Id, Category, Seeders, Leechers, Name, Times_completed, Size, Added, Freeleech, Numfiles, Release_group, Download_link, Tmdb_id);
}
/// <summary>
/// Build query to process
/// </summary>
/// <param name="term">Term to search</param>
/// <param name="query">Torznab Query for categories mapping</param>
/// <param name="url">Search url for provider</param>
/// <returns>URL to query for parsing and processing results</returns>
private string BuildQuery(string term, TorznabQuery query, string url, int page = 1)
{
var parameters = new NameValueCollection();
var categoriesList = MapTorznabCapsToTrackers(query);
// Passkey
parameters.Add("passkey", ConfigData.Passkey.Value);
if (query.IsTmdbQuery)
{
logger.Info("\nXthor - Search requested for movie with TMDB ID n°" + query.TmdbID.ToString());
parameters.Add("tmdbid", query.TmdbID.ToString());
}
else
{
if (!string.IsNullOrWhiteSpace(term))
{
// Add search term
logger.Info("\nXthor - Search requested for movie with title \"" + term + "\"");
parameters.Add("search", WebUtility.UrlEncode(term));
}
}
// Loop on categories needed
if (categoriesList.Count > 0)
{
switch (DropCategories)
{
case 1:
// Drop categories for TMDB query only.
if (!query.IsTmdbQuery)
{ goto default; }
break;
case 2:
// Drop categories enabled for all requests
break;
default:
// Default or disabled state (0 value of config switch)
parameters.Add("category", string.Join("+", categoriesList));
break;
}
}
// If Only Freeleech Enabled
if (FreeleechOnly)
{
parameters.Add("freeleech", "1");
}
// If Specific Language Accent Requested
if (!string.IsNullOrEmpty(SpecificLanguageAccent) && SpecificLanguageAccent != "0")
{
parameters.Add("accent", SpecificLanguageAccent);
}
// Pages handling
if (page > 1 && !query.IsTest)
{
parameters.Add("page", page.ToString());
}
// Building our query -- Cannot use GetQueryString due to UrlEncode (generating wrong category param)
url += "?" + string.Join("&", parameters.AllKeys.Select(a => a + "=" + parameters[a]));
logger.Info("\nXthor - Builded query: " + url);
// Return our search url
return url;
}
/// <summary>
/// Get Torrents Page from Tracker by Query Provided
/// </summary>
/// <param name="request">URL created by Query Builder</param>
/// <returns>Results from query</returns>
private async Task<string> QueryTrackerAsync(string request)
{
// Cache mode not enabled or cached file didn't exist for our query
logger.Debug("\nQuerying tracker for results....");
// Build WebRequest for index
var myIndexRequest = new WebRequest
{
Type = RequestType.GET,
Url = request,
Encoding = Encoding
};
// Request our first page
var results = await webclient.GetResultAsync(myIndexRequest);
if (results.Status == HttpStatusCode.InternalServerError) // See issue #2110
throw new Exception("Internal Server Error (" + results.ContentString + "), probably you reached the API limits, please reduce the number of queries");
// Return results from tracker
return results.ContentString;
}
/// <summary>
/// Check API's state
/// </summary>
/// <param name="state">State of API</param>
private void CheckApiState(XthorError state)
{
// Switch on state
switch (state.Code)
{
case 0:
// Everything OK
logger.Debug("\nXthor - API State : Everything OK ... -> " + state.Descr);
break;
case 1:
// Passkey not found
logger.Error("\nXthor - API State : Error, Passkey not found in tracker's database, aborting... -> " + state.Descr);
throw new Exception("Passkey not found in tracker's database");
case 2:
// No results
logger.Info("\nXthor - API State : No results for query ... -> " + state.Descr);
break;
case 3:
// Power Saver
logger.Warn("\nXthor - API State : Power Saver mode, only cached query with no parameters available ... -> " + state.Descr);
break;
case 4:
// DDOS Attack, API disabled
logger.Error("\nXthor - API State : Tracker is under DDOS attack, API disabled, aborting ... -> " + state.Descr);
throw new Exception("Tracker is under DDOS attack, API disabled");
case 8:
// AntiSpam Protection
logger.Warn("\nXthor - API State : Triggered AntiSpam Protection -> " + state.Descr);
throw new Exception("Triggered AntiSpam Protection, please delay your requests !");
default:
// Unknown state
logger.Error("\nXthor - API State : Unknown state, aborting querying ... -> " + state.Descr);
throw new Exception("Unknown state, aborting querying");
}
}
}
}

View File

@@ -267,9 +267,6 @@ namespace Jackett.Common.Services
|| variant == Variants.JackettVariant.CoreLinuxAmdx64 || variant == Variants.JackettVariant.CoreLinuxArm32
|| variant == Variants.JackettVariant.CoreLinuxArm64 || variant == Variants.JackettVariant.Mono)
{
//Calling the file permission service to limit usage to netcoreapp. The Mono.Posix.NETStandard library causes issues outside of .NET Core
//https://github.com/xamarin/XamarinComponents/issues/282
// When the files get extracted, the execute permission for jackett and JackettUpdater don't get carried across
var jackettPath = tempDir + "/Jackett/jackett";

View File

@@ -33,7 +33,6 @@
<!-- Conditionally obtain references for the .NET 6.0 target -->
<ItemGroup Condition=" '$(TargetFramework)' == 'net6.0' ">
<PackageReference Include="Mono.Posix.NETStandard" Version="1.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.0" />
<PackageReference Include="System.Security.Cryptography.ProtectedData" Version="6.0.0" />
@@ -57,6 +56,7 @@
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.2.0" />
<PackageReference Include="AutoMapper" Version="10.1.1" />
<PackageReference Include="CommandLineParser" Version="2.8.0" />
<PackageReference Include="Mono.Posix" Version="7.1.0-final.1.21458.1" />
<PackageReference Include="NLog" Version="4.7.12" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.14.0" />
<PackageReference Include="System.ServiceProcess.ServiceController" Version="6.0.0" />

View File

@@ -1,9 +1,7 @@
using Jackett.Common.Services.Interfaces;
using NLog;
#if !NET461
using System;
using Jackett.Common.Services.Interfaces;
using Mono.Unix;
#endif
using NLog;
namespace Jackett.Server.Services
{
@@ -15,11 +13,6 @@ namespace Jackett.Server.Services
public void MakeFileExecutable(string path)
{
#if !NET461
//Calling the file permission service to limit usage to netcoreapp. The Mono.Posix.NETStandard library causes issues outside of .NET Core
//https://github.com/xamarin/XamarinComponents/issues/282
logger.Debug($"Attempting to give execute permission to: {path}");
try
{
@@ -32,7 +25,6 @@ namespace Jackett.Server.Services
{
logger.Error(ex);
}
#endif
}
}
}

View File

@@ -280,6 +280,7 @@ namespace Jackett.Updater
"Definitions/beyond-hd-oneurl.yml", // #12993
"Definitions/baibako.yml", // renamed rudub #5673
"Definitions/bithq.yml",
"Definitions/bit-titan.yml",
"Definitions/bigtorrent.yml", // merged with eStone #12352
"Definitions/bigtower.yml",
"Definitions/bitme.yml",
@@ -392,6 +393,7 @@ namespace Jackett.Updater
"Definitions/latinop2p.yml",
"Definitions/leaguehd.yml", // renamed to lemonhd
"Definitions/lechaudron.yml",
"Definitions/legacyhd.yml", // renamed realflix
"Definitions/lemencili.yml",
"Definitions/leparadisdunet.yml",
"Definitions/leporno.yml",
@@ -454,6 +456,7 @@ namespace Jackett.Updater
"Definitions/sdkino.yml",
"Definitions/secretcinema.yml", // migrated to C# gazelle base tracker
"Definitions/seedpeer.yml",
"Definitions/sexxi.yml",
"Definitions/sharefiles.yml",
"Definitions/shareisland.yml", // switch to *-API #8682
"Definitions/sharespacedb.yml",
@@ -480,6 +483,7 @@ namespace Jackett.Updater
"Definitions/tehconnection.yml",
"Definitions/tellytorrent.yml", // switch to *-API #8682
"Definitions/tfile.yml",
"Definitions/the-devils-lounge.yml",
"Definitions/the-madhouse.yml",
"Definitions/themoviecave.yml",
"Definitions/theresurrection.yml",
@@ -491,6 +495,7 @@ namespace Jackett.Updater
"Definitions/tntfork.yml",
"Definitions/tntvillage.yml",
"Definitions/topnow.yml",
"Definitions/toros.yml",
"Definitions/torrent-paradise-ml.yml",
"Definitions/torrent4you.yml",
"Definitions/torrentbomb.yml",