Réponses à un tweet particulier, API Twitter

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

D’après ce que j’ai compris, il n’y a pas moyen de le faire directement (du moins pas maintenant). Cela semble être quelque chose qui devrait être ajouté. Ils ont récemment ajouté des fonctionnalités de “retweet”, ce qui semble logique d’append cela.

Voici un moyen possible de le faire, le premier exemple de données tweet (à partir de status/show ):

  Tue Apr 07 22:52:51 +0000 2009 1472669360 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. TweetDeck false   false   1401881 ... 

De status/show vous pouvez trouver l’identifiant de l’utilisateur. Ensuite, statuses/mentions_timeline renverra une liste de statut pour un utilisateur. in_reply_to_status_id simplement ce retour en recherchant un in_reply_to_status_id correspondant à l’ id du tweet d’origine.

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

  1. lorsque vous récupérez le tweet stockez le tweetId, à savoir, id_str
  2. en utilisant l’API de recherche twitter, faites la requête suivante [q="to:$tweeterusername", sinceId = $tweetId]
  3. Bouclez tous les résultats, les résultats correspondant à in_reply_to_status_id_str to $tweetid sont les réponses à la publication.

Twitter a un api non documenté appelé related_results. Il vous donnera des réponses pour l’identifiant de tweet spécifié. Je ne suis pas sûr de sa fiabilité en tant qu’expérimental, mais il s’agit du même appel d’api 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/293

Voici ma solution Il utilise la bibliothèque PHP Oauth de Abraham: https://github.com/abraham/twitteroauth

Vous devez connaître l’atsortingbut screen_name de l’utilisateur Twitter, ainsi que l’atsortingbut id_str du tweet en question. De cette façon, vous pouvez obtenir un stream de conversation arbitraire à partir d’un tweet d’utilisateur quelconque:

* UPDATE: Code actualisé pour refléter l’access à l’object et l’access 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; } } 

Ici, je partage le code R simple pour récupérer la réponse de 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. 

Pas d’une 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.

Je l’ai implémenté de la manière suivante:

1) statuses / update retourne l’id du dernier statut (si include_entities est vrai) 2) Vous pouvez alors demander des status / mentions et filtrer le résultat par in_reply_to_status_id. Ce dernier devrait être égal à l’identifiant particulier de l’étape 1

Je suis tombé sur le même problème il y a quelques mois au travail, car j’utilisais auparavant leur sharepoint terminaison related_tweets dans REST V1.

J’ai donc dû créer une solution de contournement, que j’ai documentée ici. http://adriancrepaz.com/twitter_conversations_api

Cette classe devrait faire exactement ce que vous voulez. Il efface le code HTML du site mobile et parsing une conversation. Je l’ai utilisé pendant un moment et cela semble très fiable.

Pour aller chercher une conversation …

Demande

 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] => http://soffr.miximages.com/twitter/24aaffa670e634a7da9a087bfa83abe6_normal.png [large] => http://soffr.miximages.com/twitter/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 ) ) .... ) ) 

J’espère que ça aide, Adrian.

Comme le dit Satheesh, cela fonctionne très bien. Voici le code API REST 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 
"; print_r($arr); die;