-- Leo's gemini proxy

-- Connecting to unbon.cafe:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini;

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 « <Compte>_<Titre de la vidéo>.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 :


Par curiosité et par opportunité avec la découverte de LibRedirect[7] (similaire à PrivacyRedirec[8] inactif depuis décembre 2021), une extension qui permet de rediriger automatiquement vers des front-ends moins intrusifs. j’ai essayé de complétement me passer des fournisseurs de contenu habituels. Les seules exceptions étant Facebook et Twitter, où je reçois des messages privés ainsi que GoogleMaps, bien utile pour planifier mes activités de cartographie pour OpenStreetMap.

Invidious, bien que très intéressant a encore quelques défauts comme l’incapacité de lancer des lives, des listes de lecture (Peut être en lien avec mes réglages de sécurité sur Firefox) et l’absence de comptes partagés entre instances ce qui aurait été particulièrement cette semaine où j’avais apparement un soucis[9] chez mon instance FDN[10] qui gère mes abonnements.

J’ai par ailleurs découvert l’existence de Youtube Music, sans vérifier, je crois qu’il existe d’autres personnes qui passent également par Youtube pour le streaming de musique et la société a donné cette alternative. C’est certes intéressant mais trop tard pour moi qui ai migré.


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 :


J'utilise désormais yt-dlp à cause d'une erreur avec youtube-dl lorsqu'un `-` est utilisé dans un titre. À noter qu'il existe des différences « par défaut » entre les deux programmes, mon usage est ici assez simple pour ne rien remarquer ;

Je migre vers le format Opus[11] qui serait à priori ce qui se fait de mieux en compression audio. Pour un même fichier, la taille obtenue est moitié moindre que pour du mp3 sans que je ne remarque de différence particulière en qualité – À noter que je n'ai pas l'oreille musicale pour un sou.


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

-- Response ended

-- Page fetched on Sun May 19 01:15:53 2024