В продолжение рубрики бесполезных скриптов для игроков half-life под UNIX представляю простейший скрипт спама тем, что сейчас крутится в музыкальном про^Wвыигрывателе DeaDBeeF в Half-Life =)
У deadbeef, однако, меньше параметров, которые можно получить, например: расширение файла, формат, битрейт. Зато не приходится применять жутких хаков чтобы отформатировать вывод.
Итак.
Чтобы просто вывести, что сейчас играет, достаточно такой простой команды:
Код:
deadbeef --nowplaying '%a - %t (%e/%l)'
Вывод в файл:
Код:
OF=/tmp/hlmusic.cfg;
DB_PID=`pidof deadbeef`
NOWPLAY=`deadbeef --nowplaying '%a - %t (%e/%l)'`
printf 'say (deadbeef:%s): %s\n' $DB_PID "$NOWPLAY" > $OF
Ну и примерно так выглядит /tmp/hlmusic.cfg:
Код:
say (deadbeef:28720): YUI - Merry Go Round (0:18/3:52)
Остается лишь добавить loop :)
Я решил не начинать сызнова, а использовать уже готовый каркас для audacious2, даже сохранив поддержку последнего. Во вложении версия 0.2 скрипта hlmusic, теперь он поддерживает оба проигрывателя, выбирая с какого получать информацию при старте. Если работают оба проигрывателя одновременно, скрипт завершится.
Опять-таки предупреждаю: скрипт отрабатывает loop каждую секунду. На это уходит некоторое время и ресурсы CPU. Так как с момента последнего теста я переполз за многопроцессорный компьютер, я не замечаю никакой разницы в игре, однако на старом однопроцессорном (sempron 1800 mhz) в игре наблюдались лаги с audacious2 (и, полагаю, с deadbeef тоже, сейчас уже не скажу). Увы, каркас для inotify я еще не сваял :(
Честно говоря это вообще выглядит довольно глупо. Единственный правильный вариант действий: вообще написать плагин для DeaDBeeF/Audacious2, который будет сам выводить текущую музыку в заданном формате в указанный файл (а если вы захотите, вы всегда можете слинковать его в несколько мест). Обмозгую это чуть позже. В deadbeef уже есть некая заготовка, с audacious2 немного сложнее, и если честно, вообще нет желания для audacious чего-либо писать. Я перешел на deadbeef по той причине, что он-единственный (AFAIK) легкий(в плане памяти) плеер под UNIX, поддерживающий .cue. Audacious тоже поддерживает(заявлено), но на деле режет совершенно неверно.
ВНИМАНИЕ: Код распространяется под BSD лицензией!!! Используя данное ПО вы соглашаетесь с условиями данной лицензии. Вкратце ее суть сводится к тому, что вы имеете право на распространение и изменение ПО, пока вы сохраняете реквизиты разработчика в коде на прежнем месте, а разработчик не несет никакой ответственности, вы используете данное ПО
на свой страх и риск, без каких-либо гарантий чего-либо, никакие претензии в случае возможного ущерба не принимаются.