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:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user