例子:
$ mpc search title "when I was your man"
Bruno Mars/Unorthodox Jukebox/06 Bruno Mars - When I Was Your Man.mp3
我该如何播放这首歌?我尝试过通过管道将其连接到mpc play
但没有运气。
$ mpc search title "when I was your man" | mpc play
答案1
mpc play
需要一个位置作为参数,而不是文件名。准确地说是播放列表中的位置。您首先必须将add
文件添加到播放列表,然后从播放列表中播放该歌曲mpc
。play
但add
会将新歌曲添加到播放列表的末尾。对于play
新添加的歌曲,您必须知道播放列表的长度。
以下是如何添加歌曲并开始播放的一些建议:
首先清除播放列表:
mpc clear mpc search title "when I was your man" | mpc add mpc play
插入下一个并播放下一个:
mpc search title "when I was your man" | mpc insert mpc next
确定最后播放的播放列表的长度:
mpc search title "when I was your man" | mpc add mpc play $(mpc playlist | wc -l)
答案2
如果你看看mpd play
应该做什么:
play <position>
Starts playing the song-number specified. If none is specified, plays number 1.
您会注意到将文件名指定为position
.
我不确定是否有一种简单的方法可以使用 mpc 完成您想要的操作,因为它不支持 MPD 所做的所有命令(例如addid
)。
如果您不想保留播放列表,您可以这样做
mpc clear; mpc search title "when I was your man" | mpc add; mpc play
这将清除播放列表,添加您想要的歌曲并播放播放列表中的第一首歌曲。
我能想到的最好的方法是在不清除歌曲的情况下将歌曲添加到播放列表并播放歌曲
title="your song title here"
mpc search title $title | mpc add
mpc playlist -f '%position% %title%' | grep -i $title | head -n1 | cut - -d " " -f 1 | xargs mpc play
答案3
有一个比以下更简单的方法接受的答案(如果该歌曲已在您的播放列表中):
mpc searchplay filename "$(mpc search title 'when I was your man')"
如果未找到结果,mpc 将仅播放播放列表中的第一首歌曲。
如果您不需要 mpc 的输出,只需追加2>&1 >/dev/null
.
答案4
这个答案适用于如果你是添加多于一首曲目(例如专辑)到结尾。
我们可以获取当前比赛中的位置:
position="$(mpc status | sed -n -e '/#/ s/^.*#\([[:digit:]]*\/[[:digit:]]*\).*$/\1/p')"
curr="$(<<< "$position" cut -d/ -f1)"
length="$(<<< "$position" cut -d/ -f2)"
然后,只需插入您的搜索结果:
mpc search title "when I was your man" | mpc insert
并从头到尾播放:
mpc play "$((length + 1))"