EDGE Now!のリンク件数を返す野良API(XML-RPC)プログラム
スポンサードリンク
EDGE Now!のリンク件数を返す野良API(XML-RPC)で提供しているXML-RPCインターフェースのプログラムです。
問い合わせがあったURLを、以前作ったEDGE Now!外部DBに問い合わせすると、EDGE Now!の内部のサイトIDが得られます。そのサイトIDを、EDGE Now!内部のAPIに投げて、紹介した人の人数を取得します。
なお、XML-RPCの呼び出し方法は、上記リンク内で書いていますが、はてなに合わせていますw
#!/usr/bin/perl
use strict;
use warnings;
use XMLRPC::Transport::HTTP;
XMLRPC::Transport::HTTP::CGI
-> dispatch_to('link')
-> handle;
exit;
package link;
use strict;
use warnings;
use CGI;
use DateTime::Format::MySQL;
use DBI;
use LWP::UserAgent;
use URI;
use XML::Simple;
use XML::RSS;
use utf8;
binmode STDOUT => ':utf8';
sub getCount {
shift if UNIVERSAL::isa($_[0] => __PACKAGE__);
my $self;
@$self = @_;
our $referer = 'http://labo.dtpwiki.jp/edgenow/bloggerslist.cgi';
our $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->agent("bloggerslist/0.1($referer)");
our $dbh = DBI->connect('dbi:SQLite:dbname='
.'edgenow_sites.db',
undef, undef , {AutoCommit => 0} );
my $res = {};
foreach my $item ( @$self ) {
$res->{$item} = _db($item);
}
return $res;
};
sub _db {
my $url = shift;
our $dbh;
$url =~ s|/$||;
my $sth = $dbh->prepare("SELECT * FROM urls WHERE url = ?");
my $result = $sth->execute($url) || die $!;
my $ref = $sth->fetchrow_hashref;
my $entryid = $ref ? $ref->{entryid}: undef;
$dbh->commit;
return 0 unless $entryid;
my $hash = get_EDGENow_indivisual($entryid);
my $items = $hash->{bloggerList}->[0]->{blogger};
return scalar @$items;
}
sub get_EDGENow_indivisual {
my $id = shift;
our $referer;
our $ua;
my $proxy = 'http://edgenow.jp/xml/bloggerSite.php';
my $uri = URI->new( $proxy );
$uri->query_form(
id => $id,
) if $id;
my $req = HTTP::Request->new(GET => $uri->as_string);
$req->referer($referer);
my $res = $ua->request($req);
my $xml = $res->content;
my $xs = new XML::Simple();
my $ref = $xs->XMLin( $xml, forcearray => 1 );
return $ref;
}
1;
使用例は、M.C.P.C.: EDGE Now!リンク数野良APIサンプルプログラムに出してあります。
このプログラムは、URLに対して何か情報を返すXML-RPCインターフェースの実装例としてお使い頂けるかと思います。
スポンサードリンク
トラックバック(1)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2443
こんにちは! この前会社のCentOS4のサーバをyumったらPerl5.8.5... 続きを読む





![: Amazon.co.jp: プラスティック・メモリーズ 1【完全生産限定版】(イベントチケット優先販売申込券付) [Blu-ray]](/lists/_9/B00VWX66E8.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 2【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66K2.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 3【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6MV0.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 4【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66IO.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 5【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6Y0E.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 6【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX69D6.jpg)


コメントする