searchmash.comのAPIをたたいてみる
今さながらGoogle の次世代検索機能の実験サイトSearchMash のAPIをたたいてみるコードを書いてみる。
ホントはJavaScriptだけで完結したかったんだけど、どうもクロスドメイン制限があるんでProxyなPHPもセットで作ります。
ちなみにDojoを使えばクロスドメインのサービスコールを解決できるのだが、どうもsearchmashはうまくコールできなかった。。。
searchmash-proxy.php
<?php $url = 'http://www.searchmash.com/results/%query%'; $qt = $_GET['qt']; $url = str_replace("%query%", $qt, $url); $session = curl_init($url); curl_setopt($session, CURLOPT_HEADER, false); curl_setopt($session, CURLOPT_RETURNTRANSFER, true); $results = curl_exec($session); header("Content-Type: application/json"); echo $results; curl_close($session); ?>
searchmash.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>My Blog Search Widget</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <script type="text/javascript" src="http://prototypejs.org/assets/2008/1/25/prototype-1.6.0.2.js"></script> <script type="text/javascript"> function BlogSearch() { var request = new Ajax.Request( "/searchmash-proxy.php", { method: 'get', parameters: { qt : $F('q'), }, asynchronous: false, onLoading: function(transport) { var html = '<b><blink>Searching...Please wait</blink></b>'; document.getElementById('results').innerHTML = html; }, onSuccess: function(transport) { var json = transport.responseJSON; var estimatedCount = json.estimatedCount; var term = json.query.terms; var results = json.results; var html = '<b>Total hits: ' + json.estimatedCount + ' for term: </b>' + json.query.terms + '<br/><br/>'; results.each(function(result) { html += '<b><a href="' + result.url + '">' + result.title + '</b></a><br/>' + result.snippet + '<br/><b>' + result.displayUrl + ' ' + '<a href="' + result.cachedUrl + '">Cached</a></b><br/><br/>'; }); document.getElementById('results').innerHTML = html; } } ); } </script> </head> <body> <p> <b>Enter your query:</b> <input type="text" id="q" name="q"/> <input type="button" name="Search" value="Search!" onclick="BlogSearch()"/> </p> <hr/> <b>Results</b><br/> <div id="results"></div> </body> </html>
あ、なんか日本語入力が投げられねぇ〜(;´Д`)
PHP側のcurlで投げる時にどうもエンコードかけないといけない?
ううむ、ひとまず考えてみる。。。