[Plagger]フィード内の pemalink, body 以外を書き換える時のスマートな方法は? - suVeneのアレ

[Plagger]フィード内の pemalink, body 以外を書き換える時のスマートな方法は?

昨日の件は、とりあえず対応したのだけれども、何点か疑問がある。

昨日の件ってのは、要約すると Feed 中の link フィールドに何らかのフィルタリングや変換を必要とする時の話。

んで、最初の疑問が、それを実現する時どのような方法を取るのがスマートなのかって事。
今回取った対応は、link フィールドだから Filter-TruePermalink/livedoor_clips.yaml 作って

rewrite: |
if ($args->{feed}->url =~ m!http://clip\.livedoor\.com/rss/clips!) {
s|%23|#|g;
}

みたいな感じで、Permalink を修正。
でも、Permalink が直っても、Publish::HatenaBookmark と Publish::Delicious がサーバにポストするフィールドが $entry->link だから、そこも書き換えないとならない。
で、無理やり yaml の中で書き換え。

rewrite: |
if ($args->{feed}->url =~ m!http://clip\.livedoor\.com/rss/clips!) {
if (s|%23|#|g) {
$args->{entry}->link($_);
return 1;
}
}

これでうまくいくことはいくんだけど、こんなところで permalink 以外のフィールド置換してよいのかな。
なんか設計思想から外れている気もする。

かといって、Filter::RewriteEnclosureURL ってのは、相対位置書き換えるような処理だし、Filter::Regexp ってのは、body 限定の置換っぽいし。
ふーむ。

次に、Filter 系のパッケージって 出力や加工に対して処理する事が多そうなんだけど、入力自体にフィルタする方法がよくわからない。
Aggregator::Simple を使う事がほとんどだと思うんだけど、Feed 解析して Entry 取得する際にフィルタリングできてもよい気がする。
例えば NGワード とか、取得したくない URL だとか Publish でフィルタするのってタイミング的に遅いような。
なんか方法あるのかな。

だれか、俺の疑問に答える余裕のある人答えてください!PlaQ

* あと、#plagger-ja って誰でも部屋入っていいのかなw

* 関連記事
suVeneのあれ: みちアキ氏に嫌われた

スポンサーリンク
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。