rss2irc 0.1 → 0.2
raw patch · 2 files changed
+18/−9 lines, 2 files
Files
- Main.hs +17/−8
- rss2irc.cabal +1/−1
Main.hs view
@@ -32,6 +32,7 @@ import Control.Concurrent (forkIO,threadDelay) import qualified Control.Parallel.Strategies as Par (NFData(..)) +import System.Console.GetOpt import Text.Printf import Network @@ -44,6 +45,7 @@ , port :: !Int , channel :: String , nick :: String+ , links :: !Bool } {-@@ -53,16 +55,21 @@ nick = "archrss" -} +data Flag = Links deriving Eq+ main :: IO () main = do- args <- getArgs+ (flags, args, errs) <- getOpt Permute [Option ['l'] ["links"] (NoArg Links) "include link URLs"] `fmap` getArgs+ when (not . null $ errs) help+ let l = Links `elem` flags (st, feed, prefix) <- case args of [s,p,c,n,f,z] | Just intp <- maybeRead p -> return (Bot { socket = stdout , server = s , port = intp , channel = c- , nick = n }+ , nick = n+ , links = l } ,f, z) _ -> help@@ -96,14 +103,15 @@ n <- asks nick c <- asks channel h <- asks socket+ l <- asks links write "NICK" n- write "USER" (n++" 0 * :tutorial bot")+ write "USER" (n++" 0 * :rss2irc gateway") write "JOIN" c -- run RSS thread -- main thread just listens on commands- liftIO $ forkIO $ reader c h feed prefix+ liftIO $ forkIO $ reader c h l feed prefix listen h --@@ -124,8 +132,8 @@ -- -- wait on an RSS thread, updating every 60 minutes. ---reader :: String -> Handle -> String -> String -> IO ()-reader c h url prefix = go []+reader :: String -> Handle -> Bool -> String -> String -> IO ()+reader c h l url prefix = go [] where go old = do RSSFeed f <- (fromJust . parseFeedString) `fmap` openURL url@@ -135,7 +143,8 @@ forM_ (take 5 diff) $ \item -> do case rssItemTitle item of Nothing -> return ()- Just t -> privmsgH h c $ prefix ++ t+ Just t -> privmsgH h c $ prefix ++ t ++ if l then linkText else ""+ where linkText = maybe "" (" " ++) (rssItemLink item) threadDelay (60 * minutes) go new@@ -183,7 +192,7 @@ ------------------------------------------------------------------------ help = do- putStrLn "rss2irc <server> <port> <channel> <nick> <feed-url> <msg-prefix>"+ putStrLn "rss2irc [--links] <server> <port> <channel> <nick> <feed-url> <msg-prefix>" exitWith ExitSuccess maybeRead :: Read a => String -> Maybe a
rss2irc.cabal view
@@ -1,5 +1,5 @@ name: rss2irc-version: 0.1+version: 0.2 homepage: http://code.haskell.org/~dons/code/rss2irc license: BSD3 license-file: LICENSE