diff --git a/README.md b/README.md
index b18f8b801..d24688a38 100644
--- a/README.md
+++ b/README.md
@@ -241,6 +241,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/
* Audiobook Torrents (ABT + RNS)
* AvistaZ (AsiaTorrents)
* Awesome-HD (AHD)
+ * Borgzelle
* BTGigs (TG)
* BTNext (BTNT)
* BTSCHOOL
diff --git a/src/Jackett.Common/Definitions/borgzelle.yml b/src/Jackett.Common/Definitions/borgzelle.yml
new file mode 100644
index 000000000..1e836c2fa
--- /dev/null
+++ b/src/Jackett.Common/Definitions/borgzelle.yml
@@ -0,0 +1,215 @@
+---
+id: borgzelle
+name: Borgzelle
+description: "Borgzelle is a GERMAN Private Torrent Tracker for MOVIES / TV / GENERAL"
+language: de-de
+type: private
+encoding: UTF-8
+links:
+ - https://borgzelle.borg/
+certificates:
+ - a3f8822c97fbfe5bd00760cf8e6b75c4284f657d # self signed
+
+caps:
+ categorymappings:
+ - {id: 17, cat: TV/Sport, desc: "Sport"}
+ - {id: 32, cat: TV, desc: "Serien-Pakete"}
+ - {id: 12, cat: TV, desc: "Serien"}
+ - {id: 14, cat: Audio/Video, desc: "Musikvideo"}
+ - {id: 15, cat: TV/Documentary, desc: "Doku"}
+ - {id: 16, cat: TV/OTHER, desc: "Comedy"}
+ - {id: 18, cat: TV/Anime, desc: "Anime"}
+ - {id: 6, cat: Movies/SD, desc: "Movie XviD/DivX"}
+ - {id: 34, cat: Movies/UHD, desc: "Movie UHD"}
+ - {id: 13, cat: Movies, desc: "Movie Kinder"}
+ - {id: 11, cat: Movies/HD, desc: "Movie HD2DVD"}
+ - {id: 9, cat: Movies/HD, desc: "Movie HD"}
+ - {id: 33, cat: Movies/HD, desc: "Movie h265"}
+ - {id: 7, cat: Movies/HD, desc: "Movie h264"}
+ - {id: 10, cat: Movies/DVD, desc: "Movie DVD"}
+ - {id: 28, cat: PC/Games, desc: "Spiele PDA/Handy"}
+ - {id: 25, cat: PC/Games, desc: "Spiele PC"}
+ - {id: 27, cat: PC/Games, desc: "Spiele MAC"}
+ - {id: 26, cat: Console, desc: "Spiele Konsolen"}
+ - {id: 30, cat: Other, desc: "Diverse Wallpaper"}
+ - {id: 31, cat: Other, desc: "Sonstiges"}
+ - {id: 29, cat: Books/Ebook, desc: "E-Book"}
+ - {id: 19, cat: Audio, desc: "Musik"}
+ - {id: 20, cat: Audio/Audiobook, desc: "Hörbuch"}
+ - {id: 21, cat: PC/0day, desc: "Software Windows"}
+ - {id: 23, cat: PC/Phone-Other, desc: "Software PDA/Handy"}
+ - {id: 22, cat: PC/Mac, desc: "Software MAC"}
+ - {id: 24, cat: PC, desc: "Software Linux"}
+
+ modes:
+ search: [q]
+ tv-search: [q, season, ep]
+ movie-search: [q]
+ music-search: [q]
+ book-search: [q]
+
+settings:
+ - name: info_sitelink
+ type: info
+ label: About Site Link
+ default: If the Site Link domain returns a DNS error then you have not yet been assimilated.
+ - name: username
+ type: text
+ label: Username
+ - name: password
+ type: password
+ label: Password
+ - 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: freeleech
+ type: checkbox
+ label: Filter freeleech only
+ default: false
+ - name: sort
+ type: select
+ label: Sort requested from site
+ default: "added"
+ options:
+ "added": "created"
+ "seeds": "seeders"
+ "size": "size"
+ "name": "title"
+ - 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 }}"
+ keeplogged: 1
+ error:
+ - selector: font[color="red"]
+ test:
+ path: index.php
+ selector: a[href^="logout.php?auth="]
+
+search:
+ paths:
+ # https://borgzelle.borg/browse.php?action=browse&showsearch=1&c34=1&c9=1&search=&incldead=0&orderby=added&sort=desc
+ - path: browse.php
+ inputs:
+ action: browse
+ showsearch: 1
+ $raw: "{{ range .Categories }}c{{.}}=1&{{end}}"
+ search: "{{ .Keywords }}"
+ # 0 all, 1 active, 2 dead
+ incldead: 0
+ orderby: "{{ .Config.sort }}"
+ sort: "{{ .Config.type }}"
+ # the site does not support imdbid searching or present imdb links in results
+
+ rows:
+ selector: "table[style=\"width: 100%;\"] > tbody > tr{{ if .Config.freeleech }}:has(span:contains(\"[OnlyUpload]\")){{ else }}{{ end }}"
+
+ fields:
+ category:
+ selector: a[href^="browse.php?cat="]
+ attribute: href
+ filters:
+ - name: querystring
+ args: cat
+ title:
+ selector: a[href^="torrents.php?torrentid="]
+ details:
+ selector: a[href^="torrents.php?torrentid="]
+ attribute: href
+ download:
+ selector: a[href^="torrents.php?action=download&id="]
+ attribute: href
+ banner:
+ selector: a[href^="torrents.php?torrentid="] span img
+ attribute: src
+ date:
+ # 17.10. 18:34 (vor 2 Stunden und 57 Minuten)
+ selector: td:nth-child(2) > table > tbody > tr > td:nth-child(2)
+ filters:
+ - name: regexp
+ args: "\\((.+?)\\)"
+ # translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese
+ - name: re_replace
+ args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前)", " ago"]
+ - name: re_replace
+ args: ["(?i)(saniye|sekundit|sekunder|secondi|sekund|segundos|sekundami|секунд|secunde|secondes|Sekunden|секунди|seconden|秒前)", "seconds"]
+ - name: re_replace
+ args: ["(?i)(minutit|minutter|minuti|minuty|minutos|минуты|минут|Minuten|минути|minuten)", "minutes"]
+ - name: re_replace
+ args: ["(?i)(dakika|minut|minuto|minuta|minutt|минута|Minute|minuut|分钟|分)", " minute"]
+ - name: re_replace
+ args: ["(?i)(tundi|timer|ore|godziny|horas|hodiny|hoden|часа|часов|ore|heures|Stunden)", "hours"]
+ - name: re_replace
+ args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間)", " hour"]
+ - name: re_replace
+ args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen)", "days"]
+ - name: re_replace
+ args: ["(?i)(gün|päev|dag|giorno|dzień|dia|den|день|zi|día|jour|Tag|ден|天|日)", " day"]
+ - name: re_replace
+ args: ["(?i)(nädalat|uger|settimane|tygodnie|uker|semanas|týdny|недели|недель|săptămâni|semaines|Wochen|седмици|weken)", "weeks"]
+ - name: re_replace
+ args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間)", " week"]
+ - name: re_replace
+ args: ["(?i) (ay)", "month"]
+ - name: re_replace
+ args: ["(?i)(kuud|måneder|mesi|miesiące|meses|měsíce|месяца|месяцев|luni|meses|mois|Monaten|месеца|maanden)", "months"]
+ - name: re_replace
+ args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月)", " month"]
+ - name: re_replace
+ args: ["(?i)(aastat|anni|lata|anos|roky|года|ani|años|ans|Jahren|години)", " years"]
+ - name: re_replace
+ args: ["(?i)(yil|aasta|år|anno|rok|ano|год|año|Jahr|година|jaar|年)", " year"]
+ - name: re_replace
+ args: ["(?i) (an)", "year"]
+ - name: re_replace
+ args: ["(?i)(und)", ""]
+ size:
+ selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(1) b
+ filters:
+ - name: replace
+ args: [".", ""]
+ - name: replace
+ args: [",", "."]
+ files:
+ selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(1) a span
+ filters:
+ - name: regexp
+ args: (\d+)
+ seeders:
+ selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(2) a span
+ filters:
+ - name: regexp
+ args: (\d+)
+ leechers:
+ selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(2) a span:nth-child(2)
+ filters:
+ - name: regexp
+ args: (\d+)
+ grabs:
+ selector: td:nth-child(2) > table > tbody > tr:nth-child(2) > td:nth-child(3) a span
+ filters:
+ - name: regexp
+ args: (\d+)
+ downloadvolumefactor:
+ case:
+ "span:contains(\"[OnlyUpload]\")": 0
+ "*": 1
+ uploadvolumefactor:
+ text: 1
+ minimumratio:
+ text: 0.7
+ minimumseedtime:
+ # 3 days (as seconds = 3 x 24 x 60 x 60)
+ text: 259200
+# Gazelle