Como posso gerar uma playlist M3U no terminal?

10

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?

    
por 3k- 22.02.2013 / 12:56

3 respostas

8

Acho que o seguinte one-liner deve funcionar:

for f in *.mp3; do echo "http://..../$f" >> play.m3u; done

    
por chronitis 22.02.2013 / 13:25
5

Esta é a resposta do @chronitis com algumas melhorias:

  • armazena o nome do arquivo na variável $ playlist para uso posterior
  • excluirá o arquivo se existir anteriormente
  • escreve o caminho completo do arquivo na playlist

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
    
por bistoco 20.03.2014 / 22:29
2

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
    
por jokono 27.09.2016 / 21:05