diff --git a/README.md b/README.md
index 9c5a2dadf..2ae27ac84 100644
--- a/README.md
+++ b/README.md
@@ -438,6 +438,7 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* Locadora
* LosslessClub [![(invite needed)][inviteneeded]](#)
* LST
+ * LustHive
* M-Team TP (MTTP) [![(invite needed)][inviteneeded]](#)
* MaDs Revolution
* Majomparádé (TurkDepo)
diff --git a/src/Jackett.Common/Definitions/lusthive.yml b/src/Jackett.Common/Definitions/lusthive.yml
new file mode 100644
index 000000000..155f3fc6a
--- /dev/null
+++ b/src/Jackett.Common/Definitions/lusthive.yml
@@ -0,0 +1,180 @@
+---
+id: lusthive
+name: LustHive
+description: "LustHive is a Private Torrent Tracker for 3X"
+language: en-US
+type: private
+encoding: UTF-8
+links:
+ - https://lusthive.org/
+
+caps:
+ categorymappings:
+ - {id: 1, cat: XXX, desc: "Amateur"}
+ - {id: 3, cat: XXX, desc: "Anal"}
+ - {id: 4, cat: XXX, desc: "Asian"}
+ - {id: 5, cat: XXX, desc: "BBW"}
+ - {id: 6, cat: XXX, desc: "BDSM"}
+ - {id: 7, cat: XXX, desc: "Big Ass"}
+ - {id: 8, cat: XXX, desc: "Big Tits"}
+ - {id: 9, cat: XXX, desc: "Black"}
+ - {id: 10, cat: XXX, desc: "Classic"}
+ - {id: 11, cat: XXX, desc: "Creampie"}
+ - {id: 12, cat: XXX, desc: "Cumshot"}
+ - {id: 13, cat: XXX, desc: "Fetish"}
+ - {id: 14, cat: XXX, desc: "Games"}
+ - {id: 15, cat: XXX, desc: "Gay / Bi"}
+ - {id: 16, cat: XXX, desc: "Hairy"}
+ - {id: 17, cat: XXX, desc: "Hardcore"}
+ - {id: 18, cat: XXX, desc: "HD"}
+ - {id: 19, cat: XXX, desc: "Hentai"}
+ - {id: 20, cat: XXX, desc: "Homemade"}
+ - {id: 21, cat: XXX, desc: "Interracial"}
+ - {id: 22, cat: XXX, desc: "Latina"}
+ - {id: 23, cat: XXX, desc: "Lesbian"}
+ - {id: 24, cat: XXX, desc: "Lingerie"}
+ - {id: 25, cat: XXX, desc: "Magazines"}
+ - {id: 26, cat: XXX, desc: "Manga"}
+ - {id: 27, cat: XXX, desc: "Masturbation"}
+ - {id: 28, cat: XXX, desc: "Mature"}
+ - {id: 29, cat: XXX, desc: "Oral"}
+ - {id: 30, cat: XXX, desc: "Orgy"}
+ - {id: 31, cat: XXX, desc: "Other"}
+ - {id: 32, cat: XXX, desc: "Pack"}
+ - {id: 33, cat: XXX, desc: "Parody"}
+ - {id: 34, cat: XXX, desc: "Paysite"}
+ - {id: 35, cat: XXX, desc: "Pictures"}
+ - {id: 36, cat: XXX, desc: "Piss"}
+ - {id: 37, cat: XXX, desc: "Pregnant"}
+ - {id: 38, cat: XXX, desc: "Scat / Puke"}
+ - {id: 39, cat: XXX, desc: "Siterip"}
+ - {id: 40, cat: XXX, desc: "Softcore"}
+ - {id: 41, cat: XXX, desc: "Squirt"}
+ - {id: 42, cat: XXX, desc: "Straight"}
+ - {id: 2, cat: XXX, desc: "Teen"}
+ - {id: 43, cat: XXX, desc: "Transgender"}
+ - {id: 44, cat: XXX, desc: "Voyeur"}
+
+ modes:
+ 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: info_tpp
+ type: info
+ label: Results Per Page
+ default: For best results, change the Torrents per page: setting to 100 on your account profile.
+ - 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
+ method: form
+ inputs:
+ username: "{{ .Config.username }}"
+ password: "{{ .Config.password }}"
+ cinfo: "2550|1350|24|-60"
+ iplocked: 0
+ keeploggedin: 1
+ error:
+ - selector: div.error
+ test:
+ path: /
+ selector: "#nav_userinfo"
+
+search:
+ paths:
+ - path: torrents.php
+ inputs:
+ $raw: "{{ range .Categories }}filter_cat[{{.}}]=1&{{end}}"
+ title: "{{ .Keywords }}"
+ order_by: "{{ .Config.sort }}"
+ order_way: "{{ .Config.type }}"
+ action: advanced
+ filter_freeleech: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
+
+ rows:
+ selector: table#torrent_table > tbody > tr[class^="torrent row"]:has(a[href*="action=download"])
+
+ fields:
+ category:
+ selector: a[href^="/torrents.php?filter_cat["]
+ attribute: href
+ filters:
+ - name: regexp
+ args: \[(\d+)\]
+ title:
+ selector: a[href^="/torrents.php?id="]
+ details:
+ selector: a[href^="/torrents.php?id="]
+ attribute: href
+ download:
+ selector: a[href^="/torrents.php?action=download&id="]
+ attribute: href
+ description_tags:
+ selector: div.tags
+ description:
+ case:
+ i.icon_torrent_okay: "Verified: {{ .Result.description_tags }}"
+ "*": "Unverified: {{ .Result.description_tags }}"
+ poster:
+ selector: td:nth-child(2) > script
+ filters:
+ - name: regexp
+ args: "src=\\\\\"(.*?)\\\\\""
+ - name: re_replace
+ args: ["\\\\(.)", "$1"]
+ - name: replace
+ args: ["/static/common/noartwork/noimage.png", ""]
+ files:
+ selector: td:nth-child(3)
+ date:
+ selector: td:nth-child(5) > span
+ attribute: title
+ # auto adjusted by site account profile
+ filters:
+ - name: dateparse
+ args: "MMM dd yyyy, HH:mm"
+ size:
+ selector: td:nth-child(6)
+ grabs:
+ selector: td:nth-child(7)
+ seeders:
+ selector: td:nth-child(8)
+ leechers:
+ selector: td:nth-child(9)
+ downloadvolumefactor:
+ case:
+ span.icon[title*="Freeleech"]: 0
+ "img[alt=\"Freeleech\"]": 0
+ "*": 1
+ uploadvolumefactor:
+ case:
+ span.icon[title*="DoubleSeed"]: 2
+ "img[alt=\"DoubleSeed\"]": 2
+ "*": 1
+ minimumratio:
+ text: 0.2
+# Luminance