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)

![STEINS;GATE Vol.1【初回限定版】 [Blu-ray]](http://ec2.images-amazon.com/images/I/51P0IY34YCL._SL500_AA240_.jpg) 
               
                  
コメントする