python-twitter を使います。
ライブラリの設定などで躓いたところをメモしておきます。
ライブラリの設定
python-twitter は simplejson, oath2, httplib2 が必要なので、これらのライブラリを Google App Engine(GAE) 上のプロジェクトで実行できるようにします。ライブラリのコードをプロジェクトに入れることで解決しました。
- プロジェクトのルートディレクトリに python-twitter ライブラリの build/lib から持ってきた tiwtter.py を置きます。
- oath2 ライブラリの build/lib 以下にある oath2 ディレクトリをルートディレクトリに置きます。
- httplib2 ライブラリの build/lib 以下にある httplib2 ディレクトリを oath2 ディレクトリの下に置きます。
- simplejson ライブラリの build/lib 以下にある simplejson ディレクトリをルートディレクトリに置きます。
最終的なディレクトリ構成は以下のとおりになりました。
│ app.yaml │ cron.yaml │ favicon.ico │ index.yaml │ main.py │ twitter.py │ ├─oauth2 │ │ _version.py │ │ _version.pyc │ │ __init__.py │ │ __init__.pyc │ │ │ ├─clients │ │ imap.py │ │ smtp.py │ │ __init__.py │ │ │ └─httplib2 │ cacerts.txt │ iri2uri.py │ iri2uri.pyc │ socks.py │ socks.pyc │ __init__.py │ __init__.pyc │ └─simplejson │ compat.py │ decoder.py │ encoder.py │ ordered_dict.py │ scanner.py │ tool.py │ _speedups.c │ __init__.py
python は __init__.py があるフォルダをライブラリのフォルダとして認識するので、これで twitter.api からは oath2 と simplejson が見えるようになり、oath2 からは httplib2 が見える…という寸法です。
twitter.Api のキャッシュの無効化
Google App EngineでTwitter(OAuth対応)を使うためのメモ
参考サイトから引用すると
Google App Engineでは、スタティックなファイルを作成等はできない。python-twitterはキャッシュとして、ファイルを作るために、そのままでは動作しない。APIオブジェクトを作成する際にcache=Noneをキーワードとしてつけておくこと。です。なので、twitter.Api オブジェクトを作成するときは
api = twitter.Api(consumerKey, consumerSecret, accessToken, accessSecret, cache=None)
のようにして cache を無効化してオブジェクトを作成します。
アカウントの登録
BOT 用のアカウントを登録します。
PythonでTwitter BOTを作る を参考にしました。
ソースコード
GAE の URL にアクセスしたときに呟きます。これを cron の JOB に登録すれば、一定時間毎に呟く事が可能になります。
cron.yaml は以下の様な感じ。頻度は適当に。
cron: - description: job url: / schedule: every 2 hoursあとは呟く内容を変える仕組みを作れば、自分専用の BOT としては形になりそうです。
0 件のコメント:
コメントを投稿