はじめに
最近「フォロワー1000人目指そう」とか #followmejp とかつながりたがる流れが多いけど、TwitterのTLがあふれちゃうとやる気なくしちゃうことが前にわかったので縮小の方向に進めてます、こんにちは。
また最近はOAuth推奨っぽいのでOAuthでfollowingを管理するスクリプトを書きました。
参考
ほぼここのパクリ。あざーっす。
スクリプトをそのままcommitできるようにpit使い始めました。id:a2cさんありがとうございまっす!
OAuthをざっくり理解するために上の記事を読みました。
作ったもの
自分のfollowingのリストを取得して、ユーザ一人一人のstatusのcreated_atを確認します。それが90日より前のユーザのリストを作成して、あとはひたすらdestroyするだけです。
oauth, pitが必要です。あとPython2.5以前の人はsimplejsonも必要です。
解説
詳しい話は上のtechnoさんのリンクに全部書いてます。タイムリーな記事でどうもありがとうございます。大まかな流れは
- Twitterにアプリケーションを登録(Consumerの登録)
- Consumer Key, Consumer Secretの取得
- Access Token, Access Token Secretの取得
- スクリプトからAPIを呼ぶときにヘッダにOAuthのパラメータを渡す
アプリケーションの登録
まずOAuthを使ったスクリプトを作る場合はTwitterにアプリケーションの登録をする必要があります。
で登録画面に行って、下記の項目を入力。これらは登録後も変更可能。
Application Name | アプリケーションの名前。適当。 |
Description | 説明。適当。 |
Application Website | これ書かないと怒られるので適当にブログのURL書いた |
Organization | 無視。 |
Website | 無視。ブログのURL書いといた。 |
Application Type | Clientを選択。Webアプリなんか作る場合はBrowserを選んでください。 |
Default Access Type | Read&Write |
Use Twitter for login | Yesにチェック |
こんな画面。
登録が終わるとConsumer KeyとConsumer Secretが表示されます。これをメモ。
これでアプリケーションの登録は終わり。
Access Token/Access Token Secretの取得
これは完全にtechnoさんのサイトのスクリプトを使わせてもらっています。必要な箇所だけ切り取ったのは下記。
$ python access_token.py Get request token: [OK] * Please access to this URL, and allow. > http://twitter.com/oauth/authorize?oauth_token=oifaK23LKJisdflai77oiaeIKDFlkjsaoilkSDfadf2218LJDSfdiasdslakasjf * After that, will display 7 digit PIN, input here. PIN -> 1234567 Get access token: [OK] Access Token: 2938401-7NkayHAkf0dlaiEJE8ejsPkIdjfal4UfasdiFJAUkFDUZKFFm Access Token Secret: rW832jasidjafalKDHcIFKAUaksduFIjaISDFjaisdl Your screen_name is 'ymotongpoo'.
上記のURLにアクセスするとログイン画面が表示され、その後7桁のPINが表示されます。そのPINを入力するとAccess Token/Access Token Secretが取得できます。このAccess TokenとAccess Token SecretはTwitterではpermanentに使えるようなのでこれさえ取得してしまえばもうOKです。(執筆時現在)
POST/DELETEのときはsignatureの作り方に注意
あとはtechnoさんのエントリと自分のソースコード見てもらえばいいんですが、基本的にはヘッダに必要なパラメータを追加してあげればよいだけです。ただparamsの中に渡したいパラメータも一緒に入れてあげないとだめです。そこだけ注意かなー。この部分ね。
def open_api(self, method, url, **additional): params = self._init_params() for k, v in additional.iteritems(): params[k] = v sig = self._make_signature(params, url, method) params['oauth_signature'] = sig for k in additional.keys(): params[k] = '' req = urllib2.Request(url) for k, v in additional.iteritems(): req.add_data( '%s=%s' % (k, urllib.quote(v, '')) ) req.add_header('Authorization', self._oauth_header(params)) return urllib2.urlopen(req)
addtionalってしてるのは、例えばTwitterに発言する際に利用するAPIはstatusというパラメータが必要なわけだけど、それを渡してね、ということ。こんな感じで。
update_url = 'http://twitter.com/statuses/update.json' tweet_str = u'Hello!' open_api('POST', update_url, status = tweet_str)
だいたいこんな感じ。また追記することがあったら書こう。
追記1 (2009-11-29)
a2cさんからPit使う際のTipsを教えていただいたので早速コードをちょっと修正しました。コードの最初でAPPNAMEを自分が登録したアプリケーション名に変更してください。
追記2 (2009-12-07)
ブクマみて気づいたけど、UnTweepsっていうサービスがあんのね。
まあ今回は思いついてからはOAuthを使ってみることが主目的だったんで俺としてはOK!!もし「Pythonなんて入れるのやだよー」という人は是非Webサービスを使ってみてください。結構楽ちんです。