Skip to content

Instantly share code, notes, and snippets.

@snoj
Created March 24, 2017 14:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save snoj/9a1f3cb85ae76c75ce85f13fb9ba4204 to your computer and use it in GitHub Desktop.
Save snoj/9a1f3cb85ae76c75ce85f13fb9ba4204 to your computer and use it in GitHub Desktop.
download all natgeo's topology maps
$root = "http://pdf.quad.download.s3.amazonaws.com/";
$mroot = $root;
if($pdfs -eq $null -or $pdfs.count -eq 0) {
$pdfs = @{};
while(1) {
$mroot;
$res = [xml](iwr $mroot | select -ExpandProperty content);
$res.ListBucketResult.Contents | ?{ [regex]::IsMatch($_.key, "\.pdf`$", "IgnoreCase") } | %{
try {
$pdfs.Add($_.key, $_);
} catch { }
}
$marker = $res.ListBucketResult.Contents | select -Last 1
$mroot = $root + "?marker=" + $marker.Key;
if($res.ListBucketResult.Contents.Length -lt 1000) {
break;
}
}
}
mkdir "C:\topologymaps\";
$dsb = {
param($root, $fn)
if((Test-Path (Join-Path "C:\topologymaps\" $fn))) {
return;
}
iwr ($root + $fn) -OutFile (Join-Path "C:\topologymaps\" $fn);
};
$djobs = @();
$pdfs.Keys | %{
Get-Job -State Completed | Remove-Job;
if(($djobs | ?{ $_.State -eq "Running"}).Count -gt 4) {
($djobs | ?{ $_.State -eq "Running"}) | Wait-Job -Any
}
$tj = Start-Job -ScriptBlock $dsb -ArgumentList @($root, $_);
$djobs +=($tj);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment