[BUGFIX] Parent entry is not a dict (#888)

Fixes an AttributeError bug
This commit is contained in:
Jesse Bannon 2024-01-09 14:35:19 -08:00 committed by GitHub
parent c29cca2b3d
commit be0f6f2d2d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -221,6 +221,7 @@ class YTDLP:
with cls._listen_and_log_downloaded_info_json( with cls._listen_and_log_downloaded_info_json(
working_directory=working_directory, log_prefix=log_prefix_on_info_json_dl working_directory=working_directory, log_prefix=log_prefix_on_info_json_dl
): ):
# TODO: Fetch parent_dict if it breaks
parent_dict = cls.extract_info( parent_dict = cls.extract_info(
ytdl_options_overrides=ytdl_options_overrides, **kwargs 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 # 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 # channel metadata via grabbing uploader_url info json a max of 3 times
current_iter = 0 if isinstance(parent_dict, dict):
url = kwargs.get("url") current_iter = 0
uploader_url = parent_dict.get("uploader_url") url = kwargs.get("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
uploader_url = parent_dict.get("uploader_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) return cls._get_entry_dicts_from_info_json_files(working_directory=working_directory)