]> jfr.im git - yt-dlp.git/commitdiff
[extractor/youtube] Construct fragment list lazily
authorpukkandan <redacted>
Sat, 11 Mar 2023 17:16:47 +0000 (22:46 +0530)
committerpukkandan <redacted>
Sat, 11 Mar 2023 17:16:47 +0000 (22:46 +0530)
Building fragment list for all formats take significant time for large videos

yt_dlp/extractor/youtube.py

index 48f822e445fac6492f173b09081d83a7ff966165..4165d795cbf7cad12b281dd08984d8b237173e64 100644 (file)
@@ -3777,11 +3777,11 @@ def _extract_formats_and_subtitles(self, streaming_data, video_id, player_url, l
                     **dct,
                     'format_id': f'{dct["format_id"]}-dashy' if all_formats else dct['format_id'],
                     'protocol': 'http_dash_segments',
-                    'fragments': [{
+                    'fragments': LazyList({
                         'url': update_url_query(dct['url'], {
                             'range': f'{range_start}-{min(range_start + CHUNK_SIZE - 1, dct["filesize"])}'
                         })
-                    } for range_start in range(0, dct['filesize'], CHUNK_SIZE)]
+                    } for range_start in range(0, dct['filesize'], CHUNK_SIZE))
                 }
                 if not all_formats:
                     continue