Google Calendar を使ってみたい -001-

最近、Google Calendar(以下GC) を iPhone と同期させながら使っている人が周りに増えている。私も使いたい。調べたところによると、GCにはデータのエクスポート機能もある。電子データで怖いのは消失だが、これなら、手帳に代わってくれるのではないかと思った。

しかし、日々更新される予定、消失した時にはすぐに復活してくれなければ困る。それゆえに、自動バックアップを望む人は多いらしい。GCにはAPIがあるので、これを使えば簡単に自動バックアップが取れるのではと思った。

が、しかし! 私の英語力ではGCのAPIでそのようなことができるメソッドは見つけられなかった。結局、APIは使わずともエクスポートができることが分かったので、それをまとめる。


これは、GCのうち、1つのカレンダーのみをiCalendar形式でエクスポートできるPythonスクリプトである。ちなみに、Pythonを選んだことに大きな意味は無い。一種の気の迷いからである。

dirにはバックアップ先のディレクトリを記述する。
urlには、
カレンダーのエクスポート
の「特定のカレンダーからのコンテンツのエクスポート」の2で表示されるURLを記述する。


このスクリプトを走らせるときは、ログインなどしていなくても大丈夫である。このURLにはセッショントークンが含まれているが、これはおそらく永続的に変わらないからである。このURLには、IDとなるメールアドレスと、おそらくパスワードの意味合いが含まれているセッションIDが含まれているので、出来れば平文での保存は避けたい。このURLがあればカレンダーを自由にダウンロードできてしまうためだ。

そこで、私はメールアドレスとパスワードをSHA-1で暗号化、セッショントークンはAESで暗号化して保持することにした。スクリプトを起動するとアドレスとパスワードの入力を受け付け、SHA-1で暗号化して一致すれば、そのパスワードをキーにしてAESでセッショントークンを復号化する。このメールアドレスとセッショントークンからURLを構成して、ダウンロードするようにした。

しかし、SHA-1が破られればメールアドレスとパスワードがばれ、それをもとにセッショントークンも割れるので、強度はSHA-1依存である。素人丸出しな方法だが、平文よりマシかと思う。


と言うことで、誰も得しなさそうではあるが一応↓に掲げておこうと思う。これを定期タスクとして実行するようにすれば、認証の面倒くささのみでバックアップが取れる。

コードが汚い。ごめん。

AESを利用するためにPyCryptoをインストール、Crypto.Cipher.AESをインポートした。
参考:

 


今後の課題:

バックアップしたファイルを自分のメールアドレス宛てに送信する。
→ 検討: Google Calendar トラブル時に使うので、Gmail宛てでないほうがよいか?