Skip to content

Instantly share code, notes, and snippets.

@krishnabhargav
Created April 21, 2017 14:08
Show Gist options
  • Save krishnabhargav/affe2eb8b5ce3c47d9a3adad2de8510d to your computer and use it in GitHub Desktop.
Save krishnabhargav/affe2eb8b5ce3c47d9a3adad2de8510d to your computer and use it in GitHub Desktop.
Snippet to download Math textbooks from APSCERT .. for personal use only.
let path r c =
[
sprintf "http://apscert.gov.in/ebookapp/NewServlet?name=/home/wscontent/apscert/ebooks/pdf/English/%s/maths/Mathematics%%20%d/cover.pdf" r c, sprintf "%s-cover.pdf" r
sprintf "http://apscert.gov.in/ebookapp/NewServlet?name=/home/wscontent/apscert/ebooks/pdf/English/%s/maths/Mathematics%%20%d/introduction.pdf" r c, sprintf "%s-intro.pdf" r
] @
(['a'..'z']
|> List.take 15
|> List.map (fun ch ->
sprintf "http://apscert.gov.in/ebookapp/NewServlet?name=/home/wscontent/apscert/ebooks/pdf/English/%s/maths/Mathematics%%20%d/unit%%20%c.pdf" r c ch,
sprintf "%s-unit-%c.pdf" r ch))
@ [
"http://apscert.gov.in/pdfs/10th-Maths-EM-PDFs.rar", "10th-Class-Math.rar"
]
open System.Threading.Tasks
let downloadFile dest url =
async {
use wc = new System.Net.WebClient()
try
do! wc.AsyncDownloadFile(System.Uri(url), dest)
with e ->
printfn "Could not download to %s" dest
}
let classes =
[
("I", 1);
("II", 2);
("III", 3);
("IV", 4);
("V", 5);
("VI", 6);
("VII", 7);
("VIII", 8);
("IX", 9);
]
let downloadMaths =
classes
|> List.collect (fun x -> x ||> path)
|> List.map (fun (url, fileName) -> downloadFile (sprintf "/Users/krishna/Downloads/maths/%s" fileName) url)
|> Async.Parallel
|> Async.RunSynchronously
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment