Jackett/src/Jackett.Common/Definitions/yggcookie.yml

454 lines
18 KiB
YAML

---
id: yggcookie
name: YGGcookie
description: "YGGTorrent is a FRENCH Semi-Private Torrent Tracker for 0DAY / GENERAL"
language: fr-FR
type: semi-private
encoding: UTF-8
followredirect: true
requestDelay: 2
links:
- https://www3.yggtorrent.cool/
legacylinks:
- https://ww3.yggtorrent.si/
- https://yggtorrent.si/
- http://www2.yggtorrent.si/
- https://www2.yggtorrent.si/
- https://www.yggtorrent.li/
- https://www4.yggtorrent.li/
- https://www3.yggtorrent.nz/
- https://www3.yggtorrent.re/
- https://www3.yggtorrent.la/
- https://www5.yggtorrent.la/
- https://www5.yggtorrent.fi/
- https://yggtorrent.lol/
- https://www6.yggtorrent.lol/
- https://www3.yggtorrent.do/
- https://www3.yggtorrent.wtf/
- https://www3.yggtorrent.qa/
caps:
# dont forget to update the search fields category case block
categorymappings:
- {id: 2145, cat: TV, desc: "Film/Vidéo"}
- {id: 2178, cat: Movies/Other, desc: "Film/Vidéo : Animation"} # changed to movies, see #3553
- {id: 2179, cat: TV/Anime, desc: "Film/Vidéo : Animation Série"}
- {id: 2180, cat: Audio/Video, desc: "Film/Vidéo : Concert"}
- {id: 2181, cat: TV/Documentary, desc: "Film/Vidéo : Documentaire"}
- {id: 2182, cat: TV, desc: "Film/Vidéo : Emission TV"}
- {id: 2183, cat: Movies, desc: "Film/Vidéo : Film"}
- {id: 2184, cat: TV, desc: "Film/Vidéo : Série TV"}
- {id: 2185, cat: TV, desc: "Film/Vidéo : Spectacle"}
- {id: 2186, cat: TV/Sport, desc: "Film/Vidéo : Sport"}
- {id: 2187, cat: TV/Other, desc: "Film/Vidéo : Vidéo-clips"}
- {id: 2139, cat: Audio, desc: "Audio"}
- {id: 2147, cat: Audio, desc: "Audio : Karaoké"}
- {id: 2148, cat: Audio, desc: "Audio : Musique"}
- {id: 2150, cat: Audio, desc: "Audio : Podcast Radio"}
- {id: 2149, cat: Audio/Other, desc: "Audio : Samples"}
- {id: 2144, cat: PC, desc: "Application"}
- {id: 2177, cat: PC/0day, desc: "Application : Autre"}
- {id: 2176, cat: PC, desc: "Application : Formation"}
- {id: 2171, cat: PC/ISO, desc: "Application : Linux"}
- {id: 2172, cat: PC/Mac, desc: "Application : MacOS"}
- {id: 2174, cat: PC/Mobile-Android, desc: "Application : Smartphone"}
- {id: 2175, cat: PC/Mobile-Android, desc: "Application : Tablette"}
- {id: 2173, cat: PC/0day, desc: "Application : Windows"}
- {id: 2142, cat: PC/Games, desc: "Jeu vidéo"}
- {id: 2167, cat: Console/Other, desc: "Jeu vidéo : Autre"}
- {id: 2159, cat: PC/Games, desc: "Jeu vidéo : Linux"}
- {id: 2160, cat: PC/Games, desc: "Jeu vidéo : MacOS"}
- {id: 2162, cat: Console/XBox One, desc: "Jeu vidéo : Microsoft"}
- {id: 2163, cat: Console/Wii, desc: "Jeu vidéo : Nintendo"}
- {id: 2165, cat: PC/Mobile-Android, desc: "Jeu vidéo : Smartphone"}
- {id: 2164, cat: Console/PS4, desc: "Jeu vidéo : Sony"}
- {id: 2166, cat: PC/Mobile-Android, desc: "Jeu vidéo : Tablette"}
- {id: 2161, cat: PC/Games, desc: "Jeu vidéo : Windows"}
- {id: 2140, cat: Books, desc: "eBook"}
- {id: 2151, cat: Audio/Audiobook, desc: "eBook : Audio"}
- {id: 2152, cat: Books/EBook, desc: "eBook : Bds"}
- {id: 2153, cat: Books/Comics, desc: "eBook : Comics"}
- {id: 2154, cat: Books/EBook, desc: "eBook : Livres"}
- {id: 2155, cat: Books/Comics, desc: "eBook : Mangas"}
- {id: 2156, cat: Books/Mags, desc: "eBook : Presse"}
- {id: 2300, cat: Other, desc: "Nulled"}
- {id: 2301, cat: Other, desc: "Nulled : Wordpress"}
- {id: 2302, cat: Other, desc: "Nulled : Scripts PHP & CMS"}
- {id: 2303, cat: Other, desc: "Nulled : Mobile"}
- {id: 2304, cat: Other, desc: "Nulled : Divers"}
- {id: 2200, cat: Other, desc: "Imprimante 3D"}
- {id: 2201, cat: Other, desc: "Imprimante 3D : Objets"}
- {id: 2202, cat: Other, desc: "Imprimante 3D : Personnages"}
- {id: 2141, cat: Other, desc: "Emulation"}
- {id: 2157, cat: Other, desc: "Emulation : Emulateurs"}
- {id: 2158, cat: Other, desc: "Emulation : Roms"}
- {id: 2143, cat: Other, desc: "GPS"}
- {id: 2168, cat: Other, desc: "GPS : Applications"}
- {id: 2169, cat: Other, desc: "GPS : Cartes"}
- {id: 2170, cat: Other, desc: "GPS : Divers"}
- {id: 2188, cat: XXX, desc: "XXX"}
- {id: 2401, cat: XXX/Other, desc: "XXX : Ebooks"}
- {id: 2189, cat: XXX, desc: "XXX : Films"}
- {id: 2190, cat: XXX, desc: "XXX : Hentai"}
- {id: 2191, cat: XXX/ImageSet, desc: "XXX : Images"}
- {id: 2402, cat: XXX/Other, desc: "XXX : Jeux"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q]
music-search: [q]
book-search: [q]
allowrawsearch: true
settings:
- name: cookie
type: text
label: Cookie
- name: info_cookie
type: info
label: How to get the Cookie
default: "<ol><li>Login to this tracker with your browser</li><li>Open the <b>DevTools</b> panel by pressing <b>F12</b></li><li>Select the <b>Network</b> tab</li><li>Click on the <b>Doc</b> button (Chrome Browser) or <b>HTML</b> button (FireFox)</li><li>Refresh the page by pressing <b>F5</b></li><li>Click on the first row entry</li><li>Select the <b>Headers</b> tab on the Right panel</li><li>Find <b>'cookie:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole cookie string <i>(everything after 'cookie: ')</i> and <b>Paste</b> here.</li></ol>"
- name: useragent
type: text
label: User-Agent
- name: info_useragent
type: info
label: How to get the User-Agent
default: "<ol><li>From the same place you fetched the cookie,</li><li>Find <b>'user-agent:'</b> in the <b>Request Headers</b> section</li><li><b>Select</b> and <b>Copy</b> the whole user-agent string <i>(everything after 'user-agent: ')</i> and <b>Paste</b> here.</li></ol>"
- name: multilang
type: checkbox
label: Replace MULTi by another language in release name
default: false
- name: multilanguage
type: select
label: Replace MULTi by this language
default: FRENCH
options:
FRENCH: FRENCH
MULTi.FRENCH: MULTi.FRENCH
ENGLISH: ENGLISH
MULTi.ENGLISH: MULTi.ENGLISH
VOSTFR: VOSTFR
MULTi.VOSTFR: MULTi.VOSTFR
- name: vostfr
type: checkbox
label: Replace VOSTFR and SUBFRENCH with ENGLISH
default: false
- name: filter_title
type: checkbox
label: Normalize release names by moving year after the title
default: false
- name: strip_season
type: checkbox
label: Strip season only (e.g. S01) from searches, as tracker does not support partial matches
default: true
- name: enhancedAnime
type: checkbox
label: Enhance Sonarr compatibility with anime by renaming episodes (xxx > Exxx). Can disturb movies search (e.g. Back To The Future 3 > Back To The Future E3).
default: false
- name: enhancedAnime4
type: checkbox
label: Extend the Sonarr compatibility with anime up to 4 digits. This WILL break all searches and result titles which contain years.
default: false
- name: sort
type: select
label: Sort requested from site
default: publish_date
options:
publish_date: created
seed: seeders
size: size
name: title
- name: type
type: select
label: Order requested from site
default: desc
options:
desc: desc
asc: asc
- name: categories
type: info
label: Categories
default: To avoid unnecessary additional requests, it's recommended to only use indexer-specific categories (>=100000) when configuring this indexer in Sonarr, Radarr, and Lidarr, or when manually searching in TV, Movies, and Audio categories.
- name: flaresolverr
type: info
label: FlareSolverr
default: This site may use Cloudflare DDoS Protection, therefore Jackett requires <a href="https://github.com/Jackett/Jackett#configuring-flaresolverr" target="_blank">FlareSolverr</a> to access it.
login:
method: cookie
inputs:
cookie: "{{ .Config.cookie }}"
test:
path: /
selector: div#top_panel:contains("Déconnexion")
search:
paths:
# Tous
- path: engine/search
categories: ["!", 2145, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2139, 2147, 2148, 2150, 2149, 2144, 2177, 2176, 2171, 2172, 2174, 2175, 2173, 2142, 2167, 2159, 2160, 2162, 2163, 2165, 2164, 2166, 2161, 2140, 2151, 2152, 2153, 2154, 2155, 2156, 2300, 2301, 2302, 2303, 2304, 2200, 2201, 2202, 2141, 2157, 2158, 2143, 2168, 2169, 2170, 2188, 2401, 2189, 2190, 2191, 2402]
inputs:
name: "{{ .Keywords }}"
category: all
followredirect: true
# Tous p2
- path: engine/search
categories: ["!", 2145, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2139, 2147, 2148, 2150, 2149, 2144, 2177, 2176, 2171, 2172, 2174, 2175, 2173, 2142, 2167, 2159, 2160, 2162, 2163, 2165, 2164, 2166, 2161, 2140, 2151, 2152, 2153, 2154, 2155, 2156, 2300, 2301, 2302, 2303, 2304, 2200, 2201, 2202, 2141, 2157, 2158, 2143, 2168, 2169, 2170, 2188, 2401, 2189, 2190, 2191, 2402]
inputs:
$raw: "{{ if .Keywords }}name={{ re_replace .Keywords \"(?i)S0?(\\d{1,2})\" \"Saison $1\" }}{{ else }}&page=50{{ end }}"
category: all
followredirect: true
# Film/Vidéo p1
- path: engine/search
categories: [2145, 2180, 2181, 2182, 2184, 2185, 2186, 2187]
inputs:
name: "{{ .Keywords }}"
category: 2145
followredirect: true
# Film/Vidéo (TV which use Saison) p2
- path: engine/search
categories: [2145, 2181, 2182, 2184]
inputs:
$raw: "{{ if .Keywords }}name={{ re_replace .Keywords \"(?i)S0?(\\d{1,2})\" \"Saison $1\" }}{{ else }}&page=50{{ end }}"
category: 2145
followredirect: true
# Film/Vidéo (TV which don't use Saison) p2
- path: engine/search
categories: [2180, 2185, 2186, 2187]
inputs:
name: "{{ .Keywords }}"
page: 50
category: 2145
followredirect: true
# Film/Vidéo (TV/Anime) p1
- path: engine/search
categories: [2179]
inputs:
name: "{{ .Keywords }}"
category: 2145
sub_category: 2179
followredirect: true
# Film/Vidéo (TV/Anime) p2
- path: engine/search
categories: [2179]
inputs:
$raw: "{{ if .Keywords }}name={{ re_replace .Keywords \"(?i)S0?(\\d{1,2})\" \"Saison $1\" }}{{ else }}&page=50{{ end }}"
category: 2145
sub_category: 2179
followredirect: true
# Film/Vidéo (Movies/Other)
- path: engine/search
categories: [2178]
inputs:
name: "{{ .Keywords }}"
category: 2145
sub_category: 2178
followredirect: true
# Film/Vidéo (Movies)
- path: engine/search
categories: [2183]
inputs:
name: "{{ .Keywords }}"
category: 2145
sub_category: 2183
followredirect: true
# Audio p1
- path: engine/search
categories: [2139, 2147, 2148, 2150, 2149]
inputs:
name: "{{ .Keywords }}"
category: 2139
followredirect: true
# Audio p2
- path: engine/search
categories: [2139, 2147, 2148, 2150, 2149]
inputs:
name: "{{ .Keywords }}"
page: 50
category: 2139
followredirect: true
# Application
- path: engine/search
categories: [2144, 2177, 2176, 2171, 2172, 2174, 2175, 2173]
inputs:
name: "{{ .Keywords }}"
category: 2144
followredirect: true
# Jeu vidéo
- path: engine/search
categories: [2142, 2167, 2159, 2160, 2162, 2163, 2165, 2164, 2166, 2161]
inputs:
name: "{{ .Keywords }}"
category: 2142
followredirect: true
# eBook p1
- path: engine/search
categories: [2140, 2151, 2152, 2153, 2154, 2155, 2156]
inputs:
name: "{{ .Keywords }}"
category: 2140
followredirect: true
# eBook p2
- path: engine/search
categories: [2140, 2151, 2152, 2153, 2154, 2155, 2156]
inputs:
name: "{{ .Keywords }}"
page: 50
category: 2140
followredirect: true
# Nulled
- path: engine/search
categories: [2300, 2301, 2302, 2303, 2304]
inputs:
name: "{{ .Keywords }}"
category: 2300
followredirect: true
# Imprimante 3D
- path: engine/search
categories: [2200, 2201, 2202]
inputs:
name: "{{ .Keywords }}"
category: 2200
followredirect: true
# Emulation
- path: engine/search
categories: [2141, 2157, 2158]
inputs:
name: "{{ .Keywords }}"
category: 2141
followredirect: true
# GPS
- path: engine/search
categories: [2143, 2168, 2169, 2170]
inputs:
name: "{{ .Keywords }}"
category: 2143
followredirect: true
# XXX
- path: engine/search
categories: [2188, 2401, 2189, 2190, 2191, 2402]
inputs:
name: "{{ .Keywords }}"
category: 2188
followredirect: true
inputs:
do: search
order: "{{ .Config.type }}"
sort: "{{ .Config.sort }}"
headers:
User-Agent: ["{{ .Config.useragent }}"]
keywordsfilters:
- name: re_replace # 1234 > E1234
args: ["\\b(\\d{4})\\b", "{{ if .Config.enhancedAnime4 }}E$1{{ else }}$1{{ end }}"]
- name: re_replace # 123 > E123
args: ["\\b(\\d{2,3})\\b", "{{ if .Config.enhancedAnime }}E$1{{ else }}$1{{ end }}"]
# fix date search and workaround for internal YGG issues
- name: re_replace
args: ["[\\\\\\-\\.\\/!\\s]+", " "]
# strip season as site does not support partial matches
- name: re_replace
args: ["(?i)\\b(S\\d{1,3})\\b", "{{ if .Config.strip_season }}{{ else }}$1{{ end }}"]
- name: trim
# put each word in quotations to prevent exact phrase search
- name: re_replace
args: ["([^\\s]+)", "\"$1\""]
rows:
selector: table.table > tbody > tr
fields:
_id:
selector: td:nth-child(2) > a
attribute: href
filters:
- name: regexp
args: "/(\\d+)-"
title_normal:
selector: td:nth-child(2) > a
filters:
# Saison 1 Episode 2 > S01E02
- name: re_replace
args: ["(?i)\\b(Saisons?[\\s\\.]*)(\\d{4}(?:[\\s\\.\\-aà]+\\d{4})?)([\\s\\.]*[EÉ]pisodes?[\\s\\.]*)(\\d{1,3}(?:[\\s\\.\\-aà]+\\d{1,3})?)\\b", "{{ if .Config.enhancedAnime4 }}S$2E$4{{ else }}$1$2$3$4{{ end }}"]
- name: re_replace
args: ["(?i)\\bSaisons?[\\s\\.]*(\\d{1,3}(?:[\\s\\.\\-aà]+\\d{1,3})?)[\\s\\.]*[EÉ]pisodes?[\\s\\.]*(\\d{1,3}(?:[\\s\\.\\-aà]+\\d{1,3})?)\\b", "S$1E$2"]
# Saison 1 > S01
- name: re_replace
args: ["(?i)\\b(Saisons?[\\s\\.]*)(\\d{4}(?:[\\s\\.\\-aà]+\\d{4})?)\\b", "{{ if .Config.enhancedAnime4 }}S$2{{ else }}$1$2{{ end }}"]
- name: re_replace
args: ["(?i)\\bSaisons?[\\s\\.]*(\\d{1,3}(?:[\\s\\.\\-aà]+\\d{1,3})?)\\b", "S$1"]
# Episode 1 > E01
- name: re_replace
args: ["(?i)\\b([EÉ]pisodes?[\\s\\.]*)(\\d{4}(?:[\\s\\.\\-aà]+\\d{4})?)\\b", "{{ if .Config.enhancedAnime4 }}S$2{{ else }}$1$2{{ end }}"]
- name: re_replace
args: ["(?i)\\b[EÉ]pisodes?[\\s\\.]*(\\d{1,3}(?:[\\s\\.\\-aà]+\\d{1,3})?)\\b", "S$1"]
# S1 à 2 > S1-2
- name: re_replace
args: ["(?i)\\b(S?\\d*[SE])(\\d{4})([\\s\\.\\-aà]+)(\\d{4})\\b", "{{ if .Config.enhancedAnime4 }}$1$2-$4{{ else }}$1$2$3$4{{ end }}"]
- name: re_replace
args: ["(?i)\\b(S?\\d*[SE])(\\d{1,3})[\\s\\.\\-aà]+(\\d{1,3})\\b", "$1$2-$3"]
# Replace French date dd-mm-yyyy to yyyy.mm.dd
- name: re_replace
args: ["\\b(\\d{2})[\\-_\\.](\\d{2})[\\-_\\.](\\d{4})\\b", "$3.$2.$1"]
title_filtered:
text: "{{ .Result.title_normal }}"
filters:
- name: re_replace
args: ["(?i)^(?:(.+?)((?:[\\.\\-\\s_\\[]+(?:imax|(?:dvd|bd|tv)(?:rip|scr)|bluray(?:\\-?rip)?|720\\s*p?|1080\\s*p?|vof?|vost(?:fr)?|multi|vf(?:f|q)?[1-3]?|(?:true)?french|eng?)[\\.\\-\\s_\\]]*)*)([\\(\\[]?(?:20|1[7-9])\\d{2}[\\)\\]]?)(.*)$|(.*))$", "$1 $3 $2 $4 $5"]
- name: trim
- name: re_replace
args: ["(?i)(.\\b(mkv|avi|divx|xvid|mp4)\\b)$", ""]
- name: re_replace
args: ["(\\s+)", " "]
- name: trim
title_phase1:
text: "{{ if .Config.filter_title }}{{ .Result.title_filtered }}{{ else }}{{ .Result.title_normal }}{{ end }}"
title_vostfr:
text: "{{ .Result.title_phase1 }}"
filters:
- name: re_replace
args: ["(?i)\\b(vostfr|subfrench)\\b", "ENGLISH"]
title_phase2:
text: "{{ if .Config.vostfr }}{{ .Result.title_vostfr }}{{ else }}{{ .Result.title_phase1 }}{{ end }}"
title_multilang:
text: "{{ .Result.title_phase2 }}"
filters:
- name: re_replace
args: ["(?i)\\b(MULTI(?!.*(?:FRENCH|ENGLISH|VOSTFR)))\\b", "{{ .Config.multilanguage }}"]
title:
text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_phase2 }}{{ end }}"
filters:
- name: re_replace
args: ["\\b(\\d{4})\\b", "{{ if .Config.enhancedAnime4 }}E$1{{ else }}$1{{ end }}"]
- name: re_replace
args: ["\\b(\\d{2,3})\\b", "{{ if .Config.enhancedAnime }}E$1{{ else }}$1{{ end }}"]
details:
selector: td:nth-child(2) > a
attribute: href
category:
selector: td:nth-child(1) > div.hidden
download:
text: "/engine/download_torrent?id={{ .Result._id }}"
date:
# unix
selector: td:nth-child(5) > div.hidden
size:
selector: td:nth-child(6)
filters:
- name: replace
args: ["o", "B"]
grabs:
selector: td:nth-child(7)
seeders:
selector: td:nth-child(8)
leechers:
selector: td:nth-child(9)
downloadvolumefactor:
text: 1
uploadvolumefactor:
text: 1
# engine n/a