• ログインログイン
  • 新規登録新規登録

MENU

Google App Engineで遊んでみよう! 第3回

連載Google App Engineで遊んでみよう!

GoogleAppEngineを使った開発レシピです。AWSやさくらインターネットのVPSやレンタルサーバなどの他の有名なクラウド環境と比べると少しクセがあるものの、慣れると非常に楽に開発やローンチができます。一定の範囲内まで無料で活用できるようになっているので、これを機会にぜひ活用してみましょう。

前回までのプログラミング学習コラムに続き3回目の勉強内容です。

こんにちは、ぴかしです。前回は、Twitter APIのPythonからの利用方法(python-twitter)について説明しました。

今回は、python-twitterでどのようなことができるのかについて解説し、前回から作成しているBotに機能を追加してみます!Mac OS Xでの実行を想定しています。

python-twitterのモジュール紹介

python-twitterの主なモジュールを紹介します。以下は、Mac OS Xに標準で入っているPython2.6インタラクティブシェルで実行しています。はじめに、以下の設定を行なっておいて下さい。

>>> import sys
>>> reload(sys)
>>> sys.setdefaultencoding(‘utf-8’)

インポート・認証は以下のようにすればOKです

>>> import twitter
>>> api = twitter.Api(consumer_key=CONSUMER_KEY, 
 consumer_secret=CONSUMER_SECRET, 
 access_token_key=ACCESS_TOKEN,
 access_token_secret=ACCESS_TOKEN_SECRET,
 cache=None)

CONSUMER_KEY、CONSUMER_SECRET、ACCESS_TOKEN、ACCESS_TOKEN_SECRETは、前回取得したものに置きかえて下さい。GetUserを用いて、ユーザ情報が取得できます。@pika_shiの情報を取得してみます。

>>> user = api.GetUser('pika_shi')
>>> print user.name # 名前
ぴかし
>>> print user.description # 自己紹介
京大の院生なう(・∀・)/MENSA会員/ @pika_shi_bot /ムキムキになりたい
>>> user.statuses_count # ツイート数
10288

GetFriendsTimeLineで、TLを取得できます。以下では、TLを取得し,最新ツイートを表示しています。

>>> timeline = api.GetFriendsTimeline(‘pika_shi’)
>>> print timeline[0].user.name, tweet[0].text
瀬戸内寂聴bot 「同床異夢」とは、同じ布団で寝ていても同じ夢は見られないことです。愛の情熱は三年位しか続きません。夫婦は苦楽を共にして愛情を持ち続けるのです。

ツイートの情報も、例えば以下のようなものが取得できます

>>> tweet = timeline[0]
>>> print tweet.created_at # ツイートの投稿時間
Sat Aug 10 01:28:29 +0000 2013
>>> print tweet.source # ツイートされたクライアント
<a href="http://twittbot.net/" rel="nofollow">twittbot.net</a>

ツイートは以下のように投稿できます。デコード必須です

api.PostUpdate(‘こんにちは!’.decode("utf-8"))

記事の検索は以下のようにします。以下では検索結果の上位1件のツイートを表示しています。

>>> search_results = api.GetSearch('こんにちは'.decode('utf-8'))
>>> print search_results[0].text
天才と天才がこんにちは事件

他にもモジュールは沢山あります。また、ツイートやユーザの情報は上記のもの以外も取得できるので、詳しく知りたい方はpython-twitter ドキュメント を読んで下さい。

Botに機能を追加しよう!

前回は、「歯医者こわくないよ!がんば!」とただ投稿するだけの機能を作成しました。今回は、「歯医者こわい」と言っている人にリプライする、という機能をつけてみようと思います。

以下の流れで行います。

  1. 「歯医者こわい」でツイート検索
  2. 検索結果の上位1件を取得
  3. そのユーザに対して「歯医者こわくないよ!がんば!」とリプライ
ソースコードは以下のようになります。post_tweet.py というファイル名で保存しておくことにしましょう。

#-*- coding: utf-8 -*-
import twitter
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
# 自身が取得したものに置きかえて下さい
CONSUMER_KEY="XXXXXXXXXX"
CONSUMER_SECRET=" XXXXXXXXXX "
ACCESS_TOKEN=" XXXXXXXXXX "
ACCESS_TOKEN_SECRET=" XXXXXXXXXX "
api = twitter.Api(consumer_key=CONSUMER_KEY,
 consumer_secret=CONSUMER_SECRET,
 access_token_key=ACCESS_TOKEN,
 access_token_secret=ACCESS_TOKEN_SECRET,
 cache=None)
# 「歯医者こわい」でツイート検索し、結果の上位1件を取得
tweet = api.GetSearch('歯医者こわい'.decode('utf-8'))[0]
# リプライメッセージを作成
# tweet.user.screen_nameにリプライするユーザ名が入ります
postmsg = '@' + tweet.user.screen_name + ' 歯医者こわくないよ!がんば!'
# リプライを投稿
# in_reply_to_status_idで、どのツイートに対するリプライなのかを指定しています
api.PostUpdate(status=postmsg.decode('utf-8'), in_reply_to_status_id=tweet.id)

上記のプログラム(post_tweet.py)を実行してみて下さい。すると以下のように投稿されます。

これで基本的な機能が完成しました。次回は、いよいよこのBotをGAEに載せ、一定時間ごとに自動で投稿させようと思います。ご期待ください。

オススメ記事一覧

もっと見る
完全無料!

1で登録完了!

エンジニアの仕事・年収や選考ノウハウ記事が読めるほか、
会員にはプログラミング講習やES・面接対策などリアルな無料サポートも充実。
ここだけの求人情報も多数。

今すぐ新規会員登録
Page Top