|
@ -1121,49 +1121,46 @@ class YoutubeDL(object): |
|
|
(info_dict['thumbnail'], compat_str(err))) |
|
|
(info_dict['thumbnail'], compat_str(err))) |
|
|
|
|
|
|
|
|
if not self.params.get('skip_download', False): |
|
|
if not self.params.get('skip_download', False): |
|
|
if self.params.get('nooverwrites', False) and os.path.exists(encodeFilename(filename)): |
|
|
try: |
|
|
success = True |
|
|
def dl(name, info): |
|
|
else: |
|
|
fd = get_suitable_downloader(info)(self, self.params) |
|
|
try: |
|
|
for ph in self._progress_hooks: |
|
|
def dl(name, info): |
|
|
fd.add_progress_hook(ph) |
|
|
fd = get_suitable_downloader(info)(self, self.params) |
|
|
if self.params.get('verbose'): |
|
|
for ph in self._progress_hooks: |
|
|
self.to_stdout('[debug] Invoking downloader on %r' % info.get('url')) |
|
|
fd.add_progress_hook(ph) |
|
|
return fd.download(name, info) |
|
|
if self.params.get('verbose'): |
|
|
if info_dict.get('requested_formats') is not None: |
|
|
self.to_stdout('[debug] Invoking downloader on %r' % info.get('url')) |
|
|
downloaded = [] |
|
|
return fd.download(name, info) |
|
|
success = True |
|
|
if info_dict.get('requested_formats') is not None: |
|
|
merger = FFmpegMergerPP(self, not self.params.get('keepvideo')) |
|
|
downloaded = [] |
|
|
if not merger._executable: |
|
|
success = True |
|
|
postprocessors = [] |
|
|
merger = FFmpegMergerPP(self, not self.params.get('keepvideo')) |
|
|
self.report_warning('You have requested multiple ' |
|
|
if not merger._executable: |
|
|
'formats but ffmpeg or avconv are not installed.' |
|
|
postprocessors = [] |
|
|
' The formats won\'t be merged') |
|
|
self.report_warning('You have requested multiple ' |
|
|
|
|
|
'formats but ffmpeg or avconv are not installed.' |
|
|
|
|
|
' The formats won\'t be merged') |
|
|
|
|
|
else: |
|
|
|
|
|
postprocessors = [merger] |
|
|
|
|
|
for f in info_dict['requested_formats']: |
|
|
|
|
|
new_info = dict(info_dict) |
|
|
|
|
|
new_info.update(f) |
|
|
|
|
|
fname = self.prepare_filename(new_info) |
|
|
|
|
|
fname = prepend_extension(fname, 'f%s' % f['format_id']) |
|
|
|
|
|
downloaded.append(fname) |
|
|
|
|
|
partial_success = dl(fname, new_info) |
|
|
|
|
|
success = success and partial_success |
|
|
|
|
|
info_dict['__postprocessors'] = postprocessors |
|
|
|
|
|
info_dict['__files_to_merge'] = downloaded |
|
|
|
|
|
else: |
|
|
else: |
|
|
# Just a single file |
|
|
postprocessors = [merger] |
|
|
success = dl(filename, info_dict) |
|
|
for f in info_dict['requested_formats']: |
|
|
except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: |
|
|
new_info = dict(info_dict) |
|
|
self.report_error('unable to download video data: %s' % str(err)) |
|
|
new_info.update(f) |
|
|
return |
|
|
fname = self.prepare_filename(new_info) |
|
|
except (OSError, IOError) as err: |
|
|
fname = prepend_extension(fname, 'f%s' % f['format_id']) |
|
|
raise UnavailableVideoError(err) |
|
|
downloaded.append(fname) |
|
|
except (ContentTooShortError, ) as err: |
|
|
partial_success = dl(fname, new_info) |
|
|
self.report_error('content too short (expected %s bytes and served %s)' % (err.expected, err.downloaded)) |
|
|
success = success and partial_success |
|
|
return |
|
|
info_dict['__postprocessors'] = postprocessors |
|
|
|
|
|
info_dict['__files_to_merge'] = downloaded |
|
|
|
|
|
else: |
|
|
|
|
|
# Just a single file |
|
|
|
|
|
success = dl(filename, info_dict) |
|
|
|
|
|
except (compat_urllib_error.URLError, compat_http_client.HTTPException, socket.error) as err: |
|
|
|
|
|
self.report_error('unable to download video data: %s' % str(err)) |
|
|
|
|
|
return |
|
|
|
|
|
except (OSError, IOError) as err: |
|
|
|
|
|
raise UnavailableVideoError(err) |
|
|
|
|
|
except (ContentTooShortError, ) as err: |
|
|
|
|
|
self.report_error('content too short (expected %s bytes and served %s)' % (err.expected, err.downloaded)) |
|
|
|
|
|
return |
|
|
|
|
|
|
|
|
if success: |
|
|
if success: |
|
|
# Fixup content |
|
|
# Fixup content |
|
|
xxxxxxxxxx