Попытка замены hypnotix более простой конструкцией

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
no avatar

Автор темы
ArturS
Сообщения: 35
Зарегистрирован: 22 дек 2021, 10:08
Предупреждения: 1
1
Благодарил (а): 2 раза
Контактная информация:

Попытка замены hypnotix более простой конструкцией

#1

09 фев 2025, 21:33

Хочу поделиться одним из простых вариантов просмотра свободных тв-каналов в формате *.m3u. Это вместо Hypnotix. Для этого в системе должны быть установлены пакеты mpv, youtube-dl и yt-dlp. Без yt-dlp mpv не показывает потоки с одноклассников. Shell-скрипты составлялись на базе yad, поэтому желательно установить и его.

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 &
Это было истязание клавиатуры, иправление ошибок и извечное - "что то хреновато, ну как то не так должно быть"... Поэтому, с целью упрощения процесса, для создания подобных скриптов, был использован shell-скрипт на yad, специально для копипастеров. Коим я и являюсь.

Выглядит так:

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

#!/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 "Немножко терпения, плеер запускается."
Идём далее... Для запуска этого скрипта из GUI, нужно создать файл *.desktop. Следующий скрипт(mk-dsktop) позволяет его создать:

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

#!/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
У меня это выглядит так:


Рабочие плейлисты можно поискать здесь.
Сознательно не предлагаю готовый пакет, только идею.

no avatar

Автор темы
ArturS
Сообщения: 35
Зарегистрирован: 22 дек 2021, 10:08
Предупреждения: 1
1
Благодарил (а): 2 раза
Контактная информация:

Попытка замены hypnotix более простой конструкцией

#2

09 фев 2025, 21:34

Какой ещё ответ?

Ответить

Вернуться в «Мультимедиа»

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

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