2012-09-07 15 views
14

Ich habe einige Nachforschungen angestellt und versucht herauszufinden, wie mehr als 20 Bilder angezeigt werden, die vom instagram api eingezogen werden. Ich bin ziemlich neu in diesem so jede Hilfe wäre willkommen! Ich versuche nur zu sehen, ob es irgendwelche Work arounds gibt? Habe etwas über das Hinzufügen von Paginierung gesehen, das möglicherweise helfen könnte. Wenn das der Fall wäre, wären auch Details dazu gut!Anzeige von mehr als 20 Fotos in Instagram API

Hier ist der Code, den ich bisher habe.

<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> 
+3

Bitte auch beachten, dass es Ein kürzlich (November 2015) eingeführtes Limit von 20 Bildern für Anwendungen im Sandbox-Modus. Ich habe ewig gebraucht, um das herauszufinden, weil die Top-Antworten in Google dies nicht erwähnen. Also füge ich das jetzt hinzu. –

Antwort

3

Try &count=N auf die Anforderung hinzufügen, wobei N die Anzahl der Ergebnisse, die Sie wollen.

+1

Ich habe das probiert und es beschränkt mich immer noch nur auf 20 .. Jetzt habe ich die Idee, Seitenumbruch zu haben, was ich denke, es ist der ursprüngliche Gedanke dahinter für Instagram. – PhDeOliveira

+1

& count = 33 das ist ein Maximum – Isis

3

diesen Code Versuchen

$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; 
} 
+0

können Sie mir sagen, wofür $ images [] Array verwendet wird? Außerdem, wie kann ich alle Antwort auf mysql db einfügen? Wo sollte ich die Insert-Anweisung setzen? – user1788736

+1

Das Array $ images [] speichert alle abgerufenen Instagram-Bilder mit den Attributen image src, image thumb und image url. Sie könnten dieses Array verwenden, um das Bildelement in mysql einzufügen. – liding

+0

Vielen Dank für Ihre Erklärung! Könnten Sie mir erklären, wie ich eine API-Antwort speichern sollte, damit ich die Reihenfolge der Bilder auf dieselbe Weise wie die Instagram-App (das neueste Bild oben) bekomme, wenn ich Daten von MySQL zeige? Welche Sortierreihenfolge sollte ich verwenden, damit ich das neueste Bild oben bekomme? Gibt es in mysql eine umgekehrte Speicheroption? – user1788736

1

Siehe http://instagram.com/developer/endpoints/. Sie enthält Informationen zu den Generika der Endpunkte sowie die Paginierungsattribute. Kurz gesagt, eine "paginierte" Antwort enthält eine next_url, die verwendet werden kann, um die nächste Reihe von Ergebnissen abzurufen. Durch das anschließende Abrufen aller nächsten URLs (sofern sie im Ergebnis enthalten sind) erhalten Sie den vollständigen Satz.

BTW, Sie können versuchen, den Parameter count in der Anfrage zu erhöhen. (Abhängig von der Instagram-Bibliothek, die Sie verwenden, können solche Dinge über einen options Hash oder etwas Ähnliches geliefert werden.) Das könnte Ihnen ein paar zusätzliche Anfragen ersparen. Die Seite, die ich gerade erwähnt habe, spezifiziert jedoch keinen maximalen Zählwert. Ich vermute, dass Instagram das Maximum dynamisch und pro Endpunkt ändert.

1

Sie können mehr als 20 Elemente erhalten, indem Sie einen count Parameter angeben und ihn auf die gewünschte Zahl setzen.

jedoch Instagram erlegt auch eine nicht dokumentierte Grenze von 33 für jede Anforderung die Sie machen, und so müssten Sie Paginieren, wenn Sie mehr als 33

Allerdings bekommen, ich habe Instafetch geschrieben, die Ihnen helfen Paginieren Es filtert sogar Medien nach Tags für Sie. Also zögern Sie nicht, es zu benutzen!

0

Eigentlich gibt es eine Chance, die nächsten 20 Bilder zu bekommen, und danach die nächsten 20 und so weiter ... Im JSON Antwort-gibt es einen „Paginierung“ Array:

"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" 
} 

ist dies die Informationen zu bestimmten API-Aufruf und das Objekt „next_url“ zeigt die URL der nächsten 20 Bilder zu bekommen, so dass URL nehmen nur und es für die nächsten 20 Bilder rufen ...

für weitere Informationen über Instagram-API überprüfen Sie diese: https://medium.com/@KevinMcAlear/getting-friendly-with-instagrams-api-abe3b929bc52

+0

Als Antwort für https://api.instagram.com/v1/users/{user-id}/media/recent/?access_token=ACCESS-TOKEN gibt es kein Paginierungsfeld oder next_url Feld als Antwort. keine Ahnung, was passiert ist? –

+1

hat es, in Sandbox-Modus, wird es auf 20 Medien beschränken, keine einzige mehr –

0

Sie können Instagram Feeds-Bibliotheken wie instafeed verwenden.Es ermöglicht

Eg Zufuhr von 60 Bildern (maximal) zu erhalten:

<script type="text/javascript"> 
    var feed = new Instafeed({ 
     get: 'tagged', 
     tagName: 'awesome', 
     limit: 20, 
     clientId: 'YOUR_CLIENT_ID' 
    }); 
    feed.run(); 
</script> 

Grenze (Anzahl) - Maximale Anzahl der Bilder hinzuzufügen. Max. 60.

4

Jede App, die vor dem 17. November 2015 erstellt wurde, bleibt bis Juni 2016 funktionsfähig. Nach Juni 2016 wird die App automatisch in den Sandbox-Modus verschoben, wenn sie nicht im Überprüfungsprozess genehmigt wurde.
Sandbox-Modus sind echte Instagram-Daten (also das, was in der App Instagram normalerweise sichtbar ist), aber mit den folgenden Bedingungen:

  • Apps in Sandbox auf 10 Benutzer beschränkt
  • Daten auf die 10 beschränkt ist Benutzer und die letzten 20 Medien aus jeder dieser Benutzer
  • Reduced Rate API Grenzen

more info

1

Sie können nicht mehr als 20 Beiträge erhalten, wenn Sie ein Sandbox-Benutzer lesen Sie bitte unter "API VERHALTEN" here

+0

Diese Antwort, einschließlich Ihrer Link, wurde zuvor in diesem Thread mehrmals angegeben und alle von ihnen sind umfangreicher als diese. Um SO für Benutzer hilfreicher zu machen, sollten die Antworten nicht wiederholt werden. – Fuzzzzel

0
<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> 

12 photos

https://rudrastyh.com/javascript/get-photos-from-instagram.html

+0

Bitte fügen Sie einen Kontext um den Code hinzu. Außerdem wird der Code nicht ausgeführt. \ – Sid

+0

Sie benötigen Token und Benutzer-ID. – kenai37

Verwandte Themen