ฉันจะค้นหาผู้ใช้ทั้งหมดที่รีทวีตทวีตของฉันได้อย่างไร


17

หน้า "ทวีตทวีตของคุณ" บนทวิตเตอร์แสดงว่าทวีตทวีตใดของคุณ แต่โดยปกติแล้วมันจะบอกว่าบางสิ่งเช่น "รีทวีตโดย @madeuptwitteraccount และคนอื่น ๆ " มีวิธีใดที่จะค้นหา (ก) จำนวนคนทวีตทวีตแล้ว (b) รหัสตัวสั่นด้วยความตื่นเต้นของพวกเขาคืออะไร?


นี่เป็นคำถามที่มีประสิทธิภาพเช่นเดียวกับใน Exchange Exchange ที่วิธีรับรายชื่อผู้ตอบโต้ทั้งหมดใน Twitter
Owen Blacker

คำตอบ:


4

คำตอบที่ได้จะทำให้คุณได้รีทวีตมากที่สุด 100 ครั้งเท่านั้น มีวิธี API ที่ส่งคืนรายการคอลเลกชันที่สาปแช่งมากถึง 100 รายการ(เพื่อให้คุณสามารถเลื่อนดูเพื่อรับเพิ่ม) ได้

มีข้อมูลเพิ่มเติมเกี่ยวกับเว็บไซต์ Twitter Developers ที่GET status / retweeters / idsแต่คุณยังจะต้องการอ่านหน้าของพวกเขาเกี่ยวกับการใช้เคอร์เซอร์ของคอลเลกชันนำทาง

แก้ไขเพื่อเพิ่ม: นั่นคือกระทู้แรกในเว็บไซต์ Developers ที่โผล่ขึ้นมาใน google อย่างรวดเร็ว @episodพนักงาน Twitter พูดว่า:

คุณไม่สามารถไปถึงพวกเขาได้ทั้งหมด ข้อมูลถูกกระจายออกไป ทางออกที่ดีที่สุดของคุณคือการใช้ REST API เพื่อกำหนดผู้ใช้จำนวนมากที่ดำเนินการรีทวีต แต่ข้อมูลจะยังคงถูก จำกัด

เป็นการง่ายที่สุดในการติดตามการรีทวีตเมื่อพวกเขาเกิดขึ้นแทนที่จะพยายามค้นหาพวกเขาในอดีต ใช้Streaming APIสำหรับสิ่งนั้น

แหล่งที่มา: วิธีรับทวีตซ้ำทั้งหมดของทวีตที่กำหนด


3

เมื่อเร็ว ๆ นี้ Twitter ได้เปลี่ยนแปลงไปมากและด้วยเว็บไซต์ Twitter ใหม่นี้เป็นไปไม่ได้ อย่างไรก็ตามฉันใช้Timeline Tweetsซึ่งมีคุณสมบัติในการดูทวีตทั้งหมดของคุณ

ฉันหวังว่านี่จะช่วยได้.


1
ไซต์นี้ลง / ไปหรือไม่
B เซเว่น

เปลี่ยนเส้นทางไปที่ facebook.com
m2j

0

หากคุณยินดีที่จะทำการเข้ารหัสบางส่วนนี่คือวิธีที่มันจะทำงานใน 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 ของตัวเองและอื่น ๆ คุณจะต้องเขียนของคุณเอง ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.