我如何向 mplayer 查询当前正在播放的歌曲?

我如何向 mplayer 查询当前正在播放的歌曲?

我正在使用此命令在后台播放音乐(无需 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 即可。只要告诉我,我就会尝试。欢迎提出任何想法。

答案1

类似这个疯狂的脚本应该可以工作:

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

基本上它的工作原理如下:

  • lsof 部分查找所有因 mplayer 打开的文件
  • fgrep 抓取 .mp3 并假设它是 mp3。我使用 fgrep 是因为我还需要考虑点符号。
  • awk 进入并基本上根据文件所在的斜杠来界定所有内容,然后 $NF 获取最后一次出现的斜杠。
  • 因为您想要没有 mp3 部分的文件,所以我对其进行了基本的剪切,但这也可以用 awk 来完成。

现在您已经有了从 mplayer 中获取歌曲的方法。

请注意,由于 lsof 检查打开的文件,因此需要运行 mplayer 才能使其工作。

相关内容