1

私は Twitter 検索 API を使用しようとしています。アプリのみの認証で認証を行う php ライブラリを見つけ、それに max_id 引数を追加しましたが、15 分ごとに 450 クエリを実行したいと考えています (レートに従って) -limit) max_id を渡す方法がわかりません。そのため、最初にデフォルトの 0 値で実行し、次に API の応答から max_id の結果を取得して関数を再度実行しますが、今回は取得した max_id 値を使用してこれを 450 回実行します。いくつか試してみたところ、関数を呼び出した後に max_id の結果を取得できましたが、それを返して、更新された値で関数を呼び出すように指示する方法がわかりません。

<?php

function search_for_a_term($bearer_token, $query, $result_type='mixed', $count='15', $max_id='0'){
    $url = "https://api.twitter.com/1.1/search/tweets.json"; // base url
    $q = $query; // query term

    $formed_url ='?q='.$q; // fully formed url
    if($result_type!='mixed'){$formed_url = $formed_url.'&result_type='.$result_type;} // result type - mixed(default), recent, popular
    if($count!='15'){$formed_url = $formed_url.'&count='.$count;} // results per page - defaulted to 15
    $formed_url = $formed_url.'&include_entities=true'; // makes sure the entities are included
    if($max_id!='0'){$formed_url=$formed_url.'&max_id='.$max_id;}
    $headers = array( 
        "GET /1.1/search/tweets.json".$formed_url." HTTP/1.1", 
        "Host: api.twitter.com", 
        "User-Agent: jonhurlock Twitter Application-only OAuth App v.1",
        "Authorization: Bearer ".$bearer_token."",
    );
    $ch = curl_init();  // setup a curl
    curl_setopt($ch, CURLOPT_URL,$url.$formed_url);  // set url to send to
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // set custom headers
    ob_start();  // start ouput buffering
    $output = curl_exec ($ch); // execute the curl
    $retrievedhtml = ob_get_contents(); // grab the retreived html
    ob_end_clean(); //End buffering and clean output 
    curl_close($ch); // close the curl
    $result= json_decode($retrievedhtml, true);
    return $result;
}

$results=search_for_a_term("mybearertoken", "mysearchterm");

/* would like to get all kinds of info from here and put it into a mysql database */

$max_id=$results["search_metadata"]["max_id_str"];
print $max_id; //this gives me the max_id for that page


?>

これを行う既存のライブラリがいくつかあるに違いないことは知っていますが、アプリのみの認証にまだ更新されていないため、どのライブラリも使用できません。

編集:スクリプトの先頭にループを配置して、たとえば 3 回実行し、次に print ステートメントを配置して何が起こるかを確認しますが、同じ max_id のみを出力し、3 つの異なるものにアクセスしません。

do{
$result = search_for_a_term("mybearertoken", "searchterm", $max_id);
 $max_id = $result["search_metadata"]["max_id_str"];
$i++;
print '    '.$max_id.'    ';
}while($i < 3);
4

0 に答える 0