module Wiki4e.Commands.EPUB (wiki4e_createEpub) where import Network.URL import Data.List (foldl') import Codec.EBook import qualified Data.ByteString.Lazy as STRL import Wiki4e.Commands.Common import Wiki4e.Commands.Images import Wiki4e.Commands.Articles -- | Create epub in current directory with bookName -- | With all articles in directory srcDir and images at -- | imgDir wiki4e_createEpub :: Wiki4eConfig -> String -> [URL] -> [URL] -> IO () wiki4e_createEpub config bookName artURLs imgURLs = do let book = emptyBook { bookID = "http://localhost/"++bookName, bookAuthor = "wiki4e-firefox-epub", bookTitle = bookName } let xs = wiki4e_getArticleSanFiles config artURLs let ys = wiki4e_getImgFiles config imgURLs itemsA <- mapM (\(i,x) -> loadArticleFile i "wiki" x) $ zip [1..] xs itemsI <- mapM (\(i,x) -> loadImgFile i "wiki/img" x) $ zip [(length xs + 1)..] ys let bookFull = foldl' addItem2Book book (itemsA ++ itemsI) let epubFName = bookName++".epub" outdata <- book2Bin' bookFull STRL.writeFile epubFName outdata putStrLn $ epubFName ++ " constructed."