diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index af9be750c..06a6625a8 100644 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -781,26 +781,31 @@ class YoutubeDL(object): info_dict['url'] = parts[0] success = self.fd._do_download(filename, info_dict) else: - parts_success = [] - parts_files = [] - self.to_screen(u'[info] Downloading %s parts' % len(parts)) - for (i, part_url) in enumerate(parts): - part_info = dict(info_dict) - part_info['url'] = part_url - part_filename = u'%s.%s' % (filename, i) - parts_files.append(part_filename) - parts_success.append(self.fd._do_download(part_filename, part_info)) - success = all(parts_success) - if success: - video_joiner = FFmpegJoinVideos(self) - join_success = video_joiner.join(filename, parts_files) - if not 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 + # We check if the final video has already been downloaded + if self.params.get('continuedl', False) and os.path.isfile(encodeFilename(filename)): + self.fd.report_file_already_downloaded(filename) + success = True + else: + parts_success = [] + parts_files = [] + self.to_screen(u'[info] Downloading %s parts' % len(parts)) + for (i, part_url) in enumerate(parts): + part_info = dict(info_dict) + part_info['url'] = part_url + part_filename = u'%s.%s' % (filename, i) + parts_files.append(part_filename) + parts_success.append(self.fd._do_download(part_filename, part_info)) + success = all(parts_success) + if success: + video_joiner = FFmpegJoinVideos(self) + join_success = video_joiner.join(filename, parts_files) + if not 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: self.report_error(u'unable to download video data: %s' % str(err)) return