Python Twitter 自動フォロー

Pythonのライブラリtwitter1.17.1の基本的な使い方。
PyPy: https://pypi.python.org/pypi/twitter
API: https://dev.twitter.com/rest/public

from twitter import *
consumer_key        = '************************'
consumer_secret     = '************************'
access_token_key    = '************************'
access_token_secret = '************************'
t = Twitter(auth=OAuth(access_token_key, access_token_secret, consumer_key, consumer_secret))
tl = t.statuses.home_timeline()

これでタイムラインをリスト形式に取得できる。'********'は適宜、自分のものに置き換えてください。


たとえば、tl[1]がエコノミスト誌のツイートだった場合、次のようにしてツイートに関する情報を取得できる。

user_id = tl[1]['user']['id'] # 5988062
screen_name = tl[1]['user']['screen_name'] # 'TheEconomist'
text = tl[1]['text'] # 'Today Korean students will take an eight-hour test that can change their lives #econarchive https://t.co/rz07Yx653E https://t.co/L1nEolght8'
cr_at = tl[1]['created_at'] # 'Thu Nov 12 00:19:50 +0000 2015'
lang = tl[1]['lang'] # 'en'

のようにして情報を取得できる。

フォロワーのリストは
t.followers.ids(screen_name='theEconomist')['ids']
もしくは
t.followers.ids(user_id=5988062)['ids']
によって取得できる。idのリストになる。idはアカウント作成時に気づかぬうちに付与されている。表示名はscreen_nameと呼ばれ、なじみ深い。screen_nameを変えることはできるが、idは変わることがない。 逆に、フォローしてるリストはfollowingではなく
t.friends.ids(screen_name='theEconomist')['ids']
であり、 誰かをフォローするには
t.friendships.create(user_id=5988062)
のようにする。 また、誰かについての情報は
info = t.users.show(user_id=5988062)
info['screen_name'] # TheEconomist
info['location] # London
のようにして取得できる。 これらを使い、たとえば
  1. エコノミスト誌のフォロワーをフォロー3人する
  2. 最後にフォローした人のフォロワー3人をフォローする
  3. 2を繰り返す
のようなこともできる。あまりにも粗削りで露骨なソースコードだが、下に掲載した。フォローするべき相手はリストにスタックしている。40分ごとに、3人フォローして、最後にフォローした人のフォロワーをスタックに全て加える。しかし、スタックが冗長に増えても仕方がないので、スタックの末尾100個だけ残して、他は捨てる。
from twitter import *
consumer_key        = '************************'
consumer_secret     = '************************'
access_token_key    = '************************'
access_token_secret = '************************'
t = Twitter(auth=OAuth(access_token_key, access_token_secret, consumer_key, consumer_secret))
to_follow=t.followers.ids(screen_name='theEconomist')['ids']

while True:
    usrid=to_follow.pop()
    t.friendships.create(user_id=to_follow.pop())
    info = t.users.show(user_id=usrid)
    print('followed {0}, {1}.'.format(info['screen_name'], info['location']))
   
    usrid=to_follow.pop()
    t.friendships.create(user_id=to_follow.pop())
    info = t.users.show(user_id=usrid)
    print('followed {0}, {1}.'.format(info['screen_name'], info['location']))
   
    usrid=to_follow.pop()
    t.friendships.create(user_id=to_follow.pop())
    info = t.users.show(user_id=usrid)
    print('{0} followed {1}, {2}.'.format(datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S'), info['screen_name'], info['location']))
   
    next_extend = t.followers.ids(user_id=usrid)['ids']
    to_follow.extend(next_extend)
    to_follow =  to_follow[-100:]
    time.sleep(40*60)
まだAPIやOAUTHの使い方は不慣れなので、今後理解していきたい。

コメント