ユーザーアカウント関連

本節では users 系 API の応用方法について述べる。

GET users/lookup

GET users/lookup は一度に 100 件までの Twitter ユーザー詳細情報を得ることができる。この API を利用するには、ユーザー ID を必要な分だけあらかじめ知っておく必要がある。

利用者ノート

  • ドキュメントにあるように ID を収集するには GET friends/ids や GET followers/ids を併用することになりそうだ。

  • 複数のユーザー ID をカンマで連結して CSV テキストする。 Python では ','.join(ids) でそれを実現できる。

GET users/show

GET users/show は特定のユーザーの詳細情報を得るのに GET users/show を利用する。いわば GET users/lookup の単数版だ。

#!/usr/bin/env python

# Demonstration GET users/show
# See https://dev.twitter.com/rest/reference/get/users/show

from secret import twitter_instance
from pprint import pprint

tw = twitter_instance()

# [1]
response = tw.users.show(
    screen_name='showa_yojyo',
    include_entities=False)

# [2]
pprint(response)
  • [1] 基本的に指定する引数はこれだけで構わない。

  • [2] ユーザーの Twitter 情報を出力してみる。

GET users/profile_banner

GET users/profile_banner では指定ユーザーのプロフィール画像の各種 URL が得られる。 Twitter クライアントを自作する者が利用するのだろう。

#!/usr/bin/env python

# Demonstration GET users/profile_banner
# See https://dev.twitter.com/rest/reference/get/users/profile_banner

from secret import twitter_instance
from pprint import pprint

tw = twitter_instance()
response = tw.users.profile_banner(screen_name='showa_yojyo')
pprint(response['sizes'])

これを実行するとこのようになる。実際にブラウザーで下記 url にアクセスすると、現在のプロフィール画像が描画されるはずだ。なお、私が新しいものに更新しない限り有効だ。

bash$ ./users-profile_banner.py
{'1500x500': {'h': 500,
              'url': 'https://pbs.twimg.com/profile_banners/461058152/1447250161/1500x500',
              'w': 1500},
 '300x100': {'h': 100,
             'url': 'https://pbs.twimg.com/profile_banners/461058152/1447250161/300x100',
             'w': 300},
 '600x200': {'h': 200,
             'url': 'https://pbs.twimg.com/profile_banners/461058152/1447250161/600x200',
             'w': 600},
 'ipad': {'h': 313,
          'url': 'https://pbs.twimg.com/profile_banners/461058152/1447250161/ipad',
          'w': 626},
 'ipad_retina': {'h': 626,
                 'url': 'https://pbs.twimg.com/profile_banners/461058152/1447250161/ipad_retina',
                 'w': 1252},
 'mobile': {'h': 160,
            'url': 'https://pbs.twimg.com/profile_banners/461058152/1447250161/mobile',
            'w': 320},
 'mobile_retina': {'h': 320,
                   'url': 'https://pbs.twimg.com/profile_banners/461058152/1447250161/mobile_retina',
                   'w': 640},
 'web': {'h': 260,
         'url': 'https://pbs.twimg.com/profile_banners/461058152/1447250161/web',
         'w': 520},
 'web_retina': {'h': 520,
                'url': 'https://pbs.twimg.com/profile_banners/461058152/1447250161/web_retina',
                'w': 1040}}

GET users/suggestions

GET users/suggestions は Twitter によるおすすめアカウントのカテゴリーのみを得る機能だ。

サンプルコードを次に示す。

#!/usr/bin/env python

# Demonstration GET users/suggestions
# See https://dev.twitter.com/rest/reference/get/users/suggestions

from secret import twitter_instance

tw = twitter_instance()
response = tw.users.suggestions()

for i in response:
    print('{name}|{slug}|{size}'.format_map(i))

私の実行例を示す。誰もフォローしていない割にはかなりのカテゴリーが表示される。リストには山ほどユーザーを収容していることからこういう構成になっているのだろうかと思う。お笑い系はどこにもいないのだが?

bash$ ./users-suggestions.py
Twitter|twitter|13
野球|野球|11
サッカー|サッカー|15
スポーツ|スポーツ|15
お笑い|お笑い|15
政府|政府|15
ニュース|ニュース|14
ジャーナリスト|ジャーナリスト|15
旅行 / レジャー|旅行-レジャー|15
声優 / アニメ|声優-アニメ|15
ファッション|ファッション|14
音楽|音楽|15
ライフライン / 公共交通機関|ライフライン-公共交通機関|13
美術館・博物館|美術館・博物館|15
テレビタレント|テレビタレント|15

GET users/suggestions/:slug

GET users/suggestions/:slug は上記のあるカテゴリーのユーザー群を取得する機能だ。これは PTT でどう呼び出すものか試行錯誤したが、最終的には次のコードで動作を確認した。

#!/usr/bin/env python

# Demonstration GET users/suggestions/:slug
# See https://dev.twitter.com/rest/reference/get/users/suggestions/%3Aslug

from secret import twitter_instance
from json import dump
from urllib.parse import quote
import sys

tw = twitter_instance()

# [1]
response = tw.users.suggestions._id(_id=quote('政府'))

dump(response, sys.stdout, ensure_ascii=False, indent=4, sort_keys=True)
  • [1] 例えば「政府」が有効なカテゴリー名の一つなので、これでユーザーを得たい。 PTT では日本語の実引数を自動的にエンコードしてくれるが、ここでは手動で処理する。また、ドキュメントのどこにもない _id の使い方に注意して欲しい。

次に実行結果を示す。大部分を省略する。

bash$ ./users-suggestions-slug.py
{
    "name": "政府",
    "size": 15,
    "slug": "政府",
    "users": [
        {
            ...
            "name": "厚生労働省",
            ...
        },
        {
            ...
            "name": "総務省消防庁",
            ...
        },
        ...
        {
           ...
           "name": "消費者庁",
           ...
        }
    ]
}

GET users/suggestions/:slug/members

GET users/suggestions/:slug/members は上記の GET users/suggestions/:slug の返すデータに加え、各ユーザーの最近のツイートをも返す。

次にサンプルコードを示す。

#!/usr/bin/env python

# Demonstration GET users/suggestions/:slug/members
# See https://dev.twitter.com/rest/reference/get/users/suggestions/%3Aslug/members

from secret import twitter_instance
from json import dump
from urllib.parse import quote
import sys

tw = twitter_instance()

# [1]
response = tw.users.suggestions._id.members(_id=quote('政府'))

dump(response, sys.stdout, ensure_ascii=False, indent=4, sort_keys=True)

次に実行結果を示す。大部分を省略する。

bash$ ./users-suggestions-slug-members.py
[
    {
       ...
       "status": {
          ...
       },
       ...
       "name": "厚生労働省",
       ...
    },
    ...
]

POST users/report_spam

POST users/report_spam は指定のユーザーがスパムであることを Twitter に報告する。誰彼構わずスパム報告していると、報告者のほうが Twitter のブラックリストに載ると聞いたことがある。

次にサンプルコードを示す。

#!/usr/bin/env python

# Demonstration POST users/report_spam
# See https://dev.twitter.com/rest/reference/post/users/report_spam

from secret import twitter_instance
from json import dump
import sys

tw = twitter_instance()

# [1]
response = tw.users.report_spam(screen_name='showa_yojyo')

# [2]
dump(response, sys.stdout, ensure_ascii=False, indent=4, sort_keys=True)
  • [1] スパムを user_id または screen_name のどちらか一方で指定する。

  • [2] 送信結果を出力する。