LINUX.ORG.RU

Парсер плейлиста

 , ,


0

1

Есть плейлист iptv с сылками вида

#EXTINF
https://tv.com/blabla0/variant.m3u8
#EXTINF
https://tv.com/blabla1/variant.m3u8
#EXTINF
https://tv.com/blabla2/variant.m3u8
#EXTINF
https://tv.com/blabla3/variant.m3u8
Лежит где то по http. Каждая ссылка содержит в себе свой плейлист, в котором можно выбрать качество потока, пример
#EXT-X-STREAM-INF:BANDWIDTH=1500000,PROGRAM-ID=1,RESOLUTION=640x360
https://tv.com/1500000/playlist.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=1500000,URI="https://tv.com/1500000/playlist.m3u8"

#EXT-X-STREAM-INF:BANDWIDTH=600000,PROGRAM-ID=1,RESOLUTION=384x216
https://tv.com/600000/playlist.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=600000,URI="https://tv.com/600000/playlist.m3u8"
Нужно прочитать каждую ссылку основного плейлиста, если в ссылке есть выбор потока, то в зависимости от
BANDWIDTH
изменить основную ссылку и привести ее к виду
https://tv.com/blabla0/BANDWIDTH/variant.m3u8

Немного не понимаю как реализовать. Такой цикл

for var1 in $(curl -s http://example.com/123 | grep https)
   do
     echo "$var1"
done
выводит строки с https в переменную var1. Но перемменная var1 в итоге хранит в себе последнюю строку. Как работать очередно с каждой строкой? Найти первую строку, сделать в ней sed, записать куда-то и дальше до последней и после все это в файл?

Ответ на: комментарий от zolden

Да, это HLS. Но суть не в этом. Не знаю как правильно написать так, что цикл работал с каждой стройкой, а не только с последней.

for var1 in $(curl -s http://example.com/123 | grep https)
  do
    for var2 in $(curl -s $https | grep -v ^#)
      do
      echo "$var2"
  done
done
В выводе вижу обработанной только последнюю ссылку из плейлиста, а как сделать чтобы var1 отдал первую ссылку в var2, после var2 обрабатывается и на вывод и т.д. с каждой ссыдкой не понимаю

achilles_85 ()