カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

o2onを導入した

概要: P2Pで2chのdatを共有するo2onを導入した。


将来的に2chブラウザを乗り換えるときに、過去ログの移行であれやこれやと悩まないようにするために、 P2Pで2chのdatを共有するo2onを導入した。

o2onっていうのはプロキシサーバとして動作する2chのdat専用のP2Pで、 これを使うとdat落ちした過去ログとかをP2Pネットワークから引っ張ってきて閲覧可能にする事ができたり、 今まで溜め込んだ2chのdatをo2onにインデックスさせて、他の色んな2chブラウザでdatを共有するみたいなことができる。

ちなみにo2onはP2Pを動作させなくてもログを溜め込むことができるようなので、 単純に2chのdat保存サーバとしても使うことができたりする。

で、今自分が使ってる2chブラウザは謎氏版のbbs2chreaderのα版を使ってるんだけど、 これの開発が今止まっていて、なんか雲行きが怪しかったので、o2on使ってログ移行の手間を無くそうとした次第。

んで今までbbs2chreaderで溜め込んだ2chのdatをo2onにインデックスさせるために、 以下のようなスクリプトを書いて一気に流し込んだ。

#!perl

use strict;
use warnings;

use Path::Class;
use File::Copy;

# get input dir and output dir
my $input   = shift @ARGV or die "Usage: $0 {b2r log-50 dir} {o2on dat dir}";
my $output  = shift @ARGV or die "Usage: $0 {b2r log-50 dir} {o2on dat dir}";
   $input   = dir($input)->absolute->cleanup;
   $output  = dir($output)->absolute->cleanup;

# host table
my %hosts  = (
    '2ch'       => '2ch.net',
    'bbspink'   => 'bbspink.com',
    'machi'     => 'machibbs.com',
);

# move
for my $host ( sort keys %hosts ) {
    if ( -d ( my $source = $input->subdir($host) ) ) {
        for my $board ( $source->children ) {
            next if ( ! $board->is_dir );
            for my $dat ( $board->children ) {
                next if ( $dat !~ m{\.dat$} );
                my $prefix  = substr( $dat->basename, 0, 4 );
                my $from    = $dat;
                my $to      = $output->file( $hosts{$host}, $board->{'dirs'}->[-1], $prefix, $dat->basename );
                   $to->parent->mkpath( 0, 0766 );
                print "$from\n=> $to\n";
                copy( "$from", "$to" );
            }
        }
    }
}

使いかたはスクリプトを保存して、

perl b2r2o2on.pl {bbs2chreaderのlog-50ディレクトリ} {o2onのdatディレクトリ}

で実行。ガーっと一気にo2onのログディレクトリに流し込みます。 で、流し込んだ後にo2onのデータベースを再構築。

ちなみにどうも2chのdatに含まれるノートントラップに反応する場合があるので、 その辺りの除外設定は先にしておいた方がよさげです、 自分の所はAvast!使ってたんだけど、なんだかかんだとやってたら駐在が落ちたという。

で、使ってみた感想。

今のところ、2chの閲覧で特にかわった事はなし。P2P使ってる時の転送量がちょっと気になるんだけど、 これはまあNEGiES使って帯域制限したので特に問題なさそう。 まあ帯域使うって言っても他のP2Pよりかは帯域使わないっぽいので、帯域制限しなくても大丈夫そうだけど、 家はOCNなので一応帯域制限。あと必要ないときはP2Pを切って使ってる。

まあこれで2chブラウザを乗り換えるときログの移行で悩まなくてすむので、 それに関しては結構よさげ。あとお気に入りをどうするかという問題もあるけど、 これはスクリプトでごにょごにょすればなんとかなりそうな気がする。Perl万歳!

とりあえず導入してもそう今までと変わらず。まあぼちぼちと溜め込んでいきますか。