2011年04月29日

Twitterのbotを作ってみる【スケジュール投稿プログラム作成編】

とりあえず環境はできたので、Googleカレンダーからスケジュールを取ってくるスクリプトを考える。
まずはGoogleからGoogle Calendarを操作するためのgdata-python-clientをダウンロード。
http://code.google.com/p/gdata-python-client/downloads/list
んでインストール。
Google Data ProtocolでもOAuthが使えるようなのだが、トークンをもらうのにドメインの認証が必要みたい。
現時点ではサーバのある場所から離れているので、OAuthの登録ができない。
仕方ないので、ClientLogin方式でやるか。

で、Data API Developer's Guide: Python をもとにサンプルコードを書いてみる。
http://code.google.com/intl/ja/apis/calendar/data/2.0/developers_guide_python.html

おやじの会のスケジュールと学校行事・PTA行事を別の種類のカレンダーとして登録しているが、おやじの会のスケジュールしか取れない。
検索して見つかるものは gdata.calendar.service クラスを使用しているコードがほとんどだがこれはバージョン1.0のクラスじゃないか?
バージョン2.0では gdata.calendar.client クラスになっている(と思う)ので、肝心なところで参考にならない。
gdata.calendar.client だと、複数のカレンダーからイベントを取得する方法が分からない。
みんなが書いているやり方はバージョン2.0では使えない気がする。どうしたらいいんだ?

ちょっと調べてみたが、pyhtonのData API Developer's Guideでは"When invoked with no parameters, the GetCalendarEventFeed method returns the user's primary calendar."
と書いてあるが、Javaの方にはそんな注意書きはない。
「no parameterならprimary calendarしかとれない」とあるので、queryがあればprimaryからもsecondaryからも取れるのかと思ったがそうではないみたいだ。
しかたないので、primary calendarだけでやるしかないようだ。バグなのかなあ?
※google calendaraではアカウント作成時からあるカレンダーをprimary calendar、それ以外の後から作成したカレンダーをsecondary calendarというようだ。

ということで、不本意ながらもprimary calendarから予定を取得することができた。
ちなみに開始・終了時刻がある場合は、取得したイベント情報に開始時間と終了時間があるが、終日のイベントには開始時間も終了時間も設定されていない。
これをチェックして、「今日は○○の予定です」「今日はXX:YYから△△の予定です」として、Twitterに投稿できるようになった。

これと最初に作ったTwitter投稿用のスクリプトを組み合わせて
・朝7時に本日のスケジュールがあればTwitterにつぶやく
・朝8時に明日のスケジュールがあればTwitterにつぶやく
・朝9時に来週のスケジュールがあればTwitterにつぶやく
という3つのスクリプトを作った。
ラベル:Twitter bot
posted by 岩永 at 00:00| Comment(0) | TrackBack(0) | パソコン | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。