web-dev-qa-db-fra.com

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

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

17
Christi

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

Il y a plus d'informations sur le site Twitter Développeurs à l'adresse états/retweeters/ids GET , mais vous voudrez également lire leur page sur tilisation des curseurs pour parcourir les collections .

Édité pour ajouter: Cela dit, le premier fil du site des développeurs qui a fait surface dans un rapide Google a @ episod , a Employé Twitter disant:

Vous ne pouvez probablement pas les atteindre tous. Les données sont dispersées. Le mieux est d’utiliser l’API REST pour déterminer les utilisateurs qui ont exécuté le retweet, mais les données seront toujours soumises à des contraintes.

Il est plus facile de suivre les retweets au fur et à mesure que d'essayer de les retrouver dans le passé. Utilisez le Streaming API pour cela.

Source: comment obtenir tous les retweet d'un Tweet donné

4
Owen Blacker

Récemment, Twitter a subi de nombreux changements et avec le nouveau site Web Twitter, cela n’est plus possible. Cependant, j'utilise Tweets sur la timeline , qui dispose d'une fonctionnalité permettant d'afficher tous vos tweets retweetés.

J'espère que ça aide.

3
Peter Couch

Si vous êtes prêt à coder, 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 créé récemment, ainsi que les identifiants des personnes qui l'ont retweeté. Quelques petites choses à noter - principalement que cette ligne:

 Twitter twitter = TwitApplicationFactory.getjoereddingtonTwitter();

Cela ne fonctionnera pas pour vous - c'est moi qui obtiens ma propre clé API et ainsi de suite, vous devrez écrire votre propre clé ...

0
Joe