2012-07-24 12 views
6

Ich möchte eine kleine "Instant-Bildsuche" -App mit Instagram-Fotos erstellen. Dies ist wie bei Google Instant, wo Sie mit der Eingabe beginnen und die Ergebnisse angezeigt/aktualisiert werden, wenn Sie weitere Buchstaben eingeben.Wie Instagram über API-Abfrage zu suchen?

Sie können stattdessen eine live demo app mit Google Bilder sehen. Ich weiß, dass dies mit größeren Suchmaschinen möglich ist (Google, Yahoo!, Bing), aber ich habe keine Ahnung, ob Instagram dies erlaubt. Kann jemand, der mit dem API vertraut ist, hier Hilfe anbieten?

Wenn es nicht möglich ist, über die API zu suchen, die Sinn macht. Ich wollte das hier zuerst überprüfen, da es so viele kenntnisreiche Programmierer gibt.

Antwort

18

Zunächst, und falls Sie nicht wussten, gibt es bereits one similar (mindestens) Web-App. Lassen Sie uns auf die Antwort gehen:

Sie müssen get your client_id, da Sie es benötigen, um die API aufrufen (Weitere Informationen here). Sie sollten Anrufe this endpoint (: P Mehr Infos über Instagram API Endpunkte here, sollten Sie diesen Artikel lesen): werden machen

https://api.instagram.com/v1/tags/SEARCH-TAG/media/recent?client_id=CLIENT-ID&callback=YOUR-CALLBACK 

Natürlich die SEARCH-TAG mit Benutzereingabe ändern, CLIENT-ID mit den man vor bekam und YOUR-CALLBACK mit dem Namen Ihrer Callback-Funktion.

Die Antwort auf diesen Anruf kommt in JSONP und sieht wie folgt aus (Entnommen aus der Seite des API):

{ 
    "data": [{ 
     "type": "image", 
     "filter": "Earlybird", 
     "tags": ["snow"], 
     "comments": { 
      "data": [{ 
       "created_time": "1296703540", 
       "text": "Snow", 
       "from": { 
        "username": "emohatch", 
        "username": "Dave", 
        "id": "1242695" 
       }, 
       "id": "26589964" 
      }, 
      { 
       "created_time": "1296707889", 
       "text": "#snow", 
       "from": { 
        "username": "emohatch", 
        "username": "Emo Hatch", 
        "id": "1242695" 
       }, 
       "id": "26609649" 
      }], 
      "count": 3 
     } 
     "caption": { 
      "created_time": "1296703540", 
      "text": "#Snow", 
      "from": { 
       "username": "emohatch", 
       "id": "1242695" 
      }, 
      "id": "26589964" 
     }, 
     "likes": { 
      "count": 1, 
      "data": [{ 
       "username": "mikeyk", 
       "full_name": "Mike Krieger", 
       "id": "4", 
       "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1242695_75sq_1293915800.jpg" 
      }] 
     },   
     "link": "http://instagr.am/p/BWl6P/", 
     "user": { 
      "username": "emohatch", 
      "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1242695_75sq_1293915800.jpg", 
      "id": "1242695", 
      "full_name": "Dave" 
     }, 
     "created_time": "1296703536", 
     "images": { 
      "low_resolution": { 
       "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_6.jpg", 
       "width": 306, 
       "height": 306 
      }, 
      "thumbnail": { 
       "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_5.jpg", 
       "width": 150, 
       "height": 150 
      }, 
      "standard_resolution": { 
       "url": "http://distillery.s3.amazonaws.com/media/2011/02/02/f9443f3443484c40b4792fa7c76214d5_7.jpg", 
       "width": 612, 
       "height": 612 
      } 
     }, 
     "id": "22699663", 
     "location": null 
    }, 
    ... 
    ] 
} 

Dann müssen Sie nur diese Antwort verarbeiten und tun, was Sie wollen mit ihm :)

+0

Wow, das ist eine unglaublich detaillierte Antwort, danke! Ich habe momentan keine Zeit, den Code zu überarbeiten, aber Sie haben mich mit einem funktionierenden Beispiel verbunden, das perfekt ist. Nur für eine kurze Frage beim Ersetzen des 'SEARCH-TAG' wie würde ich die Benutzereingabe hinzufügen? Würde dies nur URI-codiert werden, so dass eine Suche nach "Baby-Welpen" zu "Baby + Welpen" wird? – Jake

+1

@JakeRocheleau, habe ich einige Tests gemacht und es scheint, dass die API nicht mehr als ein Tag akzeptiert. Ich habe dann danach gesucht und die API ist pro Anfrage auf einen Tag beschränkt ([link] (http://osqa.statigr.am/questions/653/multiple-tag-search), [link] (https : //groups.google.com/forum/? fromgroups #! topic/instagram-api-developers/VJPdeDs9tIA)):/Etwas wie "Baby + Puppy" oder "Baby% 20puppy" würde einfach nichts zurückgeben. Um die mehrfache Tag-Kennzeichnung in Ihrer App zu unterstützen, müssen Sie daher möglicherweise die Benutzereingabe aufteilen und mehrere Anforderungen stellen, was ein wenig schwieriger ist. Viel Glück damit :) – scumah

+0

Als ein Update: der gleiche Endpunkt benötigt jetzt eine ACCESS_TOKEN Abfrage https://www.instagram.com/developer/endpoints/tags/ – igneosaur

3

Eine wichtige Randnotiz: Instagram ermöglicht max 5000 Abfragen für die Stunde. Wenn Sie die Abfrage mit der App-ID verwenden. Wenn Sie dieses Limit erhöhen möchten, können Sie Ihre Benutzer zur Authentifizierung auffordern. Dann können Sie das Benutzerzugriffstoken übergeben. Hoffe, das hilft

+1

Warum möchten Sie _lower_ the limit? – user83039

+0

@ user83039 Wenn Sie nicht mehr Abfragen pro Stunde benötigen, wenn Ihre Anwendung nicht mehr benötigt. – kinduff

Verwandte Themen