2011/04/28

TwitterBot開発 ~Twitter連携~

今回は、TwitterBotを作るうえで重要な、Twitterとの連携についての話を。

Torubotは、一定時間につぶやく機能や、自分に関係のあるつぶやき(mention)を確認して
返信を返す機能などを実装しています。

Twitterとどうやって連携してるの?というと、一番直接的な方法はTwitterAPIに直接アクセスする方法があります。

このあたりを見ると、やり方やらが色々出てくるわけですが・・・

僕は難しくてそんなことできないんで、githubから、教えてもらったコンポーネント使ってアクセスします。
正直、一番面倒だなぁと思ったのが、oAuth認証で、コレさえなかったらURL直接アクセスもいいんでしょうが・・・
(お前が内容理解してないだけだろうといわれれば、返す言葉もございません)

んで、神速さんに教わったのが、Tweepyでして。

必要なコンポーネントやらスクリプトの入手

joshthecoder/tweepy - GitHub <https://github.com/joshthecoder/tweepy>

からいただいてきます。

使い方は、ローカルで使う場合は、setup.py があるので、setuptools使って入れます。

setuptools は、このあたりからインストーラを拾ってくれば簡単に入れることができます。

tweepy自体はgithubから取得するので、cloneしましょう。
gitの使い方は、前になんか記事書いた気がする。

HIGH risk LOW return + α: GitをWindowsで使うには? <http://highrisklowreturn.blogspot.com/2010/10/gitwindows.html>

んで、

> git clone URL

で、ダウンロードしてきましょう。URL部分は

image

さっきのtweepyのページに、アクセス用のURLがあるので、そこを指定します。

ダウンロードできたら、実際にインストールしてみます。

ダウンロードしてきたリポジトリの直下に、setup.py があるので、実行しましょう。

> python setup.py install

って打つと、インストールが完了します。

次に、bot作るアカウントの情報を持ってきます。

実際に必要な情報は、oAuth認証を行って、トークン集めをします。

全部そろわないと、アクセスできないよ!

でも、やること自体は、そこまで複雑ではなくて、もう一つリポジトリをダウンロードしてきます。
tweepyのサンプル集なんですが、ここにoAuthの認証サンプルがいるんで、そいつを使いましょう。

まずは、githubなので、先ほどと同様に、

joshthecoder/tweepy-examples - GitHub <https://github.com/joshthecoder/tweepy-examples>

ここから落としてきましょう。

ここまでで、必要なスクリプトやコンポーネントがそろったことになります。

アプリケーションの登録

最初にやることは、tweepyからアクセスするアカウントに、自分のアプリを知らせなくてはいけません。

ブラウザから、tweepyからアクセスするアカウントにログインして、アプリケーションの登録を行いましょう。

登録は、ログインしたあと、設定のメニューから行います。

image

設定メニューを開くと、一番右に連携アプリというタブがあるので、そこを開きます。

さらに、そのページの右側カラムの開発者のところの連携アプリの追加と設定に入りましょう。

image

こんなページが表示されるので、「新しいアプリケーションを追加」から新しいアプリケーションを追加しましょう。

いろいろ聞かれるので、しっかりと埋めておきます。

重要な部分として、アプリケーションの種類をブラウザアプリケーション標準のアクセスタイプを Read-Write に設定します

しっかりと埋まっていれば、Consumer KeyConsumer Secret が表示されます。
また、この値は、メモっておくほか、開発者のページに来れば確認することができます。

oAuth認証

実際にoAuth認証をして、アクセスするために必要なTokenを取得します。

先ほどダウンロードしてきたexamplesリポジトリの /oauthフォルダ以下のpythonスクリプトを実行することで、取得できます。

> python getaccesstoken.py

Consumer key とか Consumer Secret を聞かれるので先ほどメモした値を入れましょう。

答えると、リダイレクトで認証番号がブラウザに表示されるので
さらにそれを入力します。

これで、認証が完了し、Access Token/Secret を返してくれます。

この値は、どっかにメモっておいてください。コレが無いとアクセスできなくなっちゃいます。

つぶやいてみる

全部取得できたら、次は実際につぶやいて見ましょう。

つぶやき方ですが、tweepyの使い方の手順として

  1. APIクラスのインスタンス(命令を出す本体)を生成する
  2. APIクラスから、やりたいことを呼び出す

とっても単純になってます。

スクリプトを見てみましょう。

まず認証して、APIクラスのインスタンスを作りましょう

import tweepy

# create OAuth handler
auth = tweepy.OAuthHandler(Profile.consumer_key, Profile.consumer_secret)

# set access token to OAuth handler
auth.set_access_token(Profile.access_key, Profile.access_secret)

# create API
api = tweepy.API(auth_handler=auth)

これで、準備完了です。

Profileの中には、先ほど取得した値が名前どおりに格納されていると思っておいてください

  • Consumer key → Profile.consumer_key
  • Consumer Secret → Profile.consumer_secret
  • Access Token → Profile.access_token
  • Access Secret → Profile.access_secret

の4種類ですね。

認証が終われば、後はツイートするだけなので、つぶやくのであれば

api.update_status(つぶやく内容)

でつぶやくことができます。

その他の機能は?

そのほかの機能については、tweepyのヘルプを読んでみてください。
書いてある内容は、twitterを使ったことある人なら、大体推測がつく内容になってます。

というわけで、自分の作ったtorubotはこのあたりから落とすことができます。
実際にtwitter関連の制御をまとめたtwitter.pyがあるので、興味があればご覧ください。
(ソースは酷いので、あまり気にしないでください・・・)

toru-bot/source/riskrisk-torubot at master from risk/risk – GitHub
<https://github.com/risk/risk/tree/master/toru-bot/source/riskrisk-torubot>

0 件のコメント:

コメントを投稿