gpt4 book ai didi

php - 如何获取 3,200 条推文 (Twitter API 1.1)

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:45:05 25 4
gpt4 key购买 nike

经过反复试验,我终于设法使用 Twitter 的新 API(1.1 版)获取推文。我正在使用 PHP TwitterOauth 库。尽管我能够获取推文,但有两件事我不明白。

  1. statuses/user_timeline 的限制是 200 条推文。我如何遍历结果以获取最多 3,200 条推文?我阅读了一些有关发出多个 GET 请求的内容,但我不确定该怎么做。

  2. 获取的推文数量似乎是随机变化的,实际上很少达到参数“计数”中指定的数量。这是为什么?

我的应用程序只是让访问者输入用户名并获取该用户的推文。这是我的代码。

if (isset($_GET['user'])) {
$user = $_GET['user'];
$content = $connection->get("statuses/user_timeline", array('count' => 200, 'exclude_replies' => true, 'screen_name' => $user));?>

$j = 0;
foreach ($content as $tweet) {
echo $j.' '.$tweet->text. '<br />';
$j++;
}
}

更新:在尝试了下面 queremy 的建议后,我想出了一个非常丑陋的“解决方案”,它有几个主要缺点。至少它显示了 3,200 条推文的最大数量(以及一些重复推文)。如果相关 Twitter 帐户的推文少于 3,200 条,结果看起来会很奇怪。不管怎样,我只是想如果它能给我灵感的话我会分享它。

if (isset($_GET['user'])) {
$user = $_GET['user'];

$content = $connection->get('statuses/user_timeline', array(
'count' => 200, 'exclude_replies' => true, 'screen_name' => $user, 'include_rts' => 1
));

$x = 0;
while ($x < 15) {
$text = array();

foreach ($content as $tweet) {
$text[] = $tweet->id_str;
echo $tweet->text.'<br />';
}

$last_tweet = end($text);

$content = $connection->get('statuses/user_timeline', array(
'count' => 200, 'exclude_replies' => true, 'screen_name' => $user, 'include_rts' => 1, 'max_id' => $last_tweet
));
foreach ($content as $tweet) {
echo $tweet->text.'<br />';
}
$x++;
}
}

最佳答案

它可能有点贵,但我认为可能(你可以测试类似的东西);

$contents = array();
$limit = 3200;
$max_id = null;
for ($count = 200; $count < $limit; $count += 200) {
if (null !== $max_id && $max_id == '') {
break;
}

$content = $connection->get('statuses/user_timeline', array(
'count' => $count, 'exclude_replies' => true, 'screen_name' => $user,
'max_id' => $max_id
));
$contents[] = $content;
// this indicates the last index of $content array
$max_id = $content[count($content) - 1]->id_str;
}

更新!

你需要让 $max_id 继续循环,并且需要让 $max_id NULL 来中断循环。

// option 1, makes $max_id NULL silently
@ $max_id = $content[count($content) - 1]->id_str;

// option 2, search for last index of array
if (count($content)) {
$last_tweet = end($content);
$max_id = $last_tweet->id_str;
} else $max_id = null;

关于php - 如何获取 3,200 条推文 (Twitter API 1.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14428091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com