Download image attribution
Hi readers,
Here is another in my recently started series of posts about D (DLang / the D language).
This is a simple download utility written in D, to download a file from a URL.
It makes use of a high-level function called download (sic) in the std.net.curl module, so the code is very simple. But it only handles basic cases; e.g. no authentication or HTTPS support.
/*
File: download.d
Version: 0.1
Purpose: A simple program to download a file from a given URL
to a given local file. Only handles simple cases. Does not
support authentication, HTTPS or other features.
Author: Vasudev Ram - https://vasudevram.github.io
Copyright 2016 Vasudev Ram
*/
import std.stdio;
import std.net.curl;
void usage(string program)
{
writeln("Usage: ", program, " URL file");
writeln("Downloads the contents of URL to file.");
}
int main(string[] args)
{
if (args.length != 3)
{
usage(args[0]);
return 1;
}
try
{
writeln("Trying to download (URL) ", args[1], " to (file) ", args[2]);
download(args[1], args[2]);
writeln("Item at URL ", args[1], " downloaded to file ", args[2]);
return 0;
}
catch(Exception e)
{
writeln("Error: ", e.msg);
debug(1) writeln("Exception info:\n", e);
return 1;
}
}
A makefile to build it in both debug and release versions:$ type Makefile
release: download.d
dmd -ofdownload.exe download.d
debug: download.d
dmd -debug -ofdownload.exe download.dTo build the release version:make releaseTo build the debug version:
make debugA test run: download the current HN home page:
download news.ycombinator.com nyc.htmlOutput is in nyc.html; see screenshot below:
The line:
debug(1) writeln("Exception info:\n", e);
gets compiled into the binary / EXE only if you build the debug version.That line prints a bit more information about the exception than the release version does.
You can also read a few posts about downloading using Python tools.
- Enjoy.
- Vasudev Ram - Online Python training and consulting Signup to hear about my new courses and products. My Python posts Subscribe to my blog by email My ActiveState recipes


No comments:
Post a Comment