From 26164f424282632f2b1e6d714faa48d0be04aec0 Mon Sep 17 00:00:00 2001 From: "Ricardo Constantino (:RiCON)" Date: Sun, 4 Sep 2016 23:01:52 +0100 Subject: [PATCH] Export segment durations to json This is copypasted from below and I'd have no problem with it being reworked. The segment durations could also be useful for something like mpv to support segmented dash without having to parse the mpd. --- youtube_dl/extractor/common.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index 6edd5a769..9f12d34b1 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -1549,6 +1549,16 @@ class InfoExtractor(object): initialization = segment_list.find(_add_ns('Initialization')) if initialization is not None: ms_info['initialization_url'] = initialization.attrib['sourceURL'] + segment_timeline = segment_list.find(_add_ns('SegmentTimeline')) + if segment_timeline is not None: + s_e = segment_timeline.findall(_add_ns('S')) + if s_e: + ms_info['total_number'] = 0 + ms_info['segment_durations'] = [] + for s in s_e: + r = int(s.get('r', 0)) + ms_info['total_number'] += 1 + r + ms_info['segment_durations'].append(int(s.attrib['d'])) else: segment_template = element.find(_add_ns('SegmentTemplate')) if segment_template is not None: @@ -1687,6 +1697,7 @@ class InfoExtractor(object): if 'segment_urls' in representation_ms_info: f.update({ 'segment_urls': representation_ms_info['segment_urls'], + 'segment_durations': representation_ms_info['segment_durations'], 'protocol': 'http_dash_segments', }) if 'initialization_url' in representation_ms_info: