Instagram Echtzeit erhalten Post vom Rückruf

9

Richtig, das geht mir wirklich auf die Nerven, aber Instagram muss etwas mit ihrer blutigen Dokumentation anfangen.

Ich versuche schon seit einer Woche, meine Website mit neuen Instagram-Posts zu aktualisieren, ohne die Seite zu aktualisieren. Twitter war ziemlich einfach, aber Instagram ist nur ein großes Durcheinander. Im Grunde benutze ich die Realtime Instagram API, den Callback und all das Zeug funktioniert gut, aber dank Instagram gibt es mir keine ID aus dem Post, der neu ist, der Callback gibt nur ein paar grundlegende Dinge zurück:

%Vor%

Mit diesen Daten bist du nichts, außer dem Tag, aber ich wusste das Tag vor diesem Callback auch ist also egal. Es sagt mir eigentlich nur, dass es einen neuen Post gibt. Ich habe versucht, die gleiche Anfrage zu machen, wie wenn die Seite geladen wird, wenn dieser Rückruf auftritt, und die Posts zu erhalten, die neuer sind als die, die bereits auf der Seite sind. Leider ist mir das noch nicht gelungen. Ich habe die ID aus dem letzten geposteten Instagram Post ausgewählt und überprüft, ob es in der Rückrufanfrage ist, und es ist nicht.

Was mache ich falsch?

Ich würde etwas Hilfe schätzen, danke!

Bearbeiten:

Ich möchte darauf hinweisen, dass dies nicht nur ein Problem mit der Echtzeit-API, sondern auch mit der normalen API ist. Ich weiß einfach nicht, wie man Daten vergleicht, also erhalte ich keine Duplikate in meiner Datenbank (normale API) oder auf meiner Website (Echtzeit). Ich kann keine Anleitung oder Dokumentation finden (Ja, ich bin vielleicht blind), das erklärt mir, wie man Daten vergleicht. Ich kann nur die min_id und max_id finden, aber keine Erklärung, was diese IDs enthält. Ich habe diese IDs mit IDs aus den Ergebnissen überprüft und sie stimmen nicht überein. Es ist keine ID von einem Medienelement.

Ich habe auch die next_url überprüft, und in meinem logischen Denken sollte dies eine URL zur nächsten Seite sein (wie Twitter).

Betrachte ich das alles falsch?

    
Bananam00n 30.01.2014, 14:27
quelle

3 Antworten

4

Ok, schlag meine alte Antwort auf, ich änderte die Art, wie ich das tue. Hier ist, wie ich es jetzt mache.

Ich warte immer noch auf 10 Treffer auf meinem Echtzeit-Abonnement, wenn ich 10 erreiche, sende ich einen neuen Thread ab (wenn einer noch nicht läuft).

Der Sync-Thread fragt meine Datenbank nach einem Wert ab, ich brauche die letzte min_tag_id, die ich benutzt habe. Dann frage ich:

Ссылка * / media / recent? access_token = * & amp; min_tag_id = *

Probieren Sie es hier aus: Ссылка *

Sie erhalten 20 Ergebnisse und einen min_tag_id Wert. Wenn Sie das an Ihre URL anhängen, sehen Sie, dass Sie keine Ergebnisse erhalten. Warte ein paar Sekunden und aktualisiere. Schließlich erhalten Sie einige Medien und eine neue min_tag_id.

(Sie können den Wert "next_url" ignorieren, den sie Ihnen geben, Sie werden das nicht verwenden).

Im Grunde müssen Sie nur die min_tag_id speichern und abfragen, bis Sie keine Ergebnisse mehr haben, dh Sie sind fertig.

    
Sébastien Richer 06.02.2014, 15:00
quelle
0

Wenn Sie einen Abonnement-Push erhalten, müssen Sie diesen Endpunkt abfragen (tag / recent).

Normalerweise starte ich einen synchronen Thread, um dies zu tun, damit ich in weniger als 2 Sekunden auf Instagram antworten kann.

Dann analysieren Sie diesen Endpunkt und suchen nach einem "nächsten URL" -Wert.

Lassen Sie den Endpunkt abfragen, analysieren Sie die Medien und gehen Sie zur nächsten URL, bis Sie Ihre Stopp-Bedingung gefunden haben.

Für mich versuche ich 10 aufeinander folgende Datensätze in meiner Datenbank abzugleichen. Im Grunde von dem Tag, ich speichern Medien, wenn dann meine Geschäftsregeln erfüllen.

    
Sébastien Richer 03.02.2014 14:17
quelle
-1

Die Instagram-Dokumentation ist korrekt und tatsächlich gut geschrieben.

Die Echtzeit-API funktioniert ordnungsgemäß. Wie in der Dokumentation angegeben:

  

Die geänderten Daten sind nicht in der Nutzlast enthalten . Es liegt also an Ihnen   Wie möchten Sie die neuen Daten abrufen? Zum Beispiel können Sie nur entscheiden   neue Daten für bestimmte Benutzer abzurufen oder nach einer bestimmten Anzahl von   Fotos wurden veröffentlicht.

Ссылка

Sie erhalten nur eine Benachrichtigung, dass Ihrem abonnierten Objekt ein Update passiert ist. Es liegt an Ihnen, die API aufzurufen, um herauszufinden, um welche Daten es sich handelt.

Sie können /tags/[tag-name]/media/recent mit einem Zugriffs-Token aufrufen, das Sie zuvor auf Ihrem eigenen Server oder in Ihrer Datenbank gespeichert haben. Dann sollten Sie in der Lage sein, die von diesem Endpunkt zurückgegebenen Daten mit allen Daten zu vergleichen, die Sie zuvor abgerufen haben, und nur die Objekte zu ziehen, die Sie noch nicht haben.

    
chrisboustead 30.01.2014 16:27
quelle

Tags und Links