หน้า "ทวีตทวีตของคุณ" บนทวิตเตอร์แสดงว่าทวีตทวีตใดของคุณ แต่โดยปกติแล้วมันจะบอกว่าบางสิ่งเช่น "รีทวีตโดย @madeuptwitteraccount และคนอื่น ๆ " มีวิธีใดที่จะค้นหา (ก) จำนวนคนทวีตทวีตแล้ว (b) รหัสตัวสั่นด้วยความตื่นเต้นของพวกเขาคืออะไร?
หน้า "ทวีตทวีตของคุณ" บนทวิตเตอร์แสดงว่าทวีตทวีตใดของคุณ แต่โดยปกติแล้วมันจะบอกว่าบางสิ่งเช่น "รีทวีตโดย @madeuptwitteraccount และคนอื่น ๆ " มีวิธีใดที่จะค้นหา (ก) จำนวนคนทวีตทวีตแล้ว (b) รหัสตัวสั่นด้วยความตื่นเต้นของพวกเขาคืออะไร?
คำตอบ:
คำตอบที่ได้จะทำให้คุณได้รีทวีตมากที่สุด 100 ครั้งเท่านั้น มีวิธี API ที่ส่งคืนรายการคอลเลกชันที่สาปแช่งมากถึง 100 รายการ(เพื่อให้คุณสามารถเลื่อนดูเพื่อรับเพิ่ม) ได้
มีข้อมูลเพิ่มเติมเกี่ยวกับเว็บไซต์ Twitter Developers ที่GET status / retweeters / idsแต่คุณยังจะต้องการอ่านหน้าของพวกเขาเกี่ยวกับการใช้เคอร์เซอร์ของคอลเลกชันนำทาง
แก้ไขเพื่อเพิ่ม: นั่นคือกระทู้แรกในเว็บไซต์ Developers ที่โผล่ขึ้นมาใน google อย่างรวดเร็ว @episodพนักงาน Twitter พูดว่า:
คุณไม่สามารถไปถึงพวกเขาได้ทั้งหมด ข้อมูลถูกกระจายออกไป ทางออกที่ดีที่สุดของคุณคือการใช้ REST API เพื่อกำหนดผู้ใช้จำนวนมากที่ดำเนินการรีทวีต แต่ข้อมูลจะยังคงถูก จำกัด
เป็นการง่ายที่สุดในการติดตามการรีทวีตเมื่อพวกเขาเกิดขึ้นแทนที่จะพยายามค้นหาพวกเขาในอดีต ใช้Streaming APIสำหรับสิ่งนั้น
แหล่งที่มา: วิธีรับทวีตซ้ำทั้งหมดของทวีตที่กำหนด
เมื่อเร็ว ๆ นี้ Twitter ได้เปลี่ยนแปลงไปมากและด้วยเว็บไซต์ Twitter ใหม่นี้เป็นไปไม่ได้ อย่างไรก็ตามฉันใช้Timeline Tweetsซึ่งมีคุณสมบัติในการดูทวีตทั้งหมดของคุณ
ฉันหวังว่านี่จะช่วยได้.
หากคุณยินดีที่จะทำการเข้ารหัสบางส่วนนี่คือวิธีที่มันจะทำงานใน java ...
package twitone;
import java.util.ArrayList;
import java.util.Map;
import twitone.structure.BaseTwitterClass;
import twitone.structure.TwitApplicationFactory;
import twitter4j.Paging;
import twitter4j.RateLimitStatus;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
public class MyRetweeters extends BaseTwitterClass {
private Twitter twitter;
public MyRetweeters(Twitter twitter) {
this.twitter = twitter;
}
public static void main(String[] args) throws TwitterException {
Twitter twitter = TwitApplicationFactory.getjoereddingtonTwitter();
MyRetweeters unit = new MyRetweeters(twitter);
String temp[] = unit.get();
for (String string : temp) {
System.out.println(string);
}
}
public String[] get() {
ArrayList<String> names = new ArrayList<String>();
try {
for (Status status : twitter.getUserTimeline(new Paging(1, 200))) {
System.out.println(status.getText());
if (status.getText().startsWith("RT")) {
// skip
} else if (status.getRetweetCount() > 0) {
// Because I don't want to breach
// Twitter's rate limits
// okay the below has been added to keep within the rate
// limited.
waitUntilICanMakeAnotherCall();
// end keeping within rate limit code.
for (Status rt : twitter.getRetweets(status.getId())) {
names.add(rt.getUser().getScreenName());
System.out.println("---"+rt.getUser().getScreenName());
}
}
}
} catch (TwitterException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return names.toArray(new String[names.size()]);
}
/**
* @throws TwitterException
* @throws InterruptedException
*/
protected void waitUntilICanMakeAnotherCall() throws TwitterException, InterruptedException {
{
Map<String, RateLimitStatus> temp = twitter.getRateLimitStatus();
RateLimitStatus temp2 = temp.get("/statuses/retweets/:id");
System.out.println(temp2.getRemaining());
if (temp2.getRemaining() == 0) {
Thread.sleep((temp2.getSecondsUntilReset() + 5) * 1000);
return;
}
System.out.println(temp2.getSecondsUntilReset());
int secondstosleep =1+ temp2.getSecondsUntilReset() / temp2.getRemaining();
System.out.println(secondstosleep);
Thread.sleep(secondstosleep * 1000);
}
}
}
รหัสนี้จะพิมพ์ทวีตทุกครั้งที่คุณทำเมื่อเร็ว ๆ นี้พร้อมกับรหัสของคนที่รีทวีต สองสิ่งที่ควรทราบ - ส่วนใหญ่เป็นบรรทัดนี้:
Twitter twitter = TwitApplicationFactory.getjoereddingtonTwitter();
จะไม่ทำงานสำหรับคุณ - นั่นคือฉันจะได้รับคีย์ API ของตัวเองและอื่น ๆ คุณจะต้องเขียนของคุณเอง ...