Gibt es eine Möglichkeit in der Twitter-API, die Antworten auf einen bestimmten Tweet zu erhalten? Vielen Dank
Antworten:
Soweit ich weiß, gibt es keine Möglichkeit, dies direkt zu tun (zumindest jetzt nicht). Scheint etwas zu sein, das hinzugefügt werden sollte. Sie haben kürzlich einige "Retweet" -Funktionen hinzugefügt. Es scheint logisch, dies ebenfalls hinzuzufügen.
Hier ist eine Möglichkeit, dies zu tun: Erste Beispiel-Tweet-Daten (von 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>
...
Hier status/show
finden Sie die Benutzer-ID. Anschließend statuses/mentions_timeline
wird eine Statusliste für einen Benutzer zurückgegeben. Analysieren Sie einfach diese Rückkehr und suchen Sie nach einem in_reply_to_status_id
passenden Tweet id
.
status/mentions
.
status/mentions_timeline
Hier ist das Verfahren, um die Antworten für einen Tweets zu erhalten
[q="to:$tweeterusername", sinceId = $tweetId]
in_reply_to_status_id_str to $tweetid
mit den Antworten für den Beitrag überein.Hier ist meine Lösung. Es nutzt Abrahams Twitter Oauth PHP-Bibliothek: https://github.com/abraham/twitteroauth
Dazu müssen Sie das Attribut screen_name des Twitter-Benutzers sowie das Attribut id_str des betreffenden Tweets kennen. Auf diese Weise können Sie einen beliebigen Konversations-Feed aus dem Tweet eines beliebigen Benutzers abrufen:
* UPDATE: Aktualisierter Code, der den Objektzugriff im Vergleich zum Arrayzugriff widerspiegelt:
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;
}
}
Twitter hat eine undokumentierte API namens related_results. Sie erhalten Antworten auf die angegebene Tweet-ID. Ich bin mir nicht sicher, wie zuverlässig es als Experiment ist, aber dies ist der gleiche API-Aufruf, der im Twitter-Web aufgerufen wird.
Benutzung auf eigene Gefahr. :) :)
https://api.twitter.com/1/related_results/show/172019363942117377.json?include_entities=1
Weitere Informationen finden Sie in dieser Diskussion auf dev.twitter: https://dev.twitter.com/discussions/293
Hier teile ich einfachen R-Code, um die Antwort eines bestimmten Tweets abzurufen
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.
Nicht auf einfache pragmatische Weise. Es gibt eine Funktionsanforderung dafür:
http://code.google.com/p/twitter-api/issues/detail?id=142
Es gibt einige Websites von Drittanbietern, die APIs bereitstellen, denen jedoch häufig der Status fehlt.
Ich habe dies folgendermaßen implementiert:
1) statuses / update gibt die ID des letzten Status zurück (wenn include_entities true ist). 2) Anschließend können Sie Status / Erwähnungen anfordern und das Ergebnis nach in_reply_to_status_id filtern. Letzteres sollte der bestimmten ID aus Schritt 1 entsprechen
Als Staaten satheesh funktioniert es großartig. Hier ist der REST-API-Code, den ich verwendet habe
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;
Ich bin vor einigen Monaten bei der Arbeit auf dasselbe Problem gestoßen, da ich zuvor ihren related_tweets
Endpunkt in REST V1 verwendet habe.
Also musste ich eine Problemumgehung erstellen, die ich hier dokumentiert habe:
http://adriancrepaz.com/twitter_conversations_api Mirror - Github Fork
Diese Klasse sollte genau das tun, was Sie wollen. Es kratzt den HTML-Code der mobilen Site und analysiert eine Konversation. Ich habe es für eine Weile benutzt und es scheint sehr zuverlässig zu sein.
Um ein Gespräch zu führen ...
Anfrage
<?php
require_once 'acTwitterConversation.php';
$twitter = new acTwitterConversation;
$conversation = $twitter->fetchConversion(324215761998594048);
print_r($conversation);
?>
Antwort
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
)
)
....
)
)
Sie können das Twarc- Paket in Python verwenden, um alle Antworten auf einen Tweet zu sammeln.
twarc replies 824077910927691778 > replies.jsonl
Es ist auch möglich, alle Antwortketten (Antworten auf die Antworten) auf einen Tweet mit dem folgenden Befehl zu sammeln:
twarc replies 824077910927691778 --recursive
Da statuses / Erwähnungen_Timeline die letzten 20 Erwähnungen zurückgibt, ist dies nicht so effizient aufzurufen, und es gibt Einschränkungen wie 75 Anforderungen pro Fenster (15 Minuten). In diesem Fall können wir user_timeline verwenden
Der beste Weg: 1. Rufen Sie die Parameter screen_name oder user_id von status / show ab.
2. Verwenden Sie jetzt user_timeline
GET https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=screen_name&count=count
(screen_name == name, den wir von status / show erhalten haben)
(count == 1 bis max 200)
count: Gibt die Anzahl der Tweets an, die abgerufen und abgerufen werden sollen, bis zu maximal 200 pro eindeutiger Anforderung.
aus dem Ergebnis Analysieren Sie einfach diese Rückgabe und suchen Sie nach einer in_reply_to_status_id, die mit der ID des ursprünglichen Tweets übereinstimmt.
Natürlich ist es nicht ideal, aber es wird funktionieren.