flickrjはいけそうだ
flickrj(http://sourceforge.net/projects/flickrj/)はいい感じです。Ruby用に作られたいくつかのFlickr API Kitに比べると冗長なところはありますが、機能的な問題はなさそうです。JRubyから無事にアップロードや検索ができました。
require 'java' import 'java.io.FileInputStream' import 'com.aetrion.flickr.Flickr' import 'com.aetrion.flickr.RequestContext' import 'com.aetrion.flickr.REST' import 'com.aetrion.flickr.auth.Permission' import 'com.aetrion.flickr.photos.SearchParameters' import 'com.aetrion.flickr.uploader.Uploader' import 'com.aetrion.flickr.uploader.UploadMetaData' API_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' SHARED_SECRET = 'XXXXXXXXXXXXXXXX' AUTH_TOKEN = nil PROXY_HOST = nil PROXY_PORT = nil rest = REST.new if PROXY_HOST != nil && PROXY_HOST != '' rest.setProxy(PROXY_HOST, PROXY_PORT) end flickr = Flickr.new(API_KEY, rest) authInterface = flickr.getAuthInterface requestContext = RequestContext.getRequestContext requestContext.setSharedSecret(SHARED_SECRET) if AUTH_TOKEN != nil && AUTH_TOKEN != '' auth = authInterface.checkToken(AUTH_TOKEN) else frob = authInterface.frob url = authInterface.buildAuthenticationUrl(Permission::WRITE, frob) p url.to_s gets auth = authInterface.getToken(frob) end requestContext.setAuth(auth) uploader = Uploader.new(API_KEY, rest) meta = UploadMetaData.new meta.title = 'test!' file = FileInputStream.new('XXXXXXXX.jpg') uploader.upload(file, meta) file.close nsid = flickr.getPeopleInterface.findByUsername('shakiyam').getId param = SearchParameters.new param.setUserId(nsid) param.setExtrasDateTaken(true) flickr.getPhotosInterface.search(param, 10, 0).each do |photo| puts "#{photo.title} #{photo.getDateTaken}" end
P.S. jickrは"This project is currently suspended"とあったのでダメですね。