Twitter API搜索获取Tweet created_at时间

时间:2017-10-04 11:55:27

标签: php api twitter

您好我正在使用Twitter API,但我无法获取推文的created_at日期。返回的日期似乎是我请求API的日期,而不是发布推文的日期。

我能够得到这个日期,但如果它是我调用API的日期,它对我没用。 API返回100条推文,每个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日期。

1 个答案:

答案 0 :(得分:1)

我建议您重写代码,其中包含"#"+$coinSymbol[$i]等错误。 .是PHP中的字符串连接。

好的,所以如果你有一个符号数组,你可以使用foreach循环它们然后抓住你的推文数。请注意,如果您有100个货币符号,那么很快就会遇到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
)