わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

はてなフォトライフの画像ダウンローダ

はてなユーザ名を指定して実行すれば,はてなフォトライフで公開されている画像ファイルを自動的に取得する,Rubyスクリプトを作成しました.コードはいつものようにGistに置いています.
実行にはrubyコマンド(1.8/1.9対応)のほか,wgetコマンドが必要です.
フォルダに入っている画像も,ダウンロードします.また再度実行したとき,取得済の画像はダウンロードしません.
動作は,「画像URLを取得し,一覧ファイルに保存する」ことと「一覧ファイルを読み出して,画像を順に取得する」ことに分かれます(実行時オプションで,それぞれ省略することもできます).このうち前者については,はてなフォトライフ上の写真の一括ダウンロード - 豪鬼メモのコードを使わせていただきました.
現時点で,takehikomの登録画像数は839個です*1.1個ダウンロードするたびに,2秒の待ち時間を入れているので,全ての取得には30分近くかかります.


Rubyの話を一つ書いておくと,File.joinというクラスメソッドを使用しました.「/」か「\」かで,悩まなくてよくなりました.
以下のとおり,途中の引数が空文字列のとき,単純に無視されます.最初・最後の引数が空文字列のときは,得られるパスの先頭・末尾にパスセパレータがついています.

$ pry
[1] pry(main)> File.join("abc","def","ghi")
=> "abc/def/ghi"
[2] pry(main)> File.join("abc","","ghi")
=> "abc/ghi"
[3] pry(main)> File.join("abc","def","")
=> "abc/def/"
[4] pry(main)> File.join("","def","ghi")
=> "/def/ghi"
[5] pry(main)> File.join("abc","","ghi") == File.join("abc","ghi")
=> true

(最終更新:2013-02-23 早朝)

*1:動作確認用に,公開範囲を「自分」としたフォルダを作って画像ファイルを置き,スクリプトを実行すると,画像URLを取得する時点で,対象外となっていました.公開範囲限定のフォルダが見える・見えないについては,http://f.hatena.ne.jp/takehikom/に,ログインする・しないでアクセスして,確認しました.