Skip to content

Commit

Permalink
hdspace: migrate from C# (#432)
Browse files Browse the repository at this point in the history
  • Loading branch information
ilike2burnthing authored Jun 13, 2024
1 parent 12f187a commit 4e020bc
Show file tree
Hide file tree
Showing 2 changed files with 358 additions and 0 deletions.
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

0 comments on commit 4e020bc

Please sign in to comment.