J'aimerais pouvoir voir tous les commentaires sur n'importe quel morceau de média Instagram , même si le média a plus de 150 commentaires. À l'heure actuelle, il est apparemment impossible de voir plus que les 20 commentaires les plus récents sur un média sur le site Instagram et si l'on utilise soit la Instagram API Console soit la Instagram API Bibliothèques , les 150 commentaires les plus récents sont retournés sans options de pagination ou de visualisation des commentaires d'ajout.
J'ai d'abord, bien sûr, essayé la documentation requête de commentaire des médias dans la console fournie et dans mon propre environnement. Dans les deux cas, un maximum de 150 commentaires ont été renvoyés. Perplexe, j'ai commencé à chercher plus d'informations en ligne.
Après avoir lu attentivement la Documentation de l'API Instagram , testé divers points de terminaison dans la Console de l'API Instagram , et lu diverses questions sur StackOverflow dans la balise Instagram et Instagram Google API Group questions sur plusieurs sujets Instagram, je me suis demandé s'il y avait une chance que quelque chose soit sans-papiers que je pourrais essayer.
La documentation point final du média récent de l'utilisateur inclut des paramètres pour max_id
et max_timestamp
qui permettent de paginer sur les médias les plus récents pour un utilisateur donné en récupérant les médias qui précèdent max_id
ou max_timestamp
. Étant donné que chaque commentaire est accompagné de created_time
et id
attributs, j'ai essayé d'ajouter les paramètres pour max_id
et max_timestamp
(séparément ou ensemble) pour divers ID de commentaire et horodatages afin d'essayer de parcourir les commentaires. Aucune de mes tentatives n'a fonctionné.
Je suis maintenant au point mort à moins que quelqu'un n'ait une autre suggestion.
En utilisant Instagram API Console , j'ai pris les mesures suivantes pour essayer d'obtenir tous les commentaires pour cette photo .
OAuth2
jetoncoltonlhaynes
pour obtenir l'utilisateur id: 9610843
9610843
pour obtenir les médias les plus récentsid: 698057751201132903_9610843
count: 1375
698057751201132903_9610843
pour obtenir les commentaires les plus récentscreated time: 1397460230
id: 698269477955776593
698057751201132903_9610843
avec les chaînes de paramètres de requête supplémentaires suivantes pour tenter de parcourir les commentaires, mais a reçu les mêmes résultats qu'à l'étape 6 ?max_timestamp=1397460230
?max_id=698269477955776593
?max_timestamp=1397460230&max_id=698269477955776593
?max_id=698269477955776593&max_timestamp=1397460230
À ma connaissance, il n'y a pas de solution à ce problème, mais depuis l'équipe de développement Instagram a déclaré qu'elle ne surveillera plus le groupe Google et surveillera plutôt StackOverflow, je mets cela ici .
Ok, cela va être une solution très "Hacky", et je ne suis pas actuellement configuré pour le faire moi-même (en raison du manque d'ADSL à la maison) mais je peux fournir un guide étape par étape sur la façon dont j'aborderais ce problème.
Tout d'abord, vous aurez besoin d'un outil appelé "Charles Web Debuging Proxy"
Il y a un tutoriel sur le site sur la façon d'activer le "débogage SSL" dans charles, (qui vous obligera à installer un nouveau "certificat racine" sur votre appareil mobile, pour le faire croire que les transactions https signées par charles sont réellement signées par instagram.com)
Maintenant, configurez votre appareil mobile pour acheminer toutes les demandes via ledit proxy (qui devra être installé sur votre réseau Wi-Fi local.)
allez sur https://www.google.com et vérifiez que charles enregistre à la fois les demandes et les réponses.
Une fois que tout est correctement configuré, vous pouvez jeter un œil aux appels API que l'application instagram elle-même utilise pour générer lesdites pages de commentaires.
La réponse générique ici est " non, ce n'est pas possible via des points de terminaison réguliers".
Instagram mis à jour Limites de taux (après 17 novembre 2015). Toutes les limites de taux sur la plate-forme Instagram sont contrôlées séparément pour chaque jeton d'accès et sur une fenêtre coulissante d'une heure. Les applications en direct ont des limites de taux plus élevées que les applications en mode Sandbox.
Quelles sont les prochaines limitations dans le contexte mondial:
Limites de taux globales
Les limites de taux globales sont appliquées, y compris tous les appels d'API effectués par une application par jeton d'accès sur la fenêtre coulissante d'une heure , quel que soit le point de terminaison particulier. Des limites de taux s'appliquent également aux demandes invalides ou mal formées.
- Sandbox LIMITE DE TAUX: 500/heure
- Live LIMITE DE TAUX: 5000/heure
Plus séparément les limitations pour les points de terminaison des commentaires:
Limites de débit spécifiques aux terminaux
Les points de terminaison utilisés pour publier (POST ou DELETE) ont des limites de débit qui sont appliquées par point de terminaison. Tous les appels effectués vers ces points d'extrémité par votre OAuth client sont également pris en compte dans les limites de taux globales indiquées ci-dessus.
- Sandbox /media/media-id/ commentaires : 30/heure
- Live /media/media-id/ commentaires : 60/heure
Si votre application dépasse l'une de ces limites de débit, vous recevrez une réponse avec un code de réponse HTTP de 429 (Too Many Requests)
.
Dès que la plate-forme Instagram le contrôle par access token
base, vous pourriez atteindre de plus grandes limites en utilisant le multithread avec plusieurs jetons d'accès. Mais il a des mises en garde: 1. tout ne peut pas être mis en parallèle à partir de jetons d'accès multiples, car le contexte sera différent. 2. Cela pourrait contredire Politique de plate-forme et TOS
Ce n'est pas du tout "hacky".
Comme Instagram donne le lien où vous pouvez recevoir tous les commentaires ici: https://instagram.com/developer/endpoints/comments/
Tout ce que vous avez à faire est de parcourir le lien qu'Instagram vous donne. Je l'ai fait comme ça. J'utilise l'API pour le faire de cette façon.
public function getUserMediaComments($id, $limit = 0) {
return $this->_makeCall('media/'.$id.'/comments', true, array('count' => $limit));
}
Le $ id est le media_id de l'image. Si vous oubliez cette fonction avec l'identifiant de l'image, vous recevrez tous les commentaires.
Ce n'était pas si difficile quand j'ai découvert cette façon.
Vous pouvez également le faire comme ceci tout en y enseignant. :
$comments = json_decode(file_get_contents('https://api.instagram.com/v1/' . 'media/'. $image->id . '/comments?access_token='. $data->access_token));
Il vous renvoie à la fois un tableau des commentaires des images.