diff --git a/src/Jackett.Common/Definitions/3evils.yml b/src/Jackett.Common/Definitions/3evils.yml
new file mode 100644
index 000000000..41ec909a4
--- /dev/null
+++ b/src/Jackett.Common/Definitions/3evils.yml
@@ -0,0 +1,182 @@
+---
+id: 3evils
+name: 3evils
+description: "3evils is a Private Torrent Tracker for MOVIES / TV / GENERAL"
+language: en-US
+type: private
+encoding: UTF-8
+links:
+ - https://3evils.net/
+
+caps:
+ categorymappings:
+ - {id: 1, cat: PC, desc: "Apps"}
+ - {id: 24, cat: Books, desc: "Books/Magazines"}
+ - {id: 12, cat: TV/Anime, desc: "Movies/Anime"}
+ - {id: 31, cat: Movies, desc: "Movies/FooKaS RG"}
+ - {id: 84, cat: Movies, desc: "Movies/Kids"}
+ - {id: 55, cat: Movies/WEB-DL, desc: "Movies/WEB-DL"}
+ - {id: 70, cat: Movies/WEB-DL, desc: "Movies/WEBRip"}
+ - {id: 71, cat: Movies/HD, desc: "Movies/x265"}
+ - {id: 64, cat: Movies/SD, desc: "Movies/XViD"}
+ - {id: 26, cat: Audio/Lossless, desc: "Music/FLAC"}
+ - {id: 10, cat: Audio/MP3, desc: "Music/MP3"}
+ - {id: 63, cat: Audio/Video, desc: "Music/Videos"}
+ - {id: 29, cat: Movies, desc: "Movies/Packs"}
+ - {id: 19, cat: Audio, desc: "Music/Packs"}
+ - {id: 61, cat: TV/Anime, desc: "TV/Anime"}
+ - {id: 82, cat: TV/Sport, desc: "TV/Sports"}
+ - {id: 36, cat: TV/HD, desc: "TV/x265"}
+ - {id: 45, cat: TV/SD, desc: "TV/XViD"}
+
+ 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: sort
+ type: select
+ label: Sort requested from site
+ default: 4
+ options:
+ 4: created
+ 7: seeders
+ 5: size
+ 1: title
+ - 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. The default is 15.
+
+login:
+ path: takelogin.php
+ method: post
+ inputs:
+ username: "{{ .Config.username }}"
+ password: "{{ .Config.password }}"
+ use_ssl: 1
+ perm_ssl: ""
+ error:
+ - selector: td.embedded:contains("Login failed!")
+ test:
+ path: /
+ selector: a[href*="/logout.php?hash_please="]
+
+search:
+ paths:
+ # https://www.3evils.net/browse.php?c16=1&c17=1&c3=1&c4=1&search=&searchin=title&incldead=0&only_free=1
+ - path: browse.php
+
+ inputs:
+ $raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
+ search: "{{ .Keywords }}"
+ # title, descr, genre, all
+ searchin: title
+ # 0 active, 1 incldead, 2 onlydead
+ incldead: 1
+ only_free: "{{ if .Config.freeleech }}1{{ else }}{{ end }}"
+ sort: "{{ .Config.sort }}"
+ type: "{{ .Config.type }}"
+
+ keywordsfilters:
+ - name: re_replace
+ args: ["(\\w+)", " +$1"] # prepend + to each word
+
+ rows:
+ selector: table.table-bordered tbody tr:has(a[href^="download.php?torrent="])
+
+ fields:
+ category:
+ selector: a[href^="browse.php?cat="]
+ attribute: href
+ filters:
+ - name: querystring
+ args: cat
+ title:
+ selector: a[href^="details.php?id="]
+ attribute: onmouseover
+ filters:
+ - name: regexp
+ args: "Tip\\('(.*?)"
+ details:
+ selector: a[href^="details.php?id="]
+ attribute: href
+ download:
+ selector: a[href^="download.php?torrent="]
+ attribute: href
+ poster:
+ selector: a[href^="details.php?id="]
+ attribute: onmouseover
+ filters:
+ # onmouseover="Tip('blahblah />');"
+ # 10:20 AM
+ # Yesterday
08:03 PM
+ optional: true
+ selector: td:nth-last-child(7):contains("day")
+ filters:
+ - name: append
+ args: " +00:00" # auto adjusted by site account profile
+ date_year:
+ # Feb 14 2019
10:20 AM
+ optional: true
+ selector: td:nth-last-child(7):not(:contains("day"))
+ filters:
+ - name: append
+ args: " +00:00" # auto adjusted by site account profile
+ - name: dateparse
+ args: "Jan 2 2006 03:04 PM -07:00"
+ date:
+ text: "{{ if or .Result.date_year .Result.date_day }}{{ or .Result.date_year .Result.date_day }}{{ else }}now{{ end }}"
+ size:
+ selector: td:nth-last-child(6)
+ grabs:
+ selector: td:nth-last-child(5)
+ filters:
+ - name: regexp
+ args: (\d+)
+ seeders:
+ selector: td:nth-last-child(4)
+ leechers:
+ selector: td:nth-last-child(3)
+ downloadvolumefactor:
+ case:
+ "a.info:contains(\"[FREE]\")": 0
+ "*": 1
+ uploadvolumefactor:
+ case:
+ "*": 1
+ minimumratio:
+ text: 1.0
+ minimumseedtime:
+ # 2 days (as seconds = 2 x 24 x 60 x 60)
+ text: 172800
+# U-232 V5 (customised)
\ No newline at end of file