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


ずっと前、たしかこの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みたいな快適インターフェイスを構築することもできるので、長所なのか、短所なのか分かりませんが。

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

nyarlaが大体

Scrapbox でコメントや意見を書く