Print diffTime %H:%M:%S for each change

This commit is contained in:
horhik 2022-02-10 07:11:00 +03:00
parent 07d0311ed5
commit 40eb73a48b

View file

@ -4,12 +4,15 @@ import Data.Char
import Control.Concurrent import Control.Concurrent
import System.Environment import System.Environment
import Data.Time.Clock import Data.Time.Clock
import Data.Time.Format
import Data.Time.Clock.POSIX
import Network.HTTP.Conduit import Network.HTTP.Conduit
import Data.List.Split import Data.List.Split
import Data.Algorithm.Diff import Data.Algorithm.Diff
import Data.Algorithm.DiffOutput import Data.Algorithm.DiffOutput
import qualified Data.ByteString.Lazy.Char8 as L8 import qualified Data.ByteString.Lazy.Char8 as L8
data GeneratorState = IsRunning | IsFinished data GeneratorState = IsRunning | IsFinished
deriving (Eq) deriving (Eq)
@ -21,12 +24,21 @@ getChanges _ = False
showRunning :: [String] -> GeneratorState showRunning :: [String] -> GeneratorState
showRunning html = IsRunning showRunning html = IsRunning
myFormatDiffTime :: (UTCTime, UTCTime) -> String
myFormatDiffTime (a,b)= formatTime defaultTimeLocale "%H:%M:%S" . posixSecondsToUTCTime $ diffUTCTime a b
hasDiff :: [a] -> Bool
hasDiff [] = False
hasDiff _ = True
timecodeGenerator :: GeneratorState -> [String] -> UTCTime -> IO () timecodeGenerator :: GeneratorState -> [String] -> UTCTime -> IO ()
timecodeGenerator IsFinished _ _ = return () timecodeGenerator IsFinished _ _ = return ()
timecodeGenerator IsRunning text time = do timecodeGenerator IsRunning text time = do
html <- simpleHttp "https://hd.socks.town/s/h0jnEJQWy/download" html <- simpleHttp "https://hd.socks.town/s/h0jnEJQWy/download"
currTime <- getCurrentTime
let body = (splitOn ("\n")) . L8.unpack $ html let body = (splitOn ("\n")) . L8.unpack $ html
print $ filter getChanges $ getDiff body text print $ filter getChanges $ getDiff body text
print $ myFormatDiffTime (currTime, time)
-- Waiting for 1 second -- Waiting for 1 second
threadDelay 1000000 threadDelay 1000000
-- Creating a loop until `IsFinished` -- Creating a loop until `IsFinished`