如何播放“mpc搜索”的结果?

如何播放“mpc搜索”的结果?

例子:

$ 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文件添加到播放列表,然后从播放列表中播放该歌曲mpcplayadd会将新歌曲添加到播放列表的末尾。对于play新添加的歌曲,您必须知道播放列表的长度。

以下是如何添加歌曲并开始播放的一些建议:

  1. 首先清除播放列表:

    mpc clear
    mpc search title "when I was your man" | mpc add
    mpc play
    
  2. 插入下一个并播放下一个:

    mpc search title "when I was your man" | mpc insert
    mpc next
    
  3. 确定最后播放的播放列表的长度:

    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))"

相关内容