1日の統計
つぶやいたー - ついったーランキング (Twitter Ranking)
http://twitty.jp/ranking/status/
ロイドさんが23位にランクインしていました。
こういう1日の統計をとる機能はどうやって実装しているんだろう
IDの取得時間は単純に0:00以降の最初の発言と0:00前の最後の発言(twitter APIって時間管理関係のものあったっけ?)
1日の始まりにstartIDを記録 1日の終わりのendIDも記録 Paging page = new Paging(startID); page.setMaxId(endID); List<Status> statuses = twitter.getFriendsTimeline(page); for(Status status:statuses){ status.getScreenName();を取得; 新規だったらDBに新たに追加 DBに登録済みだったら、Countのデータを+1; } DBをcount順にソート 出力では ソートしたDBから順にユーザ名取得 User user = getUserDetail("ユーザー名"); user.getScreenName(); user.getURL(); などプロフィールを取得して表示
こんな感じなのかな
#PS
全然違ったgetPublicTimeline()は引数にsinceidしか入れられなくて20ステータスしか返せないみたい
どうやって1日のデータ取ってるのかわからないや
短い間隔でコツコツ集めてるのかな
Listって要素を何個まで入れられるんだろう、制限なしってこともないと思う
制限あるならその数づつ処理しなきゃあうあう
試しにこんなことしてみた
public class Test { public static void main(String[] args) throws SQLException { ArrayList<Integer> a = new ArrayList<Integer>(); while(true){ a.add(1); System.out.println(a.size()); } } }
7634065 7634066 7634067 7634068 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2760) at java.util.Arrays.copyOf(Arrays.java:2734) at java.util.ArrayList.ensureCapacity(ArrayList.java:167) at java.util.ArrayList.add(ArrayList.java:351) at Test.main(Test.java:12)
メモリが許す限りいけるらしい
TwitterのPOST1日分集めるだけなら十分すぎるみたい
あれ?
Statusクラス
getId()
返値はlong
Pagingクラス
void setSinceId(int sinceId)
void setSinceId(long sinceId)
の引数intとlong
Twitterクラス
getPublicTimeline(int sinceID)
の引数はint
getできるIDはlongなのにどうやってTwitterクラスの引数としてintのIDを与えるんだろうか キャストして突っ込んで良いの?