[core] Fix PR #32830 for fixed extensionless output template
This commit is contained in:
parent
36801c62df
commit
a452f9437c
@ -139,8 +139,8 @@ def _catch_unsafe_file_extension(func):
|
|||||||
except _UnsafeExtensionError as error:
|
except _UnsafeExtensionError as error:
|
||||||
self.report_error(
|
self.report_error(
|
||||||
'{0} found; to avoid damaging your system, this value is disallowed.'
|
'{0} found; to avoid damaging your system, this value is disallowed.'
|
||||||
' If you believe this is an error{1}').format(
|
' If you believe this is an error{1}'.format(
|
||||||
error.message, bug_reports_message(','))
|
error_to_compat_str(error), bug_reports_message(',')))
|
||||||
|
|
||||||
return wrapper
|
return wrapper
|
||||||
|
|
||||||
@ -2114,18 +2114,26 @@ class YoutubeDL(object):
|
|||||||
# TODO: Check acodec/vcodec
|
# TODO: Check acodec/vcodec
|
||||||
return False
|
return False
|
||||||
|
|
||||||
filename_real_ext = os.path.splitext(filename)[1][1:]
|
exts = [info_dict['ext']]
|
||||||
filename_wo_ext = (
|
|
||||||
os.path.splitext(filename)[0]
|
|
||||||
if filename_real_ext == info_dict['ext']
|
|
||||||
else filename)
|
|
||||||
requested_formats = info_dict['requested_formats']
|
requested_formats = info_dict['requested_formats']
|
||||||
if self.params.get('merge_output_format') is None and not compatible_formats(requested_formats):
|
if self.params.get('merge_output_format') is None and not compatible_formats(requested_formats):
|
||||||
info_dict['ext'] = 'mkv'
|
info_dict['ext'] = 'mkv'
|
||||||
self.report_warning(
|
self.report_warning(
|
||||||
'Requested formats are incompatible for merge and will be merged into mkv.')
|
'Requested formats are incompatible for merge and will be merged into mkv.')
|
||||||
|
exts.append(info_dict['ext'])
|
||||||
|
|
||||||
# Ensure filename always has a correct extension for successful merge
|
# Ensure filename always has a correct extension for successful merge
|
||||||
filename = '%s.%s' % (filename_wo_ext, info_dict['ext'])
|
def correct_ext(filename, ext=exts[1]):
|
||||||
|
if filename == '-':
|
||||||
|
return filename
|
||||||
|
f_name, f_real_ext = os.path.splitext(filename)
|
||||||
|
f_real_ext = f_real_ext[1:]
|
||||||
|
filename_wo_ext = f_name if f_real_ext in exts else filename
|
||||||
|
if ext is None:
|
||||||
|
ext = f_real_ext or None
|
||||||
|
return join_nonempty(filename_wo_ext, ext, delim='.')
|
||||||
|
|
||||||
|
filename = correct_ext(filename)
|
||||||
if os.path.exists(encodeFilename(filename)):
|
if os.path.exists(encodeFilename(filename)):
|
||||||
self.to_screen(
|
self.to_screen(
|
||||||
'[download] %s has already been downloaded and '
|
'[download] %s has already been downloaded and '
|
||||||
@ -2135,8 +2143,9 @@ class YoutubeDL(object):
|
|||||||
new_info = dict(info_dict)
|
new_info = dict(info_dict)
|
||||||
new_info.update(f)
|
new_info.update(f)
|
||||||
fname = prepend_extension(
|
fname = prepend_extension(
|
||||||
self.prepare_filename(new_info),
|
correct_ext(
|
||||||
'f%s' % f['format_id'], new_info['ext'])
|
self.prepare_filename(new_info), new_info['ext']),
|
||||||
|
'f%s' % (f['format_id'],), new_info['ext'])
|
||||||
if not ensure_dir_exists(fname):
|
if not ensure_dir_exists(fname):
|
||||||
return
|
return
|
||||||
downloaded.append(fname)
|
downloaded.append(fname)
|
||||||
|
Loading…
Reference in New Issue
Block a user