KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Below is Haskell code that (HTTP) downloads files that are missing from the given directory: module Main where import Control.Monad ( filterM , liftM ) import Data.Maybe ( fromJust ) import Network.HTTP ( RequestMethod(GET) , rspBody , simpleHTTP ) import Network.HTTP.Base ( Request(..) ) import Network.URI ( parseURI ) import System.Directory ( doesFileExist ) import System.Environment ( getArgs ) import System.IO ( hClose , hPutStr , hPutStrLn , IOMode(WriteMode) , openFile , stderr ) import Text.Printf ( printf ) indices :: [String] indices = map format1 [0..9] ++ map format2 [0..14] ++ ["40001-41284" :: String] where format1 index = printf "%d-%d" ((index * 1000 + 1) :: Int) (((index + 1) * 1000) :: Int) format2 index = printf "%d-%d" ((10000 + 2 * index * 1000 + 1) :: Int) ((10000 + (2 * index + 2) * 1000) :: Int) main :: IO () main = do [dir] <- getArgs updateDownloads dir updateDownloads :: FilePath -> IO () updateDownloads path = do let fileNames = map (\index -> (index, path ++ "/tv_and_movie_freqlist" ++ index ++ ".html")) indices missing <- filterM (\(_, fileName) -> liftM not $ doesFileExist fileName) fileNames mapM_ (\(index, fileName) -> do let url = "http://en.wiktionary.org/wiki/Wiktionary:Frequency_lists/TV/2006/" ++ index request = Request { rqURI = fromJust $ parseURI url , rqMethod = GET , rqHeaders = [] , rqBody = "" } hPutStrLn stderr $ "Downloading " ++ show url resp <- simpleHTTP request case resp of Left _ -> hPutStrLn stderr $ "Error connecting to " ++ show url Right response -> do l
Tags (comma-separated)
Save Edits
Cancel