---
id: yggcookie
name: YGG cookie
description: "YggTorrent (YGG) is a FRENCH Private Torrent Tracker for MOVIES / TV / GENERAL. This indexer uses cookie login."
language: fr-FR
type: private
encoding: UTF-8
followredirect: true
requestDelay: 2
links:
  - https://www.ygg.re/
legacylinks:
  - 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/
  - https://www3.yggtorrent.cool/

caps:
  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_cookie
  - name: useragent
    type: text
    label: User-Agent
  - name: info_useragent
    type: info_useragent
  - name: category
    type: select
    label: Category
    default: all
    options:
      all: "Tous"
      2145: "Film/Vidéo"
      2139: "Audio"
      2144: "Application"
      2142: "Jeu vidéo"
      2140: "eBook"
      2300: "Nulled"
      2200: "Imprimante 3D"
      2141: "Emulation"
      2143: "GPS"
      2188: "XXX"
  - name: subcategory
    type: select
    label: Sub-category
    default: all
    options:
      all: "Tous"
      2178: "Film/Vidéo : Animation"
      2179: "Film/Vidéo : Animation Série"
      2180: "Film/Vidéo : Concert"
      2181: "Film/Vidéo : Documentaire"
      2182: "Film/Vidéo : Emission TV"
      2183: "Film/Vidéo : Film"
      2184: "Film/Vidéo : Série TV"
      2185: "Film/Vidéo : Spectacle"
      2186: "Film/Vidéo : Sport"
      2187: "Film/Vidéo : Vidéo-clips"
      2147: "Audio : Karaoké"
      2148: "Audio : Musique"
      2150: "Audio : Podcast Radio"
      2149: "Audio : Samples"
      2177: "Application : Autre"
      2176: "Application : Formation"
      2171: "Application : Linux"
      2172: "Application : MacOS"
      2174: "Application : Smartphone"
      2175: "Application : Tablette"
      2173: "Application : Windows"
      2167: "Jeu vidéo : Autre"
      2159: "Jeu vidéo : Linux"
      2160: "Jeu vidéo : MacOS"
      2162: "Jeu vidéo : Microsoft"
      2163: "Jeu vidéo : Nintendo"
      2165: "Jeu vidéo : Smartphone"
      2164: "Jeu vidéo : Sony"
      2166: "Jeu vidéo : Tablette"
      2161: "Jeu vidéo : Windows"
      2151: "eBook : Audio"
      2152: "eBook : Bds"
      2153: "eBook : Comics"
      2154: "eBook : Livres"
      2155: "eBook : Mangas"
      2156: "eBook : Presse"
      2301: "Nulled : Wordpress"
      2302: "Nulled : Scripts PHP & CMS"
      2303: "Nulled : Mobile"
      2304: "Nulled : Divers"
      2201: "Imprimante 3D : Objets"
      2202: "Imprimante 3D : Personnages"
      2157: "Emulation : Emulateurs"
      2158: "Emulation : Roms"
      2168: "GPS : Applications"
      2169: "GPS : Cartes"
      2170: "GPS : Divers"
      2401: "XXX : Ebooks"
      2189: "XXX : Films"
      2190: "XXX : Hentai"
      2191: "XXX : Images"
      2402: "XXX : Jeux"
  - name: info_category
    type: info
    label: Category and Sub-category
    default: Only select a <i>Category</i> <b>OR</b> a <i>Sub-category</i>, leaving the other as <i>Tous</i>.
  - 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: info_flaresolverr
    type: info_flaresolverr

login:
  method: cookie
  inputs:
    cookie: "{{ .Config.cookie }}"
  test:
    path: /
    selector: a[href$="/user/logout"]

search:
  paths:
    - path: engine/search
      inputs:
        name: "{{ .Keywords }}"
      followredirect: true
    - path: engine/search
      inputs:
        $raw: "name={{ if .Keywords }}{{ re_replace .Keywords \"(?i)S0?(\\d{1,2})\" \"Saison $1\" }}{{ else }}&page=50{{ end }}"
      followredirect: true
  inputs:
    $raw: "{{ if eq .Config.subcategory \"all\" }}category={{ .Config.category }}{{ else }}sub_category={{ .Config.subcategory }}{{ end }}"
    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
