
Этот простой консольный плеер радиостанций был написан по мотивам плеера радиостанций из дистрибутива antix linux. Причиной его написания было отсутствие русских радиостанций и возможность редактирования плейлиста. По началу использовался интерактивный текстовой диалог, и в таком виде скрипт был первый раз опубликован на форуме Puppyrus Linux, где добрые форумчане любезно мне подсказали что такое лучше всего реализовать на dialog, и указали на явные ошибки в коде так как в написании bash скриптов я новичок , за что им большое человеческое спасибо. Они не раз мне помогали в таких вопросах, так что зело рекомендую их форум, …
Впоследствии научил плеер использовать m3u плейлисты, в создании которых есть особенность которая вытекает из особенностей использования dialog, редактируя плейлист нужно избегать пустых строк. А также по возможности избегать пробелов, вместо них используя нижнее_подчёркивание.
Код работает следующим образом, начиная с 6 строки кода скрипт считывает содержимое плейлиста, формируя переменные с названиями и линками радиостанций, далее через dialog menu выбираем интересующую на радиостанцию. Скрипт запоминает её номер и запускает соответствующий линк скармливая его консольному плееру mpv, и посему необходимо использовать уже его горячие клавиши, для прибавления громкости “0”, для убавления громкости “9”, для выхода из плеера “q”, для паузы с последующим кэшированием контента”p”или пробел(был крайне удивлен функциями mpv).
Если нажать два раза на цифру 2, то окажемся на позиции 20 меню, если два раза на цифру 3, то окажемся на позиции 30 и.т.д. что существено облегчает навигацию, сам скрипт можно скачать по ссылке https://disk.yandex.ru/d/ZEX7vHtQcb4Utg ,сам код предельно простой и читаемый, но если возникнут вопросы по нему с удовольствием отвечу, не претендую что написал супер-пупер прогу, но кому-то может помочь , или натолкнуть на новую идею, архив распаковать в домашний каталог, дать скрипту r_di_011.sh права на исполнение, и запустить его любым удобным методом, кликнув на него два раза, либо из терминала, из зависимостей требует dialog и mpv, создан и проверен на debian liunux, но будет работать везде где работает терминал linux(даже на android через termux), dialog и mpv. Спасибо за внимание:
#!/bin/bash cd ~/r_di_011 # этот переход активировать при необходимости *.desctop файла opros="y" while [ "$opros" = "y" ] do cat ./playlist/*.m3u | grep -v "#EXTM3U" | grep -v "EXTINF:-1," >./playlist/.pl_l.txt cat ./playlist/*.m3u | grep -v "http://" | grep -v "https://" | grep -v "#EXTM3U" >./playlist/.pl_n.txt a="$(cat ./playlist/.pl_n.txt)" echo "${a//#EXTINF:-1,/}" >./playlist/.interm_name.txt b="$(cat ./playlist/.interm_name.txt)" echo "${b//#EXTM3U/}" >./playlist/.interm_name1.txt z="$(cat ./playlist/.interm_name1.txt)" echo "${z// /_}" >./playlist/.interm_name2.txt c="$(cat -n ./playlist/.interm_name2.txt)" dialog --menu "Выбери имя радиостанции " 35 35 47 $(echo "$c") 2>./playlist/.nomer.txt if test $? -eq 0 then nom_radio=$(cat ./playlist/.nomer.txt) sed -n $(echo "$nom_radio")p ./playlist/.interm_name2.txt >./playlist/.n.txt sed -n $(echo "$nom_radio")p ./playlist/.pl_l.txt >./playlist/.l.txt link=$(cat ./playlist/.l.txt) name=$(cat ./playlist/.n.txt) clear echo "воспроизводится…""$name" mpv --volume=45 "$link" else cd ./playlist || exit rm .*.txt exit fi done
Автор статьи: Vlad- totiks
А на этом сегодня все. Надеюсь данная статья будет вам полезна.
Журнал Cyber-X