RSSファイルの各item
description
とcontent:encoded
が、両方ともエントリの内容そのまんまというのはどうも無駄な感じが否めないので、description
は最初の段落のみ、content:encoded
はこれまで通りエントリの内容のフルコピーというようにしました。
最近のRSSリーダーはcontent:encoded
優先というものが多いと思うので、あんまり問題ない(今までどおりとも言う)んじゃないかと思ってます。RSSファイルのサイズがかなり減るという利点も。
実装は単純明快に、
sub make_excerpt {
my $out = $_[0];
$out =~ s!\x0D\x0A|\x0D|\x0A!!g;
$out =~ s!^(.*?)</p>.*$!$1!g;
$out =~ s!<.*?>!!g;
return $out;
}
最初のp
要素の閉じタグまで抜き出すとしました。substrでうまく切る方法を思いつかなかったので、こんな実装になったのは秘密です。utf8モジュールないしなぁ、ここ。かといって、要約生成するためにJcodeモジュールで一旦EUC-JPに変換して処理するとかもなんか手間がかかるわりに報われないかなと。ざっと自分のエントリを眺めたところ、大体はタイトルと最初の段落で概要はつかめそうだったので、これで良い事にします。
うちで配っているRSS関連スクリプトは、軒並みcontent:encoded非対応だったりするわけですが。そろそろ対応しようかなとか思うんですが、HTML出力限定という作りになっていないので、なかなか対応しづらいんですよね。
もし、description
がエントリ内容のフルコピーであるRSSファイルがどうしても必要という場合は、別のflavour作って対応しますので、ヨコセとコメントで要求してください。