From a05568f44c3162a024bbcf2c6f76d6e2dc5ca0a8 Mon Sep 17 00:00:00 2001 From: arabcoders Date: Thu, 14 Aug 2025 11:46:58 +0300 Subject: [PATCH] make playlist_index works --- app/library/Download.py | 9 ++++----- app/library/DownloadQueue.py | 25 ++++++++++++++++--------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/app/library/Download.py b/app/library/Download.py index 88b2f379..2f30fe61 100644 --- a/app/library/Download.py +++ b/app/library/Download.py @@ -291,11 +291,10 @@ class Download: if isinstance(self.info_dict, dict) and len(self.info_dict) > 1: self.logger.debug(f"Downloading '{self.info.url}' using pre-info.") - cls.process_ie_result( - ie_result=self.info_dict, - download=True, - extra_info={k: v for k, v in self.info.extras.items() if k not in self.info_dict}, - ) + _dct: dict = self.info_dict.copy() + _dct.update([{k: v for k, v in self.info.extras.items() if k not in _dct or not _dct.get(k)}]) + + cls.process_ie_result(ie_result=_dct, download=True) ret: int = cls._download_retcode else: self.logger.debug(f"Downloading using url: {self.info.url}") diff --git a/app/library/DownloadQueue.py b/app/library/DownloadQueue.py index 1ba547c9..f2d0a8c0 100644 --- a/app/library/DownloadQueue.py +++ b/app/library/DownloadQueue.py @@ -310,6 +310,20 @@ class DownloadQueue(metaclass=Singleton): playlistCount = int(entry.get("playlist_count", len(entries))) results = [] + playlist_keys = { + "playlist_count": playlistCount, + "playlist": entry.get("title") or entry.get("id"), + "playlist_id": entry.get("id"), + "playlist_title": entry.get("title"), + "playlist_uploader": entry.get("uploader"), + "playlist_uploader_id": entry.get("uploader_id"), + "playlist_channel": entry.get("channel"), + "playlist_channel_id": entry.get("channel_id"), + "playlist_webpage_url": entry.get("webpage_url"), + "__last_playlist_index": playlistCount - 1, + "n_entries": len(entries), + } + async def playlist_processor(i: int, etr: dict): await self.processors.acquire() try: @@ -322,16 +336,9 @@ class DownloadQueue(metaclass=Singleton): return {"status": "error", "msg": _msg} extras = { - "playlist": entry.get("title") or entry.get("id"), - "playlist_count": playlistCount, - "playlist_id": entry.get("id"), - "playlist_title": entry.get("title"), - "playlist_uploader": entry.get("uploader"), - "playlist_uploader_id": entry.get("uploader_id"), - "playlist_channel": entry.get("channel"), - "playlist_channel_id": entry.get("channel_id"), - "playlist_webpage_url": entry.get("webpage_url"), + **playlist_keys, "playlist_index": i, + "playlist_index_number": i, "playlist_autonumber": i, }