フォロー関連

本節では friends 系 REST API について記す。自分から他人に向かう関係の機能に friends が名前に含まれる。インターフェイスは followers 系の対応する機能と一致している。

GET friends/ids

自分がフォローしている全ユーザーの ID だけを得るための API が GET friends/ids だ。 Twitter のユーザー ID はデータ型としては数値なのだが、 Python でテキスト加工する都合上どこかで文字列に変換することになりそうだ。ありがたいことに、これは API 側で気を利かせてくれる。

次に自分がフォローしているユーザーの ID を中途半端に CSV 出力する擬似コードを示す。自分が誰もフォローしていない場合は、改行だけ出力されて終了する。

#!/usr/bin/env python

# Demonstration GET friends/ids
# See https://dev.twitter.com/rest/reference/friends/ids

from secret import twitter_instance

tw = twitter_instance()

next_cursor = -1 # [1]
while next_cursor: # [1]
    response = tw.friends.ids(
        stringify_ids=True, # [2]
        cursor=next_cursor,) # [1]

    print(','.join(response['ids'])) # [3]
    next_cursor = response['next_cursor'] # [1]

要点を述べる。

  • [1] 基本技法 で述べたカーソル処理パターンを適用する。

  • [2] オプション stringify_ids=True を利用することで、取得データの ID の型を文字列として返すように Twitter に指示する。

  • [3] response オブジェクトには ID のリストが含まれている。それを CSV 化して標準出力に出力する。このコードだと CSV が標準出力上で複数行に分裂してしまうので注意。

GET friends/list

特定のユーザーがフォローしている全ユーザーの情報を得るのには GET friends/list を利用できる。一度のリクエストでは返しきれないほどの多数のユーザーをフォローしていることを想定してのカーソル処理となる。次に示すコード例のように、1 ページずつデータをリクエストすることになる。

#!/usr/bin/env python

# Demonstration GET friends/list
# See https://dev.twitter.com/rest/reference/friends/list

from secret import twitter_instance

tw = twitter_instance()
next_cursor = -1

while next_cursor:
    response = tw.friends.list(
        screen_name='showa_yojyo',
        cursor=next_cursor,
        count=200,
        skip_status=True,
        include_user_entities=False,)

    for follower in response['users']:
        print('''
{screen_name} / {name}
{description}
{url}
'''.format_map(follower))

    next_cursor = response['next_cursor']
  • オプション count の最適値は普通はわからないので、例ではテキトーに書いた。