浏览代码

Handle file open mode correctly (fixes issue #76)

Ricardo Garcia 16 年之前
父节点
当前提交
9c457d2a20
共有 1 个文件被更改,包括 9 次插入3 次删除
  1. 9 3
      youtube-dl

+ 9 - 3
youtube-dl

@@ -392,19 +392,21 @@ class FileDownloader(object):
 	
 	def _do_download(self, filename, url):
 		stream = None
-		open_mode = 'ab'
-
+		open_mode = 'wb'
 		basic_request = urllib2.Request(url, None, std_headers)
 		request = urllib2.Request(url, None, std_headers)
 
-		# Attempt to resume download with "continuedl" option
+		# Establish possible resume length
 		if os.path.isfile(filename):
 			resume_len = os.path.getsize(filename)
 		else:
 			resume_len = 0
+
+		# Request parameters in case of being able to resume
 		if self.params.get('continuedl', False) and resume_len != 0:
 			self.report_resuming_byte(resume_len)
 			request.add_header('Range','bytes=%d-' % resume_len)
+			open_mode = 'ab'
 
 		# Establish connection
 		try:
@@ -412,12 +414,16 @@ class FileDownloader(object):
 		except (urllib2.HTTPError, ), err:
 			if err.code != 416: #  416 is 'Requested range not satisfiable'
 				raise
+			# Unable to resume
 			data = urllib2.urlopen(basic_request)
 			content_length = data.info()['Content-Length']
+
 			if content_length is not None and long(content_length) == resume_len:
+				# Because the file had already been fully downloaded
 				self.report_file_already_downloaded(filename)
 				return True
 			else:
+				# Because the server didn't let us
 				self.report_unable_to_resume()
 				open_mode = 'wb'