Liste de lecture locale avec Youtube-dl

2022-03-06

Envie d’un nettoyage de fond ou par soucis d’émancipation, par rapport à Youtube et Firefox, j’ai une copie locale des différents morceaux que j’ai marqué et que j’écoute régulièrement. Sans être la solution idéale, notamment pour ce qui est du rangement des morceaux, j’ai procédé à cette opération après plusieurs années avec des pansements sur un problème de fond. Réaliser régulièrement des audits de l’état de mes liens et utiliser un front-end par le biais du navigateur pour pouvoir n’avoir que la piste audio d’une vidéo est particulièrement plus chronophage et détourné que de simplement avoir à ouvrir le fichier audio en local avec son lecteur. Mon empreinte numérique cela fait, est maintenant de 45 Go dont 5 Go de musique.

Contexte

Au quotidien j’apprécie avoir de la musique de fond, si bien que j’ai accumulé au fil du temps pas mal de morceaux. C’est plus de 300 marques-pages sur le navigateur Firefox qui renvoyaient vers les vidéos hébergées sur Youtube (sur un total de 700 marques-pages). Côté utilisateur, non seulement la recherche s’avérait fastidieuse, mais le système s’appuyait sur une dépendance à Internet, aux fichiers hébergés sur les serveurs Youtube et, dans une moindre mesure, aux marque-pages Firefox. Plus généralement, il y a une réelle inefficacité tant énergétique que logistique à devoir passer par un navigateur pour se rendre chez un hébergeur vidéo et seulement consommer un produit audio. J’ai testé plusieurs solutions répondant à ces problèmes.

Solutions spécifiques

Plutôt que de télécharger une vidéo, il est possible de limiter la consommation de données en ne demandant que la parte audio. Un fichier vidéo est sensiblement plus lourd qu’un fichier audio et pour réduire la consommation de données, il existe des offres de front-end permettant de limiter les flux de données en ne téléchargeant que l’audio d’une vidéo que ce soit sur navigateur[1] ou par une application mobile dédiée[2, 3].

Il existe des outils permettant de vérifier l’intégrité des marques-pages . Internet est un réseau dynamique et il n’est pas rare que la localisation, et l’adresse, des éléments soient modifiées provoquant ainsi la rupture des liens. Cette question de liens morts[4] est un réel problème à différentes échelles, notamment lorsqu’en tant qu’utilisateur, je cherche à retrouver du contenu précédemment marqué. Régulièrement, je procède à une vérification à l’aide de Bookmarks Organizer[5] pour avoir une vue d’ensemble de l’état de mes pages marquées. Généralement une simple redirection, il est arrivé que du contenu ait tout bonnement été supprimé en quel cas j’entamais des recherches à partir du nom du marque-page pour essayer de le retrouver ou d’obtenir un contexte. Efficace, cette extension m’évitait à devoir vérifier manuellement chaque lien un à un.

Youtube-dl

Youtube-dl[6] est un programme multi-plateforme et léger permettant de télécharger les données à partir de nombreuses hébergeurs vidéo. Polyvalent, cet outil est doté de multiples fonctions dont la téléchargement de la piste audio uniquement et la lecture d’une « base de données » ce qui convenait parfaitement à mes objectifs. Dans l’ordre, j’ai d’abord procédé à une énième vérification des liens avec Bookmarks Organizer avant de manuellement entrer chaque marque-page dans un fichier texte. Firefox dispose d’une fonction d’export, mais j’ai préféré le faire moi-même de manière à filtrer les possible contenus dont je n’ai plus utilité, qui ne sont pas des musiques ou qui sont sous la forme d’albums. J’en suis arrivé à un fichier avec 250 liens, chacun sur une nouvelle ligne, ne reste qu’à lancer la moulinette.

youtube-dl -a list.txt -x --no-mtime --audio-quality 0 --audio-format mp3 --no-playlist --embed-thumbnail --restrict-filenames -o "%(uploader)s_%(title)s.%(ext)s"

Dans l’ordre, cette commande indique à youtube-dl d’utiliser le fichier list.txt comme « base de données », d’en extraire seulement la piste audio dans la meilleure qualité possible, au format mp3, sans la liste de lecture associée, en joignant l’image de vignette et d’enregistrer le tout sous un fichier au nom format « _.mp3 » sans caractères alambiqués. Soit un temps moyen de 2 minutes par lien, l’opération allait prendre théoriquement 500 min ou un peu moins de 5 h. En réalité, cela m’a pris une journée entière. De manière impromptue le programme n’arrivait parfois pas à télécharger le fichier et il fallait alors que je relance la machinerie après avoir pris soin de supprimer de la liste les lignes déjà traitées. Mesure de sécurité de la part de Youtube ou de configuration de mon système ? J’en suis tout de même arrivé à bout et j’ai désormais un joli dossier de musiques en vrac (manuellement renommées selon mon système par la suite) de 1 Go.

Fatigué de mon organisation me permettant de travailler en musique, j’ai décidé de faire une copie locale de l’intégralité des morceaux régulièrement écoutés. J’ai pour cela procédé à un nettoyage automatique puis manuel de différentes pages marquées sur mon navigateur et utilisé youtube-dl pour en extraire la piste audio. Ce faisant, j’ai obtenu un dossier de 1 Go contenant les morceaux voulus. Je peux maintenant profiter de ces musiques à tout instant, sans nécessiter de connexion Internet, sans mon navigateur Firefox ni des serveurs Youtube.

Edit 2022-04-16

Quelques informations complémentaires :




Il n’en reste que j’ai pu en profiter pour à la fois tester la compatibilité Youtube Music et youtube-dl et la fonction de téléchargement de liste de lecture.

youtube-dl <url de la liste de lecture> -x --no-mtime --audio-quality 0 --audio-format mp3 --restrict-filenames -o "%(uploader)s_%(title)s.%(ext)s"

Sans réinventer le fil à couper le beurre, j’ai simplement repris la commande utilisée plus haut et remplacé l’argument -a par l’adresse de la liste de lecture et enlevé l’argument --no-playlist pour des raisons évidentes. Par ailleurs j’ai enlevé l’argument --embed-thumbnail, dans mon usage c’était franchement gadget et j’économise un peu de place ce faisant.

Edit 2023-06-02

Deux changements ont été effectués sur la commande :



yt-dlp <url de la liste de lecture> -x --no-mtime --audio-quality 0 --audio-format opus --restrict-filenames -o "%(uploader)s_%(title)s.%(ext)s"

Références

[1] Invidious (GitHub)

[2] HoloPlay (GitHub)

[3] MusicPiped (GitHub)

[4] Lien mort (Wikipédia)

[5] Bookmarks Organizer (GitHub)

[6] Youtube-dl (GitHub)

[7] LibRedirect (GitHub)

[8] PrivacyRedirect (GitHub)

[9] Bug DB::PoolRetryAttemptsExceeded (GitHub)

[10] Instance Invidious FDN

[11] Opus Interactive Audio Codec, 2023


Source