Existe-t-il un moyen dans l'API Twitter d'obtenir les réponses à un tweet particulier? Merci
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.
Voici la procédure pour obtenir les réponses d'un tweets
[q="to:$tweeterusername", sinceId = $tweetId]
in_reply_to_status_id_str to $tweetid
est la réponse du message.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
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;
}
}
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.
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
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.
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;
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
)
)
....
)
)