libtagc-0.11.0: demo/Main.hs
module Main where
import Audio.TagLib.TagLib
import Control.Monad
import Data.Maybe
import System
main = do
args <- getArgs
mapM showFile args
showFile filename =
tagFileOpen filename >?>= showTagFile
showTagFile :: TagFile -> IO ()
showTagFile tagFile = do
tagFileGetTag tagFile >?>= showTag
tagFileGetAudioProperties tagFile >?>= showAudioProperties
showTag :: Tag -> IO ()
showTag tag = do
artist <- tagGetArtist tag
album <- tagGetAlbum tag
title <- tagGetTitle tag
comment <- tagGetComment tag
year <- tagGetYear tag
track <- tagGetTrack tag
putStrLn $ artist ++ " " ++ album ++ " " ++ title ++ " " ++ show year ++ " " ++ show track
showAudioProperties :: AudioProperties -> IO ()
showAudioProperties props = do
bitrate <- audioPropertiesGetBitRate props
length <- audioPropertiesGetDuration props
samplerate <- audioPropertiesGetSampleRate props
channels <- audioPropertiesGetChannels props
print (bitrate, length, channels, samplerate)
(>?>=) :: Monad m => m (Maybe a) -> (a -> m ()) -> m ()
g >?>= f = g >>= (?>= f)
(?>=) :: Monad m => Maybe a -> (a -> m ()) -> m ()
m ?>= f = maybe (return ()) f m