Google App EngineでTwitterアプリを作ろう
description
Transcript of Google App EngineでTwitterアプリを作ろう
Google App Engine でTwitter アプリを作ろう
2010 年 8 月S-cubism 技術勉強会
細田謙二
Twitter について
Google App Engine について
Google App Engine でできること
なんといってもタダ!
ウェブサービスだけではない
URL フェッチやクーロンタスクも可能
こんなことが可能
ダウンロード個人レベルでのデータ集約&解析
本日のレシピ本日のレシピGoogle App Engine で
Tweet Aggregator を作る
Web2pyWeb2py
OAuthOAuth
Twitter APITwitter API
Google App EngineGoogle App Engine
tweepy ライブラリを利用する
• Twitter API の Python ラッパー
• OAuth 認証が利用可能
ん。。 OAuth って?
Twitter の利用制限
• 匿名リクエストは、 IP 毎に、 1 時間に 150 回まで
• Google App Engine では IP を共有利用• → すぐ制約にひっかかる
• OAuth 認証を利用すれば、 IP 制約がない– 1 時間に 350 回まで– Twitter にログインした状態と同じことができる
OAuth の設定1
• 適当なアプリ名を入力すれば OK–認証後、指定 URL にリダイレクトするか否か
の設定なども行う
• Cunsumer Key と Consumer secret を取得
Twitter にてアプリケーション登録
OAuth の設定2
import tweepyauth = tweepy.OAuthHandler(
consumer_key, consumer_secret)
(以降 tweepy を利用)取得した "consumer token" から
auth オブジェクトを作成
OAuth の設定3
redirect_url = auth.get_authorization_url()request_key = auth.request_token.keyrequest_secret = auth.request_token.secret
これらの出力をメモ
"redirect url" と "request token" を取得
OAuth の設定4
12345677 桁の数字が表示されるので、
これもメモ
取得した "redirect url" を( twitter にログインした状態で)開く
OAuth の設定5
auth.set_request_token(request_key, request_secret)
auth.get_access_token(verifier_digits)
access_key = auth.access_token.key access_secret = auth.access_token.secret
取得した 7 桁の数字
これらの出力をメモ
"access token" の取得
OAuth の設定6
auth.set_access_token(access_key, access_secret)
# これで API が利用可能に!api = tweepy.API(auth)
api オブジェクトの作成
こんな感じでツイートを収集
# since_id 以降のツイートを最大 200 件取得tweets = api.home_timeline(
since_id, count=200)
for tweet in tweets:tweet.id
tweet.text ...
Aggregator を作る
• ツイートの定期収集– URL フェッチ– DB へ保存 (Web2py だと簡単 )–クーロンで回す ( 設定ファイルで可能 )
• 未読 / 既読を設定してみる
Web2py を利用する• Python のウェブフレームワーク
• Google App Engine 上でも動作する
• 習得が容易– 大学での教育用として開発
ツイートモデルを定義
db.define_table('tweet', Field('uuid', 'integer'), Field('tweeted_at', 'datetime'), Field('content', 'string'), Field('user_name', 'string'), Field('user_image', 'string'), Field('read_flg', 'boolean', default=False),))
Web2py の db オブジェクト
Web2py のmodel 内で定義
未読 / 既読の設定
未読のみ表示してみる# 未読ツイートの取得tweets = db(db.tweet.read_flg==False
).select(limitby=(start, end),orderby=~db.tweet.tweeted_at)
# 既読に設定for tweet in tweets: tweet.update_record(read_flg=True) # ビューで表示return dict(tweets=tweets)
Web2py のcontroller 内の関数
Google App Engine にデプロイ
• Google App Engine のアプリケーションの登録
• SDK のインストール• 設定ファイルの記述–アプリケーション名を登録– DB インデックスや、クーロンタスクなどを設定
• (web2py の ) ソースをコミット
デモ
こんなことができる(かも)
• ユーザー毎に未読数・既読数の表示
• メンションやリツイートなどに関する詳細分析
• 頻出単語の算出
• 個人の嗜好を反映したツイートの分類