[downloader/fragment] Don't process ytdl file when it's not needed yet
This commit is contained in:
		
							parent
							
								
									0eee52f34b
								
							
						
					
					
						commit
						adb4b03cd5
					
				
					 1 changed files with 23 additions and 13 deletions
				
			
		| 
						 | 
				
			
			@ -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,16 +119,21 @@ class FragmentFD(FileDownloader):
 | 
			
		|||
            open_mode = 'ab'
 | 
			
		||||
            resume_len = os.path.getsize(encodeFilename(tmpfilename))
 | 
			
		||||
 | 
			
		||||
        ctx['fragment_index'] = 0
 | 
			
		||||
        if os.path.isfile(encodeFilename(self.ytdl_filename(ctx['filename']))):
 | 
			
		||||
            self._read_ytdl_file(ctx)
 | 
			
		||||
        else:
 | 
			
		||||
            self._write_ytdl_file(ctx)
 | 
			
		||||
        # Should be initialized before ytdl file check
 | 
			
		||||
        ctx.update({
 | 
			
		||||
            'tmpfilename': tmpfilename,
 | 
			
		||||
            'fragment_index': 0,
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        if ctx['fragment_index'] > 0:
 | 
			
		||||
            assert resume_len > 0
 | 
			
		||||
        else:
 | 
			
		||||
            assert resume_len == 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:
 | 
			
		||||
                assert resume_len == 0
 | 
			
		||||
 | 
			
		||||
        dest_stream, tmpfilename = sanitize_open(tmpfilename, open_mode)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -194,9 +203,10 @@ class FragmentFD(FileDownloader):
 | 
			
		|||
 | 
			
		||||
    def _finish_frag_download(self, ctx):
 | 
			
		||||
        ctx['dest_stream'].close()
 | 
			
		||||
        ytdl_filename = encodeFilename(self.ytdl_filename(ctx['filename']))
 | 
			
		||||
        if os.path.isfile(ytdl_filename):
 | 
			
		||||
            os.remove(ytdl_filename)
 | 
			
		||||
        if self.__do_ytdl_file(ctx):
 | 
			
		||||
            ytdl_filename = encodeFilename(self.ytdl_filename(ctx['filename']))
 | 
			
		||||
            if os.path.isfile(ytdl_filename):
 | 
			
		||||
                os.remove(ytdl_filename)
 | 
			
		||||
        elapsed = time.time() - ctx['started']
 | 
			
		||||
        self.try_rename(ctx['tmpfilename'], ctx['filename'])
 | 
			
		||||
        fsize = os.path.getsize(encodeFilename(ctx['filename']))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue