Twitter Stream API for receiving user tweets

I use twitter API to get tweets from user. I have a list of user IDs. How to get a list of tweets from the TwitterStream API. I have analyzed the following example

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

but it does not print status

+4
source share
2 answers

Streaming provides you with real-time events, so if no Tweet users are listening while you are listening, you will not see any output.

If you are instead trying to use historical user tweets, use Twitter#getUserTimeline(screenName) , for example:

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

See example for more details.

+2
source

I answered this in detail here . Please check it. This will show you how we can read and update twitter using the necessary access tokens.

in short: these are the steps

  • Attach the Twitter app to https://apps.twitter.com/app/new and get your consumer key. (Follow the indicated blog if you hit somewhere.)
  • Using the Twitter4j API, get the authorization URL, click it and get a PIN. (The required code is listed below for your ref)
  • Enter the output and get access to the window (see code below).
  • Now we can all read or update twitter feeds. (Based on the access level that you set when you create the Twitter application)

Please check here for sample code. fooobar.com/questions/1499190 / ...

0
source

Source: https://habr.com/ru/post/1499188/


All Articles