Comment puis-je trouver tous les utilisateurs qui ont retweeté un de mes tweets?

17

La page "Vos tweets retweetés" sur Twitter montre lequel de vos tweets a été retweeté, mais généralement il dit quelque chose comme "retweeté par @madeuptwitteraccount et autres" est-il possible de savoir (a) combien de personnes ont retweeté un tweet et (b) quels sont leurs identifiants twitter?

Christi
la source
C'est effectivement la même question que sur Stack Exchange sur Comment obtenir une liste de tous les retweeters sur Twitter?
Owen Blacker

Réponses:

4

Jusqu'à présent, les réponses ne vous donneront que 100 retweets au maximum. Il existe cependant une méthode API qui renvoie jusqu'à 100 entrées d'une collection cursorisée (vous pouvez donc la parcourir pour en savoir plus).

Il y a plus d'informations sur le site des développeurs Twitter sous GET status / retweeters / ids , bien que vous souhaitiez également lire leur page sur l' utilisation des curseurs pour parcourir les collections .

Modifié pour ajouter: Cela dit, le premier fil sur le site des développeurs qui a fait surface dans un rapide google a @episod , un employé de Twitter disant:

Vous ne pouvez probablement pas les atteindre tous. Les données sont réparties. Votre meilleur pari est d'utiliser l'API REST pour déterminer la plupart des utilisateurs qui ont effectué le retweet, mais les données seront toujours limitées.

Il est plus facile de suivre les retweets lorsqu'ils se produisent plutôt que d'essayer de les retrouver dans le passé. Utilisez l' API Streaming pour cela.

Source: comment obtenir tous les retweets d'un tweet donné

Owen Blacker
la source
3

Récemment, Twitter a subi de nombreux changements et, avec le nouveau site Web Twitter, cela n'est pas possible. Cependant, j'utilise Timeline Tweets qui a une fonctionnalité pour afficher tous vos tweets retweetés.

J'espère que ça aide.

Peter Couch
la source
1
Ce site est-il en panne / disparu?
B Seven
redirection vers facebook.com
m2j
0

Si vous êtes prêt à faire du codage, voici comment cela fonctionnerait en 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);
        }
    }
}

Ce code imprimera chaque tweet que vous avez rédigé récemment, ainsi que les identifiants des personnes qui l'ont retweeté. Quelques petites choses à noter - surtout que cette ligne:

 Twitter twitter = TwitApplicationFactory.getjoereddingtonTwitter();

Ne fonctionnera pas pour vous - c'est moi qui reçois ma propre clé API et ainsi de suite, vous devrez écrire la vôtre ...

Joe
la source