存储来自推文的位置信息

时间:2012-03-14 15:08:04

标签: twitter download location monitor

我想将推文下载到我自己的数据库中。我想在脚本中提供#subject,然后下载最新的推文。我想用php

这样做

我只能找到你可以监控的网站,但我需要一个脚本。有谁知道吗?

重要的是我可以下载邮件,作者和位置。 我不熟悉twitter所以我不确定这是否可行。

谢谢,

托比

1 个答案:

答案 0 :(得分:1)

这将涉及使用作为RESTful Web服务实现的Twitter API。主要是你将使用Twitter search API

使用Twitter API和搜索API : 您需要的第一件事是您的搜索查询,如果您还不知道它,请使用search page。在搜索URL的末尾,将其用作搜索API的参数。例如,搜索#stackoverflow标签会为我们提供以下URL。

http://twitter.com/#!/search/%23stackoverflow

搜索API的查询将如下所示。

http://search.twitter.com/search.json?q=%23stackoverflow

上面的URL返回一个JSON响应,您可以在PHP脚本中解析和使用它。

使用PHP解析搜索: 该脚本与Twitter API接口并打印结果,存储结果是留给读者的一个练习:

<?php
class Twitter {
    public function __construct() {  }
    public function searchResults( $query = null ) {
        $url = "http://search.twitter.com/search.json?q=" . urlencode($query);
        $curl = curl_init();

        // cURL options for the current session.
        $options = array(CURLOPT_URL => $url,
                       CURLOPT_RETURNTRANSFER => 1
                      );
        // If all the options are set correctly then fetch and parse the results.
            if (curl_setopt_array($curl, $options)) {
                // Execute cURL and store the returned string.
                $json_search_results = curl_exec($curl);
                curl_close( $curl );
                // Decode the JSON string returned by cURL.
                $search_results = json_decode($json_search_results);
                return $search_results;
            }
    }
}

// Searching Twittter using the new class.
$Twitter = new Twitter();
$search = Twitter::searchResults("#stackoverflow");
var_dump($search);
?>

脚本的输出:

object(stdClass)#2 (11) {
  ["completed_in"]=>
  float(0.137)
  ["max_id"]=>
  int(179961163788976129)
  ["max_id_str"]=>
  string(18) "179961163788976129"
  ["next_page"]=>
  string(52) "?page=2&max_id=179961163788976129&q=%23stackoverflow"
  ["page"]=>
  int(1)
  ["query"]=>
  string(16) "%23stackoverflow"
  ["refresh_url"]=>
  string(47) "?since_id=179961163788976129&q=%23stackoverflow"
  ["results"]=>
  array(15) {
    [0]=>
    object(stdClass)#3 (18) {
      ["created_at"]=>
      string(31) "Wed, 14 Mar 2012 16:04:19 +0000"
      ["from_user"]=>
      string(7) "kel666_"
      ["from_user_id"]=>
      int(55252171)
      ["from_user_id_str"]=>
      string(8) "55252171"
      ["from_user_name"]=>
      string(14) "Fabio Spinelli"
      ["geo"]=>
      NULL
      ["id"]=>
      int(179961163788976129)
      ["id_str"]=>
      string(18) "179961163788976129"
      ["iso_language_code"]=>
      string(2) "it"
      ["metadata"]=>
      object(stdClass)#4 (1) {
        ["result_type"]=>
        string(6) "recent"
      }
      ["profile_image_url"]=>
      string(71) "http://a0.twimg.com/profile_images/585239857/n571218917_3111_normal.jpg"
      ["profile_image_url_https"]=>
      string(73) "https://si0.twimg.com/profile_images/585239857/n571218917_3111_normal.jpg"
      ["source"]=>
      string(59) "&lt;a href=&quot;http://twitter.com/&quot;&gt;web&lt;/a&gt;"
      ["text"]=>
      string(114) "postare domande su #stackoverflow è fico perché c'è sempre pronto qualcuno a cazziarti o cmq a far la maestrina"
      ["to_user"]=>
      NULL
      ["to_user_id"]=>
      NULL
      ["to_user_id_str"]=>
      NULL
      ["to_user_name"]=>
      NULL
    }
  // Snip.
  ["results_per_page"]=>
  int(15)
  ["since_id"]=>
  int(0)
  ["since_id_str"]=>
  string(1) "0"
}