adding the preferredinfo attribute to override metadata

This commit is contained in:
Katie Pratt 2019-08-21 21:25:17 -04:00
parent 393cc31d5e
commit ab4ee78529

View File

@ -431,9 +431,23 @@ class FFmpegEmbedSubtitlePP(FFmpegPostProcessor):
class FFmpegMetadataPP(FFmpegPostProcessor): class FFmpegMetadataPP(FFmpegPostProcessor):
def __init__(self, downloader=None, preferredinfo=None):
super(FFmpegMetadataPP, self).__init__(downloader)
self._preferredinfo = preferredinfo if isinstance(preferredinfo, dict) else None
def run(self, info): def run(self, info):
metadata = {} metadata = {}
def add_info(meta_list, info_list, metadata, info_obj):
if info_obj is not None:
for info_f in info_list:
if info_obj.get(info_f) is not None:
for meta_f in meta_list:
metadata[meta_f] = info_obj[info_f]
return True
return False
def add(meta_list, info_list=None): def add(meta_list, info_list=None):
if not info_list: if not info_list:
info_list = meta_list info_list = meta_list
@ -441,11 +455,8 @@ class FFmpegMetadataPP(FFmpegPostProcessor):
meta_list = (meta_list,) meta_list = (meta_list,)
if not isinstance(info_list, (list, tuple)): if not isinstance(info_list, (list, tuple)):
info_list = (info_list,) info_list = (info_list,)
for info_f in info_list: if not add_info(meta_list, info_list, metadata, self._preferredinfo):
if info.get(info_f) is not None: add_info(meta_list, info_list, metadata, info)
for meta_f in meta_list:
metadata[meta_f] = info[info_f]
break
add('title', ('track', 'title')) add('title', ('track', 'title'))
add('date', 'upload_date') add('date', 'upload_date')