From 36195c4461701ffe4245b126a222b784c7abd1ea Mon Sep 17 00:00:00 2001 From: MMM Date: Tue, 7 Jun 2022 14:44:08 +0200 Subject: [PATCH] [dash] Show fragment count with `--live-from-start` (#3493) Authored by: flashdagger --- yt_dlp/downloader/dash.py | 1 + yt_dlp/downloader/fragment.py | 4 ++++ yt_dlp/extractor/youtube.py | 1 + 3 files changed, 6 insertions(+) diff --git a/yt_dlp/downloader/dash.py b/yt_dlp/downloader/dash.py index d0a0b2893..a6da26f09 100644 --- a/yt_dlp/downloader/dash.py +++ b/yt_dlp/downloader/dash.py @@ -73,6 +73,7 @@ class DashSegmentsFD(FragmentFD): yield { 'frag_index': frag_index, + 'fragment_count': fragment.get('fragment_count'), 'index': i, 'url': fragment_url, } diff --git a/yt_dlp/downloader/fragment.py b/yt_dlp/downloader/fragment.py index d94cb4956..79161b809 100644 --- a/yt_dlp/downloader/fragment.py +++ b/yt_dlp/downloader/fragment.py @@ -242,6 +242,9 @@ class FragmentFD(FileDownloader): if s['status'] not in ('downloading', 'finished'): return + if not total_frags and ctx.get('fragment_count'): + state['fragment_count'] = ctx['fragment_count'] + if ctx_id is not None and s.get('ctx_id') != ctx_id: return @@ -450,6 +453,7 @@ class FragmentFD(FileDownloader): fatal, count = is_fatal(fragment.get('index') or (frag_index - 1)), 0 while count <= fragment_retries: try: + ctx['fragment_count'] = fragment.get('fragment_count') if self._download_fragment(ctx, fragment['url'], info_dict, headers): break return diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py index 113b9aa07..d44f16bc0 100644 --- a/yt_dlp/extractor/youtube.py +++ b/yt_dlp/extractor/youtube.py @@ -2407,6 +2407,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor): last_segment_url = urljoin(fragment_base_url, 'sq/%d' % idx) yield { 'url': last_segment_url, + 'fragment_count': last_seq, } if known_idx == last_seq: no_fragment_score += 5