[common] add method to convert entries with formats to formats with parts
This commit is contained in:
parent
eb2396d87a
commit
7ee7436c6e
@ -745,6 +745,7 @@ def _real_main(argv=None):
|
||||
'playliststart': opts.playliststart,
|
||||
'playlistend': opts.playlistend,
|
||||
'noplaylist': opts.noplaylist,
|
||||
'joinparts': opts.joinparts,
|
||||
'logtostderr': opts.outtmpl == '-',
|
||||
'consoletitle': opts.consoletitle,
|
||||
'nopart': opts.nopart,
|
||||
|
@ -1,4 +1,5 @@
|
||||
import base64
|
||||
from collections import defaultdict
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
@ -534,6 +535,29 @@ class InfoExtractor(object):
|
||||
)
|
||||
formats.sort(key=_formats_key)
|
||||
|
||||
def _entry_formats_to_parts(self, entries):
|
||||
'''Transforms entries with formats to formats with parts. Used when joinparts is set.'''
|
||||
ekeys = None
|
||||
fmt_map = defaultdict(dict)
|
||||
fkeys = None
|
||||
for entry in entries:
|
||||
if ekeys is None:
|
||||
ekeys = set(entry.keys()) - set(['formats'])
|
||||
for fmt in entry['formats']:
|
||||
if fkeys is None:
|
||||
fkeys = set(fmt.keys()) - set(['url'])
|
||||
fid = fmt['format_id']
|
||||
if 'parts' not in fmt_map[fid]:
|
||||
for k in fkeys:
|
||||
fmt_map[fid][k] = fmt[k]
|
||||
fmt_map[fid]['parts'] = []
|
||||
part = dict([(k, entry[k]) for k in ekeys])
|
||||
part['url'] = fmt['url']
|
||||
fmt_map[fid]['parts'].append(part)
|
||||
formats = fmt_map.values()
|
||||
self._sort_formats(formats)
|
||||
return formats
|
||||
|
||||
|
||||
class SearchInfoExtractor(InfoExtractor):
|
||||
"""
|
||||
|
Loading…
x
Reference in New Issue
Block a user