mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-13 15:34:07 +02:00
Compare commits
16 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
d44408c988 | ||
![]() |
d99de43309 | ||
![]() |
eaa562a20a | ||
![]() |
b124ba469f | ||
![]() |
d002382883 | ||
![]() |
363d08634a | ||
![]() |
2b503e01a1 | ||
![]() |
a838dbcb6c | ||
![]() |
16f96e0419 | ||
![]() |
5fe974afad | ||
![]() |
593bbb37d3 | ||
![]() |
c9fbc7268b | ||
![]() |
a32ad215cd | ||
![]() |
34509d284f | ||
![]() |
2ca7975d3d | ||
![]() |
e8dbaa4a8e |
@@ -107,6 +107,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* RuTracker
|
||||
* Sharewood
|
||||
* SkTorrent
|
||||
* SoundPark
|
||||
* Union Fansub
|
||||
* Vanila
|
||||
* XtreMeZone (MYXZ)
|
||||
@@ -176,6 +177,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* CinemaZ (EuTorrents)
|
||||
* Classix
|
||||
* CrnaBerza
|
||||
* CrazyHD
|
||||
* DanishBits (DB)
|
||||
* Dark-Shadow
|
||||
* Das Unerwartete
|
||||
@@ -200,6 +202,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
|
||||
* FANO.IN
|
||||
* FileList (FL)
|
||||
* Femdomcult
|
||||
* FocusX
|
||||
* Freedom-HD (Freedom Paradise)
|
||||
* FreeTorrent
|
||||
* FullMixMusic
|
||||
|
@@ -60,7 +60,7 @@
|
||||
- {id: 2, cat: Movies, desc: "Filmes: Terror"}
|
||||
- {id: 1, cat: Movies, desc: "Filmes: Ação"}
|
||||
- {id: 80, cat: Movies, desc: "Filmes: Aventura"}
|
||||
- {id: 70, cat: Other, desc: "Fotos: XXX"}
|
||||
- {id: 70, cat: XXX, desc: "Fotos: XXX"}
|
||||
- {id: 79, cat: Console/PS4, desc: "Jogos: Ps4"}
|
||||
- {id: 47, cat: PC/Games, desc: "Jogos: Pc"}
|
||||
- {id: 61, cat: Console, desc: "Jogos: Emuladores e Roms"}
|
||||
@@ -142,18 +142,18 @@
|
||||
error:
|
||||
- selector: div.alert-error
|
||||
test:
|
||||
path: index.php
|
||||
# selector: a[href="account-logout.php"]
|
||||
path: torrents-search.php
|
||||
selector: a[href="account-logout.php"]
|
||||
|
||||
ratio:
|
||||
path: index.php
|
||||
path: torrents-search.php
|
||||
selector: li:contains("Ratio:") a b
|
||||
|
||||
search:
|
||||
paths:
|
||||
# http://amigos-share.club/torrents-search.php?search=&c1=1&c19=1&c36=1&incldead=0&freeleech=0&lang=0sort=id&order=desc&page=1
|
||||
- path: torrents-search.php
|
||||
# site displays just 21 results, no profile options found to change this, so we attempt to fetch 5 pages
|
||||
# site displays just 9 results, no profile options found to change this, so we attempt to fetch 5 pages
|
||||
- path: torrents-search.php
|
||||
inputs:
|
||||
page: 1
|
||||
@@ -185,6 +185,12 @@
|
||||
download:
|
||||
selector: a[href^="download.php?id="]
|
||||
attribute: href
|
||||
banner:
|
||||
selector: a[href^="torrents-details.php?id="]
|
||||
attribute: title
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "src=\"(.*?)\""
|
||||
category:
|
||||
selector: td:first-child img
|
||||
attribute: src
|
||||
@@ -207,7 +213,7 @@
|
||||
"[src$=\"/E-books.png\"]": "67"
|
||||
"[src$=\"/Revista.png\"]": "68"
|
||||
"[src$=\"/Aventura.png\"]": "80"
|
||||
"[src$=\"/XXX.png\"]": "70"
|
||||
"[src$=\"/Revistas-XXX.png\"]": "70"
|
||||
"[src$=\"/Jogos-Ps4.png\"]": "79"
|
||||
"[src$=\"/Jogos-PC.png\"]": "47"
|
||||
"[src$=\"/Jogos-EmuladoreseRoms.png\"]": "61"
|
||||
|
@@ -25,10 +25,19 @@
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
remember: 1
|
||||
error:
|
||||
- selector: form[action*="/login"] .text-red
|
||||
- selector: div.has-error
|
||||
test:
|
||||
path: torrents
|
||||
selector: a[href$="/logout"]
|
||||
|
||||
ratio:
|
||||
path: torrents
|
||||
selector: li:has(i.fa-sync-alt)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "Ratio : (\\d+)"
|
||||
|
||||
search:
|
||||
paths:
|
||||
@@ -36,23 +45,24 @@
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
|
||||
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
|
||||
description: ""
|
||||
uploader: ""
|
||||
imdb: "{{ .Query.IMDBIDShort }}"
|
||||
tvdb: ""
|
||||
tmdb: ""
|
||||
mal: ""
|
||||
sorting: created_at
|
||||
direction: desc
|
||||
sort: "created_at"
|
||||
direction: "desc"
|
||||
qty: 100
|
||||
rows:
|
||||
selector: table > tbody > tr
|
||||
fields:
|
||||
category:
|
||||
selector: a[href*="/category/"]
|
||||
selector: a[href*="/categories/"]
|
||||
attribute: href
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "/category/.*?\\.(\\d+)"
|
||||
args: "/categories/.*?\\.(\\d+)"
|
||||
title:
|
||||
selector: a.view-torrent
|
||||
download:
|
||||
@@ -61,17 +71,28 @@
|
||||
details:
|
||||
selector: a.view-torrent
|
||||
attribute: href
|
||||
banner:
|
||||
optional: true
|
||||
selector: div.torrent-poster img
|
||||
attribute: src
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/600x900", ""]
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
seeders:
|
||||
selector: td:nth-child(7)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
grabs:
|
||||
selector: td:nth-child(6)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d\.]+)
|
||||
imdb:
|
||||
optional: true
|
||||
selector: a[href*="www.imdb.com/title/tt"]
|
||||
attribute: href
|
||||
date:
|
||||
selector: time
|
||||
filters:
|
||||
@@ -100,12 +121,17 @@
|
||||
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech
|
||||
"i[data-original-title=\"Personal Freeleech\"]": "0" # 24 Hour FreeLeech From BON Store
|
||||
"i[data-original-title=\"Special Freeleech\"]": "0" # Special FreeLeech For Certain User Groups
|
||||
"i[data-original-title=\"Freeleech Token\"]": "0" # Freeleech From Token
|
||||
"i[data-original-title=\"Global FreeLeech\"]": "0" # Global Freeleech
|
||||
"i[data-original-title=\"Freeleech\"]": "0" # Freeleech
|
||||
"i[data-original-title=\"Featured\"]": "0" # Featured Torrent
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
|
||||
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
|
||||
"i[data-original-title=\"Double Upload\"]": "2" # Single Torrent Double Upload
|
||||
"i[data-original-title=\"Global Double Upload\"]": "2" # Global Double Upload
|
||||
"i[data-original-title=\"Featured\"]": "2" # Featured Torrent
|
||||
"*": "1"
|
||||
# UNIT3D
|
||||
# UNIT3D 1.9.2
|
||||
|
@@ -240,8 +240,8 @@
|
||||
selector: td a.gen
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: f
|
||||
- name: regexp
|
||||
args: "=(\\d+)\\."
|
||||
size:
|
||||
selector: td a.tr-dl
|
||||
seeders:
|
||||
@@ -258,74 +258,35 @@
|
||||
grabs:
|
||||
optional: true
|
||||
selector: td[title^="Replies"]
|
||||
# date for English
|
||||
# date for English, Russian, Ukrainian
|
||||
date:
|
||||
selector: td[title="Added"] p:last-of-type
|
||||
optional: true
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "2-01-06"
|
||||
# date for Russian
|
||||
date:
|
||||
selector: td[title="Добавлен"] p:last-of-type
|
||||
optional: true
|
||||
selector: td[title="Added"] p:last-of-type, td[title="Добавлен"] p:last-of-type, td[title="Додано"] p:last-of-type
|
||||
filters:
|
||||
# replace month abbreviations
|
||||
- name: replace
|
||||
args: ["Янв", "Jan"]
|
||||
- name: replace
|
||||
args: ["Фев", "Feb"]
|
||||
- name: replace
|
||||
args: ["Мар", "Mar"]
|
||||
- name: replace
|
||||
args: ["Апр", "Apr"]
|
||||
- name: replace
|
||||
args: ["Май", "May"]
|
||||
- name: replace
|
||||
args: ["Июн", "Jun"]
|
||||
- name: replace
|
||||
args: ["Июл", "Jul"]
|
||||
- name: replace
|
||||
args: ["Авг", "Aug"]
|
||||
- name: replace
|
||||
args: ["Сен", "Sep"]
|
||||
- name: replace
|
||||
args: ["Окт", "Oct"]
|
||||
- name: replace
|
||||
args: ["Ноя", "Nov"]
|
||||
- name: replace
|
||||
args: ["Дек", "Dec"]
|
||||
- name: dateparse
|
||||
args: "2-Jan-06"
|
||||
# date for Ukrainian
|
||||
date:
|
||||
selector: td[title="Додано"] p:last-of-type
|
||||
optional: true
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["Січ", "Jan"]
|
||||
- name: replace
|
||||
args: ["Лют", "Feb"]
|
||||
- name: replace
|
||||
args: ["Бер", "Mar"]
|
||||
- name: replace
|
||||
args: ["Кві", "Apr"]
|
||||
- name: replace
|
||||
args: ["Травень", "May"]
|
||||
- name: replace
|
||||
args: ["Чер", "Jun"]
|
||||
- name: replace
|
||||
args: ["Лип", "Jul"]
|
||||
- name: replace
|
||||
args: ["Сер", "Aug"]
|
||||
- name: replace
|
||||
args: ["Вер", "Sep"]
|
||||
- name: replace
|
||||
args: ["Жов", "Oct"]
|
||||
- name: replace
|
||||
args: ["Лис", "Nov"]
|
||||
- name: replace
|
||||
args: ["Грудень", "Dec"]
|
||||
- name: re_replace
|
||||
args: ["Янв|Січ", "Jan"]
|
||||
- name: re_replace
|
||||
args: ["Фев|Лют", "Feb"]
|
||||
- name: re_replace
|
||||
args: ["Мар|Бер", "Mar"]
|
||||
- name: re_replace
|
||||
args: ["Апр|Кві", "Apr"]
|
||||
- name: re_replace
|
||||
args: ["Май|Травень", "May"]
|
||||
- name: re_replace
|
||||
args: ["Июн|Чер", "Jun"]
|
||||
- name: re_replace
|
||||
args: ["Июл|Лип", "Jul"]
|
||||
- name: re_replace
|
||||
args: ["Авг|Сер", "Aug"]
|
||||
- name: re_replace
|
||||
args: ["Сен|Вер", "Sep"]
|
||||
- name: re_replace
|
||||
args: ["Окт|Жов", "Oct"]
|
||||
- name: re_replace
|
||||
args: ["Ноя|Лис", "Nov"]
|
||||
- name: re_replace
|
||||
args: ["Дек|Грудень", "Dec"]
|
||||
- name: dateparse
|
||||
args: "2-Jan-06"
|
||||
downloadvolumefactor:
|
||||
|
@@ -67,7 +67,9 @@
|
||||
filters:
|
||||
# now we put the date at the right place according scene naming rules using .Result.site_date
|
||||
- name: replace
|
||||
args: ["FRENCH", "{{ .Result.site_date }} FRENCH"]
|
||||
args: [" FRENCH", " {{ .Result.site_date }} FRENCH"]
|
||||
- name: replace
|
||||
args: ["MULTI", "{{ .Result.site_date }} MULTI"]
|
||||
- name: replace
|
||||
args: ["TRUEFRENCH", "{{ .Result.site_date }} TRUEFRENCH"]
|
||||
- name: replace
|
||||
|
@@ -50,7 +50,9 @@
|
||||
filters:
|
||||
# now we put the date at the right place according scene naming rules using .Result.site_date
|
||||
- name: replace
|
||||
args: ["FRENCH", "{{ .Result.site_date }} FRENCH"]
|
||||
args: [" FRENCH", " {{ .Result.site_date }} FRENCH"]
|
||||
- name: replace
|
||||
args: ["MULTI", "{{ .Result.site_date }} MULTI"]
|
||||
- name: replace
|
||||
args: ["TRUEFRENCH", "{{ .Result.site_date }} TRUEFRENCH"]
|
||||
- name: replace
|
||||
|
177
src/Jackett.Common/Definitions/crazyhd.yml
Normal file
177
src/Jackett.Common/Definitions/crazyhd.yml
Normal file
@@ -0,0 +1,177 @@
|
||||
---
|
||||
site: crazyhd
|
||||
name: CrazyHD
|
||||
description: "CrazyHD is a BANGLADESHI Private Torrent Tracker for MOVIES / TV / GENERAL"
|
||||
language: en-us
|
||||
type: private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://www.crazyhd.com/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
# Movies
|
||||
- {id: 16, cat: Movies/BluRay, desc: "Movies English Bluray"}
|
||||
- {id: 11, cat: Movies/DVD, desc: "Movies English DVD-RIP"}
|
||||
- {id: 14, cat: Movies, desc: "Movies English CAM"}
|
||||
- {id: 60, cat: Movies/WEBDL, desc: "Movies English HD/WEBRIP"}
|
||||
- {id: 19, cat: Movies/DVD, desc: "Movies Hindi DVDRIP"}
|
||||
- {id: 52, cat: Movies/BluRay, desc: "Movies Hindi Blu Ray"}
|
||||
- {id: 18, cat: Movies/DVD, desc: "Movies Hindi PreDVD"}
|
||||
- {id: 17, cat: Movies, desc: "Movies Hindi CAM"}
|
||||
- {id: 42, cat: Movies, desc: "Movies Tamil"}
|
||||
- {id: 65, cat: Movies/WEBDL, desc: "Movies Hindi Webrip/HDrip"}
|
||||
- {id: 24, cat: Movies, desc: "Movies UNRATED"}
|
||||
- {id: 53, cat: Movies/Foreign, desc: "Movies Other Foreign"}
|
||||
- {id: 64, cat: Movies, desc: "Movies Animated"}
|
||||
- {id: 45, cat: Movies, desc: "Movies Trailers"}
|
||||
- {id: 93, cat: Movies, desc: "Movies Dual Movies"}
|
||||
- {id: 59, cat: Movies, desc: "Movies Pack"}
|
||||
- {id: 94, cat: Movies/UHD, desc: "Movies 4k"}
|
||||
- {id: 62, cat: Movies/3D, desc: "Movies 3D"}
|
||||
# TV
|
||||
- {id: 34, cat: TV, desc: "TV English Series"}
|
||||
- {id: 57, cat: TV, desc: "TV Bangla series"}
|
||||
- {id: 58, cat: TV, desc: "TV Hindi series"}
|
||||
- {id: 28, cat: TV/Sport, desc: "TV Sports"}
|
||||
- {id: 29, cat: TV/Documentary, desc: "TV Documentary"}
|
||||
# Games
|
||||
- {id: 3, cat: PC/Games, desc: "Games PC"}
|
||||
- {id: 75, cat: PC/Phone-Android, desc: "Games Android"}
|
||||
- {id: 77, cat: PC/Phone-IOS, desc: "Games Ipad/Iphone"}
|
||||
- {id: 79, cat: PC/Phone-Other, desc: "Games Other Platforms"}
|
||||
- {id: 61, cat: PC/Games, desc: "Games trailer"}
|
||||
- {id: 90, cat: Console/PS4, desc: "Games Ps4"}
|
||||
- {id: 86, cat: Console/PS3, desc: "Games xbox / ps3"}
|
||||
- {id: 92, cat: PC/Games, desc: "Games nrated"}
|
||||
# Software
|
||||
- {id: 7, cat: PC/0day, desc: "Software Windows"}
|
||||
- {id: 20, cat: PC/Phone-Android, desc: "Software Android Apps"}
|
||||
- {id: 83, cat: PC/Phone-IOS, desc: "Software Iphone Apps"}
|
||||
- {id: 39, cat: PC, desc: "Software Tutorials"}
|
||||
- {id: 63, cat: PC, desc: "Software Linux"}
|
||||
- {id: 89, cat: PC/Mac, desc: "Software MAC OSX"}
|
||||
#Bangla
|
||||
- {id: 56, cat: Movies, desc: "Movies Bangla"}
|
||||
- {id: 35, cat: Movies, desc: "Movies Bangla Natok"}
|
||||
- {id: 47, cat: Movies, desc: "Movies Indian Bangla"}
|
||||
- {id: 46, cat: Movies, desc: "Movies Eid Natok"}
|
||||
- {id: 67, cat: Audio, desc: "Radio program"}
|
||||
# Anime Anime
|
||||
- {id: 36, cat: TV/Anime, desc: "Anime Cartoons"}
|
||||
- {id: 40, cat: TV/Anime, desc: "Anime Subbed"}
|
||||
- {id: 51, cat: TV/Anime, desc: "Anime Dubbed"}
|
||||
- {id: 69, cat: TV/Anime, desc: "Anime Dual Audio"}
|
||||
# Music
|
||||
- {id: 25, cat: Audio/MP3, desc: "MP3 English"}
|
||||
- {id: 26, cat: Audio/MP3, desc: "MP3 Bangla"}
|
||||
- {id: 27, cat: Audio/MP3, desc: "MP3 Hindi"}
|
||||
# Music Video
|
||||
- {id: 48, cat: Audio/Video, desc: "MusicVideo English"}
|
||||
- {id: 49, cat: Audio/Video, desc: "MusicVideo Bangla"}
|
||||
- {id: 50, cat: Audio/Video, desc: "MusicVideo Hindi"}
|
||||
# ETC
|
||||
- {id: 6, cat: Books, desc: "Books"}
|
||||
- {id: 4, cat: Other, desc: "Other"}
|
||||
- {id: 44, cat: Other, desc: "Food & Recipes"}
|
||||
- {id: 38, cat: Other, desc: "Pictures"}
|
||||
- {id: 54, cat: Books/Magazines, desc: "Magazine"}
|
||||
- {id: 88, cat: Books/Comics, desc: "Comics"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
music-search: [q]
|
||||
|
||||
login:
|
||||
path: index.php?page=login
|
||||
method: form
|
||||
form: form[action^="index.php?page=login"]
|
||||
inputs:
|
||||
uid: "{{ .Config.username }}"
|
||||
pwd: "{{ .Config.password }}"
|
||||
error:
|
||||
- selector: tr td span[style="color:#FF0000;"]
|
||||
test:
|
||||
path: index.php
|
||||
selector: a[href="logout.php"]
|
||||
|
||||
ratio:
|
||||
path: index.php
|
||||
selector: span:contains("Ratio ")
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["Ratio ", ""]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: index.php
|
||||
inputs:
|
||||
page: searchpage
|
||||
search: "{{ .Keywords }}"
|
||||
category: "{{if .Categories}}{{range .Categories}}{{.}};{{end}}{{else}}0{{end}}"
|
||||
# 0=filename 1=file&desc 2=descr 3=uploader
|
||||
options: 0
|
||||
# 0=all 1=active only 2=dead only
|
||||
active: 0
|
||||
order: "/"
|
||||
by: 2
|
||||
# 0=mixed 1=no free 2=50% 3=100% 4=50&100
|
||||
gold: 0
|
||||
|
||||
rows:
|
||||
selector: div.inf-table-row
|
||||
fields:
|
||||
title:
|
||||
selector: div.list-name a.tlink
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["[100% FREE LEECH]", ""]
|
||||
- name: replace
|
||||
args: ["[50% FREE LEECH]", ""]
|
||||
details:
|
||||
selector: div.list-name a.tlink
|
||||
attribute: href
|
||||
category:
|
||||
selector: div.torrent-cat small a
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: category
|
||||
banner:
|
||||
selector: div.list-name a.tlink
|
||||
optional: true
|
||||
attribute: onmouseover
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "src=(.*?) width="
|
||||
download:
|
||||
selector: div.list-name a.tlink
|
||||
attribute: tfid
|
||||
filters:
|
||||
- name: prepend
|
||||
args: "download.php?id="
|
||||
- name: append
|
||||
args: "&f={{ .Result.title }}.torrent"
|
||||
size:
|
||||
selector: div.torrent-size
|
||||
date:
|
||||
selector: div.torrent-time
|
||||
filters:
|
||||
- name: dateparse
|
||||
args: "02/01/2006"
|
||||
seeders:
|
||||
selector: div.torrent-seeder
|
||||
leechers:
|
||||
selector: div.torrent-peer
|
||||
grabs:
|
||||
selector: div.torrent-completed
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
img[src="gold/gold.gif"]: "0"
|
||||
img[src="gold/silver.gif"]: "0.5"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
||||
|
@@ -15,10 +15,11 @@
|
||||
- {id: 3, cat: Audio, desc: "Music"}
|
||||
- {id: 4, cat: TV/Anime, desc: "Anime"}
|
||||
- {id: 5, cat: PC/0day, desc: "Apps"}
|
||||
- {id: 6, cat: Books, desc: "Books"}
|
||||
- {id: 6, cat: Books, desc: "eBooks"}
|
||||
- {id: 7, cat: PC/Games, desc: "Games"}
|
||||
- {id: 8, cat: TV/Sport, desc: "Sports"}
|
||||
- {id: 9, cat: Other, desc: "Other"}
|
||||
- {id: 9, cat: Other, desc: "Others"}
|
||||
- {id: 10, cat: XXX, desc: "XXX"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
@@ -31,10 +32,19 @@
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
remember: 1
|
||||
error:
|
||||
- selector: table.main:contains("Login Failed!")
|
||||
- selector: div.has-error
|
||||
test:
|
||||
path: torrents
|
||||
selector: a[href$="/logout"]
|
||||
|
||||
ratio:
|
||||
path: torrents
|
||||
selector: li:has(i.fa-sync-alt)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "Ratio : (\\d+)"
|
||||
|
||||
search:
|
||||
paths:
|
||||
@@ -42,13 +52,14 @@
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
|
||||
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
|
||||
description: ""
|
||||
uploader: ""
|
||||
imdb: "{{ .Query.IMDBIDShort }}"
|
||||
tvdb: ""
|
||||
tmdb: ""
|
||||
mal: ""
|
||||
sorting: created_at
|
||||
direction: desc
|
||||
sort: "created_at"
|
||||
direction: "desc"
|
||||
qty: 100
|
||||
rows:
|
||||
selector: table > tbody > tr
|
||||
@@ -67,17 +78,28 @@
|
||||
details:
|
||||
selector: a.view-torrent
|
||||
attribute: href
|
||||
banner:
|
||||
optional: true
|
||||
selector: div.torrent-poster img
|
||||
attribute: src
|
||||
filters:
|
||||
- name: replace
|
||||
args: ["https://via.placeholder.com/600x900", ""]
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
seeders:
|
||||
selector: td:nth-child(7)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
grabs:
|
||||
selector: td:nth-child(6)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
||||
grabs:
|
||||
selector: td:nth-child(8)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d\.]+)
|
||||
imdb:
|
||||
optional: true
|
||||
selector: a[href*="www.imdb.com/title/tt"]
|
||||
attribute: href
|
||||
date:
|
||||
selector: time
|
||||
filters:
|
||||
@@ -106,12 +128,17 @@
|
||||
args: [" (ay|kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech
|
||||
"i[data-original-title=\"Personal Freeleech\"]": "0" # 24 Hour FreeLeech From BON Store
|
||||
"i[data-original-title=\"Special Freeleech\"]": "0" # Special FreeLeech For Certain User Groups
|
||||
"i[data-original-title=\"Freeleech Token\"]": "0" # Freeleech From Token
|
||||
"i[data-original-title=\"Global FreeLeech\"]": "0" # Global Freeleech
|
||||
"i[data-original-title=\"Freeleech\"]": "0" # Freeleech
|
||||
"i[data-original-title=\"Featured\"]": "0" # Featured Torrent
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
|
||||
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
|
||||
"i[data-original-title=\"Double Upload\"]": "2" # Single Torrent Double Upload
|
||||
"i[data-original-title=\"Global Double Upload\"]": "2" # Global Double Upload
|
||||
"i[data-original-title=\"Featured\"]": "2" # Featured Torrent
|
||||
"*": "1"
|
||||
# UNIT3D
|
||||
# UNIT3D 1.9.2
|
||||
|
237
src/Jackett.Common/Definitions/focusx.yml
Normal file
237
src/Jackett.Common/Definitions/focusx.yml
Normal file
@@ -0,0 +1,237 @@
|
||||
---
|
||||
site: focusx
|
||||
name: FocusX
|
||||
description: "FocusX is a RUSSIAN Public torrent site for MOVIES and TV"
|
||||
language: re-RU
|
||||
type: public
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://focu.sx/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
- {id: 111, cat: Movies, desc: "1922"}
|
||||
- {id: 135, cat: Movies, desc: "Анон"}
|
||||
- {id: 168, cat: Movies, desc: "Воспитательница"}
|
||||
- {id: 10, cat: Movies, desc: "Мёд в голове"}
|
||||
- {id: 16, cat: Movies, desc: "Малыш"}
|
||||
- {id: 18, cat: Movies, desc: "Копенгаген"}
|
||||
- {id: 19, cat: Movies, desc: "Заброшенный"}
|
||||
- {id: 38, cat: Movies, desc: "Звёздные войны: Эпизод 7 Пробуждение силы"}
|
||||
- {id: 42, cat: Movies, desc: "В лабиринте молчания"}
|
||||
- {id: 44, cat: Movies, desc: "Женщина в золотом"}
|
||||
- {id: 45, cat: Movies, desc: "Падение Лондона"}
|
||||
- {id: 46, cat: Movies, desc: "Высотка"}
|
||||
- {id: 49, cat: Movies, desc: "Капитан Америка: Гражданская война"}
|
||||
- {id: 50, cat: Movies, desc: "Рыцарь кубков"}
|
||||
- {id: 54, cat: Movies, desc: "Охотник: Война Зимы"}
|
||||
- {id: 57, cat: Movies, desc: "Портниха"}
|
||||
- {id: 60, cat: Movies, desc: "Бэтмен против Супермена: На заре справедливости"}
|
||||
- {id: 61, cat: Movies, desc: "Комета"}
|
||||
- {id: 64, cat: Movies, desc: "Зоотопия"}
|
||||
- {id: 65, cat: Movies, desc: "В твоих глазах"}
|
||||
- {id: 66, cat: Movies, desc: "Люди Икс: Апокалипсис"}
|
||||
- {id: 67, cat: Movies, desc: "Потерянный Валентин"}
|
||||
- {id: 70, cat: Movies, desc: "Припаркованные"}
|
||||
- {id: 71, cat: Movies, desc: "Легенда о Тарзане"}
|
||||
- {id: 72, cat: Movies, desc: "Пока я не исчезну"}
|
||||
- {id: 73, cat: Movies, desc: "Механик: Воскрешение"}
|
||||
- {id: 74, cat: Movies, desc: "Варкрафт"}
|
||||
- {id: 76, cat: Movies, desc: "Гнилые кварталы"}
|
||||
- {id: 80, cat: Movies, desc: "Приятные вибрации"}
|
||||
- {id: 83, cat: Movies, desc: "Возмущение"}
|
||||
- {id: 84, cat: Movies, desc: "Трейнспоттинг (На игле)"}
|
||||
- {id: 85, cat: Movies, desc: "Тысячу раз 'спокойной ночи'"}
|
||||
- {id: 90, cat: Movies, desc: "Дангал"}
|
||||
- {id: 100, cat: TV, desc: "Смертельное оружие"}
|
||||
- {id: 101, cat: TV, desc: "Гавайи 5-0"}
|
||||
- {id: 102, cat: TV, desc: "Черный Список"}
|
||||
- {id: 103, cat: TV, desc: "Нелюди"}
|
||||
- {id: 106, cat: TV, desc: "Одаренные"}
|
||||
- {id: 107, cat: TV, desc: "Теория большого взрыва"}
|
||||
- {id: 108, cat: TV, desc: "Ходячие мертвецы"}
|
||||
- {id: 109, cat: TV, desc: "Хроники Шаннары"}
|
||||
- {id: 110, cat: TV, desc: "Порох"}
|
||||
- {id: 112, cat: TV, desc: "Субура"}
|
||||
- {id: 115, cat: TV, desc: "Безбожники"}
|
||||
- {id: 116, cat: TV, desc: "Секретные Материалы"}
|
||||
- {id: 118, cat: TV, desc: "Охотник за разумом"}
|
||||
- {id: 119, cat: TV, desc: "Алиенист"}
|
||||
- {id: 120, cat: TV, desc: "Ординатор"}
|
||||
- {id: 121, cat: TV, desc: "Уэйко"}
|
||||
- {id: 122, cat: TV, desc: "Американская история преступлений"}
|
||||
- {id: 124, cat: TV, desc: "Бельвью"}
|
||||
- {id: 126, cat: TV, desc: "Видоизменённый углерод"}
|
||||
- {id: 128, cat: TV, desc: "Здесь и Сейчас"}
|
||||
- {id: 129, cat: TV, desc: "Взлет"}
|
||||
- {id: 130, cat: TV, desc: "Инстинкт"}
|
||||
- {id: 131, cat: TV, desc: "Стартап"}
|
||||
- {id: 133, cat: TV, desc: "Террор"}
|
||||
- {id: 136, cat: TV, desc: "Мир Дикого Запада"}
|
||||
- {id: 138, cat: TV, desc: "В пустыне смерти"}
|
||||
- {id: 139, cat: TV, desc: "Дождь"}
|
||||
- {id: 140, cat: TV, desc: "Страйк"}
|
||||
- {id: 141, cat: TV, desc: "Безопасность"}
|
||||
- {id: 143, cat: TV, desc: "Подлый пит"}
|
||||
- {id: 144, cat: TV, desc: "Голиаф"}
|
||||
- {id: 146, cat: TV, desc: "Весьма Английский Скандал"}
|
||||
- {id: 147, cat: TV, desc: "Королева Сахара"}
|
||||
- {id: 155, cat: TV, desc: "Наследники"}
|
||||
- {id: 156, cat: TV, desc: "Джек Райан"}
|
||||
- {id: 158, cat: TV, desc: "Леденящие кровь приключения Сабрины"}
|
||||
- {id: 161, cat: TV, desc: "Частные сыщики"}
|
||||
- {id: 162, cat: TV, desc: "Изнанка дела"}
|
||||
- {id: 163, cat: TV, desc: "Наркос: Мексика"}
|
||||
- {id: 164, cat: TV, desc: "Возвращение домой"}
|
||||
- {id: 165, cat: TV, desc: "Метод Комински"}
|
||||
- {id: 166, cat: TV, desc: "Элита"}
|
||||
- {id: 167, cat: TV, desc: "Грязный Джон"}
|
||||
- {id: 169, cat: TV, desc: "Романовы"}
|
||||
- {id: 170, cat: TV, desc: "Страна приливов"}
|
||||
- {id: 171, cat: TV, desc: "Тюрьма Оз"}
|
||||
- {id: 172, cat: TV, desc: "Смертельный класс"}
|
||||
- {id: 173, cat: TV, desc: "Парфюм"}
|
||||
- {id: 174, cat: TV, desc: "Цветочный дом"}
|
||||
- {id: 175, cat: TV, desc: "Каратель"}
|
||||
- {id: 176, cat: TV, desc: "Матрёшка"}
|
||||
- {id: 177, cat: TV, desc: "Берлинская резидентура"}
|
||||
- {id: 178, cat: TV, desc: "Настоящий Детектив"}
|
||||
- {id: 179, cat: TV, desc: "Половое Просвещение"}
|
||||
- {id: 180, cat: TV, desc: "АКАДЕМИЯ АМБРЕЛЛА"}
|
||||
- {id: 181, cat: TV, desc: "Сорвиголова"}
|
||||
- {id: 182, cat: TV, desc: "Мистер Посредник"}
|
||||
- {id: 9, cat: TV, desc: "Иерихон"}
|
||||
- {id: 11, cat: TV, desc: "11-22-63"}
|
||||
- {id: 12, cat: TV, desc: "Апокалипсис: Первая мировая война"}
|
||||
- {id: 13, cat: TV, desc: "Смерть в раю"}
|
||||
- {id: 14, cat: TV, desc: "Джереми Кларксон: Военные истории"}
|
||||
- {id: 15, cat: TV, desc: "Чёрные паруса"}
|
||||
- {id: 17, cat: TV, desc: "Карточный домик"}
|
||||
- {id: 37, cat: TV, desc: "Джек Айриш"}
|
||||
- {id: 39, cat: TV, desc: "Чужестранка"}
|
||||
- {id: 40, cat: TV, desc: "Девушка по вызову"}
|
||||
- {id: 41, cat: TV, desc: "Джереми Кларксон: Триллер"}
|
||||
- {id: 43, cat: TV, desc: "Игра престолов"}
|
||||
- {id: 47, cat: TV, desc: "Острые козырьки"}
|
||||
- {id: 48, cat: TV, desc: "Странная парочка"}
|
||||
- {id: 51, cat: TV, desc: "Проповедник"}
|
||||
- {id: 52, cat: TV, desc: "Изгой"}
|
||||
- {id: 53, cat: TV, desc: "Рэй Донован"}
|
||||
- {id: 55, cat: TV, desc: "Оранжевый - хит сезона"}
|
||||
- {id: 56, cat: TV, desc: "Бесстыдники"}
|
||||
- {id: 58, cat: TV, desc: "Мистер Робот"}
|
||||
- {id: 59, cat: TV, desc: "Валландер"}
|
||||
- {id: 62, cat: TV, desc: "Штамм"}
|
||||
- {id: 63, cat: TV, desc: "Куорри"}
|
||||
- {id: 68, cat: TV, desc: "Бесстыжие"}
|
||||
- {id: 69, cat: TV, desc: "Нарко"}
|
||||
- {id: 75, cat: TV, desc: "Все схвачено"}
|
||||
- {id: 77, cat: TV, desc: "Граница"}
|
||||
- {id: 79, cat: TV, desc: "Бош"}
|
||||
- {id: 81, cat: TV, desc: "Викинги"}
|
||||
- {id: 82, cat: TV, desc: "Салем"}
|
||||
- {id: 86, cat: TV, desc: "Кровавая Гонка"}
|
||||
- {id: 87, cat: TV, desc: "Сеньор Авила"}
|
||||
- {id: 88, cat: TV, desc: "Стрелок"}
|
||||
- {id: 89, cat: TV, desc: "Миднайт Техас"}
|
||||
- {id: 91, cat: TV, desc: "Утиные Истории"}
|
||||
- {id: 96, cat: TV, desc: "Двойка"}
|
||||
- {id: 97, cat: TV, desc: "Тик-герой"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
||||
settings: []
|
||||
|
||||
search:
|
||||
paths:
|
||||
# https://focu.sx/tracker/search?freeleech=0&query=daredevil
|
||||
- path: "{{if .Keywords}}tracker/search?freeleech=0&query={{.Keywords}}{{else}}tracker/{{end}}"
|
||||
followredirect: true
|
||||
|
||||
rows:
|
||||
selector: ol.torrentListItems li.torrentListItem
|
||||
fields:
|
||||
title:
|
||||
selector: div.name div.titleText h3 a
|
||||
details:
|
||||
selector: div.name div.titleText h3 a
|
||||
attribute: href
|
||||
filters:
|
||||
- name: prepend
|
||||
args: "{{ .Config.sitelink }}"
|
||||
category:
|
||||
selector: div.torrentCategory a
|
||||
attribute: href
|
||||
filters:
|
||||
- name: querystring
|
||||
args: category_id
|
||||
download:
|
||||
selector: div.download a
|
||||
attribute: href
|
||||
filters:
|
||||
- name: prepend
|
||||
args: "{{ .Config.sitelink }}"
|
||||
magnet:
|
||||
selector: div.download a[href^="magnet:?"]
|
||||
attribute: href
|
||||
date:
|
||||
selector: div.name div.titleText div.secondRow div span
|
||||
attribute: title
|
||||
# 7 мар 2019 в 21:06
|
||||
filters:
|
||||
- name: replace
|
||||
args: [" в ", " "]
|
||||
- name: replace
|
||||
args: ["янв", "Jan"]
|
||||
- name: replace
|
||||
args: ["фев", "Feb"]
|
||||
- name: replace
|
||||
args: ["мар", "Mar"]
|
||||
- name: replace
|
||||
args: ["апр", "Apr"]
|
||||
- name: replace
|
||||
args: ["май", "May"]
|
||||
- name: replace
|
||||
args: ["июн", "Jun"]
|
||||
- name: replace
|
||||
args: ["июл", "Jul"]
|
||||
- name: replace
|
||||
args: ["авг", "Aug"]
|
||||
- name: replace
|
||||
args: ["сен", "Sep"]
|
||||
- name: replace
|
||||
args: ["окт", "Oct"]
|
||||
- name: replace
|
||||
args: ["ноя", "Nov"]
|
||||
- name: replace
|
||||
args: ["дек", "Dec"]
|
||||
- name: dateparse
|
||||
args: "2 Jan 2006 15:04"
|
||||
size:
|
||||
selector: div.size
|
||||
filters:
|
||||
- name: replace
|
||||
args: [".", ""]
|
||||
- name: replace
|
||||
args: [",", "."]
|
||||
- name: replace
|
||||
args: ["ТБ", "TB"]
|
||||
- name: replace
|
||||
args: ["ГБ", "GB"]
|
||||
- name: replace
|
||||
args: ["МБ", "MB"]
|
||||
- name: replace
|
||||
args: ["КБ", "KB"]
|
||||
grabs:
|
||||
selector: div.snatched
|
||||
seeders:
|
||||
selector: div.seeders
|
||||
leechers:
|
||||
selector: div.leechers
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"div.name div.titleText h3 span:contains(\"Золото\")": "0"
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
text: "1"
|
@@ -63,7 +63,9 @@
|
||||
filters:
|
||||
# now we put the date at the right place according scene naming rules using .Result.site_date
|
||||
- name: replace
|
||||
args: ["FRENCH", "{{ .Result.site_date }} FRENCH"]
|
||||
args: [" FRENCH", " {{ .Result.site_date }} FRENCH"]
|
||||
- name: replace
|
||||
args: ["MULTI", "{{ .Result.site_date }} MULTI"]
|
||||
- name: replace
|
||||
args: ["TRUEFRENCH", "{{ .Result.site_date }} TRUEFRENCH"]
|
||||
- name: replace
|
||||
|
@@ -86,6 +86,10 @@
|
||||
inputs:
|
||||
uid: "{{ .Config.username }}"
|
||||
pwd: "{{ .Config.password }}"
|
||||
captcha:
|
||||
type: image
|
||||
selector: img[src^="access_code/"]
|
||||
input: private_key
|
||||
error:
|
||||
- selector: tr td span[style="color:#FF0000;"]
|
||||
test:
|
||||
|
@@ -12,55 +12,55 @@
|
||||
categorymappings:
|
||||
- {id: 17, cat: Movies/Other, desc: "VCD/SVCD - SVCD/VCD"}
|
||||
- {id: 78, cat: Movies/Other, desc: "VCD/SVCD - Estrenos VCD/SVCD"}
|
||||
- {id: 14, cat: Movies/SD, desc: "XVID - Series"}
|
||||
- {id: 45, cat: Movies/SD, desc: "XVID - Animación"}
|
||||
- {id: 46, cat: Movies/SD, desc: "XVID - Deportes"}
|
||||
- {id: 47, cat: Movies/SD, desc: "XVID - Documentales"}
|
||||
- {id: 14, cat: TV/SD, desc: "XVID - Series"}
|
||||
- {id: 45, cat: TV/Anime, desc: "XVID - Animación"}
|
||||
- {id: 46, cat: TV/Sport, desc: "XVID - Deportes"}
|
||||
- {id: 47, cat: TV/Documentary, desc: "XVID - Documentales"}
|
||||
- {id: 33, cat: Movies/SD, desc: "XVID - Estrenos"}
|
||||
- {id: 48, cat: Movies/SD, desc: "XVID - Películas"}
|
||||
- {id: 114, cat: Movies/SD, desc: "XVID - Estrenos BajaCalidad"}
|
||||
- {id: 12, cat: Movies/SD, desc: "XVID - Adulto (+18)"}
|
||||
- {id: 51, cat: Movies/SD, desc: "XVID - Música"}
|
||||
- {id: 37, cat: Movies/DVD, desc: "DVD - Animación"}
|
||||
- {id: 38, cat: Movies/DVD, desc: "DVD - Deportes"}
|
||||
- {id: 39, cat: Movies/DVD, desc: "DVD - Documentales"}
|
||||
- {id: 12, cat: XXX/XviD, desc: "XVID - Adulto (+18)"}
|
||||
- {id: 51, cat: Audio/Video, desc: "XVID - Música"}
|
||||
- {id: 37, cat: TV/Anime, desc: "DVD - Animación"}
|
||||
- {id: 38, cat: TV/Sport, desc: "DVD - Deportes"}
|
||||
- {id: 39, cat: TV/Documentary, desc: "DVD - Documentales"}
|
||||
- {id: 40, cat: Movies/DVD, desc: "DVD - Películas"}
|
||||
- {id: 41, cat: Movies/DVD, desc: "DVD - Series"}
|
||||
- {id: 42, cat: Movies/DVD, desc: "DVD - Adulto (+18)"}
|
||||
- {id: 43, cat: Movies/DVD, desc: "DVD - Música"}
|
||||
- {id: 106, cat: Movies/HD, desc: "HDRip - Animación"}
|
||||
- {id: 107, cat: Movies/HD, desc: "HDRip - Deportes"}
|
||||
- {id: 108, cat: Movies/HD, desc: "HDRip - Documentales"}
|
||||
- {id: 41, cat: TV/SD, desc: "DVD - Series"}
|
||||
- {id: 42, cat: XXX/DVD, desc: "DVD - Adulto (+18)"}
|
||||
- {id: 43, cat: Audio/Video, desc: "DVD - Música"}
|
||||
- {id: 106, cat: TV/Anime, desc: "HDRip - Animación"}
|
||||
- {id: 107, cat: TV/Sport, desc: "HDRip - Deportes"}
|
||||
- {id: 108, cat: TV/Documentary, desc: "HDRip - Documentales"}
|
||||
- {id: 109, cat: Movies/HD, desc: "HDRip - Películas"}
|
||||
- {id: 110, cat: Movies/HD, desc: "HDRip - Series"}
|
||||
- {id: 112, cat: Movies/HD, desc: "HDRip - Adulto (+18)"}
|
||||
- {id: 111, cat: Movies/HD, desc: "HDRip - Música"}
|
||||
- {id: 117, cat: Movies/3D, desc: "3D - Animación"}
|
||||
- {id: 118, cat: Movies/3D, desc: "3D - Deportes"}
|
||||
- {id: 119, cat: Movies/3D, desc: "3D - Documentales"}
|
||||
- {id: 110, cat: TV/HD, desc: "HDRip - Series"}
|
||||
- {id: 112, cat: XXX/x264, desc: "HDRip - Adulto (+18)"}
|
||||
- {id: 111, cat: Audio/Video, desc: "HDRip - Música"}
|
||||
- {id: 117, cat: TV/Anime, desc: "3D - Animación"}
|
||||
- {id: 118, cat: TV/Sport, desc: "3D - Deportes"}
|
||||
- {id: 119, cat: TV/Documentary, desc: "3D - Documentales"}
|
||||
- {id: 120, cat: Movies/3D, desc: "3D - Películas"}
|
||||
- {id: 121, cat: Movies/3D, desc: "3D - Adulto (+18)"}
|
||||
- {id: 126, cat: Movies/HD, desc: "Micro HD - Animación"}
|
||||
- {id: 127, cat: Movies/HD, desc: "Micro HD - Deportes"}
|
||||
- {id: 128, cat: Movies/HD, desc: "Micro HD - Documentales"}
|
||||
- {id: 121, cat: XXX, desc: "3D - Adulto (+18)"}
|
||||
- {id: 126, cat: TV/Anime, desc: "Micro HD - Animación"}
|
||||
- {id: 127, cat: TV/Sport, desc: "Micro HD - Deportes"}
|
||||
- {id: 128, cat: TV/Documentary, desc: "Micro HD - Documentales"}
|
||||
- {id: 57, cat: Movies/HD, desc: "Micro HD - Películas"}
|
||||
- {id: 124, cat: Movies/HD, desc: "Micro HD - Series"}
|
||||
- {id: 129, cat: Movies/HD, desc: "Micro HD - Adulto"}
|
||||
- {id: 130, cat: Movies/HD, desc: "Micro HD - Música"}
|
||||
- {id: 53, cat: Movies/HD, desc: "HD - Animación"}
|
||||
- {id: 54, cat: Movies/HD, desc: "HD - Deportes"}
|
||||
- {id: 55, cat: Movies/HD, desc: "HD - Documentales"}
|
||||
- {id: 124, cat: TV/HD, desc: "Micro HD - Series"}
|
||||
- {id: 129, cat: XXX/x264, desc: "Micro HD - Adulto"}
|
||||
- {id: 130, cat: Audio/Video, desc: "Micro HD - Música"}
|
||||
- {id: 53, cat: TV/Anime, desc: "HD - Animación"}
|
||||
- {id: 54, cat: TV/Sport, desc: "HD - Deportes"}
|
||||
- {id: 55, cat: TV/Documentary, desc: "HD - Documentales"}
|
||||
- {id: 56, cat: Movies/HD, desc: "HD - BDrip/BDremux/FullBD"}
|
||||
- {id: 58, cat: Movies/HD, desc: "HD - WEB-DL/Line Dubbed"}
|
||||
- {id: 59, cat: Movies/HD, desc: "HD - Series"}
|
||||
- {id: 63, cat: Movies/HD, desc: "HD - Adulto (+18)"}
|
||||
- {id: 61, cat: Movies/HD, desc: "HD - Música"}
|
||||
- {id: 136, cat: Movies/UHD, desc: "UHD - Animación"}
|
||||
- {id: 137, cat: Movies/UHD, desc: "UHD - Deportes"}
|
||||
- {id: 138, cat: Movies/UHD, desc: "UHD - Documentales"}
|
||||
- {id: 59, cat: TV/HD, desc: "HD - Series"}
|
||||
- {id: 63, cat: XXX/x264, desc: "HD - Adulto (+18)"}
|
||||
- {id: 61, cat: Audio/Video, desc: "HD - Música"}
|
||||
- {id: 136, cat: TV/Anime, desc: "UHD - Animación"}
|
||||
- {id: 137, cat: TV/Sport, desc: "UHD - Deportes"}
|
||||
- {id: 138, cat: TV/Documentary, desc: "UHD - Documentales"}
|
||||
- {id: 139, cat: Movies/UHD, desc: "UHD - Películas"}
|
||||
- {id: 140, cat: Movies/UHD, desc: "UHD - Series"}
|
||||
- {id: 141, cat: Movies/UHD, desc: "UHD - Adulto (+18)"}
|
||||
- {id: 140, cat: TV/UHD, desc: "UHD - Series"}
|
||||
- {id: 141, cat: XXX/x264, desc: "UHD - Adulto (+18)"}
|
||||
- {id: 69, cat: Audio/MP3, desc: "MP3"}
|
||||
- {id: 70, cat: Audio/Lossless, desc: "FLAC"}
|
||||
- {id: 71, cat: Audio/Other, desc: "Otros Formatos"}
|
||||
|
129
src/Jackett.Common/Definitions/soundpark.yml
Normal file
129
src/Jackett.Common/Definitions/soundpark.yml
Normal file
@@ -0,0 +1,129 @@
|
||||
---
|
||||
site: soundpark
|
||||
name: SoundPark
|
||||
description: "SoundPark Semi-Private RUSSIAN site dedicated to MUSIC."
|
||||
language: ru-RU
|
||||
type: semi-private
|
||||
encoding: UTF-8
|
||||
links:
|
||||
- https://soundpark-club.com/
|
||||
- https://soundpark-club.casa/
|
||||
|
||||
caps:
|
||||
categories:
|
||||
"Music": Audio
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
|
||||
login:
|
||||
path: login
|
||||
method: form
|
||||
form: form[action="/login"]
|
||||
inputs:
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
returnto: ""
|
||||
error:
|
||||
- selector: div.stdmsg_text
|
||||
test:
|
||||
path: /
|
||||
selector: a[href="/logout"]
|
||||
|
||||
download:
|
||||
selector: a[href^="/album/download-torrent/"]
|
||||
|
||||
search:
|
||||
paths:
|
||||
- path: "{{if .Keywords}}search{{else}}music{{end}}"
|
||||
inputs:
|
||||
q: "{{ .Keywords }}"
|
||||
num: 50
|
||||
|
||||
rows:
|
||||
# first selector is for the music page (recent uploads) and the second selector is for the search page
|
||||
selector: div[itemscope] > table.browse_albums, div.div-rellist
|
||||
fields:
|
||||
title:
|
||||
selector: tr:nth-child(1) td:nth-child(1) h2 a, div h3 a
|
||||
details:
|
||||
selector: tr:nth-child(1) td:nth-child(1) h2 a, div h3 a
|
||||
attribute: href
|
||||
category:
|
||||
text: "Music"
|
||||
banner:
|
||||
selector: tr:nth-child(2) td:nth-child(1) a img, div i img
|
||||
attribute: src
|
||||
optional: true
|
||||
download:
|
||||
selector: tr:nth-child(1) td:nth-child(1) h2 a, div h3 a
|
||||
attribute: href
|
||||
# dates come in two flavours:
|
||||
# Russian, Spanish and English supported
|
||||
date:
|
||||
# fix for spanish yesterday, the time is not present
|
||||
text: now
|
||||
date:
|
||||
# Today at 22:28:10
|
||||
# Yesterday at 10:18:40
|
||||
# Вчера в 10:18:40
|
||||
# Hoy a las 07:33:17
|
||||
selector: tr:nth-child(1) > td:nth-child(2) > div.details > span:nth-child(1):contains(":"), div > span.edit:contains(":")
|
||||
optional: true
|
||||
filters:
|
||||
- name: replace
|
||||
args: [" at ", " "]
|
||||
- name: re_replace
|
||||
args: ["Ayer a las|Вчера в", "Yesterday"]
|
||||
- name: re_replace
|
||||
args: ["Hoy a las|Сегодня в", "Today"]
|
||||
date:
|
||||
# 3 april 2019
|
||||
selector: tr:nth-child(1) > td:nth-child(2) > div.details > span:nth-child(1):not(:contains(":")), div > span.edit:not(:contains(":"))
|
||||
optional: true
|
||||
filters:
|
||||
- name: re_replace
|
||||
args: ["enero|января", "January"]
|
||||
- name: re_replace
|
||||
args: ["febrero|февраля", "February"]
|
||||
- name: re_replace
|
||||
args: ["marzo|марта ", "March"]
|
||||
- name: re_replace
|
||||
args: ["abril|апреля", "April"]
|
||||
- name: re_replace
|
||||
args: ["mayo|мая", "May"]
|
||||
- name: re_replace
|
||||
args: ["junio|июня", "June"]
|
||||
- name: re_replace
|
||||
args: ["julio|июля", "July"]
|
||||
- name: re_replace
|
||||
args: ["agosto|августа", "August"]
|
||||
- name: re_replace
|
||||
args: ["septiembre|сентября", "September"]
|
||||
- name: re_replace
|
||||
args: ["octubre|октября", "October"]
|
||||
- name: re_replace
|
||||
args: ["noviembre|ноября", "November"]
|
||||
- name: re_replace
|
||||
args: ["diciembre|декабря", "December"]
|
||||
- name: dateparse
|
||||
args: "2 January 2006"
|
||||
size:
|
||||
# search page does not have size.
|
||||
text: "500 MB"
|
||||
size:
|
||||
# but today's page can, if the content fixed-length string contains a title that is not too long.
|
||||
selector: tr:nth-child(2) td.descr meta
|
||||
attribute: content
|
||||
optional: true
|
||||
filters:
|
||||
- name: regexp
|
||||
args: "Size: (.*?),"
|
||||
seeders:
|
||||
text: 1
|
||||
leechers:
|
||||
text: 1
|
||||
downloadvolumefactor:
|
||||
text: 1
|
||||
uploadvolumefactor:
|
||||
text: 1
|
@@ -63,7 +63,9 @@
|
||||
filters:
|
||||
# now we put the date at the right place according scene naming rules using .Result.site_date
|
||||
- name: replace
|
||||
args: ["FRENCH", "{{ .Result.site_date }} FRENCH"]
|
||||
args: [" FRENCH", " {{ .Result.site_date }} FRENCH"]
|
||||
- name: replace
|
||||
args: ["MULTI", "{{ .Result.site_date }} MULTI"]
|
||||
- name: replace
|
||||
args: ["TRUEFRENCH", "{{ .Result.site_date }} TRUEFRENCH"]
|
||||
- name: replace
|
||||
|
@@ -7,11 +7,14 @@
|
||||
encoding: UTF-8
|
||||
followredirect: true
|
||||
links:
|
||||
- https://www2.torrent9.ch/
|
||||
- https://www.torrent9.vc/
|
||||
legacylinks:
|
||||
- https://www.torrents9.pw/
|
||||
- https://www.torrent9.ch/
|
||||
- https://www1.torrent9.ch/
|
||||
- https://www2.torrent9.ch/
|
||||
- https://wwv.torrent9.vg/
|
||||
- https://www.torrent9.lol/
|
||||
|
||||
caps:
|
||||
categorymappings:
|
||||
@@ -72,7 +75,9 @@
|
||||
filters:
|
||||
# now we put the date at the right place according scene naming rules using .Result.site_date
|
||||
- name: replace
|
||||
args: ["FRENCH", "{{ .Result.site_date }} FRENCH"]
|
||||
args: [" FRENCH", " {{ .Result.site_date }} FRENCH"]
|
||||
- name: replace
|
||||
args: ["MULTI", "{{ .Result.site_date }} MULTI"]
|
||||
- name: replace
|
||||
args: ["TRUEFRENCH", "{{ .Result.site_date }} TRUEFRENCH"]
|
||||
- name: replace
|
||||
|
@@ -61,7 +61,7 @@
|
||||
- path: "?t={{if .Keywords}}{{.Keywords}}{{else}}test{{end}}&orderby=latest{{if .Config.filter-verified }}&safe=on{{else}}{{end}}"
|
||||
followredirect: true
|
||||
rows:
|
||||
selector: "#similarfiles div:has(a[href^=\"/t3-\"])"
|
||||
selector: "#similarfiles div:has(a[href^=\"/t0-\"])"
|
||||
fields:
|
||||
title:
|
||||
selector: span > a
|
||||
|
@@ -12,23 +12,20 @@
|
||||
categorymappings:
|
||||
- {id: 1, cat: Movies, desc: "Film"}
|
||||
- {id: 2, cat: TV, desc: "Série"}
|
||||
- {id: 3, cat: TV/Anime, desc: "Film d'Animation"}
|
||||
- {id: 5, cat: TV/Sport, desc: "Sport"}
|
||||
- {id: 3, cat: TV/Anime, desc: "Animés"}
|
||||
- {id: 5, cat: Audio, desc: "Audios"}
|
||||
- {id: 6, cat: TV/Documentary, desc: "Documentaire"}
|
||||
- {id: 7, cat: Audio, desc: "Musique"}
|
||||
- {id: 8, cat: Audio/Other, desc: "Podcast Audio"}
|
||||
- {id: 7, cat: Other, desc: "Formations"}
|
||||
- {id: 13, cat: Books/Ebook, desc: "eBooks"}
|
||||
- {id: 14, cat: TV, desc: "Spectacle"}
|
||||
- {id: 14, cat: Console, desc: "Jeux"}
|
||||
- {id: 15, cat: Audio/Video, desc: "Concert"}
|
||||
- {id: 18, cat: TV/Anime, desc: "Manga"}
|
||||
- {id: 19, cat: Books/Comics, desc: "Comics"}
|
||||
- {id: 20, cat: Books/Comics, desc: "Bande dessinée"}
|
||||
- {id: 22, cat: Console, desc: "Jeux"}
|
||||
- {id: 25, cat: PC, desc: "Logiciels"}
|
||||
- {id: 27, cat: TV, desc: "Spectacles"}
|
||||
|
||||
modes:
|
||||
search: [q]
|
||||
tv-search: [q, season, ep, imdbid]
|
||||
movie-search: [q, imdbid]
|
||||
tv-search: [q, season, ep]
|
||||
movie-search: [q]
|
||||
|
||||
login:
|
||||
path: login
|
||||
@@ -37,18 +34,14 @@
|
||||
username: "{{ .Config.username }}"
|
||||
password: "{{ .Config.password }}"
|
||||
remember: 1
|
||||
selectorinputs:
|
||||
_token:
|
||||
selector: meta[name="csrf-token"]
|
||||
attribute: content
|
||||
error:
|
||||
- selector: form[action$="/login"] span strong
|
||||
test:
|
||||
path: /
|
||||
path: torrents
|
||||
selector: a[href$="/logout"]
|
||||
|
||||
ratio:
|
||||
path: /
|
||||
path: torrents
|
||||
selector: span:has(i.fa-sync-alt)
|
||||
filters:
|
||||
- name: regexp
|
||||
@@ -59,14 +52,11 @@
|
||||
- path: filterTorrents
|
||||
inputs:
|
||||
$raw: "{{range .Categories}}categories[]={{.}}&{{end}}"
|
||||
search: "{{if .Query.IMDBID}}{{else}}{{ .Keywords }}{{end}}"
|
||||
search: "{{ .Keywords }}"
|
||||
description: ""
|
||||
uploader: ""
|
||||
imdb: "{{ .Query.IMDBIDShort }}"
|
||||
tvdb: ""
|
||||
tmdb: ""
|
||||
mal: ""
|
||||
sorting: created_at
|
||||
direction: desc
|
||||
sort: "created_at"
|
||||
direction: "desc"
|
||||
qty: 100
|
||||
rows:
|
||||
selector: table > tbody > tr
|
||||
@@ -85,21 +75,17 @@
|
||||
details:
|
||||
selector: a.view-torrent
|
||||
attribute: href
|
||||
imdb:
|
||||
selector: a[href^="https://www.imdb.com/title/"]
|
||||
attribute: href
|
||||
optional: true
|
||||
size:
|
||||
selector: td:nth-child(5)
|
||||
seeders:
|
||||
selector: td:nth-child(7)
|
||||
leechers:
|
||||
selector: td:nth-child(8)
|
||||
selector: td:nth-child(4)
|
||||
grabs:
|
||||
selector: td:nth-child(6)
|
||||
selector: td:nth-child(5)
|
||||
filters:
|
||||
- name: regexp
|
||||
args: ([\d\.]+)
|
||||
seeders:
|
||||
selector: td:nth-child(6)
|
||||
leechers:
|
||||
selector: td:nth-child(7)
|
||||
date:
|
||||
selector: time
|
||||
filters:
|
||||
@@ -117,12 +103,13 @@
|
||||
args: " ago"
|
||||
downloadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"100% Free\"]": "0" # Single Torrent Freeleech
|
||||
"i[data-original-title=\"Freeleech\"]": "0" # Single Torrent Freeleech
|
||||
"i[data-original-title=\"Global freeleech\"]": "0" # Global Freeleech
|
||||
"*": "1"
|
||||
uploadvolumefactor:
|
||||
case:
|
||||
"i[data-original-title=\"Global freeleech\"]": "2" # Global Freeleech
|
||||
"i[data-original-title=\"Double upload\"]": "2" # Single Torrent Double Upload
|
||||
"i[data-original-title=\"Double Upload\"]": "2" # Global Double Upload
|
||||
"*": "1"
|
||||
# UNIT3D
|
||||
# UNIT3D 1.?
|
||||
|
@@ -103,5 +103,18 @@ namespace Jackett.Common.Utils
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsNonWindowsDotNetCoreVariant(JackettVariant variant)
|
||||
{
|
||||
if (variant == JackettVariant.CoreMacOs || variant == JackettVariant.CoreLinuxAmdx64
|
||||
|| variant == JackettVariant.CoreLinuxArm32 || variant == JackettVariant.CoreLinuxArm64)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -174,6 +174,34 @@ namespace Jackett.Updater
|
||||
// On unix we kill the PIDs after the update so e.g. systemd can automatically restart the process
|
||||
KillPids(pids);
|
||||
}
|
||||
|
||||
Variants variants = new Variants();
|
||||
if (variants.IsNonWindowsDotNetCoreVariant(variant))
|
||||
{
|
||||
// On Linux you can't modify an executable while it is executing
|
||||
// https://github.com/Jackett/Jackett/issues/5022
|
||||
// https://stackoverflow.com/questions/16764946/what-generates-the-text-file-busy-message-in-unix#comment32135232_16764967
|
||||
// Delete the ./jackett executable
|
||||
try
|
||||
{
|
||||
logger.Info("Attempting to remove the jackett executable from: " + options.Path);
|
||||
string executable = options.Path.TrimEnd('/') + "/jackett";
|
||||
if (File.Exists(executable))
|
||||
{
|
||||
File.Delete(executable);
|
||||
logger.Info("Deleted " + executable);
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.Info("jackett executable not found in: " + executable);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
logger.Error(e);
|
||||
}
|
||||
}
|
||||
|
||||
logger.Info("Finding files in: " + updateLocation);
|
||||
var files = Directory.GetFiles(updateLocation, "*.*", SearchOption.AllDirectories);
|
||||
foreach (var file in files)
|
||||
@@ -402,8 +430,8 @@ namespace Jackett.Updater
|
||||
|
||||
private string GetJackettConsolePath(string directoryPath)
|
||||
{
|
||||
if (variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreLinuxAmdx64
|
||||
|| variant == Variants.JackettVariant.CoreLinuxArm32 || variant == Variants.JackettVariant.CoreLinuxArm64)
|
||||
Variants variants = new Variants();
|
||||
if (variants.IsNonWindowsDotNetCoreVariant(variant))
|
||||
{
|
||||
return Path.Combine(directoryPath, "jackett");
|
||||
}
|
||||
|
Reference in New Issue
Block a user