twitterで指定リスト内のアカウントを全フォロー
やりたいことはあるリストに入っているアカウントを全部フォローすること.
まずtwitterの開発者ページに入り.OAuth認証を通すため,cosumerkey,Accesstokenを取得する.この際,アプリの説明用のWebページのURLが必要.read_onlyから変更してアカウント操作ができるようにする.なお,アプリ等を作るには複雑なことが必要っぽい.
tweepyのドキュメンテーションより,
import tweepy
auth=tweepy.OAuthHandler(consumer_key,consumer_secret)
auth.set_access_token(access_token,access_token_secret)
api=tweepy.API(auth)
を毎回おまじないとして書く.
consumer_key, consumer_secret, access_token, access_token_secretは先ほど取得したものを使う.
調べた結果リスト内のメンバーを返すのはlist_membersという関数.Cursorとかいろいろあって理解してないけどとりあえずStackOverflowに出てきたコードを使わせてもらった.
user_id="リスト保持者の(screen_nameとかid)" slug="リストの名前" list=[] for member in tweepy.Cursor(api.list_members,user_id,slug).items(): list.append(member.screen_name) for i in range(0,len(list)): print list[i] for i in range(0,len(list)): follow=api.show_friendship(target_screen_name=list[i])[1].followed_by request=api.show_friendship(target_screen_name=list[i])[1].following_received if(follow==False and request==False): api.create_friendship(list[i])
Cursorのとことかをうまく書き直すのと,show_friendshipの結果の出力を把握するのに時間がかかった.
show_friendshipは自分から相手への情報と相手の自分に対する情報を分けて返し,それぞれの中に辞書型配列(タプル)としてデータが格納されている.
なぜshow_friendshipを使ったかというと,すでにフォローしている相手や,鍵垢ですでにフォロリクを送っている相手をフォローしようとするとエラーが出るから.
途中寄り道してtweetを投稿しようとしたのだが,data must be a byte stringというエラーが出て使えない.これは後で調べる.文字コードとか関係してそう,わからん