Store and transfer mpd state between daemons
mpstore [host] > file
mpload [host] < file
mpcp [src] dest
mpmv [src] dest
mpswap [A] B
These commands allow saving, loading, and transferring state between mpd daemons running on different hosts.
mpstore dumps a daemon's state to stdout.
mpload loads a state dump from stdin and sends it to a daemon.
mpcp copies the state from the src daemon to the dest daemon, causing it to begin to play the same song as the src daemon, at the same position.
mpmv moves the state, so the dest daemon is left playing what the src daemon was playing, and the src daemon is paused.
mpswap exchanges the state of daemons A and B, swapping what they're playing.
The first hostname passed to each command can be omitted, if it is then the \s-1MPD_HOST\s0 environment variable will be used. Like the \s-1MPD_HOST\s0 variable, the hostname can be of the form \*(L"password@hostname\*(R" to specify a password. If any hostname is \*(L"-\*(R", the \s-1MPD_HOST\s0 setting will be used.
The full list of state that is handled is:
The host that state is transferred to must have the playing song available in its library, with the same filename. It's ok if some other songs in the playlist are not available; such songs will be skipped.
mpcp cannot perfectly synchronise playback between the two daemons. Network latency and timing prevent this. It should manage better than 0.5 second accuracy. If you need better accuracy of synchronised playback, you should probably use Pulse Audio.
The file format is not the same that mpd uses for saving its own state, which would be nice.
Copyright 2007 Joey Hess <[email protected]>
Licensed under the \s-1GNU\s0 \s-1GPL\s0 version 2 or higher.
http://kitenet.net/~joey/code/mpdtoys