diff options
Diffstat (limited to 'youtube_dl/__init__.py')
| -rw-r--r-- | youtube_dl/__init__.py | 23 | 
1 files changed, 15 insertions, 8 deletions
diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 0c401baa6..f15606568 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -16,7 +16,6 @@ from .options import (      parseOpts,  )  from .compat import ( -    compat_expanduser,      compat_getpass,      compat_shlex_split,      workaround_optparse_bug9161, @@ -26,6 +25,7 @@ from .utils import (      decodeOption,      DEFAULT_OUTTMPL,      DownloadError, +    expand_path,      match_filter_func,      MaxDownloadsReached,      preferredencoding, @@ -88,7 +88,7 @@ def _real_main(argv=None):                  batchfd = sys.stdin              else:                  batchfd = io.open( -                    compat_expanduser(opts.batchfile), +                    expand_path(opts.batchfile),                      'r', encoding='utf-8', errors='ignore')              batch_urls = read_batch_urls(batchfd)              if opts.verbose: @@ -196,7 +196,7 @@ 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', 'mp3', 'm4a', 'opus', 'vorbis', 'wav']: +        if opts.audioformat not in ['best', 'aac', 'flac', 'mp3', 'm4a', 'opus', 'vorbis', 'wav']:              parser.error('invalid audio format specified')      if opts.audioquality:          opts.audioquality = opts.audioquality.strip('k').strip('K') @@ -238,18 +238,15 @@ def _real_main(argv=None):      any_getting = opts.geturl or opts.gettitle or opts.getid or opts.getthumbnail or opts.getdescription or opts.getfilename or opts.getformat or opts.getduration or opts.dumpjson or opts.dump_single_json      any_printing = opts.print_json -    download_archive_fn = compat_expanduser(opts.download_archive) if opts.download_archive is not None else opts.download_archive +    download_archive_fn = expand_path(opts.download_archive) if opts.download_archive is not None else opts.download_archive      # PostProcessors      postprocessors = [] -    # Add the metadata pp first, the other pps will copy it      if opts.metafromtitle:          postprocessors.append({              'key': 'MetadataFromTitle',              'titleformat': opts.metafromtitle          }) -    if opts.addmetadata: -        postprocessors.append({'key': 'FFmpegMetadata'})      if opts.extractaudio:          postprocessors.append({              'key': 'FFmpegExtractAudio', @@ -262,6 +259,16 @@ def _real_main(argv=None):              'key': 'FFmpegVideoConvertor',              'preferedformat': opts.recodevideo,          }) +    # FFmpegMetadataPP should be run after FFmpegVideoConvertorPP and +    # FFmpegExtractAudioPP as containers before conversion may not support +    # metadata (3gp, webm, etc.) +    # And this post-processor should be placed before other metadata +    # manipulating post-processors (FFmpegEmbedSubtitle) to prevent loss of +    # extra metadata. By default ffmpeg preserves metadata applicable for both +    # source and target containers. From this point the container won't change, +    # so metadata can be added here. +    if opts.addmetadata: +        postprocessors.append({'key': 'FFmpegMetadata'})      if opts.convertsubtitles:          postprocessors.append({              'key': 'FFmpegSubtitlesConvertor', @@ -442,7 +449,7 @@ def _real_main(argv=None):          try:              if opts.load_info_filename is not None: -                retcode = ydl.download_with_info_file(compat_expanduser(opts.load_info_filename)) +                retcode = ydl.download_with_info_file(expand_path(opts.load_info_filename))              else:                  retcode = ydl.download(all_urls)          except MaxDownloadsReached:  | 
