forked from minhngoc25a/youtube-dl
The 'format' field now defaults to '{format_id} - {width}x{height}{format_note}'
Following the YoutubeIE format. The 'format_note' gives additional info about the format, for example '3D' or 'DASH video'.
This commit is contained in:
parent
3fd39e37f2
commit
8c51aa6506
|
@ -473,17 +473,14 @@ class YoutubeDL(object):
|
||||||
|
|
||||||
# We check that all the formats have the format and format_id fields
|
# We check that all the formats have the format and format_id fields
|
||||||
for (i, format) in enumerate(formats):
|
for (i, format) in enumerate(formats):
|
||||||
if format.get('format') is None:
|
|
||||||
if format.get('height') is not None:
|
|
||||||
if format.get('width') is not None:
|
|
||||||
format_desc = u'%sx%s' % (format['width'], format['height'])
|
|
||||||
else:
|
|
||||||
format_desc = u'%sp' % format['height']
|
|
||||||
else:
|
|
||||||
format_desc = '???'
|
|
||||||
format['format'] = format_desc
|
|
||||||
if format.get('format_id') is None:
|
if format.get('format_id') is None:
|
||||||
format['format_id'] = compat_str(i)
|
format['format_id'] = compat_str(i)
|
||||||
|
if format.get('format') is None:
|
||||||
|
format['format'] = u'{id} - {res}{note}'.format(
|
||||||
|
id=format['format_id'],
|
||||||
|
res=self.format_resolution(format),
|
||||||
|
note = u' ({})'.format(format['format_note']) if format.get('format_note') is not None else '',
|
||||||
|
)
|
||||||
|
|
||||||
if self.params.get('listformats', None):
|
if self.params.get('listformats', None):
|
||||||
self.list_formats(info_dict)
|
self.list_formats(info_dict)
|
||||||
|
@ -753,16 +750,31 @@ class YoutubeDL(object):
|
||||||
with locked_file(fn, 'a', encoding='utf-8') as archive_file:
|
with locked_file(fn, 'a', encoding='utf-8') as archive_file:
|
||||||
archive_file.write(vid_id + u'\n')
|
archive_file.write(vid_id + u'\n')
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def format_resolution(format):
|
||||||
|
if format.get('height') is not None:
|
||||||
|
if format.get('width') is not None:
|
||||||
|
res = u'%sx%s' % (format['width'], format['height'])
|
||||||
|
else:
|
||||||
|
res = u'%sp' % format['height']
|
||||||
|
else:
|
||||||
|
res = '???'
|
||||||
|
return res
|
||||||
|
|
||||||
def list_formats(self, info_dict):
|
def list_formats(self, info_dict):
|
||||||
formats_s = []
|
formats_s = []
|
||||||
for format in info_dict.get('formats', [info_dict]):
|
for format in info_dict.get('formats', [info_dict]):
|
||||||
formats_s.append("%s\t:\t%s\t[%s]" % (format['format_id'],
|
formats_s.append(u'%-15s: %-5s %-15s[%s]' % (
|
||||||
format['ext'],
|
format['format_id'],
|
||||||
format.get('format', '???'),
|
format['ext'],
|
||||||
)
|
format.get('format_note') or '-',
|
||||||
)
|
self.format_resolution(format),
|
||||||
|
)
|
||||||
|
)
|
||||||
if len(formats_s) != 1:
|
if len(formats_s) != 1:
|
||||||
formats_s[0] += ' (worst)'
|
formats_s[0] += ' (worst)'
|
||||||
formats_s[-1] += ' (best)'
|
formats_s[-1] += ' (best)'
|
||||||
formats_s = "\n".join(formats_s)
|
formats_s = "\n".join(formats_s)
|
||||||
self.to_screen(u"[info] Available formats for %s:\nformat code\textension\n%s" % (info_dict['id'], formats_s))
|
self.to_screen(u'[info] Available formats for %s:\n'
|
||||||
|
u'format code extension note resolution\n%s' % (
|
||||||
|
info_dict['id'], formats_s))
|
||||||
|
|
|
@ -61,9 +61,12 @@ class InfoExtractor(object):
|
||||||
* ext Will be calculated from url if missing
|
* ext Will be calculated from url if missing
|
||||||
* format A human-readable description of the format
|
* format A human-readable description of the format
|
||||||
("mp4 container with h264/opus").
|
("mp4 container with h264/opus").
|
||||||
Calculated from width and height if missing.
|
Calculated from the format_id, width, height
|
||||||
|
and format_note fields if missing.
|
||||||
* format_id A short description of the format
|
* format_id A short description of the format
|
||||||
("mp4_h264_opus" or "19")
|
("mp4_h264_opus" or "19")
|
||||||
|
* format_note Additional info about the format
|
||||||
|
("3D" or "DASH video")
|
||||||
* width Width of the video, if known
|
* width Width of the video, if known
|
||||||
* height Height of the video, if known
|
* height Height of the video, if known
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue