2017-10-04 13 views
1

こんにちは私は現在twitter APIを使用していますが、ツイートのcreated_atの日付を取得するのに問題があります。返される日付は、私がAPIをリクエストした日のようであり、ツイートが作成された日付ではありません。Twitter API検索Twitterでつぶやくcreated_at Time

私はこの日付を取得することができていますが、その日は私はAPIを呼び出した場合、それは私には使用していません。 APIは100のつぶやきを返し、1つのcreated_atの日付は全く同じでしたか?

これは私が書いたコードです:

$connection = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret); 
$content = $connection->get("account/verify_credentials"); 
$tweets = $connection->get("search/tweets", ["q" => "#TRIG", "result_type" => "recent", "count" => 100]); 
print_r($tweets); 

私はcreated_atと日付を取得するためのコード行を使用しています:

$tweetCreatedTime = $tweets->statuses[0]->created_at; 

これは、私がカウントする使用していますすべてのコードですつぶやき:

$timeHourAgo = time() - 3600; 
$count = 0; 
$tweetCoinCount = []; 

for ($i=0; $i < round((count($coinSymbol) * 0.06)); $i++) { 
$tweets = $connection->get("search/tweets", ["q" => "#" + $coinSymbol[$i], "result_type" => "recent", "count" => 100]); 
$tweetsCount = count($tweets->statuses); 
for ($t=0; $t < $tweetsCount; $t++) { 
    $tweetCreatedTime = $tweets->statuses[$t]->created_at; 
    $tweetCreatedTimestamp = strtotime($tweetCreatedTime); 
    if ($tweetCreatedTimestamp > $timeHourAgo) { 
     $count = $count + 1; 
    } 
} 
$tweetCoinCount[$coinSymbol[$i]] = $count; 
$count = 0; 
} 

$ coinSymbolは別のAPIを使用して取り込む単なる文字列です

返されるツイートはすべてcreated_atの日付が同じです。

+0

私はちょうどそれを返そうとしましたが、最初のものは 'Wed Oct 04 11:24:19 +0000 2017'です。あなたのツイートをループする方法を教えてください。 –

+0

あなたは '$ tweetCreatedTime = $ tweets-> statuses [0] - > created_at;で最初のつぶやきの日付しか取得できません。各ツイートの日付を取得するには、すべてのツイートをループする必要があります。 – 3gth

+0

私はあなたのループを表示するために私の質問を編集しました –

答えて

1

私はあなたがそれで"#"+$coinSymbol[$i]ようなエラーを持って、あなたのコードを書き換える示唆しています。 .はPHPの文字列連結です。

オクラホマので、あなたがシンボルの配列を持っている場合、あなたは、それらを超えるループがforeachのを使用して、あなたのつぶやき数をつかむことができます。あなたが通貨記号の100sを持っている場合、すぐにtwittersのAPI制限をヒットしていることに注意してください。

$timeHourAgo = time() - 3600; 
$tweetCoinCount = []; 
$coinSymbol = [ 
    'TRIG', 
    'BTC', 
    'ETH' 
]; 

foreach ($coinSymbol as $symbol) { 
    $tweets = $connection->get("search/tweets", ["q" => '#'.$symbol, "result_type" => "recent", "count" => 100]); 

    $tweetCoinCount[$symbol] = 0; 
    foreach ($tweets->statuses as $tweet) { 
     if (strtotime($tweet->created_at) > $timeHourAgo) { 
      $tweetCoinCount[$symbol]++; 
     } 
    } 
} 

print_r($tweetCoinCount); 
Array 
(
    [TRIG] => 0 
    [BTC] => 15 
    [ETH] => 15 
) 
+0

ありがとうそれを助けるために!私は本当にそれを感謝する:) $ coinSymbol配列は約1000コインを持っており、私は1時間100回以上のAPIを要求できません。これに関する提案はありますか? –

+0

エンタープライズエディションを手に入れることなく別の方法を見つけることができないので、今は私が複数のアプリケーションを使用しているはずです。なぜ私は$ coinSymbol配列のパーセンテージだけを使用していたのでしょうか、各アプリケーションはそれぞれ100回のリクエストを行うでしょう –

+0

おそらく最も良いことはシンボルを制限で分割し、cronジョブを介してバッチで行い、データベースなどのquery_count列をインクリメントしてクエリを実行します.1kシンボルはとにかく時間がかかります。 –

関連する問題