I have written a Shell script to repeat the current track of MPD. The daemon doesn't provide this feature because it isn't seen as necessary, however I love (sometimes) to stick with the same song. Most people will suggest you to run
mpc crop && mpc repeat on && mpc play ^_^, but that kills you playlist and I really want to avoid it.
There are two scripts, one to repeat the track when
it has to be done, and a daemon which restarts the repeat process if the user changes the current track. Note: the daemon doesn't take care if you seek in the track, so... if you had like to repeat the same track and seek into it just hack the script and why not leave a comment with your modifications.
The repeat script
#!/bin/sh
# Repeat the same track
function repeat ()
{
min=`mpc|head -2|tail -1|awk '{print $3}'|cut -d: -f1`
sec=`mpc|head -2|tail -1|awk '{print $3}'|cut -d: -f2`
tmin=`mpc --format %time%|head -1|cut -d: -f1`
tsec=`mpc --format %time%|head -1|cut -d: -f2`
sleep $(( ($tmin*60+$tsec) - ($min*60+$sec) )) && mpc prev && repeat
}
repeat
The daemon
#!/bin/sh
# Daemon which takes care of restarting the repeat process
# if the user changes the current track
function restart ()
{
killall mpd-repeat-track.sh
mpd-repeat-track.sh&
}
restart
while sleep 2
do
file=/tmp/mpd-repeat-track.sh
current=`mpc|head -1`
last=`cat $file`
echo $current > $file
[ x"$current" != x"$last" ] && restart
done
Now run
mpd-repeat-trackd.sh and it will just work<tm>.
You can follow the changes here:
Old links: