Compare commits

..

21 Commits

Author SHA1 Message Date
Garfield69
e2ffb93350 sporthd: removed. resolves #8090 2023-12-26 16:38:29 +13:00
Garfield69
1b2e49f24e korsar: new category selector. resolves #14884 2023-12-26 11:20:46 +13:00
Bogdan
5f66496544 audiobookbay: cleanup categories and add genres 2023-12-25 14:25:10 +02:00
Bogdan
9b9f26e77f anthelion-api: disable category filtering 2023-12-25 12:55:42 +02:00
Bogdan
f563bdbc31 cardigann: fix NullRef for empty release categories 2023-12-25 12:37:33 +02:00
ilike2burnthing
65ca7fff81 solidtorrents: revert domain *.to 2023-12-23 08:50:07 +00:00
Garfield69
4b4a695389 torrentbd: update cats 2023-12-23 16:05:26 +13:00
Garfield69
e4de4ba4ab torrentz2eu: new engine, no categories
does have details, seeders and leechers
2023-12-23 12:10:46 +13:00
Garfield69
6b740e3e42 thecrazyones: cat fixes 2023-12-23 07:26:16 +13:00
Garfield69
508a897893 add thecrazyones a private German site. resolves #13046 2023-12-23 07:10:09 +13:00
Garfield69
d64ac01a00 torrent-explosiv: add grabs, fix date, test index.php 2023-12-23 06:31:17 +13:00
Garfield69
b9880e1d11 audiobookbay: drop alternate .se domain
redirects to .is but has an invalid CA
2023-12-22 13:37:35 +13:00
Garfield69
f3ff4244c3 torrentz2eu: back to .online domain again 2023-12-22 05:33:48 +13:00
Garfield69
7b0e053393 torrentqq: bump domain 2023-12-22 05:33:07 +13:00
Garfield69
1ff1f113fe torrentdownload: switch to .today.year for keywordless search. resolves #6451 2023-12-21 20:24:39 +13:00
Garfield69
5f9e4139d7 torrentkitty; remove trailing slash
which was now causing no-results to be returned.
2023-12-21 05:37:31 +13:00
Garfield69
bceb1219d9 unleashthecartoons: removed. resolves #13930 2023-12-20 17:43:31 +13:00
Garfield69
ea4af2ba08 torrentsir: bump domain 2023-12-19 17:26:46 +13:00
Garfield69
6daedaa7b8 torrentdownload: add new cats 2023-12-19 12:21:25 +13:00
Garfield69
0232102d37 vstorrent: prevent log row errors when keyword returns not found 2023-12-19 12:04:39 +13:00
Garfield69
d2c105bc57 simpleanime: drop adverts 2023-12-19 05:59:16 +13:00
19 changed files with 322 additions and 623 deletions

View File

@@ -531,7 +531,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* Speedmaster HD [![(invite needed)][inviteneeded]](#)
* SpeedTorrent Reloaded
* Spirit of Revolution [![(invite needed)][inviteneeded]](#)
* SportHD
* SportsCult
* SpringSunday [![(invite needed)][inviteneeded]](#)
* SugoiMusic
@@ -544,6 +543,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* TeamOS
* TEKNO3D [![(invite needed)][inviteneeded]](#)
* teracod (Movie Zone)
* The Crazy Ones
* The Falling Angels (TFA)
* The Geeks
* The New Retro
@@ -601,7 +601,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* UltraHD
* UnionGang
* Universal-Torrents
* UnleashTheCartoons
* UnlimitZ
* Upload.cx [![(invite needed)][inviteneeded]](#)
* UTOPIA

View File

@@ -60,7 +60,8 @@ search:
q: "{{ .Keywords }}"
tmdb: "{{ .Query.TMDBID }}"
imdb: "{{ .Query.IMDBIDShort }}"
cat: "{{ join .Categories \",\" }}"
# category filtering is disabled since it seems to rely on the AND operator that prevents some releases to show on search.
# cat: "{{ join .Categories \",\" }}"
limit: 100
offset: 0

View File

@@ -501,7 +501,7 @@ search:
fields:
category:
selector: a[href$=".html"]
selector: dt > a[href$=".html"]
attribute: href
filters:
- name: regexp

View File

@@ -45,7 +45,7 @@ search:
args: [" ", "_20"]
rows:
selector: ul.threadlist > li:not(:has(a[href="thread-293154.htm"]))
selector: ul.threadlist > li:not(:has(a[href="thread-338792.htm"])):not(:has(a[href="thread-342865.htm"])):not(:has(a[href="thread-290995.htm"]))
fields:
category:

View File

@@ -7,12 +7,12 @@ type: public
encoding: UTF-8
requestDelay: 2
links:
- https://solidtorrents.eu/
- https://solidtorrents.to/
- https://solidtorrents.nocensor.cloud/
legacylinks:
- https://solidtorrents.net/
- https://solidtorrents.nocensor.click/
- https://solidtorrents.to/
- https://solidtorrents.eu/
caps:
categories:

View File

@@ -1,243 +0,0 @@
---
id: sporthd
name: SportHD
description: "SportHD is a Private Torrent Tracker for HD SPORTS"
language: en-US
type: private
encoding: UTF-8
links:
- http://satsporthd.org/ # site does not support https ERR_CONNECTION_REFUSED
legacylinks:
- http://sporthd.org/
caps:
categorymappings:
- {id: 97, cat: TV/Sport, desc: "J.League"}
- {id: 83, cat: TV/Sport, desc: "AFC Champions League"}
- {id: 50, cat: TV/Sport, desc: "Australian Open"}
- {id: 32, cat: TV/Sport, desc: "Basketball"}
- {id: 85, cat: TV/Sport, desc: "Basketball Champions League"}
- {id: 87, cat: TV/Sport, desc: "Basketball Eurocup"}
- {id: 88, cat: TV/Sport, desc: "Basketball Pro A"}
- {id: 80, cat: TV/Sport, desc: "Belgian ProLeague"}
- {id: 22, cat: TV/Sport, desc: "Boxing"}
- {id: 23, cat: TV/Sport, desc: "Brasilareo Seria A"}
- {id: 54, cat: TV/Sport, desc: "Brazil League"}
- {id: 11, cat: TV/Sport, desc: "BundesLiga"}
- {id: 90, cat: TV/Sport, desc: "Bundesliga 2"}
- {id: 45, cat: TV/Sport, desc: "CAF"}
- {id: 78, cat: TV/Sport, desc: "Canadian Football League"}
- {id: 37, cat: TV/Sport, desc: "Champions Hockey League"}
- {id: 77, cat: TV/Sport, desc: "Chinese Super League"}
- {id: 74, cat: TV/Sport, desc: "CONCACAF"}
- {id: 70, cat: TV/Sport, desc: "Confederation CUP"}
- {id: 76, cat: TV/Sport, desc: "CONMEBOL"}
- {id: 46, cat: TV/Sport, desc: "Copa Americana"}
- {id: 41, cat: TV/Sport, desc: "Copa Del Rey"}
- {id: 42, cat: TV/Sport, desc: "Copa do Brasil"}
- {id: 43, cat: TV/Sport, desc: "Copa Libertadores"}
- {id: 73, cat: TV/Sport, desc: "Copa MX"}
- {id: 40, cat: TV/Sport, desc: "Coppa Italia"}
- {id: 51, cat: TV/Sport, desc: "Coupe de France"}
- {id: 79, cat: TV/Sport, desc: "cyclisme"}
- {id: 94, cat: TV/Sport, desc: "Danish Superliga"}
- {id: 39, cat: TV/Sport, desc: "DFB Pokal"}
- {id: 72, cat: TV/Sport, desc: "EFL"}
- {id: 96, cat: TV/Sport, desc: "Ekstraklasa"}
- {id: 49, cat: TV/Sport, desc: "English League Cup"}
- {id: 8, cat: TV/Sport, desc: "EPL"}
- {id: 13, cat: TV/Sport, desc: "Eredivisie"}
- {id: 2, cat: TV/Sport, desc: "EURO Cup"}
- {id: 6, cat: TV/Sport, desc: "EURO Cup Qualification"}
- {id: 66, cat: TV/Sport, desc: "Eurobasket"}
- {id: 53, cat: TV/Sport, desc: "Euroleague ULEB"}
- {id: 86, cat: TV/Sport, desc: "Europe Cup FIBA"}
- {id: 38, cat: TV/Sport, desc: "FA Cup"}
- {id: 103, cat: TV/Sport, desc: "FIBA Euro Basket"}
- {id: 59, cat: TV/Sport, desc: "FIFA U-20 World Cup"}
- {id: 69, cat: TV/Sport, desc: "FIFA World Clup Cup"}
- {id: 19, cat: TV/Sport, desc: "Football League Championship"}
- {id: 18, cat: TV/Sport, desc: "Formula 1"}
- {id: 81, cat: TV/Sport, desc: "France Ligue 2"}
- {id: 7, cat: TV/Sport, desc: "Friendly matches"}
- {id: 91, cat: TV/Sport, desc: "Greece Basket"}
- {id: 100, cat: TV/Sport, desc: "Greece Super League"}
- {id: 30, cat: TV/Sport, desc: "Handball"}
- {id: 31, cat: TV/Sport, desc: "IIHF"}
- {id: 15, cat: TV/Sport, desc: "IndyCar"}
- {id: 95, cat: TV/Sport, desc: "J Liga Japan"}
- {id: 20, cat: TV/Sport, desc: "KHL"}
- {id: 10, cat: TV/Sport, desc: "La Liga"}
- {id: 12, cat: TV/Sport, desc: "League 1"}
- {id: 89, cat: TV/Sport, desc: "liga Endesa"}
- {id: 98, cat: TV/Sport, desc: "Liga MX"}
- {id: 84, cat: TV/Sport, desc: "Liga Sudamericana"}
- {id: 21, cat: TV/Sport, desc: "Major League Soccer"}
- {id: 67, cat: TV/Sport, desc: "MLB"}
- {id: 63, cat: TV/Sport, desc: "MMA"}
- {id: 58, cat: TV/Sport, desc: "MotoGP"}
- {id: 92, cat: TV/Sport, desc: "Motorsport"}
- {id: 16, cat: TV/Sport, desc: "NBA"}
- {id: 57, cat: TV/Sport, desc: "NBA Playoffs"}
- {id: 14, cat: TV/Sport, desc: "NCAA"}
- {id: 34, cat: TV/Sport, desc: "NFL"}
- {id: 17, cat: TV/Sport, desc: "NHL"}
- {id: 99, cat: TV/Sport, desc: "NordicBet 1st division Danish"}
- {id: 36, cat: TV/Sport, desc: "Old classic games"}
- {id: 68, cat: TV/Sport, desc: "Olympic Games 2016"}
- {id: 106, cat: TV/Sport, desc: "Olympic games in tokyo 2021"}
- {id: 28, cat: TV/Sport, desc: "Other domestic leagues"}
- {id: 55, cat: TV/Sport, desc: "Paulista A1"}
- {id: 26, cat: TV/Sport, desc: "Portuguese League"}
- {id: 104, cat: TV/Sport, desc: "Qatar Stars League"}
- {id: 65, cat: TV/Sport, desc: "ROH"}
- {id: 61, cat: TV/Sport, desc: "Rollan Garros"}
- {id: 105, cat: TV/Sport, desc: "RPFL"}
- {id: 29, cat: TV/Sport, desc: "Rugby"}
- {id: 108, cat: TV/Sport, desc: "Saudi Pro League"}
- {id: 82, cat: TV/Sport, desc: "Scotland Premiership"}
- {id: 9, cat: TV/Sport, desc: "Serie A"}
- {id: 33, cat: TV/Sport, desc: "SHL"}
- {id: 47, cat: TV/Sport, desc: "Ski Jumping"}
- {id: 71, cat: TV/Sport, desc: "Snooker"}
- {id: 25, cat: TV/Sport, desc: "Sport video"}
- {id: 44, cat: TV/Sport, desc: "Sudamericana"}
- {id: 52, cat: TV/Sport, desc: "Taca Da Liga"}
- {id: 24, cat: TV/Sport, desc: "Tennis"}
- {id: 64, cat: TV/Sport, desc: "TNA"}
- {id: 56, cat: TV/Sport, desc: "Torneo Premiera A"}
- {id: 102, cat: TV/Sport, desc: "Turkish Basketball Super Leagu"}
- {id: 75, cat: TV/Sport, desc: "Turkish Super Lig"}
- {id: 3, cat: TV/Sport, desc: "UCL"}
- {id: 107, cat: TV/Sport, desc: "UEFA Conference League"}
- {id: 4, cat: TV/Sport, desc: "UEL"}
- {id: 60, cat: TV/Sport, desc: "UFC"}
- {id: 93, cat: TV/Sport, desc: "UFS"}
- {id: 35, cat: TV/Sport, desc: "Volleyball"}
- {id: 101, cat: TV/Sport, desc: "VTB United League"}
- {id: 5, cat: TV/Sport, desc: "WC Qualification"}
- {id: 1, cat: TV/Sport, desc: "World Cup"}
- {id: 27, cat: TV/Sport, desc: "World Cup 2014"}
- {id: 48, cat: TV/Sport, desc: "WWE"}
modes:
search: [q]
tv-search: [q, season, ep]
settings:
- name: cookie
type: text
label: Cookie
- name: info_cookie
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: freeleech
type: checkbox
label: Search freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 2
options:
2: created
4: seeders
3: size
1: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: info_results
type: info
label: Results Per Page
default: For best results, change the <b>Torrents per page:</b> setting to <b>100</b> on your account profile.
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: index.php
selector: a[href="logout.php"]
download:
selectors:
- selector: a[href^="download.php?id="]
attribute: href
search:
paths:
- path: browse.php
inputs:
$raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
search: "{{ .Keywords }}"
# 1 active, 2 dead, 3 free
incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
# 0 match again, 1 match like
s: 0
# 0 name, 1 description
stype: 0
sort: "{{ .Config.sort }}"
type: "{{ .Config.type }}"
rows:
selector: table.embedded > tbody > tr:has(a[href^="browse.php?cat="])
fields:
category:
selector: a[href^="browse.php?cat="]
attribute: href
filters:
- name: querystring
args: cat
_vip:
selector: img[src="/pic/vipbig.gif"]
attribute: alt
optional: true
title:
selector: a[href^="details.php?id="]
filters:
- name: append
args: "{{ if .Result._vip }} VIP ONLY{{ else }}{{ end }}"
details:
selector: a[href^="details.php?id="]
attribute: href
download:
selector: a[href^="details.php?id="]
attribute: href
filters:
- name: replace
args: ["details.php?id=", "download.php?id="]
size:
selector: td:nth-last-child(4)
seeders:
selector: td:nth-last-child(3)
filters:
- name: split
args: ["|", 0]
leechers:
selector: td:nth-last-child(3)
filters:
- name: split
args: ["|", 0]
date:
selector: td:nth-last-child(1)
filters:
- name: regexp
args: "^(.+?)\\d{4}"
- name: timeago
description:
selector: img[src="/pic/vipbig.gif"]
attribute: title
downloadvolumefactor:
case:
img[src="/pic/freedownload.gif"]: 0
"*": 1
uploadvolumefactor:
text: 1
# engine n/a

View File

@@ -0,0 +1,213 @@
---
id: thecrazyones
name: The Crazy Ones
description: "The Crazy Ones is a Private GERMAN tracker for MOVIES / TV / GENERAL"
language: de-DE
type: private
encoding: UTF-8
links:
- https://thecrazyones.hopto.org/
caps:
categorymappings:
# Anime
- {id: 123, cat: TV/Anime, desc: "Anime Alles"}
# Movie
- {id: 122, cat: Movies/UHD, desc: "Movie 4K"}
- {id: 114, cat: Movies/DVD, desc: "Movie DVD"}
- {id: 118, cat: Movies, desc: "Movie Klassiker"}
- {id: 124, cat: Movies, desc: "Movie Pack"}
- {id: 28, cat: Movies/SD, desc: "Movie SD"}
- {id: 32, cat: Movies/HD, desc: "Movie HD"}
- {id: 26, cat: Movies/3D, desc: "Movie 3D"}
# Serien
- {id: 139, cat: TV/HD, desc: "Serien HD"}
- {id: 57, cat: TV/SD, desc: "Serien SD"}
- {id: 60, cat: TV, desc: "Serien Klassiker"}
- {id: 152, cat: TV/SD, desc: "Serien DVD"}
- {id: 59, cat: TV, desc: "Serien Pack"}
# Doku
- {id: 121, cat: TV/Documentary, desc: "Doku Pack"}
- {id: 14, cat: TV/Documentary, desc: "Doku HD"}
- {id: 15, cat: TV/Documentary, desc: "Doku SD"}
# Software
- {id: 11, cat: PC/Mobile-Other, desc: "App Other"}
- {id: 9, cat: PC, desc: "App Linux"}
- {id: 12, cat: PC/0day, desc: "App Win"}
- {id: 10, cat: PC/Mac, desc: "App Mac"}
# Game
- {id: 120, cat: Console/PS3, desc: "Game PlayStation"}
- {id: 16, cat: Console, desc: "Game Wimmelbild"}
- {id: 17, cat: PC/Games, desc: "Game PC"}
- {id: 20, cat: Console/PSP, desc: "Game PSP"}
- {id: 22, cat: Console/Wii, desc: "Game Wii"}
- {id: 24, cat: Console/XBox, desc: "Game XBOX"}
# Music
- {id: 48, cat: Audio, desc: "Music Album"}
- {id: 52, cat: Audio, desc: "Music Pack"}
- {id: 55, cat: Audio/Video, desc: "Music Video"}
- {id: 125, cat: Audio, desc: "Music Mixe"}
- {id: 49, cat: Audio, desc: "Music Charts"}
- {id: 54, cat: Audio, desc: "Music Pack"}
- {id: 126, cat: Audio, desc: "Music Pack mp"}
# Sport
- {id: 61, cat: TV/Sport, desc: "Sport Other"}
# Sonstiges
- {id: 63, cat: Audio/Audiobook, desc: "Sonstiges A-Book"}
- {id: 96, cat: Books/EBook, desc: "Sonstiges E-Book"}
- {id: 69, cat: Books, desc: "Sonstiges Tutorial"}
- {id: 71, cat: Books/Other, desc: "Sonstiges Other"}
# Internt'l
- {id: 102, cat: TV/SD, desc: "Internt'l Serie SD"}
- {id: 103, cat: Movies/SD, desc: "Internt'l Movie SD"}
- {id: 106, cat: Books/EBook, desc: "Internt'l E-Book"}
- {id: 115, cat: Movies/DVD, desc: "Internt'l DVD"}
- {id: 98, cat: Movies/HD, desc: "Internt'l Movie HD"}
- {id: 99, cat: TV/HD, desc: "Internt'l Serie HD"}
- {id: 105, cat: TV/Documentary, desc: "Internt'l Doku"}
- {id: 104, cat: Other, desc: "Internt'l Misc"}
- {id: 107, cat: Audio/Audiobook, desc: "Internt'l A-Book"}
# XXX
- {id: 75, cat: XXX/Pack, desc: "XXX Pack"}
- {id: 113, cat: XXX/DVD, desc: "XXX DVD"}
- {id: 73, cat: XXX/x264, desc: "XXX HD"}
- {id: 76, cat: XXX/SD, desc: "XXX SD"}
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: pin
type: text
label: Pin
- name: freeleech
type: checkbox
label: Filter freeleech only
default: false
- 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
- name: info_tpp
type: info
label: Results Per Page
default: For best results, change the <b>Anzahl der Torrents beim Durchsuchen</b> <i>Torrents per page:</i> setting to <b>60</b> on your account profile. The default is <i>15</i>.
login:
path: login.php
method: form
form: form[action="/login.php"]
cookies: ["JAVA=OK"] # avoid jscheck redirect
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
pin: "{{ .Config.pin }}"
error:
- selector: div#login_error
test:
path: index.php
selector: a[href="logout.php"]
search:
paths:
- path: selection.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 name, 1 descr, 2 both
blah: 0
orderby: "{{ .Config.sort }}"
sort: "{{ .Config.type }}"
rows:
selector: "div.selection_wrap{{ if .Config.freeleech }}:has(:root:has(div.onlyup)){{ else }}{{ end }}"
fields:
category_p1:
selector: div.kat_cat_pic_name
category_p2:
selector: div.kat_cat_pic_name_b
categorydesc:
text: "{{ .Result.category_p1 }} {{ .Result.category_p2 }}"
title:
selector: a.selection_a
filters:
- name: re_replace
args: ["^\\[[\\w ]*\\]\\s?", ""]
details:
selector: a.selection_a
attribute: href
download:
selector: a[href^="download_ssl.php?torrent="]
attribute: href
poster:
selector: div[id^="details"] img
attribute: src
size:
selector: div.selection_unter_ad
grabs:
selector: div.selection_unter_ae
date_day:
# Heute 13:30:04
# Gestern 09:10:10
selector: div.selection_unter_ab:not(:contains("."))
optional: true
filters:
- name: replace
args: ["Heute", "Today"]
- name: replace
args: ["Gestern", "Yesterday"]
- name: append
args: " +01:00" # CET
date_year:
# 30.02.2018 um 23:12:50
selector: div.selection_unter_ab:contains(".")
optional: true
filters:
- name: replace
args: [" um", ""]
- name: append
args: " +01:00" # CET
- name: dateparse
args: "dd.MM.yyyy HH:mm:ss zzz"
date:
text: "{{ if or .Result.date_year .Result.date_day }}{{ or .Result.date_year .Result.date_day }}{{ else }}now{{ end }}"
seeders:
selector: div.selection_unter_aa
leechers:
selector: div.selection_unter_aaa
downloadvolumefactor:
case:
":root:has(div.onlyup)": 0
"*": 1
uploadvolumefactor:
text: 1
# global MR is 0.7 but torrents must be seeded for 2 days regardless of ratio
# minimumratio:
# text: 0.7
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# 3xT

View File

@@ -126,7 +126,7 @@ login:
error:
- selector: div#login_error
test:
path: selection.php
path: index.php
selector: a[href="logout.php"]
search:
@@ -172,6 +172,8 @@ search:
attribute: src
size:
selector: div.selection_unter_ad
grabs:
selector: div.selection_unter_ae
date_day:
# Heute 13:30:04
# Gestern 09:10:10
@@ -182,6 +184,8 @@ search:
args: ["Heute", "Today"]
- name: replace
args: ["Gestern", "Yesterday"]
- name: append
args: " +01:00" # CET
date_year:
# 30.02.2018 um 23:12:50
selector: div.selection_unter_ab:contains(".")

View File

@@ -14,33 +14,36 @@ legacylinks:
caps:
categorymappings:
# get the cats from https://www.torrentbd.net/feed.php?custom
- {id: 28, cat: TV/Anime, desc: "Anime - All"}
- {id: 65, cat: PC/Mobile-Android, desc: "Apps - Android"}
- {id: 18, cat: PC, desc: "Apps - PC"}
- {id: 19, cat: PC/Mac, desc: "Apps - Mac"}
- {id: 20, cat: PC, desc: "Apps - Linux"}
- {id: 7, cat: Movies, desc: "Bangla - Movies | Natok"}
- {id: 49, cat: TV, desc: "Cartoons - All"}
- {id: 9, cat: TV/Documentary, desc: "Documentaries - All"}
- {id: 36, cat: Books/EBook, desc: "Other - E-Books"}
- {id: 77, cat: Books/EBook, desc: "E-Books - Manga"}
- {id: 73, cat: Books/Comics, desc: "E-Books - Comics"}
- {id: 77, cat: Books/EBook, desc: "E-Books - Manga"}
- {id: 10, cat: PC/Games, desc: "Games - PC"}
- {id: 60, cat: PC/Games, desc: "Games - Cracks | Patches"}
- {id: 52, cat: PC/Games, desc: "Games - Updates | DLC"}
- {id: 43, cat: Console/PS3, desc: "Games - PS3"}
- {id: 81, cat: PC/Games, desc: "Games - Backup"}
- {id: 43, cat: Console/PS3, desc: "Games - PlayStation"}
- {id: 14, cat: Console/XBox, desc: "Games - Xbox"}
- {id: 17, cat: Console, desc: "Games - Other"}
- {id: 80, cat: Movies/UHD, desc: "Movies - 4K BluRay"}
- {id: 47, cat: Movies/HD, desc: "Movies - 1080p BluRay"}
- {id: 42, cat: Movies/BluRay, desc: "Movies - 720p BluRay"}
- {id: 76, cat: Movies/BluRay, desc: "Movies - Lossless BluRay"}
- {id: 24, cat: Movies/SD, desc: "Movies - SD BluRay"}
- {id: 55, cat: Movies, desc: "Movies - WEB-DL | WEBRip"}
- {id: 86, cat: Movies/UHD, desc: "Movies - Blu-Ray Lossless 4K"}
- {id: 76, cat: Movies/BluRay, desc: "Movies - Blu-Ray Lossless 1080p"}
- {id: 80, cat: Movies/UHD, desc: "Movies - Blu-Ray 4K"}
- {id: 47, cat: Movies/HD, desc: "Movies - Blu-Ray 1080p"}
- {id: 42, cat: Movies/BluRay, desc: "Movies - Blu-Ray 720p"}
- {id: 24, cat: Movies/SD, desc: "Movies - Blu-Ray SD"}
- {id: 82, cat: Movies/WEB-DL, desc: "Movies - WEB-DL 4K"}
- {id: 55, cat: Movies/WEB-DL, desc: "Movies - WEB-DL"}
- {id: 83, cat: Movies/WEB-DL, desc: "Movies - WEBRip"}
- {id: 46, cat: Movies/HD, desc: "Movies - HD-Rip"}
- {id: 1, cat: Movies/SD, desc: "Movies - DVDRip"}
- {id: 56, cat: Movies/SD, desc: "Movies - DVDSCR | R5 | R6"}
- {id: 4, cat: Movies/SD, desc: "Movies - CAM | TS | TC"}
- {id: 4, cat: Movies/SD, desc: "Movies - CAM | TS | DVDScr | Pre-DVD"}
- {id: 67, cat: Movies/3D, desc: "Movies - 3D"}
- {id: 3, cat: Movies, desc: "Movies - Unrated"}
- {id: 2, cat: Movies, desc: "Movies - Packs"}
@@ -50,17 +53,18 @@ caps:
- {id: 64, cat: Audio, desc: "Music - Concerts | Live Shows"}
- {id: 26, cat: Audio, desc: "Music - Radio"}
- {id: 38, cat: PC/Mobile-Other, desc: "Other - Mobile Phone"}
- {id: 44, cat: Other, desc: "Religious - Islam"}
- {id: 37, cat: Other, desc: "Other - Images"}
- {id: 40, cat: Other, desc: "Other - Other | Misc"}
- {id: 44, cat: Other, desc: "Other - Religious"}
- {id: 40, cat: Other, desc: "Other - Miscellaneous"}
- {id: 70, cat: TV/Sport, desc: "Sports - Football"}
- {id: 6, cat: TV/Sport, desc: "Sports - Pro Wrestling"}
- {id: 48, cat: TV/Sport, desc: "Sports - All"}
- {id: 39, cat: Other, desc: "Other - Tutorial"}
- {id: 5, cat: TV/SD, desc: "TV - Episodes"}
- {id: 61, cat: TV/HD, desc: "TV - Episodes - 720p | 1080p"}
- {id: 41, cat: TV/SD, desc: "TV - Packs"}
- {id: 62, cat: TV/HD, desc: "TV - Packs - HD | BRRip"}
- {id: 39, cat: Other, desc: "Tutorials - All"}
- {id: 84, cat: TV/UHD, desc: "TV - Episodes 4K"}
- {id: 61, cat: TV/HD, desc: "TV - Episodes 720p | 1080p"}
- {id: 5, cat: TV/SD, desc: "TV - Episodes SD"}
- {id: 85, cat: TV/UHD, desc: "TV - Packs 4K"}
- {id: 62, cat: TV/HD, desc: "TV - Packs - 720p | 1080p"}
- {id: 41, cat: TV/SD, desc: "TV - Packs SD"}
- {id: 66, cat: TV, desc: "TV - Awards | Ceremonies"}
modes:

View File

@@ -1,7 +1,7 @@
---
id: torrentdownload
name: TorrentDownload
description: "TorrentDownload is a Public general torrent index"
description: "TorrentDownload is a Public torrent meta-search engine"
language: en-US
type: public
encoding: UTF-8
@@ -47,6 +47,7 @@ caps:
- {id: AnimeAnimeOther, cat: TV/Anime, desc: "Anime Other"}
- {id: Applications, cat: PC/0day, desc: Applications}
- {id: ApplicationsAndroid, cat: PC/Mobile-Android, desc: "Applications Android"}
- {id: ApplicationsWindows, cat: PC/0day, desc: "Applications Windows"}
- {id: AudioBooks, cat: Audio/Audiobook, desc: "Books Audiobooks"}
- {id: AudioAudiobooks, cat: Audio/Audiobook, desc: "Books Audiobooks"}
- {id: AudioLossless, cat: Audio/Lossless, desc: "Audio Lossless"}
@@ -58,6 +59,7 @@ caps:
- {id: BooksMagazines, cat: Books/Mags, desc: "Books Magazines"}
- {id: BooksFiction, cat: Books, desc: "Books Fiction"}
- {id: BooksNonfiction, cat: Books, desc: "Books Nonfiction"}
- {id: BooksTextbooks, cat: Books, desc: "Books Textbooks"}
- {id: Ebooks, cat: Books/EBook, desc: "Books Ebooks"}
- {id: Games, cat: Console, desc: Games}
- {id: GamesWindows, cat: PC/Games, desc: "Games Windows"}
@@ -67,7 +69,9 @@ caps:
- {id: MoviesCrime, cat: Movies, desc: "Movies Crime"}
- {id: MoviesDocumentary, cat: TV/Documentary, desc: "Movies Documentary"}
- {id: MoviesDubbedMovies, cat: Movies, desc: "Movies Dubbed Movies"}
- {id: MoviesHighresMovies, cat: Movies, desc: "Movies Highres Movies"}
- {id: MoviesMusicvideos, cat: Audio/Video, desc: "Movies Musicvideos"}
- {id: MoviesThriller, cat: Movies, desc: "Movies Thriller"}
- {id: Music, cat: Audio, desc: Music}
- {id: MusicHardrock, cat: Audio, desc: "Music Hardrock"}
- {id: MusicMp, cat: Audio/MP3, desc: "Music Mp3"}
@@ -91,6 +95,7 @@ caps:
- {id: Television, cat: TV, desc: Television}
- {id: VideoMobile, cat: Movies, desc: "Movies Video Mobile"}
- {id: VideoMovies, cat: Movies, desc: "Video Movies"}
- {id: VideoMusic, cat: Audio/Video, desc: "Video Music"}
- {id: XXX, cat: XXX, desc: XXX}
- {id: XXXVideo, cat: XXX, desc: "XXX Video"}
- {id: XXXHDVideo, cat: XXX, desc: "XXX HD Video"}
@@ -119,7 +124,7 @@ download:
search:
paths:
- path: "{{ if .Keywords }}search{{ re_replace .Config.sort \"_\" \"\" }}?q={{ .Keywords }}{{ else }}/{{ end }}"
- path: "search{{ re_replace .Config.sort \"_\" \"\" }}?q={{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}"
rows:
selector: table.table2 > tbody > tr:has(span.smallish)

View File

@@ -37,7 +37,7 @@ settings:
search:
paths:
- path: "search/{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}/"
- path: "search/{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}"
rows:
selector: table#archiveResult tbody tr:has(a[href^="magnet:?xt="])

View File

@@ -7,9 +7,8 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentqq287.com/
- https://torrentqq288.com/
legacylinks:
- https://torrentqq272.com/
- https://torrentqq273.com/
- https://torrentqq274.com/
- https://torrentqq275.com/
@@ -24,6 +23,7 @@ legacylinks:
- https://torrentqq284.com/
- https://torrentqq285.com/
- https://torrentqq286.com/
- https://torrentqq287.com/
caps:
categorymappings:

View File

@@ -7,10 +7,8 @@ type: public
encoding: UTF-8
followredirect: true
links:
- https://torrentsir127.com/
- https://torrentsir128.com/
legacylinks:
- http://torrentsir118.com/
- https://torrentsir118.com/
- http://torrentsir119.com/
- https://torrentsir119.com/
- http://torrentsir120.com/
@@ -29,6 +27,8 @@ legacylinks:
- https://torrentsir126.com/
- http://torrentsir127.com/
- httsp://torrentsir127.com/
- https://torrentsir127.com/
- http://torrentsir128.com/
caps:
categorymappings:

View File

@@ -7,7 +7,7 @@ type: public
encoding: UTF-8
requestDelay: 2
links:
- https://www.torrentz2beta.pro/
- https://torrentz2beta.online/
legacylinks:
- https://torrentz2.org.in/
- https://torrentzeu.org/
@@ -20,47 +20,14 @@ legacylinks:
- https://torrentz2beta.com/
- https://torrentz2beta.in/
- https://eu.torrentz2beta.in/
- https://torrentz2beta.online/
- https://www.torrentz2beta.com/
- https://torrentz2beta.asia/
- https://www.torrentz2beta.pro/
caps:
categorymappings:
- {id: "Applications(Android)", cat: PC/Mobile-Android, desc: "Applications(Android)"}
- {id: "Applications(IOS (iPad/iPhone))", cat: PC/Mobile-iOS, desc: "Applications(IOS (iPad/iPhone))"}
- {id: "Applications(Mac)", cat: PC/Mac, desc: "Applications(Mac)"}
- {id: "Applications(UNIX)", cat: PC/ISO, desc: "Applications(UNIX)"}
- {id: "Applications(Windows)", cat: PC/0day, desc: "Applications(Windows)"}
- {id: "Audio(Audio books)", cat: Audio/Audiobook, desc: "Audio(Audio books)"}
- {id: "Audio(FLAC)", cat: Audio/Lossless, desc: "Audio(FLAC)"}
- {id: "Audio(Music)", cat: Audio/MP3, desc: "Audio(Music)"}
- {id: "Audio(Other)", cat: Audio/Other, desc: "Audio(Other)"}
- {id: "Games(Android)", cat: PC/Mobile-Android, desc: "Games(Android)"}
- {id: "Games(Handheld)", cat: Console/Other, desc: "Games(Handheld)"}
- {id: "Games(Mac)", cat: PC/Mac, desc: "Games(Mac)"}
- {id: "Games(Other)", cat: Console/Other, desc: "Games(Other)"}
- {id: "Games(PC)", cat: PC/Games, desc: "Games(PC)"}
- {id: "Games(PSx)", cat: Console/PS3, desc: "Games(PSx)"}
- {id: "Games(Wii)", cat: Console/Wii, desc: "Games(Wii)"}
- {id: "Games(XBOX360)", cat: Console/XBox 360, desc: "Games(XBOX360)"}
- {id: "Other(Comics)", cat: Books/Comics, desc: "Other(Comics)"}
- {id: "Other(E-books)", cat: Books/EBook, desc: "Other(E-books)"}
- {id: "Other(Other)", cat: Other/Misc, desc: "Other(Other)"}
- {id: "Other(Pictures)", cat: Other, desc: "Other"}
- {id: "Porn(HD - Movies)", cat: XXX/x264, desc: "Porn(HD - Movies)"}
- {id: "Porn(Movie clips)", cat: XXX/WEB-DL, desc: "Porn(Movie clips)"}
- {id: "Porn(Movies)", cat: XXX, desc: "Porn(Movies)"}
- {id: "Porn(Other)", cat: XXX/Other, desc: "Porn(Other)"}
- {id: "Porn(Pictures)", cat: XXX/ImageSet, desc: "Porn(Pictures)"}
- {id: "Video()", cat: Movies, desc: "Movies"}
- {id: "Video(3D)", cat: Movies/3D, desc: "Movies(3D)"}
- {id: "Video(HD - Movies)", cat: Movies/HD, desc: "Movies(HD)"}
- {id: "Video(HD - TV shows)", cat: TV/HD, desc: "TV(HD)"}
- {id: "Video(Movies DVDR)", cat: Movies/DVD, desc: "Movies(DVDR)"}
- {id: "Video(Movies)", cat: Movies, desc: "Movies"}
- {id: "Video(Music videos)", cat: Audio/Video, desc: "Video(Music videos)"}
- {id: "Video(Other)", cat: Other, desc: "Video(Other)"}
- {id: "Video(TV shows)", cat: TV, desc: "TV"}
- {id: TV, cat: TV, desc: TV}
- {id: Movies, cat: Movies, desc: Movies}
modes:
search: [q]
@@ -71,85 +38,58 @@ caps:
settings: []
download:
selectors:
- selector: a[href^="magnet:?xt="]
attribute: href
search:
paths:
# https://www.torrentz2beta.pro/search.php?q=+
- path: search.php
- path: search.php
# https://torrentz2beta.online/beta/search.php?q=2023
- path: beta/search.php
- path: beta/search.php
inputs:
page: 2
inputs:
q: "{{ if .Keywords }}{{ .Keywords }}{{ else }}+{{ end }}"
keywordsfilters:
- name: re_replace
args: ["(\\w+)", "+$1"] # prepend + to each word
q: "{{ if .Keywords }}{{ .Keywords }}{{ else }}{{ .Today.Year }}{{ end }}"
rows:
selector: table.table-responsive > tbody > tr
selector: table.selectable > tbody > tr
fields:
title:
selector: td[data-title="Name"]
category_provided:
selector: td[data-title="Category"]
selector: td:first-child
category_is_tv_show:
text: "{{ .Result.title }}"
filters:
- name: regexp
args: "\\b(S\\d+(?:E\\d+)?)\\b"
args: "\\b([S|s]\\d+(?:[E|e]\\d+)?)\\b"
category:
# some tv have category as video() which can also be movies, so we look for the SxxExx to tag TV
text: "{{ if .Result.category_is_tv_show }}Video(TV shows){{ else }}{{ .Result.category_provided }}{{ end }}"
text: "{{ if .Result.category_is_tv_show }}TV{{ else }}Movies{{ end }}"
details:
text: /
selector: td:last-child > button
attribute: onclick
filters:
- name: replace
args: ["submitPage('", "page.php?url="]
- name: replace
args: ["')", ""]
download:
selector: a[href^="magnet:?"]
attribute: href
text: "{{ .Result.details }}"
seeders:
text: 1
selector: td:nth-child(2)
leechers:
text: 1
selector: td:nth-child(3)
size:
selector: td[data-title="Description"]
filters:
- name: regexp
args: Size (.+?),
date_year:
# 01-04 2021
selector: td[data-title="Description"]:not(:contains(":"))
optional: true
filters:
- name: regexp
args: Uploaded (\d{2}-\d{2}.\d{4})
- name: replace
args: ["\xA0", " "]
- name: dateparse
args: "MM-dd yyyy"
date_time:
# 08-25 20:12
selector: td[data-title="Description"]:contains(":"):not(:contains("day"))
optional: true
filters:
- name: regexp
args: Uploaded (\d{2}-\d{2}.\d{2}:\d{2})
- name: replace
args: ["\xA0", " "]
- name: dateparse
args: "MM-dd HH:mm"
date_day:
# Y-day 16:23
# Today 13:31
selector: td[data-title="Description"]:contains("day")
optional: true
filters:
- name: regexp
args: Uploaded.(.+?),
- name: replace
args: ["\xA0", " "]
- name: replace
args: ["Y-day", "Yesterday"]
- name: fuzzytime
selector: td:nth-child(4)
date:
text: "{{ if or .Result.date_year .Result.date_time .Result.date_day }}{{ or .Result.date_year .Result.date_time .Result.date_day }}{{ else }}now{{ end }}"
# Nov. 05th '23
selector: td:nth-child(5)
filters:
- name: re_replace
args: ["(\\.|'|st|nd|rd|th])", ""]
- name: dateparse
args: "MMM dd yy"
downloadvolumefactor:
text: 0
uploadvolumefactor:

View File

@@ -1,175 +0,0 @@
---
id: unleashthecartoons
name: UnleashTheCartoons
description: "UnleashTheCartoons is a ROMANIAN Private Torrent Tracker for ANIMATED MOVIES / TV"
language: ro-RO
type: private
encoding: UTF-8
links:
- https://unleashthecartoons.world/
caps:
categorymappings:
- {id: 1, cat: Movies, desc: "Movies"}
- {id: 2, cat: TV, desc: "TV Series"}
- {id: 3, cat: TV/Anime, desc: "Anime"}
- {id: 4, cat: Books, desc: "Ebooks"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-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: multilang
type: checkbox
label: Replace MULTi by another language in release name
default: false
- name: multilanguage
type: select
label: Replace MULTi by this language
default: Romanian
options:
Romanian: Romanian
MULTi Romanian: MULTi Romanian
English: English
MULTi English: MULTi English
- name: sort
type: select
label: Sort requested from site
default: id
options:
id: created
seeders: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
login:
path: account-login.php
method: post
inputs:
username: "{{ .Config.username }}"
password: "{{ .Config.password }}"
returnto: /
error:
- selector: div.myFrame-caption:contains("Error")
message:
selector: div.myFrame-content
- selector: div.myFrame-caption:contains("Access denied")
message:
selector: div.myFrame-content
test:
path: /
selector: a[href="account-logout.php"]
search:
paths:
# https://unleashthecartoons.world/torrents-search.php?search=&cat=0&incldead=1&freeleech=0&inclexternal=0&lang=0&sort=id&order=desc
- path: torrents-search.php
inputs:
$raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
search: "{{ .Keywords }}"
# 0 active, 1 incldead, 2 onlydead
incldead: 1
# 0 all, 1 nofree, 2 onlyfree
freeleech: "{{ if .Config.freeleech }}2{{ else }}0{{ end }}"
# 0 Local/External, 1 Local Only, 2 External Only
inclexternal: 0
# 0 all, 1 Romanian, 2 English, 3 Romanian/English
lang: 0
sort: "{{ .Config.sort }}"
order: "{{ .Config.type }}"
# does not support imdbid searches, does not return imdb link in results
keywordsfilters:
- name: re_replace
args: ["\\.", " "]
- name: re_replace
args: ["\\s+", " "]
- name: re_replace
args: ["(\\w+)", "+$1"] # prepend + to each word
rows:
selector: table.ttable_headinner tr.t-row
fields:
category:
selector: a[href*="cat="]
attribute: href
filters:
- name: querystring
args: cat
_lang:
optional: true
selector: img[src*="images/languages"]
attribute: alt
filters:
- name: replace
args: ["Ro/Eng", "MULTi"]
title_phase1:
selector: a[href^="torrents-details.php?id="]
filters:
- name: append
args: "{{ if .Result._lang }} ({{ .Result._lang }}){{ else }}{{ end }}"
title_multilang:
text: "{{ .Result.title_phase1 }}"
filters:
- name: re_replace
args: ["(?i)\\b(MULTI(?!.*(?:ROMAINIAN|ENGLISH|\\bRO\\b)))\\b", "{{ .Config.multilanguage }}"]
title:
text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase1 }}{{ end }}"
details:
selector: a[href^="torrents-details.php?id="]
attribute: href
filters:
- name: replace
args: ["&hit=1", ""] # avoid redirect
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: a[onMouseover]
attribute: onMouseover
filters:
- name: regexp
args: src=(.+?)>
- name: replace
args: ["images/nocover.png", ""]
size:
selector: td:nth-last-child(7)
date:
selector: td:nth-last-child(3)
seeders:
selector: td:nth-last-child(6)
leechers:
selector: td:nth-last-child(5)
downloadvolumefactor:
case:
img[src="images/free.png"]: 0
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
minimumseedtime:
# 2 days (as seconds = 2 x 24 x 60 x 60)
text: 172800
# TorrentTrader

View File

@@ -29,7 +29,7 @@ search:
s: "{{ .Keywords }}"
rows:
selector: article:has(.entry-title)
selector: article:has(a)
filters:
- name: andmatch

View File

@@ -29,11 +29,6 @@ namespace Jackett.Common.Indexers
public override string Name => "AudioBook Bay";
public override string Description => "AudioBook Bay (ABB) is a public Torrent Tracker for AUDIOBOOKS";
public override string SiteLink { get; protected set; } = "https://audiobookbay.is/";
public override string[] AlternativeSiteLinks => new[]
{
"https://audiobookbay.is/",
"https://audiobookbay.se/"
};
public override string[] LegacySiteLinks => new[]
{
"https://audiobookbay.la/",
@@ -60,7 +55,8 @@ namespace Jackett.Common.Indexers
"https://audiobookbay.unblockit.pet/",
"https://audiobookbay.unblockit.ink/",
"https://audiobookbay.unblockit.bio/", // error 502
"https://audiobookbay.li/"
"https://audiobookbay.li/",
"https://audiobookbay.se/" // redirects to .is but has invalid CA
};
public override string Language => "en-US";
public override string Type => "public";
@@ -75,7 +71,7 @@ namespace Jackett.Common.Indexers
cacheService: cs,
configData: new ConfigurationData())
{
webclient.requestDelay = 3.1;
webclient.requestDelay = 5.1;
}
private TorznabCapabilities SetCapabilities()
@@ -88,66 +84,8 @@ namespace Jackett.Common.Indexers
}
};
// Age
caps.Categories.AddCategoryMapping("children", TorznabCatType.AudioAudiobook, "Children");
caps.Categories.AddCategoryMapping("teen-young-adult", TorznabCatType.AudioAudiobook, "Teen & Young Adult");
caps.Categories.AddCategoryMapping("adults", TorznabCatType.AudioAudiobook, "Adults");
caps.Categories.AddCategoryMapping(1, TorznabCatType.AudioAudiobook);
// Category
caps.Categories.AddCategoryMapping("postapocalyptic", TorznabCatType.AudioAudiobook, "(Post)apocalyptic");
caps.Categories.AddCategoryMapping("action", TorznabCatType.AudioAudiobook, "Action");
caps.Categories.AddCategoryMapping("adventure", TorznabCatType.AudioAudiobook, "Adventure");
caps.Categories.AddCategoryMapping("art", TorznabCatType.AudioAudiobook, "Art");
caps.Categories.AddCategoryMapping("autobiography-biographies", TorznabCatType.AudioAudiobook, "Autobiography & Biographies");
caps.Categories.AddCategoryMapping("business", TorznabCatType.AudioAudiobook, "Business");
caps.Categories.AddCategoryMapping("computer", TorznabCatType.AudioAudiobook, "Computer");
caps.Categories.AddCategoryMapping("contemporary", TorznabCatType.AudioAudiobook, "Contemporary");
caps.Categories.AddCategoryMapping("crime", TorznabCatType.AudioAudiobook, "Crime");
caps.Categories.AddCategoryMapping("detective", TorznabCatType.AudioAudiobook, "Detective");
caps.Categories.AddCategoryMapping("doctor-who-sci-fi", TorznabCatType.AudioAudiobook, "Doctor Who");
caps.Categories.AddCategoryMapping("education", TorznabCatType.AudioAudiobook, "Education");
caps.Categories.AddCategoryMapping("fantasy", TorznabCatType.AudioAudiobook, "Fantasy");
caps.Categories.AddCategoryMapping("general-fiction", TorznabCatType.AudioAudiobook, "General Fiction");
caps.Categories.AddCategoryMapping("historical-fiction", TorznabCatType.AudioAudiobook, "Historical Fiction");
caps.Categories.AddCategoryMapping("history", TorznabCatType.AudioAudiobook, "History");
caps.Categories.AddCategoryMapping("horror", TorznabCatType.AudioAudiobook, "Horror");
caps.Categories.AddCategoryMapping("humor", TorznabCatType.AudioAudiobook, "Humor");
caps.Categories.AddCategoryMapping("lecture", TorznabCatType.AudioAudiobook, "Lecture");
caps.Categories.AddCategoryMapping("lgbt", TorznabCatType.AudioAudiobook, "LGBT");
caps.Categories.AddCategoryMapping("literature", TorznabCatType.AudioAudiobook, "Literature");
caps.Categories.AddCategoryMapping("litrpg", TorznabCatType.AudioAudiobook, "LitRPG");
caps.Categories.AddCategoryMapping("general-non-fiction", TorznabCatType.AudioAudiobook, "Misc. Non-fiction");
caps.Categories.AddCategoryMapping("mystery", TorznabCatType.AudioAudiobook, "Mystery");
caps.Categories.AddCategoryMapping("paranormal", TorznabCatType.AudioAudiobook, "Paranormal");
caps.Categories.AddCategoryMapping("plays-theater", TorznabCatType.AudioAudiobook, "Plays & Theater");
caps.Categories.AddCategoryMapping("poetry", TorznabCatType.AudioAudiobook, "Poetry");
caps.Categories.AddCategoryMapping("political", TorznabCatType.AudioAudiobook, "Political");
caps.Categories.AddCategoryMapping("radio-productions", TorznabCatType.AudioAudiobook, "Radio Productions");
caps.Categories.AddCategoryMapping("romance", TorznabCatType.AudioAudiobook, "Romance");
caps.Categories.AddCategoryMapping("sci-fi", TorznabCatType.AudioAudiobook, "Sci-Fi");
caps.Categories.AddCategoryMapping("science", TorznabCatType.AudioAudiobook, "Science");
caps.Categories.AddCategoryMapping("self-help", TorznabCatType.AudioAudiobook, "Self-help");
caps.Categories.AddCategoryMapping("spiritual", TorznabCatType.AudioAudiobook, "Spiritual & Religious");
caps.Categories.AddCategoryMapping("sports", TorznabCatType.AudioAudiobook, "Sport & Recreation");
caps.Categories.AddCategoryMapping("suspense", TorznabCatType.AudioAudiobook, "Suspense");
caps.Categories.AddCategoryMapping("thriller", TorznabCatType.AudioAudiobook, "Thriller");
caps.Categories.AddCategoryMapping("true-crime", TorznabCatType.AudioAudiobook, "True Crime");
caps.Categories.AddCategoryMapping("tutorial", TorznabCatType.AudioAudiobook, "Tutorial");
caps.Categories.AddCategoryMapping("westerns", TorznabCatType.AudioAudiobook, "Westerns");
caps.Categories.AddCategoryMapping("zombies", TorznabCatType.AudioAudiobook, "Zombies");
// Category Modifiers
caps.Categories.AddCategoryMapping("anthology", TorznabCatType.AudioAudiobook, "Anthology");
caps.Categories.AddCategoryMapping("bestsellers", TorznabCatType.AudioAudiobook, "Bestsellers");
caps.Categories.AddCategoryMapping("classic", TorznabCatType.AudioAudiobook, "Classic");
caps.Categories.AddCategoryMapping("documentary", TorznabCatType.AudioAudiobook, "Documentary");
caps.Categories.AddCategoryMapping("full-cast", TorznabCatType.AudioAudiobook, "Full Cast");
caps.Categories.AddCategoryMapping("libertarian", TorznabCatType.AudioAudiobook, "Libertarian");
caps.Categories.AddCategoryMapping("military", TorznabCatType.AudioAudiobook, "Military");
caps.Categories.AddCategoryMapping("novel", TorznabCatType.AudioAudiobook, "Novel");
caps.Categories.AddCategoryMapping("short-story", TorznabCatType.AudioAudiobook, "Short Story");
caps.Categories.AddCategoryMapping("other", TorznabCatType.AudioAudiobook, "Other");
return caps;
}
@@ -169,8 +107,7 @@ namespace Jackett.Common.Indexers
var urls = new HashSet<string>
{
SiteLink,
SiteLink + "page/2/",
SiteLink + "page/3/"
SiteLink + "page/2/"
};
foreach (var url in urls)
@@ -188,7 +125,9 @@ namespace Jackett.Common.Indexers
}
if (parameters.Count > 0)
{
searchUrl += $"?{parameters.GetQueryString()}";
}
var response = await RequestWithCookiesAsync(searchUrl);
@@ -197,7 +136,9 @@ namespace Jackett.Common.Indexers
// Stop fetching the next page when less than 15 results are found.
if (pageReleases.Count < 15)
{
break;
}
}
return releases;
@@ -212,11 +153,15 @@ namespace Jackett.Common.Indexers
var hash = dom.QuerySelector("td:contains(\"Info Hash:\") ~ td")?.TextContent.Trim();
if (hash == null)
{
throw new Exception($"Failed to fetch hash from {link}");
}
var title = dom.QuerySelector("div.postTitle h1")?.TextContent.Trim();
if (title == null)
{
throw new Exception($"Failed to fetch title from {link}");
}
title = StringUtil.MakeValidFileName(title, '_', false);
@@ -243,11 +188,15 @@ namespace Jackett.Common.Indexers
var matchFormat = Regex.Match(infoString, @"Format: (.+) \/", RegexOptions.IgnoreCase);
if (matchFormat.Groups[1].Success && matchFormat.Groups[1].Value.Length > 0 && matchFormat.Groups[1].Value != "?")
{
title += $" [{matchFormat.Groups[1].Value.Trim()}]";
}
var matchBitrate = Regex.Match(infoString, @"Bitrate: (.+)File", RegexOptions.IgnoreCase);
if (matchBitrate.Groups[1].Success && matchBitrate.Groups[1].Value.Length > 0 && matchBitrate.Groups[1].Value != "?")
{
title += $" [{matchBitrate.Groups[1].Value.Trim()}]";
}
var matchSize = Regex.Match(infoString, @"File Size: (.+?)s?$", RegexOptions.IgnoreCase);
var size = matchSize.Groups[1].Success ? ParseUtil.GetBytes(matchSize.Groups[1].Value) : 0;
@@ -257,8 +206,7 @@ namespace Jackett.Common.Indexers
var postInfo = row.QuerySelector("div.postInfo")?.FirstChild?.TextContent.Trim().Replace("\xA0", ";") ?? string.Empty;
var matchCategory = Regex.Match(postInfo, @"Category: (.+)$", RegexOptions.IgnoreCase);
var category = matchCategory.Groups[1].Success ? matchCategory.Groups[1].Value.Split(';').Select(c => c.Trim()).ToList() : new List<string>();
var categories = category.SelectMany(MapTrackerCatDescToNewznab).Distinct().ToList();
var genres = matchCategory.Groups[1].Success ? matchCategory.Groups[1].Value.Split(';').Select(c => c.Trim()).ToList() : new List<string>();
releases.Add(new ReleaseInfo
{
@@ -266,14 +214,15 @@ namespace Jackett.Common.Indexers
Details = details,
Link = details,
Title = CleanTitle(title),
Category = categories,
Category = new List<int> { TorznabCatType.AudioAudiobook.ID },
Size = size,
Seeders = 1,
Peers = 1,
Poster = GetPosterUrl(row.QuerySelector("img[src]")?.GetAttribute("src")?.Trim()),
PublishDate = publishDate,
DownloadVolumeFactor = 0,
UploadVolumeFactor = 1
UploadVolumeFactor = 1,
Genres = genres
});
}

View File

@@ -2183,7 +2183,7 @@ namespace Jackett.Common.Indexers
else
release.Category = release.Category.Union(cats).ToList();
}
value = release.Category.ToString() ?? string.Empty;
value = release.Category?.ToString() ?? string.Empty;
break;
case "categorydesc":
if (FieldModifiers.Contains("noappend"))

View File

@@ -584,6 +584,7 @@ namespace Jackett.Updater
"Definitions/spacetorrent.yml",
"Definitions/speed-share.yml",
"Definitions/spidertk.yml",
"Definitions/sporthd.yml",
"Definitions/sukebei-pantsu.yml",
"Definitions/swarmazon.yml", // switched to *-API #13725
"Definitions/t411.yml",
@@ -658,6 +659,7 @@ namespace Jackett.Updater
"Definitions/underverse.yml",
"Definitions/underversel.yml",
"Definitions/uniotaku.yml", // to be migrated to c#
"Definitions/unleashthecartoons.yml",
"Definitions/uploads.yml",
"Definitions/utorrents.yml", // same as SzeneFZ now
"Definitions/vanila.yml",