Skip to content

Commit a52c80b

Browse files
committed
stream.dash: find ancestor SegmentTimeline nodes
- Fix `SegmentTimeline` in `SegmentTemplate` and find ancestor timelines - Add `SegmentTimeline` to `SegmentList` (currently unused)
1 parent d9b66ed commit a52c80b

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

src/streamlink/stream/dash_manifest.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -555,7 +555,12 @@ def __init__(self, *args, period: "Period", **kwargs) -> None:
555555

556556
self.duration_seconds = self.duration / self.timescale if self.duration and self.timescale else None
557557

558+
# children
558559
self.initialization = self.only_child(Initialization)
560+
self.segmentTimeline = (
561+
self.only_child(SegmentTimeline)
562+
or (self.defaultSegmentList.segmentTimeline if self.defaultSegmentList else None)
563+
)
559564
self.segmentURLs = self.children(SegmentURL)
560565

561566
def segments(self) -> Iterator[Segment]:
@@ -696,7 +701,10 @@ def __init__(self, *args, period: "Period", **kwargs) -> None:
696701
self.duration_seconds = self.duration / self.timescale if self.duration and self.timescale else None
697702

698703
# children
699-
self.segmentTimeline = self.only_child(SegmentTimeline)
704+
self.segmentTimeline = (
705+
self.only_child(SegmentTimeline)
706+
or (self.defaultSegmentTemplate.segmentTimeline if self.defaultSegmentTemplate else None)
707+
)
700708

701709
def segments(self, ident: TTimelineIdent, base_url: str, **kwargs) -> Iterator[Segment]:
702710
if kwargs.pop("init", True): # pragma: no branch

0 commit comments

Comments
 (0)