Freebase API からすべての旅行先を取得しようとしています。ドキュメントによると、カーソルと制限のパラメーターを使用しています。カーソルを 0 から開始して 100 に制限し、反復ごとにカーソルに 100 を追加します。問題は、この方法で 76 の結果しか得られないことです。Freebase データベースには cca 1500 の旅行先があるはずです。
ドキュメンテーション:
https://developers.google.com/freebase/v1/search
これが私のコードです:
<?php
require_once __DIR__ . '/vendor/autoload.php';
$apiKey = 'SUPER_SECRET_API_KEY';
use Guzzle\Http\Client;
//// GOOGLE FREEBASE
$client = new Client('https://www.googleapis.com');
$cursor = 0;
$limit = 100;
$results = array();
do {
$request = $client->get('/freebase/v1/search');
$request->getQuery()->set('key', $apiKey);
$request->getQuery()->set('filter', '(all type:/travel/travel_destination)');
$request->getQuery()->set('cursor', $cursor);
$request->getQuery()->set('limit', $limit);
$request->getQuery()->set('indent', 'true');
$request->getQuery()->set('query', '');
$response = $request->send()->json();
foreach ($response['result'] as $result) {
$results[] = $result;
}
$cursor += $limit;
} while (count($response['result']) > 0);
echo count($results);exit;
76を印刷します。