カラクリスタ

Jane Viewのログをbbs2chReaderに移行する

  • JaneView から Firefox + bbs2chreader + Foxage2ch に移行した。

ずっと前、たしかこの Blog 書き始める前に一度、Jane(View)のログを bbs2chreader に移行できないか、とごにょごにょしていた事はあったんだけど、そのときは確かログが見れるけど新着がうまく認識できなかった、とかなんとかであきらめていた。

で、今回気まぐれに試してみたら、ログも見れるし、新着も認識できるようだったので、Jane(View)のログを bbs2chreader に移行した。

Jane(View)のログを bbs2chreader に移行する場合、 dat はそのままでいいんだけど、 idx の形式が違う(ただし、両方ともテキスト)ため、そのままでは読み込めない。

幸い変換して認識させるのに必要な情報は Jane の idx ファイルに含まれていたので、Jane->bbs2chreader の変換は問題なくできた。

が、いかんせん量が多いので、手作業でやるのは無理。ということで Perl でスクリプト書いて、自動的に変換した。以下そのスクリプト。

#!/usr/bin/perl
use strict;
use warnings;
use FileHandle;
use File::Find;
use File::Path;
use File::Copy;
use File::Spec;
my $jane_dat_dir    = 'Jane2chのログディレクトリのパス';
my $bbs2ch_dat_dir  = 'bbs2chreaderのログディレクトリへのパス';
my $fh = FileHandle->new();
find(sub {
my $fn = $File::Find::name;
return if ( -d $fn );
return if ( !-r $fn );
return if ( $fn !~ m{/\d+\.idx$} );
my ( $name ) = ( $fn =~ m{/(\d+)\.idx$} );
my ( $title, $line_count, $last_mod, $path ) = parse_idx( $fn );
my ($jane_path) = ( $fn =~ m{^(.*)/\d+\.idx$} );
my $bbs2ch_path = File::Spec->rel2abs( "$bbs2ch_dat_dir/$path" );
my $jane_dat    = File::Spec->rel2abs( "$jane_path/$name.dat" );
my $bbs2ch_dat  = File::Spec->rel2abs( "$bbs2ch_path/$name.dat" );
my $bbs2ch_idx  = File::Spec->rel2abs( "$bbs2ch_path/$name.idx" );
print "$path/$name.dat\n";
eval { mkpath( $bbs2ch_path ) };
if ( $fh->open( $bbs2ch_idx, '>') ) {
print $fh &template( $title, $line_count, $last_mod );
copy( $jane_dat, $bbs2ch_dat );
}
else {
die;
}
}, $jane_dat_dir);
exit(0);
# -- Subroutines --------------------- #
sub parse_idx {
my ( $path ) = @_;
my ( $title, $line_count, $last_mod, $dir )
= (q{}, q{}, q{}, q{});
my @lines = ();
$path = File::Spec->rel2abs( $path );
if ( $fh->open("< $path") ) {
@lines = <$fh>;
}
$fh->close;
for my $line ( @lines ) {
chomp($line);
}
$title      = shift @lines;
$last_mod   = shift @lines;
$line_count = shift @lines;
for my $line ( @lines ) {
if ( $line =~ m{^http://(.*?)$} ) {
$dir = $1;
last;
}
}
return ( $title, $line_count, $last_mod, $dir );
}
sub template {
my ( $title, $line_count, $last_mod ) = @_;
my $tmpl = "title=$title\nlineCount=$line_count\nlastModified=$last_mod";
return $tmpl;
}

ライセンスは MIT-License で。

使い方は、最初の方の$jane_dat_dir$bbs2ch_dat_dirを各環境に合わせて変更して、

$ perl jane2bbs2ch.pl

で実行するだけ。

ただし、パスの設定間違えると大変悲惨なことになる(作ってる途中でそうなった)ので、要注意。あと無保証なので、各自自己責任で使ってください。えらいことになったとか言われても知りません。

ちなみに Firefox + bbs2chreader + Foxage2ch は非常に快適。今まで巡回するのにそこそこ時間がかかっていたのが、巡回時間を大幅に縮小された。ま、巡回スタイルにもよるんだろうけど。

あとこの組み合わせは OS に依存しない(たぶん)ので、Windows のログを Linux 系に移植するとかできそう。

ただ、ID の色分けとかスレの抽出、画像とかのその場での表示なんかは、Skin でやる必要があるので、そのあたり、ちょっと面倒かも。まあでも、やろうと思えば livedoorReader みたいな快適インターフェイスを構築することもできるので、長所なのか、短所なのか分かりませんが。

ま、なんか作ったら公開します。