代码之家  ›  专栏  ›  技术社区  ›  Victor

对特定tweet、twitter api的回复

  •  62
  • Victor  · 技术社区  · 14 年前

    twitter api中有没有一种方法可以获得对特定tweet的回复?谢谢

    9 回复  |  直到 7 年前
        1
  •  39
  •   Rohan Khude    7 年前

    据我所知,没有办法直接这么做(至少现在没有)。好像是应该加上去的。他们最近增加了一些“转发”功能,似乎也符合逻辑。

    这里有一种可能的方法,第一个示例tweet数据(来自 status/show ):

    <status>
      <created_at>Tue Apr 07 22:52:51 +0000 2009</created_at>
      <id>1472669360</id>
      <text>At least I can get your humor through tweets. RT @abdur: I don't mean this in a bad way, but genetically speaking your a cul-de-sac.</text>
      <source><a href="http://www.tweetdeck.com/">TweetDeck</a></source>
      <truncated>false</truncated>
      <in_reply_to_status_id></in_reply_to_status_id>
      <in_reply_to_user_id></in_reply_to_user_id>
      <favorited>false</favorited>
      <in_reply_to_screen_name></in_reply_to_screen_name>
      <user>
        <id>1401881</id>
         ...
    

    地位/表现 你可以找到用户的ID。然后 statuses/mentions_timeline 将返回用户的状态列表。只需分析该返回,寻找 in_reply_to_status_id 匹配原始tweet的 id .

        2
  •  35
  •   Sami Kuhmonen    9 年前

    以下是获取tweets回复的过程

    1. 当你获取tweet时,存储tweetID,即id_str
    2. 使用twitter搜索api执行以下查询 [q="to:$tweeterusername", sinceId = $tweetId]
    3. 循环所有结果,结果匹配 in_reply_to_status_id_str to $tweetid 是邮件的答复。
        3
  •  8
  •   minaz    12 年前

    twitter有一个未记录的api,名为related_results。它将为您提供指定的tweet id的回复。不确定它是否像实验中那样可靠,但是这是twitter web上调用的相同api调用。

    使用风险自负。:)

    https://api.twitter.com/1/related_results/show/172019363942117377.json?include_entities=1
    

    有关更多信息,请在dev.twitter上查看此讨论: https://dev.twitter.com/discussions/293

        4
  •  8
  •   lincolnberryiii    7 年前

    这是我的解决办法。它利用了亚伯拉罕的twitter oauth php库: https://github.com/abraham/twitteroauth

    它要求您知道twitter用户的screen_name属性以及相关tweet的id_str属性。这样,您就可以从任意用户的tweet中获得任意对话提要:

    *更新: 刷新代码以反映对象访问与数组访问:

    function get_conversation($id_str, $screen_name, $return_type = 'json', $count = 100, $result_type = 'mixed', $include_entities = true) {
    
         $params = array(
              'q' => 'to:' . $screen_name, // no need to urlencode this!
              'count' => $count,
              'result_type' => $result_type,
              'include_entities' => $include_entities,
              'since_id' => $id_str
         );
    
         $feed = $connection->get('search/tweets', $params);
    
         $comments = array();
    
         for ($index = 0; $index < count($feed->statuses); $index++) {
              if ($feed->statuses[$index]->in_reply_to_status_id_str == $id_str) {
                   array_push($comments, $feed->statuses[$index]);
              }
         }
    
         switch ($return_type) {
         case 'array':
              return $comments;
              break;
         case 'json':
         default:
              return json_encode($comments);
              break;
         }
    
    }
    
        5
  •  6
  •   Denish Thummar    7 年前

    这里我共享简单的r代码来获取特定tweet的回复

    userName = "SrBachchan"
    
    ##fetch tweets from @userName timeline
    tweets = userTimeline(userName,n = 1)
    
    ## converting tweets list to DataFrame  
    tweets <- twListToDF(tweets)  
    
    ## building queryString to fetch retweets 
    queryString = paste0("to:",userName)
    
    ## retrieving tweet ID for which reply is to be fetched 
    Id = tweets[1,"id"]  
    
    ## fetching all the reply to userName
    rply = searchTwitter(queryString, sinceID = Id) 
    rply = twListToDF(rply)
    
    ## eliminate all the reply other then reply to required tweet Id  
    rply = rply[!rply$replyToSID > Id,]
    rply = rply[!rply$replyToSID < Id,]
    rply = rply[complete.cases(rply[,"replyToSID"]),]
    
    ## now rply DataFrame contains all the required replies.
    
        6
  •  3
  •   abraham    14 年前

    不是用一种简单实用的方式。中有一个功能请求:

    http://code.google.com/p/twitter-api/issues/detail?id=142

    有几个第三方网站提供api,但它们常常会错过状态。

        7
  •  3
  •   Willy    13 年前

    我已经通过以下方式实现了这一点:

    1)statuses/update返回最后状态的id(如果include_entities为true) 2)然后您可以请求状态/提及,并通过in_reply_to_status_id筛选结果。后者应该等于步骤1中的特定id

        8
  •  2
  •   Kamal Kumar    8 年前

    就像Satheesh州一样,它工作得很好。这是我使用的rest api代码

    ini_set('display_errors', 1);
    require_once('TwitterAPIExchange.php');
    
    /** Set access tokens here - see: https://dev.twitter.com/apps/ **/
    $settings = array(
        'oauth_access_token' => "xxxx",
        'oauth_access_token_secret' => "xxxx",
        'consumer_key' => "xxxx",
        'consumer_secret' => "xxxx"
    );
    
    
    
    // Your specific requirements
    $url = 'https://api.twitter.com/1.1/search/tweets.json';
    $requestMethod = 'GET';
    $getfield = '?q=to:screen_name&sinceId=twitter_id';
    
    // Perform the request
    $twitter = new TwitterAPIExchange($settings);
    $b =  $twitter->setGetfield($getfield)
                 ->buildOauth($url, $requestMethod)
                 ->performRequest();
    
    $arr = json_decode($b,TRUE);
    
    echo "Replies <pre>";
    print_r($arr);
    die;
    
        9
  •  1
  •   Adrian    10 年前

    几个月前我在工作中遇到了同样的问题 related_tweets rest v1中的端点。

    所以我必须创建一个解决方案,我在这里记录了。 http://adriancrepaz.com/twitter_conversations_api

    这个班应该做你想做的事。 它会抓取移动站点的html,并解析对话。我用了一段时间,它看起来很可靠。

    获取对话…

    请求

    <?php
    
    require_once 'acTwitterConversation.php';
    
    $twitter = new acTwitterConversation;
    $conversation = $twitter->fetchConversion(324215761998594048);
    print_r($conversation);
    
    ?>
    

    响应

    Array
    (
        [error] => false
        [tweets] => Array
            (
                [0] => Array
                    (
                        [id] => 324214451756728320
                        [state] => before
                        [username] => facebook
                        [name] => Facebook
                        [content] => Facebook for iOS v6.0 ? Now with chat heads and stickers in private messages, and a more beautiful News Feed on iPad itunes.apple.com/us/app/faceboo?
                        [date] => 16 Apr
                        [images] => Array
                            (
                                [thumbnail] => https://pbs.twimg.com/profile_images/3513354941/24aaffa670e634a7da9a087bfa83abe6_normal.png
                                [large] => https://pbs.twimg.com/profile_images/3513354941/24aaffa670e634a7da9a087bfa83abe6.png
                            )
                    )
    
                [1] => Array
                    (
                        [id] => 324214861728989184
                        [state] => before
                        [username] => michaelschultz
                        [name] => Michael Schultz
                        [content] => @facebook good April Fools joke Facebook?.chat hasn?t changed. No new features.
                        [date] => 16 Apr
                        [images] => Array
                            (
                                [thumbnail] => https://pbs.twimg.com/profile_images/414193649073668096/dbIUerA8_normal.jpeg
                                [large] => https://pbs.twimg.com/profile_images/414193649073668096/dbIUerA8.jpeg
                            )
                    )
                 ....             
            )
    )
    

    希望有帮助, 阿德里安。