| Copyright | © 2015–2018 Mark Karpov |
|---|---|
| License | BSD 3 clause |
| Maintainer | Mark Karpov <[email protected]> |
| Stability | experimental |
| Portability | portable |
| Safe Haskell | Safe |
| Language | Haskell2010 |
Sound.HTagLib
Contents
Description
This module provides a complete high-level interface to TagLib. This is the module you should import to use in your projects.
Synopsis
- getTags :: MonadIO m => FilePath -> TagGetter a -> m a
- getTags' :: MonadIO m => FilePath -> FileType -> TagGetter a -> m 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
- setTags :: MonadIO m => FilePath -> Maybe ID3v2Encoding -> TagSetter -> m ()
- setTags' :: MonadIO m => FilePath -> Maybe ID3v2Encoding -> FileType -> TagSetter -> m ()
- titleSetter :: Title -> TagSetter
- artistSetter :: Artist -> TagSetter
- albumSetter :: Album -> TagSetter
- commentSetter :: Comment -> TagSetter
- genreSetter :: Genre -> TagSetter
- yearSetter :: Maybe Year -> TagSetter
- trackNumberSetter :: Maybe TrackNumber -> TagSetter
- data Title
- mkTitle :: Text -> Title
- unTitle :: Title -> Text
- data Artist
- mkArtist :: Text -> Artist
- unArtist :: Artist -> Text
- data Album
- mkAlbum :: Text -> Album
- unAlbum :: Album -> Text
- data Comment
- mkComment :: Text -> Comment
- unComment :: Comment -> Text
- data Genre
- mkGenre :: Text -> Genre
- unGenre :: Genre -> Text
- data Year
- mkYear :: Int -> Maybe Year
- unYear :: Year -> Int
- data TrackNumber
- mkTrackNumber :: Int -> Maybe TrackNumber
- unTrackNumber :: TrackNumber -> Int
- data Duration
- mkDuration :: Int -> Maybe Duration
- unDuration :: Duration -> Int
- data BitRate
- mkBitRate :: Int -> Maybe BitRate
- unBitRate :: BitRate -> Int
- data SampleRate
- mkSampleRate :: Int -> Maybe SampleRate
- unSampleRate :: SampleRate -> Int
- data Channels
- mkChannels :: Int -> Maybe Channels
- unChannels :: Channels -> Int
- data FileType
- data ID3v2Encoding
- data TagGetter a
- data TagSetter
- data HTagLibException
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
the file type, see getTags' variation of this function.
In the 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
Arguments
| :: MonadIO m | |
| => FilePath | Path to audio file |
| -> Maybe ID3v2Encoding | Encoding for ID3v2 frames |
| -> TagSetter | Setter |
| -> m () |
Set tags in specified file using the given setter.
In the case of trouble HTagLibException will be thrown.
Arguments
| :: MonadIO m | |
| => FilePath | Path to audio file |
| -> Maybe ID3v2Encoding | Encoding for ID3v2 frames |
| -> FileType | Type of audio file |
| -> TagSetter | Setter |
| -> m () |
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.
Data types
Title tag.
Artist tag.
Album tag.
Comment tag.
mkComment :: Text -> Comment Source #
Construction of Comment type, null bytes are converted to spaces.
Genre tag.
data TrackNumber Source #
Track number tag.
Instances
| Eq TrackNumber Source # | |
Defined in Sound.HTagLib.Type | |
| Ord TrackNumber Source # | |
Defined in Sound.HTagLib.Type Methods compare :: TrackNumber -> TrackNumber -> Ordering # (<) :: TrackNumber -> TrackNumber -> Bool # (<=) :: TrackNumber -> TrackNumber -> Bool # (>) :: TrackNumber -> TrackNumber -> Bool # (>=) :: TrackNumber -> TrackNumber -> Bool # max :: TrackNumber -> TrackNumber -> TrackNumber # min :: TrackNumber -> TrackNumber -> TrackNumber # | |
| Show TrackNumber Source # | |
Defined in Sound.HTagLib.Type Methods showsPrec :: Int -> TrackNumber -> ShowS # show :: TrackNumber -> String # showList :: [TrackNumber] -> ShowS # | |
mkTrackNumber :: Int -> Maybe TrackNumber Source #
Construction of TrackNumber type, non-positive values result in
Nothing.
unTrackNumber :: TrackNumber -> Int Source #
Convert TrackNumber to Int.
Duration in seconds.
data SampleRate Source #
Sample rate in Hz.
Instances
| Eq SampleRate Source # | |
Defined in Sound.HTagLib.Type | |
| Ord SampleRate Source # | |
Defined in Sound.HTagLib.Type Methods compare :: SampleRate -> SampleRate -> Ordering # (<) :: SampleRate -> SampleRate -> Bool # (<=) :: SampleRate -> SampleRate -> Bool # (>) :: SampleRate -> SampleRate -> Bool # (>=) :: SampleRate -> SampleRate -> Bool # max :: SampleRate -> SampleRate -> SampleRate # min :: SampleRate -> SampleRate -> SampleRate # | |
| Show SampleRate Source # | |
Defined in Sound.HTagLib.Type Methods showsPrec :: Int -> SampleRate -> ShowS # show :: SampleRate -> String # showList :: [SampleRate] -> ShowS # | |
mkSampleRate :: Int -> Maybe SampleRate Source #
Construction of SampleRate values, non-positive values result in
Nothing.
unSampleRate :: SampleRate -> Int Source #
Convert SampleRate to Int.
Number of channels in the audio stream.
Types of files TagLib can work with. This may be used to explicitly specify type of file instead of relying on the TagLib's ability to guess type of file from its extension.
Constructors
| MPEG | MPEG |
| OggVorbis | Ogg vorbis |
| FLAC | FLAC |
| MPC | MPC |
| OggFlac | Ogg FLAC |
| WavPack | Wav pack |
| Speex | Speex |
| TrueAudio | True audio |
| MP4 | MP4 |
| ASF | ASF |
Instances
| Enum FileType Source # | |
Defined in Sound.HTagLib.Type | |
| Eq FileType Source # | |
| Show FileType Source # | |
data ID3v2Encoding Source #
Encoding for ID3v2 frames that are written to tags.
Constructors
| ID3v2Latin1 | Latin1 |
| ID3v2UTF16 | UTF-16 |
| ID3v2UTF16BE | UTF-16 big endian |
| ID3v2UTF8 | UTF-8 |
Instances
| Enum ID3v2Encoding Source # | |
Defined in Sound.HTagLib.Type Methods succ :: ID3v2Encoding -> ID3v2Encoding # pred :: ID3v2Encoding -> ID3v2Encoding # toEnum :: Int -> ID3v2Encoding # fromEnum :: ID3v2Encoding -> Int # enumFrom :: ID3v2Encoding -> [ID3v2Encoding] # enumFromThen :: ID3v2Encoding -> ID3v2Encoding -> [ID3v2Encoding] # enumFromTo :: ID3v2Encoding -> ID3v2Encoding -> [ID3v2Encoding] # enumFromThenTo :: ID3v2Encoding -> ID3v2Encoding -> ID3v2Encoding -> [ID3v2Encoding] # | |
| Eq ID3v2Encoding Source # | |
Defined in Sound.HTagLib.Type Methods (==) :: ID3v2Encoding -> ID3v2Encoding -> Bool # (/=) :: ID3v2Encoding -> ID3v2Encoding -> Bool # | |
| Show ID3v2Encoding Source # | |
Defined in Sound.HTagLib.Type Methods showsPrec :: Int -> ID3v2Encoding -> ShowS # show :: ID3v2Encoding -> String # showList :: [ID3v2Encoding] -> ShowS # | |
A composable entity that can be used with getTags or getTags'
functions to read batch of meta parameters.
A composable entity that can be used together with the setTags or the
setTags' functions to write meta data to an audio file.
Note that in case of (for example):
titleSetter "foo" <> titleSetter "bar"
The first value wins.
data HTagLibException Source #
The data type represents exceptions specific to the library.
Constructors
| OpeningFailed FilePath | Attempt to open audio file to read its tags failed |
| InvalidFile FilePath | File can be opened, but it doesn't contain any information that can be interpreted by the library |
| SavingFailed FilePath | Saving failed |
Instances
| Eq HTagLibException Source # | |
Defined in Sound.HTagLib.Type Methods (==) :: HTagLibException -> HTagLibException -> Bool # (/=) :: HTagLibException -> HTagLibException -> Bool # | |
| Show HTagLibException Source # | |
Defined in Sound.HTagLib.Type Methods showsPrec :: Int -> HTagLibException -> ShowS # show :: HTagLibException -> String # showList :: [HTagLibException] -> ShowS # | |
| Exception HTagLibException Source # | |
Defined in Sound.HTagLib.Type Methods toException :: HTagLibException -> SomeException # | |