[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,
|
'playliststart': opts.playliststart,
|
||||||
'playlistend': opts.playlistend,
|
'playlistend': opts.playlistend,
|
||||||
'noplaylist': opts.noplaylist,
|
'noplaylist': opts.noplaylist,
|
||||||
|
'joinparts': opts.joinparts,
|
||||||
'logtostderr': opts.outtmpl == '-',
|
'logtostderr': opts.outtmpl == '-',
|
||||||
'consoletitle': opts.consoletitle,
|
'consoletitle': opts.consoletitle,
|
||||||
'nopart': opts.nopart,
|
'nopart': opts.nopart,
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import base64
|
import base64
|
||||||
|
from collections import defaultdict
|
||||||
import hashlib
|
import hashlib
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
@ -534,6 +535,29 @@ class InfoExtractor(object):
|
|||||||
)
|
)
|
||||||
formats.sort(key=_formats_key)
|
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):
|
class SearchInfoExtractor(InfoExtractor):
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user