Как я могу запросить mplayer о текущей песне?

5

Я использую эту команду для воспроизведения музыки в фоновом режиме (без GUI):

mplayer -shuffle -playlist /home/geppettvs/NAS/Musica/playlist.m3u </dev/null >/dev/null 2>&1 &

В результате получается, что музыка собирается из папки «Музыка» в NAS, которая воспроизводится в фоновом режиме.

Сам список воспроизведения - это только файл списка воспроизведения, созданный с помощью Rhythmbox или любого другого программного обеспечения для музыкальных плееров с возможностью управления плейлистами.

Итак, mplayer начинается со случайной песни, после которой она будет продолжать воспроизведение музыки.

Мне нужно, чтобы каким-то образом запросить mplayer и попросить его имя песни, которое в настоящее время играет, чтобы разместить его где-нибудь, скажем: запишите его в текстовый файл для последующего использования. (Просто имя файла без пути)

Как только mplayer начнет воспроизводить музыку из плейлиста, некоторые попытки запросить, что такое воспроизведение в mplayer, приведут к «playlist.m3u» в качестве названия названия вместо фактического имени файла mp3.

Альтернативы

Я открыт для любых альтернатив, до тех пор, пока есть лучший способ сделать это без GUI. Просто дайте мне знать, и я попробую. Любые идеи приветствуются.

    
задан Geppettvs D'Constanzo 18.08.2016 в 22:46
источник

1 ответ

5

Что-то вроде этого сумасшедшего скрипта должно работать:

lsof -c mplayer | fgrep ".mp3" | awk -F"/" '{ print $NF; }' | cut -d'.' -f1

В основном он работает следующим образом:

  • lsof part ищет все открытые файлы, которые открываются из-за mplayer
  • fgrep захватывает .mp3, считая, что это mp3. Я использовал fgrep, потому что мне также нужен символ точки.
  • awk приходит и в основном ограничивает все, основываясь на косая черта, из которой расположены файлы, а затем $ NF берет последнее вхождение.
  • Поскольку вам нужен файл без mp3-части, я помещаю для него основной снимок, но это также можно сделать с помощью awk.

Итак, теперь у вас есть способ захватить песни из mplayer.

Обратите внимание, что для этого нужно запустить mplayer, так как lsof проверяет открытые файлы.

    
ответ дан Luis Alvarado 19.08.2016 в 00:10
источник