cpanのFlickr::APIモジュールを使ってFlickrAPIをtag searchしてみるテスト。
zanmaiで検索
orzで検索
oklabで検索
shokaiで検索
screenshotで検索
(生XML注意)
XML::Parser::Lite::Tree::XPathが便利だった。TreeをXPathで切って配列で返してくれる。
コード。
#!/usr/bin/perl
usestrict;
usewarnings;
useFlickr::API;
useXML::Parser::Lite::Tree::XPath;
useutf8;
useCGI;
useCGI::Carpqw(fatalsToBrowser);
useData::Dumper;#HTTP-header出力
my$cgi=newCGI;
print$cgi->header(-type=>”text/xml”,
-charset=>”UTF-8″);#config
my$api_key=’your-api-key’;
my$api_secret=’your-api-secret’;#auth
my$api=newFlickr::API(
{‘key’=>$api_key,
‘secret’=>$api_secret,
}
);#requestexecute
my$response=$api->execute_method(‘flickr.photos.search’,{
‘tags’=>$cgi->param(‘tag’),
});#response
my@photos;
if($response->{success}){
my$xpath=newXML::Parser::Lite::Tree::XPath($response->{tree});
my@nodes=$xpath->select_nodes(‘/photos/photo’);
formy$node(@nodes){
my$meta=$node->{attributes};
my$photo={
‘title’=>$meta->{title},
‘id’=>$meta->{id},
‘server’=>$meta->{server},
‘secret’=>$meta->{secret},
};
$photo->{url}=”http://static.flickr.com/$photo->{server}/$photo->{id}_$photo->{secret}.jpg”;
push(@photos,$photo);
}#outputxml
print”¥n”; ¥n”;
formy$photo(@photos){
print”¥t¥n”; $photo->{title} $photo->{url}
}
print”
}