ちょっと実験がしたくてなんかたくさんの人が使っているらしいfc2ブログを使ってみてます。 MovableTypeで使われているXML-RPCが実装されてらしくて、Perlからは以下のコードでポストできました。 最初Net::MovableTypeを使ってみたけど、文字化けた。
#!/usr/bin/perl
use strict;
use warnings;
use RPC::XML::Client;
my $client = RPC::XML::Client->new('http://blog.fc2.com/xmlrpc.php');
my $blogid = 'blogid';
my $userid = 'mail@address';
my $password = 'password';
my $req = RPC::XML::request->new(
'metaWeblog.newPost',
RPC::XML::string->new($blogid),
RPC::XML::string->new($userid),
RPC::XML::string->new($password),
RPC::XML::struct->new(
'title' => RPC::XML::string->new("タイトル"),
'description' =>
RPC::XML::string->new("本文です。"),
'mt_convert_breaks' => RPC::XML::string->new("0"),
),
RPC::XML::boolean->new('true'),
);
my $res = $client->send_request($req);
my $new_id;
if( $res->is_fault ){
print $res->value->{faultString} . "¥n";
}else{
$new_id = $res->value;
}
$req = RPC::XML::request->new(
'mt.setPostCategories',
RPC::XML::string->new($new_id),
RPC::XML::string->new($userid),
RPC::XML::string->new($password),
RPC::XML::array->new(
RPC::XML::struct->new(
'categoryId' => RPC::XML::string->new('1'),
)
),
);
$res = $client->send_request($req);
if( $res->is_fault ){
print $res->value->{faultString} . "¥n";
}

