Онлайн-радио в MPlayer + вывод названия трека в conky

В последнее время “подсел” на Radio ROKS. Слушаю в онлайне при помощи MPlayer. Обратил внимание на то что в выводе mplayer присутствует название трека, который в данный момент звучит в эфире, и решил попробовать прикрутить вывод названия композиции в conky.

Строка содержащая название трека выглядит вот так:

ICY Info: StreamTitle='Creedence Clearwater Revival - Run Through The Jungle';

Дабы не придумывать собственный велосипед, погуглил на предмет готовых решений, но ничего устраивающего меня не нашел. Здесь нашел толковый скрипт, только не под mplayer, а под mpg123, и вывод трека не в conky, а через всплывающие уведомления notify-osd. Зато радио в примере такое же — “Radio ROKS” :).

Немножко модернизируем скрипт из примера до такого содержания:

#! /bin/bash

do_log() {
 while true
 do
  read -d ';'
  if [ ! -z "$REPLY" ]; then
   track_old=$track_now;

   track_now=$(echo "$REPLY"| grep "ICY Info"|sed s/ICY\ Info:\ StreamTitle=\'//g|sed s/\'$//g);
   [ "$track_old" = "$track_now" ] || (notify-send "$track_now" && echo $track_now)
   sleep 1;
  fi
 done
}

mplayer -quiet -playlist http://www.radioroks.com.ua/RadioROKS.m3u &> /dev/stdout | do_log

В таком виде скрипт пишет в поток вывода название трека, а также название выводит через всплывающее уведомление. Собственно вывод трека осуществляется в этой строке скрипта:

[ "$track_old" = "$track_now" ] || (notify-send "$track_now" && echo $track_now)

В переменной track_now содержится название, с которым можем делать все что вздумается. Например, выводить название в лог-файл для журналирования всего что было прослушано (журнал будет сохраняться в подкаталоге log в файлах с названием RadioROKS-YYMMDD.log, где YY – год, MM- месяц, DD – день):

[ "$track_old" = "$track_now" ] || (dat=`date +%Y%m%d` && echo $track_now >> ./log/RadioROKS-$dat.log)

Или выводить название трека в файл /tmp/streamtitle

[ "$track_old" = "$track_now" ] || (echo $track_now > /tmp/streamtitle)

А затем название из файла /tmp/streamtitle выводить в conky при помощи:

${execp cat /tmp/streamtitle}

Чтобы conky не выводил постоянно название (когда радио выключено) в конце скрипта добавим удаление файла:

rm /tmp/streamtitle

Окончательный вариант скрипта такой:

#! /bin/bash

do_log() {
 while true
 do
  read -d ';'
  if [ ! -z "$REPLY" ]; then
   track_old=$track_now;

   track_now=$(echo "$REPLY"| grep "ICY Info"|sed s/ICY\ Info:\ StreamTitle=\'//g|sed s/\'$//g);
   [ "$track_old" = "$track_now" ] || (echo $track_now > /tmp/streamtitle)
   sleep 1;
  fi
 done
}

mplayer -quiet -playlist http://www.radioroks.com.ua/RadioROKS.m3u &> /dev/stdout | do_log

rm /tmp/streamtitle

Скрипт запускает mplayer для прослушивания онлайн-радио и пишет название текущей композиции в файл /tmp/streamtitle. conky читает название из файла и выводит на экран.


Комментарии

Оставить комментарий

Ответ на Онлайн-радио в MPlayer + вывод названия трека в conky