MT形式のエクスポートファイルをパースして画像を保存するRubyスクリプト
嫁ブログをブログ人からココログフリーに移行したのだが、
ブログ人で長年アップしてきた画像が無くなってしまうのが嫌でプログラムした。
MT形式のエクスポートファイルを元に画像(jpeg)のURLを抜き出して
画像が保存されているディレクトリ構成も意識してダウンロードする。
動かしたのはブログ人でエクスポートしたファイルだけだが
他サービスで出力したファイルでも動くと思う。
jpegだけ対象なのは嫁がjpegしか使わないから。
それ以外の画像ファイルに対応するなら正規表現をちょろっと書き換えればよい。
#!/usr/local/bin/ruby require "FileUtils" require "open-uri" puts "start" filename = "/usr/local/hoge/post.txt" # MT形式のエクスポートファイルのパス。自分の環境に合わせる。 basedir = "/usr/local/hoge/photo/" # 画像の出力先のベースとなるディレクトリ。自分の環境に合わせる。 open(filename) do |file| while l = file.gets l.scan(/"(http:\/\/foo.blog.ocn.ne.jp\/foobar_blog\/\S*.JPG)"/i).flatten.each do |url| # 自分の環境に合わせる。 dir = url.slice(38,url.rindex("/")-37) #index以降のディレクトのパスを取得。マジックナンバーがきもい。手抜き。自分の環境に合わせる。 if dir dir = basedir + dir FileUtils.mkdir_p(dir) unless File.exist?(dir) else dir = basedir end puts url filename = File.basename(url) open(dir + filename, "wb") do |out| open(url) do |jpg| out.write(jpg.read) end end end end end puts "end"