PivotalTrackerのAcceptを呟くbotを作った。

先日、ギー沖住人の@が#gokidea というハッシュタグでつぶやくと、それがギークハウス沖縄のPivotalTrackerのiceboxに追加されるスクリプトをRubyで書いてた。

せっかくだし、AcceptされたStoryをギークハウス沖縄のbot(@)につぶやかせたいなと思って、作成した。

参考資料

⇨PivotaltrackerのAPIの説明。ここにだいたい書いてある。基本的に、ユーザーアカウントがもってるTokenとプロジェクト単位で割り当てられるproject_id があればアクセスできるっぽい。

 ⇨これをimportしたら、xmlのタグが簡単に取れるみたい。似たようなものは他にもあったけど、うまくいかなかったけど。

 ⇨生まれて初めてパースというものに挑戦することになったので、これを使って抜き出した。簡単に抜き出せたのでびっくり。パースって面白いからもっと使いそう。
 ⇨使い方とか Beautiful SoupでHTMLやXMLをparseしよう - そこはかとなく書くよ。

 ⇨今回のプログラムは前回つぶやいてから、10分以内にAcceptedされたStoryを探してつぶやくために、現在時間とAcceptedされた時間を引く工程が必要だった。そのためにAcceptedされた時間をdatetimeに変換するものが必要だった。
 ⇨あと、ここだとタイムゾーンまで表示されるので、現在時刻を表示するときに、タイムゾーンを指定してあげなきゃいけない。そのときは、pytz - World Timezone Definitions for Python — pytz v2010e documentationタイムゾーンを指定してあげる。

Groove Labo » Blog Archive » pytz – Pythonでタイムゾーンを扱うライブラリ

  • zip関数の使用

 ⇨Story名とAcceptedの時間をひとつのグループにまとめるために使った。テキストでしか見たことなくて利点とかよく分からなかったけど、今回を通して便利だなと納得。

zip()関数 - バリケンのPython日記 - pythonグループ

  • herokuでPythonのコードを動かす

 ⇨Python Dependencies via Pip | Heroku Dev Center

pip freeze

で出てきたインストールしてるモジュールとバージョンで、herokuに乗せるコードに必要なやつを requirement.txtに書くこと。

今回の反省

  • リスト内包表記が全然できてない

 ⇨関数型言語に触れる。appendを禁止にするのはどうか。変数の中身を変える、変数の再代入もなし。

  • 完成した作品を晒してダメ出し

 ⇨@さんがいいんじゃないか。
 ⇨ちょこっとコードレビューしてもらったけど、すごいよかった。またやりたいなー@

小さな目標だけど、できるだけ、動くコードを作るようにします。