# Diffuser de la musique vraiment facilement 2023-06-18T14:42:39Z Je suis depuis pu l'heureux possesseur d'écouteurs à conduction osseuse. Cela me faisait envie depuis un moment déjà, et après avoir testé, j'apprécie énormément écouter des podcasts en courant sans m'isoler des bruits alentours. J'ai alors souhaité accéder à ma musique de partout à partir du moment où j'ai un accès à internet. Me voilà alors en train de bricoler mpd (https://www.musicpd.org/) avec son serveur http intégré. Ça fonctionne, mais pour bien faire il faudrait un mot de passe. Le client est séparé du lecteur. Je bricole alors un VPN, mais c'est des couches sur des couches, ça m'agace, c'est compliqué pour finalement peu de choses. Je vous passe les tests de trucs à base de docker ou node.js. Franchement les gens, il faut arrêter avec ça! Je découvre alors un script PHP qui génère des playlists (https://github.com/lrkrol/Noctifer-Music). Pas mal du tout, mais ça ne fonctionne pas exactement comme je veux. Vous le sentez venir non? Voici le script de la mort qui tue qui va répondre à mon problème : m3ugen.sh L'idée est la suivante : - Hébergement de mes musiques sur mon serveur web http. - "Protection" de l'espace où les musiques sont stockées par mot de passe (htpasswd) - Génération d'un fichier m3u qui contient la liste de toutes les chansons. - Ouverture du fichier m3u avec VLC, et hop ! Voici le script en question : ``` #!/bin/sh # generate a m3u playlist of all files in directory $1 usage() { printf "%s > file.m3u\n", $0 exit 1 } #https://rosettacode.org/wiki/URL_encoding#AWK urlencode() { awk ' BEGIN { for (i = 0; i <= 255; i++) ord[sprintf("%c", i)] = i } # Encode string with application/x-www-form-urlencoded escapes. function escape(str, c, len, res) { len = length(str) res = "" for (i = 1; i <= len; i++) { c = substr(str, i, 1); if (c ~ /[-._*0-9A-Za-z]/) res = res c else if (c == " ") res = res "+" else res = res "%" sprintf("%02X", ord[c]) } return res } # Escape every line of input. { print escape($0) } ' } test -d "$1" || usage find "$1" -type f \ -name '*.flac' -o \ -name '*.FLAC' -o \ -name '*.mp3' -o \ -name '*.MP3' -o \ -name '*.m4a' -o \ -name '*.M4A' -o \ -name '*.ogg' -o \ -name '*.OGG' -o \ -name '*.opus' -o \ -name '*.OPUS' -o \ -name '*.webm' -o \ -name '*.WEBM' |\ cut -c 3- |\ urlencode ``` Reste à créer des fichiers m3u pour chaque dossier. Pour l'instant, je laisse en aléatoire, et ça me va :) Petit détail, j'ai légèrement modifié ce script pour intégrer les identifiants puisque je protège l'accès au dossier contenant les musiques par mot de passe, histoire de ne pas être accusé de diffuser du contenu illégalement. J'ai donc ajouté à la fin: ``` cut -c 3- |\ urlencode |\ xargs printf "https://user:password@si3t.ch/dossier-inexistant-de-musique/%s\n" ``` --- Une réaction? Envoyez votre commentaire par mail (anonyme): mailto:bla@bla.si3t.ch?subject=Diffuser-de-la-musique-vraiment-facilement Voici quelques instructions pour utiliser la liste de diffusion et recevoir les réponses à vos messages: https://si3t.ch/log/_commentaires_.txt gemini://si3t.ch/log/2023-06-18-Diffuser-de-la-musique-vraiment-facilement.txt

-- Leo's gemini proxy

-- Connecting to si3t.ch:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/plain

-- Response ended

-- Page fetched on Fri May 17 08:03:30 2024