ブ日記「ヅラずれなるままに」にコメントスパムがけっこう多く来るようになってきた。
tDiary 1.4.4 (今や旧バージョン)で運用していたので、コメントスパム対策用プラグインとかを入手することもできない。
どうせもう更新する気もないので、tDiary の CGI を停止して、日記データをすべてHTMLファイル化しておいた。

以下、手順というかだらだらとした流れ。
ひとことで言うと、けっきょく、wget でHTMLファイル化ってことだけど……

日記量の調査
日記データベース(tdiary.conf の @data_path で指定したパス)内にある text ディレクトリを見たら、341日分のデータがあった。
yasqueeze プラグインが生成したファイルも 341日分あった。
ということは、たぶん 341日分の日記があるんだなと考えた。

HTML化するページの一覧を作成
http://www.nilab.info/zurazure/20021106.html というようなURLでアクセスすると1日分の日記を表示するようにしていたので、そんな感じで 341日分のURLのリストを作成。
月別ページ 200211.html のようなURLの一覧も作成。
トップページ(index.html)も欲しい。

トップページのHTMLファイル化
原型をとどめていて欲しいので、普通にWebブラウザから保存して index.html というファイルにする。

日別ページ取得前の調整
日別ページ/月別ページから排除するために、飾り類(検索窓ヅラサーチ、Amazon検索窓など)を削除する。
コメントフォームを表示しないようにする。skel/diary.rhtml 内で if not opt['hide_comment_form'] and opt['long_mode'] then %> とあるのを if not true and opt['long_mode'] then %> と書きかえる。ホントは hide_comment_form を設定すればいいんだと思うんだけど……

日別ページ/月別ページのHTMLファイル化
zurazure_list.txt というファイルに取得対象ページのURLの一覧を記述する。
wget -k -i zurazure_list.txt でHTMLファイルを取得する。これで、Webブラウザからの見た目で取得できるはず。

スタイルシートや画像を準備
theme ディレクトリ以下等にある必要なスタイルシートや画像などを退避しておく。

ローカルで閲覧テスト
HTML・画像・スタイルシートなどをローカル環境で揃えて、CGI無しで閲覧できるか確認する。

で、サーバのCGIスクリプトもろもろとHTMLファイル群を、サクっと入れ替える。これでたぶんOK.

2002-11-06 ~ 2005-04-18 で 341日分。
できれば、HTMLファイルに一発変換してくれる機能が標準装備だとうれしいなぁ……いろんな blog システムで。

ボツになった別案 その1
日記データベースをなんとかしてHTML化する → めんどいからボツ。

ボツになった別案 その2
yasqueeze プラグインが生成しHTMLをそのまま利用する → 途中から導入したプラグインなので全データがうまくいっているか不安&HTMLの内容がWebブラウザで見たときと違うからボツ。

とりあえず、いままでありがとう tDiary 1.4.4!


コメント

Webサーバのアクセスログを見て。

/zurazure/20030304.html とかの Not Found.
tDiary の [前日][翌日] リンクは、日記があろうとなかろうと前日・翌日に移動しようとする。
tDiary の CGI は、日記が存在しないページでは「XXXX年XX月XX日の日記は存在しません」のように表示される。
で、CGI->HTML化したときに、存在しない日記の存在しないページの HTML は作らなかったので、[前日][翌日]で日記のないページに移動しようとすると 404 Not Found になってしまう。

ちなみに、
はてなダイアリーでは、[前の日][次の日]リンクは、ちゃんと日記の存在するページに移動しようとする。
はてなダイアリーをHTML化するときは、この問題は出なさそう。

tags: zlashdot Weblog

Posted by NI-Lab. (@nilab)