昨夜、OAuthでの認証がうまくいったので、今日はTwitterのTLの取得と発言を実装してみた。
お試し環境 → http://nisetwitter.appspot.com/で公開している。
エラー処理を全く記述していないので、API呼び出しに失敗すると、生のエラーメッセージが出力されてしまう。
ソースコード
昨日のGAE/PythonでOAuthのソースコードの、MainHandlerを数行書き換えるだけで作成できてしまった。
- 12行目
テキスト入力フォームを表示 - 13行目
タイムラインを取得 - 14行目~16行目
タイムラインを表示 - 21行目
発言を登録 - 22行目
元の画面にリダイレクト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | class MainHandler(RequestHandler): """Demo Twitter App.""" def get(self): client = OAuthClient('twitter', self) write = self.response.out.write; write(HEADER) if not client.get_cookie(): write('<a href="/oauth/twitter/login?phpMyAdmin=cfc2644bd9c947213a0141747c2608b0">Login via Twitter</a>') write(FOOTER) return write('<a href="/oauth/twitter/logout?phpMyAdmin=cfc2644bd9c947213a0141747c2608b0">Logout from Twitter</a><br /><br />') write("""<form method="post" action="/"><input type="hidden" name="phpMyAdmin" value="cfc2644bd9c947213a0141747c2608b0" /><input type="text" name="status" size="100"><input type="submit" action="/"></form>""") timeline = client.get('/statuses/home_timeline') for status in timeline: write("""<img src="%(image)s"/> %(user)s:%(text)s (%(source)s)""" % {'image':status['user']['profile_image_url'], 'user':status['user']['screen_name'], 'text':status['text'], 'source':status['source'] }) write("<br><br>") write(FOOTER) def post(self): client = OAuthClient('twitter', self) client.post("/statuses/update", status =self.request.get("status").encode('utf-8')) self.redirect("/") |
まとめ
AJAXを利用して、
- ページをリロードせずにTLを取得
- >ページをリロードせずに発言
などを実装すると、より実用的なTwitterクライアントになるが、世間には使いやすいTwitterクライアントはいくらでもある。四角いタイヤを発明している時間はないので、何を作るかしっかり考えて勉強を進めていきたい。