Skip to content

Instantly share code, notes, and snippets.

@Clemv95
Forked from LimeDrive/ygg-api.yml
Last active April 27, 2025 18:27
Show Gist options
  • Save Clemv95/8bfded23ef23ec78f6678896f42a2b60 to your computer and use it in GitHub Desktop.
Save Clemv95/8bfded23ef23ec78f6678896f42a2b60 to your computer and use it in GitHub Desktop.
Indexeur ygg-api pour jackett / prowlarr
---
id: ygg-api
name: Ygg API
description: Indexeur non officiel pour YggTorrent (YGG) MOVIES / TV
language: fr-FR
type: private
encoding: UTF-8
testlinktorrent: false
links:
- https://yggapi.eu/
caps:
categorymappings:
- {id: 2178, cat: Movies/Other, desc: "Films d’animation"}
- {id: 2183, cat: Movies, desc: "Films"}
- {id: 2145, cat: TV, desc: "Film/Vidéo"}
- {id: 2179, cat: TV/Anime, desc: "Séries d’animation / Mangas"}
- {id: 2181, cat: TV/Documentary, desc: "Film/Vidéo : Documentaire"}
- {id: 2182, cat: TV, desc: "Film/Vidéo : Emission TV"}
- {id: 2184, cat: TV, desc: "Séries"}
- {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: 2149, cat: Audio/Other, desc: "Audio : Samples"}
- {id: 2150, cat: Audio, desc: "Audio : Podcast Radio"}
- {id: 2151, cat: Audio/Audiobook, desc: "eBook : Audio"}
- {id: 2180, cat: Audio/Video, desc: "Film/Vidéo : Concert"}
- {id: 2140, cat: Books, desc: "eBook"}
- {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"}
modes:
search: [q]
tv-search: [q, season, ep]
movie-search: [q, year]
music-search: [q]
book-search: [q]
allowrawsearch: true
settings:
- name: passkey
type: password
label: Passkey
- name: info_key
type: info
label: About your passkey
default: "You will find your passkey on the <a href=\"https://www.yggtorrent.top/user/account\" target=\"_blank\">YGG</a> account page."
- name: sort
type: select
label: Sort requested from site
default: uploaded_at
options:
uploaded_at: publish_date
seed: seeders
- 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: info_downloads
type: info
label: About missing Downloads
default: "If the torrent has no seeder and no leecher then the torrent file may be missing and download may fail."
download:
before:
path: "torrent/{{ .DownloadUri.Query.id }}/magnet?passkey=PASSKEY_TO_BE_REPLACED_BY_REG_EX"
method: get
selectors:
- selector: body
usebeforeresponse: true
filters:
- name: regexp
args: \"magnet\"\s*:\s*"(?<magnet>magnet:[^"]+)"
- name: replace
args: ["PASSKEY_TO_BE_REPLACED_BY_REG_EX", "{{ .Config.passkey }}"]
search:
paths:
- path: torrents
response:
type: json
inputs:
$raw: "{{ range .Categories }}&category_id={{.}}{{end}}"
q: "{{ .Keywords }}"
page: 1
per_page: 100
order_by: "{{ .Config.sort }}"
rows:
selector: $
missingAttributeEqualsNoResults: true
fields:
category:
selector: category_id
title_normal:
selector: title
title_multilang:
text: "{{ .Result.title_normal }}"
filters:
- name: re_replace
args: ["(?i)[\\.](MULTI(?!.*(?:FRENCH|ENGLISH|VOSTFR)))[\\.]", ".{{ .Config.multilanguage }}."]
title:
text: "{{ if .Config.multilang }}{{ .Result.title_multilang }}{{ else }}{{ .Result.title_normal }}{{ end }}"
_id:
selector: id
details:
text: "torrent/{{ .Result._id }}"
year:
selector: title
filters:
- name: regexp
args: (\b(19|20)\d{2}\b)
size:
selector: size
seeders:
selector: seeders
leechers:
selector: leechers
grabs:
selector: downloads
optional: true
default: 0
download:
text: torrent?id={{ .Result._id }}
date:
# unix
selector: uploaded_at
downloadvolumefactor:
text: 1
uploadvolumefactor:
text: 1
# JSON 1.0.0
@Syzla
Copy link

Syzla commented Apr 15, 2025

Je remercie grandement le créateur de cet API !! Fonctionne à merveille, même si un peu galère quand on installe pour la première fois Prowlarr sur son serveur Ultra.cc

Je cite ce commentaire qui a tout débloqué pour ma part après 30 minutes de recherches :-)

Alors je l'avais mis que dans Distribution mais pas avec le dossier Custom de créer, mtn ça marche haha

Fonctionnel pour mes Séries et Animes, même avec la recherche avancée pour les anciens épisodes.

@maxtouf
Copy link

maxtouf commented Apr 16, 2025

Bonjour, je n'arrive pas à avoir l'url de base, je ne comprend pas :)
2025-04-17_00h26_09

@Clemv95
Copy link
Author

Clemv95 commented Apr 22, 2025

UPDATE :

En collaboration avec @ygg-api, nous avons modifié le fonctionnement afin que la passkey ne soit plus passée en requete à l'API, dans un soucis de confidentialité de celle ci

J'ai mis la version de l'indexeur modifiée en conséquence, n'hésitez pas si vous avez des retours ;)

@NormalRandomPeople
Copy link

UPDATE :

En collaboration avec @ygg-api, nous avons modifié le fonctionnement afin que la passkey ne soit plus passée en requete à l'API, dans un soucis de confidentialité de celle ci

J'ai mis la version de l'indexeur modifiée en conséquence, n'hésitez pas si vous avez des retours ;)

le goat

@LaT1n
Copy link

LaT1n commented Apr 24, 2025

Bonjour, je n'arrive pas à avoir l'url de base, je ne comprend pas :) 2025-04-17_00h26_09

J'ai le même prob

@kargrim
Copy link

kargrim commented Apr 27, 2025

Un grand merci à Ygg-api et Clemv95 pour votre super boulot.
Si ça peut en intéresser certains, j'ai facilement rajouté les Émissions TV disponibles depuis hier via ygg-api en ajoutant simplement une ligne
- {id: 2182, cat: TV, desc: "Emissions TV"}

@Clemv95
Copy link
Author

Clemv95 commented Apr 27, 2025

Un grand merci à Ygg-api et Clemv95 pour votre super boulot. Si ça peut en intéresser certains, j'ai facilement rajouté les Émissions TV disponibles depuis hier via ygg-api en ajoutant simplement une ligne - {id: 2182, cat: TV, desc: "Emissions TV"}

Je vais mettre a jour le gist, il y a d'autres catégories de disponibles

@Clemv95
Copy link
Author

Clemv95 commented Apr 27, 2025

Et voilà ;)

@Verymadlibrarian
Copy link

Bonjour ! Je join le thread pour mettre au courant d'un petit soucis, mais d'abord merci pour cette API, c'est tout juste dingue, GG pour le boulot abattu.

J'ai tout juste ajouté l'API via le .yml à Jackett et cela fonctionne très bien, sauf si je "sort by seeders"', je reçois cette erreur de la part de Jackett :

Exception (ygg-api): Error Parsing Json Response: Status=UnprocessableEntity Response={"detail":[{"type":"enum","loc":["query","order_by"],"msg":"Input should be 'uploaded_at', 'seeders' or 'downloads'","input":"seed","ctx":{"expected":"'uploaded_at', 'seeders' or 'downloads'"}}]}: Error Parsing Json Response: Status=UnprocessableEntity Response={"detail":[{"type":"enum","loc":["query","order_by"],"msg":"Input should be 'uploaded_at', 'seeders' or 'downloads'","input":"seed","ctx":{"expected":"'uploaded_at', 'seeders' or 'downloads'"}}]}

Est-ce un bug connu ou est-ce ma faute auquel cas j'en suis désolé. Bonne journée !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment