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_id
und max_timestamp
ermöglicht das Blättern durch die neuesten Medien für einen bestimmten Benutzer, indem die Medien abgerufen werden, die vor dem max_id
oder dem Benutzer liegen max_timestamp
. Da jeder Kommentar mit created_time
und id
Attributen geliefert wird, habe ich versucht, die Parameter für max_id
und 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 .
- Authentifizierte mich für ein
OAuth2
Token - Es wurde eine Benutzersuchabfrage ausgeführt
coltonlhaynes
, um den Benutzer zu erhaltenid: 9610843
- Es wurde eine Abfrage der zuletzt verwendeten Medien des Benutzers nach der Benutzer-ID ausgeführt
9610843
, um die neuesten Medien abzurufen - Gesammelte Informationen zu den neuesten Medien (das oben verlinkte Foto)
- Medien
id: 698057751201132903_9610843
- Kommentar
count: 1375
- Medien
- Es wurde eine Medienkommentarabfrage für die Medien-ID ausgeführt
698057751201132903_9610843
, um die neuesten Kommentare zu erhalten - Gesammelte Informationen über den am wenigsten aktuellen Kommentar
created time: 1397460230
- Kommentar
id: 698269477955776593
- Es wurde eine Medienkommentarabfrage für die Medien-ID ausgeführt:
698057751201132903_9610843
mit 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.
quelle
Antworten:
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.
quelle
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:
Plus separat Einschränkungen für Kommentare Endpunkte:
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 token
Basis 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 stehenquelle
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.
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. ::
Beide geben Ihnen ein Array der Kommentare der Bilder zurück.
quelle