flickrの画像を取得しよう、ちょっと調べてみた。 Flickr Servicesを眺めてみると、Rubyには3つのライブラリがあるらしい。 googleに尋ねてみると、rflickrが情報量が豊富だった。Railsからも簡単に使えるしね。
ただ画像検索するだけなら、ライブラリを使うまでも無かったorz。 このサイトを参考に、サンプルを動かしてみたら、画像urlが取れた。 なんとなくhpricotに対応してみた。 あんまりコードは変わってないけど。
ちなみに、画像フォーマットをpngやgifにしたり、画像サイズを変更するのは、URLの変更でできるそうな。
require 'rubygems'
require 'net/http'
require 'cgi'
require 'hpricot'
FLICKR_BASE_URL = "http://api.flickr.com/services/rest/?"
FLICKR_API_KEY = ""
# 利用するAPIを指定する
# (参考) http://www.flickr.com/services/api/flickr.photos.search.html
apiName = "flickr.photos.search"
# 検索キーワードを指定する
searchKeywords = "blue sky"
# 検索で取得するリストの数を指定する
itemNum = "10"
# 並び替える方法を指定する(人気の高い順)
sort = "interestingness-desc"
# 出力フォーマットを指定する
outputFormat = "rest"
parameters = {
:api_key => FLICKR_API_KEY,
:method => apiName,
:text => searchKeywords,
:sort => sort,
:per_page => itemNum,
:format => outputFormat
}
paramString = (
parameters.collect { |key,value| "#{key}=#{CGI::escape(value)}" }
).join('&')
url = URI.parse( FLICKR_BASE_URL + paramString )
# 得られえたxmlから画像を取得するためのURLを作成する
# (参考) http://www.flickr.com/services/api/misc.urls.html
doc = Hpricot.XML(Net::HTTP.get( url ) )
(doc/:photos/:photo).each {|element|
title = element.attributes["title"]
farm = element.attributes["farm"]
server = element.attributes["server"]
id = element.attributes["id"]
secret = element.attributes["secret"]
imageURL = "http://farm#{farm}.static.flickr.com/#{server}/#{id}_#{secret}_t.jpg"
puts imageURL
}