« Perlでfc2ブログに投稿する | メイン | Plagger::Plugin::Publish::FC2 / ver0.02 »

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

調子に乗ってPlaggerのPlugin作った。 Plagger側のエントリーひとつごとにFC2エントリーをひとつ投稿するタイプ。 テストしてたらFC2の1日最大投稿数が30までらしく激しく怒られますた。 よく考えたらdescriptionにbodyしか入れてないのでlinkにとばねえじゃん。 というわけで、使うときはtemplatizeさせるように。

 
package Plagger::Plugin::Publish::FC2;
use strict;
use base qw( Plagger::Plugin );

our $VERSION = 0.01;

use RPC::XML::Client;
use Encode;

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) = @_;
  $self->{client} = RPC::XML::Client->new('http://blog.fc2.com/xmlrpc.php');
}

sub post_entry {
  my($self, $context, $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', $args->{entry}->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

=head1 AUTHOR

Yusuke Wada

=head1 SEE ALSO

L<Plagger>, L<RPC::XML::Client>, L<http://blog.fc2.com/>

=cut

トラックバック

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

コメントを投稿

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


ブログSEO対策:track word seo