端末からM3Uプレイリスト(http URL形式)を生成するにはどうすればよいですか?


11

ターミナルからサーバー上のmp3ファイルを含むディレクトリのM3Uプレイリストを生成したいと思います。すべてのプレーヤーがそれらのファイルをストリーミングできるようにしたいので、次のように、各ディレクトリの絶対URLを各ファイルエントリの前に付けたいと思います。

http://server.com/dir/file1.mp3
http://server.com/dir/file2.mp3
...

そのため、残念ながら単純に行うだけls -1 *.mp3 > play.m3uでは不十分です。これを達成するためのワンライナーはありますか?

回答:


8

次のワンライナーが機能するはずです:

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


7

これは@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

なぜ誰かがこの答えを否定したのか分かりません。これは、箱から出してすぐに機能すると思われる唯一のソリューションであり、受け入れられるか、少なくとも昇格される必要があります。どうもありがとうございました!
Geppettvs D'Constanzo

このコマンドに複数のファイル形式を追加する場合はどうなりますか?
スメエトデシュムフ

4

最初は、各エントリを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

良いアイデア!代わりにプラス(+)記号を使用すると、より読みやすいURLになります
-3k-

2

このbashスクリプトは次のことを実行できます。

rawurlencode() {
  local string="${1}"
  local strlen=${#string}
  local encoded=""
  local pos c o

  for (( pos=0 ; pos<strlen ; pos++ )); do
     c=${string:$pos:1}
     case "$c" in
        [-_.~a-zA-Z0-9] ) o="${c}" ;;
        * )               printf -v o '%%%02x' "'$c"
     esac
     encoded+="${o}"
  done
  echo "${encoded}"
}

rm -rf p.m3u
for f in *.mkv; do echo "#EXTINF:-1,SR:$f
  http://10.0.0.144/tvtmp/"$(rawurlencode $f) >> p.m3u; 
done
sed -i '1s/^/#EXTM3U\n/' p.m3u
rm -rf l.m3u
for f in *.mkv; do echo "#EXTINF:-1,SR:$f
  http://127.0.0.1/tvtmp/$f" >> l.m3u; 
done
sed -i '1s/^/#EXTM3U\n/' l.m3u

もう少し開発されたバージョン。URLは適切な.m3uスタイルでエンコードされます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.