diff --git a/README.md b/README.md
index 2bf943ee5..43ada70db 100644
--- a/README.md
+++ b/README.md
@@ -109,6 +109,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
### Supported Private Trackers
* 2 Fast 4 You
* 3D Torrents
+ * 3evils
* 420files
* 720pier
* Abnormal
diff --git a/src/Jackett.Common/Definitions/3evils.yml b/src/Jackett.Common/Definitions/3evils.yml
new file mode 100644
index 000000000..eff8404d9
--- /dev/null
+++ b/src/Jackett.Common/Definitions/3evils.yml
@@ -0,0 +1,114 @@
+---
+ site: 3evils
+ name: 3evils
+ description: "3evils is a Private Torrent Tracker for MOVIES / TV / GENERAL"
+ language: en
+ type: private
+ encoding: UTF-8
+ links:
+ - https://www.3evils.com/
+
+ caps:
+ categorymappings:
+ - {id: 2, cat: Console, desc: "Games"}
+ - {id: 3, cat: Movies, desc: "Movies"}
+ - {id: 4, cat: Audio, desc: "Music"}
+ - {id: 9, cat: TV/Anime, desc: " Anime"}
+ - {id: 17, cat: TV, desc: " TV"}
+ - {id: 18, cat: PC, desc: "Appz"}
+
+ modes:
+ search: [q]
+ tv-search: [q, season, ep]
+ movie-search: [q]
+
+ login:
+ path: login.php
+ method: form
+ form: form[action="takelogin.php"]
+ inputs:
+ username: "{{ .Config.username }}"
+ password: "{{ .Config.password }}"
+ returnto: "/browse.php"
+ error:
+ - selector: h2:contains("Login failed!")
+ message:
+ selector: table tr td.colhead2
+ test:
+ path: /
+ selector: :has(a[href$="/logout.php?hash_please="])
+
+ search:
+ paths:
+ # ttps://www.3evils.com/browse.php?search=black+lightning+s02e11&searchin=title&incldead=1
+ # https://www.3evils.com/browse.php?c3=1&c4=1&search=&searchin=title&incldead=0
+ - path: browse.php
+ inputs:
+ $raw: "{{range .Categories}}c{{.}}=1&{{end}}"
+ search: "{{.Keywords}}"
+ incldead: 1
+ rows:
+ selector: table.table-bordered tr:has(a[href^="browse.php?cat="])
+ filters:
+ - name: andmatch
+ fields:
+ title:
+ selector: a[href^="details.php?id="] b
+ title:
+ # if this is available it is the full length title, as the one above can be abbreviated with ...
+ optional: true
+ selector: a[href^="details.php?id="][onmouseover]
+ attribute: onmouseover
+ filters:
+ - name: regexp
+ args: "Tip\\('(.*?)"
+ details:
+ selector: a[href^="details.php?id="]
+ attribute: href
+ category:
+ selector: a[href^="browse.php?cat="]
+ attribute: href
+ filters:
+ - name: querystring
+ args: cat
+ download:
+ selector: a[href^="details.php?id="]
+ attribute: href
+ filters:
+ - name: replace
+ args: ["details.php?id=", "download.php?torrent="]
+ size:
+ selector: td:nth-last-child(6)
+ files:
+ selector: td:nth-last-child(9)
+ grabs:
+ selector: td:nth-last-child(5)
+ filters:
+ - name: replace
+ args: ["Times", ""]
+ # 2 flavours of dates
+ date:
+ # Today
10:20 AM
+ # Yesterday
08:03 PM
+ optional: true
+ selector: td:nth-last-child(7):contains("day")
+ date:
+ # Feb 14 2019
10:20 AM
+ optional: true
+ selector: td:nth-last-child(7):not(:contains("day"))
+ filters:
+ - name: regex # drop break in between date and time
+ args: ["(.+?)<[^>]*>(.+?)","$1 $2"]
+ - name: dateparse
+ args: "Jan 2 2006 03:04 pm"
+ seeders:
+ selector: td:nth-last-child(4)
+ leechers:
+ selector: td:nth-last-child(3)
+ downloadvolumefactor:
+ case:
+ "b:contains(\"[FREE]\")": "0"
+ "*": "1"
+ uploadvolumefactor:
+ case:
+ "*": "1"
\ No newline at end of file