- 更新日: 2014年3月11日
- Ruby
Flickr API で Ruby + flickraw を使い画像検索
Flickr の API を用いて、タグで画像を検索する Ruby コードを書きました。調べたら flickraw という便利な gem を発見したので、これを利用します。
flickraw をインストール
1 2 3 |
$ gem install flickraw |
または、
1 2 3 4 5 |
$ vi Gemfile gem "flickraw" $ bundle install |
hanklords/flickraw
flickraw RDoc Documentation
Flickr の API キーを取得
Flickr にログインし、Flickr Services からAPIキーを取得します。詳しくは以下を参照。
Flickr APIを使ってみよう(1.APIキーの取得) | Tech Booster
Flickr API はドキュメントが充実しています(英語ですが)。それと各々APIエンドポイントに対して、パラメータを組み立ててリクエストを試し、レスポンスを確認できるツールが用意してあります。
今回利用した flickr.photos.search の API ドキュメント。
Flickr Services: Flickr API: flickr.photos.search
レスポンスを確認するツール。
Flickr Api Explorer – flickr.photos.search
flickraw を使った Ruby コード(Ruby 2.0.0)
では、Flickr API を叩いて、タグで絞り込み検索して画像を取得する Ruby コード。API key, API secret の部分は取得したものに変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
require "flickraw" FlickRaw.api_key = "API key" FlickRaw.shared_secret = "API secret" def get_flickr_images(tag) thumbnail_size = "m" original_size = "z" images = flickr.photos.search(tags: tag, sort: "relevance", per_page: 20) flickr_images = [] images.each do |image| flickr_images << FlickrImage.new( id: image["id"], title: image["title"], description: "", link_url: "http://www.flickr.com/photos/#{image["owner"]}/#{image["id"]}", thumbnail_url: "http://farm#{image["farm"]}.static.flickr.com/#{image["server"]}/#{image["id"]}_#{image["secret"]}_#{thumbnail_size}.jpg", original_url: "http://farm#{image["farm"]}.static.flickr.com/#{image["server"]}/#{image["id"]}_#{image["secret"]}_#{original_size}.jpg" ) end flickr_images end class FlickrImage def initialize(id:nil, title:nil, description:nil, link_url:nil, thumbnail_url:nil, original_url:nil) @id = id @title = title @description = description @link_url = link_url @thumbnail_url = thumbnail_url @original_url = original_url end attr_accessor :id, :title, :description, :link_url, :thumbnail_url, :original_url end get_flickr_images("mountain").each do |image| puts image.title puts image.link_url end |
キーワード引数を使っているので、Ruby2.0.0以上で動作させる必要があります。get_flickr_images メソッドにタグ(この例では mountain )を引数で渡して呼び出すと、FlickrImage のインスタンスの配列を返します。関連性でソートし(sort: “relevance”)、20件取得しています(per_page: 20)。
今回は単純にタグで画像を検索して画像情報を取得するだけのコードを書きましたが、他にも画像のアップロードや OAuth 認証など、Flickr はかなり API が充実している印象です。使い方次第で便利なツールが作れそう。自動で手元の写真をどんどん Flickr にアップロードするツールとか。
flickr の画像URLの仕様については、エントリー末尾の参考リンクがとても分かりやすかったです。FlickrImage#thumbnail_url, FlickrImage#original_url の URL。
- Ruby の関連記事
- Gemの作り方(Ruby Gem)
- ローカル開発中のgemをGemfileに書いてインストール
- 熊本地震の余震が夜に多いのは本当か?Rubyプログラムで検証してみた
- El Capitanでgemのnative extensionビルド失敗に対応
- Rubyで親クラスから子クラスの定数を参照
- MacabをRubyで使う
- rbenv/ruby-buildでRuby最新バージョンをインストール
- Rubyでクラスインスタンス変数にインスタンスメソッドからアクセス
- 距離1kmあたりの緯度・経度の度数を計算(日本・北緯35度)
- Google Maps Geocoding APIで住所から緯度・経度を取得するRubyコード
Leave Your Message!