如何使用Services_Twitter执行搜索查询?

时间:2010-09-17 12:10:34

标签: php api twitter service pear

我正在尝试使用PEAR包Services_Twitter执行Twitter搜索。 不幸的是,这只返回一个状态ID数组,例如(var_dump)

object(stdClass)#88 (2) {
  ["statuses"]=>
  array(11) {
    [0]=>
    int(49497593539)
    [1]=>
    int(49497593851)
    [2]=>
    int(49497598001)
    [3]=>
    int(49497599055)
    [4]=>
    int(49497599597)
    [5]=>
    int(49497600733)
    [6]=>
    int(49497602607)
    [7]=>
    int(49497607031)
    [8]=>
    int(49497607453)
    [9]=>
    int(49497609577)
    [10]=>
    int(49497610605)
  }
  ["created_in"]=>
  float(0.008847)
}

我正在使用的脚本类似于我写的测试脚本:

<?php
//$oAuth = new HTTP_OAuth_Consumer( /** Supply oAuth details here **/ );
$Twitter = new Services_Twitter();
//$Twitter->setOAuth($oAuth);
try {
    $Response = $Twitter->search(array(
      "q"   => "#FF -RT OR #FollowFriday -RT",
      "rpp" => 10,
      "since_id"  => 23982086000,
      "result_type" => "recent"
    ));
    var_dump($Response);
  } catch (Exception $e) {
    fwrite(STDERR, $e->getMessage());
  }
?>

由于我想要扫描推文中的某些单词并想知道它何时被发布以及由谁发布,我需要逐个请求所有这些状态。 但根据example response in the Twitter API documentation,他们已经返回了有关推文的所有必要信息(这有点明显)。

所以,问题是:如何使用Services_Twitter访问此信息?

亲切的问候,

阿诺

2 个答案:

答案 0 :(得分:3)

正如我所说->search()包裹在Services_Twitter::__call()

但这是误解!

两次搜索:

这是令人困惑的,因为search.twitter.com会返回您期望的结果,而其他API方法只返回状态ID。

出于某种原因,只有在您搜索趋势search.twitter.com时才会使用。否则它是API方法。如果您想提供帮助,请在PEAR上打开一张票,我可以尝试为您实现。

您的快速修补程序就是这个脚本:

<?php
$uri  = 'http://search.twitter.com/search.json?';
$uri .= http_build_query(
    array(
        "q"           => "#FF -RT OR #FollowFriday -RT",
        "rpp"         => 10,
        "since_id"    => 23982086000,
        "result_type" => "recent"
));

$response = file_get_contents($uri);
if ($response === false) {
    fwrite(STDERR, "Could not fetch search result.");
    exit(1);
}

$data = json_decode($response);
var_dump($data);

答案 1 :(得分:0)

您使用的是自定义Services_Twitter,我刚刚通过Pear文档搜索了该类,但无法找到search函数。但是,似乎该类的大部分返回值都是simple_xml个对象。鉴于我将查看那里的文档,看看如何将数据提取出来。它还有助于了解Twitter如何以XML格式返回响应。