module ID3.Simple
( Tag
, setArtist
, setTitle
, setAlbum
, setYear
, setTrack
, getArtist
, getTitle
, getAlbum
, getYear
, getTrack
, readTag
, writeTag
) where
import Data.Accessor
import Data.Maybe
import ID3.Type
import ID3.ReadTag
import ID3.WriteTag
type Tag = ID3Tag
getFrameText :: FrameID -> Tag -> Maybe String
getFrameText frid tag = case tag^.frame frid of
Nothing -> Nothing
Just fr -> Just (fr^.textContent)
setFrameText :: FrameID -> String -> Tag -> Tag
setFrameText frid x tag = edit $ fromMaybe (initFrame frid) (tag^.frame frid)
where edit f = (frame frid) ^= Just (updateSize $ textContent^=x $ f ) $ tag
getArtist :: Tag -> Maybe String
getArtist = getFrameText "TPE1"
setArtist :: String -> Tag -> Tag
setArtist = setFrameText "TPE1"
getTitle :: Tag -> Maybe String
getTitle = getFrameText "TIT2"
setTitle :: String -> Tag -> Tag
setTitle = setFrameText "TIT2"
getAlbum :: Tag -> Maybe String
getAlbum = getFrameText "TALB"
setAlbum :: String -> Tag -> Tag
setAlbum = setFrameText "TALB"
getYear :: Tag -> Maybe String
getYear = getFrameText "TDRC"
setYear :: String -> Tag -> Tag
setYear = setFrameText "TDRC"
getTrack :: Tag -> Maybe String
getTrack = getFrameText "TRCK"
setTrack :: String -> Tag -> Tag
setTrack = setFrameText "TRCK"