2011年04月30日

Twitterのbotを作ってみる【画像投稿プログラム作成編】

次は画像投稿の処理だけど、Picasa Web AlbumのAPIがよく分からない。
http://code.google.com/intl/ja/apis/picasa/ ではPicasaにボタンを追加するだけしかできないの?
と思ったら、これはWeb AlbumではなくてPicasa(アプリ)のAPIなのか。
Picasa Web AlbumのAPIなら画像を検索してダウンロードできそうだ。
Picasa Web AlbumのAPIでPythonが使えるのはV1しかないみたいなので、V1でスクリプトを作成。
こちらは簡単にPicasaから任意のアルバムと写真を取ってくることができた。
「任意の」には乱数を使用。まずアルバムのリストを取得して、randintでアルバムを選択。
それからアルバム内の写真のリストを取得して、これもrandintで写真を選択。
適当なアルバムから適当な写真を選択し、URLを取ってくることができた。
アルバム名は「年+月+行事名」としているので、アルバム名から「XX年YY月の○○の様子です」というコメントを作成した。

次はTwitterに投稿するAPIを探そう。
自分自身のTwitterアカウントから画像を投稿するときは、TwitPicを使ってるので、同じのがいいな。
TwitPicもAPIを公開しているみたいだ。Python-Twitpicというライブラリを発見。
これで勝つる!
TwitterのOAuth Keyを使って、それほど困らずにTwitpicへ画像とコメントを投稿することができた。
さらに戻り値として投稿した画像のURLなどが得られるので、そのURLを使って今度はTwitterに投稿する部分も作製した。
(古いバージョンのAPIだとPython-TwitpicでTwitpicへ投稿+Twitterに投稿できるが、新しいバージョンではできないみたいだ。)
タグ:Twitter bot
posted by 岩永 at 00:00| Comment(0) | TrackBack(0) | パソコン | このブログの読者になる | 更新情報をチェックする

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) | パソコン | このブログの読者になる | 更新情報をチェックする

2011年04月28日

Twitterのbotを作ってみる【環境構築編】

出張先の仕事が落ち着いてきて、土日は両方とも休めるようになって時間ができたので、思い付きでTwitterのbot(自動でつぶやきを投稿するプログラム)を作ろうと考えた。
自分がやっている小学校のおやじの会のbotにしよう。
考えた機能は以下の通り。
・おやじの会の打ち合わせや行事予定をつぶやく
・学校行事予定をつぶやく
・過去の行事の写真を投稿する
・プロフィールに「おやじの会」を入れている人をフォローする
この4つの機能を自動で行うようにしたい。

行事予定や写真をどうやって管理するか。
Googleのサービスを使えば、プライベートでも使用しているから使い方は分かるし、APIが提供されているから外部プログラムから取ることができる。
ということで、行事予定はGoogle Calendarを使い、写真はPicasa Web Albumを使用することに決定。




準備したもの
・Python 慣れていたのでなんとなく。開発はWindowsXPだが稼働はCentOS上でやりたかったので、スクリプト言語にした。
     3.2をインストールしたが、下記理由で2.7にした。
・easy_install python twitterをインストールするのに必要っぽかったので。Python3.2では対応してないみたいだったのでわざわざPython2.7を入れなおした。
・python-twitter PythonからTwitterにいろいろするためのライブラリ。
・python-twitpic Pythonからtwitpicにいろいろするためのライブラリ。
・Google Data API Googleのいろいろなサービスを操作するためのAPI。



やったこと
・GoogleカレンダーやPicasaWebアルバムと連動させようと思ったので、Googleアカウントを取得。
 取得したアカウントでGoogle Calendarにおやじの会のスケジュールと学校行事・PTA行事を登録。
 Picasa Web Albumに過去のおやじの会の行事のアルバムを作成した。
・Twitterのアカウントを取得
・Pythonのインストール
 上で書いたように、最初はPython3.2を入れたが2.7を入れなおす。
 ググってpython-twitterというものがあるらしいと知ったのでeasy_install→python-twitterをインストール
・スクリプト作成
 ググって見つけたサンプルコードをまねて、Twitterに投稿するスクリプトを作成。
 いきなり認証でつまづく。
 OAuthしか許容しないようになってるんじゃないか?
 しかもpython-twitterは使えない雰囲気。
 ということで、「やる夫とPythonで学ぶTwitterのOAuth」を参考にTwitter botのAccess Tokenを取得した。
 コードも丸パクリでやってみたらうまくいったので一安心。
 けどこれってpython twitter意味ないんじゃ…
 ということで、oauth-python-twitterなるものがあるみたいなので、これをインストール。
 最初に書いて見事にこけたスクリプトを書き直して試してみる。

 「良いもの。悪いもの。」を参考にしてみたけどハマる。
 サンプルスクリプト中の”tw = OAuthApi(CONSUMER_KEY, CONSUMER_SECRET, request_token)”は不要みたいだ。
 あと、oauth-python-twitter には OAuthApi.getAccessTokenWithPin がないので、普通は__init__.pyを修正してインストールするみたい。
 しかしWindowsでeasy_installを使うと、修正する暇もなくインストールされてしまう。
 めんどくさいのでoauth-python-twitterを使うのはあきらめた。
 Linuxに載せ換えるときに考えよう。
タグ:Twitter bot
posted by 岩永 at 00:00| Comment(0) | TrackBack(0) | パソコン | このブログの読者になる | 更新情報をチェックする
×

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