diff options
| -rwxr-xr-x | youtube_dl/YoutubeDL.py | 24 | 
1 files changed, 16 insertions, 8 deletions
| diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index 5f4c93ea3..4f208f1e1 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -1710,12 +1710,17 @@ class YoutubeDL(object):          if filename is None:              return -        try: -            dn = os.path.dirname(sanitize_path(encodeFilename(filename))) -            if dn and not os.path.exists(dn): -                os.makedirs(dn) -        except (OSError, IOError) as err: -            self.report_error('unable to create directory ' + error_to_compat_str(err)) +        def ensure_dir_exists(path): +            try: +                dn = os.path.dirname(path) +                if dn and not os.path.exists(dn): +                    os.makedirs(dn) +                return True +            except (OSError, IOError) as err: +                self.report_error('unable to create directory ' + error_to_compat_str(err)) +                return False + +        if not ensure_dir_exists(sanitize_path(encodeFilename(filename))):              return          if self.params.get('writedescription', False): @@ -1853,8 +1858,11 @@ class YoutubeDL(object):                          for f in 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'], new_info['ext']) +                            fname = prepend_extension( +                                self.prepare_filename(new_info), +                                'f%s' % f['format_id'], new_info['ext']) +                            if not ensure_dir_exists(fname): +                                return                              downloaded.append(fname)                              partial_success = dl(fname, new_info)                              success = success and partial_success | 
