labunix's blog

labunixのラボUnix

はてなブログbetaのテキストバックアップ

■きっかけ

 RSS風に更新チェックをしたいということだったので、
 元のスクリプトを壊さないように、突っ込みどころを残して提示しました。
 
 さくらのVPSを使ってシェルプログラミングをしてみよう! Labunixさんからの投稿
 http://www.luyehuizi.com/archives/179


 そのまま載ってしまいましたので、
 これは、ちゃんと書き直さないとw。。。
 そのまま修正してもつまらないので、自分仕様に載せ変えます。
  
■はてなブログbetaのテキストモードバックアップ
 ※画像は取れません。
  
  取得したら「new entry」の件名で、「root」ユーザ宛てにメールを送れます。
  これは「`whoami`」宛の方法は提示済みなので、特に説明しません。
  
  まあ、ちょっとしたRSSの代わりにも使えます。ということで。。。
  ※自分のブログの「new entry」通知なんて、誰が欲しがるのかは置いておいて。。。
  
  スクリプトの動きとして、「BASE」変数ファイルにURLがあれば、
  ダウンロードしたテキスト本文を削除しても、2度目のダウンロードが行われない点が
  「RSS風」なだけで、RSS構文は一切使ってませんのであしからず。。。

$ cat backup_hatenablog_beta.sh
#!/bin/bash
# Author      : labunix
# Description : backup http://labunix.hateblo.jp
# Last Update : 2012/05/12
set -e

# for proxy
PROXY="/etc/profile.d/proxy.sh"
test -x "$PROXY" && . "$PROXY"

# for home directory
echo "$HOME" | grep "`whoami`" | HOME="/home/`whoami`"
cd "$HOME" || exit 1

# for Hatena Blog Beta URL
HURL="labunix.hateblo.jp"
test -d "$HURL" || mkdir "$HURL"
cd "$HURL" || exit 1

# diff settings
HDAY="`env LANG=C date '+%Y%m%d'`.log"
HGET="getlist.txt"
BASE="base.txt"
COMP="comp.txt"
test -f "$HDAY" || touch "$HDAY"
test -f "$HGET" || touch "$HGET"
test -f "$BASE" || touch "$BASE"
test -f "$COMP" || touch "$COMP"

# xml to URL list
w3m -dump_source "http://${HURL}/sitemap.xml" | \
  sed s/'>'/"\n"/g | grep "^http.*[0-9]" | \
  awk -F\< '{print $1}' > "$COMP"

# diff to URL lists
diff --left-column "$BASE" "$COMP" | sed s/"> "//g | grep "^http" > "$HGET"

# getlist
if [ -s "$HGET" ];then
  for list in `cat "$HGET"`;do
    hatena_blogbeta=`echo "$list" | sed s%".*entry"%%g | \
      awk -F\/ '{print $2$3$4"_"$5}'`
    echo "$list -> $hatena_blogbeta" | tee -a "$HDAY"
    w3m -dump "$list" > "$hatena_blogbeta" 2>> "$HDAY"
  done
  find . -mtime -0.2 -exec ls -l {} \; | mail -s "new entry" root
  mv "$COMP" "$BASE"
  unset list hatena_blogbeta
else
  echo "Do Nothing"
fi
unset PROXY HOME HURL HDAY HGET BASE COMP
exit 0

■デバッグで実行したいなら。。。

$ /bin/bash -xv backup_hatenablog_beta.sh

■普通に実行したいなら。。。

$ chmod +x backup_hatenablog_beta.sh && ./backup_hatenablog_beta.sh

■githubにも置いておきました。

 get_new_hatenadialy_backup
 git://github.com/labunix/get_new_hatenadialy_backup.git


■出来たファイル(2回目からは差分しか持ってこない)

$ find labunix.hateblo.jp/ -type f -print | sort -t/ -k 2
labunix.hateblo.jp/20120109_225628
labunix.hateblo.jp/20120125_234531
labunix.hateblo.jp/20120201_225957
labunix.hateblo.jp/20120204_224407
labunix.hateblo.jp/20120215_235429
labunix.hateblo.jp/20120220_225536
labunix.hateblo.jp/20120225_223816
labunix.hateblo.jp/20120303_224721
labunix.hateblo.jp/20120304_194140
labunix.hateblo.jp/20120306_224942
labunix.hateblo.jp/20120401_034517
labunix.hateblo.jp/20120401_204538
labunix.hateblo.jp/20120402_002647
labunix.hateblo.jp/20120402_234628
labunix.hateblo.jp/20120407_191955
labunix.hateblo.jp/20120429_184047
labunix.hateblo.jp/20120430_183541
labunix.hateblo.jp/20120504_003001
labunix.hateblo.jp/20120504_155322
labunix.hateblo.jp/20120506_030620
labunix.hateblo.jp/20120506_031758
labunix.hateblo.jp/20120506_225732
labunix.hateblo.jp/20120510_144326
labunix.hateblo.jp/20120513.log
labunix.hateblo.jp/base.txt
labunix.hateblo.jp/comp.txt
labunix.hateblo.jp/getlist.txt

■対象の元のパターンを確認。
 以下と同じ構成のファイルならば、
 「HURL」変数を変更するだけで、別の方のページも取得できます。

$ w3m -dump_source http://labunix.hateblo.jp/sitemap.xml | \
  sed s/'>'/"\n"/g | grep "^http.*[0-9]" | awk -F\< '{print $1}'
http://labunix.hateblo.jp/entry/2012/01/09/225628
http://labunix.hateblo.jp/entry/2012/01/25/234531
http://labunix.hateblo.jp/entry/2012/02/01/225957
http://labunix.hateblo.jp/entry/2012/02/04/224407
http://labunix.hateblo.jp/entry/2012/02/15/235429
http://labunix.hateblo.jp/entry/2012/02/20/225536
http://labunix.hateblo.jp/entry/2012/02/25/223816
http://labunix.hateblo.jp/entry/2012/03/03/224721
http://labunix.hateblo.jp/entry/2012/03/04/194140
http://labunix.hateblo.jp/entry/2012/03/06/224942
http://labunix.hateblo.jp/entry/2012/04/01/034517
http://labunix.hateblo.jp/entry/2012/04/01/204538
http://labunix.hateblo.jp/entry/2012/04/02/002647
http://labunix.hateblo.jp/entry/2012/04/02/234628
http://labunix.hateblo.jp/entry/2012/04/07/191955
http://labunix.hateblo.jp/entry/2012/04/29/184047
http://labunix.hateblo.jp/entry/2012/04/30/183541
http://labunix.hateblo.jp/entry/2012/05/04/003001
http://labunix.hateblo.jp/entry/2012/05/04/155322
http://labunix.hateblo.jp/entry/2012/05/06/030620
http://labunix.hateblo.jp/entry/2012/05/06/031758
http://labunix.hateblo.jp/entry/2012/05/06/225732
http://labunix.hateblo.jp/entry/2012/05/10/144326