Portability | Haskell 98 |
---|---|
Stability | alpha |
Maintainer | bsinclai@turing.une.edu.au |
MPD client library.
- data MPD a
- data MPDError
- data ACKType
- = InvalidArgument
- | InvalidPassword
- | Auth
- | UnknownCommand
- | FileNotFound
- | PlaylistMax
- | System
- | PlaylistLoad
- | Busy
- | NotPlaying
- | FileExists
- | UnknownACK
- type Response a = Either MPDError a
- data State
- data Status = Status {
- stState :: State
- stVolume :: Int
- stRepeat :: Bool
- stRandom :: Bool
- stPlaylistVersion :: Integer
- stPlaylistLength :: Integer
- stSongPos :: Maybe PLIndex
- stSongID :: Maybe PLIndex
- stTime :: (Seconds, Seconds)
- stBitrate :: Int
- stXFadeWidth :: Seconds
- stAudio :: (Int, Int, Int)
- stUpdatingDb :: Integer
- stError :: String
- data Stats = Stats {}
- data Device = Device {
- dOutputID :: Int
- dOutputName :: String
- dOutputEnabled :: Bool
- data Query
- = Query Meta String
- | MultiQuery [Query]
- data Meta
- type Artist = String
- type Album = String
- type Title = String
- type Seconds = Integer
- data PLIndex
- data Song = Song {}
- data Count = Count {}
- disableoutput :: Int -> MPD ()
- enableoutput :: Int -> MPD ()
- outputs :: MPD [Device]
- update :: [String] -> MPD ()
- find :: Query -> MPD [Song]
- list :: Meta -> Maybe Query -> MPD [String]
- listAll :: Maybe String -> MPD [String]
- listAllinfo :: Maybe String -> MPD [Either String Song]
- lsinfo :: Maybe String -> MPD [Either String Song]
- search :: Query -> MPD [Song]
- count :: Query -> MPD Count
- add :: Maybe String -> String -> MPD [String]
- add_ :: Maybe String -> String -> MPD ()
- addid :: String -> MPD Integer
- clear :: Maybe String -> MPD ()
- currentSong :: MPD (Maybe Song)
- delete :: Maybe String -> PLIndex -> MPD ()
- load :: String -> MPD ()
- move :: Maybe String -> PLIndex -> Integer -> MPD ()
- playlistinfo :: Maybe PLIndex -> MPD [Song]
- listplaylist :: String -> MPD [String]
- listplaylistinfo :: String -> MPD [Song]
- playlist :: MPD [(PLIndex, String)]
- plchanges :: Integer -> MPD [Song]
- plchangesposid :: Integer -> MPD [(PLIndex, PLIndex)]
- playlistfind :: Query -> MPD [Song]
- playlistsearch :: Query -> MPD [Song]
- rm :: String -> MPD ()
- rename :: String -> String -> MPD ()
- save :: String -> MPD ()
- shuffle :: MPD ()
- swap :: PLIndex -> PLIndex -> MPD ()
- crossfade :: Seconds -> MPD ()
- next :: MPD ()
- pause :: Bool -> MPD ()
- play :: Maybe PLIndex -> MPD ()
- previous :: MPD ()
- random :: Bool -> MPD ()
- repeat :: Bool -> MPD ()
- seek :: Maybe PLIndex -> Seconds -> MPD ()
- setVolume :: Int -> MPD ()
- volume :: Int -> MPD ()
- stop :: MPD ()
- clearerror :: MPD ()
- close :: MPD ()
- commands :: MPD [String]
- notcommands :: MPD [String]
- tagtypes :: MPD [String]
- urlhandlers :: MPD [String]
- password :: String -> MPD ()
- ping :: MPD ()
- reconnect :: MPD ()
- stats :: MPD Stats
- status :: MPD Status
- addMany :: Maybe String -> [String] -> MPD ()
- deleteMany :: Maybe String -> [PLIndex] -> MPD ()
- crop :: Maybe PLIndex -> Maybe PLIndex -> MPD ()
- prune :: MPD ()
- lsdirs :: Maybe String -> MPD [String]
- lsfiles :: Maybe String -> MPD [String]
- lsplaylists :: MPD [String]
- findArtist :: Artist -> MPD [Song]
- findAlbum :: Album -> MPD [Song]
- findTitle :: Title -> MPD [Song]
- listArtists :: MPD [Artist]
- listAlbums :: Maybe Artist -> MPD [Album]
- listAlbum :: Artist -> Album -> MPD [Song]
- searchArtist :: Artist -> MPD [Song]
- searchAlbum :: Album -> MPD [Song]
- searchTitle :: Title -> MPD [Song]
- getPlaylist :: MPD [Song]
- toggle :: MPD ()
- updateid :: [String] -> MPD Integer
- withMPD :: MPD a -> IO (Response a)
- withMPDEx :: String -> Integer -> IO (Maybe String) -> MPD a -> IO (Response a)
- kill :: MPD ()
- throwMPD :: MPDError -> MPD ()
- catchMPD :: MPD a -> (MPDError -> MPD a) -> MPD a
Basic data types
The MPDError type is used to signal errors, both from the MPD and otherwise.
Represents various MPD errors (aka. ACKs).
InvalidArgument | Invalid argument passed (ACK 2) |
InvalidPassword | Invalid password supplied (ACK 3) |
Auth | Authentication required (ACK 4) |
UnknownCommand | Unknown command (ACK 5) |
FileNotFound | File or directory not found ACK 50) |
PlaylistMax | Playlist at maximum size (ACK 51) |
System | A system error (ACK 52) |
PlaylistLoad | Playlist loading failed (ACK 53) |
Busy | Update already running (ACK 54) |
NotPlaying | An operation requiring playback got interrupted (ACK 55) |
FileExists | File already exists (ACK 56) |
UnknownACK | An unknown ACK (aka. bug) |
Command related data types
Represents the different playback states.
Container for MPD status.
Status | |
|
Container for database statistics.
Stats | |
|
Represents an output device.
Device | |
|
A query is composed of a scope modifier and a query string.
Query Meta String | Simple query. |
MultiQuery [Query] | Query with multiple conditions. |
Available metadata types/scope modifiers, used for searching the database for entries with certain metadata values.
Represents a song's playlist index.
Represents a single song item.
Song | |
|
Admin commands
disableoutput :: Int -> MPD ()Source
Turn off an output device.
enableoutput :: Int -> MPD ()Source
Turn on an output device.
Database commands
List all metadata of metadata (sic).
listAll :: Maybe String -> MPD [String]Source
List the songs (without metadata) in a database directory recursively.
Recursive lsinfo
.
Non-recursively list the contents of a database directory.
Playlist commands
Unless otherwise noted all playlist commands operate on the current playlist.
Add a song (or a whole directory) to a playlist. Adds to current if no playlist is specified. Will create a new playlist if the one specified does not already exist.
Clear a playlist. Clears current playlist if no playlist is specified. If the specified playlist does not exist, it will be created.
currentSong :: MPD (Maybe Song)Source
Get the currently playing song.
Remove a song from a playlist.
If no playlist is specified, current playlist is used.
Note that a playlist position (Pos
) is required when operating on
playlists other than the current.
Move a song to a given position.
Note that a playlist position (Pos
) is required when operating on
playlists other than the current.
Retrieve metadata for songs in the current playlist.
listplaylist :: String -> MPD [String]Source
Retrieve a list of files in a given playlist.
listplaylistinfo :: String -> MPD [Song]Source
Retrieve metadata for files in a given playlist.
playlist :: MPD [(PLIndex, String)]Source
Retrieve file paths and positions of songs in the current playlist. Note that this command is only included for completeness sake; it's deprecated and likely to disappear at any time.
plchanges :: Integer -> MPD [Song]Source
Retrieve a list of changed songs currently in the playlist since a given playlist version.
plchangesposid :: Integer -> MPD [(PLIndex, PLIndex)]Source
Like plchanges
but only returns positions and ids.
playlistfind :: Query -> MPD [Song]Source
Search for songs in the current playlist with strict matching.
playlistsearch :: Query -> MPD [Song]Source
Search case-insensitively with partial matches for songs in the current playlist.
Rename an existing playlist.
Playback commands
seek :: Maybe PLIndex -> Seconds -> MPD ()Source
Seek to some point in a song. Seeks in current song if no position is given.
Increase or decrease volume by a given percent, e.g. 'volume 10' will increase the volume by 10 percent, while 'volume (-10)' will decrease it by the same amount. Note that this command is only included for completeness sake ; it's deprecated and may disappear at any time.
Miscellaneous commands
Clear the current error message in status.
notcommands :: MPD [String]Source
Retrieve a list of unavailable commands.
urlhandlers :: MPD [String]Source
Retrieve a list of supported urlhandlers.
password :: String -> MPD ()Source
Send password to server to authenticate session. Password is sent as plain text.
Extensions/shortcuts
addMany :: Maybe String -> [String] -> MPD ()Source
Add a list of songs/folders to a playlist.
Should be more efficient than running add
many times.
deleteMany :: Maybe String -> [PLIndex] -> MPD ()Source
Delete a list of songs from a playlist.
If there is a duplicate then no further songs will be deleted, so
take care to avoid them (see prune
for this).
lsplaylists :: MPD [String]Source
List all playlists.
findArtist :: Artist -> MPD [Song]Source
Search the database for songs relating to an artist.
listArtists :: MPD [Artist]Source
List the artists in the database.
listAlbums :: Maybe Artist -> MPD [Album]Source
List the albums in the database, optionally matching a given artist.
searchArtist :: Artist -> MPD [Song]Source
Search the database for songs relating to an artist using search
.
searchAlbum :: Album -> MPD [Song]Source
Search the database for songs relating to an album using search
.
searchTitle :: Title -> MPD [Song]Source
Search the database for songs relating to a song title.
getPlaylist :: MPD [Song]Source
Retrieve the current playlist. Equivalent to 'playlistinfo Nothing'.
Connections
withMPD :: MPD a -> IO (Response a)Source
Run an MPD action using localhost:6600 as the default host:port, or whatever is found in the environment variables MPD_HOST and MPD_PORT. If MPD_HOST is of the form "password@host" then the password will be supplied as well.
:: String | Host name. |
-> Integer | Port number. |
-> IO (Maybe String) | An action that supplies passwords. |
-> MPD a | The action to run. |
-> IO (Response a) |
Run an MPD action against a server.