Tumblr画像をRubyでバックアップ

Tumblr画像をバックアップできないかなぁと思ってツールを探してみたのだけれどMac用しか見つからない。
なのでRubyで組んでみた。
もっとうまい組み方とかあるんだろうけどとりあえず動いたのでこれでいいかと・・・

require 'rubygems'
require 'tumblr'
require 'xmlsimple'
require 'mechanize'

#自分のTumblrアドレス
tmb = 'hoge.tumblr,com'
#保存先フォルダ
savepath = ENV["HOME"] + 'tumblr/'

#すべての登録情報をXMLに保存
Tumblr::API.read(tmb) do |pager|
  data = Tumblr::Data.new
  0.upto(pager.last_page) do |n|
    puts "get #{n}/#{pager.last_page}"
    data << pager.page(n)
  end
  data.save(File.join(ENV["HOME"], "backup.xml"))
end

#保存したXMLから最大画像サイズのjpgのみ保存
agent = Mechanize.new
xml = XmlSimple.xml_in(File.join(ENV["HOME"], "backup.xml"))
xml['posts'].each do|psts|
  psts['post'].each do|pst|
    pst['photo-url'].each do |url|
      #Jpeg画像以外は取得しない
      unless url['content'] =~ /jpg/
        #画像名取得
        jpg_id = url['content'].split('/')
        #最大サイズ画像(width=1280)は拡張子が付いていないので保存ファイル名に付加
        fname =File.join(savepath, jpg_id[jpg_id.length-1]) + '.jpg'
        #ダウンロード済みファイルは上書きしない
        unless File.exist?(fname)
          puts "downloading url : " + url['content']
          jpg_file = open(fname, 'w')
          jpg_file.print agent.get_file(url['content'])
          jpg_file.close
        end
      end
    end
  end
end

こんな感じでとりあえずバックアップができた。
ファイル名取得とかその辺はきっと正規表現とか使えばもっとスマートになるんだろうけど
まだまだ勉強中なので美しくないコードなのです

なお、Tumblrデータ取得部分はruby-tumblrをつくりました - ¬¬日常日記を参照させていただきました。