Як дізнатись усіх користувачів, які ретвітували твіт?


17

Сторінка "Твіти про ретвітнувший твіт" у Twitter показує, який із твітів було ретвітовано, але зазвичай на ньому написано щось на кшталт "ретвітнув @madeuptwitteraccount та інші", чи є який-небудь спосіб дізнатися (a) скільки людей ретвітували твіт і (b) які їх посвідчення в Twitter?


Це фактично те саме питання, що і на Stack Exchange в розділі Як отримати список усіх ретвітерів у Twitter?
Оуен Блеккер

Відповіді:


4

На сьогодні відповіді дадуть лише максимум 100 ретвітів. Існує метод API, який повертає до 100 записів курсованої колекції (тому ви можете переглядати сторінку, щоб отримати більше).

На сайті розробників Twitter є додаткова інформація про статуси / ретвітери / ідентифікатори GET , хоча ви також хочете прочитати їх сторінку про використання курсорів для навігації по колекціях .

Відредаговано, щоб додати: Таким чином, перша тема на веб-сайті Developers, яка з’явилася у швидкому Google, має @episod , працівник Twitter:

Ви, швидше за все, не зможете дістатися до всіх. Дані поширюються. Найкраще скористатися API REST, щоб визначити багатьох користувачів, які виконували ретвіт, але дані все ще будуть обмежені.

Найпростіше відстежувати ретвіти, як вони відбуваються, а не намагатися знайти їх з минулого. Для цього використовуйте Streaming API .

Джерело: як отримати всі ретвіти даного твіту


3

Останнім часом Twitter пройшов багато змін, і з новим веб-сайтом Twitter це неможливо. Однак я використовую твіти "Тімлайн", яка має функцію перегляду всіх твіттів, що ретвітували.

Я сподіваюся, що це допомагає.


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 і так далі, вам доведеться написати свій власний ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.