{-# LANGUAGE OverloadedStrings #-}
module Vimeta.UI.Common.Movie
( tagMovie
) where
import Control.Applicative
import qualified Data.Map as Map
import Data.Maybe
import qualified Data.Text as Text
import Network.API.TheMovieDB
import Vimeta.Core
import Prelude
tagMovie :: (MonadIO m) => FilePath -> Movie -> Vimeta m ()
tagMovie filename movie = do
context <- ask
let format = configFormatMovie (ctxConfig context)
tmdbCfg = ctxTMDBCfg context
withArtwork (moviePosterURLs tmdbCfg movie) $ \artwork ->
case fromFormatString (formatMap artwork) "config.cmd_movie" format of
Left e -> die e
Right cmd -> tagFile (Text.unpack cmd)
where
formatMap :: Maybe FilePath -> FormatTable
formatMap artwork = Map.fromList
[ ('Y', formatFullDate $ movieReleaseDate movie)
, ('a', Text.pack <$> artwork)
, ('d', Just (Text.take 255 $ movieOverview movie))
, ('g', genreName <$> listToMaybe (movieGenres movie))
, ('t', Just $ movieTitle movie)
, ('y', formatYear $ movieReleaseDate movie)
, ('f', Just $ Text.pack filename)
]