aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2022-02-17 19:06:22 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2022-02-17 19:07:23 +0530
commitffa89477ea588f610468f582f2d092bf992ad896 (patch)
treeac9e9f9495ae81bf64775ab9843ba1275323f4c1
parentdb74de8c54d83a4a749b96d360c4f61ae5195632 (diff)
downloadhypervideo-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.py8
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