Possible merge.

I really only changed your string formatting to the .format() method, due to the deprecation of the old formatting method using the modulus operator.  I added a downloading('filename') message during download, and added some error checking during download, as well as, having moved the file size information above the with statement.