diff options
Diffstat (limited to 'yt_dlp/__init__.py')
-rw-r--r-- | yt_dlp/__init__.py | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/yt_dlp/__init__.py b/yt_dlp/__init__.py index d014d1e01..5b2230ef1 100644 --- a/yt_dlp/__init__.py +++ b/yt_dlp/__init__.py @@ -31,7 +31,6 @@ from .utils import ( preferredencoding, read_batch_urls, RejectedVideoReached, - REMUX_EXTENSIONS, render_table, SameFileError, setproctitle, @@ -45,6 +44,13 @@ from .downloader import ( from .extractor import gen_extractors, list_extractors from .extractor.common import InfoExtractor from .extractor.adobepass import MSO_INFO +from .postprocessor.ffmpeg import ( + FFmpegExtractAudioPP, + FFmpegSubtitlesConvertorPP, + FFmpegThumbnailsConvertorPP, + FFmpegVideoConvertorPP, + FFmpegVideoRemuxerPP, +) from .postprocessor.metadatafromfield import MetadataFromFieldPP from .YoutubeDL import YoutubeDL @@ -209,25 +215,25 @@ def _real_main(argv=None): if opts.playlistend not in (-1, None) and opts.playlistend < opts.playliststart: raise ValueError('Playlist end must be greater than playlist start') if opts.extractaudio: - if opts.audioformat not in ['best', 'aac', 'flac', 'mp3', 'm4a', 'opus', 'vorbis', 'wav']: + if opts.audioformat not in ['best'] + list(FFmpegExtractAudioPP.SUPPORTED_EXTS): parser.error('invalid audio format specified') if opts.audioquality: opts.audioquality = opts.audioquality.strip('k').strip('K') if not opts.audioquality.isdigit(): parser.error('invalid audio quality specified') if opts.recodevideo is not None: - if opts.recodevideo not in REMUX_EXTENSIONS: - parser.error('invalid video recode format specified') + opts.recodevideo = opts.recodevideo.replace(' ', '') + if not re.match(FFmpegVideoConvertorPP.FORMAT_RE, opts.recodevideo): + parser.error('invalid video remux format specified') if opts.remuxvideo is not None: opts.remuxvideo = opts.remuxvideo.replace(' ', '') - remux_regex = r'{0}(?:/{0})*$'.format(r'(?:\w+>)?(?:%s)' % '|'.join(REMUX_EXTENSIONS)) - if not re.match(remux_regex, opts.remuxvideo): + if not re.match(FFmpegVideoRemuxerPP.FORMAT_RE, opts.remuxvideo): parser.error('invalid video remux format specified') if opts.convertsubtitles is not None: - if opts.convertsubtitles not in ('srt', 'vtt', 'ass', 'lrc'): + if opts.convertsubtitles not in FFmpegSubtitlesConvertorPP.SUPPORTED_EXTS: parser.error('invalid subtitle format specified') if opts.convertthumbnails is not None: - if opts.convertthumbnails not in ('jpg', 'png'): + if opts.convertthumbnails not in FFmpegThumbnailsConvertorPP.SUPPORTED_EXTS: parser.error('invalid thumbnail format specified') if opts.date is not None: @@ -480,10 +486,10 @@ def _real_main(argv=None): opts.postprocessor_args['default'] = opts.postprocessor_args['default-compat'] final_ext = ( - opts.recodevideo - or (opts.remuxvideo in REMUX_EXTENSIONS) and opts.remuxvideo - or (opts.extractaudio and opts.audioformat != 'best') and opts.audioformat - or None) + opts.recodevideo if opts.recodevideo in FFmpegVideoConvertorPP.SUPPORTED_EXTS + else opts.remuxvideo if opts.remuxvideo in FFmpegVideoRemuxerPP.SUPPORTED_EXTS + else opts.audioformat if (opts.extractaudio and opts.audioformat != 'best') + else None) match_filter = ( None if opts.match_filter is None |