Найти статус твиттера с помощью хэштега
Я пытался получить некоторые статусы Twitter в моем клиенте Twitter с помощью этого:
Query query = new Query("#something");
QueryResult result = twitter.search(query);
for (Status status : result.getTweets()) {
System.out.println("@" + status.getUser().getScreenName() + ": " + status.getText());
// arrayList.add( "@" + status.getUser().getScreenName() + ": " + status.getText());
}
Это работает нормально, но я также пытаюсь добавить это к списку массивов, этот массив будет инициализирован после этого запроса и затем показан в списке в пользовательском интерфейсе.
Это также работает нормально, но если я добавлю еще один твит на этот хэштег, когда клиент запускает приложение, я не добавлю его в мой вид в пользовательском интерфейсе.
Я провел небольшое исследование и обнаружил, что вместо этого могу использовать Steam, и вот что я нашел:
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
.setOAuthConsumerKey("*********************")
.setOAuthConsumerSecret("*********************")
.setOAuthAccessToken("*********************")
.setOAuthAccessTokenSecret("*********************");
TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance();
StatusListener listener = new StatusListener() {
@Override
public void onException(Exception arg0) {
// TODO Auto-generated method stub
.........
@Override
public void onStatus(Status status) {
User user = status.getUser();
// gets Username
String username = status.getUser().getScreenName();
System.out.println(username);
String profileLocation = user.getLocation();
System.out.println(profileLocation);
long tweetId = status.getId();
System.out.println(tweetId);
String content = status.getText();
System.out.println(content +"\n");
}
.........
FilterQuery fq = new FilterQuery("#something");
String keywords[] = {"ireland"};
fq.track(keywords);
twitterStream.addListener(listener);
twitterStream.filter(fq);
}
}
Здесь возникает проблема, поэтому, пока я использую второе решение с потоком, он не будет подбирать хэштеги, но ключевое слово будет работать. Так как мне заставить поток работать с хэштегом?
1 ответ
Через некоторое время исследований я нашел решение.
Используя TwitterFactory вместо TwitterStreamFactory, я смог использовать определенные хэстэги, как показано ниже.
public static void startTweets() {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey("*********************")
.setOAuthConsumerSecret("*********************")
.setOAuthAccessToken("*********************")
.setOAuthAccessTokenSecret("*********************");
Twitter twitter = new TwitterFactory(cb.build()).getInstance();
}
public static void getFeed(String hash) throws TwitterException {
Query query = new Query("#"+hash);
QueryResult result = twitter.search(query);
for (Status status : result.getTweets()) {
System.out.println("@" + status.getUser().getScreenName() + ": " + status.getText());
String username =status.getUser().getScreenName() ;
String message = status.getText();
twitter.showUser(username).getLocation();
int Followers = twitter.showUser(username).getFollowersCount();
main.AddtoList(username,message, Followers);
}