Don't download all the video parts if the final video exists

This commit is contained in:
Jaime Marquínez Ferrándiz 2013-07-05 11:36:57 +02:00
parent fbbc7df126
commit 23183a07b3

View File

@ -781,26 +781,31 @@ class YoutubeDL(object):
info_dict['url'] = parts[0] info_dict['url'] = parts[0]
success = self.fd._do_download(filename, info_dict) success = self.fd._do_download(filename, info_dict)
else: else:
parts_success = [] # We check if the final video has already been downloaded
parts_files = [] if self.params.get('continuedl', False) and os.path.isfile(encodeFilename(filename)):
self.to_screen(u'[info] Downloading %s parts' % len(parts)) self.fd.report_file_already_downloaded(filename)
for (i, part_url) in enumerate(parts): success = True
part_info = dict(info_dict) else:
part_info['url'] = part_url parts_success = []
part_filename = u'%s.%s' % (filename, i) parts_files = []
parts_files.append(part_filename) self.to_screen(u'[info] Downloading %s parts' % len(parts))
parts_success.append(self.fd._do_download(part_filename, part_info)) for (i, part_url) in enumerate(parts):
success = all(parts_success) part_info = dict(info_dict)
if success: part_info['url'] = part_url
video_joiner = FFmpegJoinVideos(self) part_filename = u'%s.%s' % (filename, i)
join_success = video_joiner.join(filename, parts_files) parts_files.append(part_filename)
if not join_success: parts_success.append(self.fd._do_download(part_filename, part_info))
self.report_error(u'Could not join the video parts') success = all(parts_success)
else: if success:
self.to_screen(u'[info] Removing video parts') video_joiner = FFmpegJoinVideos(self)
for part_file in parts_files: join_success = video_joiner.join(filename, parts_files)
os.remove(encodeFilename(part_file)) if not join_success:
success = join_success self.report_error(u'Could not join the video parts')
else:
self.to_screen(u'[info] Removing video parts')
for part_file in parts_files:
os.remove(encodeFilename(part_file))
success = join_success
except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err:
self.report_error(u'unable to download video data: %s' % str(err)) self.report_error(u'unable to download video data: %s' % str(err))
return return