มีวิธีใน Twitter API เพื่อตอบกลับทวีตเฉพาะหรือไม่? ขอบคุณ
มีวิธีใน Twitter API เพื่อตอบกลับทวีตเฉพาะหรือไม่? ขอบคุณ
คำตอบ:
จากสิ่งที่ฉันเข้าใจไม่มีวิธีทำโดยตรง (อย่างน้อยก็ไม่ใช่ตอนนี้) ดูเหมือนเป็นสิ่งที่ควรเพิ่ม พวกเขาเพิ่งเพิ่มความสามารถ 'รีทวีต' บางอย่างดูเหมือนจะมีเหตุผลที่จะเพิ่มสิ่งนี้ด้วยเช่นกัน
นี่เป็นวิธีหนึ่งที่เป็นไปได้ในการทำเช่นนี้ข้อมูลทวีตตัวอย่างแรก (จาก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>
...
จากstatus/show
คุณสามารถค้นหารหัสของผู้ใช้ จากนั้นstatuses/mentions_timeline
จะแสดงรายการสถานะสำหรับผู้ใช้ เพียงแค่แยกผลตอบแทนที่มองหาการจับคู่เดิมทวีตin_reply_to_status_id
id
status/mentions
แต่ผมไม่คิดว่าจะเป็นที่เชื่อถือได้ตามการใช้
status/mentions_timeline
นี่คือขั้นตอนในการรับการตอบกลับสำหรับทวีต
[q="to:$tweeterusername", sinceId = $tweetId]
in_reply_to_status_id_str to $tweetid
ซ้ำผลลัพธ์ทั้งหมดผลลัพธ์ที่ตรงกับคำตอบของโพสต์นี่คือทางออกของฉัน มันใช้ไลบรารี Twitter Oauth PHP ของ Abraham: https://github.com/abraham/twitteroauth
คุณต้องรู้แอตทริบิวต์ screen_name ของผู้ใช้ Twitter รวมถึงแอตทริบิวต์ id_str ของทวีตที่เป็นปัญหา ด้วยวิธีนี้คุณจะได้รับฟีดการสนทนาโดยพลการจากทวีตของผู้ใช้ใด ๆ :
* UPDATE:รหัสที่รีเฟรชเพื่อสะท้อนการเข้าถึงวัตถุเทียบกับการเข้าถึงอาร์เรย์:
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 มี api ที่ไม่มีเอกสารชื่อ related_results มันจะตอบกลับคุณสำหรับรหัสทวีตที่ระบุ ไม่แน่ใจว่ามันน่าเชื่อถือเพียงใดจากการทดลองอย่างไรก็ตามนี่เป็นการเรียก API แบบเดียวกับที่เรียกบนเว็บ twitter
ใช้ความเสี่ยงของคุณเอง :)
https://api.twitter.com/1/related_results/show/172019363942117377.json?include_entities=1
สำหรับข้อมูลเพิ่มเติมโปรดดูการสนทนานี้ใน dev.twitter: https://dev.twitter.com/discussions/293
ที่นี่ฉันกำลังแบ่งปันรหัส R ง่าย ๆ เพื่อดึงการตอบกลับของทวีตเฉพาะ
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.
ไม่ใช่ในทางปฏิบัติที่ง่าย มีการร้องขอคุณสมบัติสำหรับมัน:
http://code.google.com/p/twitter-api/issues/detail?id=142
มีเว็บไซต์ของบุคคลที่สามสองสามแห่งที่ให้บริการ API แต่มักจะพลาดสถานะ
ฉันได้ใช้สิ่งนี้ด้วยวิธีต่อไปนี้:
1) statuses / update จะส่งคืน id ของสถานะล่าสุด (ถ้า include_entities เป็นจริง) 2) จากนั้นคุณสามารถร้องขอสถานะ / การกล่าวถึงและกรองผลลัพธ์โดย in_reply_to_status_id หลังควรเท่ากับ id เฉพาะจากขั้นตอนที่ 1
มันใช้งานได้ดีในฐานะรัฐ นี่คือรหัส REST API ที่ฉันใช้
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;
ฉันเจอปัญหาเดียวกันเมื่อสองสามเดือนก่อนในที่ทำงานซึ่งก่อนหน้านี้ฉันใช้มัน related_tweets
จุดสิ้นสุดใน REST V1
ดังนั้นฉันจึงต้องสร้างวิธีแก้ปัญหาซึ่งฉันได้บันทึกไว้ที่นี่:
http://adriancrepaz.com/twitter_conversations_api Mirror - Github fork
ชั้นเรียนนี้ควรทำในสิ่งที่คุณต้องการ จะคัดลอก HTML ของไซต์บนอุปกรณ์เคลื่อนที่และแยกวิเคราะห์การสนทนา ฉันใช้มาระยะหนึ่งแล้วและดูเหมือนว่าน่าเชื่อถือมาก
ในการเรียกการสนทนา ...
ขอ
<?php
require_once 'acTwitterConversation.php';
$twitter = new acTwitterConversation;
$conversation = $twitter->fetchConversion(324215761998594048);
print_r($conversation);
?>
การตอบสนอง
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
)
)
....
)
)
คุณสามารถใช้แพ็คเกจtwarcใน python เพื่อรวบรวมคำตอบทั้งหมดของทวีต
twarc replies 824077910927691778 > replies.jsonl
นอกจากนี้ยังสามารถรวบรวมกลุ่มการตอบกลับทั้งหมด (การตอบกลับการตอบกลับ) ไปยังทวีตโดยใช้คำสั่งด้านล่าง:
twarc replies 824077910927691778 --recursive
เนื่องจาก statuses / mentions_timeline จะส่งคืนการกล่าวถึงล่าสุด 20 รายการซึ่งจะไม่มีประสิทธิภาพในการโทรและมีข้อ จำกัด เช่น 75 คำขอต่อหน้าต่าง (15 นาที) เนื่องจากสิ่งนี้เราสามารถใช้user_timeline
วิธีที่ดีที่สุด: 1. รับพารามิเตอร์ screen_name หรือ user_id จากสถานะ / แสดง
2. ตอนนี้ใช้user_timeline
GET https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=screen_name&count=count
(screen_name == ชื่อที่เราได้รับจากสถานะ / การแสดง)
(นับ == 1 ถึงสูงสุด 200)
จำนวน: ระบุจำนวนทวีตที่จะพยายามและเรียกคืนสูงสุด 200 ต่อคำขอที่แตกต่างกัน
จากผลลัพธ์เพียงแยกวิเคราะห์ผลตอบแทนที่มองหา in_reply_to_status_id ที่ตรงกับ id ของทวีตดั้งเดิม
เห็นได้ชัดว่ามันไม่เหมาะ แต่จะได้ผล