![](/img/trans.png)
[英]Can't get a stream of Tweets using Twitter Streaming API on Spark
[英]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);
}
}
但它不打印狀態
流式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。
簡而言之,這些是步驟
請在此處查看示例代碼。 https://stackoverflow.com/a/40691881/2405670
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.