I have noticed for certain users, notably private users.. Instaloader seems to not detect any stories, however viewing the profile of target username indicates otherwise.
Command: instaloader --login USERNAME --no-profile-pic --no-video-thumbnails --no-metadata-json --stories-only --fast-update TARGETPROFILE
Can confirm. Happens to me as well.
Stories of Public accounts are downloaded fine but those of Private accounts don't.
Confirmed.
It seems as though has_highlight_reels is never true. (Which is used by has_viewable_story if not has_public_story.) I'm not even sure that highlight reels would be a valid indicator of story availability.
Profile._node gets a highlight_reel_count attribute by _obtain_metadata(), which is a numeric value of the number of "saved" / "highlighted" stories, that can be viewed past their expiration when one visits the profile page.
What the website seems to do when visiting instagram.com/user/ is to send a GQL 7c16654f22c819fb63d1183034a5162f with {"user_id":"id", "include_chaining":True, "include_reel":True, "include_suggested_users":False, "include_logged_out_extras":False, "include_highlight_reels":True}, which might seem excessive to just figure out if stories are available.
I've tried various combinations of logged in / anonymous contexts, spoofing headers for the _iphone_struct, but havn't found a good way of getting a valid has_viewable_story
Private users stories can still be retrieved by instaloader --login ME :stories.
@Thammus Thank you so much for fixing this! :heart:
Most helpful comment
Confirmed.
It seems as though
has_highlight_reelsis never true. (Which is used byhas_viewable_storyif nothas_public_story.) I'm not even sure that highlight reels would be a valid indicator of story availability.Profile._nodegets ahighlight_reel_countattribute by_obtain_metadata(), which is a numeric value of the number of "saved" / "highlighted" stories, that can be viewed past their expiration when one visits the profile page.What the website seems to do when visiting instagram.com/user/ is to send a GQL
7c16654f22c819fb63d1183034a5162fwith{"user_id":"id", "include_chaining":True, "include_reel":True, "include_suggested_users":False, "include_logged_out_extras":False, "include_highlight_reels":True}, which might seem excessive to just figure out if stories are available.I've tried various combinations of logged in / anonymous contexts, spoofing headers for the
_iphone_struct, but havn't found a good way of getting a validhas_viewable_storyPrivate users stories can still be retrieved by
instaloader --login ME :stories.