Copyright | © 2015 Mark Karpov |
---|---|
License | BSD 3 clause |
Maintainer | Mark Karpov <markkarpov@opmbx.org> |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell2010 |
This module includes complete high-level interface to TagLib. This is the module you should import to use in your projects.
- data Title
- mkTitle :: String -> Title
- getTitle :: Title -> String
- data Artist
- mkArtist :: String -> Artist
- getArtist :: Artist -> String
- data Album
- mkAlbum :: String -> Album
- getAlbum :: Album -> String
- data Comment
- mkComment :: String -> Comment
- getComment :: Comment -> String
- data Genre
- mkGenre :: String -> Genre
- getGenre :: Genre -> String
- data Year
- mkYear :: Int -> Maybe Year
- getYear :: Year -> Int
- data TrackNumber
- mkTrackNumber :: Int -> Maybe TrackNumber
- getTrackNumber :: TrackNumber -> Int
- data Duration
- mkDuration :: Int -> Maybe Duration
- getDuration :: Duration -> Int
- data BitRate
- mkBitRate :: Int -> Maybe BitRate
- getBitRate :: BitRate -> Int
- data SampleRate
- mkSampleRate :: Int -> Maybe SampleRate
- getSampleRate :: SampleRate -> Int
- data Channels
- mkChannels :: Int -> Maybe Channels
- getChannels :: Channels -> Int
- data FileType
- data ID3v2Encoding
- data HTagLibException
- data TagGetter a
- getTags :: FilePath -> TagGetter a -> IO a
- getTags' :: FilePath -> FileType -> TagGetter a -> IO a
- titleGetter :: TagGetter Title
- artistGetter :: TagGetter Artist
- albumGetter :: TagGetter Album
- commentGetter :: TagGetter Comment
- genreGetter :: TagGetter Genre
- yearGetter :: TagGetter (Maybe Year)
- trackNumberGetter :: TagGetter (Maybe TrackNumber)
- durationGetter :: TagGetter Duration
- bitRateGetter :: TagGetter BitRate
- sampleRateGetter :: TagGetter SampleRate
- channelsGetter :: TagGetter Channels
- data TagSetter
- setTags :: FilePath -> Maybe ID3v2Encoding -> TagSetter -> IO ()
- setTags' :: FilePath -> Maybe ID3v2Encoding -> FileType -> TagSetter -> IO ()
- titleSetter :: Title -> TagSetter
- artistSetter :: Artist -> TagSetter
- albumSetter :: Album -> TagSetter
- commentSetter :: Comment -> TagSetter
- genreSetter :: Genre -> TagSetter
- yearSetter :: Maybe Year -> TagSetter
- trackNumberSetter :: Maybe TrackNumber -> TagSetter
Data types
Artist tag.
Comment tag.
mkComment :: String -> Comment Source
Construction of Comment
type, null bytes are converted to spaces.
data TrackNumber Source
Track number tag.
mkTrackNumber :: Int -> Maybe TrackNumber Source
Construction of TrackNumber
type, non-positive values result in
Nothing
.
getTrackNumber :: TrackNumber -> Int Source
Convert TrackNumber
to Int
.
mkDuration :: Int -> Maybe Duration Source
data SampleRate Source
Sample rate in Hz.
mkSampleRate :: Int -> Maybe SampleRate Source
Construction of SampleRate
values, non-positive values result in
Nothing
.
getSampleRate :: SampleRate -> Int Source
Convert SampleRate
to Int
.
Number of channels in the audio stream.
mkChannels :: Int -> Maybe Channels Source
Types of files TagLib can work with. This may be used to explicitly specify type of file rather than relying on TagLib ability to guess type of file from its extension.
data ID3v2Encoding Source
Encoding for ID3v2 frames that are written to tags.
data HTagLibException Source
The data type represents exceptions specific to the library. The following constructors are defined:
OpeningFailed
means that attempt to open audio file to read its tags failed.InvalidFile
means that file can be opened, but it doesn't contain any information that can be interpreted by the library.SavingFailed
is thrown when well… saving failed.
Getters
getTags path g
will try to read file located at path
and read meta
data of the file using getter g
. Type of file will be guessed from its
extension. If this is not satisfactory and you want to explicitly specify
file type, see getTags'
variation of this function.
In case of trouble HTagLibException
will be thrown.
titleGetter :: TagGetter Title Source
Getter to retrieve track title.
artistGetter :: TagGetter Artist Source
Getter to retrieve track artist.
albumGetter :: TagGetter Album Source
Getter to retrieve track album.
commentGetter :: TagGetter Comment Source
Getter to retrieve track comment.
genreGetter :: TagGetter Genre Source
Getter to retrieve genre of the track.
yearGetter :: TagGetter (Maybe Year) Source
Getter to retrieve year to the track (returns Nothing
if the data is
missing).
trackNumberGetter :: TagGetter (Maybe TrackNumber) Source
Getter to retrieve track number (returns Nothing
if the data is
missing).
durationGetter :: TagGetter Duration Source
Getter to retrieve duration in seconds.
bitRateGetter :: TagGetter BitRate Source
Getter to retrieve bit rate.
sampleRateGetter :: TagGetter SampleRate Source
Getter to retrieve sample rate.
channelsGetter :: TagGetter Channels Source
Getter to retrieve number of channels in audio data.
Setters
:: FilePath | Path to audio file |
-> Maybe ID3v2Encoding | Encoding for ID3v2 frames |
-> TagSetter | Setter |
-> IO () |
Set tags in specified file using given setter.
In case of trouble HTagLibException
will be thrown.
:: FilePath | Path to audio file |
-> Maybe ID3v2Encoding | Encoding for ID3v2 frames |
-> FileType | Type of audio file |
-> TagSetter | Setter |
-> IO () |
Similar to setTags
, but you can also specify type of audio file
explicitly (otherwise it's guessed from file extension).
titleSetter :: Title -> TagSetter Source
Setter for track title.
artistSetter :: Artist -> TagSetter Source
Setter for track artist.
albumSetter :: Album -> TagSetter Source
Setter for track album.
commentSetter :: Comment -> TagSetter Source
Setter for track comment.
genreSetter :: Genre -> TagSetter Source
Setter for track genre.
trackNumberSetter :: Maybe TrackNumber -> TagSetter Source
Setter for track number, use Nothing
to clear the field.