mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	[downloader/fragment] Don't process ytdl file when it's not needed yet
This commit is contained in:
		| @@ -49,6 +49,10 @@ class FragmentFD(FileDownloader): | ||||
|         self._prepare_frag_download(ctx) | ||||
|         self._start_frag_download(ctx) | ||||
|  | ||||
|     @staticmethod | ||||
|     def __do_ytdl_file(ctx): | ||||
|         return not ctx['live'] and not ctx['tmpfilename'] == '-' | ||||
|  | ||||
|     def _read_ytdl_file(self, ctx): | ||||
|         stream, _ = sanitize_open(self.ytdl_filename(ctx['filename']), 'r') | ||||
|         ctx['fragment_index'] = json.loads(stream.read())['download']['current_fragment_index'] | ||||
| @@ -81,7 +85,7 @@ class FragmentFD(FileDownloader): | ||||
|         try: | ||||
|             ctx['dest_stream'].write(frag_content) | ||||
|         finally: | ||||
|             if not (ctx.get('live') or ctx['tmpfilename'] == '-'): | ||||
|             if self.__do_ytdl_file(ctx): | ||||
|                 self._write_ytdl_file(ctx) | ||||
|             if not self.params.get('keep_fragments', False): | ||||
|                 os.remove(ctx['fragment_filename_sanitized']) | ||||
| @@ -115,12 +119,17 @@ class FragmentFD(FileDownloader): | ||||
|             open_mode = 'ab' | ||||
|             resume_len = os.path.getsize(encodeFilename(tmpfilename)) | ||||
|  | ||||
|         ctx['fragment_index'] = 0 | ||||
|         # Should be initialized before ytdl file check | ||||
|         ctx.update({ | ||||
|             'tmpfilename': tmpfilename, | ||||
|             'fragment_index': 0, | ||||
|         }) | ||||
|  | ||||
|         if self.__do_ytdl_file(ctx): | ||||
|             if os.path.isfile(encodeFilename(self.ytdl_filename(ctx['filename']))): | ||||
|                 self._read_ytdl_file(ctx) | ||||
|             else: | ||||
|                 self._write_ytdl_file(ctx) | ||||
|  | ||||
|             if ctx['fragment_index'] > 0: | ||||
|                 assert resume_len > 0 | ||||
|             else: | ||||
| @@ -194,6 +203,7 @@ class FragmentFD(FileDownloader): | ||||
|  | ||||
|     def _finish_frag_download(self, ctx): | ||||
|         ctx['dest_stream'].close() | ||||
|         if self.__do_ytdl_file(ctx): | ||||
|             ytdl_filename = encodeFilename(self.ytdl_filename(ctx['filename'])) | ||||
|             if os.path.isfile(ytdl_filename): | ||||
|                 os.remove(ytdl_filename) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user