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 件のコメント:
コメントを投稿