fix: correct Instagram private API endpoints

- /users/self/info/ for profile info (not /accounts/current_user/)
- /friendships/{user_id}/following/ for followees list
- Added own_user_id fetch before followees
- Better debug logging for response structure
This commit is contained in:
2026-06-17 12:05:34 +07:00
parent 1bd68c9a0e
commit cb2461ace4

View File

@@ -86,10 +86,10 @@ class InstagramMonitor:
logger.info(f"Cookies loaded: ds_user_id={ds_user_id}")
resp = self.session.get(f"{API_BASE}/accounts/current_user/", headers=IG_HEADERS, timeout=30)
resp = self.session.get(f"{API_BASE}/users/self/info/", headers=IG_HEADERS, timeout=30)
if resp.status_code == 200:
data = resp.json()
username = data.get("user", {}).get("username", "unknown")
username = data.get("user", {}).get("username") or data.get("username", "unknown")
logger.info(f"Logged in as: {username}")
self._logged_in = True
return True
@@ -105,6 +105,24 @@ class InstagramMonitor:
followees = []
max_id = None
# First get own user ID
try:
resp = self.session.get(f"{API_BASE}/users/self/info/", timeout=30)
if resp.status_code == 200:
own_user_id = resp.json().get("user", {}).get("pk") or resp.json().get("pk")
if own_user_id:
logger.info(f"Own user ID: {own_user_id}")
else:
logger.error("Could not get own user ID from response")
logger.debug(f"Response keys: {list(resp.json().keys())}")
return followees
else:
logger.error(f"Failed to get own user ID: {resp.status_code}")
return followees
except Exception as e:
logger.error(f"Error getting own user ID: {e}")
return followees
while True:
try:
params = {"count": 50}
@@ -112,13 +130,13 @@ class InstagramMonitor:
params["max_id"] = max_id
resp = self.session.get(
f"{API_BASE}/users/self/following/",
f"{API_BASE}/friendships/{own_user_id}/following/",
params=params,
timeout=30,
)
if resp.status_code != 200:
logger.error(f"Followees fetch failed: {resp.status_code}")
logger.error(f"Followees fetch failed: {resp.status_code} {resp.text[:200]}")
break
data = resp.json()
@@ -146,6 +164,7 @@ class InstagramMonitor:
try:
resp = self.session.get(
f"{API_BASE}/feed/user/{user_pk}/story/",
params={"user_id": user_pk},
timeout=30,
)
if resp.status_code != 200: