ラベル Google Ajax Search API の投稿を表示しています。 すべての投稿を表示
ラベル Google Ajax Search API の投稿を表示しています。 すべての投稿を表示

2011/10/02

[Google Ajax Search API]ひょっとして有料になりました?

ひさしぶり、Googleデータを取りに行きたいなーっと思っていたところ。

で、あれ、ひょっとして有料になっている?

Free quota
Usage is free for all users, up to 100 queries per day.
Paid Usage
Any usage beyond the free usage quota will fail if you are not signed up for billing. Once you have enabled billing, you will continue to receive 100 free queries per day. However, you will be billed for all additional requests at the rate of $5 per 1000 queries, for up to 10,000 queries per day. If you need additional quota, please request additional quota from the console.

via:JSON/Atom Custom Search API
一日のmaxリクエストが100って。

確実に100件以上するっしょ。

ってか、昔、freeだったものに、お金をとるって、googleやばいのかなー??

色々なサービスを使っているので、がんばってほしいところではある。

2010/02/19

[Google Ajax Search API]画像が表示されない件

Google Ajax Search APIを使ってサーバー上からあるキーワードに基づいたurlを取得できたのですが、そのurlに基づいてimgタグでhtmlを生成しても、なぜか画像(image)が表示されません。

urlをコピペして、違うfirefoxのタブでそのurlにアクセスしたら画像が表示されたのですが、これは一体なぜでしょうか?

理由がわからん。

そろそろフリーが読み終わりそうです。


2009/12/25

[php][Google Ajax Search API]JSONのパース

前回、phpを使ってサーバー上でgoogleのイメージ検索を行う処理を書きました。

今回は、その結果を解析する方法から書きたいと思います。

解析方法は、めちゃくちゃ簡単で、

$json = json_decode($body);

json_decode関数を使えばオッケー♪
($bodyは、前回の内容を参照されたい)

関数の戻り値(この場合は、$json)はオブジェクトの可能性があるので、var_dump関数を使って解析を行えば、戻り値の型が表示されるのでそれに従って各値を取得すればオッケーだと思います。

ちなみに、Google Ajax Search APIの場合の戻り値の構成は、こちらこちらを参照してください。

サンプルとして、画像のurlを取得し、それを表示するプログラムは、こんな感じになります。
//検索文字列の設定
$url_string = "ジェシカ アルバ";
//urlエンコード
$url_string = urlencode($url_string);
$url = "http://ajax.googleapis.com/ajax/services/search/images";
$url = $url."?v=1.0";
$url = $url."&key=取得したapi-key";
$url = $url."&rsz=large";
$url = $url."&q=".$url_string;

// sendRequest
// note how referer is set manually
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "http://・・・.php");
$body = curl_exec($ch);
curl_close($ch);

/* ここからが今回新しく追記したところ */
// now, process the JSON string
$json = json_decode($body);
//ステータスコードが200以外の場合はエラー
if($json->responseStatus != 200){
//エラー処理を記述
exit();
}

$responseData = $json->responseData;
$results = $responseData->results;
for($i=0;$i<count($results);$i++){
$current_result = $results[$i];
print("<img src='".$current_result->url."'><br>");
}

exit();

基本的には、戻り値がstClassなのでフィールドアクセスが多いと思います。

他にもいろいろと戻り値があるので、いろいろと表示してみて遊んでみてください。

2009/12/21

[php][Google Ajax Search API]画像(imgae)を検索する方法とcurl関数群について

今回は、若干、タイトルが長いのですが。

googleの画像(image)検索をajaxではなくサーバー上で検索を行いたい場合について調査を行いました。

Google AJAX Search APIのFlash and other Non-Javascript Environmentsというセクションを読むと、Code Snippetsとして以下のPHPプログラムが紹介されていました。

以下、ちょっと紹介(転載)します。

$url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Paris%20Hilton";

// sendRequest
// note how referer is set manually
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, /* Enter the URL of your site here */);
$body = curl_exec($ch);
curl_close($ch);

// now, process the JSON string
$json = json_decode($body);
// now have some fun with the results...

via:Php Access

ここで初めてでてきたのが、curl関数群なのですが、どうして、前回紹介したgetメソッドを利用したhttpリクエストを使用していないのかというと(ここからは考察です。)、

1:リファレンスがcurlを推奨していた
2:http referer headerを必ずチェックしなければならない
3:サンプルソースが元々そうなっているから!!(かなり無理やり感がありますが。。。)

が原因なのではないかと。

後、リファレンスでは、PHPのバージョンを5.2以降を推奨していましたが、この理由として、jsonをサーバー上でパースすることができるためです。
jsonをPHPでパースすための方法については、また改めて書こうと思っております。

curl関数群について初めて知ったのでそれについてちょっと解説します。

まず、

1:curl_initで初期化
2:curl_setopt($ch, CURLOPT_URL, $url);で取得するurlを設定
3:curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);でcurl_exec関数の返り値を文字列で取得する。
4:curl_setopt($ch, CURLOPT_REFERER, /* Enter the URL of your site here */);でリファラーを設定
5:curl_exec($ch);で問い合わせの実行

という流れになっています。

これを書いていて思ったのですが、/* Enter the URL of your site here */の部分を適当な名前に変えればリファラー詐称できちゃんじゃないのか??
試してないので適当です。

後、通信プロトコルってどうなっているんだろう?

PHPのマニュアルのcurl_setoptを読むと、CURLOPT_HTTPGETの値がデフォルトでtrueになっているので、とりあえずhttp通信のgetメソッドをしているのだと納得します。

話を元に戻して、上は、パリスヒルトンで検索していますが、ジェシカアルバでしかも画像の検索を行いたかったので、下記のようにプログラムの修正を行い、実行してみました。
//検索文字列の設定
$url_string = "ジェシカ アルバ";
//urlエンコード
$url_string = urlencode($url_string);
$url = "http://ajax.googleapis.com/ajax/services/search/images";
$url = $url."?v=1.0";
$url = $url."&key=取得したapi-key";
$url = $url."&rsz=large";
$url = $url."&q=".$url_string;

// sendRequest
// note how referer is set manually
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "http://・・・.php");
$body = curl_exec($ch);
curl_close($ch);

// now, process the JSON string
$json = json_decode($body);


url変数については、こちらを参考にしてください。

結果としては、うまくいき、きちんと画像を表示することができました。

今回は、だいぶ長くなってしまったため、戻り値について書くことができませんでしたが、後日時間が取れれば書いていきたいと思います。