rubyでFlickrに自動アップロード
今までキャプチャにはgyamblr(矩形選択してtumblrにアップ)というソフトを使っていたのですが、
Vista64bitでは動きませんでした(単にtumblr側の仕様変更かもしれませんが)
最新版は2008年のものなのでこのソフトはあきらめ、別の方法を採りました
今回は矩形選択可能なキャプチャソフトとrubyスクリプトでキャプチャするだけで自動的にファイルをアップロードするようにしました
事前にflickrのAPI認証を行ってトークンキーを書き出しておきます(flickr.dat)
詳細はrflickrに同梱のサンプルを見てください
今回使用したスクリプトはこちら
説明は必要ないかと思いますが、このスクリプトのあるフォルダを監視して拡張子がjpe?gかpngのファイルがあったらアップロードし、完了したら削除します
#flickr_uploader.rb
require 'rubygems'
require 'flickr'
flickr = Flickr.new('flickr.dat',
API_KEY,
SECRET
)
while(1)
Dir.glob('*.{jpg,jpeg,png}').each do |f|
begin
flickr.photos.upload.upload_file(f, f)
puts "#{Time.now} upload success #{f}"
File.delete('./' + f)
rescue
puts "#{Time.now} error raised"
end
end
sleep 10
end
[Tips] WindowsやLinuxで標準ブラウザを開く方法 – tetralabo
ここの方法でアップロードしたらブラウザを開くようにしてもいいかもしれません
で、Linuxだと問題なくこいつを&つけてバックグラウンドで動かせばいいのですが(Linuxはキャプチャソフトのほうが問題?)、
windowsだとrubyスクリプトをバックグラウンド(ウィンドウのない状態)で動かす方法がなく(?)、
仕方なくexerb(rubyスクリプトをexeで書き出す)を使うことにしました
今回一番難しかったのはexerbでexeを書き出すことです
flickrの依存でmimeというgemも一緒に入るのですが、これのmime/types.rb.dataというファイルが拡張子がrbじゃないせいかexerbで読み込まれず、
仕方なくmime側を直接書き換えてtypes.rbの中にtypes.rb.dataを追記しました;
これで、
ActiveScriptRubyでruby環境を構築している場合、コマンドプロンプトから
mkexy flickr_uploader.rb
Ctrl+C(スクリプトを終了させる)
exerb -c gui flickr_uploader.exy <- rbじゃないので注意
でflickr_uploader.exeというファイルが出力されます
こいつはウィンドウも何も持たず、キー操作を受け付けないのでタスクマネージャから終了する必要があります
ちなみに矩形選択可能なキャプチャソフトはWinShotを使っています