
BBSNote→POTI-boardログコンバータの原型
ログコンバータ概要
ログコンバータの概要はこの記事で。
ソースコード
このログコンバータの原型になったソースコードです。19行しかありません。
<?php
$logfiles_arr =(glob('./data/{MSG*.log}', GLOB_BRACE));
asort($logfiles_arr);
foreach($logfiles_arr as $logfile){
$fp=fopen($logfile,"r");
while($line =fgets($fp)){
list($no,)=explode("\t",$line);
$log[]=$line;
$tree[]=$no;
}
$treeline[]=implode(",",$tree)."\n";
unset($tree);
fclose($fp);
}
arsort($treeline);
file_put_contents('tree.log',$treeline, LOCK_EX);
$log=mb_convert_encoding($log, "UTF-8", "sjis");
arsort($log);
file_put_contents('img.log',$log,LOCK_EX);
BBSNoteのログファイルは1スレッド1発言形式です。
スレッドが1000あれば、ログファイルも1000あります。

それをimg.logとtree.logの2つにまとめます。
プログラムを実行してみる

ログファイルが入ったdataフォルダとログコンバータを図のように配置します。
XAMPPでログコンバータを呼び出して実行します。

img.logとtree.logができました。

tree.logにスレッドのツリーの構造が入りました。
img.logにスレッドの数だけ存在するログファイルの中身をまとめたものができました。
ここまでできれば、あとは時間をかけて調整するだけです。
BBSNoteのタブ区切り形式のログファイルをCSV形式に変換。
変数の位置をあわせる。
元の画像のファイル名をユニックスタイムに変更したものを別フォルダにコピー。
↑
GitHubにソースコードを公開しました。485行。
使い方の説明もここにあります。
変換実績
15件ほど変換してみました。ほぼ問題なく変換できています。
しかし、完全に変換できるのかというと…。
ごくまれにBBSNoteのログファイルの通し番号が重複している事があります。その時は画像のあるスレッドの親を残してレスが消えます。
↑
Pallet TownというCGIのログファイルをrelm形式に変換したものを、このログコンバータでPOTI-board形式に変換したもの。
↑
BBSNoteというCGIのログファイルをPOTI-board形式に変換したもの。
まとめ
これは、どのように開発したのかを綴ったメモですが、POTI-board EVOやログコンバータに興味を持っていただけたなら…。
お絵かき掲示板交流サイト
POTI-board EVOをベースにしたPHPプログラムを使ったお絵かき掲示板交流サイトを運営しています。
投稿大歓迎ですので、どうぞよろしくお願いします。
スマホやタブレットで絵を描いて投稿できます。