मैं टर्मिनल से M3U प्लेलिस्ट (http URL प्रारूप) कैसे बना सकता हूं?


11

मैं टर्मिनल से अपने सर्वर पर एमपी 3 फ़ाइलों वाली निर्देशिका के लिए एक एम 3 यू प्लेलिस्ट उत्पन्न करना चाहूंगा। चूंकि मैं यह सुनिश्चित करना चाहता हूं कि प्रत्येक खिलाड़ी उन फ़ाइलों को स्ट्रीम करने में सक्षम हो, जो मैं प्रत्येक फ़ाइल प्रविष्टि को उस निर्देशिका में पूर्ण 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

यह कुछ सुधारों के साथ @ सिंक्रोनाइटिस उत्तर है:

  • बाद के उपयोग के लिए चर $ प्लेलिस्ट पर फ़ाइल का नाम संग्रहीत करता है
  • यदि पहले मौजूद है तो फ़ाइल को हटा देगा
  • प्लेलिस्ट पर फ़ाइल का पूरा पथ लिखता है

आदेश

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

मुझे नहीं पता कि किसी ने इस जवाब को क्यों नकार दिया। यह एकमात्र समाधान है जो बॉक्स के ठीक बाहर काम करता है और इसे कम से कम प्रचारित किया जाना चाहिए। आपका बहुत बहुत धन्यवाद!
गप्पेटेव्स डी'कोन्स्टोनो

क्या होगा अगर मैं इस कमांड में कई फ़ाइल प्रारूप जोड़ना चाहता हूँ?
सुमीत देशमुख

4

आपने मूल रूप से प्रत्येक प्रविष्टि को वेब 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

यह बैश स्क्रिप्ट काम कर सकती है:

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शैली में एन्कोडेड है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.