倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

むしろ Twitter4J で twitter を勉強してみる (11) : ListMethods インターフェース (II)

今回は ListMethods インターフェースのうち ResponseList オブジェクトを返すメソッドを見ていきます(記事一覧)。

public interface ListMethods{
    ...

    // ResponseList を返すメソッド
    ResponseList<UserList> getAllUserLists(String screenName);
    ResponseList<UserList> getAllUserLists(long userId);
    ResponseList<Status> getUserListStatuses(int listId, Paging paging);
}

ResponseList インターフェースについてはこちらの記事の「関連する型」の箇所を参照。

  • getAllUserLists() メソッドはユーザーを(ユーザー名またはユーザー ID で)指定して、そのユーザーのリストを取得するメソッドです。
  • getUserListStatuses() メソッドはユーザーリストを(リスト ID で)指定して、そこに登録されているユーザーのタイムライン(ツイート(ステータス)を時系列に並べたもの)を取得するメソッドです。

そのうち見る予定の TimelineMethods インターフェースも覗いてみると、Twitter4J ではタイムラインは ResponseList<Status> 型として表されているようです。

サンプル・コード


ではサンプル・コード。

  • getAllUserLists() メソッドの使い方は難しくないと思います。 
  • getUserListStatuses() メソッドは Paging オブジェクトの使い方が分かっていれば特に問題はないかと。 Paging クラスは以前に出てきましたネ。

以下のサンプルでは、ユーザーリストを作成してユーザーを登録する部分が少々長くなっていますが、単なる準備です。 今回対象となっているメソッドの使い方には直接関係ありません:

@Grab('org.twitter4j:twitter4j-core:[2.2.4,)')

import twitter4j.*

def twitter = new TwitterFactory().getInstance()

// ユーザーリストの取得(ユーザー名から)
twitter.getAllUserLists('waman10da').each{ UserList list ->
    println list.name
}

// ユーザーリストの取得(ユーザー ID から)
twitter.getAllUserLists(122348882L).each{ UserList list ->
    println list.name
}

// 準備 その1 (ユーザーリスト「Silent Siren」作成)
def silentSiren = twitter.createUserList('Silent Siren', true, '''Vo.&Gt. 吉田菫
Key.&Cho. 寒川綾奈
Ba.&Cho. 山内あいな
Dr. 梅村妃奈子''')

Thread.sleep(3000)    // リストの作成をしばし待つ(うまくいかない場合もあり)

// 準備 その2 (ユーザーリスト「Silent Siren」にユーザーを登録)
twitter.addUserListMembers(silentSiren.id, [
    'sumiredooon',
    'hinanchu_twtr',
    'aina0703',
    'sogawa_1020'] as String[])

Thread.sleep(3000)    // リストの更新をしばし待つ(うまくいかない場合もあり)

// ユーザーリストに登録されているユーザーのステータスを取得
twitter.getUserListStatuses(silentSiren.id, new Paging(1, 40)).each{ Status status ->
    int n = [10, status.text.size()].min()
    println "$status.user.name : ${status.text.substring(0, n)}..."
}

処理のイメージ図


getAllUserLists()

getUserListStatuses()

twitter のサイト上で


getAllUserLists()

「プロフィール」ダブでなくて「ホーム」タブでも OK です。

getUserListStatuses()
上記のリスト一覧で、見たいリストをクリックすると・・・


Twitter API ポケットリファレンス (POCKET REFERENCE)

Twitter API ポケットリファレンス (POCKET REFERENCE)