diff options
| author | Sergey M․ <dstftw@gmail.com> | 2016-05-01 10:56:54 +0600 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2016-05-01 10:56:54 +0600 | 
| commit | 4bd143a3a06264fcda5fa254709d404ccab6601c (patch) | |
| tree | bd31ad8dd578b8fc15125664e39c82e622b3ddc2 | |
| parent | 6f27bf1c7425d97eb07aee9f7e15d0066b0a74bf (diff) | |
[postprocessor/ffmpeg] Simplify metadata preparation and add track related metafields (Closes #9357)
| -rw-r--r-- | youtube_dl/postprocessor/ffmpeg.py | 41 | 
1 files changed, 24 insertions, 17 deletions
| diff --git a/youtube_dl/postprocessor/ffmpeg.py b/youtube_dl/postprocessor/ffmpeg.py index 1793a878c..fa99b0c2a 100644 --- a/youtube_dl/postprocessor/ffmpeg.py +++ b/youtube_dl/postprocessor/ffmpeg.py @@ -389,23 +389,30 @@ class FFmpegEmbedSubtitlePP(FFmpegPostProcessor):  class FFmpegMetadataPP(FFmpegPostProcessor):      def run(self, info):          metadata = {} -        if info.get('title') is not None: -            metadata['title'] = info['title'] -        if info.get('upload_date') is not None: -            metadata['date'] = info['upload_date'] -        if info.get('artist') is not None: -            metadata['artist'] = info['artist'] -        elif info.get('uploader') is not None: -            metadata['artist'] = info['uploader'] -        elif info.get('uploader_id') is not None: -            metadata['artist'] = info['uploader_id'] -        if info.get('description') is not None: -            metadata['description'] = info['description'] -            metadata['comment'] = info['description'] -        if info.get('webpage_url') is not None: -            metadata['purl'] = info['webpage_url'] -        if info.get('album') is not None: -            metadata['album'] = info['album'] + +        def add(meta_list, info_list=None): +            if not info_list: +                info_list = meta_list +            if not isinstance(meta_list, (list, tuple)): +                meta_list = (meta_list,) +            if not isinstance(info_list, (list, tuple)): +                info_list = (info_list,) +            for info_f in info_list: +                if info.get(info_f) is not None: +                    for meta_f in meta_list: +                        metadata[meta_f] = info[info_f] +                    break + +        add('title', ('track', 'title')) +        add('date', 'upload_date') +        add(('description', 'comment'), 'description') +        add('purl', 'webpage_url') +        add('track', 'track_number') +        add('artist', ('artist', 'creator', 'uploader', 'uploader_id')) +        add('genre') +        add('album') +        add('album_artist') +        add('disc', 'disc_number')          if not metadata:              self._downloader.to_screen('[ffmpeg] There isn\'t any metadata to add') | 
