diff --git a/README.md b/README.md
index 4802e9c98..44fcda8ba 100644
--- a/README.md
+++ b/README.md
@@ -197,6 +197,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* Genesis-Movement
* HamsterStudio
* HD-CzTorrent
+ * HDGalaKtik
* HunTorrent
* IV-Torrents
* KinoNaVse100
diff --git a/src/Jackett.Common/Definitions/hdgalaktik.yml b/src/Jackett.Common/Definitions/hdgalaktik.yml
new file mode 100644
index 000000000..ed49a6eaa
--- /dev/null
+++ b/src/Jackett.Common/Definitions/hdgalaktik.yml
@@ -0,0 +1,200 @@
+---
+id: hdgalaktik
+name: HDGalaKtik
+description: "HDGalaKtik is a RUSSIAN Semi-Private tracker for TV / MOVIES / GENERAL"
+language: ru-RU
+type: semi-private
+encoding: UTF-8
+links:
+ - https://hdgalaktik.com/
+
+caps:
+ categorymappings:
+ - {id: 13, cat: Movies, desc: "Фильмы (Movies)"}
+ - {id: 6, cat: TV, desc: "Мультфильмы (Cartoons)"}
+ - {id: 10, cat: Audio, desc: "Музыка (Music)"}
+ - {id: 26, cat: PC, desc: "Программы (Programs)"}
+ - {id: 5, cat: Console, desc: "Игры (Games)"}
+ - {id: 25, cat: Other, desc: "Картинки (Pictures)"}
+ - {id: 11, cat: TV, desc: "Сериалы (TV Series)"}
+ - {id: 12, cat: TV/Anime, desc: "Аниме (Anime)"}
+ - {id: 16, cat: Books, desc: "Книги (Books)"}
+ - {id: 18, cat: Audio/Video, desc: "Клипы / Ролики (Clips / Trailers)"}
+ - {id: 22, cat: TV, desc: "ТВ / Передачи (TV)"}
+ - {id: 27, cat: PC/Mobile-Other, desc: "Игры - Мобила / КПК (Mobile)"}
+ - {id: 1, cat: PC/ISO, desc: "Образы (ISO)"}
+ - {id: 4, cat: Other, desc: "Другое (Other)"}
+
+ 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: freeleech
+ type: checkbox
+ label: Search freeleech only
+ default: false
+ - name: striprussian
+ type: checkbox
+ label: Strip Russian Letters
+ default: false
+ - name: sort
+ type: select
+ label: Sort requested from site
+ default: 4
+ options:
+ 4: created
+ 1: title
+ 5: size
+ 8: seeders
+ - 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 Torrents per page: setting to 100 on your account profile.
+
+login:
+ path: takelogin.php
+ method: post
+ inputs:
+ username: "{{ .Config.username }}"
+ password: "{{ .Config.password }}"
+ error:
+ - selector: div.error
+ - selector: pre.captcha
+ message:
+ text: The username may not exist or the password may not have been entered.
+ test:
+ path: /
+ selector: a[href="mybonus.php"]
+
+search:
+ # https://hdgalaktik.com/browse.php?search=&stype=0&s=0&cat=0&gr=0&kp=0&im=0&incldead=1&sort=0&type=desc
+ paths:
+ - path: browse.php
+ keywordsfilters:
+ - name: re_replace # S01E01 to [1 сезон 1 сери]
+ args: ["(?i)S0*(\\d+)E0*(\\d+)", "[$1 сезон $2 сери]"]
+ - name: re_replace # S01 to [1 сезон]
+ args: ["(?i)S0*(\\d+)", "[$1 сезон]"]
+ - name: re_replace # E01 to [1 сери]
+ args: ["(?i)E0*(\\d+)", "[$1 сери]"]
+ - name: re_replace # replace special characters with "%" (wildcard)
+ args: ["[^a-zA-Z0-9]+", "%"]
+ inputs:
+ $raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
+ search: "{{ .Keywords }}"
+ # 0 title, 1 descr, 2 filename, 4 infohash
+ stype: 0
+ # 0 AND 1 OR
+ s: 0
+ # release group
+ gr: 0
+ # ratings
+ kp: 0
+ # 1 active, 2 dead, 3 gold, 4 sticky, lots of others
+ incldead: "{{ if .Config.freeleech }}3{{ else }}1{{ end }}"
+ sort: "{{ .Config.sort }}"
+ ascdesc: "{{ .Config.type }}"
+
+ rows:
+ selector: table.embedded > tbody > tr.torcontduo
+
+ fields:
+ category:
+ selector: a[href^="browse.php?cat="]
+ attribute: href
+ filters:
+ - name: querystring
+ args: cat
+ title:
+ selector: a.alink
+ attribute: title
+ filters:
+ # normalize to SXXEYY format
+ - name: re_replace
+ args: ["[\\.\\,\\:\\/\\|\\[\\]]", " "]
+ - name: re_replace
+ args: ["(.*) от .*$", "$1"]
+ - name: re_replace
+ args: ["(.*)(\\d+\\-\\d+)\\s*[CСcс]езон\\s*(\\d+\\-\\d+)\\s*[CСcс]ери[ия]\\s*из\\s*\\d+(.*)", "$1 S$2E$3 rus $4"]
+ - name: re_replace
+ args: ["(.*)(\\d+)\\-(\\d+)\\s*[CСcс]езон\\s*(\\d+)\\-(\\d+)\\s*[CСcс]ери[ия](.*)", "$1 S$2E$3 rus $4"]
+ - name: re_replace
+ args: ["(.*)(\\d+)\\s*[CСcс]езон\\s*(\\d+\\-\\d+)\\s*[CСcс]ери[ия]\\s*из\\s*\\d+(.*)", "$1 S$2E$3 rus $4"]
+ - name: re_replace
+ args: ["(.*)(\\d+)\\s*[CСcс]езон\\s*(\\d+\\-\\d+)\\s*[CСcс]ери[ия](.*)", "$1 S$2E$3 rus $4"]
+ - name: re_replace
+ args: ["(.*)(\\d+\\-\\d+)\\s*[CСcс]езон\\s*(.*)", "$1 S$2 rus $3"]
+ - name: re_replace
+ args: ["(.*)(\\d+)\\s*[CСcс]езон\\s*(.*)", "$1 S$2 rus $3"]
+ - name: re_replace
+ args: ["(.*)(\\d+\\-\\d+)\\s*[CСcс]ери[ия]\\s*из\\s*\\d+(.*)", "$1 E$2 rus $3"]
+ - name: re_replace
+ args: ["(.*)(\\d+)\\s*[CСcс]ери[ия]\\s*из\\s*\\d+(.*)", "$1 E$2 rus $3"]
+ - name: re_replace
+ args: ["(.*)(\\d+\\-\\d+)\\s*[CСcс]ери[ия](.*)", "$1 E$2 rus $3"]
+ - name: re_replace
+ args: ["(.*)(\\d+)\\s*[CСcс]ери[ия](.*)", "$1 E$2 rus $3"]
+ - name: re_replace
+ args: ["(\\([А-Яа-яЁё\\W]+\\))|(^[А-Яа-яЁё\\W\\d]+\\/ )|([а-яА-ЯЁё \\-]+,+)|([а-яА-ЯЁё]+)", "{{ if .Config.striprussian }}{{ else }}$1$2$3$4{{ end }}"]
+ - name: replace
+ args: ["WEBRip", "WEBDL"]
+ - name: replace
+ args: ["WEB-DL", "WEBDL"]
+ - name: replace
+ args: ["WEBDLRip", "WEBDL"]
+ - name: replace
+ args: ["HDTVRip", "HDTV"]
+ - name: replace
+ args: ["SATRip", "TV"]
+ details:
+ selector: a.alink
+ attribute: href
+ download:
+ selector: a.alink
+ attribute: href
+ filters:
+ - name: replace
+ args: ["details", "download"]
+ size:
+ selector: td:nth-child(4)
+ seeders:
+ selector: td:nth-child(6)
+ filters:
+ - name: split
+ args: ["|", 0]
+ leechers:
+ selector: td:nth-child(6)
+ filters:
+ - name: split
+ args: ["|", 0]
+ date:
+ # 1 day ago
+ selector: a[href^="browse.php?date="]
+ filters:
+ - name: timeago
+ downloadvolumefactor:
+ case:
+ img[src="/pic/freedownload.gif"]: 0
+ "*": 1
+ uploadvolumefactor:
+ text: 1
+ minimumratio:
+ text: 1.0
+# engine n/a