diff options
author | pukkandan <pukkandan.ytdlp@gmail.com> | 2022-02-17 19:06:22 +0530 |
---|---|---|
committer | pukkandan <pukkandan.ytdlp@gmail.com> | 2022-02-17 19:07:23 +0530 |
commit | ffa89477ea588f610468f582f2d092bf992ad896 (patch) | |
tree | ac9e9f9495ae81bf64775ab9843ba1275323f4c1 | |
parent | db74de8c54d83a4a749b96d360c4f61ae5195632 (diff) | |
download | hypervideo-pre-ffa89477ea588f610468f582f2d092bf992ad896.tar.lz hypervideo-pre-ffa89477ea588f610468f582f2d092bf992ad896.tar.xz hypervideo-pre-ffa89477ea588f610468f582f2d092bf992ad896.zip |
[extractor] Fix for manifests without period duration
Closes #2705
Authored by: dirkf, pukkandan
-rw-r--r-- | yt_dlp/extractor/common.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/yt_dlp/extractor/common.py b/yt_dlp/extractor/common.py index 37c8be5f6..04d4c0733 100644 --- a/yt_dlp/extractor/common.py +++ b/yt_dlp/extractor/common.py @@ -75,6 +75,7 @@ from ..utils import ( str_to_int, strip_or_none, traverse_obj, + try_get, unescapeHTML, UnsupportedError, unified_strdate, @@ -2878,7 +2879,8 @@ class InfoExtractor(object): segment_duration = None if 'total_number' not in representation_ms_info and 'segment_duration' in representation_ms_info: segment_duration = float_or_none(representation_ms_info['segment_duration'], representation_ms_info['timescale']) - representation_ms_info['total_number'] = int(math.ceil(float(period_duration) / segment_duration)) + representation_ms_info['total_number'] = int(math.ceil( + float_or_none(period_duration, segment_duration, default=0))) representation_ms_info['fragments'] = [{ media_location_key: media_template % { 'Number': segment_number, @@ -2969,6 +2971,10 @@ class InfoExtractor(object): f['url'] = initialization_url f['fragments'].append({location_key(initialization_url): initialization_url}) f['fragments'].extend(representation_ms_info['fragments']) + if not period_duration: + period_duration = try_get( + representation_ms_info, + lambda r: sum(frag['duration'] for frag in r['fragments']), float) else: # Assuming direct URL to unfragmented media. f['url'] = base_url |