2012-05-03 14 views
10

Pracuję nad małym programem, w którym chcę czytać w popularnych tematach Twittera i przechowywać je w bazie danych. Obecnie używam metody twitter4j getDailyTrends(), ale otrzymuję dziwne wyniki.Korzystanie z codziennych trendów Twitter4j?

Kod Obecnie mam to:

 Twitter twitter = new TwitterFactory().getInstance(); 
     ResponseList<Trends> dailyTrends; 

     dailyTrends = twitter.getDailyTrends(); 

     System.out.println(); 

     // Print the trends. 
     for (Trends trends : dailyTrends) { 
        System.out.println("As of : " + trends.getAsOf()); 
         for (Trend trend : trends.getTrends()) { 
          System.out.println(" " + trend.getName()); 
         } 
     } 

Jednak, gdy program jest uruchomiony, pokazuje tę samą listę trendów 24 razy. Próbowałem uruchomić program w różne dni, jednak lista jest zawsze identyczna, bez względu na to, w którym dniu uruchomię program.

Próbowałem również przekazać metodę getDailyTrends() aktualną datę i osiągnąć takie same wyniki.

Byłbym wdzięczny za każdą pomoc, która doprowadza mnie do szału. :)

EDYCJA: Zestaw wyników, który dostaję, wyświetla trendy w twitterze od 25.04.2012. I bez względu na to, kiedy uruchomię program lub datę, którą mu podaję - otrzymuję te same wyniki.

EDIT2: OK, więc przez cały dzień mnie to dręczyło, w końcu znalazłem przykładowy kod dostarczony przez twitter4j do czytania trendów. Uruchomiłem ich kod zamiast mojego i mam ten sam problem. Trendy mają kilka tygodni i nigdy się nie zmieniają. Czy ktokolwiek faktycznie zdołał wcześniej uruchomić tę metodę?

Odpowiedz

1

ja słabo pamiętam, ale można spróbować następujących

for (Trends trends : dailyTrends) { 
        System.out.println("As of : " + trends.getAsOf()); 

        System.out.println(" " + trends.getTrendAt()); 

     } 
+0

Dzięki za odpowiedź. Spróbowałem tego, co zasugerowałeś, i otrzymałem tę samą listę trendów, które dostaję od kilku dni :( –

+0

W takim przypadku sugerowałbym sprawdzenie, której wersji Twitter4J używasz i czy to nie jest błąd wersji. zobacz błąd, gdy getAsOf zwraca nieprawidłową datę http://jira.twitter4j.org/browse/TFJ-613 Jeśli nie ma na liście, sugeruję, aby zgłosić tam błąd –

+0

Używałem najnowszej stabilnej wersji twitter4j (2.2.5), wypróbowałem najnowszą wersję snapshot (2.2.6) i miałem ponownie ten sam problem.Nie kończą się pomysły teraz –

13
getPlaceTrends(int woeid) 

zwraca top 10 tematów Trendy dla konkretnego WOEID, jeśli trendy informacja jest dostępna dla niego.

woeid - The Yahoo! Where On Earth Identyfikator lokalizacji, do której mają zostać przesłane informacje o trendach dla. Globalne informacje są dostępne za pomocą 1 jako WOEID.

można uzyskać WOEID dotyczącą różnych miejscach z kodem poniżej

Twitter twitter = new TwitterFactory().getInstance(); 
ResponseList<Location> locations; 
locations = twitter.getAvailableTrends(); 
System.out.println("Showing available trends"); 
for (Location location : locations) { 
    System.out.println(location.getName() + " (woeid:" + location.getWoeid() + ")"); 
} 

a następnie można uzyskać aktualne trendy określonej lokalizacji za pomocą to WOEID jak poniżej

Trends trends = twitter.getPlaceTrends(2295414); 
for (int i = 0; i < trends.getTrends().length; i++) { 
    System.out.println(trends.getTrends()[i].getName()); 
} 
3

używam twitter4j i to jest moja klasa, aby uzyskać informacje o trendach z lokalizacji, które otrzymujesz jako parametr, w tym przykładzie "hiszpania"

import twitter4j.Location; 
import twitter4j.ResponseList; 
import twitter4j.Trends; 
import twitter4j.Twitter; 
import twitter4j.TwitterException; 

public final class GetTrendingTopics { 

    public static void main(String[] args) { 

    try { 

     ConfigurationBuilder cb = new ConfigurationBuilder(); 
cb.setDebugEnabled(true).setOAuthConsumerKey("yourConsumerKey").setOAuthConsumerSecret("yourConsumerSecret").setOAuthAccessToken("yourOauthToken").setOAuthAccessTokenSecret("yourOauthTokenSecret"); 

     TwitterFactory tf = new TwitterFactory(cb.build()); 
     Twitter twitter = tf.getInstance(); 

     ResponseList<Location> locations; 
     locations = twitter.getAvailableTrends(); 

     Integer idTrendLocation = getTrendLocationId("spain"); 

     if (idTrendLocation == null) { 
     System.out.println("Trend Location Not Found"); 
     System.exit(0); 
     } 

     Trends trends = twitter.getPlaceTrends(idTrendLocation); 
     for (int i = 0; i < trends.getTrends().length; i++) { 
     System.out.println(trends.getTrends()[i].getName()); 
     } 

     System.exit(0); 

    } catch (TwitterException te) { 
     te.printStackTrace(); 
     System.out.println("Failed to get trends: " + te.getMessage()); 
     System.exit(-1); 
    } 
    } 

    private static Integer getTrendLocationId(String locationName) { 

    int idTrendLocation = 0; 

    try { 

     ConfigurationBuilder cb = new ConfigurationBuilder(); 
cb.setDebugEnabled(true).setOAuthConsumerKey("yourConsumerKey").setOAuthConsumerSecret("yourConsumerSecret").setOAuthAccessToken("yourOauthToken").setOAuthAccessTokenSecret("yourOauthTokenSecret"); 

     TwitterFactory tf = new TwitterFactory(cb.build()); 
     Twitter twitter = tf.getInstance(); 

     ResponseList<Location> locations; 
     locations = twitter.getAvailableTrends(); 

     for (Location location : locations) { 
     if (location.getName().toLowerCase().equals(locationName.toLowerCase())) { 
      idTrendLocation = location.getWoeid(); 
      break; 
     } 
     } 

     if (idTrendLocation > 0) { 
     return idTrendLocation; 
     } 

     return null; 

    } catch (TwitterException te) { 
     te.printStackTrace(); 
     System.out.println("Failed to get trends: " + te.getMessage()); 
     return null; 
    } 

    } 
} 
Powiązane problemy