-
Star
(126)
You must be signed in to star a gist -
Fork
(10)
You must be signed in to fork a gist
-
-
Save Clemv95/8bfded23ef23ec78f6678896f42a2b60 to your computer and use it in GitHub Desktop.
| --- | |
| id: yggapi | |
| name: YggAPI | |
| 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: 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"} | |
| modes: | |
| search: [q] | |
| tv-search: [q, season, ep, tmdbid] | |
| movie-search: [q, year, tmdbid] | |
| music-search: [q] | |
| book-search: [q] | |
| allowrawsearch: true | |
| settings: | |
| - name: website_domain | |
| type: text | |
| label: YGG website domain | |
| default: www.yggtorrent.top | |
| - 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 | |
| seeders: seeders | |
| downloads: downloads | |
| - 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: strip_season | |
| type: checkbox | |
| label: Strip season-only (e.g. S01) from searches, as tracker does not support partial matches | |
| default: true | |
| - name: tracker_domain | |
| type: select | |
| label: Domaine du tracker à utiliser | |
| default: tracker.p2p-world.net | |
| options: | |
| tracker.p2p-world.net: tracker.p2p-world.net | |
| connect.maxp2p.org: connect.maxp2p.org | |
| - 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." | |
| search: | |
| paths: | |
| - path: torrents | |
| response: | |
| type: json | |
| inputs: | |
| page: 1 | |
| - path: torrents | |
| response: | |
| type: json | |
| inputs: | |
| page: 2 | |
| - path: torrents | |
| response: | |
| type: json | |
| inputs: | |
| page: 3 | |
| inputs: | |
| $raw: "{{ range .Categories }}&category_id={{.}}{{end}}" | |
| q: "{{ .Keywords }}" | |
| season: "{{ .Query.Season }}" | |
| episode: "{{ .Query.Ep }}" | |
| tmdb_id: "{{ .Query.TMDBID }}" | |
| type: "{{ if eq .Query.Type \"tvsearch\" }}tv{{ else }}{{ end }}{{ if eq .Query.Type \"movie\" }}movie{{ else }}{{ end }}" | |
| per_page: 100 | |
| order_by: "{{ .Config.sort }}" | |
| # https://github.com/Prowlarr/Indexers/blob/953aa766ef67c782f5aab1b563ce180f49eb9ea5/definitions/v10/yggtorrent.yml#L277 | |
| keywordsfilters: | |
| - name: trim | |
| # fix date search and workaround for internal YGG issues | |
| - name: re_replace | |
| args: ["[\\\\\\-\\.\\/!\\s]+", " "] | |
| # strip season-only as tracker does not support partial matches | |
| - name: re_replace | |
| args: ["(?i)\\b(S\\d{1,3})\\b", "{{ if .Config.strip_season }}{{ else }}$1{{ end }}"] | |
| 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: | |
| selector: link | |
| download: | |
| text: "torrent/{{ .Result._id }}/download?passkey={{ .Config.passkey }}&tracker_domain={{ .Config.tracker_domain }}" | |
| 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 | |
| date: | |
| # unix | |
| selector: uploaded_at | |
| downloadvolumefactor: | |
| text: 1 | |
| uploadvolumefactor: | |
| text: 1 | |
| # JSON 1.0.0 |
| --- | |
| id: yggapi | |
| name: YggAPI | |
| 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: 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"} | |
| modes: | |
| search: [q] | |
| tv-search: [q, season, ep, tmdbid] | |
| movie-search: [q, year, tmdbid] | |
| music-search: [q] | |
| book-search: [q] | |
| allowrawsearch: true | |
| settings: | |
| - name: website_domain | |
| type: text | |
| label: YGG website domain | |
| default: www.yggtorrent.top | |
| - 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 | |
| seeders: seeders | |
| downloads: downloads | |
| - 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: strip_season | |
| type: checkbox | |
| label: Strip season-only (e.g. S01) from searches, as tracker does not support partial matches | |
| default: true | |
| - name: tracker_domain | |
| type: select | |
| label: Domaine du tracker à utiliser | |
| default: tracker.p2p-world.net | |
| options: | |
| tracker.p2p-world.net: tracker.p2p-world.net | |
| connect.maxp2p.org: connect.maxp2p.org | |
| - 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 }}"] | |
| - name: replace | |
| args: ["tracker.p2p-world.net", "{{ .Config.tracker_domain }}"] | |
| search: | |
| paths: | |
| - path: torrents | |
| response: | |
| type: json | |
| inputs: | |
| page: 1 | |
| - path: torrents | |
| response: | |
| type: json | |
| inputs: | |
| page: 2 | |
| - path: torrents | |
| response: | |
| type: json | |
| inputs: | |
| page: 3 | |
| inputs: | |
| $raw: "{{ range .Categories }}&category_id={{.}}{{end}}" | |
| q: "{{ .Keywords }}" | |
| season: "{{ .Query.Season }}" | |
| episode: "{{ .Query.Ep }}" | |
| tmdb_id: "{{ .Query.TMDBID }}" | |
| type: "{{ if eq .Query.Type \"tvsearch\" }}tv{{ else }}{{ end }}{{ if eq .Query.Type \"movie\" }}movie{{ else }}{{ end }}" | |
| per_page: 100 | |
| order_by: "{{ .Config.sort }}" | |
| # https://github.com/Prowlarr/Indexers/blob/953aa766ef67c782f5aab1b563ce180f49eb9ea5/definitions/v10/yggtorrent.yml#L277 | |
| keywordsfilters: | |
| - name: trim | |
| # fix date search and workaround for internal YGG issues | |
| - name: re_replace | |
| args: ["[\\\\\\-\\.\\/!\\s]+", " "] | |
| # strip season-only as tracker does not support partial matches | |
| - name: re_replace | |
| args: ["(?i)\\b(S\\d{1,3})\\b", "{{ if .Config.strip_season }}{{ else }}$1{{ end }}"] | |
| 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: | |
| selector: link | |
| download: | |
| text: "torrent?id={{ .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 |
Hello, Question con, mais y'a pas un readme avec un tuto quelque part ?
Dans les premiers commentaires du gist, ça remonte un peu ahah
Ok merci, donc :
Pour Prowlarr : $CONFIG_DIR/Definitions/Custom/ygg-api.yml
Je met ma clé
Ensuite je redémarre ma VM
Thanks
Hello, Question con, mais y'a pas un readme avec un tuto quelque part ?
Dans les premiers commentaires du gist, ça remonte un peu ahah
Ok merci, donc :
Pour Prowlarr : $CONFIG_DIR/Definitions/Custom/ygg-api.yml
Je met ma clé Ensuite je redémarre ma VM
Thanks
Yes c'est ça !
Hello, Question con, mais y'a pas un readme avec un tuto quelque part ?
Dans les premiers commentaires du gist, ça remonte un peu ahah
Ok merci, donc :
Pour Prowlarr : $CONFIG_DIR/Definitions/Custom/ygg-api.yml
Je met ma clé Ensuite je redémarre ma VM
ThanksYes c'est ça !
Je n'ai pas le dossier custom sur ma VM. Pas grave, je le crée, ce sera détecté ?
Hello, Question con, mais y'a pas un readme avec un tuto quelque part ?
Dans les premiers commentaires du gist, ça remonte un peu ahah
Ok merci, donc :
Pour Prowlarr : $CONFIG_DIR/Definitions/Custom/ygg-api.yml
Je met ma clé Ensuite je redémarre ma VM
ThanksYes c'est ça !
Je n'ai pas le dossier custom sur ma VM. Pas grave, je le crée, ce sera détecté ?
Il faut que tu fasses un volume pour mettre ton fichier .yml dans le dossier custom
Hello, Question con, mais y'a pas un readme avec un tuto quelque part ?
Dans les premiers commentaires du gist, ça remonte un peu ahah
Ok merci, donc :
Pour Prowlarr : $CONFIG_DIR/Definitions/Custom/ygg-api.yml
Je met ma clé Ensuite je redémarre ma VM
ThanksYes c'est ça !
Je n'ai pas le dossier custom sur ma VM. Pas grave, je le crée, ce sera détecté ?
Il faut que tu fasses un volume pour mettre ton fichier .yml dans le dossier custom
Tout fonctionne, Merci !
J'ai finalement réussis de mon coté avec mon NAS Synology, voici la procédure et le script qui télécharge les .yml automatiquement avec IDs différents si besoin, et redémarre prowlarr ou télécharge les fichiers seulement s'ils ont changés.
Installation automatique sur Synology NAS
Contexte : Prowlarr en Docker, utilisateur dockerlimited (exemple : UID 1000, GID 65000)
1. Préparation (si nécessaire- via SSH ou autre)
sudo rm -rf /volume1/docker/prowlarr/Definitions/Custom*
sudo mkdir -p /volume1/docker/prowlarr/Definitions/Custom
sudo chown 1027:65536 /volume1/docker/prowlarr/Definitions/Custom
sudo chmod 755 /volume1/docker/prowlarr/Definitions/Custom2. Tâche planifiée DSM
Panneau de configuration → Planificateur → Créer → Script défini par l'utilisateur
- Utilisateur :
root - Planification : Quotidien
Script :
#!/bin/bash
GIST_ID="8bfded23ef23ec78f6678896f42a2b60"
DEFINITIONS_DIR="/volume1/docker/prowlarr/Definitions/Custom"
PUID=1000
PGID=65000
echo "=== Vérification YGG-API ==="
lastCommit=$(curl -s "https://api.github.com/gists/$GIST_ID/commits" | jq -r '.[0].committed_at')
echo "Dernier commit: $lastCommit"
files=$(curl -s "https://api.github.com/gists/$GIST_ID" | jq -r '.files | keys[] | select(endswith(".yml"))')
NEED_RESTART=false
for file in $files; do
filepath="$DEFINITIONS_DIR/$file"
filebase="${file%.yml}"
variant=$(echo "$filebase" | sed 's/ygg-api-//' | sed 's/.*/\u&/')
if [ -f "$filepath" ]; then
lastWrite=$(date -r "$filepath" +"%Y-%m-%dT%H:%M:%SZ" -u)
if [[ "$lastCommit" > "$lastWrite" ]]; then
echo "$file - Mise à jour"
wget -qO "$filepath.tmp" "https://gist.githubusercontent.com/Clemv95/$GIST_ID/raw/$file"
sed -i "s/^id: yggapi$/id: $filebase/" "$filepath.tmp"
sed -i "s/^name: YggAPI$/name: YggAPI $variant/" "$filepath.tmp"
mv "$filepath.tmp" "$filepath"
chown "$PUID:$PGID" "$filepath"
chmod 644 "$filepath"
NEED_RESTART=true
else
echo "$file - Déjà à jour"
fi
else
echo "$file - Nouveau fichier"
wget -qO "$filepath.tmp" "https://gist.githubusercontent.com/Clemv95/$GIST_ID/raw/$file"
sed -i "s/^id: yggapi$/id: $filebase/" "$filepath.tmp"
sed -i "s/^name: YggAPI$/name: YggAPI $variant/" "$filepath.tmp"
mv "$filepath.tmp" "$filepath"
chown "$PUID:$PGID" "$filepath"
chmod 644 "$filepath"
NEED_RESTART=true
fi
done
if [ "$NEED_RESTART" = true ]; then
docker restart prowlarr
echo "Prowlarr redémarré"
fiLogs :
=== Vérification YGG-API ===
Dernier commit: 2025-11-02T16:04:40Z
ygg-api-download.yml - Nouveau fichier
ygg-api-magnet.yml - Nouveau fichier
prowlarr
Prowlarr redémarré
=== Vérification YGG-API ===
Dernier commit: 2025-11-02T16:04:40Z
ygg-api-download.yml - Déjà à jour
ygg-api-magnet.yml - Déjà à jour
Avantages :
- ✅ Détecte automatiquement tous les fichiers .yml du gist
- ✅ Renomme les IDs/noms pour éviter les doublons dans Prowlarr (
ygg-api-download/ygg-api-magnet) - ✅ Ne redémarre que si changements détectés
- ✅ Future-proof (nouveaux fichiers = auto-détectés)
PS : Je confirme certains commentaires sur les configurations de définitions actuelles, les documentaires ne fonctionne (poutant c'est bien le bon ID de catégorie).
J'ai finalement réussis de mon coté avec mon NAS Synology, voici la procédure et le script qui télécharge les .yml automatiquement avec IDs différents si besoin, et redémarre prowlarr ou télécharge les fichiers seulement s'ils ont changés.
Installation automatique sur Synology NAS
Contexte : Prowlarr en Docker, utilisateur
dockerlimited(exemple : UID 1000, GID 65000)1. Préparation (si nécessaire- via SSH ou autre)
sudo rm -rf /volume1/docker/prowlarr/Definitions/Custom* sudo mkdir -p /volume1/docker/prowlarr/Definitions/Custom sudo chown 1027:65536 /volume1/docker/prowlarr/Definitions/Custom sudo chmod 755 /volume1/docker/prowlarr/Definitions/Custom2. Tâche planifiée DSM
Panneau de configuration → Planificateur → Créer → Script défini par l'utilisateur
- Utilisateur :
root- Planification : Quotidien
Script :
#!/bin/bash GIST_ID="8bfded23ef23ec78f6678896f42a2b60" DEFINITIONS_DIR="/volume1/docker/prowlarr/Definitions/Custom" PUID=1000 PGID=65000 echo "=== Vérification YGG-API ===" lastCommit=$(curl -s "https://api.github.com/gists/$GIST_ID/commits" | jq -r '.[0].committed_at') echo "Dernier commit: $lastCommit" files=$(curl -s "https://api.github.com/gists/$GIST_ID" | jq -r '.files | keys[] | select(endswith(".yml"))') NEED_RESTART=false for file in $files; do filepath="$DEFINITIONS_DIR/$file" filebase="${file%.yml}" variant=$(echo "$filebase" | sed 's/ygg-api-//' | sed 's/.*/\u&/') if [ -f "$filepath" ]; then lastWrite=$(date -r "$filepath" +"%Y-%m-%dT%H:%M:%SZ" -u) if [[ "$lastCommit" > "$lastWrite" ]]; then echo "$file - Mise à jour" wget -qO "$filepath.tmp" "https://gist.githubusercontent.com/Clemv95/$GIST_ID/raw/$file" sed -i "s/^id: yggapi$/id: $filebase/" "$filepath.tmp" sed -i "s/^name: YggAPI$/name: YggAPI $variant/" "$filepath.tmp" mv "$filepath.tmp" "$filepath" chown "$PUID:$PGID" "$filepath" chmod 644 "$filepath" NEED_RESTART=true else echo "$file - Déjà à jour" fi else echo "$file - Nouveau fichier" wget -qO "$filepath.tmp" "https://gist.githubusercontent.com/Clemv95/$GIST_ID/raw/$file" sed -i "s/^id: yggapi$/id: $filebase/" "$filepath.tmp" sed -i "s/^name: YggAPI$/name: YggAPI $variant/" "$filepath.tmp" mv "$filepath.tmp" "$filepath" chown "$PUID:$PGID" "$filepath" chmod 644 "$filepath" NEED_RESTART=true fi done if [ "$NEED_RESTART" = true ]; then docker restart prowlarr echo "Prowlarr redémarré" fiLogs :
=== Vérification YGG-API === Dernier commit: 2025-11-02T16:04:40Z ygg-api-download.yml - Nouveau fichier ygg-api-magnet.yml - Nouveau fichier prowlarr Prowlarr redémarré=== Vérification YGG-API === Dernier commit: 2025-11-02T16:04:40Z ygg-api-download.yml - Déjà à jour ygg-api-magnet.yml - Déjà à jour**Avantages :**
- ✅ Détecte automatiquement tous les fichiers .yml du gist
- ✅ Renomme les IDs/noms pour éviter les doublons dans Prowlarr (
ygg-api-download/ygg-api-magnet)- ✅ Ne redémarre que si changements détectés
- ✅ Future-proof (nouveaux fichiers = auto-détectés)
PS : Je confirme certains commentaires sur les configurations de définitions actuelles, les documentaires ne fonctionne (poutant c'est bien le bon ID de catégorie).
Incroyable.
Une idée de comment avoir un système similaire sur Unraid ?
@Clemv95 des problèmes avec yggapi? Le problème est revenu pour moi, encore des changements à faire?
@Clemv95 des problèmes avec yggapi? Le problème est revenu pour moi, encore des changements à faire?
Aucun soucis de mon coté l'api ygg fonctionne a merveille
Je peux rechercher mais pas downloader dans sonarr quand ca vient de yggapi. Error 409
ah bizarre moi tout fonctionne nickel sur sonarr radarr et prowlarr recherche et download
tu as la derniere version ?
Tjrs. Je vais faire d'autres tests demain. Ca me fait ca avec un torrent pour le moment. Je vais tester d'autre. Je vais voir les log aussi
ah pas sur tous les torrent. Ok bin il peu y en avoir certains qui bloque ca m'arrive aussi sur les torrent avec de faible Seeders et même des torrent bloqué de base.
Salut à tous ! 👋
Je viens de créer une image Docker Prowlarr avec l'indexer YGG-API pré-installé. L'image se met automatiquement à jour quand Prowlarr sort une nouvelle version.
📦
ghcr.io/almottier/prowlarr-ygg
Un grand merci à toi @almottier pour ce repo et cette image, j'ai fais la meme chose avec jackett en forkant ton repo !
📦 ghcr.io/clemv95/jackett-ygg
🔗 https://github.com/clemv95/jackett-ygg
Je vous invite donc à utiliser ces images pour votre prowlarr / jackett, les images seront mises automatiquement à jour en cas de modif du gist, et se mettent également à jour en suivant prowlarr / jackett
ah cool merci
Salut à tous ! 👋
Je viens de créer une image Docker Prowlarr avec l'indexer YGG-API pré-installé. L'image se met automatiquement à jour quand Prowlarr sort une nouvelle version.
📦ghcr.io/almottier/prowlarr-ygg
🔗 https://github.com/almottier/prowlarr-yggUn grand merci à toi @almottier pour ce repo et cette image, j'ai fais la meme chose avec jackett en forkant ton repo ! 📦
ghcr.io/clemv95/jackett-ygg🔗 https://github.com/clemv95/jackett-yggJe vous invite donc à utiliser ces images pour votre prowlarr / jackett, les images seront mises automatiquement à jour en cas de modif du gist, et se mettent également à jour en suivant prowlarr / jackett
J'en avais fait une commenter ici en remplaçant l'indexer de base, mais là incluant le tout, ygégé et file sync, nice!
J'update!
d'ailleurs @Clemv95 j'en profites aussi pour te demander. Y aurai moyen d'inclure l'option disable VFQ comme sur ygégé ? C'est possible ou trop chaud a faire sur le YGGAPI ?

Merci a toi
d'ailleurs @Clemv95 j'en profites aussi pour te demander. Y aurai moyen d'inclure l'option disable VFQ comme sur ygégé ? C'est possible ou trop chaud a faire sur le YGGAPI ?
Merci a toi
C'est possible, après le plus simple ça serait de rajouter un filtre sur l'api directement avec @ygg-api, et je pourrais adapter l'indexeur en conséquence.
Sinon sache que tu peux exclure via les profils la VFQ directement sur sonarr / radarr, mais c'est un peu chiant à config
oui remarque c'est vrai que les profils fonctionne bien. je fais déja comme ça actuellement.
Ceci dit ça peut être une bonne idée d'ajouter un système de ban word dans les filtres de l'API à la manière de ygégé, ça pourrait avoir plusieurs usages
oui voila ce serai plus simple et ça eviterai de faire des profils pour le VFQ
Moi je préfère VFQ.. je suis québécois!!
Oui c'est quand même lunaire de vouloir intégrer un truc configurable nativement avec les profils, au détriment d'users VFQ
Et pas si compliqué en utilisant Profilarr
Oui c'est quand même lunaire de vouloir intégrer un truc configurable nativement avec les profils, au détriment d'users VFQ Et pas si compliqué en utilisant Profilarr
Bin a choisir entre des profils a configurer ou juste une case a coché. Pour un gain de temps je préfère la case a coché. Et pour qui kiff la VFQ bin il suffit de pas coché la case. Pas la peine d'en faire tout un fromage non plus.
moi je préfère la VFF donc VFQ no way pour moi.
Un grand merci à toi @almottier pour ce repo et cette image, j'ai fais la meme chose avec jackett en forkant ton repo ! 📦
ghcr.io/clemv95/jackett-ygg🔗 https://github.com/clemv95/jackett-yggJe vous invite donc à utiliser ces images pour votre prowlarr / jackett, les images seront mises automatiquement à jour en cas de modif du gist, et se mettent également à jour en suivant prowlarr / jackett
Bravo @Clemv95, c'est une très bonne chose, il y a beaucoup de monde qui utilise Jackett !


Dans les premiers commentaires du gist, ça remonte un peu ahah