1. Как выглядит shell-скрипт для воспроизведения *.m3u файлов с помощью mpv?
Примерно так:
Код: Выделить всё
#!/bin/sh
# Новый круглосуточный информационно-публицистический телеканал "Запад-24"
# Новости Калининграда и Северо-Западного федерального округа каждый час.
# Самые значимые события, факты, интервью с интересными людьми,
# научно-популярные и познавательные программы, социально-значимые проекты и
# увлекательные истории.
# https://streaming.televizor-24-tochka.ru/live/8.m3u8
mrl=https://vgtrkregion-reg.cdnvideo.ru/vgtrk/kaliningrad/russia1-hd/index.m3u8
exec /usr/bin/mpv --geometry=50%:50% --hwdec=auto-safe --no-border --autofit=1280x720 $mrl &
Выглядит так:
Код: Выделить всё
#!/bin/bash
DESC="Россия 1 передача из Калининграда"
RES="720x600"
URL="https://vgtrkregion-reg.cdnvideo.ru/vgtrk/kaliningrad/russia1-hd/index.m3u8"
SCREENSHOT="$HOME/tv_screenshots"
COMMAND="exec /usr/bin/mpv --geometry=50%:50% --hwdec=auto-safe --screenshot-directory=\""\$SCREENSHOT\"" --no-border --autofit=\""\$RES\"" \""\$URL\"" &"
# GUI программы - окно с полями для ввода данных.
var=$(yad --window-icon=gtk-yes \
--form \
--separator="," \
--title="Создание скриптов для показа каналов iptv" \
--field="Описание канала:" "$DESC" \
--field="URL канала:" "$URL" \
--field="Разрешение окна плеера:" "$RES" \
--field="Название скрипта:" \
--button="gtk-cancel:1" \
--button="gtk-ok:0" \
--width=800 \
--center)
# Присвоение полей окна для ввода - переменным:
DESC=$(echo $var | awk 'BEGIN {FS="," } { print $1 }')
URL=$(echo $var | awk 'BEGIN {FS="," } { print $2 }')
RES=$(echo $var | awk 'BEGIN {FS="," } { print $3 }')
NAME=$(echo $var | awk 'BEGIN {FS="," } { print $4 }')
# Создание скрипта
echo "#!/bin/bash" > "$NAME"
echo "" >> "$NAME"
echo "#" >> "$NAME"
echo "# $DESC" >> "$NAME"
echo "#" >> "$NAME"
echo "" >> "$NAME"
echo "URL="\""$URL\"" >> "$NAME"
echo "SCREENSHOT="\""\$HOME/screenshots\"" >> "$NAME"
echo "#RES="\""1280x720\"" >> "$NAME"
echo "RES="\""$RES\"" >> "$NAME"
echo "$COMMAND" >> "$NAME"
echo "" >> "$NAME"
echo "echo \"Немножко терпения, плеер запускается.\"" >> "$NAME"
chmod u+x "$NAME"
Должен получиться такой скрипт(zapad-24),который уже можно запустить в работу из консоли:
Код: Выделить всё
#!/bin/bash
#
# Россия 1 передача из Калининграда
#
URL="https://vgtrkregion-reg.cdnvideo.ru/vgtrk/kaliningrad/russia1-hd/index.m3u8"
SCREENSHOT="$HOME/screenshots"
#RES="1280x720"
RES="720x600"
exec /usr/bin/mpv --geometry=50%:50% --hwdec=auto-safe --screenshot-directory="$SCREENSHOT" --no-border --autofit="$RES" "$URL" &
echo "Немножко терпения, плеер запускается."
Код: Выделить всё
#!/bin/bash
SCRIPT_P="/usr/share/iptv/scripts/"
ICONS_P="/usr/share/iptv/icons/"
# GUI программы - окно с полями для ввода данных.
var=$( yad --window-icon=gtk-yes \
--form \
--separator="," \
--center \
--title="Создание файлов формата .desktop" \
--field="Команда::SFL" "$SCRIPT_P" \
--field="Иконка:":SFL \
--field="Name:" \
--field="Имя:" \
--field="Comment:" \
--field="Комменарий:" \
--button="gtk-cancel:1" \
--button="gtk-ok:0" \
--width=700 )
# При нажатии кнопки "Отменить" выход из скрипта.
if [[ $? != 0 ]]; then
exit 1
fi
# Присвоение полей бланка для ввода переменным:
command=$(echo $var | awk 'BEGIN {FS="," } { print $1 }')
icon=$(echo $var | awk 'BEGIN {FS="," } { print $2 }')
name=$(echo $var | awk 'BEGIN {FS="," } { print $3 }')
name_ru=$(echo $var | awk 'BEGIN {FS="," } { print $4 }')
comment=$(echo $var | awk 'BEGIN {FS="," } { print $5 }')
comment_ru=$(echo $var | awk 'BEGIN {FS="," } { print $6 }')
echo "[Desktop Entry]" > "$name.desktop"
echo "Version=1.1" >> "$name.desktop"
echo "Name=$name" >> "$name.desktop"
echo "Name[ru]=$name_ru" >> "$name.desktop"
echo "Exec=$command" >> "$name.desktop"
echo "Comment=$comment" >> "$name.desktop"
echo "Comment[ru]=$comment_ru" >> "$name.desktop"
echo "Icon=$icon" >> "$name.desktop"
echo "Terminal=false" >> "$name.desktop"
echo "Type=Application" >> "$name.desktop"
echo "NoDisplay=false" >> "$name.desktop"
echo "Categories=iptvchannels;" >> "$name.desktop"
Ну и последнее, можно сделать центр управления этими десктопами. Для себя я это сделал так(iptv-control-center):
Код: Выделить всё
#!/usr/bin/env bash
YAD="/usr/bin/yad"
KEY="1234568"
res1=$(mktemp --tmpdir iface1.XXXXXXXX)
res2=$(mktemp --tmpdir iface2.XXXXXXXX)
res3=$(mktemp --tmpdir iface3.XXXXXXXX)
# Информационные каналы
$YAD --plug=$KEY \
--tabnum=1 \
--icons \
--read-dir="/usr/share/iptv/channels/information" \
--sort-by-name \
--item-width=100 > $res1 &
# Познавательные каналы
$YAD --plug=$KEY \
--tabnum=2 \
--icons \
--read-dir="/usr/share/iptv/channels/education" \
--sort-by-name \
--item-width=100 > $res2 &
# Сериалы
$YAD --plug=$KEY \
--tabnum=3\
--icons \
--read-dir="/usr/share/iptv/channels/serials" \
--sort-by-name \
--item-width=100 > $res3 &
# Основное окно
$YAD --notebook \
--key=$KEY \
--tab="Инфомационные" \
--tab="Развлекательные" \
--tab="Сериалы" \
--always-print-result \
--dialog-sep \
--title="Каталог IPTV каналов" \
--image=/usr/share/iptv/icons/iptvchannels.png \
--width=730 \
--height=500 \
--center \
--borders="10" \
--window-icon=/usr/share/iptv/icons/iptvchannels.png \
--buttons-layout=center \
--image-on-top \
--text='<span font_weight="bold">Просмотр российских IPTV каналов.</span>' \
--button=gtk-ok \
# Очистка
rm -f $res1 $res2 $res3
Рабочие плейлисты можно поискать здесь.
Сознательно не предлагаю готовый пакет, только идею.