Como posso consultar o mplayer sobre a música atualmente sendo reproduzida?

5

Estou usando este comando para reproduzir música em segundo plano (sem GUI):

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

O que resulta na música sendo reunida da pasta Música em um NAS, que é reproduzida em segundo plano.

A lista de reprodução em si é apenas um arquivo de lista de reprodução criado com o Rhythmbox ou qualquer outro software de reprodução de músicas com a capacidade de gerenciar listas de reprodução.

Assim, o mplayer começa com uma música aleatória após a qual continuará a tocar música ininterruptamente.

O que eu preciso é de alguma forma consultar o mplayer e pedir o nome da música que está sendo reproduzida atualmente para colocá-lo em algum lugar, digamos: escrevê-lo em um arquivo de texto para uso posterior. (Apenas o nome do arquivo sem caminho)

Neste momento, uma vez que o mplayer comece a reproduzir música da lista de reprodução, alguns esforços para consultar o que é o mplayer a ser reproduzido resultarão em "playlist.m3u" como o nome do título em vez do nome de arquivo mp3 real.

Alternativas

Estou aberto a qualquer alternativa, desde que exista uma maneira melhor de fazer isso sem uma GUI. Apenas deixe-me saber e eu vou tentar. Qualquer idéia é bem-vinda.

    
por Geppettvs D'Constanzo 18.08.2016 / 22:46

1 resposta

5

Algo como este script maluco deve funcionar:

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

Basicamente funciona assim:

  • lsof parte procura todos os arquivos abertos que são abertos por causa do mplayer
  • O fgrep agarra o .mp3, assumindo que é um mp3. Eu usei o fgrep porque preciso que o símbolo de ponto seja levado em consideração.
  • o awk entra e basicamente delimita tudo com base nas barras de onde os arquivos estão localizados e, em seguida, o $ NF leva a última ocorrência disso.
  • Como você queria o arquivo sem a parte mp3, coloquei um corte básico para ele, mas isso também poderia ser feito com o awk.

Então agora você tem uma maneira de pegar as músicas de um mplayer.

Note que o mplayer precisa estar rodando para que isso funcione, pois o lsof verifica arquivos abertos.

    
por Luis Alvarado 19.08.2016 / 00:10