如何从终端生成M3U播放列表?
我想从终端为我的服务器上包含mp3文件的目录生成一个M3U播放列表。 由于我想确保每个播放器都能够传输这些文件,我希望在每个文件条目前面加上该目录的绝对URL,如下所示:
...
所以不幸的是,仅仅做ls -1 *.mp3 > play.m3u
是不够的。 实现这一目标是否有单线程?
我认为以下单行应该有效:
for f in *.mp3; do echo "http://..../$f" >> play.m3u; done
这是@chronitis的答案,有一些改进:
- 将文件名存储在变量$ playlist中供以后使用
- 如果以前存在,将删除该文件
- 在播放列表中写入文件的完整路径
命令
playlist='play.m3u' ; if [ -f $playlist ]; then rm $playlist ; fi ; for f in *.mp3; do echo "$(pwd)/$f" >> "$playlist"; done
也可以在命令行上使用mplayer
mplayer -playlist play.m3u
您最初要求将每个条目创建为Web URL格式的行。 除了用http:// …替换本地路径之外,您还需要用’%20’替换空格。 所以,排长队,但在这里你去:
find /path/to/mp3s/ -name "*.mp3" | sed 's/ /%20/g' | sed 's|/path/to/mp3s/|http://www.server.com/serverpath/|g' > playlist.m3u