packages feed

patronscraper-0.0.0.0: src/Main.hs

module Main where

import Control.Arrow
import Control.Applicative
import System.Environment
import Text.XML.HXT.Core
import Text.HandsomeSoup

main :: IO ()
main = do
    page <- getPatreonPage
    patrons <- scrapePatrons page
    mapM_ putStrLn patrons

getPatreonPage :: IO (String)
getPatreonPage = do
    args <- getArgs
    if length args /= 1
       then error "Usage: patronscraper <URL>"
       else return $ head args

scrapePatrons :: String -> IO [String]
scrapePatrons page = do
    patrons <- runX $ fromUrl page
        >>> css ".shareWindow"
        >>> (deep $ hasName "h1")
        >>> (deep $ hasName "a")
        >>> deep isText
        >>> getText
    return patrons