namazu-ml(avocado)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NetNews記事の検索に関して



古川です。

>> On Wed, 27 Jan 1999 06:13:46 +0900, Kazuhiro Yamaguchi <yamak@xxxxxxxxxxxxxxxxxx> said:
  > 1)Namazuを改造して,Indexをつくる際に,ファイルではなく,
  > NetNews記事内のMessage-IDに対してリンクを張るようにする.
  -> Newsのブラウザが立ち上がり,Message-IDの記事が読める

  > 2)Newsの記事をそれらしいhtml形式に直してくれるcgiを書いて
  > /etc/namazu.conf等で,このcgi経由で記事を見に行くようなリンクが
  > つくられるようにごまかす.
  -> Webのブラウザからでも,それなりに整形された記事が読める

3) データベースを書き換えて、HREF の中身を、"news:..." に置き換える

というスクリプトを作ってみました。Message-ID は NMZ.field.message-id
から読みこんでいます。


NMZ.(f|fi|r) を書き換えます。

すみませんが、簡単なチェックしかしていないので、バグのある可能性はあり
ます。バックアップをとって実行することをお勧めします。

pnamazu に付いている、nmztxt.pl というものが必要です。

------------------------------ ここから ------------------------------
#!/usr/local/bin/perl5
require 'nmztxt.pl';            # from pnamazu

# テンポラリファイルの設定
$FI = 'FLIST_I.tmp';
$FO = 'FLIST_O.tmp';

&nmztxt::init('NMZ');

# データベース -> テキストの変換
&nmztxt::flist2txt($FI);

if (open(MID, "$nmztxt::DbPath.field.message-id")){
    open(FI, $FI);
    open(FO, ">$FO");

    $/ = '';
    while (defined($felem = <FI>)){
        local($/) = "\n";
        last unless defined($mesid = <MID>);
        chomp $mesid;
        $mesid =~ s/^\<//;
        $mesid =~ s/\>$//;
        ($fileno, $r, $dt, $st, $summary, $dd) = split(/\n/, $felem, 6);

        $st =~ s/(HREF\=\")[^\"]*/$1news:$mesid/;
        $dd =~ s/(HREF\=\")[^\"]*(\">)[^\<]*/$1news:$mesid$2$mesid/;

        $felem = "$fileno\n$r\n$dt\n$st\n$summary\n$dd";
        print FO "$felem\n\n";
    }
    close(FI);
    close(FO);

    # データベースに書き戻す
    &nmztxt::txt2flist($FO);
    &nmztxt::end;
    unlink($FO);
}
unlink($FI);
------------------------------ ここまで ------------------------------

# よく似たメールを、昨日も書いたような…

-- 

                                        ヤマハ(株)ピアノプレーヤ設計課
                                                              古川 令
                                             furukawa@xxxxxxxxxxxxxxxx