途中:followersのリストを作る

python-twitterにはlist関係のAPIがないみたい。自分でAPIをいじることにしてみた。
まだ、雑な作りなので準備が必要。

  • oauth用のtokenとkeyを取得
  • listを作る

oauth用のtokenとkeyを取得

pip install twitter

python-twitterをインストールしたら"twitter"コマンドが使えるので、それを利用して~/.twitter_oauthにtokenとKeyの情報を格納する。
とりあえず

twitter

とやって現在のTLを取得できて入れば成功。

listを作る。

手抜きなので、現在あるリストに追加することはできても、新しくリストを作ることができていない(手抜きなので)

本題

username,listnameを書き換えれば使えるはず。

import twitter
import json

def list_adder_maker(twitter_obj, user, listname, method):
    def make_request(twitter_obj, uriBase, method=None, kwargs={}):
    if method is None:
        method = "GET"
    headers = {}
    headers.update(twitter_obj.auth.generate_headers())
    arg_data = twitter_obj.auth.encode_params(uriBase, method, kwargs)
    if method == 'GET':
        uriBase += '?' + arg_data
        body = None
    else:
        body = arg_data
        
    return  urllib2.Request(uriBase, body, headers)

    def fetch(req):
        try:
            handle = urllib2.urlopen(req)
            res = json.loads(handle.read())
            response_cls = (
                twitter.api.TwitterJsonListResponse if type(res) is list
                else twitter.api.TwitterJsonDictResponse)
            return (res, handle.headers)
        except urllib2.HTTPError, e:
            if (e.code == 304):
                return []
            else:
                raise twitter.api.TwitterHTTPError(e, uri, "json", arg_data)

    uri = "https://api.twitter.com/1/%s/%s/members.json" % (user, listname)
    return lambda id_value : fetch(make_request(twitter_obj, uri, method, {"id" : id_value}))



CONSUMER_KEY='uS6hO2sV6tDKIOeVjhnFnQ'
CONSUMER_SECRET='MEYTOS97VvlHX7K1rwHPEqVpTSqZ71HtvoK4sVuYk'

oauth_filename = os.path.expanduser("~/.twitter_oauth")
oauth_token, oauth_token_secret = twitter.oauth.read_token_file(oauth_filename)
twitter = twitter.api.Twitter(
    auth=twitter.oauth.OAuth(
        oauth_token, oauth_token_secret, CONSUMER_KEY, CONSUMER_SECRET),
    secure=True,
    api_version='1',
    domain='api.twitter.com')

username="<username>" #twitterのアカウント名
listname="<listname>" #作ったリストの名前
adder = list_adder_maker(twitter, username, listname, "POST")

import time
for follower_id in twitter.followers.ids():
    print(follower_id)
    adder(str(follower_id))
    time.sleep(0.3)
print("end")