10

私は、トレンドのTwitterトピックを読み込んでデータベースに保存したい小さなプログラムに取り組んでいます。現在、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() メソッドに現在の日付を渡そうとしましたが、同じ結果が得られました。

これについて何か助けていただければ幸いです。それは私を夢中にさせています。:)

編集: 私が取得し続ける結果セットは、2012 年 4 月 25 日からの twitter の傾向を表示しています。そして、いつプログラムを実行しても、いつ実行しても、同じ結果が得られます。

EDIT2: わかりましたので、これは一日中私を悩ませていました。最終的に、トレンドを読むために twitter4j 自身が提供するサンプルコードを見つけました。私の代わりに彼らのコードを実行しましたが、同じ問題が発生しています。傾向は数週間前のものであり、変わることはありません。誰かが実際にこの方法を以前に機能させたことがありますか?

4

3 に答える 3

15
getPlaceTrends(int woeid)

トレンド情報が利用可能な場合、特定のWOEIDのトップ 10 トレンド トピックを返します。

woeid - Yahoo! トレンド情報を返す場所の Where On Earth ID。グローバル情報は、 WOEIDとして 1 を使用することで使用できます。

以下のコードを使用して、さまざまな場所の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());
}
于 2013-08-05T13:12:13.237 に答える
5

私はtwitter4jを使用しています。これは、パラメーターとして取得する場所からトレンドトピックを取得するための私のクラスです。この例では「スペイン」

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

    }
}
于 2014-10-30T09:28:29.480 に答える
1

かすかに覚えていますが、次のことを試してみてください

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

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

        }
于 2012-05-03T12:57:13.983 に答える