NicklasWallgren / instagram-api

Instagram Private API
MIT License
145 stars 47 forks source link

Loop Through Objects? #46

Closed patriotaki closed 3 years ago

patriotaki commented 3 years ago

Hello, Sorry for the stupid question, but I'm no expert in PHP, how can I loop the users in the $followersResponse ,$followingResponse variables? I want to go through each one of the users and count their followers and followings count.

$userResponse = $instagram->userByName('dogsofinstagram');
$followersResponse = $userResponse->getUser()->followers();
$followingResponse = $instagram->following($userResponse->getUser()->getId());

thanks!

noxzemart commented 3 years ago

Hello, Sorry for the stupid question, but I'm no expert in PHP, how can I loop the users in the $followersResponse ,$followingResponse variables? I want to go through each one of the users and count their followers and followings count.

$userResponse = $instagram->userByName('dogsofinstagram');
$followersResponse = $userResponse->getUser()->followers();
$followingResponse = $instagram->following($userResponse->getUser()->getId());

thanks!

$userResponse = $instagram->userByName('dogsofinstagram');
$followersResponse = $userResponse->getUser()->followers();
$followingResponse = $instagram->following($userResponse->getUser()->getId());
foreach($followersResponse->getUsers() as $key => $value){
      echo $value->getId().'<br>';
 }
 foreach($followingResponse->getUsers() as $key => $value){
       echo $value->getId().'<br>';
}
patriotaki commented 3 years ago

Hello, Sorry for the stupid question, but I'm no expert in PHP, how can I loop the users in the $followersResponse ,$followingResponse variables? I want to go through each one of the users and count their followers and followings count.

$userResponse = $instagram->userByName('dogsofinstagram');
$followersResponse = $userResponse->getUser()->followers();
$followingResponse = $instagram->following($userResponse->getUser()->getId());

thanks!

$userResponse = $instagram->userByName('dogsofinstagram');
$followersResponse = $userResponse->getUser()->followers();
$followingResponse = $instagram->following($userResponse->getUser()->getId());
foreach($followersResponse->getUsers() as $key => $value){
      echo $value->getId().'<br>';
 }
 foreach($followingResponse->getUsers() as $key => $value){
       echo $value->getId().'<br>';
}

Thank you for your reply, so if i want to loop through each account and get the followers count it would be something like this? (it didnt work on my end)


$users = [];
foreach ($followingResponse as $key => $value) {
     $followers = $value->followers($value->getId());
     while($followers->getNextMaxId())
     {

          foreach($followers->getUsers() as $follower)
          {
              $users[] = [
                  'id'                => $follower->getId(),
                  'username'          => $follower->getUsername(),
                  'full_name'         => $follower->getFullName(),
                  'photo_url'         => $follower->getProfilePictureUrl(),
                  'anon_photo'        => $follower->hasAnonymousProfilePicture()
              ];
          }
          $followers->next();
     }

     foreach($followers->getUsers() as $follower)
     {
         $users[] = [
             'id'                => $follower->getId(),
             'username'          => $follower->getUsername(),
             'full_name'         => $follower->getFullName(),
             'photo_url'         => $follower->getProfilePictureUrl(),
             'anon_photo'        => $follower->hasAnonymousProfilePicture()
         ];
     }
}```

users array is still empty
NicklasWallgren commented 3 years ago

Here you have a very crude example. It should work with the latest version (0.10.2)

$userResponse = $instagram->userByName('dogsofinstagram');
$followersResponse = $userResponse->getUser()->followers();

do {
    foreach ($followersResponse->getUsers() as $follower) {
        if ($follower->isPrivate()) {
            continue;
        }

        $userResponse = $instagram->userById($follower->getId());

        var_dump($userResponse->getUser()->getId());
        var_dump($userResponse->getUser()->getFollowingCount());
        var_dump($userResponse->getUser()->getFollowerCount());

        usleep(250 * 1000);
    }

    // Retrieve the next batch of users
    $followersResponse = $followersResponse->next();
} while ($followersResponse !== null);