簡體   English   中英

Twitter Stream API獲取用戶推文

[英]Twitter Stream API to get users tweets

我正在使用Twitter流API從用戶獲取推文。 我有用戶ID列表,我如何從TwitterStream API獲取推文列表。 我分析了以下示例

public class TwitterStreamAPI {

    public static void main(String[] args) {
        ConfigurationBuilder cb = new ConfigurationBuilder();
        cb.setDebugEnabled(true);
        cb.setOAuthConsumerKey("xxxx");
        cb.setOAuthConsumerSecret("xxx");
        cb.setOAuthAccessToken("xxx");
        cb.setOAuthAccessTokenSecret("xxx");

        TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance();

        UserStreamListener listener = new UserStreamListener() {
            @Override
            public void onStatus(Status status) {
                System.out.println("onStatus @" + status.getUser().getScreenName() + " - " + status.getText());
            }

            @Override
            public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {
                //System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId());
            }

            @Override
            public void onDeletionNotice(long directMessageId, long userId) {
               // System.out.println("Got a direct message deletion notice id:" + directMessageId);
            }

            @Override
            public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
               // System.out.println("Got a track limitation notice:" + numberOfLimitedStatuses);
            }

            @Override
            public void onScrubGeo(long userId, long upToStatusId) {
               // System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId);
            }

            @Override
            public void onStallWarning(StallWarning warning) {
               // System.out.println("Got stall warning:" + warning);
            }

            @Override
            public void onFriendList(long[] friendIds) {
                /*System.out.print("onFriendList");
                for (long friendId : friendIds) {
                    System.out.print(" " + friendId);
                }
                System.out.println();*/
            }

            @Override
            public void onFavorite(User source, User target, Status favoritedStatus) {
               /* System.out.println("onFavorite source:@"
                        + source.getScreenName() + " target:@"
                        + target.getScreenName() + " @"
                        + favoritedStatus.getUser().getScreenName() + " - "
                        + favoritedStatus.getText());*/
            }

            @Override
            public void onUnfavorite(User source, User target, Status unfavoritedStatus) {
               /*System.out.println("onUnFavorite source:@"
                                + source.getScreenName() + " target:@"
                                + target.getScreenName() + " @"
                                + unfavoritedStatus.getUser().getScreenName()
                                + " - " + unfavoritedStatus.getText());*/
            }

            @Override
            public void onFollow(User source, User followedUser) {
                /*System.out.println("onFollow source:@"
                        + source.getScreenName() + " target:@"
                        + followedUser.getScreenName());*/
            }

            @Override
            public void onDirectMessage(DirectMessage directMessage) {
               /* System.out.println("onDirectMessage text:"
                        + directMessage.getText());*/
            }

            @Override
            public void onUserListMemberAddition(User addedMember, User listOwner, UserList list) {
                /*System.out.println("onUserListMemberAddition added member:@"
                        + addedMember.getScreenName()
                        + " listOwner:@" + listOwner.getScreenName()
                        + " list:" + list.getName());*/
            }

            @Override
            public void onUserListMemberDeletion(User deletedMember, User listOwner, UserList list) {
               /* System.out.println("onUserListMemberDeleted deleted member:@"
                        + deletedMember.getScreenName()
                        + " listOwner:@" + listOwner.getScreenName()
                        + " list:" + list.getName());*/
            }

            @Override
            public void onUserListSubscription(User subscriber, User listOwner, UserList list) {
                /*System.out.println("onUserListSubscribed subscriber:@"
                        + subscriber.getScreenName()
                        + " listOwner:@" + listOwner.getScreenName()
                        + " list:" + list.getName());*/
            }

            @Override
            public void onUserListUnsubscription(User subscriber, User listOwner, UserList list) {
                /*System.out.println("onUserListUnsubscribed subscriber:@"
                        + subscriber.getScreenName()
                        + " listOwner:@" + listOwner.getScreenName()
                        + " list:" + list.getName());*/
            }

            @Override
            public void onUserListCreation(User listOwner, UserList list) {
                /*System.out.println("onUserListCreated listOwner:@"
                        + listOwner.getScreenName()
                        + " list:" + list.getName());*/
            }

            @Override
            public void onUserListUpdate(User listOwner, UserList list) {
                /*System.out.println("onUserListUpdated listOwner:@"
                        + listOwner.getScreenName()
                        + " list:" + list.getName());*/
            }

            @Override
            public void onUserListDeletion(User listOwner, UserList list) {
                /*System.out.println("onUserListDestroyed listOwner:@"
                        + listOwner.getScreenName()
                        + " list:" + list.getName());*/
            }

            @Override
            public void onUserProfileUpdate(User updatedUser) {
                //System.out.println("onUserProfileUpdated user:@" + updatedUser.getScreenName());
            }

            @Override
            public void onBlock(User source, User blockedUser) {
                /*System.out.println("onBlock source:@" + source.getScreenName()
                        + " target:@" + blockedUser.getScreenName());*/
            }

            @Override
            public void onUnblock(User source, User unblockedUser) {
                /*System.out.println("onUnblock source:@" + source.getScreenName()
                        + " target:@" + unblockedUser.getScreenName());*/
            }

            @Override
            public void onException(Exception ex) {
               /* ex.printStackTrace();
                System.out.println("onException:" + ex.getMessage());*/
            }
        };

        String useIds[] = {"99901654"};




        twitterStream.addListener(listener);
    twitterStream.user(useIds);
    }
}

https://github.com/yusuke/twitter4j/blob/master/twitter4j-examples/src/main/java/twitter4j/examples/stream/PrintUserStream.java

但它不打印狀態

流式api為您提供實時事件,因此,如果在收聽期間沒有任何用戶鳴叫,則不會看到任何輸出。

如果您改為嘗試獲取用戶歷史性推文,請考慮使用Twitter#getUserTimeline(screenName)代替,例如:

final Twitter twitter = new TwitterFactory().getInstance();
final List<Status> statuses = twitter.getUserTimeline(screenName);

for (Status status : statuses) {
    System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText());
}

有關更多詳細信息,請參見此示例

我在這里已經詳細回答了同樣的問題 請檢查一下。 這將向您展示我們如何使用必需的訪問令牌讀取和更新Twitter。

簡而言之,這些是步驟

  1. https://apps.twitter.com/app/new上創建一個Twitter應用程序,並獲取您的消費者密鑰。 (如果您在某處訪問,請關注上述博客。)
  2. 使用Twitter4j API獲取授權URL,點擊它並獲取PIN。 (下面的代碼供您參考)
  3. 輸入圖釘並訪問令牌(請參見下面的代碼)
  4. 現在,我們可以閱讀或更新Twitter提要。 (基於您在創建Twitter應用程序時設置的訪問級別)

請在此處查看示例代碼。 https://stackoverflow.com/a/40691881/2405670

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM