Làm cách nào tôi có thể tạo danh sách phát M3U (định dạng URL http) từ thiết bị đầu cuối?


11

Tôi muốn tạo danh sách phát M3U cho một thư mục chứa các tệp mp3 trên máy chủ của tôi từ thiết bị đầu cuối. Vì tôi muốn đảm bảo rằng mọi người chơi sẽ có thể truyền phát các tệp mà tôi muốn tiền tố mỗi mục nhập tệp với URL tuyệt đối vào thư mục đó, như sau:

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

Thật không may, chỉ đơn giản là làm ls -1 *.mp3 > play.m3ukhông đủ. Có một lót để đạt được điều này?

Câu trả lời:


8

Tôi nghĩ rằng một trong những lót sau đây nên hoạt động:

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


7

Đây là câu trả lời @ syncitis với một số cải tiến:

  • lưu trữ tên tệp trên biến danh sách phát $ để sử dụng sau
  • sẽ xóa tập tin nếu tồn tại trước đó
  • ghi đường dẫn đầy đủ của tệp vào danh sách phát

Lệnh

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

Để chơi nó với mplayer trên dòng lệnh cũng

mplayer -playlist play.m3u

Tôi không biết tại sao ai đó đánh giá thấp câu trả lời này. Đây là giải pháp duy nhất có vẻ hoạt động ngay lập tức và nên được chấp nhận hoặc ít nhất là được quảng bá. Cảm ơn rât nhiều!
Geppettvs D'Constanzo 7/215

Nếu tôi muốn thêm nhiều định dạng tệp vào lệnh này thì sao?
Sumeet Deshmukh

4

Ban đầu, bạn yêu cầu tạo từng mục dưới dạng một dòng web định dạng URL. Ngoài việc thay thế đường dẫn cục bộ bằng http: // ..., bạn cũng cần thay thế khoảng trắng bằng '% 20'. Vì vậy, dài dòng, nhưng ở đây bạn đi:

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

ý tưởng tốt! thay vào đó, sử dụng dấu cộng (+) sẽ dẫn đến một URL dễ đọc hơn
3k-

2

Kịch bản bash này có thể thực hiện công việc:

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

Một phiên bản phát triển hơn một chút. URL được mã hóa .m3utheo phong cách phù hợp .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.