diff options
Diffstat (limited to 'yt_dlp/downloader/fragment.py')
-rw-r--r-- | yt_dlp/downloader/fragment.py | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/yt_dlp/downloader/fragment.py b/yt_dlp/downloader/fragment.py index c8d4d33aa..c499e5e2b 100644 --- a/yt_dlp/downloader/fragment.py +++ b/yt_dlp/downloader/fragment.py @@ -328,8 +328,7 @@ class FragmentFD(FileDownloader): def download_and_append_fragments(self, ctx, fragments, info_dict, pack_func=None): fragment_retries = self.params.get('fragment_retries', 0) - skip_unavailable_fragments = self.params.get('skip_unavailable_fragments', True) - test = self.params.get('test', False) + is_fatal = (lambda idx: idx == 0) if self.params.get('skip_unavailable_fragments', True) else (lambda _: True) if not pack_func: pack_func = lambda frag_content, _: frag_content @@ -341,7 +340,7 @@ class FragmentFD(FileDownloader): headers['Range'] = 'bytes=%d-%d' % (byte_range['start'], byte_range['end'] - 1) # Never skip the first fragment - fatal = (fragment.get('index') or frag_index) == 0 or not skip_unavailable_fragments + fatal = is_fatal(fragment.get('index') or (frag_index - 1)) count, frag_content = 0, None while count <= fragment_retries: try: @@ -382,14 +381,13 @@ class FragmentFD(FileDownloader): # Don't decrypt the content in tests since the data is explicitly truncated and it's not to a valid block # size (see https://github.com/ytdl-org/youtube-dl/pull/27660). Tests only care that the correct data downloaded, # not what it decrypts to. - if test: + if self.params.get('test', False): return frag_content return AES.new(decrypt_info['KEY'], AES.MODE_CBC, iv).decrypt(frag_content) def append_fragment(frag_content, frag_index, ctx): if not frag_content: - fatal = frag_index == 1 or not skip_unavailable_fragments - if not fatal: + if not is_fatal(frag_index - 1): self.report_skip_fragment(frag_index) return True else: |