web-dev-qa-db-fra.com

Réponses à un Tweet particulier, API Twitter

Existe-t-il un moyen dans l'API Twitter d'obtenir les réponses à un tweet particulier? Merci

71
Victor

D'après ce que je comprends, il n'y a pas moyen de le faire directement (du moins pas maintenant). On dirait quelque chose qui devrait être ajouté. Ils ont récemment ajouté des capacités de "retweet", il semble logique de les ajouter également.

Voici un moyen possible de le faire, d'abord des exemples de données Tweet (à partir de 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>
     ...

De status/show vous pouvez trouver l'identifiant de l'utilisateur. Ensuite statuses/mentions_timeline renverra une liste de statuts pour un utilisateur. Il suffit d'analyser ce retour à la recherche d'un in_reply_to_status_id correspondant au id du Tweet d'origine.

43
Tim Lytle

Voici la procédure pour obtenir les réponses d'un tweets

  1. lorsque vous récupérez le Tweet, stockez le tweetId, c'est-à-dire id_str
  2. en utilisant l'API de recherche Twitter, effectuez la requête suivante [q="to:$tweeterusername", sinceId = $tweetId]
  3. Boucle tous les résultats, les résultats correspondant à in_reply_to_status_id_str to $tweetid est la réponse du message.
39
Satheesh

Twitter a une API non documentée appelée related_results. Il vous donnera des réponses pour l'identifiant de Tweet spécifié. Je ne sais pas à quel point il est fiable que son expérimental, mais c'est le même appel api qui est appelé sur Twitter.

À utiliser à vos risques et périls. :)

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

Pour plus d'informations, consultez cette discussion sur dev.Twitter: https://dev.Twitter.com/discussions/29

8
minaz

Voici ma solution. Il utilise Twitter d'Abraham Oauth PHP: https://github.com/abraham/twitteroauth

Il vous faut connaître l'attribut screen_name de l'utilisateur Twitter ainsi que l'attribut id_str du Tweet en question. De cette façon, vous pouvez obtenir un flux de conversation arbitraire à partir du Tweet de tout utilisateur arbitraire:

* MISE À JOUR: Code actualisé pour refléter l'accès aux objets par rapport à l'accès au tableau:

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;
     }

}
8
lincolnberryiii

Ici, je partage un code R simple pour récupérer la réponse d'un Tweet spécifique

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.
7
Denish Thummar

J'ai implémenté cela de la manière suivante:

1) statuses/update renvoie l'id du dernier statut (si include_entities est vrai) 2) Ensuite, vous pouvez demander des statuts/mentions et filtrer le résultat par in_reply_to_status_id. Ce dernier doit être égal à l'identifiant particulier de l'étape 1

3
Willy

Pas de manière pragmatique facile. Il y a une demande de fonctionnalité pour cela:

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

Il existe quelques sites Web tiers qui fournissent des API, mais ils manquent souvent de statuts.

3
abraham

En tant qu'États satheesh, cela fonctionne très bien. Voici REST code API ce que j'ai utilisé

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;
2
Kamal Kumar

J'ai rencontré le même problème il y a quelques mois au travail, car j'utilisais auparavant leur related_tweets endpoint in REST V1.

J'ai donc dû créer une solution de contournement, que j'ai documentée ici:
http://adriancrepaz.com/Twitter_conversations_apiMiroir - Fourche Github

Cette classe devrait faire exactement ce que vous voulez. Il efface le code HTML du site mobile et analyse une conversation. Je l'utilise depuis un moment et il semble très fiable.

Pour récupérer une conversation ...

Demande

<?php

require_once 'acTwitterConversation.php';

$Twitter = new acTwitterConversation;
$conversation = $Twitter->fetchConversion(324215761998594048);
print_r($conversation);

?>

Réponse

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
                        )
                )
             ....             
        )
)
1
Adrian