diff options
author | Sergey M․ <[email protected]> | 2017-09-05 23:31:34 +0700 |
---|---|---|
committer | Sergey M․ <[email protected]> | 2017-09-05 23:31:34 +0700 |
commit | c5c9bf0c120d2c481124a0c3913b981cf061fb95 (patch) | |
tree | 1f485096adc5918f430529074998e32a3eb77b6b | |
parent | 880fa66f4ffa9afcfce91b5ce39f05909050da67 (diff) | |
download | youtube-dl-c5c9bf0c120d2c481124a0c3913b981cf061fb95.tar.gz youtube-dl-c5c9bf0c120d2c481124a0c3913b981cf061fb95.zip |
[YoutubeDL] Ensure dir existence for each requested format (closes #14116)
-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 |