倭マン's BLOG

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

むしろ Twitter4J で twitter を勉強してみる (6) : UserMethods インターフェース (I)

予定では Twitter4J - 「コードサンプル」で取り上げられているものから攻めていこうと思ってましたが、今回はちょっと変更して、前回少しだけ出てきた UserMethods インターフェースを見ていきます(記事一覧)。

UserMethods インターフェース


UserMethods はユーザー情報を保持する User オブジェクト、もしくはそのリスト (ResponseList) を取得する Twitter API を持っています。 定義はこんなの:

package twitter4j.api;

public interface UserMethods{

    // ユーザー情報の取得
    User showUser(String screenName)
    User showUser(long userId)
    ProfileImage getProfileImage(String screenName, ProfileImage.ImageSize size)

    // ユーザーの検索
    ResponseList<User> lookupUsers(String[] screenNames)
    ResponseList<User> lookupUsers(long[] ids)
    ResponseList<User> searchUsers(String query, int page)

    // おすすめの取得
    ResponseList<User> getUserSuggestions(String categorySlug)
    ResponseList<User> getMemberSuggestions(String categorySlug)
    ResponseList<Category> getSuggestedUserCategories()
}

今回はユーザー情報の取得メソッドを見ていきます:

  • showUser(String)
  • showUser(long)
  • getProfileImage(String, ProfileImage.ImageSize)

サンプル・コード


UserMethods に定義されているユーザー情報取得メソッドの使い方は StatusMethods と大して変わりません:

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

import twitter4j.*

def twitter = new TwitterFactory().getInstance()

// ユーザー名から User オブジェクトを取得
def me = twitter.showUser('waman10da')
println me.id

// ユーザー ID から User オブジェクトを取得
def me2 = twitter.showUser(122348882L)
println me2.description

// 指定したユーザーのプロフィール画像を取得
def image = twitter.getProfileImage('waman10da', ProfileImage.NORMAL)
println image.URL

処理のイメージ図


showUser()


getProfileImage() メソッドは引数にユーザー名と画像サイズ(ProfileImage に定義されている定数 BIGGER, NORMAL, MINI を指定可)を渡します。 返される ProfileImage オブジェクトからは画像 URL を表す String オブジェクトが取得できますが、これは指定したユーザー名に対応する User オブジェクトの getProfileImageURL() メソッドで返される URL の文字列表現と同じです*1

関連クラス


今回扱ったメソッドで新たに出てきた型は以下の2つ:

  • twitter4j.ProfileImage インターフェース
  • twitter4j.ProfileImage.ImageSize クラス

ProfileImage インターフェース

ProfileImage インターフェースはプロフィール画像を表す型です。 これは TwitterResponse インターフェース(こちら参照)を拡張しています:

package twitter4j;

public interface ProfileImage extends TwitterResponse, java.io.Serializable{
    String getURL();
}


定義されているメソッドは、画像の URL を表す文字列です。 java.net.URL オブジェクトではありません。 また、このインターフェースには後で見る ProfileImage.ImageSize 型の定数が3つ定義されています:

  • BIGGER
  • NORMAL
  • MINI

これらは画像の大きさを表すクラスで、Twitter#getProfileImage() メソッドの第2引数に渡して、取得する画像のサイズを指定します。 使い方は上記サンプル・コードを参照。

ProfileImage.ImageSize クラス

ProfileImage.ImageSize クラスはプロフィール画像の大きさを指定する定数 (BIGGER, NORMAL, MINI) を定義するためのクラスです:

package twitter4j;

public ProfileImage{
    ...
    public static class ImageSize{
        String getName()
    }
}


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

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

*1:User#getProfileImageUrlHttps() メソッドで返される URL の文字列表現とは違います