adding dynamic auto-generating doc based on metadata elements
This commit is contained in:
parent
70f9ef6a5e
commit
809927da64
@ -13,6 +13,9 @@ from .compat import (
|
|||||||
compat_kwargs,
|
compat_kwargs,
|
||||||
compat_shlex_split,
|
compat_shlex_split,
|
||||||
)
|
)
|
||||||
|
from .postprocessor.ffmpeg import (
|
||||||
|
get_metadata_override_elements
|
||||||
|
)
|
||||||
from .utils import (
|
from .utils import (
|
||||||
preferredencoding,
|
preferredencoding,
|
||||||
write_string,
|
write_string,
|
||||||
@ -821,7 +824,14 @@ def parseOpts(overrideArguments=None):
|
|||||||
postproc.add_option(
|
postproc.add_option(
|
||||||
'--preferred-metadata-to-embed',
|
'--preferred-metadata-to-embed',
|
||||||
dest='preferredmetadatatoembed', metavar='JSON', type=str,
|
dest='preferredmetadatatoembed', metavar='JSON', type=str,
|
||||||
help='Override metadata on the outputted file')
|
help='Override metadata on the outputted file. Pass in a JSON string '
|
||||||
|
'with one element from the info_list in order to override all '
|
||||||
|
'elements from the meta_list. Note, if multiple values are '
|
||||||
|
'inputted from the info_list, only one will be used. Fields '
|
||||||
|
'curently supported for metadata override are '
|
||||||
|
'((info_list) => (meta_list)):\n {}'.format(',\n'.join(
|
||||||
|
['({}) => ({})'.format(*[', '.join(a) for a in reversed(x)]) for x in get_metadata_override_elements()]
|
||||||
|
)))
|
||||||
postproc.add_option(
|
postproc.add_option(
|
||||||
'--preferred-metadata-json'
|
'--preferred-metadata-json'
|
||||||
)
|
)
|
||||||
|
@ -47,6 +47,35 @@ ACODECS = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
METADATA_TO_INFO_LIST_ELEMENTS = [
|
||||||
|
['title', ('track','title')]
|
||||||
|
, ['date', 'upload_date']
|
||||||
|
, [('description','comment'), 'description']
|
||||||
|
, ['purl','webpage_url']
|
||||||
|
, ['track','track_number']
|
||||||
|
, ['artist', ('artist', 'creator', 'uploader', 'uploader_id')]
|
||||||
|
, ['genre']
|
||||||
|
, ['album']
|
||||||
|
, ['album_artists']
|
||||||
|
, ['disc', 'disc_number']
|
||||||
|
]
|
||||||
|
|
||||||
|
def get_meta_and_info_lists(meta_to_info_list):
|
||||||
|
convert_to_tuple = lambda x: tuple(x) if isinstance(x, (list, tuple)) else tuple([x])
|
||||||
|
if any(isinstance(x, (list, tuple)) for x in meta_to_info_list):
|
||||||
|
meta_list = convert_to_tuple(meta_to_info_list[0])
|
||||||
|
info_list = convert_to_tuple(meta_to_info_list[1])
|
||||||
|
else:
|
||||||
|
meta_list = tuple((meta_to_info_list))
|
||||||
|
info_list = meta_list
|
||||||
|
return (meta_list, info_list)
|
||||||
|
|
||||||
|
def get_metadata_override_elements():
|
||||||
|
elements = []
|
||||||
|
for metadata_to_info_lists in METADATA_TO_INFO_LIST_ELEMENTS:
|
||||||
|
elements.append(get_meta_and_info_lists(metadata_to_info_lists))
|
||||||
|
return elements
|
||||||
|
|
||||||
class FFmpegPostProcessorError(PostProcessingError):
|
class FFmpegPostProcessorError(PostProcessingError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@ -451,27 +480,13 @@ class FFmpegMetadataPP(FFmpegPostProcessor):
|
|||||||
return info_f
|
return info_f
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def add(meta_list, info_list=None):
|
def add(meta_list, info_list):
|
||||||
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,)
|
|
||||||
preferred_key = add_info(meta_list, info_list, metadata, self._preferredmetadatatoembed)
|
preferred_key = add_info(meta_list, info_list, metadata, self._preferredmetadatatoembed)
|
||||||
if preferred_key is None:
|
if preferred_key is None:
|
||||||
add_info(meta_list, info_list, metadata, info)
|
add_info(meta_list, info_list, metadata, info)
|
||||||
|
|
||||||
add('title', ('track', 'title'))
|
for meta_info_lists in METADATA_TO_INFO_LIST_ELEMENTS:
|
||||||
add('date', 'upload_date')
|
add(*get_meta_and_info_lists(meta_info_lists))
|
||||||
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:
|
if not metadata:
|
||||||
self._downloader.to_screen('[ffmpeg] There isn\'t any metadata to add')
|
self._downloader.to_screen('[ffmpeg] There isn\'t any metadata to add')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user