Twythonで遊ぼう その1

Raspberry Piをふとしたきっかけで手に入れたのでTwitterのBotを作ってみたいと思い、調べてみたところTwythonというPtython用のライブラリがあることを知り、試験的に自分のノートPCを実験台として使ってみました。

1、やること
Twythonライブラリを導入してPythonからTwitterを操作してみる。

2、前提条件(環境)
パソコンにPythonの環境があること。
PythonでHello worldができる。
Twitterアカウントを持っていること。

僕のPCの場合ではこんな感じです。
・OS X Yosemite 10.10.4
・Python 2.7.9

3、準備
・デベロッパー登録とアプリケーションの登録
自分の作ったプログラムからTwitterをいじるためにはデベロッパー登録とアプリケーションの登録をおこなう必要がある。
登録をおこなうためのチュートリアルはこちらのページが最高にわかりやすい。
http://syncer.jp/twitter-api-create-application

アプリケーション登録をする際にはPermissionの設定を行う。このときに自分の作りたいものに合わせてRead onlyとRead and Writeのうちから必要なものを選ぶ。

今回は、TLへの書き込みに挑戦するのでRead and Writeを選ぶ。

アプリケーションを登録すると以下の4つが割り振られるのでこれらをメモする。

Consumer Key (API Key)
Consumer Secret (API Secret)
Access Token
Access Token Secret

・Twythonの導入
PythonからTwitterを扱えるようにするためにTwythonライブラリをインストールする。
ターミナルを開いてsudo easy_install twythonと打ち込む。インストールはパッケージ管理ソフトがやってくれる。
インストールがうまくいくとこんな感じでディレクトリが形成されるはずです。
/Library/Python/2.7/site-packages/twython-3.2.0-py2.7.egg

4、サンプルの実行
ということでサンプルを利用して、タイムラインに投稿しましょう!
https://github.com/ryanmcgrath/twython/tree/master/examples
そのためにgithubからexampleを落としてきます。

まずは、update_status.pyを実行してみましょう。
exampleはそのままだとこんな感じ。

from twython import Twython, TwythonError

# Requires Authentication as of Twitter API v1.1
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

try:
    twitter.update_status(status='See how easy this was?')
except TwythonError as e:
    print e

これを自分用に書き換えてみるとこんな感じ。

#↓日本語を扱えるようにするために追加
#coding: UTF-8

from twython import Twython, TwythonError
#自分の〜の中に3で控えた設定を入力する。
APP_KEY = "自分のConsumer Key (API Key)"
APP_SECRET = "自分のConsumer Secret (API Secret)"
OAUTH_TOKEN = "自分のAccess Token"
OAUTH_TOKEN_SECRET = "自分のAccess Token Secret"

# Requires Authentication as of Twitter API v1.1
twitter = Twython(APP_KEY, APP_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

try:
    twitter.update_status(status='こんにちはTwitter!')
except TwythonError as e:
    print e

この.pyをターミナルからじっこうしてやれば自分のTwitterアカウントが更新できるはず!!
みなさんは大丈夫でしたか?
ダメだった場合はエラーログが表示されるので適当にググってください。

次はAPIを観察しながらいろいろ遊んでみたいと思います。