303 lines
8.9 KiB
YAML
303 lines
8.9 KiB
YAML
|
---
|
||
|
id: hdonly
|
||
|
name: HD-Only
|
||
|
description: "HD-Only (HD-O) is a FRENCH Private Torrent Tracker for HD MOVIES / TV"
|
||
|
language: fr-FR
|
||
|
type: private
|
||
|
encoding: UTF-8
|
||
|
requestDelay: 2
|
||
|
links:
|
||
|
- https://hd-only.org/
|
||
|
|
||
|
caps:
|
||
|
categorymappings:
|
||
|
- {id: 1, cat: Movies, desc: "Films"}
|
||
|
- {id: 2, cat: TV, desc: "Séries"}
|
||
|
# Fake ids to match release types by desc
|
||
|
- {id: 101, cat: Movies, desc: "Film"}
|
||
|
- {id: 103, cat: Movies/Other, desc: "Dessin animé"}
|
||
|
- {id: 105, cat: TV, desc: "Série"}
|
||
|
- {id: 106, cat: TV/Anime, desc: "Série Animée"}
|
||
|
- {id: 107, cat: Movies/Other, desc: "Film d'animation"}
|
||
|
- {id: 109, cat: Audio/Video, desc: "Concert"}
|
||
|
- {id: 111, cat: TV/Documentary, desc: "Documentaire"}
|
||
|
- {id: 113, cat: Movies/Other, desc: "Court-métrage"}
|
||
|
- {id: 114, cat: Movies/Other, desc: "Clip"}
|
||
|
- {id: 115, cat: Movies/Other, desc: "Démonstration"}
|
||
|
- {id: 121, cat: Other, desc: "Autre"}
|
||
|
|
||
|
modes:
|
||
|
search: [q]
|
||
|
tv-search: [q, season, ep, tmdbid, genre]
|
||
|
movie-search: [q, tmdbid, genre]
|
||
|
allowrawsearch: true
|
||
|
|
||
|
settings:
|
||
|
- name: username
|
||
|
type: text
|
||
|
label: Username
|
||
|
- name: password
|
||
|
type: password
|
||
|
label: Password
|
||
|
- name: 2fa_code
|
||
|
type: text
|
||
|
label: 2FA code
|
||
|
- name: info_2fa
|
||
|
type: info
|
||
|
label: "About 2FA code"
|
||
|
default: "Only fill in the <b>2FA code</b> box if you have enabled <b>2FA</b> on the HD-Only Web Site. Otherwise just leave it empty."
|
||
|
- name: freeleech
|
||
|
type: checkbox
|
||
|
label: Search freeleech only
|
||
|
default: false
|
||
|
- name: add_hybrid_features_to_filename
|
||
|
type: checkbox
|
||
|
label: Include DV/HDR10 in filename when a release has multiple HDR formats.
|
||
|
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: FRENCH
|
||
|
options:
|
||
|
FRENCH: FRENCH
|
||
|
MULTi.FRENCH: MULTi.FRENCH
|
||
|
ENGLISH: ENGLISH
|
||
|
MULTi.ENGLISH: MULTi.ENGLISH
|
||
|
VOSTFR: VOSTFR
|
||
|
MULTi.VOSTFR: MULTi.VOSTFR
|
||
|
- name: vostfr
|
||
|
type: checkbox
|
||
|
label: Replace VOSTFR and SUBFRENCH with ENGLISH
|
||
|
default: false
|
||
|
- name: sort
|
||
|
type: select
|
||
|
label: Sort requested from site
|
||
|
default: time
|
||
|
options:
|
||
|
time: created
|
||
|
seeders: seeders
|
||
|
size: size
|
||
|
- name: type
|
||
|
type: select
|
||
|
label: Order requested from site
|
||
|
default: desc
|
||
|
options:
|
||
|
desc: desc
|
||
|
asc: asc
|
||
|
|
||
|
login:
|
||
|
path: login.php
|
||
|
method: post
|
||
|
inputs:
|
||
|
username: "{{ .Config.username }}"
|
||
|
password: "{{ .Config.password }}"
|
||
|
twofa: "{{ .Config.2fa_code }}"
|
||
|
keeplogged: 1
|
||
|
error:
|
||
|
- selector: form#loginform > span.warning
|
||
|
test:
|
||
|
path: torrents.php
|
||
|
selector: a[href^="logout.php?auth="]
|
||
|
|
||
|
search:
|
||
|
# https://hd-only.org/torrents.php?filelist=blood+2009&freetorrent=1&order_by=time&order_way=desc&action=advanced&searchsubmit=1
|
||
|
paths:
|
||
|
- path: ajax.php
|
||
|
response:
|
||
|
type: json
|
||
|
|
||
|
inputs:
|
||
|
# does not support categories, uses releasetype for single filter, so we cannot do multi releasetype filtering either.
|
||
|
# $raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
|
||
|
searchstr: "{{ .Keywords }}"
|
||
|
tmdb: "{{ .Query.TMDBID }}"
|
||
|
taglist: "{{ .Query.Genre }}"
|
||
|
action: browse
|
||
|
group_results: 0
|
||
|
order_by: "{{ .Config.sort }}"
|
||
|
order_way: "{{ .Config.type }}"
|
||
|
# 1 freeleech, 0 normal
|
||
|
freetorrent: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
|
||
|
# site does not support imdbid search or display imdb links in results
|
||
|
|
||
|
keywordsfilters:
|
||
|
# strip season
|
||
|
- name: re_replace
|
||
|
args: ["(?i)\\bS\\d{1,3}\\b", ""]
|
||
|
- name: trim
|
||
|
|
||
|
rows:
|
||
|
selector: response.results
|
||
|
|
||
|
fields:
|
||
|
_group_id:
|
||
|
selector: group.groupId
|
||
|
_torrent_id:
|
||
|
selector: torrentId
|
||
|
category:
|
||
|
selector: group.categoryId
|
||
|
categorydesc|append:
|
||
|
selector: group.releaseType
|
||
|
optional: true
|
||
|
details:
|
||
|
text: "torrents.php?id={{ .Result._group_id }}&torrentid={{ .Result._torrent_id }}"
|
||
|
download:
|
||
|
text: "torrents.php?action=download&id={{ .Result._torrent_id }}"
|
||
|
genre:
|
||
|
selector: group.tags
|
||
|
filters:
|
||
|
- name: re_replace
|
||
|
args: ["(?i)(science.fiction)", "science_fiction"]
|
||
|
poster:
|
||
|
selector: group.cover
|
||
|
optional: true
|
||
|
tmdbid:
|
||
|
selector: group.tmdb
|
||
|
files:
|
||
|
selector: fileCount
|
||
|
seeders:
|
||
|
selector: seeders
|
||
|
leechers:
|
||
|
selector: leechers
|
||
|
grabs:
|
||
|
selector: snatches
|
||
|
size:
|
||
|
selector: size
|
||
|
date:
|
||
|
selector: time
|
||
|
filters:
|
||
|
- name: append
|
||
|
args: " +00:00" # GMT
|
||
|
- name: dateparse
|
||
|
args: "yyyy-MM-dd HH:mm:ss zzz"
|
||
|
year:
|
||
|
selector: group.groupYear
|
||
|
optional: true
|
||
|
_season:
|
||
|
selector: season
|
||
|
optional: true
|
||
|
filters:
|
||
|
- name: re_replace
|
||
|
args: ["^0$", ""]
|
||
|
- name: re_replace
|
||
|
args: ["^([1-9])$", "S0$1"]
|
||
|
- name: re_replace
|
||
|
args: ["^(\\d{2,})$", "S$1"]
|
||
|
_episode:
|
||
|
selector: episode
|
||
|
optional: true
|
||
|
filters:
|
||
|
- name: re_replace
|
||
|
args: ["^0$", ""]
|
||
|
- name: re_replace
|
||
|
args: ["^([1-9])$", "E0$1"]
|
||
|
- name: re_replace
|
||
|
args: ["^(\\d{2,})$", "E$1"]
|
||
|
_episode_info:
|
||
|
text: "{{ .Result._season }}{{ .Result._episode }}"
|
||
|
_format:
|
||
|
selector: format
|
||
|
filters:
|
||
|
- name: replace
|
||
|
args: ["Blu-Ray Original", "COMPLETE BLURAY"]
|
||
|
- name: re_replace
|
||
|
args: ["Blu-Ray Remux", "Remux"]
|
||
|
- name: re_replace
|
||
|
args: ["Blu-Ray Rip", "BluRay.Rip"]
|
||
|
- name: re_replace
|
||
|
args: ["mHD", "mHD.BluRay.Rip"]
|
||
|
_encoding:
|
||
|
selector: encoding
|
||
|
_release_group:
|
||
|
selector: team
|
||
|
optional: true
|
||
|
_media:
|
||
|
selector: media
|
||
|
optional: true
|
||
|
_vff:
|
||
|
selector: vff
|
||
|
optional: true
|
||
|
_vfq:
|
||
|
selector: vfq
|
||
|
optional: true
|
||
|
_vfi:
|
||
|
selector: vfi
|
||
|
optional: true
|
||
|
_vf:
|
||
|
selector: vf
|
||
|
optional: true
|
||
|
_vof:
|
||
|
selector: vof
|
||
|
optional: true
|
||
|
_hdr:
|
||
|
selector: hdr
|
||
|
optional: true
|
||
|
_hdr10plus:
|
||
|
selector: hdr10plus
|
||
|
optional: true
|
||
|
_dovi:
|
||
|
selector: dovi
|
||
|
optional: true
|
||
|
title_optional:
|
||
|
selector: group.groupName
|
||
|
filters:
|
||
|
- name: append
|
||
|
args: ".{{ .Result.year }}.{{ .Result._episode_info }}.{{ .Result._format }}.{{ .Result._encoding }}.{{ .Result._media }}{{ if eq .Result._hdr \"True\" }}.HDR{{ else }}{{ end }}.{{ if eq .Result._hdr10plus \"True\" }}.HDR10+{{ else }}{{ end }}.{{ if eq .Result._dovi \"True\" }}.DoVi{{ else }}{{ end }}"
|
||
|
- name: append
|
||
|
args: "{{ if or (eq .Result._vff \"True\") (eq .Result._vfq \"True\") }}.MULTI{{ else }}{{ end }}{{ if or (eq .Result._vfi \"True\") (eq .Result._vf \"True\") }}.MULTI{{ else }}{{ end }}"
|
||
|
- name: replace
|
||
|
args: [".MULTI.MULTI", ".MULTI"]
|
||
|
- name: append
|
||
|
args: "{{ if eq .Result._vof \"True\" }}.FRENCH{{ else }}{{ end }}"
|
||
|
- name: re_replace
|
||
|
args: ["[\\s.]+", "."]
|
||
|
- name: re_replace
|
||
|
args: ["\\.*([\\-:,])\\.*", "$1"]
|
||
|
- name: trim
|
||
|
- name: trim
|
||
|
args: .
|
||
|
- name: append
|
||
|
args: "{{ if .Result._release_group }}-{{ .Result._release_group }}{{ else }}{{ end }}"
|
||
|
_filename:
|
||
|
selector: "fileName"
|
||
|
optional: true
|
||
|
filters:
|
||
|
- name: replace
|
||
|
args: [".mkv", ""]
|
||
|
- name: append
|
||
|
args: " {{ if and (.Config.add_hybrid_features_to_filename) (eq .Result._hdr \"True\") }}[HDR]{{ else }}{{ end }}{{ if and (.Config.add_hybrid_features_to_filename) (eq .Result._hdr10plus \"True\") }}[HDR10+]{{ else }}{{ end }}{{ if and (.Config.add_hybrid_features_to_filename) (eq .Result._dovi \"True\") }}[DoVi]{{ else }}{{ end }}"
|
||
|
title_phase1:
|
||
|
text: "{{ if and (eq .Result.files \"1\") (.Result._filename) }}{{ .Result._filename }}{{ else }}{{ .Result.title_optional }}{{ end }}"
|
||
|
title_vostfr:
|
||
|
text: "{{ .Result.title_phase1 }}"
|
||
|
filters:
|
||
|
- name: re_replace
|
||
|
args: ["(?i)\\b(vostfr|subfrench)\\b", "ENGLISH"]
|
||
|
title_phase2:
|
||
|
text: "{{ if .Config.vostfr }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_phase1 }}{{ end }}"
|
||
|
title_multilang:
|
||
|
text: "{{ .Result.title_phase2 }}"
|
||
|
filters:
|
||
|
- name: re_replace
|
||
|
args: ["(?i)\\b(MULTI(?!.*(?:FRENCH|ENGLISH|VOSTFR)))\\b", "{{ .Config.multilanguage }}"]
|
||
|
title:
|
||
|
text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase2 }}{{ end }}"
|
||
|
description:
|
||
|
text: "{{ .Result._filename }}"
|
||
|
_free:
|
||
|
selector: isFreeleech
|
||
|
downloadvolumefactor:
|
||
|
text: "{{ if eq .Result._free \"True\" }}0{{ else }}1{{ end }}"
|
||
|
uploadvolumefactor:
|
||
|
text: 1
|
||
|
minimumratio:
|
||
|
text: 1.0
|
||
|
minimumseedtime:
|
||
|
# 3 days (as seconds = 3 x 24 x 60 x 60)
|
||
|
text: 259200
|
||
|
# JSON Gazelle
|