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”;

formy$photo(@photos){

print”¥t$photo->{title}$photo->{url}¥n”;

}

print”
¥n”;

}