先日のVer0.01に手を加えた。主にテンプレート処理を加えたのが改善点。 よって、assets/plugins/Publish-FC2/fc2.ttが必要。 あとXML-RPCのendpointをオプションで変更できるので他のブログサービスにも投稿できると思う。 仕組みが一緒らしいdtiブログってのではうまくいった。 EroPlaでアグリゲートしているようなサイトをルー語Filterかまして、 これで外部ブログにポストとか悪ふざけしてます。乱発厳禁。
package Plagger::Plugin::Publish::FC2;
use strict;
use base qw( Plagger::Plugin );
our $VERSION = 0.02;
use RPC::XML::Client;
use Encode;
$RPC::XML::ENCODING='utf-8';
sub register {
my($self, $context) = @_;
$context->register_hook(
$self,
'plugin.init' => \&initialize,
'publish.entry' => \&post_entry,
);
}
sub rule_hook { 'publish.entry' }
sub initialize {
my ($self, $context, $args) = @_;
my $endpoint_url = $self->conf->{endpoint_url} || 'http://blog.fc2.com/xmlrpc.php';
$self->{client} = RPC::XML::Client->new($endpoint_url);
$self->{template} = $self->conf->{template} || 'fc2.tt';
}
sub post_entry {
my($self, $context, $args) = @_;
my $body = $self->templatize($self->{template}, $args);
my $req = RPC::XML::request->new(
'metaWeblog.newPost',
RPC::XML::string->new($self->conf->{blog_id}),
RPC::XML::string->new($self->conf->{user_id}),
RPC::XML::string->new($self->conf->{password}),
RPC::XML::struct->new(
'title' => RPC::XML::string->new( encode('utf-8', $args->{entry}->title) ),
'description' =>
RPC::XML::string->new( encode('utf-8', $body) ),
'mt_convert_breaks' => RPC::XML::string->new("0"),
),
RPC::XML::boolean->new('true'),
);
my $res = $self->{client}->send_request($req);
if( $res->is_fault ){
$context->log(info => "Error: " . $res->value->{faultString} );
}else{
$context->log(info => "Post entry success. FC2 blog entry id is " . $res->value );
}
}
1;
__END__
=head1 NAME
Plagger::Plugin::Publish::FC2 - Post to FC2 blog automatically
=head1 SYNOPSIS
- module: Publish::FC2
config:
blog_id: your-blog_id
user_id: your-user_id
password: your-password
endpoint_url: endpoint_url #optional
=head1 AUTHOR
Yusuke Wada
=head1 SEE ALSO
L<Plagger>, L<RPC::XML::Client>, L<http://blog.fc2.com/>
=cut
assets/plugins/Publish-FC2/fc2.tt
<p> [% entry.body %] </p> <p> via <a href="[% entry.permalink %]">[% entry.title %]</a> form <a herf="[% feed.link %]">[% feed.title %]</a> </p>

