+
+ # Attempt to resume download with "continuedl" option
+ if os.path.isfile(filename):
+ resume_len = os.path.getsize(filename)
+ else:
+ resume_len = 0
+ if self.params.get('continuedl', False) and resume_len != 0:
+ self.report_resuming_byte(resume_len)
+ request.add_header('Range','bytes=%d-' % resume_len)
+
+ # Establish connection
+ try:
+ data = urllib2.urlopen(request)
+ except (urllib2.HTTPError, ), err:
+ if err.code != 416: # 416 is 'Requested range not satisfiable'
+ raise
+ data = urllib2.urlopen(basic_request)
+ content_length = data.info()['Content-Length']
+ if content_length is not None and long(content_length) == resume_len:
+ self.report_file_already_downloaded(filename)
+ return True
+ else:
+ self.report_unable_to_resume()
+ open_mode = 'wb'
+