From be0f6f2d2d1a0eee185870f225422c7d66967b99 Mon Sep 17 00:00:00 2001 From: Jesse Bannon Date: Tue, 9 Jan 2024 14:35:19 -0800 Subject: [PATCH] [BUGFIX] Parent entry is not a dict (#888) Fixes an AttributeError bug --- src/ytdl_sub/downloaders/ytdlp.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/ytdl_sub/downloaders/ytdlp.py b/src/ytdl_sub/downloaders/ytdlp.py index 0f43b606..8fa7f10e 100644 --- a/src/ytdl_sub/downloaders/ytdlp.py +++ b/src/ytdl_sub/downloaders/ytdlp.py @@ -221,6 +221,7 @@ class YTDLP: with cls._listen_and_log_downloaded_info_json( working_directory=working_directory, log_prefix=log_prefix_on_info_json_dl ): + # TODO: Fetch parent_dict if it breaks parent_dict = cls.extract_info( ytdl_options_overrides=ytdl_options_overrides, **kwargs ) @@ -239,17 +240,21 @@ class YTDLP: # For YouTube playlists in particular, channel metadata is not fetched. Attempt to get # channel metadata via grabbing uploader_url info json a max of 3 times - current_iter = 0 - url = kwargs.get("url") - uploader_url = parent_dict.get("uploader_url") - while current_iter < 3 and uploader_url and url != uploader_url: - cls.logger.debug("Attempting to get parent metadata from URL %s", uploader_url) - parent_dict = cls.extract_info( - ytdl_options_overrides=ytdl_options_overrides | {"playlist_items": "0:0"}, - url=uploader_url, - ) - current_iter += 1 - url = uploader_url + if isinstance(parent_dict, dict): + current_iter = 0 + url = kwargs.get("url") uploader_url = parent_dict.get("uploader_url") + while current_iter < 3 and uploader_url and url != uploader_url: + cls.logger.debug("Attempting to get parent metadata from URL %s", uploader_url) + parent_dict = cls.extract_info( + ytdl_options_overrides=ytdl_options_overrides | {"playlist_items": "0:0"}, + url=uploader_url, + ) + + if not isinstance(parent_dict, dict): + break + current_iter += 1 + url = uploader_url + uploader_url = parent_dict.get("uploader_url") return cls._get_entry_dicts_from_info_json_files(working_directory=working_directory)