[英]Twitter4J: How do I return the tweets printed by sample/filter methods?
我在做什么?
我正在嘗試使用用戶界面構建應用程序。 用戶將輸入搜索詞,然后使用websocket連接,我將開始將過濾后的推文返回給UI。
我做了什么?
我有一個TwitterFilter
類,看起來像
public TwitterFilter(String searchTerm) {
final ConfigurationBuilder configurationBuilder = getConfigurationBuilder();
twitterStream = new TwitterStreamFactory(configurationBuilder.build()).getInstance();
final StatusListener statusListener = getStatusListener();
filterQuery = new FilterQuery();
filterQuery.track(new String[] { searchTerm });
filterQuery.language(new String[] { "en" });
twitterStream.addListener(statusListener);
}
public void getFilteredTweets() {
twitterStream.filter(filterQuery);
}
private static StatusListener getStatusListener() {
return new StatusListener() {
@Override
public void onStatus(final Status status) {
System.out.println(status.getText());
}
@Override
public void onDeletionNotice(final StatusDeletionNotice statusDeletionNotice) {
}
@Override
public void onTrackLimitationNotice(final int i) {
}
@Override
public void onScrubGeo(final long userId, final long upToStatusId) {
}
@Override
public void onStallWarning(final StallWarning stallWarning) {
}
@Override
public void onException(final Exception e) {
e.printStackTrace();
}
};
}
private static ConfigurationBuilder getConfigurationBuilder() {
final ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.setDebugEnabled(true);
configurationBuilder.setOAuthConsumerKey(CONSUMER_KEY);
configurationBuilder.setOAuthConsumerSecret(CONSUMER_SECRET);
configurationBuilder.setOAuthAccessToken(ACCESS_TOKEN);
configurationBuilder.setOAuthAccessTokenSecret(ACCESS_TOKEN_SECRET);
return configurationBuilder;
}
和一個帶有websocket代碼的類,需要返回經過Twitter過濾的推文,看起來像
@ServerEndpoint("/tweets")
public class TweetStreamServer {
@OnMessage
public void tweets(final String message, final Session client) throws IOException, InterruptedException {
final TwitterFilter twitterFilter = new TwitterFilter("india");
for (final Session peer: client.getOpenSessions()) {
peer.getBasicRemote().sendText(twitterFilter.getFilteredTweets()); // compilation error
}
}
}
問題?
由於filter()
和sample()
方法都不返回任何內容( void
),我該如何返回推文? ( 文檔 )?
該程序實現流式API。 您的用例要求用戶輸入搜索詞,並且您必須返回帶有該搜索詞的推文。
可能的實現:
1.使用rest api:
使用oauth並使用用戶的憑據登錄,然后返回獲得的推文。
速率限制: https ://dev.twitter.com/docs/rate-limiting/1.1/limits每15分鍾(每位用戶)您只能獲得180條推文。
2.流式API:
這不是REST API搜索。 當您跟蹤特定的關鍵字或關注用戶時,只要發布(實時)推文,就會收到這些推文。 這與搜索不同。 您無法得知Twitter用戶何時使用您正在跟蹤的關鍵字進行鳴叫。 由於這是直播。
使用可能的關鍵字開始流。 將結果保存到數據庫中,並在收到用戶請求時搜索數據庫。 當用戶輸入新關鍵字時,停止流,將新關鍵字添加到已跟蹤的關鍵字列表中並啟動流。 [您只能從一個IP地址到流式API的一個連接]。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.