朝から咳が止まらず、微熱気味だったので有給取得。連休中に直してしまわないと…。
tokuhirom さんから、「wassr で先頭に hsbt: つきで発言するのはなんなんだろう」と質問されたのでちょっと調べてみた。
オレの場合、Twitter が一次情報でそこから wassr や frepa に転送してたりするので、 Publish::Twitter(Net::Twitter) や twitter.tt あたりで挿入しているのかなあと思って調べてみたけど、特にそれらしいものをわざわざくっつけているような動きは無し。処理の途中でくっつけていないとしたら元データということで Twitter の Atom を調べてみたら案の定 Feed の title や content の先頭に UserID をくっつけてくれている。
そんなわけで Twitter の Feed から先頭の UserID を取り除く Filter::TwitterFeed を書いてみた。
package Plagger::Plugin::Filter::TwitterFeed; use strict; use base qw( Plagger::Plugin ); our $VERSION = '0.01'; sub register { my($self, $context) = @_; $context->register_hook( $self, 'update.entry.fixup' => \&filter, ); } sub filter { my($self, $context, $args) = @_; return unless $args->{feed}->url =~ m!^http://twitter\.com/!; if ($args->{entry}->title =~ /^(.*)?:\ (.*)?$/) { my $strip_title = $args->{entry}->title; $strip_title =~ s/^(.*)?:\ //g; $args->{entry}->title($strip_title); $context->log(info => "Strip username in title: " . $args->{entry}->title); } if ($args->{entry}->body =~ /^(.*)?:\ (.*)?$/) { my $strip_body = $args->{entry}->body; $strip_body =~ s/^(.*)?:\ //g; $args->{entry}->body($strip_body); $context->log(info => "Strip username in body: " . $args->{entry}->body); } } 1; __END__
かなりアレな臭いがするので誰か添削してください。
例えば、register_fook の所で update.entry.fixup と update.feed.fixup の違いを最初わかってなくて何度やっても
$args->{entry}->title
にアクセスできなくて困ったり、参照とか置換とかよくわからなくてわざわざ strip_title なんて変数を作って{entry}->title に再設定しているあたりが perl レベルのしょぼさを醸し出している。