自分のツイートをリツイートしたすべてのユーザーを見つけるにはどうすればよいですか?


17

Twitterの「あなたのツイートがリツイートされました」ページには、どのツイートがリツイートされたかが表示されますが、通常は「@madeuptwitteraccountなどによってリツイートされた」と表示されます。(a)ツイートをリツイートした人の数と(b)ツイッターIDとは何ですか?


回答:


4

これまでの回答では、最大100件のリツイートしか得られません。ただし、カーソルコレクションの最大100エントリを返すAPIメソッドがあります(そのため、ページングしてさらに収集することができます)。

Twitter DevelopersサイトのGET statuses / retweeters / idsに詳細情報がありますが、カーソルを使用したコレクションのナビゲーションに関するページも参照してください。

追加して編集: つまり、開発者向けサイトの最初のスレッドには、クイックgoogleで表示された@episodがあり、Twitterの従業員は次のように言っています。

それらすべてにアクセスすることはできません。データは分散しています。最善の方法は、REST APIを使用して、リツイートを実行した多くのユーザーを特定することですが、データは引き続き制約されます。

過去のリツイートを見つけようとするよりも、リツイートが発生したときに追跡するのが最も簡単です。そのためにストリーミングAPIを使用します

ソース:特定のツイートのすべてのリツイートを取得する方法


3

最近、Twitterは多くの変更を行っており、新しいTwitter Webサイトではこれは不可能です。ただし、私はタイムラインツイートを使用します。これには、リツイートされたすべてのツイートを表示する機能があります。

これがお役に立てば幸いです。


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

このコードは、最近ツイートしたすべてのツイートと、リツイートした人のIDを出力します。いくつかの簡単な注意事項-主にこの行:

 Twitter twitter = TwitApplicationFactory.getjoereddingtonTwitter();

あなたのために働くことはありません-それは私が自分のAPIキーを取得するなどです、あなたはあなた自身を書く必要があります...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.