Использование Twitter4j Daily Trends?

Я работал над небольшой программой, где я хочу читать в трендах темы твиттера и хранить их в базе данных. В настоящее время я использую метод twitter4j getDailyTrends(), но получаю странные результаты.

Код, который у меня есть сейчас:

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

Однако, когда программа запускается, она показывает тот же список тенденций 24 раза. Я пытался запустить программу в разные дни, однако список всегда идентичен, независимо от того, в какой день я запускаю программу.

Я также пробовал передать метод getDailyTrends() текущую дату и получил те же результаты.

Поблагодарите любую помощь в этом, это сводит меня с ума.:)

EDIT: результирующий набор, который я получаю, отображает тенденции твиттера с 25.04.2012. И независимо от того, когда я запускаю программу или какую дату я ее даю, я получаю те же результаты.

EDIT2: ОК, так что это прослушивало меня весь день, в итоге я нашел пример кода, предоставленного самими twitter4j для чтения тенденций. Я использовал свой код вместо моего, и у меня такая же проблема. Тенденции несколько недель назад и никогда не меняются. Кто-нибудь действительно смог заставить этот метод работать раньше?

Ответ 1

getPlaceTrends(int woeid)

Возвращает 10 лучших трендов для определенного WOEID, если для него доступна трендовая информация.

woeid - Yahoo! Где на Земле идентификатор местоположения для возврата информации о тренде. Глобальную информацию можно получить, используя 1 как WOEID.

Вы можете получить WOEID из разных мест с кодом ниже

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

И затем, вы можете получить текущие тенденции определенного местоположения, используя его WOEID, как показано ниже

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

Ответ 2

Я использую twitter4j, и это мой класс для получения тем тенденций из местоположения, которое вы получаете как параметр, в этом примере "spain"

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

    }
}

Ответ 3

Я слабо помню, но вы можете попробовать следующее

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

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

        }