マルチ検索を php + API で

去年はマッシュアップな年だったので、今年の始はマッシュアップなネタで始めたいと思います。
google ヤフー はてな wikipedia youtube ヤフー動画 ニコニコ動画 amazon ヤフオク 楽天 ヤフー画像 flickr のAPIを使ったマルチ検索です。

追記:googleを追加しました。あ、gooもAPI公開しているんすね。今日か明日にでも試してみます(^^
実際に動いているところ
http://moeten.info/maidcafe/?m=moesearch_new
プログラム部分のそれぞれの開発者用IDは各自取ってね。

<? //マルチ検索システム(超β)
if( $_GET['type'] == "google" ){
     //Google検索
     $url = "http://sitening.com/evilrss/rss/?q={$word}";
     $xml = file_get_contents($url);
     //XMLへ格納
     $xml = simplexml_load_string($xml);
     //アイテムの出力
     foreach($xml->channel->children() as $item ){
         if($item->title != "" ){
             $myitem[$i]['title']   = $item->title;
             $url = urlencode( $item->link );
             $myitem[$i]['img']     = "http://harukomugi.iobb.net:8080/screencap/?u={$url}&s=200x200";
             $myitem[$i]['comment'] = $item->description;
             $myitem[$i]['url']     = $item->link;
             $i++;
         }
     }
}elseif( $_GET['type'] == "yahoo_auction" ){
    //ヤフーオークション
    $yahoo_auction_id = "xxxxxxxx";
    $url = "http://api.auctions.yahoo.co.jp/AuctionWebService/V1/Search?appid={$yahoo_auction_id}&query={$word}";
    $xml = simplexml_load_file( $url );
    $i = 0;
    foreach( $xml as $item ){
        $myitem[$i]['title']   = $item->title;
        $myitem[$i]['img']     = $item->img;
        $myitem[$i]['comment'] = <<<EOD
price:{$item->price} endtime:{$item->endtime} bidorbuy:{$item->bidorbuy}
EOD;
        $myitem[$i]['url']     = $item->url;
        $i++;
    }
}elseif( $_GET['type'] == "yahoo_video" ){
    //ヤフービデオ
    $yahoo_video_id = "xxxxxxxx";
    $url = "http://api.search.yahoo.co.jp/VideoSearchService/V1/videoSearch?appid={$yahoo_video_id}&query={$word}";
    $xml = simplexml_load_file( $url );
    $i = 0;
    foreach( $xml as $item ){
        $myitem[$i]['title']   = $item->Title;
        $myitem[$i]['img']     = $item->Thumbnail->Url;
        $myitem[$i]['comment'] = $item->Summary;
        $myitem[$i]['url']     = $item->RefererUrl;
        $i++;
    }
}elseif( $_GET['type'] == "yahoo_image" ){
    //yahoo 画像検索
    $yahoo_image_id = "xxxxxxxx";
    $url = "http://api.search.yahoo.co.jp/ImageSearchService/V1/imageSearch?appid={$yahoo_image_id}&query={$word}";
    $xml = simplexml_load_file( $url );
    $i = 0;
    foreach( $xml as $item ){
        $tmp = array();
        $tmp = explode( ".",$item->Title);
        if( array_search( "jpg" , $tmp) ){
            $myitem[$i]['title']   = "";
        }else{
            $myitem[$i]['title']   = $item->Title;
        }
        $myitem[$i]['img']     = $item->Thumbnail->Url;
        $myitem[$i]['comment'] = $item->Summary;
        $myitem[$i]['url']     = $item->Url;
        $i++;
    }
}elseif( $_GET['type'] == "yahoo_search" ){
    //yahoo 検索
    $yahoo_search_id = "xxxxxxxx";
    $url = "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?appid={$yahoo_search_id}&query={$word}";
    $xml = simplexml_load_file( $url );
    $i = 0;
    foreach( $xml as $item ){
        $myitem[$i]['title']   = $item->Title;
        $myitem[$i]['img']     = "http://harukomugi.iobb.net:8080/screencap/?u=" . urlencode( $item->Url ) . "&s=200x200";
        $myitem[$i]['comment'] = $item->Summary;
        $myitem[$i]['url']     = $item->Url;
        $i++;
    }
}elseif( $_GET['type'] == "nico" ){
    //ニコニコ動画 検索
    $url = "http://zio3.net/nicoRss/Search.ashx?p={$word}";
    $xml = simplexml_load_file( $url );
    $i = 0;
    foreach( $xml->channel->item as $key => $val ){
        $in = array();
        $tmp = split( "/" , $val->link );
        $in['id'] = $tmp[4];
        if( substr( $in['id'] , 0 , 2 ) == "sm" ){
            $in['img'] = "http://tn-skr.smilevideo.jp/smile?i=" . substr( $in['id'] , 2 );
        }else{
            $in['img'] = "http://art7.nicovideo.photozou.jp/pub/306/159306/photo/" . substr( $in['id'] , 2 ) . "_thumbnail.jpg";
        }
        $myitem[$i]['title']   = $val->title;
        $myitem[$i]['img']     = $in['img'];
        $myitem[$i]['comment'] = $val->description;
        $myitem[$i]['url']     = $val->link;
        $i++;
    }
}elseif( $_GET['type'] == "amazon" ){
    //amazon 検索
    $amazon_id = "xxxxxxxx";
    $url = "http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId={$amazon_id}&Version=2007-01-15&Operation=ItemSearch&SearchIndex=Books&Keywords={$word}&ResponseGroup=Medium";
    $xml = simplexml_load_file( $url );
    $i = 0;
    foreach( $xml->Items->Item as $item ){
        $myitem[$i]['title']   = $item->ItemAttributes->Title;
        $myitem[$i]['img']     = $item->MediumImage->URL;
        $myitem[$i]['comment'] = $item->ItemAttributes;
        $myitem[$i]['url']     = $item->DetailPageURL;
        $i++;
    }
}elseif( $_GET['type'] == "youtube" ){
    //youtube
    $youtube_id = "xxxxxxxx";
    $url = "http://youtube.com/api2_rest?method=youtube.videos.list_by_tag&dev_id={$youtube_id}&tag={$word}";
    $xml = simplexml_load_file( $url );
    $i = 0;
    foreach( $xml->video_list->video as $item ){
        $myitem[$i]['title']   = $item->title;
        $myitem[$i]['img']     = $item->thumbnail_url;
        $myitem[$i]['comment'] = convert_link( $item->description );
        $myitem[$i]['url']     = $item->url;
        $i++;
    }
}elseif( $_GET['type'] == "flickr" ){
    //flickr 検索
    $flickr_id = "xxxxxxxx";
    $url = "http://www.flickr.com/services/rest/?api_key={$flickr_id}&method=flickr.photos.search&per_page=10&sort=date-posted-desc&text={$word}";
    $xml = simplexml_load_file( $url );
    $i = 0;
    foreach( $xml->photos->photo as $item ){
        $myitem[$i]['title']   = $item['title'];
        $myitem[$i]['img']     = "http://static.flickr.com/{$item['server']}/{$item['id']}_{$item['secret']}_s.jpg";
        $myitem[$i]['comment'] = "";
        $myitem[$i]['url']     = "http://www.flickr.com/photos/subtonic/{$item['id']}/";
        $i++;
    }
}elseif( $_GET['type'] == "wikipedia" ){
    //wikipedia 検索
    $url = "http://wikipedia.simpleapi.net/api?keyword={$word}&output=xml";
    $xml = simplexml_load_file( $url );
    $i = 0;
    foreach( $xml as $item ){
        $myitem[$i]['title']   = $item->title;
        $myitem[$i]['img']     = "http://harukomugi.iobb.net:8080/screencap/?u=" . urlencode( $item->url ) . "&s=200x200";
        $myitem[$i]['comment'] = $item->body;
        $myitem[$i]['url']     = $item->url;
        $i++;
    }
}elseif( $_GET['type'] == "hatena" ){
    //はてな 検索
    $url = "http://search.hatena.ne.jp/keyword?word={$word}&mode=rss&ie=utf8&page=1";
    $file = file_get_contents($url);
    $xml = simplexml_load_string( $file );
    $i = 0;
    foreach( $xml->item as $item ){
        $myitem[$i]['title']   = $item->title;
        $myitem[$i]['img']     = "http://harukomugi.iobb.net:8080/screencap/?u=" . urlencode( $item->link ) . "&s=200x200";
        $myitem[$i]['comment'] = $item->description;
        $myitem[$i]['url']     = $item->link;
        $i++;
    }
}elseif( $_GET['type'] == "rakuten" ){
    //楽天 検索
    $rakuten_id = "xxxxxxxx";
    $url ="http://api.rakuten.co.jp/rws/1.7/rest?developerId={$rakuten_id}&operation=ItemSearch&version=2007-04-11&keyword={$word}";
    $xml = simplexml_load_file( $url );
    $xml = $xml->Body->children("http://api.rakuten.co.jp/rws/rest/ItemSearch/2007-04-11");
    $i = 0;
    foreach( $xml->ItemSearch->children()->Items->Item as $item ){
        $myitem[$i]['title']   = $item->itemName;
        $myitem[$i]['img']     = $item->mediumImageUrl;
        $myitem[$i]['comment'] = $item->itemCaption;
        $myitem[$i]['url']     = $item->itemUrl;
        $i++;
    }
}
var_dump( $myitem );
?>