libmpd-0.1.3: An MPD client library.

PortabilityHaskell 98
Stabilityalpha
Maintainerbsinclai@turing.une.edu.au

Network.MPD

Contents

Description

MPD client library.

Synopsis

Basic data types

data MPD a Source

data MPDError Source

The MPDError type is used to signal errors, both from the MPD and otherwise.

Constructors

NoMPD

MPD not responding

TimedOut

The connection timed out

Custom String

Used for misc. errors

ACK ACKType String

ACK type and a message from the server.

Instances

data ACKType Source

Represents various MPD errors (aka. ACKs).

Constructors

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)

type Response a = Either MPDError aSource

A response is either an ACK or some result.

Command related data types

data State Source

Represents the different playback states.

Constructors

Playing 
Stopped 
Paused 

Instances

data Status Source

Container for MPD status.

Constructors

Status 

Fields

stState :: State
 
stVolume :: Int

A percentage (0-100)

stRepeat :: Bool
 
stRandom :: Bool
 
stPlaylistVersion :: Integer

A value that is incremented by the server every time the playlist changes.

stPlaylistLength :: Integer
 
stSongPos :: Maybe PLIndex

Current song's position in the playlist.

stSongID :: Maybe PLIndex

Current song's playlist ID.

stTime :: (Seconds, Seconds)

Time elapsed/total time.

stBitrate :: Int

Bitrate (in kilobytes per second) of playing song (if any).

stXFadeWidth :: Seconds

Crossfade time.

stAudio :: (Int, Int, Int)

Samplerate/bits/channels for the chosen output device (see mpd.conf).

stUpdatingDb :: Integer

Job ID of currently running update (if any).

stError :: String

Last error message (if any).

Instances

data Stats Source

Container for database statistics.

Constructors

Stats 

Fields

stsArtists :: Integer

Number of artists.

stsAlbums :: Integer

Number of albums.

stsSongs :: Integer

Number of songs.

stsUptime :: Seconds

Daemon uptime in seconds.

stsPlaytime :: Seconds

Total playing time.

stsDbPlaytime :: Seconds

Total play time of all the songs in the database.

stsDbUpdate :: Integer

Last database update in UNIX time.

Instances

data Device Source

Represents an output device.

Constructors

Device 

Fields

dOutputID :: Int

Output's ID number

dOutputName :: String

Output's name as defined in the MPD configuration file

dOutputEnabled :: Bool
 

Instances

data Query Source

A query is composed of a scope modifier and a query string.

Constructors

Query Meta String

Simple query.

MultiQuery [Query]

Query with multiple conditions.

Instances

data Meta Source

Available metadata types/scope modifiers, used for searching the database for entries with certain metadata values.

Instances

data PLIndex Source

Represents a song's playlist index.

Constructors

Pos Integer

A playlist position index (starting from 0)

ID Integer

A playlist ID number that more robustly identifies a song.

Instances

data Song Source

Represents a single song item.

Constructors

Song 

Fields

sgArtist :: String
 
sgAlbum :: String
 
sgTitle :: String
 
sgFilePath :: String
 
sgGenre :: String
 
sgName :: String
 
sgComposer :: String
 
sgPerformer :: String
 
sgLength :: Seconds

Length in seconds

sgDate :: Int

Year

sgTrack :: (Int, Int)

Track number/total tracks

sgDisc :: (Int, Int)

Position in set/total in set

sgIndex :: Maybe PLIndex
 

Instances

data Count Source

Represents the result of running count.

Constructors

Count 

Fields

cSongs :: Integer

Number of songs matching the query

cPlaytime :: Seconds

Total play time of matching songs

Instances

Admin commands

disableoutput :: Int -> MPD ()Source

Turn off an output device.

enableoutput :: Int -> MPD ()Source

Turn on an output device.

outputs :: MPD [Device]Source

Retrieve information for all output devices.

updateSource

Arguments

:: [String]

Optionally specify a list of paths

-> MPD () 

Update the server's database.

Database commands

find :: Query -> MPD [Song]Source

Search the database for entries exactly matching a query.

listSource

Arguments

:: Meta

Metadata to list

-> Maybe Query 
-> MPD [String] 

List all metadata of metadata (sic).

listAll :: Maybe String -> MPD [String]Source

List the songs (without metadata) in a database directory recursively.

listAllinfoSource

Arguments

:: Maybe String

Optionally specify a path

-> MPD [Either String Song] 

Recursive lsinfo.

lsinfoSource

Arguments

:: Maybe String

Optionally specify a path.

-> MPD [Either String Song] 

Non-recursively list the contents of a database directory.

search :: Query -> MPD [Song]Source

Search the database using case insensitive matching.

count :: Query -> MPD CountSource

Count the number of entries matching a query.

Playlist commands

Unless otherwise noted all playlist commands operate on the current playlist.

add :: Maybe String -> String -> MPD [String]Source

Like add_ but returns a list of the files added.

add_Source

Arguments

:: Maybe String

Optionally specify a playlist to operate on

-> String 
-> MPD () 

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.

addid :: String -> MPD IntegerSource

Like add, but returns a playlist id.

clearSource

Arguments

:: Maybe String

Optional name of a playlist to clear.

-> MPD () 

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.

deleteSource

Arguments

:: Maybe String

Optionally specify a playlist to operate on

-> PLIndex 
-> MPD () 

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.

load :: String -> MPD ()Source

Load an existing playlist.

moveSource

Arguments

:: Maybe String

Optionally specify a playlist to operate on

-> PLIndex 
-> Integer 
-> MPD () 

Move a song to a given position. Note that a playlist position (Pos) is required when operating on playlists other than the current.

playlistinfoSource

Arguments

:: Maybe PLIndex

Optional playlist index.

-> MPD [Song] 

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.

rm :: String -> MPD ()Source

Delete existing playlist.

renameSource

Arguments

:: String

Name of playlist to be renamed

-> String

New playlist name

-> MPD () 

Rename an existing playlist.

save :: String -> MPD ()Source

Save the current playlist.

shuffle :: MPD ()Source

Shuffle the playlist.

swap :: PLIndex -> PLIndex -> MPD ()Source

Swap the positions of two songs. Note that the positions must be of the same type, i.e. mixing Pos and ID will result in a no-op.

Playback commands

crossfade :: Seconds -> MPD ()Source

Set crossfading between songs.

next :: MPD ()Source

Play the next song.

pause :: Bool -> MPD ()Source

Pause playing.

play :: Maybe PLIndex -> MPD ()Source

Begin/continue playing.

previous :: MPD ()Source

Play the previous song.

random :: Bool -> MPD ()Source

Set random playing.

repeat :: Bool -> MPD ()Source

Set repeating.

seek :: Maybe PLIndex -> Seconds -> MPD ()Source

Seek to some point in a song. Seeks in current song if no position is given.

setVolume :: Int -> MPD ()Source

Set the volume.

volume :: Int -> MPD ()Source

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.

stop :: MPD ()Source

Stop playing.

Miscellaneous commands

clearerror :: MPD ()Source

Clear the current error message in status.

close :: MPD ()Source

Close an MPD connection.

commands :: MPD [String]Source

Retrieve a list of available commands.

notcommands :: MPD [String]Source

Retrieve a list of unavailable commands.

tagtypes :: MPD [String]Source

Retrieve a list of available song metadata.

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.

ping :: MPD ()Source

Check that the server is still responding.

reconnect :: MPD ()Source

Refresh a connection.

stats :: MPD StatsSource

Get server statistics.

status :: MPD StatusSource

Get the server's status.

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

crop :: Maybe PLIndex -> Maybe PLIndex -> MPD ()Source

Crop playlist. The bounds are inclusive. If Nothing or ID is passed the cropping will leave your playlist alone on that side.

prune :: MPD ()Source

Remove duplicate playlist entries.

lsdirsSource

Arguments

:: Maybe String

optional path.

-> MPD [String] 

List directories non-recursively.

lsfilesSource

Arguments

:: Maybe String

optional path.

-> MPD [String] 

List files non-recursively.

lsplaylists :: MPD [String]Source

List all playlists.

findArtist :: Artist -> MPD [Song]Source

Search the database for songs relating to an artist.

findAlbum :: Album -> MPD [Song]Source

Search the database for songs relating to an album.

findTitle :: Title -> MPD [Song]Source

Search the database for songs relating to a song title.

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.

listAlbum :: Artist -> Album -> MPD [Song]Source

List the songs in an album of some 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'.

toggle :: MPD ()Source

Toggles play/pause. Plays if stopped.

updateid :: [String] -> MPD IntegerSource

Like update, but returns the update job id.

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.

withMPDExSource

Arguments

:: 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.

Misc.

kill :: MPD ()Source

Kill the server. Obviously, the connection is then invalid.

throwMPD :: MPDError -> MPD ()Source

Throw an exception.

catchMPD :: MPD a -> (MPDError -> MPD a) -> MPD aSource

Catch an exception from an action.