Сайт | Скачать | Видео | Wiki

Автор Тема: Простое радио для консоли.  (Прочитано 27289 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
Re: Простое радио для консоли.
« Ответ #165 : 14 Апрель 2021, 10:03:30 »
- пока мало понимаю по тематике энергосбережения - по этому чтоб ни кого не запутать - подробности к сообщению выше:

- при "блокировке экрана"( с паролем. ч/з гуй в иксах) - в tty звук остается ( upd : и в иксах не пропадает);
- при "автоблокировке/гашении экрана по времени бездействия без пароля"( пока не соображу как запускается ) - tty-звук тоже остается ( такой-же режим включается при закрытии крышки нетбука)
[ # именно этого мне и было нужно];
- в остальных случаях - вроде нет...
« Последнее редактирование: 14 Апрель 2021, 10:31:05 от knn »
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
Re: Простое радио для консоли.
« Ответ #166 : 21 Апрель 2021, 17:59:37 »
был головняк/проблема - при гашении экрана у меня пропадал звук( при прослушивании радио)
-------
по некоторым причинам сам подзапутался и возможно мог запутать еще кого-нибудь
--------
  по итогу суть :
нетбук + внешний монитор со встроеными колонками [VGA+jack].
Вот звук получается и пропадал в колонках внешнего монитора. Что  вполне логично.( на нетбуковские-встроеные-колонки и на муз. центр, подключенный ч/з jack - "гашение экрана" не влияет )
========
ps
потом соображу - может "свои сообщения выше" почищу ...
« Последнее редактирование: 21 Апрель 2021, 18:04:18 от knn »
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 858
  • Репутация: +23/-0
  • Автор темы
Re: Простое радио для консоли.
« Ответ #167 : 13 Август 2023, 20:44:41 »
Прошло года два с того момента как появилась эта тема , радио в консоли линукс. Использую его по сей день что на компьютере что на телефоне(через termux) . На днях слушал это радио настроение никакущее, начальник в тот день с утра был не в духе, в общем пришел домой включил радио, и тут просто прекраснейший трек, хорошо название успел снять, и тут я подумал а ведь же в линухе можно всё, можно ведь наваять скрипт который запишет мне трек на борт, сел и написал скрипт . Подвесил его на горячую клавишу ctr+super+s , и при его запуске в каталоге ~/Music/streams запишет трек с текущим названием стрима. Скрипт это умеет.
ПРИМЕЧАНИЕ: скрипт расчитан на работу в паре со скриптом radio_dialog и его следует запускать при работающем radio_dialog информацию о потоке радио он извлекает из файла для получения линка  radio_dialog, остановить нажатием на клавиши ctrl+c.
Вот код дополнения для записи треков из текущего стрима для radio_dialog
Код
#!/bin/bash
cd $HOME/Music/streams/
link=$(cat $HOME/r_di_011/playlist/.l.txt)
rm ./stream_metadata.txt
ffmpeg -i "$link" -f ffmetadata -loglevel error -hide_banner stream_metadata.txt
sed -i 's/StreamTitle=//g' ./stream_metadata.txt
sed -i '/;FFMETADATA1/d' stream_metadata.txt
sed -i '/icy/d' stream_metadata.txt
sed -i '/encoder/d' stream_metadata.txt
name=$(cat stream_metadata.txt)
wget -O "$name".mp3 "$link"

что пока напрягает ffmpeg слегка задумчивый, перед записью трека ждет секунд 5-7, многовато но терпимо, если кто знает другой способ может подскажете? Второе что напрягает, если на входе трек со сломаной кодировкой, то в имя mp3 файла это сломаное имя и придёт, тоже с этим не знаю что делать, но пусть со  сломаным именем но трек будет записан.
Вот ссылка на radio_dialog с текущим плэйлистом https://disk.yandex.ru/d/PHAo77SkIR9UZw  плэйлист сильно уменшился, но вы можете подкинуть свой, напомню он умеет читать плейлисты в формате m3u
« Последнее редактирование: 13 Август 2023, 21:31:33 от totiks2012 »

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
Re: Простое радио для консоли.
« Ответ #168 : 14 Август 2023, 06:55:49 »
запишет мне трек на борт
- ? как бегло понял - ~= 'запишет часть-стрима под именем текущ-трека' (начало=="от хоткея", а окончание по 'Ctrl+c') ?
---------------
зы
я при нужде "имя трека + автора" в текст-файл снимаю, а потом ищу где качнуть.
-----------------
Ну а тут - интересно что еще 'кусок-аудио' записывается :)
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 858
  • Репутация: +23/-0
  • Автор темы
Re: Простое радио для консоли.
« Ответ #169 : 14 Август 2023, 07:13:18 »
Ну а тут - интересно что еще 'кусок-аудио' записывается
да верно но замечу еще из недостатков скрипт не отслеживает конец композиции , и под именем
текущего трека может записать и кусок следующего трека, если не остановить, меня это устраивает, но если заморочится то можно каждые 30 секунд опрашивать изменение имени текущего трека  и если имя изменилось, перезапустить запись трека, ...но это сильно усложнит скрипт, да и нет у меня необходимости записывать все треки под ряд с радиостанции да со своими именами, сама задача конечно интересная...
« Последнее редактирование: 14 Август 2023, 07:15:21 от totiks2012 »

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
Re: Простое радио для консоли.
« Ответ #170 : 14 Август 2023, 08:00:33 »
имхо, и так прикольная идея.
---------
правда шевельнулись мысли что теоретически можно сделать "независимо":
- ~= --выделил url-стрим;
     -- хоткей;
     -- wget-запись в файл( с 'извлченным' именем) ~=30 сек длительности ( # :) + конечно "30-сек-длительность" нужно как-то реализовать...)
================
:) но это всё лирика - не представляю когда смогу добраться практически
==========
зы
- по возможности стараюсь в именахФайлов менять пробелы на подчеркивания
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
Re: Простое радио для консоли.
« Ответ #171 : 14 Август 2023, 09:53:07 »
плэйлист сильно уменшился
нашел у себя 'листы-22.03' (по-Rox-около-700). прикрепил сквош. # "нарубленные листы", +внутри есть '~=оригинал.m3u', но не 100%.
----------
со свежим пока заморачиваться не буду
===========================
:( тоже ж себе консольное-радио делал - сейчас неизвестно когда соберу осколки( в крайний раз, как помню хотел улучшить, но  что-то поизломал, и бросил. # сугубо имхо, из полезного - делал там гуевины/туевины-настроек (Xdialog/dialog) # тренировался/пробовал для себя # были несколько 'сквошей-в-сборе' , но пока потерял )
« Последнее редактирование: 14 Август 2023, 09:57:59 от knn »
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 858
  • Репутация: +23/-0
  • Автор темы
Re: Простое радио для консоли.
« Ответ #172 : 14 Август 2023, 10:40:49 »
нашел у себя 'листы-22.03' (по-Rox-около-700).
спасибо от всей души, я посмотрел их, но исходя из собственных наблюдений, что много радиостанций затрудняют выбор, из всего обилия мы выбираем 5-6 любимых и держимся их, можно было бы создать несколько списков с классификацией по жанрам, и из большого списка замучить себя выбором, потому я пришел к тому чтоб начало списка жанра отметить двумя звёздочками, написать жанр а далее название первой радиостанции в списке соответствующей жанру, то есть я вопрос решил форматированием и использованием одного смешанного по жанрам плейлиста, я за простоту использования , и за краткость интерактивного выбора, чем меньше интерфейс тем быстрее и проще выбор.
upd: В своих плейлистах избегаю пустых строк, они ломают radio_dialog
если есть такой плейлист c пустыми строками обрабатываю его таким образом
Код
#!/bin/bash

input_file="input.m3u"
output_file="output.m3u"

# Удаление пустых строк из файла
sed '/^[[:space:]]*$/d' "$input_file" > "$output_file"

echo "Пустые строки удалены и сохранены в $output_file"
« Последнее редактирование: 14 Август 2023, 10:43:39 от totiks2012 »

Оффлайн knn

  • Ветеран
  • *****
  • Сообщений: 2538
  • Репутация: +33/-0
Re: Простое радио для консоли.
« Ответ #173 : 14 Август 2023, 11:02:30 »
исходя из собственных наблюдений, что много радиостанций затрудняют выбор, из всего обилия мы выбираем 5-6 любимых и держимся их, можно было бы создать несколько списков с классификацией по жанрам
- согласен.
для себя решал (в грубом приближении, но работоспособно [# mpv - 100%]): каталог(/~и по-темам) с симлинками на 'одиночные-листы' с любимыми каналами.
# т. е. юзер-подборка любимых каналов - подбор симлинков в ф/м
=================
большие-листы ранее прогонял на действенность адресов (mpv/mplayer - отдельно скриптами) , пока не до того
=============
по "пустым строкам":
-- пользую "одиночные-листы";
-- имхо,'radio_dialog' - смотрел, есть интересное и своеобразное;
-- 'mpv' - всеяден ( на край)

========
у меня в плейлистах не хватает для полного счастья "первой строки", но мне не критично
=======
зы
в прикреплении есть /dev/*.html - для браузеров (но не во всех без спецпреднастроек заходит).
И слетевшие каналы есть - год прошел
« Последнее редактирование: 14 Август 2023, 11:10:30 от knn »
Gr4D, Grub2; HP Mini 210 VT - Intel Atom N470  @ 1.83GHz, Intel GMA3150, RAM=2 ГБ ;
Sams-n110: N270 - 1,6 ГГц, Intel GMA 950, RAM=2 ГБ.

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1708
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
Re: Простое радио для консоли.
« Ответ #174 : 14 Август 2023, 17:11:54 »
( # :) + конечно "30-сек-длительность" нужно как-то реализовать...)
wget запустить в фоне (&)
tmp=$trackname
while [ "$tmp" = "$trackname" ]
do
определяем имя
пишем имя в переменную tmp
done
killall wget
Компьютер имеет то преимущество перед мозгом, что им пользуются.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 858
  • Репутация: +23/-0
  • Автор темы
Re: Простое радио для консоли.
« Ответ #175 : 14 Август 2023, 17:44:30 »
wget запустить в фоне (&)
tmp=$trackname
while [ "$tmp" = "$trackname" ]
do
определяем имя
пишем имя в переменную tmp
done
killall wget
да похоже это будет работать, причем проверка в реальном времени, спасибо круть !

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 858
  • Репутация: +23/-0
  • Автор темы
Re: Простое радио для консоли.
« Ответ #176 : 14 Август 2023, 20:05:27 »
wget запустить в фоне (&)
tmp=$trackname
while [ "$tmp" = "$trackname" ]
do
определяем имя
пишем имя в переменную tmp
done
killall wget
а вот и реализация в коде признаюсь код пишу не сам, а с помощью...,ну что поделать таковы уж дела наши грешные
Код
#!/bin/bash

cd $HOME/Music/streams/
link=$(cat $HOME/r_di_011/playlist/.l.txt)

# Запускаем wget в фоновом режиме, используя текущее имя трека
function start_wget() {
    wget -O "$1".mp3 "$link" &
}

# Получаем начальное имя трека
rm ./stream_metadata.txt
ffmpeg -i "$link" -f ffmetadata -loglevel error -hide_banner stream_metadata.txt
sed -i 's/StreamTitle=//g' ./stream_metadata.txt
sed -i '/;FFMETADATA1/d' stream_metadata.txt
sed -i '/icy/d' stream_metadata.txt
sed -i '/encoder/d' stream_metadata.txt
trackname=$(cat stream_metadata.txt)

start_wget "$trackname"  # Запускаем wget с текущим именем

while true; do
    # Получаем новое имя трека
    rm ./stream_metadata.txt
    ffmpeg -i "$link" -f ffmetadata -loglevel error -hide_banner stream_metadata.txt
    sed -i 's/StreamTitle=//g' ./stream_metadata.txt
    sed -i '/;FFMETADATA1/d' stream_metadata.txt
    sed -i '/icy/d' stream_metadata.txt
    sed -i '/encoder/d' stream_metadata.txt
    new_trackname=$(cat stream_metadata.txt)

    if [ "$new_trackname" != "$trackname" ]; then
        echo "Track name changed. Stopping wget..."
         killall -9 wget # Останавливаем процессы wget
        break
    fi

    sleep 6  # Пауза перед следующей проверкой
done

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1708
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
Re: Простое радио для консоли.
« Ответ #177 : 15 Август 2023, 14:45:07 »
Этот код нужно срочно переписать)
Будет время - займусь.
Главное - работает?
Компьютер имеет то преимущество перед мозгом, что им пользуются.

Оффлайн totiks2012

  • Ветеран
  • *****
  • Сообщений: 858
  • Репутация: +23/-0
  • Автор темы
Re: Простое радио для консоли.
« Ответ #178 : 15 Август 2023, 15:37:51 »
Этот код нужно срочно переписать)
Будет время - займусь.
Главное - работает?
Работать работает, пишет отслеживает и останавливается. Но если есть возможность переделать, я буду только рад, вы не представляете как я вчера после полудня и весь вечер  собачился с этим gpt, там иногда до смешных казусов доходит, я пытаюсь схилять и перенести всю ответственность написания кода на ИИ, ИИ как только ловит момент тут же пытается слиться, либо косит что он тупит, либо упрямится, приходится придумывать алгоритм разделять скрипт на функциональные части и писать по этим частям, каждый раз проверяя, что всё работает и не разваливается, я не кодер, ...так любитель, но мне жутко интересно , и очень мне это дело нравится, и если нахожу хороший скрипт, или сам напишу, или совместно с ИИ, не важно если я нахожу что скрипт полезен, у меня сразу добрая такая чесотня начинается, надо поделится. Этот скрипт ИИ на удивление выдал почти что сразу, я увидел что работает, и решил что так хорошо, интересно что вам не понравилось, ну чтоб понять как не нужно писать...
« Последнее редактирование: 15 Август 2023, 17:50:02 от totiks2012 »

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1708
  • Репутация: +49/-1
  • /dev/hands < /dev/ass
Re: Простое радио для консоли.
« Ответ #179 : 16 Август 2023, 20:50:21 »
интересно что вам не понравилось
ИИ неправильно истрактовал мысль. Ввел бесконечный цикл while true с прерыванием по условию, заданному не в самом цикле, а в if-ке и зачем-то вынес wget в функцию. В моем примере прерывание не нужно. Во мне говорит книга "128 советов начинающему программисту". Старая книга, но доставляет
« Последнее редактирование: 16 Август 2023, 20:52:39 от imp »
Компьютер имеет то преимущество перед мозгом, что им пользуются.