From 29398862da31198fd37062ead0a5dc6519869b7b Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Thu, 18 Jan 2024 19:00:19 -0800 Subject: [PATCH] [BUGFIX] Fix YouTube channels iterating 2x entries (#903) A recent feature to grab channel artwork for playlists caused downloading channels to misreport the number of entries it was downloading. This change fixes that --- src/ytdl_sub/downloaders/ytdlp.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/ytdl_sub/downloaders/ytdlp.py b/src/ytdl_sub/downloaders/ytdlp.py index c0ac01e0..42f3d865 100644 --- a/src/ytdl_sub/downloaders/ytdlp.py +++ b/src/ytdl_sub/downloaders/ytdlp.py @@ -248,20 +248,22 @@ class YTDLP: continue cls.logger.debug("Attempting to get parent metadata from URL %s", uploader_url) + parent_dict: Optional[Dict] = None try: parent_dict = cls.extract_info( ytdl_options_overrides=ytdl_options_overrides | {"playlist_items": "0:0"}, url=uploader_url, ) except Exception: # pylint: disable=broad-except - # Do not try this uploader_id again - entry_ids.add(uploader_id) - break + pass - if isinstance(parent_dict, dict): - parent_id = parent_dict.get("id") + parent_id = parent_dict.get("id") if isinstance(parent_dict, dict) else None + if parent_id and parent_id not in entry_ids: parent_dicts.append(parent_dict) - entry_ids |= {uploader_id, parent_id} + entry_ids.add(parent_id) cls.logger.debug("Adding parent metadata with ids [%s, %s]", uploader_id, parent_id) + # Always add the uploader_id since it has been tried + entry_ids.add(uploader_id) + return entry_dicts + parent_dicts