はてなダイアリーバックアップスクリプトで古いファイルを削除する
前回書いたスクリプトを使って毎日(更新しないのに毎日取ってる)取得しているのでそれなりに早いペースで保存データが増えていきます。
とりあえず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 } #データ削除終わり
データ取得部分は人のコードを使ったのできれいですが、削除部分はあんまりきれいじゃないかもしれませんね。