スレッド式掲示板である 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=.*">&gt;
      &gt;(.*)</a>
      |&gt;&gt;$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)