[common] add method to convert entries with formats to formats with parts

This commit is contained in:
Mark Lee 2014-03-26 10:47:50 -07:00
parent eb2396d87a
commit 7ee7436c6e
2 changed files with 25 additions and 0 deletions

View File

@ -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,

View File

@ -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):
"""