diff --git a/src/Main.hs b/src/Main.hs index 881d009..e6688a5 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -6,7 +6,7 @@ import System.Environment import Data.Time.Clock import Data.Time.Format import Data.Time.Clock.POSIX -import Network.HTTP.Conduit +import Network.HTTP.Conduit (simpleHttp) import Data.List.Split import Data.Algorithm.Diff import Data.Algorithm.DiffOutput @@ -20,38 +20,47 @@ isChanged :: Diff f -> Bool isChanged (First _) = True isChanged _ = False +hasDiff :: [a] -> Bool +hasDiff [] = False +hasDiff _ = True + +-- Changes as one string if they exsists getChanges :: [String] -> [String] -> Maybe String getChanges now before = if (hasDiff ch) then Just res else Nothing where ch = filter isChanged diff diff = getDiff now before res = foldr (\(First x) y -> x ++ " \n " ++ y) "" ch --- Should stop the script if there's a checkbox with a keyword `stop` +-- TODO +-- Should return signal to stop the script if there's a checkbox with a keyword `stop` showRunning :: [String] -> GeneratorState showRunning html = IsRunning +-- Printing time diff in %H:%M:%S format myFormatDiffTime :: (UTCTime, UTCTime) -> String myFormatDiffTime (a,b)= formatTime defaultTimeLocale "%H:%M:%S" . posixSecondsToUTCTime $ diffUTCTime a b -hasDiff :: [a] -> Bool -hasDiff [] = False -hasDiff _ = True - - +-- Printing changes is they exsists genOutput :: Maybe String -> String -> IO () genOutput (Just changes) time = do putStrLn $ time ++ "\n " ++ changes genOutput Nothing _ = return() +fetchFile :: IO [String] +fetchFile = do + html <- simpleHttp "https://hd.socks.town/s/h0jnEJQWy/download" + return $ (splitOn ("\n")) . toString $ html + +-- Main Loop timecodeGenerator :: GeneratorState -> [String] -> UTCTime -> IO () timecodeGenerator IsFinished _ _ = return () timecodeGenerator IsRunning prevFile time = do - html <- simpleHttp "https://hd.socks.town/s/h0jnEJQWy/download" + newFile <- fetchFile currTime <- getCurrentTime - let newFile = (splitOn ("\n")) . toString $ html let changes = getChanges newFile prevFile let diffTime = myFormatDiffTime (currTime, time) + genOutput changes diffTime -- Waiting for 1 second threadDelay 10000 @@ -64,4 +73,5 @@ timecodeGenerator IsRunning prevFile time = do main :: IO () main = do time <- getCurrentTime - timecodeGenerator IsRunning [""] time + file <- fetchFile + timecodeGenerator IsRunning file time