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... 続きを読む
コメントする