diff --git a/yt_dlp/downloader/fragment.py b/yt_dlp/downloader/fragment.py index 458167216..be068c0aa 100644 --- a/yt_dlp/downloader/fragment.py +++ b/yt_dlp/downloader/fragment.py @@ -515,7 +515,11 @@ def _download_fragment(fragment): 'fragment_filename_sanitized': frag_filename, 'fragment_index': frag_index, }) - if not append_fragment(decrypt_fragment(fragment, self._read_fragment(ctx)), frag_index, ctx): + decrypted_fragment = decrypt_fragment(fragment, self._read_fragment(ctx)) + if self.params.get('keep_fragments', False): + f, _ = self.sanitize_open(format(fragment['frag_index'], '05d') + '.ts', 'wb') + f.write(decrypted_fragment) + if not append_fragment(decrypted_fragment, frag_index, ctx): return False except KeyboardInterrupt: self._finish_multiline_status() @@ -529,8 +533,11 @@ def _download_fragment(fragment): break try: download_fragment(fragment, ctx) - result = append_fragment( - decrypt_fragment(fragment, self._read_fragment(ctx)), fragment['frag_index'], ctx) + decrypted_fragment = decrypt_fragment(fragment, self._read_fragment(ctx)) + if self.params.get('keep_fragments', False): + f, _ = self.sanitize_open(format(fragment['frag_index'], '05d') + '.ts', 'wb') + f.write(decrypted_fragment) + result = append_fragment(decrypted_fragment, fragment['frag_index'], ctx) except KeyboardInterrupt: if info_dict.get('is_live'): break