fix: use web API for stories (mobile API blocked)
- Try www.instagram.com/api/v1/feed/user/{id}/story/
- Desktop Chrome user-agent for web endpoint
- Fallback from reels_media POST to web GET
This commit is contained in:
@@ -215,15 +215,22 @@ class InstagramMonitor:
|
||||
return followees
|
||||
|
||||
def _get_user_stories(self, user_pk: int) -> list[dict]:
|
||||
"""Fetch stories via reels_media endpoint (returns actual items)."""
|
||||
"""Fetch stories via web API profile endpoint."""
|
||||
try:
|
||||
resp = self.session.post(
|
||||
f"{API_BASE}/feed/reels_media/",
|
||||
json={"user_ids": [user_pk]},
|
||||
# Try web API with ?__a=1&__d=dis
|
||||
resp = self.session.get(
|
||||
f"https://www.instagram.com/api/v1/feed/user/{user_pk}/story/",
|
||||
params={"user_id": user_pk, "__a": "1", "__d": "dis"},
|
||||
headers={
|
||||
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
|
||||
"X-IG-App-ID": "936619743392459",
|
||||
"X-Requested-With": "XMLHttpRequest",
|
||||
"Accept": "*/*",
|
||||
"Referer": f"https://www.instagram.com/",
|
||||
},
|
||||
timeout=30,
|
||||
)
|
||||
if resp.status_code != 200:
|
||||
logger.debug(f"Stories {user_pk}: HTTP {resp.status_code}")
|
||||
return []
|
||||
|
||||
data = resp.json()
|
||||
@@ -239,7 +246,7 @@ class InstagramMonitor:
|
||||
stories.append(item)
|
||||
return stories
|
||||
except Exception as e:
|
||||
logger.error(f"Error fetching stories for {user_pk}: {e}")
|
||||
logger.debug(f"Stories {user_pk} error: {e}")
|
||||
return []
|
||||
|
||||
def _get_all_stories(self) -> dict[int, list[dict]]:
|
||||
|
||||
Reference in New Issue
Block a user