Skip to content

Commit

Permalink
[core] Fix PR #32830 for fixed extensionless output template
Browse files Browse the repository at this point in the history
  • Loading branch information
dirkf committed Jul 7, 2024
1 parent 36801c6 commit a452f94
Showing 1 changed file with 19 additions and 10 deletions.
29 changes: 19 additions & 10 deletions youtube_dl/YoutubeDL.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,8 @@ def wrapper(self, *args, **kwargs):
except _UnsafeExtensionError as error:
self.report_error(
'{0} found; to avoid damaging your system, this value is disallowed.'
' If you believe this is an error{1}').format(
error.message, bug_reports_message(','))
' If you believe this is an error{1}'.format(
error_to_compat_str(error), bug_reports_message(',')))

return wrapper

Expand Down Expand Up @@ -2114,18 +2114,26 @@ def compatible_formats(formats):
# TODO: Check acodec/vcodec
return False

filename_real_ext = os.path.splitext(filename)[1][1:]
filename_wo_ext = (
os.path.splitext(filename)[0]
if filename_real_ext == info_dict['ext']
else filename)
exts = [info_dict['ext']]
requested_formats = info_dict['requested_formats']
if self.params.get('merge_output_format') is None and not compatible_formats(requested_formats):
info_dict['ext'] = 'mkv'
self.report_warning(
'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
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)):
self.to_screen(
'[download] %s has already been downloaded and '
Expand All @@ -2135,8 +2143,9 @@ def compatible_formats(formats):
new_info = dict(info_dict)
new_info.update(f)
fname = prepend_extension(
self.prepare_filename(new_info),
'f%s' % f['format_id'], new_info['ext'])
correct_ext(
self.prepare_filename(new_info), new_info['ext']),
'f%s' % (f['format_id'],), new_info['ext'])
if not ensure_dir_exists(fname):
return
downloaded.append(fname)
Expand Down

0 comments on commit a452f94

Please sign in to comment.