« Plagger::Plugin::Publish::FC2 / ver0.01 | メイン | LastFMの最近聞いた曲にAmazonの情報を付加して書き出す »

Plagger::Plugin::Publish::FC2 / ver0.02

先日の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>

トラックバック

このエントリーのトラックバックURL:
http://yusukebe.com/mt/mt-tb.cgi/2123

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


ブログSEO対策:track word seo