আমি কীভাবে টার্মিনাল থেকে একটি এম 3 ইউ প্লেলিস্ট (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 -playlist play.m3u

আমি জানি না কেন কেউ এই উত্তরটিকে হ্রাস করেছে। এটিই একমাত্র সমাধান যা বাক্সের বাইরে কাজ করে বলে মনে হচ্ছে এবং এটি গ্রহণ করা উচিত বা কমপক্ষে প্রচার করা উচিত। আপনাকে অনেক ধন্যবাদ!
Geppettvs D'Constanzo

যদি আমি এই কমান্ডে একাধিক ফাইল ফর্ম্যাট যুক্ত করতে চাই?
সুমিত দেশমুখ

4

আপনি মূলত প্রতিটি এন্ট্রি একটি ওয়েব ইউআরএল ফর্ম্যাট লাইন হিসাবে তৈরি করতে বলেছিলেন। স্থানীয় পাথটি 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

ভাল ধারণা! পরিবর্তে প্লাস (+) চিহ্ন ব্যবহার করলে আরও বেশি পঠনযোগ্য ইউআরএল হবে
কে-

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স্টাইলে এনকোড করা আছে ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.