Terminalden nasıl M3U çalma listesi (http URL biçimi) oluşturabilirim?


11

Terminalden sunucumda mp3 dosyaları içeren bir dizin için bir M3U çalma listesi oluşturmak istiyorum. Her oynatıcının bu dosyaları akışını sağlayabileceğinden emin olmak istediğimden, her dosya girişine bu dizine mutlak URL ile önek eklemek istiyorum:

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

Ne yazık ki basitçe yapmak ls -1 *.mp3 > play.m3uyeterli değil. Bunu başarmak için bir astar var mı?

Yanıtlar:


8

Aşağıdaki tek astarın çalışması gerektiğini düşünüyorum:

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


7

Bu bazı iyileştirmelerle @chronitis cevabıdır:

  • dosya adını daha sonra kullanmak üzere $ playlist değişkeninde saklar
  • önceden varsa dosyayı siler
  • dosyanın tam yolunu çalma listesine yazar

Komuta

playlist='play.m3u' ; if [ -f $playlist ]; then rm $playlist ; fi ; for f in *.mp3; do echo "$(pwd)/$f" >> "$playlist"; done

Komut satırında mplayer ile oynamak için

mplayer -playlist play.m3u

Birinin bu cevabı neden düşürdüğünü bilmiyorum. Kutudan çıktığı gibi görünen ve kabul edilmesi ya da en azından teşvik edilmesi gereken tek çözüm budur. Çok teşekkür ederim!
Geppettvs D'Constanzo

bu komuta birden fazla dosya biçimi eklemek istersem ne olur?
Sumeet Deshmukh

4

Başlangıçta her girişi web URL'si biçiminde bir satır olarak oluşturmanız istendi. Yerel yolu http: // ... ile değiştirmenin yanı sıra, boşlukları '% 20' ile değiştirmeniz gerekir. Yani, uzun çizgi, ama işte gidiyorsun:

find /path/to/mp3s/ -name "*.mp3" | sed 's/ /%20/g' | sed 's|/path/to/mp3s/|http://www.server.com/serverpath/|g' > playlist.m3u

İyi bir fikir! bunun yerine artı (+) işareti kullanmak daha okunabilir bir URL ile sonuçlanır
3k- 28:16

2

Bu bash betiği işi yapabilir:

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

Biraz daha gelişmiş versiyon. URL uygun .m3ustilde kodlanmıştır .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.