====== youtube-dl | yt-dlp ====== Même si //youtube-dl// est encore disponible sur votre distribution Linux, son développement est arrêté depuis des années((La [[https://ytdl-org.github.io/youtube-dl/download.html|dernière version]] date de décembre 2021.)) ! Le logiciel //[[https://github.com/yt-dlp/yt-dlp/wiki/Installation|yt-dlp]]// est considéré par beaucoup comme «le» successeur de //youtube-dl//. Il bénéficie d'une maintenance active et on le retrouve dans les distributions Linux les plus répandues. ===== Installer yt-dlp ===== Les mises à jour incessantes des plateformes imposent une mise à jour incessante des logiciels de téléchargement. La plupart des erreurs rencontrées lors de l'utilisation de //yt-dlp// sont corrigées dans les dernières versions disponibles de ces logiciels. Dans ces conditions, il n'est pas possible de s'en remettre aux paquetages standard, obsolètes, fournis par les distributions Linux((Dans la version «stable» (ou équivalent) de ces distributions.)). Sous Debian, deux options((L'utilisation de dépôts PPA conçus pour Ubuntu et ses dérivés est déconseillée.)) d'installation s'ouvrent à nous : - via les backports de la version //stable// si elle est installée sur notre ordi((Au 20/7/2024, yt-dlp fait l'objet d'un suivi régulier sur les backports de la version «stable».)), - manuellement. La première permet à //yt-dlp// de bénéficier automatiquement des mêmes moyens de contrôle, d'alerte et de mise à jour que l'ensemble du système. Cette automaticité n'est cependant pas triviale à mettre en place car elle oblige à modifier la politique de mise à jour du système. La seconde est plus simple à mettre en œuvre mais elle est loin de présenter les mêmes garanties de sécurité que la première((Validation du code par l'équipe de maintenance de Debian, minimisation du code installé, limitation des effets de bord grâce à un packaging adapté à la version de Debian installée sur l'ordi.)). De plus, les mises à jour de //yt-dlp// doivent être faites manuellement, en sus des mises à jour du système((Cela peut-être dangereux lorsqu'une mise à jour de sécurité a été faite puisque rien ne nous le signale. C'est simplement désagréable lorsqu'il s'agit d'une mise à jour fonctionnelle : on constate que ça ne fonctionne pas => on commence par mettre à jour avant d'incriminer qui que ce soit ;-).)). ==== Installation via les backports ==== La présentation de ce type d'installation sort du cadre de cette fiche. Une autre fiche y est consacrée : [[prioriser_des_depots_backports_sous_debian|Prioriser des dépôts backports sous Debian]]. Si vous avez déjà fait de type de configuration ou si vous suivez un autre tuto, les deux indications suivantes pourraient vous aider : - Il suffit d'ajouter le composant //main// du dépôt, par exemple pour //bookworm// : deb https://deb.debian.org/debian bookworm-backports main - //yt-dlp// est l'unique paquetage à installer depuis les //backports// car toutes les dépendances sont résolues dans les dépôts standard. En conséquence, 3 lignes suffisent pour modifier les priorités :Package: yt-dlp Pin: release n=bookworm-backports Pin-Priority: 990 ==== Installation manuelle ==== La technique présentée est utilisable par une utilisatrice classique : par besoin d'être sudoeuse ou d'avoir des privilèges exceptionnel. L'installation se fait dans l'espace de l'utilisatrice. $ wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O ~/.local/bin/yt-dlp $ chmod a+rx ~/.local/bin/yt-dlp ===== Retrouver le fichier téléchargé ===== La date de dernière modification du fichier téléchargé n'est pas celle du téléchargement. En effet, //youtube-dl// conserve la date du fichier fournie par youtube. Une fois téléchargé, le fichier peut sembler introuvable, enseveli au fin fond du répertoire, faisant croire à un échec du téléchargement. Une technique fiable consiste à s'appuyer sur la trace d'exécution de youtube-dl. Par exemple, en identifiant une ligne du type : … [ffmpeg] Destination: Jane Doe - Invisible Woman (Remix)-ABCde3f.wav … qui indique le nom exact du fichier. La commande //find// permet de s'assurer de la présence du fichier find . -name "*Invisible Woman*" -print de forcer sa date de modification find . -name "*Invisible Woman*" -exec touch {} \; et de nettoyer le nom du fichier find . -name "*Invisible Woman*" -exec detox {} \; Il est préférable d'ajuster le motif de recherche à l'obtention d'un résultat unique. Ici, j'ai fait simple en n'utilisant que ce qui me semblait être discriminant, dans mon cas d'utilisation. Un copier/coller du nom complet affiché par //youtube-dl// marche aussi : find . -name "Jane Doe - Invisible Woman (Remix)-ABCde3f.wav" -print ===== Commandes courantes ===== Source : [[https://ostechnix.com/youtube-dl-tutorial-with-examples-for-beginners/#youtubedl-tutorial|Youtube-dl Tutorial With Examples]] En cas de problème, penser à vérifier les caractéristiques de la version installée sur l'ordi : "man:youtube-dl" ou "youtube-dl --help" ==== Audio seul ==== Par défaut, //youtube-dl// télécharge au format //opus//. Pour une qualité optimale, je force le format à //WAV//. Dans les cas où j'ai fait la comparaison avec //opus//, l'amélioration de qualité était flagrante((Comparaison des données numériques sous //Audacity//, en zoomant jusqu'aux valeurs discrètes.)) ! Dans les cas où j'ai fait le test, le téléchargement au format //FLAC// n'apportait qu'une infime compression. youtube-dl -x --audio-format wav https://www.youtube.com/watch?v=XYZt Le paramètre "-x" indique un téléchargement en audio seul. Il est indispensable lorsqu'on utilise le paramètre "--audio-format" pour imposer le format de téléchargement audio. ==== Formats disponibles ==== youtube-dl -F ==== Choix d'un format ==== La commande précédente permet de prendre connaissance des formats disponibles au téléchargement. Pour chaque format, il est précisé si le téléchargement correspondant ne contient que l'audio ou la vidéo. Rien n'est précisé s'il contient les deux. youtube-dl -f xx youtube-dl -f xx+yy // dans ce cas xx désigne obligatoirement le format vidéo ===== ERROR: Unable to extract uploader id ===== Lors de certains téléchargements, //youtube-dl// échoue en signalant l'erreur "ERROR: Unable to extract uploader id". Ce serait lié à des changements dans youtube qui n'ont pas encore été répercutés dans le paquetage ou la version installée sur l'ordi. ==== Le patch ==== En attendant une solution via une mise à jour du paquetage, un patch de "/usr/lib/python3/dist-packages/youtube_dl/extractor/youtube.py" permet de contourner le problème. Éditer le fichier en question et rechercher la ligne fautive que l'on commente et remplace. Le résultat voulu est le suivant : 'uploader': video_details['author'], # 'uploader_id': self._search_regex(r'/(?:channel|user)/([^/?&#]+)', owner_profile_url, 'uploader id') if owner_profile_url else None, 'uploader_id': self._search_regex(r'/(?:channel|user)/([^/?&#]+)', owner_profile_url, 'uploader id', default=None), 'uploader_url': owner_profile_url, Source : [[https://youtu.be/tMtszkwxo48]]