Ytdl-sub : les nouvelles vidéos de vos chaînes Youtube téléchargés automatiquement sur Plex/Jellyfin

Introduction
Le problème d’avoir une TV connecter est que l’on peut pas bloqué des publicité facilement. Des solutions existent comme le blocage au niveau du DNS, utilisé un PC avec Adblock au lieu de la TV, mais trop facile non ?
J’ai alors eu une idée, vu que j’utilise très souvent l’application Plex pour accéder aux fichiers contenu sur mon serveur, pourquoi ne pas avoir mes chaines Youtube favorite sur mon Plex ?
J’ai découvert le projet pour réaliser ceci ytdl-sub. Ci-dessous je vous montre comment configurer ceci avec Plex.
Installation et utilisation
Il existe 2 versions de ytdl-sub. Une version avec et sans GUI (interface graphique) et une version sans. Bon on peut pas vraiment parler de GUI, il s’agit d’un version avec un Visual Code web intégrer. Dans le cas ci-dessous nous allons utiliser la version sans interface graphique :
Voici un docker-compose pour ytdl-sub :
services: ytdl-sub: image: ghcr.io/jmbannon/ytdl-sub:latest container_name: ytdl-sub environment: - PUID=1000 - PGID=1000 - TZ=America/Los_Angeles - DOCKER_MODS=linuxserver/mods:universal-cron volumes: - ./ytdl-sub/config:/config - ./tv_shows:/tv_shows # optional - ./movies:/movies # optional - ./music_videos:/music_videos # optional - ./music:/music # optional ports: - 8443:8443 restart: unless-stopped
On va lancer notre conteneur :
docker-compose up -d
Nous avons maintenant, 5 dossiers :
- movies
- music
- music_videos
- tv_shows
- ytdl-sub/config
On va modifier notre configuration pour pouvoir télécharger automatiquement les nouvelles vidéos de Jeff Geerling par exemple.
Rendez-vous sur votre fichier ytdl-sub/config/subscriptions.yaml, effacer le contenu puis :
__preset__: overrides: # Dossier racine de toutes les émissions TV ytdl-sub tv_show_directory: "/tv_shows"
# Dossier racine de toute la musique ytdl-sub music_directory: "/music"
# Dossier racine de tous les clips vidéo ytdl-sub music_video_directory: "/music_videos"
# Pour le préréglage 'Only Recent' only_recent_date_range: "1months" only_recent_max_files: 30
# Passer tout argument directement à l'API Python de yt-dlp ytdl_options: cookiefile: "/config/cookie.txt"
Plex TV Show by Date: # Définir la balise de genre sur "TECH", utiliser le préréglage `Only Recent` pour ne stocker que les vidéos récemment téléchargées = TECH | Only Recent: "JeffGeerling": "https://www.youtube.com/@JeffGeerling"
Quelques explications :
- Le
TECH | Only Recent
permet de définir 2 choses : un tag pour Plex et de ne télécharger que les vidéos récentes. only_recent_date_range: "1months"
permet de définir ce qui est récent ici toutes les vidéos datant de mois d’un mois.only_recent_max_files: 30
permet de définir le nombre maximal de vidéos récentes.
En résumer : ici je vais télécharger toutes les vidéos du youtubeur JeffGeerling de moins d’un mois.
On va pouvoir lancer les téléchargement depuis le conteur docker avec la commande suivante (d’abord en dry-run pour voir ce que cela donne) :
docker exec -it ytdl-sub ytdl-sub --dry-run sub config/subscriptions.yaml
Vous pouvez donc voir ce qui va être téléchargés automatiquement :
[ytdl-sub] No config specified, using defaults.[ytdl-sub] Validating subscriptions...[ytdl-sub] Beginning subscription dry run for ThisIsE[ytdl-sub:downloader] Downloading metadata for Jeff Geerling[ytdl-sub:downloader] Downloading metadata for Jeff Geerling - Videos[ytdl-sub:downloader] Downloading metadata for AMD NASes give us everything we ever wanted[ytdl-sub:downloader] Downloading metadata for OpenAI's nightmare: Deepseek R1 on a Raspberry Pi[ytdl-sub:downloader] Downloading metadata for Apple's storage pricing is INSANE! Do this instead.[ytdl-sub:downloader] Downloading metadata for Radio Hacking 101: Raspberry Pi SDR with a CaribouLite[ytdl-sub:downloader] Beginning downloads for https://www.youtube.com/@JeffGeerling[ytdl-sub:downloader] Downloading entry 1/4: Radio Hacking 101: Raspberry Pi SDR with a CaribouLite[ytdl-sub:downloader] Downloading entry 2/4: Apple's storage pricing is INSANE! Do this instead.[ytdl-sub:downloader] Downloading entry 3/4: OpenAI's nightmare: Deepseek R1 on a Raspberry Pi[ytdl-sub:downloader] Downloading entry 4/4: AMD NASes give us everything we ever wanted
Si cela vous convient vous pouvez lancer le téléchargement en retirant le dry-run :
docker exec -it ytdl-sub ytdl-sub sub config/subscriptions.yaml
Voici vos nouvelles vidéos avec vos covers : [Capture d’écran des vidéos télécharger]
Si on change la variable only_recent_date_range: "1months"
on voit que les vidéos les moins récentes sont automatiquement supprimées !
En musique !
Pour de la musique voici comment fonctionne l’outil. Il y a quelques pré-réglages pour le téléchargement de disponible, j’ai fais quelques exemples de configuration :
Full Albums
Les albums sont parfois téléchargés sur YouTube comme une seule vidéo, où chaque morceau est séparé soit par des chapitres soit par des horodatages dans une description. Le préréglage Albums complets YouTube prendra chaque vidéo et la divisera par les chapitres pour former un album.
Par exemple dans cette vidéo :
YouTube Full Albums: = Lofi: "Game Chops": - "https://www.youtube.com/watch?v=m7vBrD7LMLI"
Playlist
On peut bien entendu télécharger une playlist, à chaque execution ytdl-sub va regarder si un nouvelle vidéo est ajouté :
YouTube Releases | Max Audio Quality : = Funk : "Onze Rayons" : "https://www.youtube.com/watch?v=tD6tkMN_s08&list=PLfNnucsuy_xg2XCvTrMl53s1CgudF7g0l"
Chaîne Youtube entière seulement les musiques récentes
Dans le cas présent je veux télécharger exclusivement l’audio de toutes les vidéos d’une chaîne :
YouTube Releases | Max Audio Quality : = Fonk : "Ino-KHK": "https://www.youtube.com/@Ino-KHK"
Je peux également limité le nombre de fichier télécharger :
# __preset__ is a place to define global overrides for all subscriptions__preset__: overrides: # Root folder of all ytdl-sub TV Shows tv_show_directory: "/tv_shows"
# Root folder of all ytdl-sub Music music_directory: "/music"
# Root folder of all ytdl-sub Music Videos music_video_directory: "/music_videos"
# For 'Only Recent' preset, only keep vids within this range and limit #only_recent_date_range: "1months" only_recent_max_files: 4
Dans cette configuration j’overrides le “Only Recent” pour ne télécharger que 4 vidéos, ensuite je peux rajouter le tag Only Recent
:
YouTube Releases | Max Audio Quality : = Funk | Only Recent : "Ino-KHK": "https://www.youtube.com/@Ino-KHK"
Voici ensuite le résultat dans Plex après configuration de la bibliothèque :
Configuration d’une nouvelle bibliothèque dans Plex :
Sur Plex, vous pouvez configurer ensuite une nouvelle bibliothèque Youtube :
Indiquer ensuite le dossier sur votre serveur (bien entendu si vous utilisez un conteneur docker pour plex comme moi vous devez monter le volume dans Plex):
J’ai aussi ajouté de d’exclure la bibliothèque pour éviter de polluer l’écran d’accueil :
Conclusion
Ytdl-sub est un super outils pour automatiser le téléchargement de vidéos youtube pour pouvoir les regarder sur Plex ou Jellyfin. Il ne vous reste plus qu’à mettre la commande ci-dessous dans un cron et vous asseoir sur un canapé.
docker exec -it ytdl-sub ytdl-sub sub config/subscriptions.yaml
Il ne vous reste plus qu’à regarder vos vidéos de vos youtuber favoris sur votre Plex/Jellyfin.