sanitize_path,
std_headers,
subtitles_filename,
- takewhile_inclusive,
UnavailableVideoError,
url_basename,
version_tuple,
(or video) as a single JSON line.
simulate: Do not download the video files.
format: Video format code. See options.py for more information.
- format_limit: Highest quality format to try.
outtmpl: Template for output names.
restrictfilenames: Do not allow "&" and spaces in file names
ignoreerrors: Do not stop on download errors.
return None
if format_spec == 'best' or format_spec is None:
- return available_formats[-1]
+ audiovideo_formats = [
+ f for f in available_formats
+ if f.get('vcodec') != 'none' and f.get('acodec') != 'none']
+ if audiovideo_formats:
+ return audiovideo_formats[-1]
+ # for audio only urls, 'best' selects the best audio format
+ elif all(f.get('acodec') != 'none' for f in available_formats):
+ return available_formats[-1]
elif format_spec == 'worst':
audiovideo_formats = [
f for f in available_formats
full_format_info.update(format)
format['http_headers'] = self._calc_headers(full_format_info)
- format_limit = self.params.get('format_limit', None)
- if format_limit:
- formats = list(takewhile_inclusive(
- lambda f: f['format_id'] != format_limit, formats
- ))
-
# TODO Central sorting goes here
if formats[0] is not info_dict:
requested_formats = info_dict['requested_formats']
if self.params.get('merge_output_format') is None and not compatible_formats(requested_formats):
filename = os.path.splitext(filename)[0] + '.mkv'
- self.report_warning('You have requested formats uncompatible for merge. '
+ self.report_warning('You have requested formats incompatible for merge. '
'The formats will be merged into mkv')
if os.path.exists(encodeFilename(filename)):
self.to_screen(
pps_chain.extend(ie_info['__postprocessors'])
pps_chain.extend(self._pps)
for pp in pps_chain:
- old_filename = info['filepath']
try:
files_to_delete, info = pp.run(info)
except PostProcessingError as e: