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というエラーが出て使えない.これは後で調べる.文字コードとか関係してそう,わからん