{-# LANGUAGE OverloadedStrings, FlexibleContexts #-}
module Network.MPD.Commands.CurrentPlaylist
( addId
, add
, clear
, delete
, deleteRange
, deleteId
, move
, moveRange
, moveId
, playlist
, playlistFind
, playlistInfo
, playlistInfoRange
, playlistId
, playlistSearch
, plChanges
, plChangesPosId
, prio
, prioId
, shuffle
, swap
, swapId
, addTagId
, clearTagId
, rangeId
) where
import qualified Network.MPD.Applicative.Internal as A
import qualified Network.MPD.Applicative.CurrentPlaylist as A
import Network.MPD.Commands.Query
import Network.MPD.Commands.Types
import Network.MPD.Core
import Network.MPD.Util
import Control.Monad.Except (throwError)
addId :: MonadMPD m => Path -> Maybe Position -> m Id
addId :: forall (m :: * -> *). MonadMPD m => Path -> Maybe Position -> m Id
addId Path
path = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path -> Maybe Position -> Command Id
A.addId Path
path
add :: MonadMPD m => Path -> m ()
add :: forall (m :: * -> *). MonadMPD m => Path -> m ()
add = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Path -> Command ()
A.add
clear :: MonadMPD m => m ()
clear :: forall (m :: * -> *). MonadMPD m => m ()
clear = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand Command ()
A.clear
delete :: MonadMPD m => Position -> m ()
delete :: forall (m :: * -> *). MonadMPD m => Position -> m ()
delete = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Position -> Command ()
A.delete
deleteRange :: MonadMPD m => Range -> m ()
deleteRange :: forall (m :: * -> *). MonadMPD m => Range -> m ()
deleteRange = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Range -> Command ()
A.deleteRange
deleteId :: MonadMPD m => Id -> m ()
deleteId :: forall (m :: * -> *). MonadMPD m => Id -> m ()
deleteId = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Id -> Command ()
A.deleteId
move :: MonadMPD m => Position -> Position -> m ()
move :: forall (m :: * -> *). MonadMPD m => Position -> Position -> m ()
move Position
pos = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Position -> Position -> Command ()
A.move Position
pos
moveRange :: MonadMPD m => Range -> Position -> m ()
moveRange :: forall (m :: * -> *). MonadMPD m => Range -> Position -> m ()
moveRange Range
range = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Range -> Position -> Command ()
A.moveRange Range
range
moveId :: MonadMPD m => Id -> Position -> m ()
moveId :: forall (m :: * -> *). MonadMPD m => Id -> Position -> m ()
moveId Id
i = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Id -> Position -> Command ()
A.moveId Id
i
playlist :: MonadMPD m => m [(Position, Path)]
playlist :: forall (m :: * -> *). MonadMPD m => m [(Position, Path)]
playlist = forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM forall {a} {m :: * -> *}.
(Read a, Integral a, MonadError MPDError m) =>
ByteString -> m (a, Path)
f forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< forall (m :: * -> *). MonadMPD m => String -> m [ByteString]
getResponse String
"playlist"
where f :: ByteString -> m (a, Path)
f ByteString
s | (ByteString
pos, ByteString
name) <- Char -> ByteString -> (ByteString, ByteString)
breakChar Char
':' ByteString
s
, Just a
pos' <- forall a. (Read a, Integral a) => ByteString -> Maybe a
parseNum ByteString
pos
= forall (m :: * -> *) a. Monad m => a -> m a
return (a
pos', ByteString -> Path
Path ByteString
name)
| Bool
otherwise = forall e (m :: * -> *) a. MonadError e m => e -> m a
throwError forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> MPDError
Unexpected forall a b. (a -> b) -> a -> b
$ forall a. Show a => a -> String
show ByteString
s
{-# WARNING playlist "this is deprecated; please use 'playlistInfo' instead." #-}
playlistFind :: MonadMPD m => Query -> m [Song]
playlistFind :: forall (m :: * -> *). MonadMPD m => Query -> m [Song]
playlistFind = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Query -> Command [Song]
A.playlistFind
playlistInfo :: MonadMPD m => Maybe Position -> m [Song]
playlistInfo :: forall (m :: * -> *). MonadMPD m => Maybe Position -> m [Song]
playlistInfo = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Maybe Position -> Command [Song]
A.playlistInfo
playlistInfoRange :: MonadMPD m => Maybe Range -> m [Song]
playlistInfoRange :: forall (m :: * -> *). MonadMPD m => Maybe Range -> m [Song]
playlistInfoRange = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Maybe Range -> Command [Song]
A.playlistInfoRange
playlistId :: MonadMPD m => Maybe Id -> m [Song]
playlistId :: forall (m :: * -> *). MonadMPD m => Maybe Id -> m [Song]
playlistId = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Maybe Id -> Command [Song]
A.playlistId
playlistSearch :: MonadMPD m => Query -> m [Song]
playlistSearch :: forall (m :: * -> *). MonadMPD m => Query -> m [Song]
playlistSearch = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Query -> Command [Song]
A.playlistSearch
plChanges :: MonadMPD m => Integer -> m [Song]
plChanges :: forall (m :: * -> *). MonadMPD m => Integer -> m [Song]
plChanges = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Integer -> Command [Song]
A.plChanges
plChangesPosId :: MonadMPD m => Integer -> m [(Position, Id)]
plChangesPosId :: forall (m :: * -> *). MonadMPD m => Integer -> m [(Position, Id)]
plChangesPosId = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Integer -> Command [(Position, Id)]
A.plChangesPosId
prio :: MonadMPD m => Priority -> Range -> m ()
prio :: forall (m :: * -> *). MonadMPD m => Priority -> Range -> m ()
prio Priority
p = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Priority -> Range -> Command ()
A.prio Priority
p
prioId :: MonadMPD m => Priority -> Id -> m ()
prioId :: forall (m :: * -> *). MonadMPD m => Priority -> Id -> m ()
prioId Priority
p = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Priority -> Id -> Command ()
A.prioId Priority
p
shuffle :: MonadMPD m => Maybe Range -> m ()
shuffle :: forall (m :: * -> *). MonadMPD m => Maybe Range -> m ()
shuffle = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Maybe Range -> Command ()
A.shuffle
swap :: MonadMPD m => Position -> Position -> m ()
swap :: forall (m :: * -> *). MonadMPD m => Position -> Position -> m ()
swap Position
pos1 = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Position -> Position -> Command ()
A.swap Position
pos1
swapId :: MonadMPD m => Id -> Id -> m ()
swapId :: forall (m :: * -> *). MonadMPD m => Id -> Id -> m ()
swapId Id
id1 = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Id -> Id -> Command ()
A.swapId Id
id1
addTagId :: (MonadMPD m) => Id -> Metadata -> Value -> m ()
addTagId :: forall (m :: * -> *). MonadMPD m => Id -> Metadata -> Value -> m ()
addTagId Id
id' Metadata
tag = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Id -> Metadata -> Value -> Command ()
A.addTagId Id
id' Metadata
tag
clearTagId :: (MonadMPD m) => Id -> Metadata -> m ()
clearTagId :: forall (m :: * -> *). MonadMPD m => Id -> Metadata -> m ()
clearTagId Id
id' = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Id -> Metadata -> Command ()
A.clearTagId Id
id'
rangeId :: (MonadMPD m) => Id -> (Maybe Double, Maybe Double) -> m ()
rangeId :: forall (m :: * -> *).
MonadMPD m =>
Id -> (Maybe Double, Maybe Double) -> m ()
rangeId Id
id' = forall (m :: * -> *) a. MonadMPD m => Command a -> m a
A.runCommand forall b c a. (b -> c) -> (a -> b) -> a -> c
. Id -> (Maybe Double, Maybe Double) -> Command ()
A.rangeId Id
id'