Abrufen von mehr als 150 Instagram-Kommentaren

70

Das Problem

Ich möchte in der Lage sein, alle Kommentare zu einem bestimmten Teil von Instagram- Medien anzuzeigen , auch wenn die Medien über 150 Kommentare haben. Derzeit ist es anscheinend unmöglich, mehr als die letzten 20 Kommentare zu einem Medium auf der Instagram-Website anzuzeigen. Wenn Sie entweder die Instagram-API-Konsole oder die Instagram-API-Bibliotheken verwenden , werden die letzten 150 Kommentare mit Nein zurückgegeben Optionen zum Paginieren oder Anzeigen zusätzlicher Kommentare.

Was ich versucht habe

Ich habe natürlich zuerst die dokumentierte Medienkommentarabfrage sowohl in der bereitgestellten Konsole als auch in meiner eigenen Umgebung ausprobiert . In beiden Fällen wurden maximal 150 Kommentare zurückgegeben. Verblüfft suchte ich online nach weiteren Informationen.

Nachdem ich die Instagram-API-Dokumentation gründlich gelesen , verschiedene Endpunkte in der Instagram-API-Konsole getestet und verschiedene StackOverflow-Fragen im Instagram-Tag und in den Fragen der Instagram-API-Google-Gruppe zu verschiedenen Instagram-Themen gelesen hatte , fragte ich mich, ob die Möglichkeit besteht, dass etwas nicht dokumentiert wird Ich könnte es versuchen.

Die Dokumentation zum letzten Medienendpunkt des Benutzers enthält Parameter für max_idund max_timestampermöglicht das Blättern durch die neuesten Medien für einen bestimmten Benutzer, indem die Medien abgerufen werden, die vor dem max_idoder dem Benutzer liegen max_timestamp. Da jeder Kommentar mit created_timeund idAttributen geliefert wird, habe ich versucht, die Parameter für max_idund max_timestamp(sowohl einzeln als auch zusammen) für verschiedene Kommentar-IDs und Zeitstempel hinzuzufügen, um durch Kommentare zu blättern. Keiner meiner Versuche hat funktioniert.

Ich bin jetzt im Stillstand, es sei denn, jemand hat einen anderen Vorschlag.

Spezifisches Beispiel

Mit der Instagram API Console habe ich die folgenden Schritte ausgeführt, um alle Kommentare zu diesem Foto abzurufen .

  1. Authentifizierte mich für ein OAuth2Token
  2. Es wurde eine Benutzersuchabfrage ausgeführt coltonlhaynes, um den Benutzer zu erhaltenid: 9610843
  3. Es wurde eine Abfrage der zuletzt verwendeten Medien des Benutzers nach der Benutzer-ID ausgeführt 9610843, um die neuesten Medien abzurufen
  4. Gesammelte Informationen zu den neuesten Medien (das oben verlinkte Foto)
    • Medien id: 698057751201132903_9610843
    • Kommentar count: 1375
  5. Es wurde eine Medienkommentarabfrage für die Medien-ID ausgeführt 698057751201132903_9610843, um die neuesten Kommentare zu erhalten
  6. Gesammelte Informationen über den am wenigsten aktuellen Kommentar
    • created time: 1397460230
    • Kommentar id: 698269477955776593
  7. Es wurde eine Medienkommentarabfrage für die Medien-ID ausgeführt: 698057751201132903_9610843mit den folgenden zusätzlichen Abfrageparameterzeichenfolgen beim Versuch, durch Kommentare zu blättern, aber die gleichen Ergebnisse wie in Schritt 6 erhalten
    • ?max_timestamp=1397460230
    • ?max_id=698269477955776593
    • ?max_timestamp=1397460230&max_id=698269477955776593
    • ?max_id=698269477955776593&max_timestamp=1397460230

Bitte beachten Sie

Meines Wissens gibt es keine Lösung für dieses Problem, aber da das Instagram-Entwicklungsteam erklärt hat, dass es die Google-Gruppe nicht mehr überwacht und stattdessen StackOverflow überwacht, stelle ich dies hier.

Verbündete
quelle
2
Es ist äußerst frustrierend, dass in der Dokumentation sogar angegeben ist, dass dieser Endpunkt " eine vollständige Liste der Kommentare zu einem Medienobjekt " erhält . Schön geschriebener Beitrag. Ich hoffe, Sie finden eine Antwort.
Lenny Sirivong
Es ist auch erwähnenswert, dass der ähnliche Endpunkt auf die 120 neuesten Likes beschränkt zu sein scheint.
Andy Ryan
3
In der Endpunktbeschreibung heißt es nun: "Holen Sie sich eine Liste der letzten Kommentare zu einem Medienobjekt." :) Es wäre schön gewesen, mindestens 500 Kommentare zu paginieren. Das wäre für die meisten Anwendungen ausreichend gewesen ...
Alin
1
API Console nicht gefunden instagram.com/developer/api-console
Kiquenet
1
Irgendwelche Updates dazu?
Damirstuhec

Antworten:

11

Ok, dies wird eine sehr "Hacky" -Lösung sein, und ich bin derzeit nicht dafür eingerichtet (aufgrund des Mangels an ADSL zu Hause), aber ich kann eine schrittweise Anleitung geben, wie ich dieses Problem angehen würde.

Zunächst benötigen Sie ein Tool namens "Charles Web Debuging Proxy".

Auf der Website finden Sie ein Tutorial zum Aktivieren des "SSL-Debuggens" in Charles (für das Sie ein neues "Stammzertifikat" auf Ihrem Mobilgerät installieren müssen, um zu glauben, dass von Charles signierte https-Transaktionen tatsächlich signiert sind von instagram.com)

Stellen Sie nun Ihr Mobilgerät so ein, dass alle Anforderungen über diesen Proxy weitergeleitet werden (der in Ihrem lokalen Wi-Fi-Netzwerk installiert werden muss).

Gehen Sie zu https://www.google.com und überprüfen Sie, ob Charles sowohl Anfragen als auch Antworten protokolliert.

Sobald dies alles korrekt eingerichtet ist, können Sie sich die API-Aufrufe ansehen, die die Instagram-App selbst verwendet, um diese Kommentarseiten zu generieren.

Damian Nikodem
quelle
2

Die generische Antwort lautet hier " Nein, das ist über reguläre Endpunkte nicht möglich ".

Instagram aktualisierte Frequenz - Grenzwerte (nach 17, November 2015 ). Alle Ratenbeschränkungen auf der Instagram-Plattform werden für jedes Zugriffstoken und in einem verschiebbaren 1-Stunden-Fenster separat gesteuert. Live-Apps haben höhere Ratenbeschränkungen als Apps im Sandbox-Modus.

Welcher Zustand als nächstes Einschränkungen im globalen Kontext:

Globale Ratenlimits

Globale Ratenlimits werden unabhängig vom jeweiligen Endpunkt einschließlich aller API-Aufrufe angewendet, die von einer App pro Zugriffstoken über das 1-Stunden-Schiebefenster ausgeführt werden . Ratenlimits gelten auch für ungültige oder fehlerhafte Anfragen.

  • Sandbox RATE LIMIT: 500 / Stunde
  • Live RATE LIMIT: 5000 / Stunde

Plus separat Einschränkungen für Kommentare Endpunkte:

Endpunktspezifische Ratenlimits

Für die Veröffentlichung der Endpunkte (POST oder DELETE) gelten Ratenbeschränkungen, die pro Endpunkt angewendet werden. Alle Anrufe, die Ihr OAuth-Client an diese Endpunkte tätigt, werden ebenfalls auf die oben angegebenen globalen Tariflimits angerechnet.

  • Sandbox / Medien / Medien-ID / Kommentare : 30 / Stunde
  • Live / Medien / Medien-ID / Kommentare : 60 / Stunde

Wenn Ihre App eines dieser Ratenlimits überschreitet, erhalten Sie eine Antwort mit dem HTTP-Antwortcode von 429 (Too Many Requests).

Sobald die Instagram-Plattform dies pro access tokenBasis steuert , können Sie mit Multithreading mit mehreren Zugriffstoken größere Grenzen erreichen. Es gibt jedoch folgende Einschränkungen: 1. Es kann nicht alles von mehreren Zugriffstoken parallel geschaltet werden, da der Kontext unterschiedlich sein wird. 2. Dies kann im Widerspruch zur Plattformrichtlinie und den Nutzungsbedingungen stehen

Farside
quelle
0

Das ist überhaupt nicht "hacky".

Da Instagram den Link gibt, über den Sie alle Kommentare erhalten können, hier: https://instagram.com/developer/endpoints/comments/

Alles, was Sie tun müssen, ist sich über den Link zu bewegen, den Instagram Ihnen gibt. Ich habe es so gemacht. Ich benutze die API, um es so zu machen.

  public function getUserMediaComments($id, $limit = 0) {
    return $this->_makeCall('media/'.$id.'/comments', true, array('count' => $limit));
  }

Die $ id ist die media_id des Bildes. Wenn Sie diese Funktion mit der Bild-ID umgehen, erhalten Sie alle Kommentare.

Es war nicht so schwer, als ich davon erfuhr.

Sie können es auch so machen, während Sie darüber nachdenken. ::

$comments = json_decode(file_get_contents('https://api.instagram.com/v1/' . 'media/'. $image->id . '/comments?access_token='. $data->access_token));

Beide geben Ihnen ein Array der Kommentare der Bilder zurück.

Armando van Oeffelen
quelle
2
Nein, das ist alles andere als eine Lösung. Ich bin mir nicht sicher, was Sie erreichen. Sie können nicht alle Kommentare erhalten. Sie müssen eine Anforderung an ihren GraphQL-Endpunkt fälschen, um zusätzliche Kommentare über das 150-Limit hinaus abzurufen.
MrSaints
1
zählen ? nicht verfügbar 151 - 300 Artikel erhalten?
Kiquenet