diff --git a/README.md b/README.md
index b477a12eb..c9c6484dc 100644
--- a/README.md
+++ b/README.md
@@ -457,7 +457,6 @@ A third-party Golang SDK for Jackett is available from [webtor-io/go-jackett](ht
* Peers.FM
* PigNetwork
* PirateTheNet (PTN)
- * Pixelados
* PixelCove (Ultimate Gamer)
* PiXELHD (PxHD) [![(invite needed)][inviteneeded]](#)
* PolishSource (PS)
diff --git a/src/Jackett.Common/Definitions/pixelados-html.yml b/src/Jackett.Common/Definitions/pixelados-html.yml
deleted file mode 100644
index 114bd3aa9..000000000
--- a/src/Jackett.Common/Definitions/pixelados-html.yml
+++ /dev/null
@@ -1,224 +0,0 @@
----
-id: pixelados-html
-name: Pixelados
-description: "Pixelados is a Spanish Private Torrent Tracker for HD MOVIES / TV"
-language: es-ES
-type: private
-encoding: UTF-8
-links:
- - https://pixelados.tv/
-
-caps:
- categorymappings:
- - {id: 1, cat: Movies, desc: "Películas"}
- - {id: 2, cat: TV, desc: "Series"}
- - {id: 3, cat: Audio, desc: "Música"}
- - {id: 4, cat: TV/Documentary, desc: "Documentales"}
- - {id: 5, cat: TV/Sport, desc: "Deportes"}
- - {id: 6, cat: TV/Anime, desc: "Animación"}
-
- modes:
- search: [q]
- tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
- movie-search: [q, imdbid, tmdbid]
- music-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: created_at
- options:
- created_at: created
- seeders: seeders
- size: size
- name: title
- - name: type
- type: select
- label: Order requested from site
- default: desc
- options:
- desc: desc
- asc: asc
-
-login:
- path: login
- method: form
- form: form[action$="/login"]
- inputs:
- username: "{{ .Config.username }}"
- password: "{{ .Config.password }}"
- remember: on
- selectorinputs:
- _token:
- selector: input[name="_token"]
- attribute: value
- error:
- - selector: div#ERROR_COPY
-
-search:
- paths:
- - path: torrents
- inputs:
- sortField: "{{ .Config.sort }}"
- sortDirection: "{{ .Config.type }}"
- perPage: 100
- name: "{{ .Keywords }}"
- $raw: "{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range $i, $e := .Categories }}&categories[{{$i}}]={{.}}{{end}}{{ if .Config.freeleech }}&free[0]=100{{ else }}{{ end }}"
- keywordsfilters:
- - name: diacritics
- args: replace
- - name: re_replace
- args: ["\\.", " "]
- - name: re_replace
- args: ["(?i)\\bS0*(\\d+)\\b", "T$1"]
- - name: re_replace
- args: ["(?i)S0?(\\d{1,2})E(\\d{1,2})", "$1x$2"]
-
- rows:
- selector: table > tbody > tr
-
- fields:
- category:
- selector: td.torrent-listings-format div:first-child
- case:
- i.fa-film: 1
- i.fa-tv-retro: 2
- i.fa-music: 3
- i.fa-paw: 4
- i.fa-volleyball: 5
- i.fa-robot: 6
- details:
- selector: a.torrent-listings-name
- attribute: href
- title_raw:
- selector: a.torrent-listings-name
- _format:
- selector: td.torrent-listings-format
- _vose:
- selector: a[href$="torrents?types[0]=53"]
- optional: true
- _mejorada:
- selector: a[href$="torrents?types[0]=52"]
- optional: true
- _corregida:
- selector: a[href$="torrents?types[0]=58"]
- optional: true
- _audio_editado:
- selector: a[href$="torrents?types[0]=39"]
- optional: true
- _overview:
- selector: td.torrent-listings-overview
- remove: a, span.torrent-listings-comments, span.torrent-listings-thanks, span.torrent-listings-uploader
- title:
- text: "{{ .Result.title_raw }} {{ .Result._format }} {{ .Result._overview }}{{ if .Result._vose }}{{ else }} SPANISH{{ end }}{{ if or .Result._mejorada .Result._corregida .Result._audio_editado }} PROPER{{ else }}{{ end }}"
- filters:
- # Replace Spanish season names like T1, MS (MiniSerie), TU (Temporada Unica) for normalized format S1
- - name: re_replace
- args: ["(?i)T(\\d{1,2})\\b", "S$1"]
- - name: re_replace
- args: ["(\\d{2})[×|x](\\d{2})", "S$1E$2"]
- - name: re_replace
- args: ["(\\d{1})[×|x](\\d{2})", "S0$1E$2"]
- - name: re_replace
- args: ["(?i)MS\\b", "S1"]
- - name: re_replace
- args: ["(?i)TU\\b", "S1"]
- download:
- selector: a[href*="/download/"]
- attribute: href
- poster:
- selector: div.torrent-poster img
- attribute: src
- filters:
- - name: replace
- args: ["https://via.placeholder.com/90x135", ""]
- size:
- selector: td.torrent-listings-size
- seeders:
- selector: td.torrent-listings-seeders
- leechers:
- selector: td.torrent-listings-leechers
- grabs:
- selector: td.torrent-listings-completed
- imdbid:
- selector: a[href*="imdb.com/title/tt"]
- attribute: href
- tvdbid:
- selector: a[href*="thetvdb.com/"]
- attribute: href
- tmdbid:
- selector: a[href*="themoviedb.org/movie/"], a[href*="themoviedb.org/tv/"]
- attribute: href
- date:
- selector: td.torrent-listings-age
- filters:
- # translations for Turkish|Estonian|Danish|Italian|Polish|Norwegian|Portuguese|Czech|Russian|Romanian|Spanish|French|German|Bulgarian|Dutch|Chinese|Japanese|Swedish
- - name: re_replace
- args: ["(?i)(önce|tagasi|geleden|fa|temu|siden|há|atrás|nazpět|назад|acum|în urmă|hace|il y a|vor|преди|前|sedan)", " 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|minuter)", "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|timmar)", "hours"]
- - name: re_replace
- args: ["(?i)(saat|tund|time|ora|godzina|hora|hodina|час|oră|heure|Stunde|uur|小时|時間|timme)", " hour"]
- - name: re_replace
- args: ["(?i)(päeva|dage|giorni|dni|dias|dny|дня|дней|zile|días|jours|Tagen|дни|dagen|dagar)", "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|veckor)", "weeks"]
- - name: re_replace
- args: ["(?i)(hafta|nädal|uge|settimana|tydzień|uke|semana|týden|неделю|săptămână|semaine|Woche|седмица|周|週間|vecka)", " 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|månader)", "months"]
- - name: re_replace
- args: ["(?i)(kuu|måned|mese|miesiąc|mês|měsíc|месяц|lună|mes|Monat|месец|maand|个月|ヶ月|månad)", " 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)(För |und)", ""] # Misc removals
- - name: timeago
- downloadvolumefactor:
- case:
- i[class*="fa-id-badge text-orange"]: 0 # 24 Hour FreeLeech From BON Store
- i[class*="fa-trophy text-purple"]: 0 # Special FreeLeech For Certain User Groups
- i[class*="fa-star text-bold"]: 0 # Freeleech From Token
- i[class*="fa-coins text-bold"]: 0 # Freeleech From Token
- i[class*="fa-globe text-blue"]: 0 # Global Freeleech
- i[class*="fa-star text-gold"]: 0 # Freeleech
- i[class*="fa-certificate text-pink"]: 0 # Featured Torrent
- "*": 1
- uploadvolumefactor:
- case:
- i[class*="fa-gem text-green"]: 2 # Single Torrent Double Upload
- i[class*="fa-globe text-green"]: 2 # Global Double Upload
- i[class*="fa-certificate text-pink"]: 2 # Featured Torrent
- "*": 1
-# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
-# minimumratio:
-# text: 0.4
- minimumseedtime:
- # 7 day (as seconds = 7 x 24 x 60 x 60)
- text: 604800
-# html UNIT3D 6.5.0 (custom)
diff --git a/src/Jackett.Common/Definitions/pixelados.yml b/src/Jackett.Common/Definitions/pixelados.yml
deleted file mode 100644
index 9008cb32d..000000000
--- a/src/Jackett.Common/Definitions/pixelados.yml
+++ /dev/null
@@ -1,199 +0,0 @@
----
-id: pixelados
-name: Pixelados (API)
-description: "Pixelados is a Spanish Private Torrent Tracker for HD MOVIES / TV"
-language: es-ES
-type: private
-encoding: UTF-8
-links:
- - https://pixelados.tv/
-
-caps:
- categorymappings:
- - {id: 1, cat: Movies, desc: "Películas"}
- - {id: 2, cat: TV, desc: "Series"}
- - {id: 3, cat: Audio, desc: "Música"}
- - {id: 4, cat: TV/Documentary, desc: "Documentales"}
- - {id: 5, cat: TV/Sport, desc: "Deportes"}
- - {id: 6, cat: TV/Anime, desc: "Animación"}
-
- modes:
- search: [q]
- tv-search: [q, season, ep, imdbid, tvdbid, tmdbid]
- movie-search: [q, imdbid, tmdbid]
- music-search: [q]
-
-settings:
- - name: apikey
- type: text
- label: APIKey
- - name: info_key
- type: info
- label: About your API key
- default: "Find or Generate a new API Token by accessing your Pixelados account My Security page and clicking on the API Token tab."
- - name: freeleech
- type: checkbox
- label: Search freeleech only
- default: false
- - name: sort
- type: select
- label: Sort requested from site
- default: created_at
- options:
- created_at: created
- seeders: seeders
- size: size
- name: title
- - name: type
- type: select
- label: Order requested from site
- default: desc
- options:
- desc: desc
- asc: asc
-
-login:
- path: /api/torrents
- method: get
- inputs:
- api_token: "{{ .Config.apikey }}"
- error:
- - selector: a[href*="/login"]
- message:
- text: "The API key was not accepted by {{ .Config.sitelink }}."
-
-search:
- paths:
- # https://hdinnovations.github.io/UNIT3D-Community-Edition-Docs/api_endpoints.html
- # https://github.com/HDInnovations/UNIT3D-Community-Edition/blob/master/app/Http/Controllers/API/TorrentController.php
- - path: "/api/torrents/filter"
- response:
- type: json
-
- inputs:
- # if we have an id based search, add Season and Episode as query in name for UNIT3D < v6. Else pass S/E Params for UNIT3D >= v6
- api_token: "{{ .Config.apikey }}"
- name: "{{ .Keywords }}"
- $raw: "{{ if .Query.Season }}&seasonNumber={{ .Query.Season }}{{ else }}{{ end }}{{ if .Query.Ep }}&episodeNumber={{ .Query.Ep }}{{ else }}{{ end }}{{ if .Query.TMDBID }}&tmdbId={{ .Query.TMDBID }}{{ else }}{{ end }}{{ if .Query.IMDBIDShort }}&imdbId={{ .Query.IMDBIDShort }}{{ else }}{{ end }}{{ if .Query.TVDBID }}&tvdbId={{ .Query.TVDBID }}{{ else }}{{ end }}{{ range .Categories }}&categories[]={{.}}{{end}}{{ if .Config.freeleech }}&free[]=100{{ else }}{{ end }}"
- sortField: "{{ .Config.sort }}"
- sortDirection: "{{ .Config.type }}"
- perPage: 100
- page: 1
-
- keywordsfilters:
- - name: diacritics
- args: replace
- - name: re_replace
- args: ["\\.", " "]
- # strip season and ep when it's added by tvsearch Query
- - name: re_replace
- args: ["(?i)\\bS0*(\\d+)\\b", "{{ if eq .Query.Type \"tvsearch\" }}{{ else }}T$1{{ end }}"]
- - name: re_replace
- args: ["(?i)S0?(\\d{1,2})E(\\d{1,2})", "{{ if eq .Query.Type \"tvsearch\" }}{{ else }}$1x$2{{ end }}"]
-
- rows:
- selector: data
- attribute: attributes
- count:
- selector: meta.total
-
- fields:
- category:
- selector: category_id
- _mejorada:
- selector: types:contains(Mejorada)
- optional: true
- _corregida:
- selector: types:contains(Corregida)
- optional: true
- _audio_editado:
- selector: types:contains(Audio-Editado)
- optional: true
- title_vose:
- selector: name:contains(VOSE)
- optional: true
- title_notvose:
- selector: name:not(:contains(VOSE))
- optional: true
- filters:
- - name: append
- args: " SPANISH"
- title:
- text: "{{ if .Result.title_vose }}{{ .Result.title_vose }}{{ else }}{{ .Result.title_notvose }}{{ end }}{{ if or .Result._mejorada .Result._corregida .Result._audio_editado }} PROPER{{ else }}{{ end }}"
- filters:
- # Replace Spanish season names like T1, MS (MiniSerie), TU (Temporada Unica) for normalized format S1
- - name: re_replace
- args: ["(?i)T(\\d{1,2})\\b", "S$1"]
- - name: re_replace
- args: ["(\\d{2})[×|x](\\d{2})", "S$1E$2"]
- - name: re_replace
- args: ["(\\d{1})[×|x](\\d{2})", "S0$1E$2"]
- - name: re_replace
- args: ["(?i)MS\\b", "S1"]
- - name: re_replace
- args: ["(?i)TU\\b", "S1"]
- details:
- selector: details_link
- download:
- selector: download_link
- infohash:
- selector: info_hash
- poster:
- selector: meta.poster
- filters:
- - name: replace
- args: ["https://via.placeholder.com/90x135", ""]
- imdbid:
- selector: imdb_id
- tmdbid:
- selector: tmdb_id
- tvdbid:
- selector: tvdb_id
- genre:
- selector: meta.genres
- filters:
- - name: replace
- args: [" & ", "_&_"]
- description:
- text: "{{ .Result.genre }}"
- files:
- selector: num_file
- seeders:
- selector: seeders
- leechers:
- selector: leechers
- grabs:
- selector: times_completed
- date:
- # "created_at": "2021-10-18T00:34:50.000000Z" is returned by Newtonsoft.Json.Linq as 18/10/2021 00:34:50
- selector: created_at
- filters:
- - name: append
- args: " +00:00" # GMT
- - name: dateparse
- args: "01/02/2006 15:04:05 -07:00"
- size:
- selector: size
- downloadvolumefactor:
- # api returns 0%, 25%, 50%, 75%, 100%
- selector: freeleech
- case:
- 0%: 1 # not free
- 25%: 0.75
- 50%: 0.5
- 75%: 0.25
- 100%: 0 # freeleech
- "*": 0 # catch errors
- uploadvolumefactor:
- # api returns 0=false, 1=true
- selector: double_upload
- case:
- 0: 1 # normal
- 1: 2 # double
-# global MR is 0.4 but torrents must be seeded for 7 days regardless of ratio
-# minimumratio:
-# text: 0.4
- minimumseedtime:
- # 7 day (as seconds = 7 x 24 x 60 x 60)
- text: 604800
-# json UNIT3D 6.5.0 (custom)
diff --git a/src/Jackett.Updater/Program.cs b/src/Jackett.Updater/Program.cs
index fe3fe55fd..8d9e11c85 100644
--- a/src/Jackett.Updater/Program.cs
+++ b/src/Jackett.Updater/Program.cs
@@ -473,6 +473,8 @@ namespace Jackett.Updater
"Definitions/peerjunkies.yml",
"Definitions/piratadigital.yml",
"Definitions/pirateiro.yml",
+ "Definitions/pixelados.yml",
+ "Definitions/pixelados-html.yml",
"Definitions/pleasuredome.yml",
"Definitions/polishtracker.yml",
"Definitions/pornbits.yml",