読者です 読者をやめる 読者になる 読者になる

はてなダイアリーバックアップスクリプトで古いファイルを削除する

FreeBSD Ruby

前回書いたスクリプトを使って毎日(更新しないのに毎日取ってる)取得しているのでそれなりに早いペースで保存データが増えていきます。
とりあえず1週間分を保存しておけばいいだろうということで、1週間前を基準日としてそれ以前のファイルを削除するようにしました。

なお、前回書いたスクリプト素人がプログラミングを勉強するブログのはてなダイアリーのデータを定期的にバックアップするを使っていたりします。

今回はAvtiveSupportを利用するのでAtomマシン(FreeBSD機)でActiveSupportをインストールしました。

# gem install activesupport

スクリプトの最初で

require 'active_support'

としたところLoadErrorが出たので

require 'rubygems'
gem 'activesupport'
require 'active_support'

として利用しています。

以下今回のコードです。

#!/usr/local/bin/ruby
require 'rubygems'
require 'mechanize'
gem 'activesupport'
require 'active_support'

#データ取得設定
name = "%ユーザ名%"
pass = "%パスワード%"
dir = "%保存フォルダ%"
#データ削除設定(削除基準日を1週間前とし、その日以前のデータを削除)
baseday = 1.week.ago.strftime("%Y%m%d").to_i

#データ取得部
#データを保管するフォルダがなければ作成する
unless File.exist?(dir)
  Dir.mkdir(dir)
end

#はてなにログインする
export = WWW::Mechanize.new
export.post("https://www.hatena.ne.jp/login", {"name" => name, "password" => pass, "persistent" => 1})

#XMLデータを取得する
export.get("http://d.hatena.ne.jp/#{name}/export").save_as("#{dir}/#{name}-#{Time.now.strftime("%Y-%m-%d")}.xml")
#データ取得終わり

#データ削除部
#現在保存されているXMLファイルを取得する
xmllist = Dir.glob("./#{dir}/*.xml")

#各XMLファイルを
xmllist.each { |xmlname|
  #ファイル名から日付を取得する
  date = xmlname.scan(/[0-9]+-[0-9]*-[0-9]*/).to_s.gsub("-","").to_i
  #基準日以前のデータを削除する
  if baseday >= date
    File.delete(xmlname)
  end
}
#データ削除終わり

データ取得部分は人のコードを使ったのできれいですが、削除部分はあんまりきれいじゃないかもしれませんね。