Парсер m3u файла

Искусство написания bash скриптов. Делимся своими наработками
Ответить
Аватара пользователя
ZEN
Администратор
Сообщения: 1332
Зарегистрирован: 27 сен 2012, 18:23
Темы: 204
Откуда: Украина, Одесса
Статус: В сети

Парсер m3u файла

Сообщение ZEN » 29 ноя 2012, 15:28

И так, столкнулся с следующей задачей.
  • Есть старый компьютер, который не тянет vlc.
  • Есть внутри локальной сети iptv, которое работает с mplayer, если ему явно указать ip адрес сервера.
  • Есть файл iptv-full.m3u, в который вписаны 184 канала.
  • И есть смекалка, как разделить этот файл на 184 bash скрипта с вызовом mplayer и передачи ему ip в качестве параметра
Прошу всех к терминалу!

Код: Выделить всё

#!/bin/bash
set +H
READY=1
FILE_NAME=
EXT="sh"
HEADER="#!/bin/bash"
EXTINF=
SERVER=
EOFILE="exit 0"
BIN="mplayer -fs"
cat iptv-full.m3u | while read line
do
    if [[ READY -eq 0 ]]
    then
        NEW_FILE="/tmp/${FILE_NAME}.$EXT"
        echo "Make file \"${NEW_FILE}\""
        echo $HEADER >> "${NEW_FILE}"
        echo $EXTINF >> "${NEW_FILE}"
        echo $SERVER >> "${NEW_FILE}"
        echo $EOFILE >> "${NEW_FILE}"
        chmod +x "${NEW_FILE}"
        READY=1
    fi

    case $line in
    "#EXTM3U") ;;
    \#EXTINF*)  EXTINF=$line 
            FILE_NAME=`echo $line \
            | awk -F, '{print $2}' \
            | sed 's/[^[:alnum:]^+ .-]//g'` ;;
    *) SERVER="$BIN $line"
       READY=0;;
    esac
done

exit 0;
Вот такой местами гадкий скрипт, позволяет распарсить файл iptv-full.m3u и сделать в /tmp на его основе баш скрипты, в именах которых значатся имена каналов.
ls -1 /tmp/*.sh | head писал(а):/tmp/100.sh
/tmp/1+1.sh
/tmp/1-й автомобильный.sh
/tmp/1-й деловой.sh
/tmp/2+2.sh
/tmp/24.sh
/tmp/24 Техно.sh
/tmp/2x2.sh
/tmp/2Т.sh
/tmp/36-й Академия.sh
По запуску которых mplayer открывай во весь экран выбранный канал

Изображение

К слову, управляя переменными в начале скрипта, можно изготовить не bash-скрипты, а обыкновенные m3u файлы.
бог создал труд и обезьяну
чтоб получился человек
а вот пингвина он не трогал
тот сразу вышел хорошо

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей