MPD: 使用 Linux Bash 脚本接收实际的 MPD 状态

5

我想知道如何通过Linux Bash脚本获取mpd播放器的实际状态。我知道如何启动和停止播放器...

#!/bin/bash
mpc play
mpc volume +1
mpc stop

...但我需要知道mpd是否正在播放歌曲,以及当前音量设置很有趣。

我尝试使用mpcstatus=cat /var/tmp/mpd_statusactvol=cat /var/tmp/mpd_volume接收它,但这些文件不存在。我正在使用Volumio/Debian在RaspberryPi上工作。


"mpc status" 不起作用,它只会返回 "volume:100% repeat: off random: off single: off consume: off" 这个字符串,无论是否正在播放。只有音量可以从该字符串中提取。 - WBK
mpc status 在所有情况下都返回相同的结果,听起来像是一个错误。你是否查看过 mpc 的开发者网站或者错误列表?也许在测试版中已经修复了这个问题?也许他们会接受错误报告。祝你好运! - shellter
我必须道歉!mpc status 显示如下内容:Atomic Rooster - Time Take My Life [playing] #1/18 0:00/5:59 (0%) volume: 75% repeat: off random: off single: off consume: off。看起来是在播放器停止时检查了输出!现在使用 grep 命令过滤所需的值应该很容易。 - WBK
这并不是完整的答案,但是mpc确实有一个current命令。据我所知,如果mpc current没有输出,则mpd没有播放。这有助于判断“mpd是否正在播放歌曲”的部分。但它对“当前音量设置”没有任何帮助。 - Dale
1个回答

3

I've got it!

Play:

if mpc status | grep playing >/dev/nul      # If mpd is playing
then
 command... 
fi

音量:

ACTVOL=`mpc status | sed -n '/volume/p' | cut -c8-10 | sed 's/^[ \t]*//'`

2
如果当前播放的歌曲标题中包含任何这些关键字之一,这将无法正常工作。您应该仅解析包含您信息的行: if mpc status | awk 'NR==2' | grep playing; then [...] - pedroapero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接