今回から数回はリストに関するメソッドが定義されている ListMethods インターフェースです(記事一覧)。 リストを作成して傾向が似たユーザーを登録しておくと、登録ユーザーのつぶやきだけを見ることができます。 フォローしているユーザー数が増えてくると必須の機能ですね。
ちなみに、リストに関するメソッドが定義されているインターフェースには
- twitter4j.api.ListMethods インターフェース
- twitter4j.api.ListMembersMethods インターフェース
- twitter4j.api.ListSubscribersMethods インターフェース
の3つがあるようです。 ListMethods インターフェース以外のものもそのうちに。
ListMethods インターフェース
ListMethods インターフェースの定義はこんなの:
package twitter4j.api; public interface ListMethods{ // リストの CRUD UserList createUserList(String listName, boolean isPublicList, String description); UserList showUserList(int listId); UserList updateUserList(int listId, String newListName, boolean isPublicList, String newDescription); UserList destroyUserList(int listId); // ResponseList を返すメソッド ResponseList<UserList> getAllUserLists(long userId); ResponseList<UserList> getAllUserLists(String screenName); ResponseList<Status> getUserListStatuses(int listId, Paging paging); // 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); }
今回は「リストの CRUD」を見ていきます。
サンプル・コード
リストの CRUD として
- リストの作成
- リストの取得
- リストの更新
- リストの削除
を行う方法を見ていきます。 ユーザーリストを表す型は後で見る twitter4j.UserList インターフェースで、上記のメソッドは全てこのオブジェクトを返します:
@Grab('org.twitter4j:twitter4j-core:[2.2.4,)') import twitter4j.* def twitter = new TwitterFactory().getInstance() // リストの作成 def silentSiren = twitter.createUserList('Silent siren', true, '') int listId = silentSiren.id println "$silentSiren.fullName : $silentSiren.description" // リストの取得 assert twitter.showUserList(listId).name == 'Silent siren' // リストの更新 def updated = twitter.updateUserList(listId, 'Silent Siren', true, '''Vo.&Gt. 吉田菫 Key.&Cho. 寒川綾奈 Ba.&Cho. 山内あいな Dr. 梅村妃奈子''') assert updated.id == listId println "$updated.fullName : $updated.description" assert updated.name == 'Silent Siren' // assert twitter.showUserList(listId).name == 'Silent Siren' とすると // アサーションが通るときと通らないときがある // リストの削除 twitter.destroyUserList(listId)
- createUserList メソッドで作成されたリストにはユーザーが登録されていません。 あらたにリストへユーザーを登録するには ListMembersMethods インターフェースに定義されているメソッドを使用します。 これは後日に。
- 既にあるリストを更新した直後に取得や削除を行うと上手く動かない場合があるようです。 こういった場合は、更新が完了したかどうかを自分で確認するか、非同期 API を使うのがいいんじゃないかと思いますが・・・試してません。
処理のイメージ図
showUserList()
updateUserList()
twitter のサイト上で
「プロフィール」に加えて「ホーム」からも同様の手順でリストを閲覧することができます。
関連クラス
今回新たに出てきたクラスは
- twitter4j.UserList インターフェース
です。
UserList インターフェース
UserList インターフェースは、そのまんまユーザーリストを表すクラスです。 型定義はこんなの:
package twitter4j; public interface UserList extends java.lang.Comparable<UserList>, TwitterResponse, java.io.Serializable{ ... }
UserList も TwitterResponse のサブタイプです。 Java Bean としてのプロパティには、以下のようなものがあります。 ただし、全て読み取り専用なので getter メソッドだけしかありません:
プロパティ名 | 型 | 備考 |
---|---|---|
following | boolean | 自分がフォローしているかどうか。 isFollowing() で取得 |
public | boolean | 公開されているかどうか。 isPublic() で取得 |
id | int | リストの ID |
memberCount | int | 登録ユーザー数 |
subscriberCount | int | 購読者数 |
name | String | リスト名 |
fullName | String | リストのフルネーム |
slug | String | スラグ*1 |
description | String | 説明 |
URI | URI | URI |
user | User | リストを作成したユーザー |
リストの ID は、ステータスやユーザーの ID と違って int 型です。
Twitter API ポケットリファレンス (POCKET REFERENCE)
- 作者: 山本 裕介
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/15
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 247回
- この商品を含むブログ (41件) を見る
*1:「スラグ」っていまいち分からないけど、カテゴリ分けや検索キーワードに使う単語みたいなものかと。