diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py index c34d97bba1..a29b9406f9 100644 --- a/yt_dlp/YoutubeDL.py +++ b/yt_dlp/YoutubeDL.py @@ -3560,14 +3560,9 @@ def download(self, url_list): return self._download_retcode - def download_with_info_file(self, info_filename): - with contextlib.closing(fileinput.FileInput( - [info_filename], mode='r', - openhook=fileinput.hook_encoded('utf-8'))) as f: - # FileInput doesn't have a read method, we can't call json.load - infos = [self.sanitize_info(info, self.params.get('clean_infojson', True)) - for info in variadic(json.loads('\n'.join(f)))] - for info in infos: + def download_with_info(self, info_list): + """Download using already extracted info_dicts.""" + for info in info_list: try: self.__download_wrapper(self.process_ie_result)(info, download=True) except (DownloadError, EntryNotInPlaylist, ReExtractInfo) as e: @@ -3582,6 +3577,16 @@ def download_with_info_file(self, info_filename): self.report_error(e) return self._download_retcode + def download_with_info_file(self, info_filename): + """Download using an info file.""" + with contextlib.closing(fileinput.FileInput( + [info_filename], mode='r', + openhook=fileinput.hook_encoded('utf-8'))) as f: + # FileInput doesn't have a read method, we can't call json.load + infos = [self.sanitize_info(info, self.params.get('clean_infojson', True)) + for info in variadic(json.loads('\n'.join(f)))] + return self.download_with_info(infos) + @staticmethod def sanitize_info(info_dict, remove_private_keys=False): ''' Sanitize the infodict for converting to json '''