マルチ検索を 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 ); ?>