Create separate fetchFile function and add some comments

This commit is contained in:
horhik 2022-02-10 10:08:19 +03:00
parent e56575d5c4
commit e03153780b
1 changed files with 20 additions and 10 deletions

View File

@ -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