From 054fa47245bb4dc7db308f0023b162fb326db9ad Mon Sep 17 00:00:00 2001 From: Alexander Graf <17130992+aandergr@users.noreply.github.com> Date: Tue, 10 Aug 2021 09:13:42 +0200 Subject: [PATCH] Fix rare KeyError: 'video_versions' error Closes #1251. --- instaloader/structures.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/instaloader/structures.py b/instaloader/structures.py index 7de0f2f..726fe61 100644 --- a/instaloader/structures.py +++ b/instaloader/structures.py @@ -379,7 +379,11 @@ class Post: if self.is_video: version_urls = [self._field('video_url')] if self._context.iphone_support and self._context.is_logged_in: - version_urls.extend(version['url'] for version in self._iphone_struct['video_versions']) + try: + version_urls.extend(version['url'] for version in self._iphone_struct['video_versions']) + except (InstaloaderException, KeyError, IndexError) as err: + self._context.error(f"Unable to fetch high-quality video version of {self}: {err}") + return version_urls[0] else: return version_urls[0] url_candidates: List[Tuple[int, str]] = [] @@ -1127,7 +1131,11 @@ class StoryItem: if self.is_video: version_urls = [self._node['video_resources'][-1]['src']] if self._context.iphone_support and self._context.is_logged_in: - version_urls.extend(version['url'] for version in self._iphone_struct['video_versions']) + try: + version_urls.extend(version['url'] for version in self._iphone_struct['video_versions']) + except (InstaloaderException, KeyError, IndexError) as err: + self._context.error(f"Unable to fetch high-quality video version of {self}: {err}") + return version_urls[0] else: return version_urls[0] url_candidates: List[Tuple[int, str]] = []