倭マン's BLOG

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

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

今回は ListMehods インターフェースの締めくくり、PagableResponseList を返すメソッドを見ていきます(記事一覧)。 対象となるメソッドは次の4つ:

public interface ListMethods{
    ...

    // PagableResponseList を返すメソッド
    PagableResponseList<UserList> getUserLists(long listOwnerUserId, long cursor);
    PagableResponseList<UserList> getUserLists(String listOwnerScreenName, long cursor);
    PagableResponseList<UserList> getUserListMemberships(String listMemberScreenName, long cursor);
    PagableResponseList<UserList> getUserListSubscriptions(String listOwnerScreenName, long cursor);
}

getUserLists() メソッドは指定したユーザーのリストを返し、getUserListMemberships() メソッドは指定したユーザーを含む(大抵は他のユーザーの)リストを返し、getUserListSubscriptions() メソッドは指定したユーザーが購読している他のユーザーのリストを返します。

サンプル・コード


各メソッドで返される PagableResponseList オブジェクトは List インターフェースを拡張しているので、for 文などで各要素(UserList オブジェクト)に対する処理を行うことができます。 返される要素数は 20 件です:

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

import twitter4j.*

def twitter = new TwitterFactory().getInstance()

// 指定したユーザーのユーザーリストを返す
twitter.getUserLists('waman10da', -1L).each{ UserList list ->
    println list.name
}

// 指定したユーザーが登録されているユーザーリストを返す
twitter.getUserListMemberships('waman10da', -1L).each{ UserList list ->
    println "$list.user.name : $list.name"
}

// 指定したユーザーが購読しているユーザーリストを返す
twitter.getUserListSubscriptions('waman10da', -1L).each{ UserList list ->
    println "$list.user.name : $list.name"
}

最初の20件を取得する場合は第2引数に -1L を渡します。 さらに要素を取得したい場合は、既に取得している PagableResponseList オブジェクトに対して getNextCursor() を呼び出し、返される long 値を第2引数にして同じメソッドを呼び出します:

def twitter = new TwitterFactory().getInstance()

def user = 'erina_mano'
def exe = { println "$it.user.name : $it.name" }

// 最初の20件を取得する
def result = twitter.getUserListMemberships(user, -1L).each(exe)

int i = 0
while(result.hasNext() && i < 4){
    // 次の20件を取得する
    result = twitter.getUserListMemberships(user, result.getNextCursor())

    result.each(exe)
    i++
}

処理のイメージ図


getUserLists()

getUserListMemberships()

指定したユーザーを含むリストを返す。

getUserListSubscriptions()

指定したユーザーが購読しているリストを返す。

twitter のサイト上で


getUserLists()

getUserListMemberships()

getUserListSubscriptions()

関連クラス


今回新しく出てきたクラスは

  • twitter4j.PagableResponseList インターフェース

です。

PagableResponseList インターフェース

型定義はこんなの:

package twitter4j;

public interface PagableResponseList<T extends TwitterResponse> extends ResponseList<T>, CursorSupport{ ... }


使い方は上記のサンプル・コードを参照のこと。
Twitter API ポケットリファレンス (POCKET REFERENCE)

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