Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hdspace: migrate from C# #432

Merged
merged 5 commits into from
Jun 13, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
178 changes: 178 additions & 0 deletions definitions/v10/hdspace.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
---
id: hdspace
name: HD-Space
description: "HD-Space is a Private Torrent Tracker for MOVIES / TV / GENERAL"
language: en-US
type: private
encoding: UTF-8
links:
- https://hd-space.org/

caps:
categorymappings:
- {id: 15, cat: Movies/BluRay, desc: "Movie / Blu-ray"}
- {id: 40, cat: Movies/HD, desc: "Movie / Remux"}
- {id: 18, cat: Movies/HD, desc: "Movie / 720p"}
- {id: 19, cat: Movies/HD, desc: "Movie / 1080p"}
- {id: 46, cat: Movies/UHD, desc: "Movie / 2160p"}
- {id: 21, cat: TV/HD, desc: "TV Show / 720p HDTV"}
- {id: 22, cat: TV/HD, desc: "TV Show / 1080p HDTV"}
- {id: 45, cat: TV/UHD, desc: "TV Show / 2160p HDTV"}
- {id: 24, cat: TV/Documentary, desc: "Documentary / 720p"}
- {id: 25, cat: TV/Documentary, desc: "Documentary / 1080p"}
- {id: 47, cat: TV/Documentary, desc: "Documentary / 2160p"}
- {id: 27, cat: TV/Anime, desc: "Animation / 720p"}
- {id: 28, cat: TV/Anime, desc: "Animation / 1080p"}
- {id: 48, cat: TV/Anime, desc: "Animation / 2160p"}
- {id: 30, cat: Audio/Lossless, desc: "Music / HQ Audio"}
- {id: 31, cat: Audio/Video, desc: "Music / Videos"}
- {id: 33, cat: XXX, desc: "XXX / 720p"}
- {id: 34, cat: XXX, desc: "XXX / 1080p"}
- {id: 49, cat: XXX, desc: "XXX / 2160p"}
- {id: 36, cat: Movies/Other, desc: "Trailers"}
- {id: 37, cat: PC, desc: "Software"}
- {id: 38, cat: Other, desc: "Others"}
- {id: 41, cat: Movies/UHD, desc: "Movie / 4K UHD"}

modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]

settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Filter freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 3
options:
3: created
5: seeders
4: size
2: title
- name: type
type: select
label: Order requested from site
default: 2
options:
2: desc
1: asc
- name: info_flaresolverr
type: info_flaresolverr

login:
path: index.php?page=login
method: post
inputs:
uid: "{{ .Config.username }}"
pwd: "{{ .Config.password }}"
logout: ""
error:
- selector: tr td span[style="color:#FF0000;"]
test:
path: index.php
selector: a[href="logout.php"]

search:
paths:
# https://hd-space.org/index.php?page=torrents&search=&active=0&options=0&category=15;18;19
- path: index.php
inputs:
page: torrents
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBIDShort }}{{ else }}{{ .Keywords }}{{ end }}"
category: "{{ if .Categories }}{{ range .Categories }}{{.}};{{end}}{{ else }}0{{ end }}"
# 0 default, 1 genre, 2 imdb, 3 uploader
options: "{{ if .Query.IMDBID }}2{{ else }}0{{ end }}"
# 0 all, 1 activeonly, 2 deadonly
active: 0
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"

rows:
selector: "table.lista[width=\"100%\"] > tbody > style ~ tr{{ if .Config.freeleech }}:has(img[src=\"gold/gold.png\"]){{ else }}{{ end }}, table.lista[width=\"100%\"] > tbody > style ~ tr{{ if .Config.freeleech }}:has(img[src=\"images/sf.png\"]){{ else }}{{ end }}"

fields:
category:
selector: td a[href^="index.php?page=torrents&category="]
attribute: href
filters:
- name: querystring
args: category
title:
selector: td a[href^="index.php?page=torrent-details"]
details:
selector: td a[href^="index.php?page=torrent-details"]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: td a[href^="index.php?page=torrent-details"]
attribute: onmouseover
filters:
- name: regexp
args: src=\./(.+?)\s
imdbid:
selector: td a[href^="index.php?page=torrent-details"]
attribute: onmouseover
filters:
- name: regexp
args: /(\d{8}).jpg
date_day:
# Today at 09:17:08
# Yesterday at 17:11:03
selector: td:nth-child(5):contains("day")
# auto adjusted by site account profile
optional: true
filters:
- name: re_replace
args: ["[ ]at|[//\xa0\\s,]+", " "]
date_year:
# January 30, 2024, 20:23:21
selector: td:nth-child(5):not(:contains("day"))
# auto adjusted by site account profile
optional: true
filters:
- name: re_replace
args: ["[//\xa0\\s,]+", " "]
- name: dateparse
args: "MMMM dd yyyy HH:mm:ss"
date:
text: "{{ if or .Result.date_day .Result.date_year }}{{ or .Result.date_day .Result.date_year }}{{ else }}now{{ end }}"
size:
selector: td:nth-child(6)
seeders:
selector: td:nth-child(8)
leechers:
selector: td:nth-child(9)
grabs:
selector: td:nth-child(10)
genre:
selector: td:nth-child(2)
remove: a
description:
text: "{{ .Result.genre }}"
downloadvolumefactor:
case:
img[src="images/sf.png"]: 0 # side freeleech
img[src="gold/gold.png"]: 0
img[src="gold/silver.png"]: 0.5
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
minimumseedtime:
# 1 day (as seconds = 1 x 24 x 60 x 60)
text: 86400
# xbtit
180 changes: 180 additions & 0 deletions definitions/v9/hdspace.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
---
id: hdspace
name: HD-Space
description: "HD-Space is a Private Torrent Tracker for MOVIES / TV / GENERAL"
language: en-US
type: private
encoding: UTF-8
links:
- https://hd-space.org/

caps:
categorymappings:
- {id: 15, cat: Movies/BluRay, desc: "Movie / Blu-ray"}
- {id: 40, cat: Movies/HD, desc: "Movie / Remux"}
- {id: 18, cat: Movies/HD, desc: "Movie / 720p"}
- {id: 19, cat: Movies/HD, desc: "Movie / 1080p"}
- {id: 46, cat: Movies/UHD, desc: "Movie / 2160p"}
- {id: 21, cat: TV/HD, desc: "TV Show / 720p HDTV"}
- {id: 22, cat: TV/HD, desc: "TV Show / 1080p HDTV"}
- {id: 45, cat: TV/UHD, desc: "TV Show / 2160p HDTV"}
- {id: 24, cat: TV/Documentary, desc: "Documentary / 720p"}
- {id: 25, cat: TV/Documentary, desc: "Documentary / 1080p"}
- {id: 47, cat: TV/Documentary, desc: "Documentary / 2160p"}
- {id: 27, cat: TV/Anime, desc: "Animation / 720p"}
- {id: 28, cat: TV/Anime, desc: "Animation / 1080p"}
- {id: 48, cat: TV/Anime, desc: "Animation / 2160p"}
- {id: 30, cat: Audio/Lossless, desc: "Music / HQ Audio"}
- {id: 31, cat: Audio/Video, desc: "Music / Videos"}
- {id: 33, cat: XXX, desc: "XXX / 720p"}
- {id: 34, cat: XXX, desc: "XXX / 1080p"}
- {id: 49, cat: XXX, desc: "XXX / 2160p"}
- {id: 36, cat: Movies/Other, desc: "Trailers"}
- {id: 37, cat: PC, desc: "Software"}
- {id: 38, cat: Other, desc: "Others"}
- {id: 41, cat: Movies/UHD, desc: "Movie / 4K UHD"}

modes:
search: [q]
tv-search: [q, season, ep, imdbid]
movie-search: [q, imdbid]
music-search: [q]

settings:
- name: username
type: text
label: Username
- name: password
type: password
label: Password
- name: freeleech
type: checkbox
label: Filter freeleech only
default: false
- name: sort
type: select
label: Sort requested from site
default: 3
options:
3: created
5: seeders
4: size
2: title
- name: type
type: select
label: Order requested from site
default: 2
options:
2: desc
1: asc
- name: flaresolverr
type: info
label: FlareSolverr
default: This site may use Cloudflare DDoS Protection, therefore Prowlarr requires <a href="https://wiki.servarr.com/prowlarr/faq#can-i-use-flaresolverr-indexers" target="_blank" rel="noreferrer">FlareSolverr</a> to access it.

login:
path: index.php?page=login
method: post
inputs:
uid: "{{ .Config.username }}"
pwd: "{{ .Config.password }}"
logout: ""
error:
- selector: tr td span[style="color:#FF0000;"]
test:
path: index.php
selector: a[href="logout.php"]

search:
paths:
# https://hd-space.org/index.php?page=torrents&search=&active=0&options=0&category=15;18;19
- path: index.php
inputs:
page: torrents
search: "{{ if .Query.IMDBID }}{{ .Query.IMDBIDShort }}{{ else }}{{ .Keywords }}{{ end }}"
category: "{{ if .Categories }}{{ range .Categories }}{{.}};{{end}}{{ else }}0{{ end }}"
# 0 default, 1 genre, 2 imdb, 3 uploader
options: "{{ if .Query.IMDBID }}2{{ else }}0{{ end }}"
# 0 all, 1 activeonly, 2 deadonly
active: 0
order: "{{ .Config.sort }}"
by: "{{ .Config.type }}"

rows:
selector: "table.lista[width=\"100%\"] > tbody > style ~ tr{{ if .Config.freeleech }}:has(img[src=\"gold/gold.png\"]){{ else }}{{ end }}, table.lista[width=\"100%\"] > tbody > style ~ tr{{ if .Config.freeleech }}:has(img[src=\"images/sf.png\"]){{ else }}{{ end }}"

fields:
category:
selector: td a[href^="index.php?page=torrents&category="]
attribute: href
filters:
- name: querystring
args: category
title:
selector: td a[href^="index.php?page=torrent-details"]
details:
selector: td a[href^="index.php?page=torrent-details"]
attribute: href
download:
selector: a[href^="download.php?id="]
attribute: href
poster:
selector: td a[href^="index.php?page=torrent-details"]
attribute: onmouseover
filters:
- name: regexp
args: src=\./(.+?)\s
imdbid:
selector: td a[href^="index.php?page=torrent-details"]
attribute: onmouseover
filters:
- name: regexp
args: /(\d{8}).jpg
date_day:
# Today at 09:17:08
# Yesterday at 17:11:03
selector: td:nth-child(5):contains("day")
# auto adjusted by site account profile
optional: true
filters:
- name: re_replace
args: ["[ ]at|[//\xa0\\s,]+", " "]
date_year:
# January 30, 2024, 20:23:21
selector: td:nth-child(5):not(:contains("day"))
# auto adjusted by site account profile
optional: true
filters:
- name: re_replace
args: ["[//\xa0\\s,]+", " "]
- name: dateparse
args: "MMMM dd yyyy HH:mm:ss"
date:
text: "{{ if or .Result.date_day .Result.date_year }}{{ or .Result.date_day .Result.date_year }}{{ else }}now{{ end }}"
size:
selector: td:nth-child(6)
seeders:
selector: td:nth-child(8)
leechers:
selector: td:nth-child(9)
grabs:
selector: td:nth-child(10)
genre:
selector: td:nth-child(2)
remove: a
description:
text: "{{ .Result.genre }}"
downloadvolumefactor:
case:
img[src="images/sf.png"]: 0 # side freeleech
img[src="gold/gold.png"]: 0
img[src="gold/silver.png"]: 0.5
"*": 1
uploadvolumefactor:
text: 1
minimumratio:
text: 1.0
minimumseedtime:
# 1 day (as seconds = 1 x 24 x 60 x 60)
text: 86400
# xbtit