Có cách nào trong API Twitter để nhận được câu trả lời cho một tweet cụ thể không? Cảm ơn
Câu trả lời:
Theo những gì tôi hiểu, không có cách nào để làm điều đó trực tiếp (ít nhất là không phải bây giờ). Có vẻ như một cái gì đó cần được thêm vào. Gần đây họ đã thêm một số khả năng 'retweet', có vẻ hợp lý khi thêm điều này.
Đây là một cách khả thi để làm điều này, dữ liệu tweet mẫu đầu tiên (từ 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>
...
Từ status/show
bạn có thể tìm thấy id của người dùng. Sau đó statuses/mentions_timeline
sẽ trả về danh sách trạng thái cho người dùng. Chỉ cần phân tích cú pháp mà trả về tìm kiếm in_reply_to_status_id
kết quả phù hợp với tweet gốc id
.
status/mentions
.
status/mentions_timeline
Đây là quy trình để nhận được câu trả lời cho một tweet
[q="to:$tweeterusername", sinceId = $tweetId]
in_reply_to_status_id_str to $tweetid
là câu trả lời cho bài đăng.Đây là giải pháp của tôi. Nó sử dụng thư viện Twitter Oauth PHP của Abraham: https://github.com/abraham/twitteroauth
Nó yêu cầu bạn biết thuộc tính screen_name của người dùng Twitter cũng như thuộc tính id_str của tweet được đề cập. Bằng cách này, bạn có thể nhận nguồn cấp dữ liệu hội thoại tùy ý từ bất kỳ tweet nào của người dùng tùy ý:
* CẬP NHẬT: Mã được làm mới để phản ánh quyền truy cập đối tượng so với quyền truy cập mảng:
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 có một api không có giấy tờ được gọi là liên quan đến kết quả. Nó sẽ cung cấp cho bạn câu trả lời cho id tweet được chỉ định. Không chắc mức độ đáng tin cậy của nó như thử nghiệm của nó, tuy nhiên đây là cùng một lệnh gọi api được gọi trên web twitter.
Sử dụng có nguy cơ của riêng bạn. :)
https://api.twitter.com/1/related_results/show/172019363942117377.json?include_entities=1
Để biết thêm thông tin, hãy xem cuộc thảo luận này trên dev.twitter: https://dev.twitter.com/discussions/293
Ở đây tôi đang chia sẻ mã R đơn giản để tìm nạp trả lời của một tweet cụ thể
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.
Không phải một cách dễ dàng thực dụng. Có một yêu cầu tính năng cho nó:
http://code.google.com/p/twitter-api/issues/detail?id=142
Có một vài trang web của bên thứ ba cung cấp API nhưng chúng thường bỏ sót trạng thái.
Như trạng thái satheesh nó hoạt động tốt. Đây là mã REST API mà tôi đã sử dụng
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;
Tôi đã gặp vấn đề tương tự cách đây vài tháng tại nơi làm việc, vì trước đây tôi đã sử dụng related_tweets
điểm cuối của họ trong REST V1.
Vì vậy, tôi đã phải tạo một cách giải quyết, mà tôi đã ghi lại ở đây:
http://adriancrepaz.com/twitter_conversations_api Mirror - Github fork
Lớp học này sẽ làm chính xác những gì bạn muốn. Nó quét HTML của trang web dành cho thiết bị di động và phân tích cú pháp một cuộc hội thoại. Tôi đã sử dụng nó một thời gian và nó có vẻ rất đáng tin cậy.
Để tìm nạp một cuộc trò chuyện ...
Yêu cầu
<?php
require_once 'acTwitterConversation.php';
$twitter = new acTwitterConversation;
$conversation = $twitter->fetchConversion(324215761998594048);
print_r($conversation);
?>
Phản ứng
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
)
)
....
)
)
Bạn có thể sử dụng gói twarc trong python để thu thập tất cả các câu trả lời cho một tweet.
twarc replies 824077910927691778 > replies.jsonl
Ngoài ra, có thể thu thập tất cả các chuỗi trả lời (câu trả lời cho câu trả lời) cho một tweet bằng cách sử dụng lệnh dưới đây:
twarc replies 824077910927691778 --recursive
vì statuses / mentions_timeline sẽ trả về 20 lượt đề cập gần đây nhất, điều này sẽ không hiệu quả để gọi và nó có các giới hạn như 75 yêu cầu mỗi cửa sổ (15 phút), với điều này, chúng ta có thể sử dụng user_timeline
cách tốt nhất: 1. lấy tham số screen_name hoặc user_id từ trạng thái / hiển thị.
2. bây giờ sử dụng user_timeline
GET https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=screen_name&count=count
(screen_name == tên mà chúng tôi nhận được Từ trạng thái / hiển thị)
(count == 1 đến max 200)
count: Chỉ định số lượng Tweet để thử và truy xuất, tối đa 200 cho mỗi yêu cầu riêng biệt.
từ kết quả Chỉ cần phân tích cú pháp mà trả về tìm kiếm một in_reply_to_status_id khớp với id của tweet ban đầu.
Rõ ràng, nó không lý tưởng, nhưng nó sẽ hoạt động.