Flickrの検索APIでJSONが指定できるわけだが

通常はXMLだけど、format=jsonJSON形式で結果を出力できます(XMLをパースして取り出すは非常に面倒)。
しかし、この機能は現在のところドキュメントには載っていないようです。

PerlのモジュールにFlickr::APIがあります。
しかしこれがXMLが返ってくるを前提に書かれててJSONが返ってきた場合にうまく処理してくれない。

 #これだと動かない
 my $request = new Flickr::API::Request({
               'method' => 'flickr.photos.getrecent',
               'args'   => {tag=>'dog','format'=>'json'},
       });  

ツーわけでこんな感じにcontent-typeを見てxmlでなければそのままチェックせずに返すようにしてみました。

--- Flickr/API.pm       2007-10-18 22:18:58.000000000 +0900
***************
*** 96,101 ****
--- 96,105 ----
                return $response;
        }
  
+       if ($response->header('Content_Type') =~ /text?/(?:plain|json)/){
+               return $response;
+       }
+ 
        my $tree = XML::Parser::Lite::Tree::instance()->parse($response->{_content});
  
        my $rsp_node = $self->_find_tag($tree->{children});

Flickr::APIって中の人が作ってるんじゃなかったっけ??