Acho que o seguinte one-liner deve funcionar:
for f in *.mp3; do echo "http://..../$f" >> play.m3u; done
Gostaria de gerar uma lista de reprodução do M3U para um diretório contendo arquivos mp3 no meu servidor a partir do terminal. Como eu gostaria de garantir que todos os jogadores pudessem transmitir esses arquivos, eu gostaria de prefixar cada entrada de arquivo com o URL absoluto para esse diretório, assim:
http://server.com/dir/file1.mp3 http://server.com/dir/file2.mp3 ...
Então, infelizmente, fazer ls -1 *.mp3 > play.m3u
não é suficiente. Existe um one-liner para conseguir isso?
Acho que o seguinte one-liner deve funcionar:
for f in *.mp3; do echo "http://..../$f" >> play.m3u; done
Esta é a resposta do @chronitis com algumas melhorias:
O comando
playlist='play.m3u' ; if [ -f $playlist ]; then rm $playlist ; fi ; for f in *.mp3; do echo "$(pwd)/$f" >> "$playlist"; done
Para jogar com o mplayer na linha de comando também
mplayer -playlist play.m3u
Você solicitou originalmente a criação de cada entrada como uma linha formatada de URL da web. Além de substituir o caminho local por http: // ..., você também precisará substituir os espaços por '% 20'. Então, longa fila, mas aqui vai:
find /path/to/mp3s/ -name "*.mp3" | sed 's/ /%20/g' | sed 's|/path/to/mp3s/|http://www.server.com/serverpath/|g' > playlist.m3u
Tags command-line music mp3 playlists