2015-10-12 4 views
1

J'écris un programme en PHP qui récupère la liste des utilisateurs sur Instagram. Le problème que j'ai est que leur API ne renvoie que 50 résultats par appel, et le reste est paginé. Je sais qu'il y a une 'page suivante' car le JSON retourné a une pagination-> next_url. Actuellement, le code que j'ai obtenu le JSON et le décode. Immédiatement après, un appel est lancé pour obtenir la page suivante en utilisant l'URL du premier appel de l'API. Jetez un coup d'oeil:PHP Instagram API Pagination

function getFollows($url){ 
     $client_id = "my client id"; 
     //echo "A url: ".$url."</br>"; 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_TIMEOUT, 20); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
     $result = curl_exec($ch); 
     curl_close($ch); 
     return json_decode($result); 
     } 
    $url = 'https://api.instagram.com/v1/users/'.$user_id.'/follows/?client_id='.$client_id.'&access_token='.$token; 
    $first_page = getFollows($url); 
    $second_page = getFollows($first_page->pagination->next_url); 

Ce que je voudrais faire est au lieu de vérifier la JSON pour une URL suivante et de faire un appel à la next_url. Ensuite, il vérifie le JSON de cette URL pour une prochaine URL et répétez. Tous les JSON collectés seraient alors fusionnés en une liste que je pourrais ensuite parcourir pour faire écho à chaque personne. Ma question est comment puis-je pour chaque fois qu'il y a pagination, obtenir l'URL suivante, fusionner le JSON et répéter jusqu'à ce qu'il n'y ait plus de pages à parcourir.

Je pourrais continuer à faire $ third_page, $ fourth_page, mais cela ne sert à rien si l'utilisateur a plus de quatre pages de followers et s'il n'a que 10 followers par exemple.

J'ai essayé d'utiliser une fonction if pour vérifier s'il y a pagination et array_merge(), mais en vain. Peut-être que je le faisais mal. S'il vous plaît quelqu'un peut me diriger dans la bonne direction.

Merci,

-DH

Répondre

1

vous pouvez prendre un code ready-made, il y a un point avec pagination- https://github.com/cosenary/Instagram-PHP-API

+0

Merci. Cela fera bien et semble facile à intégrer! Actuellement j'utilise une boucle while pour parcourir, je vais probablement l'éditer pour l'utiliser. – DaZa