| Plagger documentation | Contained in the Plagger distribution. |
Plagger::Plugin::Filter::HatenaDiaryKeywordLink - HatenaDiary keyword link
- module: Filter::HatenaDiaryKeywordLink
This plugin queries Hatena Diary (http://d.hatena.ne.jp/) using its Keyword AutoLink API to link to hatena keyword.
Tokuhiro Matsuno
| Plagger documentation | Contained in the Plagger distribution. |
package Plagger::Plugin::Filter::HatenaDiaryKeywordLink; use strict; use base qw( Plagger::Plugin ); use URI; use XMLRPC::Lite; our $XMLRPC_URL = 'http://d.hatena.ne.jp/xmlrpc'; sub register { my($self, $context) = @_; $context->register_hook( $self, 'update.entry.fixup' => \&update, ); } sub update { my($self, $context, $args) = @_; $context->log(info => "hatena diary keyword auto link start : " . $args->{entry}->link); my $rpc = XMLRPC::Lite->new; $rpc->proxy($XMLRPC_URL); my $body = $args->{entry}->body; my $res = $rpc->call('hatena.setKeywordLink' => { body => XMLRPC::Data->type('string', $body), a_target => '_blank', a_class => 'keyword', }); if (my $fault = $res->fault){ for (keys %{$fault}){ $context->log(error => "hatena diary keyword auto link failed : $_ => " . $fault->{$_}); } } else { $body = $res->result; $body =~ s/</</ig; $body =~ s/>/>/ig; $body =~ s/"/"/ig; } $args->{entry}->body($body); } 1; __END__