FC2_piyoのAPIをちょっと試してみた時に書いてみた。大したことはできませんが、使ってみようという奇特な人がどこかにいるかもしれないのでさらしておきます。
まあ、Twitterとは集まってる人間がまた別なので、あまりAPI叩いてIMのステータスやら、ブログやら、SBMやらを更新してもうざがられるだけかもしれませんが(笑)RSSフィードの読み込みも目障りっていう人もいるみたいで。それ言い出すと、毒にも薬にもならない一行コメントみたいなものも、他人が読めば目障りかもしれないわけで、そういう自覚はないのか?と逆に問いたくもなりますが。傍から見てる分には目糞鼻糞なところもあるやろうし、そこを楽しむものでもあるだろうからなぁ。
#!/usr/bin/perl --
my $api_key='your_api_key';
my $pid="your_pid";
my $piyo = Piyo::Simple->new(
api_key => $api_key,
pid => $pid,
);
#http://piyo.fc2.com/api.html
#詳しい説明は上記URLで。
#URLの表示例
$piyo->public(30)->apiurl;
$piyo->send("テストです")->apiurl;
$piyo->comment(30,10)->apiurl;
$piyo->user(fc2piyostaff2,30)->apiurl;
$piyo->status(fc2piyostaff2,f)->apiurl;
#データ取得例
$piyo->status(midoler,f)->getdata;
#メッセージの送信例
$piyo->send("おはようございます")->post;
#XMLパース例
#これはまだまだ
#$piyo->public(30)->getdata->xmlparse;
#--------------------------------
#■package Piyo::Simple;
#--------------------------------
package Piyo::Simple;
use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
use XML::Simple;
use Encode;
use Data::Dumper;
sub new {
my $class = shift;
my $self = { @_ };
bless $self, $class;
}
sub apiurl {
my $self = shift;
print "$self->{apiurl}\n";
}
#public 広場の最新の発言を取得する(最大30件)
sub public{
my $self=shift;
my $api_key=$self->{api_key};
my $pid=$self->{pid};
my $limit=shift;
$self->{apiurl}="http://piyo.fc2.com/contents/api/?mode=public&key=$api_key&limit=$limit";
return $self;
}
#send ひろばにメッセージを送信する
sub send{
my $self=shift;
my $contents=shift;
my $api_key=$self->{api_key};
my $pid=$self->{pid};
$self->{apiurl}="http://piyo.fc2.com/contents/api/?mode=send&key=$api_key&pid=$pid&content=$contents";
return $self;
}
#comment 指定したメッセージNOに付随するコメントと親メッセージを取得する(最大30件)
sub comment{
my $self=shift;
my $api_key=$self->{api_key};
my $pid=$self->{pid};
my $messageno=shift;
my $limit=shift;
$self->{apiurl}="http://piyo.fc2.com/contents/api/?mode=comment&key=$api_key&no=$messageno&limit=$limit";
return $self;
}
#user 指定したPIYOIDのメッセージを取得する。指定送信は除外。最大30件
sub user{
my $self=shift;
my $api_key=$self->{api_key};
my $userid=shift;#相手のID。
my $limit=shift;
$self->{apiurl}="http://piyo.fc2.com/contents/api/?mode=user&key=$api_key&userid=$userid&limit=$limit";
return $self;
}
#status 指定したPIYOIDのプロフィール、その友達のプロフィールを取得する。
sub status{
my $self=shift;
my $api_key=$self->{api_key};
my $userid=shift;#取得する人のPIYOID。
my $option=shift;
$self->{apiurl}="http://piyo.fc2.com/contents/api/?mode=status&key=$api_key&userid=$userid&option=$option";
return $self;
}
#コメントを送信するメソッド
sub post{
my $self=shift;
my $apiurl=$self->{apiurl};
my $request = POST($apiurl);
my $ua = LWP::UserAgent->new;
my $res = $ua->request($request);
#print $res->as_string;
}
#データを取得するだけのメソッド
sub getdata{
my $self=shift;
my $refere_url="http://piyo.fc2.com/";
my $ua = LWP::UserAgent->new;
$ua->agent('Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
my $request = HTTP::Request->new('GET' , $self->{apiurl});
$request->header('Referer', $refere_url);
my $response = $ua->request($request);
$self->{data} = $response->content;
return $self;
}
sub xmlparse{
my $self=shift;
my $simple = XML::Simple->new( );
my $tree = $simple->XMLin("$self->{data}");
foreach my $ln( @{$tree->{itemlist}} ) {
print $ln->{piyoid}."\n";
print $ln->{nickname}."\n";
print $ln->{profimg}."\n";
print $ln->{no}."\n";
print $ln->{body}."\n";
print $ln->{date}."\n";
print $ln->{rescount}."\n";
print $ln->{tmpfile}."\n";
print $ln->{tmpmovurl}."\n";
}
}
1;