rubyでFlickrに全写真アップロード
いよいよFlickrに全写真をアップロード。
Flickr.rb
# -*- encoding: utf-8 -*- require 'pp' require 'rubygems' require 'flickraw' class MyFlickr < FlickRaw::Flickr API_KEY='' SHARED_SECRET='' ACCESS_TOKEN='' ACCESS_SECRET='' def initialize FlickRaw.api_key = API_KEY FlickRaw.shared_secret = SHARED_SECRET @flickr = FlickRaw::Flickr.new @flickr.access_token = ACCESS_TOKEN @flickr.access_secret = ACCESS_SECRET end def uploadPhotos(path=".") Dir.chdir(path) pp Dir.pwd Dir.glob('*.{jpg,jpeg,png}',File::FNM_CASEFOLD).each do |f| puts "#{f}" begin photo = @flickr.photos.search(:user_id => 'me', :text => "#{f}") if photo.to_a.empty? then @flickr.upload_photo "#{f}", :title => "#{f}", :is_public => 0, :is_friend => 0, :is_family => 0 puts "#{Time.now} upload success #{f}" else puts "#{f} is already uploaded." end rescue => ex puts "#{Time.now} error raised" puts ex.message end end end end
uploadFlickr.rb
# -*- encoding: utf-8 -*- require 'pp' require 'rubygems' require 'flickraw' $:.unshift(File.dirname(__FILE__)) # http://cyakarin.kuronowish.com/index.cgi?path require './Flickr.rb' myflickr = MyFlickr.new if ARGV.size == 1 then myflickr.uploadPhotos ARGV[0] else myflickr.uploadPhotos end
これでFlickrに写真を全てアップロード出来る。
既にアップロードされているかどうかを毎回検索してアップロードされて
いなければアップロードする、という処理を行なっている。
なので非常に遅い・・・。
次はアップロードされている写真をsqliteかなんかのDBに格納しておいて、
そのDBと比較してアップするか否かを決める方針にしたい。