- 更新日: 2015年3月11日
- Ruby
Getty Images APIでRubyを使って画像検索
Getty Images の API を Ruby から使って試してみたので、コードを残しておきます。Getty Images は、写真が膨大にストックしてあるウェブサイトです。API が公開してある。
ストックフォト、ロイヤリティフリー写真、ビデオ映像、音楽 | Getty Images
Getty Images API – Connect Image API: Stock Photo and Video API Integration Service | Getty Images
API ドキュメントについては、以下の GitHub ページ等を参照、Ruby 用のライブラリも用意してありました。
https://github.com/gettyimages/gettyimages-api
https://github.com/gettyimages/gettyimages-api_ruby
Swagger UI
APIキー取得とRubyライブラリを使うための準備
まず、API key と secret を取得するために、Mashery Member のアカウントを取得する必要があります。既に持っていればサインイン。
Register for an account | Getty Images API
サインアップしたら、サインインして API key と secret を取得します。
Ruby 用のライブラリは、現時点(2015/03/11)で rubygems.org に公開されていないので、ローカルに落としてビルドする。README 通りに進めればOK。
1 2 3 4 |
$ cd connect_sdk_ruby/ConnectSDK $ bundle exec rake install |
Getty Images からキーワードで画像を検索して取得するコード
以下のコードを書いてみました。テスト用なので、例外処理などいい加減です。レスポンスは JSON で返ってきます。API key, API secret の箇所は取得したものに変更。
test_getty_images.rb
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 |
#!/usr/bin/env ruby require "ConnectSDK" GETTY_API_KEY = "API key" GETTY_API_SECRET = "API secret" $connect_sdk ||= ConnectSdk.new(GETTY_API_KEY, GETTY_API_SECRET) def getty_images(keyword) response = $connect_sdk.search().images().with_phrase(keyword).with_page(1).with_page_size(10).execute()["images"] rescue [] getty_images = [] response.each do |res| thumb_url = res["display_sizes"].select{ |i| i["name"] == "thumb" }.first["uri"] rescue "" getty_images << { id: res["id"].to_s, title: res["title"].to_s, thumb_url: thumb_url.to_s } end getty_images end getty_images("mountain").each do |item| puts "--------------------------------------------------" puts item[:id] puts item[:title] puts item[:thumb_url] end |
ConnectSdk.new で作ったオブジェクトに、メソッドをチェインして検索の条件を追加していく書き方で、JSONレスポンスを取得できます。画像検索用のAPIですと、以下ソースの define_method で定義してある with_*** のメソッドが使える。
https://github.com/gettyimages/gettyimages-api_ruby/blob/master/ConnectSDK/lib/SearchImages.rb
ファイルに実行権を与えてテスト。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ chmod 755 test_getty_images.rb $ ./test_getty_images.rb -------------------------------------------------- 200366333-001 Mountain top, Chugach Mountains, Alaska, USA, elevated view http://cache3.asset-cache.net/xt/200366333-001.jpg?v=1&g=fs1|0|DV|63|331&s=1&b=OTg3 -------------------------------------------------- sb10068806o-001 Snowcapped mountains and overcast sky http://cache4.asset-cache.net/xt/sb10068806o-001.jpg?v=1&g=fs1|0|TSIR|80|611&s=1&b=RA== -------------------------------------------------- 518697085 Bow Valley http://cache4.asset-cache.net/xt/518697085.jpg?v=1&g=fs2|0|editorial255|97|085&s=1&b=QQ== ... |
検索条件にあった画像の情報を取得できました。簡単に使えて良い感じですね。商用利用に関してとか利用規約の詳細をまだ確認してないので、実際に使用するかどうかはまだ決めていませんけれど。
- 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!