packages feed

h-booru-0.2.0.0: src/Main.hs

{-# LANGUAGE UnicodeSyntax #-}
{-# LANGUAGE LambdaCase #-}
module Main where

import Control.Applicative ((<$>))
import Data.Vinyl
import HBooru.Network
import HBooru.Parsers.Gelbooru
import HBooru.Parsers.Ichijou
import HBooru.Parsers.Konachan
import HBooru.Parsers.Safebooru
import HBooru.Parsers.Yandere
import HBooru.Types
import System.Environment (getArgs)

main ∷ IO ()
main = getArgs >>= \case
  [] → putStrLn help
  xs → fetchImageLinks xs >>= mapM_ putStrLn

fetchImageLinks ∷ [Tag] → IO [String]
fetchImageLinks xs = do
  let f p = map (file_url `rGet`) <$> fetchAllTaggedPosts p XML xs
  g ← f Gelbooru
  i ← f Ichijou
  k ← f Konachan
  s ← f Safebooru
  y ← f Yandere
  let ls = g ++ i ++ k ++ s ++ y
  return $ length ls `seq` ls

help ∷ String
help = unlines $
       [ "Usage: h-booru tag1 [tag2] … [tagn]"
       , ""
       , "Prints a list of links matching the tags"
       ]