flickr apiをrubyで使う
ruby cookbookに載ってたので使って見ることにしました。
以下はソース.一部変更してあります(文字列操作の部分 + の部分を << に変更 )
require 'open-uri' require 'rexml/document' require 'cgi' FLICKR_API_KEY = 'your api key' def flickr_call(method_name, arg_map={}.freeze) args = arg_map.collect {|k,v| CGI.escape(k) << '=' << CGI.escape(v)}.join('&') url = "http://www.flickr.com/services/rest/?api_key=%s&method=%s&%s" % [FLICKR_API_KEY, method_name, args] doc = REXML::Document.new(open(url).read) end def pick_a_photo(tag) doc = flickr_call('flickr.photos.search', 'tags' => tag, 'license' => '4', 'per_page' => '1') photo = REXML::XPath.first(doc, '//photo') small_photo_url(photo) if photo end def small_photo_url(photo) server, id, secret = ['server', 'id', 'secret'].collect do |field| photo.attribute(field) end puts "http://static.flickr.com/#{server}/#{id}_#{secret}_m.jpg" end pick_a_photo('elephants')
結果は以下のようになりました
なかなかシンプルで綺麗なコードだったので打つだけでも勉強になりました。( ・∀・)
特に、
def small_photo_url(photo) server, id, secret = ['server', 'id', 'secret'].collect do |field| photo.attribute(field) end puts "http://static.flickr.com/#{server}/#{id}_#{secret}_m.jpg" end
ここら辺の使い方を丁度知りたかったところなので、ためになりました。xmlの処理部分がいい味を出してると思います。まぁこんな事しなくてもFlickrのサイトに使えるライブラリについての説明がなされてましたけどね
はてさて、次は何をしようかな...