1

PHPを使用して非常に基本的なWebページを作成しようとしています。このページには、レポートと分析の目的で、Foursquareユーザーの800以上のヒントとその保存およびいいねの数がhtmlテーブルに表示されます。これが私がfoursquareで意味することの例です:http: //foursquare.com/redbull/list/tips。(繰り返しになりますが、redbullは私の例にすぎません。私は812のヒントを持つ組織と協力しています)。

Foursquareは、このデータにアクセスするためのAPIを提供します。

https://api.foursquare.com/v2/lists/{USER-ID}/tips?oauth_token={oauth-token}&limit=200&v=20120917

ただし、一度に取得できる結果は200のみであり、次の200、400などを取得するにはオフセットを使用する必要があります。

https://api.foursquare.com/v2/lists/{USER-ID}/tips?oauth_token={oauth-token}&limit=200&offset=200&v=20120917

私の場合、812のヒントをすべて取得するには、APIを5回呼び出す必要があります。APIを複数回呼び出して、テーブルに行を作成し続けるという、非常に不格好でスケーラブルでないソリューションを思いつきました。これが私の醜いが機能する解決策です:http: //pastebin.com/WL6kdTPY

しかし、明らかにヒントが増え続けるにつれて、200回以上の反復ごとに対応するようにコードを変更し続ける必要があります。APIデータでは、合計のヒント(812)についての言及を見ることができるので、それを使用してより無駄のないソリューションを考え出すことができるはずだと思います。

誰か助けてもらえますか?ありがとう!

4

1 に答える 1

1

2番目のループでうまくいくはずです:

<?php 


$today = date("Ymd");
$likes = 0;
$todo = 0;

$offset = 0;
$limit = 200;
do{
    $url="https://api.foursquare.com/v2/lists/{user-id}/tips?oauth_token={oauth_token}&limit=".$limit."&offset=".$offset."&v={$today}";
    $source = file_get_contents($url);
    $obj = json_decode($source, true);
    foreach($obj['response']['list']['listItems']['items'] as $item)
    {

        echo "<tr>";
        echo "<td  style = 'width: 75px;'>" .  date('m/d/y', $item['createdAt']) . "</td>" ;
        echo "<td  style = 'width: 200px;'>" . $item['venue']['name'] . "</td>" ;    
        echo "<td  style = 'width: 400px;'>" . $item['tip']['text'] . "</td>" ;
        echo "<td  style = 'width: 50px; text-align: center;'>" . $item['tip']['likes']['count'] . "</td>" ;
        echo "<td  style = 'width: 50px; text-align: center;'>" . $item['tip']['todo']['count'] . "</td>" ;
        echo "</tr>";
        $likes += $item['tip']['likes']['count'];
        $todo += $item['tip']['todo']['count'];

    }
    $offset += $limit;
} while(count($obj['response']['list']['listItems']['items']) >= $limit);


?>

基本的に、返品されたアイテムの数が各リクエストの制限より少ないかどうかを確認します。それはあなたが終わりに到達したことを意味するはずです

于 2012-09-17T20:46:06.790 に答える