aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornyuszika7h <nyuszika7h@gmail.com>2022-01-19 20:36:40 +0100
committerGitHub <noreply@github.com>2022-01-20 01:06:40 +0530
commitf7085283e12768493d19ebd7fd4a493b6ca69fe5 (patch)
tree7e41842156c6e09b771a0126e3da871756c51ef4
parente25ca9b0177fdd81c44e3d304d4a3633eabcce67 (diff)
downloadhypervideo-pre-f7085283e12768493d19ebd7fd4a493b6ca69fe5.tar.lz
hypervideo-pre-f7085283e12768493d19ebd7fd4a493b6ca69fe5.tar.xz
hypervideo-pre-f7085283e12768493d19ebd7fd4a493b6ca69fe5.zip
[instagram] Fix username extraction for stories and highlights (#2348)
Authored by: nyuszika7h
-rw-r--r--yt_dlp/extractor/instagram.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/yt_dlp/extractor/instagram.py b/yt_dlp/extractor/instagram.py
index ab14e5b0a..68288495c 100644
--- a/yt_dlp/extractor/instagram.py
+++ b/yt_dlp/extractor/instagram.py
@@ -579,6 +579,18 @@ class InstagramStoryIE(InstagramBaseIE):
})['reels']
entites = []
+ full_name = traverse_obj(videos, ('user', 'full_name'))
+
+ user_info = {}
+ if not (username and username != 'highlights' and full_name):
+ user_info = self._download_json(
+ f'https://i.instagram.com/api/v1/users/{user_id}/info/', story_id, headers={
+ 'User-Agent': 'Mozilla/5.0 (Linux; Android 11; SM-A505F Build/RP1A.200720.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/96.0.4664.45 Mobile Safari/537.36 Instagram 214.1.0.29.120 Android (30/11; 450dpi; 1080x2122; samsung; SM-A505F; a50; exynos9610; en_US; 333717274)',
+ }, note='Downloading user info')
+
+ username = traverse_obj(user_info, ('user', 'username')) or username
+ full_name = traverse_obj(user_info, ('user', 'full_name')) or full_name
+
videos = traverse_obj(videos, (f'highlight:{story_id}', 'items'), (str(user_id), 'items'))
for video_info in videos:
formats = []
@@ -608,7 +620,8 @@ class InstagramStoryIE(InstagramBaseIE):
'id': video_info.get('id'),
'title': f'Story by {username}',
'timestamp': int_or_none(video_info.get('taken_at')),
- 'uploader': traverse_obj(videos, ('user', 'full_name')),
+ 'channel': username,
+ 'uploader': full_name,
'duration': float_or_none(video_info.get('video_duration')),
'uploader_id': user_id,
'thumbnails': thumbnails,