instagram の API を Ruby で使ってみました
instagram の API を Ruby で使ってみました。
登録が必要
instagram の API を使うには、instagram に登録することが必要です。
これが、なんだか、ちょっと面倒なんですけれど、上手く書けない…。
認証の基本は、OAuth
認証の基本は、OAuth です。ですが、投稿したりする以外は、認証がなくても使えるようです。人気のある写真とか、場所を指定して写真取得などは、認証がなくても使えます。なので、JavaScript でも、情報取得するような処理であれば、気になるところはあるものの、使えそうでした(試してないから、わからないけれど)。
ユーザー情報が必要なときだけ、OAuth 認証を行います。
Ruby と Python の人はライブラリがある
でも、情報がある、とは言いがたいような。でも、github で、公開されているのでソースを見てみると、コメントで使い方がアレコレ書いてあるので、「ソース読め」で何とかなりそうです。
$ gem install instagram
使ってみて
あっさり使えます。で、送られてくるデーターが凄くボリュームがあります。表示されているデーターがほとんど来るんです。
ただ、位置に関するというか、建物情報とひも付けようと思うと、困ります。というのも、建物情報(foursquare と同じらしい)を取得して、そこからさらに画像取得となります。そのため、画像情報取得までに、API の通信が多いんです。そのため、建物情報のキャッシュ(保存)が欲しいところです(したらダメな気がするけれど)。ということは、UI に一工夫いりそうですね。
ソース
require "rubygems" require "sinatra" require "sinatra/reloader" if development? require "instagram" require 'pp' enable :sessions Instagram.configure do |config| config.client_id = "xxxxx" config.client_secret = "xxxxx" end get "/test" do media_items = Instagram.location_recent_media(560231) html = "test" for media_item in media_items.data pp media_item if media_item.caption html << "<p>#{media_item.caption.text}</p>" end html << "<p><a href='#{media_item.link}'>link</a></p>" html << "<p><img src='#{media_item.images.low_resolution.url}'></p>" end html end get "/geo" do client = Instagram.location_search("43.06326", "142.631582") html = "" for client_data in client html << "<h2>" + client_data.name + "/" + client_data.id + "</h2>" media_items = Instagram.location_recent_media(client_data.id) for media_item in media_items.data html << "<p><img src='#{media_item.images.thumbnail.url}'></p>" end end html end