Jak znaleźć wszystkich użytkowników, którzy przesłali mój tweet?

17

Strona „Twoje tweety przesłały dalej” na Twitterze pokazuje, który z twoich tweetów został przesłany ponownie, ale zwykle mówi coś w rodzaju „podał tweety przez @madeuptwitteraccount i inne”, czy jest jakiś sposób, aby dowiedzieć się (a) ile osób przesłało tweet dalej i (b) jakie są ich identyfikatory Twittera?

Christi
źródło
To jest faktycznie to samo pytanie, co na Stack Exchange w Jak uzyskać listę wszystkich retweeterów na Twitterze?
Owen Blacker

Odpowiedzi:

4

Odpowiedzi do tej pory dadzą Ci maksymalnie 100 retweetów. Istnieje jednak metoda API, która zwraca do 100 pozycji kolekcji kursorów (aby można było przeglądać ją, aby uzyskać więcej).

Więcej informacji znajduje się na stronie Twórców Twittera pod adresem GET statusy / retweetery / ids , ale możesz też przeczytać ich stronę na temat używania kursorów do poruszania się po kolekcjach .

Edytowano, aby dodać: To powiedziawszy, pierwszy wątek na stronie programistów, który pojawił się w szybkim google, to @episod , pracownik Twittera, który mówi:

Prawdopodobnie nie możesz dostać się do wszystkich. Dane są rozłożone. Najlepszym rozwiązaniem jest użycie interfejsu API REST w celu określenia wielu użytkowników, którzy wykonali retweet, ale dane będą nadal ograniczone.

Najłatwiej jest śledzić retweety, gdy się zdarzają, niż próbować znaleźć je z przeszłości. Użyj do tego Streaming API .

Źródło: jak uzyskać cały retweet danego tweeta

Owen Blacker
źródło
3

Ostatnio na Twitterze wprowadzono wiele zmian, a nowa strona na Twitterze nie jest możliwa. Korzystam jednak z tweetów na osi czasu, które mają funkcję przeglądania wszystkich tweetów przesłanych dalej.

Mam nadzieję, że to pomoże.

Peter Couch
źródło
1
Czy ta strona nie działa?
B Seven
przekierowanie na facebook.com
m2j 22.12.16
0

Jeśli chcesz trochę kodować, oto jak to będzie działać w Javie ...

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);
        }
    }
}

Ten kod będzie drukował każdy ostatnio napisany tweet, wraz z identyfikatorami osób, które go przesłały dalej. Kilka szybkich rzeczy do zapamiętania - głównie ta linia:

 Twitter twitter = TwitApplicationFactory.getjoereddingtonTwitter();

Nie zadziała dla ciebie - to ja otrzymuję własny klucz API i tak dalej, będziesz musiał napisać własny ...

Joe
źródło