web-dev-qa-db-ja.com

Twitter Search API 1.1でリツイートを除外する

ここでは、検索API 1.1を使用して、タグ「V57」を持つツイートを取得しようとしています。を使用して、検索語句の結果をダンプおよび表示し、

$search_tim = $connection->get('search/tweets',array('q' => ' #V57', 'count' => 5, 'result_type' => 'recent'));

これはvar_dumpを実行した後の結果です。

_object(stdClass)#10 (2) {
["statuses"]=>
 array(5) {
[0]=>
object(stdClass)#11 (25) {
  ["metadata"]=>
  object(stdClass)#12 (2) {
    ["result_type"]=>
    string(6) "recent"
    ["iso_language_code"]=>
    string(2) "en"
  }
  ["created_at"]=>
  string(30) "Wed Feb 12 16:26:35 +0000 2014"
  ["id"]=>
  float(4.33638273555E+17)
  ["id_str"]=>
  string(18) "4336382731354561"
  ["text"]=>
  string(131) "RT @useracc: Plz consult a doctor #V57"
  ["source"]=>
  string(84) "Twitter for Android"
  ["truncated"]=>
  bool(false)
  ["in_reply_to_status_id"]=>
  NULL
  ["in_reply_to_status_id_str"]=>
  NULL
  ["in_reply_to_user_id"]=>
  NULL
  ["in_reply_to_user_id_str"]=>
  NULL
  ["in_reply_to_screen_name"]=>
  NULL
  ["user"]=>
  object(stdClass)#13 (40) {
    ["id"]=>
    int(965892252)
    ["id_str"]=>
    string(9) "965892252"
    ["name"]=>
    string(10) "khan"
    ["screen_name"]=>
    string(10) "khan"
    ["location"]=>
    string(0) ""

    ["url"]=>
    NULL
    ["entities"]=>
    object(stdClass)#14 (1) {
      ["description"]=>
      object(stdClass)#15 (1) {
        ["urls"]=>
        array(0) {
        }
      }
    }
    ["protected"]=>
    bool(false)
    ["followers_count"]=>
    int(457)
    ["friends_count"]=>
    int(500)
    ["listed_count"]=>
    int(3)
    ["created_at"]=>
    string(30) "Fri Nov 23 10:56:08 +0000 2012"
    ["favourites_count"]=>
    int(129)
    ["utc_offset"]=>
    int(19800)
    ["time_zone"]=>
    string(7) "Chennai"
    ["geo_enabled"]=>
    bool(false)
    ["verified"]=>
    bool(false)
    ["statuses_count"]=>
    int(3230)
    ["lang"]=>
    string(2) "en"
    ["contributors_enabled"]=>
    bool(false)
    ["is_translator"]=>
    bool(false)
    ["is_translation_enabled"]=>
    bool(false)
    ["profile_background_color"]=>
    string(6) "0099B9"
    ["profile_background_image_url"]=>
    string(48) "http://abs.twimg.com/images/themes/theme4/bg.gif"
    ["profile_background_image_url_https"]=>
    string(49) "https://abs.twimg.com/images/themes/theme4/bg.gif"
    ["profile_background_tile"]=>
    bool(false)
    ["profile_image_url"]=>
    string(99) "http://pbs.twimg.com/profile_images/3788093993/0639a4b8297f9eea2cbb9de89f5c3a40_normal.jpeg"
    ["profile_image_url_https"]=>
    string(100) "https://pbs.twimg.com/profile_images/37883993/0639a4b8297f9eea2cbb95c3a40_normal.jpeg"
    ["profile_banner_url"]=>
    string(58) "https://pbs.twimg.com/profile_banners/9658922/1386619"
    ["profile_link_color"]=>
    string(6) "0099B9"
    ["profile_sidebar_border_color"]=>
    string(6) "5ED4DC"
    ["profile_sidebar_fill_color"]=>
    string(6) "95E8EC"
    ["profile_text_color"]=>
    string(6) "3C3940"
    ["profile_use_background_image"]=>
    bool(true)
    ["default_profile"]=>
    bool(false)
    ["default_profile_image"]=>
    bool(false)
    ["following"]=>
    bool(false)
    ["follow_request_sent"]=>
    bool(false)
    ["notifications"]=>
    bool(false)
  }
  ["geo"]=>
  NULL
  ["coordinates"]=>
  NULL
  ["place"]=>
  NULL
  ["contributors"]=>
  NULL
  ["retweeted_status"]=>
  object(stdClass)#16 (24) {
    ["metadata"]=>
    object(stdClass)#17 (2) {
      ["result_type"]=>
      string(6) "recent"
      ["iso_language_code"]=>
      string(2) "en"
    }
    ["created_at"]=>
    string(30) "Wed Feb 12 15:33:36 +0000 2014"
    ["id"]=>
    float(4.3362493936345E+17)
    ["id_str"]=>
    string(18) "43362493446784"
    ["source"]=>
    string(84) "Twitter for Android"
    ["truncated"]=>
    bool(false)
    ["in_reply_to_status_id"]=>
    NULL
    ["in_reply_to_status_id_str"]=>
    NULL
    ["in_reply_to_user_id"]=>
    NULL
    ["in_reply_to_user_id_str"]=>
    NULL
    ["in_reply_to_screen_name"]=>
    NULL
    ["user"]=>
    object(stdClass)#18 (40) {
      ["id"]=>
      int(168362964)
      ["id_str"]=>
      string(9) "168362964"
      ["name"]=>
      string(5) "usracc"
      ["screen_name"]=>
      string(12) "useracc"
      ["location"]=>
      string(16) "India."
      ["url"]=>
      NULL
      ["entities"]=>
      object(stdClass)#19 (1) {
        ["description"]=>
        object(stdClass)#20 (1) {
          ["urls"]=>
          array(0) {
          }
        }
      }
      ["protected"]=>
      bool(false)
      ["followers_count"]=>
      int(651)
      ["friends_count"]=>
      int(197)
      ["listed_count"]=>
      int(6)
      ["created_at"]=>
      string(30) "Mon Jul 19 03:54:15 +0000 2010"
      ["favourites_count"]=>
      int(4267)
      ["utc_offset"]=>
      int(19800)
      ["time_zone"]=>
      string(7) "Chennai"
      ["geo_enabled"]=>
      bool(true)
      ["verified"]=>
      bool(false)
      ["statuses_count"]=>
      int(10177)
      ["lang"]=>
      string(2) "en"
      ["contributors_enabled"]=>
      bool(false)
      ["is_translator"]=>
      bool(false)
      ["is_translation_enabled"]=>
      bool(false)
      ["profile_background_color"]=>
      string(6) "C0DEED"
      ["profile_background_image_url"]=>
      string(48) "http://abs.twimg.com/images/themes/theme1/bg.png"
      ["profile_background_image_url_https"]=>
      string(49) "https://abs.twimg.com/images/themes/theme1/bg.png"
      ["profile_background_tile"]=>
      bool(false)
      ["profile_image_url"]=>
      string(75) "http://pbs.twimg.com/profile_images/4338561184/quFHKeYq_normal.jpeg"
      ["profile_image_url_https"]=>
      string(76) "https://pbs.twimg.com/profile_images/433856131184/quFHKeYq_normal.jpeg"
      ["profile_banner_url"]=>
      string(58) "https://pbs.twimg.com/profile_banners/168364/1392170036"
      ["profile_link_color"]=>
      string(6) "0084B4"
      ["profile_sidebar_border_color"]=>
      string(6) "C0DEED"
      ["profile_sidebar_fill_color"]=>
      string(6) "DDEEF6"
      ["profile_text_color"]=>
      string(6) "333333"
      ["profile_use_background_image"]=>
      bool(true)
      ["default_profile"]=>
      bool(true)
      ["default_profile_image"]=>
      bool(false)
      ["following"]=>
      bool(false)
      ["follow_request_sent"]=>
      bool(false)
      ["notifications"]=>
      bool(false)
    }
    ["geo"]=>
    NULL
    ["coordinates"]=>
    NULL
    ["place"]=>
    NULL
    ["contributors"]=>
    NULL
    ["retweet_count"]=>
    int(5)
    ["favorite_count"]=>
    int(10)
    ["entities"]=>
    object(stdClass)#21 (5) {
      ["hashtags"]=>
      array(1) {
        [0]=>
        object(stdClass)#22 (2) {
          ["text"]=>
          string(7) "v57"
          ["indices"]=>
          array(2) {
            [0]=>
            int(76)
            [1]=>
            int(84)
          }
        }
      }
      ["symbols"]=>
      array(0) {
      }
      ["urls"]=>
      array(0) {
      }          
    ["favorited"]=>
    bool(false)
    ["retweeted"]=>
    bool(false)
    ["possibly_sensitive"]=>
    bool(false)
    ["lang"]=>
    string(2) "en"
  }
  ["retweet_count"]=>
  int(5)
  ["favorite_count"]=>
  int(0)
_

今、私はこれに似たすべてのリツイートを無視して、_V57_タグを持つ元のツイートだけを取得したいと思います

string(131) "RT @useravv: Plz consult a doctor #V57"

私はググって、これを見つけました thread 。しかし、それは古いAPIバージョンでした。

私の疑問は解消されました。 SO user Newbi3:)に感謝

検索API 1.1でリツイートを除外する方法は次のとおりです

_$search_tim = $connection->get('search/tweets',array('q' => ' #V57 -RT', 'count' => 5,'result_type' => 'recent'));
_

_search term_の最後に-RTを追加すると、フィルターされます。

EDIT:

上記のアプローチでは、#RTがステータスとユーザー名またはスクリーンショットに含まれている場合、ツイートも削除されます。これは、RTを見たときに盲目的にツイートを無視します。これは一時的な解決策です。

永続的な解決策は、RT status&if if if itretweet is assign to 1 to a variable&0 if the original。

_    if (isset($Tweet_object->retweeted_status)) {
  // This is a retweet
  // Use the original Tweet's entities, they are more complete
  $entities = $Tweet_object->retweeted_status->entities;
        $is_rt = 1; // Set 1 if retweeted
  } else {
      $entities = $Tweet_object->entities;
      $is_rt = 0; // Set 0 if original
  }
_

次に、ちょうどのように、

_if($is_rt==0) // if its a original Tweet
{
  ...
  ....
}
_
21
user3289108

クエリ文字列の末尾に"-filter:retweets"を連結すると効果的です。

単に-RTを追加すると、「RT」を含むツイートを誤ってフィルタリングする問題が発生する可能性があります。たとえば、「Russia Today」はその文字列をかなり使用します。

次のページでは、Twitterの検索演算子について説明します。

41