スレッド式掲示板である MegaBBSCGI を利用して書き溜めた IT技術メモ のデータをHTMLファイルに変換して、掲示板過去ログ置場 に移動させた。
MegaBBSCGIでは、データをHTMLファイルとしても持っているが、タイトル部分が別ファイルにあったりするし、本当にこのHTMLファイルにタイトル以外のデータがすべて含まれているかどうかわからない。
そのため、今回は wget でWebサーバ越しにデータを取得した後、自分の都合の良いように変換することにした。
今回の前提条件。
・ジャンル(MegaBBSCGIは複数のジャンル・カテゴリー・掲示板を立ち上げることが可能)はひとつ(computer)しか無い。
・作業は Windows 2000 上で行った。
手順1:
トップページを保存する。
wget http://www.nilab.info/megabbs/computer/
手順2:
過去ログメニューインデックスページを保存する。
wget http://www.nilab.info/megabbs/readtitle.cgi?bo=computer&br=on
手順3:
過去ログメニューインデックスページからURLのリスト(urls.txt)を作成して、wget で全て取得する。
wget -l 0 -x -i urls.txt
手順4:
MegaBBSが更新されないようにするため、Webサーバを停止する。
手順5:
手順3で取得した全てのファイルをリネームする。
コマンドプロンプト(DOS窓みたいな)の rename コマンドで
rename "readres.cgi@bo=computer&vi=1024155306" 1024155306.html
のように実行する。
「&」がファイル名に含まれるため、「"」(ダブルクォーテーション)でくくるのを忘れずに。
今回は、dir コマンドでファイル名一覧を取得し、秀丸エディタのキー操作記録機能「記録開始/記録終了」にて、リネームコマンド実行引数一覧を作っておいて、コマンドプロンプトにコピペして一気に実行させた。
手順6:
HTMLファイルを加工する。
perl のスクリプトを利用した。
# 加工するHTMLファイル名の一覧
# 実際には、今回は129個あった。
@file = (
'./www.nilab.info/megabbs/1024155306.html',
'./www.nilab.info/megabbs/1094825254.html',
'./www.nilab.info/megabbs/1036412362.html',
);
for(@file){
open FH, "< $_";
@line = <FH>;
close FH;
# 上から2行目~上から4行目まで削除
splice (@line, 1, 3);
# 上から4行目~上から10行目まで削除
splice (@line, 3, 7);
# 下から30行目~下から3行目まで削除
splice (@line, -30, 28);
# 上から4行目に文字列を追加
$str = '<a href="index.html">INDEX</a>' . "\n";
splice(@line, 3, 0, $str);
for(@line){
# 1番目のコメントへのリンクを削除 (実際には1行で記述)
$_ =~ s|
<a href=readres.cgi\?bo=computer&
vi=..........&res=1 target=_self>1</a>
|1|gi;
# それぞれのコメントへのリンクを削除 (実際には1行で記述)
$_ =~ s|
<a href="./readres.cgi\?bo=computer&
vi=..........&res=.*&
fi=no" target="_new"
>(.*)</a>
|$1|gi;
# >> が生成するリンクを削除 (実際には1行で記述)
$_ =~ s|
<a href="/megabbs/readres.cgi\?bo=computer&
vi=..........&res=.*">>
>(.*)</a>
|>>$1|gi;
}
open FH, "> $_";
print FH @line;
close FH;
}
手順7:
手順1で取得したトップページや、手順2で取得した過去ログメニューインデックスページを都合の良いように加工する。
手順8:
MegaBBSCGI運用前と運用後でのドメイン名等が異なる場合、リンクの記述で問題が発生している個所があるっぽいので、そのあたりの修正。
手順9:
ウェブサーバからMegaBBSCGIをアンインストールする。
手順10:
Shift_JIS(x-sjis) な HTMLファイル群を、EUCに変換して、ウェブサーバに設置する。
今回は、FFFTPの変換機能を利用した。
ふぅ。それなりに変換完了。
MegaBBSCGI はとても使いやすい掲示板だった (感謝!)
しかし、掲示板の管理画面で HTTP GET にパスワードをそのまま持ちまわすことがあったため、ちょっとセキュリティ的には不安なものを感じて、今回停止することにした。
今までありがとう MegaBBSCGI !
tags: zlashdot Zura
Posted by NI-Lab. (@nilab)