Je fais des recherches et j'essaie de trouver comment afficher plus de 20 images extraites de l'API instagram. Je suis assez nouveau dans ce domaine alors toute aide serait la bienvenue! J'essaie juste de voir s'il y a des solutions de rechange? Vous avez vu quelque chose à propos d’ajouter une pagination qui pourrait éventuellement aider… si c’est le cas, les détails sur la façon de le faire seraient très bien aussi!
Voici le code que j'ai jusqu'à présent.
<script type="text/javascript">
$.ajax({
type: "GET",
dataType: "jsonp",
cache: false,
url: "https://api.instagram.com/v1/tags/coffee/media/recent?client_id=[]&access_token=[]",
success: function(data) {
for (var i = 0; i < 20; i++) {
$(".instagram").append("<a class='big-square span2' target='_blank' href='" + data.data[i].link +"'><img src='" + data.data[i].images.low_resolution.url +"'></img></a>");
}
}
});
</script>
Instagram a une limite de 20 images sur leur API, consultez ce fil et ma réponse
Quel est le nombre maximum de demandes pour Instagram?
EDIT: regardez aussi THIS
Toute application créée avant le 17 novembre 2015 continuera de fonctionner jusqu'en juin 2016. Après juin 2016, l'application sera automatiquement transférée en mode Sandbox si elle n'a pas été approuvée par le processus de révision.
Le mode bac à sable sont de vraies données Instagram (c’est-à-dire ce qui est normalement visible dans l’application Instagram), mais dans les conditions suivantes:
Essayez ce code
$api = "https://api.instagram.com/v1/tags/snow/media/recent?client_id=".$client;
function get_curl($url) {
if(function_exists('curl_init')) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$output = curl_exec($ch);
echo curl_error($ch);
curl_close($ch);
return $output;
} else{
return file_get_contents($url);
}
}
while ($api !== NULL) {
$response = get_curl($api);
foreach(json_decode($response)->data as $item){
$src = $item->images->standard_resolution->url;
$thumb = $item->images->thumbnail->url;
$url = $item->link;
$images[] = array(
"src" => htmlspecialchars($src),
"thumb" => htmlspecialchars($thumb),
"url" => htmlspecialchars($url)
);
echo "<a href='".$src."'><img src='".$thumb."' width='150' height='150' border='0'></a> ";
}
$api = json_decode($response)->pagination->next_url;
}
Essayez d’ajouter &count=N
à la demande, N étant le nombre de résultats souhaités.
Vous pouvez obtenir plus de 20 éléments en spécifiant un paramètre count
et en le définissant sur le nombre souhaité.
Cependant, Instagram impose également une limite non documentée de 33 pour chaque demande que vous faites, et vous devrez donc paginer si vous en recevez plus de 33.
Cependant, j'ai écrit Instafetch qui vous aidera à paginer, il filtrera même les médias par balises. Alors n'hésitez pas à l'utiliser!
Voir http://instagram.com/developer/endpoints/ . Il détaille les génériques des points de terminaison et répertorie également les attributs de pagination. En bref, une réponse "paginée" comprendra un next_url
qui peut être utilisé pour récupérer le prochain ensemble de résultats. La récupération ultérieure de toutes les URL suivantes (tant qu'elles sont fournies dans le résultat) vous permettra d'obtenir l'ensemble complet.
En passant, vous pouvez essayer d’augmenter le paramètre count
dans la demande. (En fonction de la bibliothèque Instagram que vous utilisez, de telles choses peuvent être fournies via un hachage options
ou quelque chose de similaire.) Cela pourrait vous éviter quelques requêtes supplémentaires. La page que je viens de mentionner ne spécifie pas une valeur de comptage maximale cependant. Je soupçonne qu'Instagram modifie le maximum de manière dynamique, et par endpoint.
Vous ne pouvez pas obtenir plus de 20 publications, si vous êtes un utilisateur du bac à sable Veuillez lire sous "API BEHAVIOR" ici
<script>
var token = 'your_token',
userid = your_id,
num_photos = 12;
$.ajax({
url: 'https://api.instagram.com/v1/users/'+userid+'/media/recent',
dataType: 'jsonp',
type: 'GET',
data: {access_token: token, count: num_photos},
success: function(data){
console.log(data);
},
error: function(data){
}
});
</script>
https://rudrastyh.com/javascript/get-photos-from-instagram.html
En fait, il y a une chance d'obtenir les 20 images suivantes, puis les 20 suivantes et ainsi de suite ... Dans la réponse JSON, il y a un tableau "_ pagination}"
"pagination":{
"next_max_tag_id":"1411892342253728",
"deprecation_warning":"next_max_id and min_id are deprecated for this endpoint; use min_tag_id and max_tag_id instead",
"next_max_id":"1411892342253728",
"next_min_id":"1414849145899763",
"min_tag_id":"1414849145899763",
"next_url":"https:\/\/api.instagram.com\/v1\/tags\/lemonbarclub\/media\/recent?client_id=xxxxxxxxxxxxxxxxxx\u0026max_tag_id=1411892342253728"
}
il s'agit des informations sur l'appel spécifique de l'API et l'objet "next_url" indique l'URL pour obtenir les 20 prochaines images.
pour plus d'informations sur l'API Instagram, consultez cette page: https://medium.com/@KevinMcAlear/getting-friendly-with-instagrams-api-abe3b929bc52
Vous pouvez utiliser les bibliothèques de flux Instagram comme instafeed . Il permet d'obtenir un flux de 60 images (maximum)
Par exemple:
<script type="text/javascript">
var feed = new Instafeed({
get: 'tagged',
tagName: 'awesome',
limit: 20,
clientId: 'YOUR_CLIENT_ID'
});
feed.run();
</script>
limite (nombre) - Nombre maximum d'images à ajouter. Max de 60.