2009/12/11

Ubuntu 8.04 LTSでGoogle Blogger APIを触ってみる

何はなくとも Blogger API の"client libraries"からpython用のファイルをダウンロードしておきます。 Blogger APIの文書自体は参考になりますが、 サンプルコードに手を加えていけば丁寧に読まなくても先に進めると思います。

パッケージの展開とビルド

Ubuntu 8.04のパッケージに準備されているpython-gdataパッケージはバージョンが1.0です。 そもそも現在の最新版は2.0.5ですから、附属のサンプルは動きません。 ダウンロードしてきたzipパッケージを展開して必要なライブラリをビルドします。

$ unzip -x gdata-2.0.5.zip
$ cd gdata-2.0.5
$ python setup.py build

インストールしてしまうと/usr以下にコピーされてしまいますから、 今回はそれを行なわずにサンプルプログラムを動かす事にします。 まずは附属のサンプルプログラムを起動してみましょう。

$ cd samples/blogger
$ python BloggerExample.py 
Traceback (most recent call last):
  File "BloggerExample.py", line 35, in <module>
    import gdata.blogger.client
ImportError: No module named blogger.client

普通に動かすと"blogger.client"つまり"blogger/client.py"ファイルが見つからないと言われてしまいます。client.pyを探すと…

$ find ../../ -name '*.py' | grep blogger/client
../../build/lib/gdata/blogger/client.py
../../src/gdata/blogger/client.py

今回はbuildディレクトリの方を使うので、コマンドラインを修正します。

$ env PYTHONPATH=../../build/lib python BloggerExample.py
Please choose the authorization mechanism you want to use.
1. to use your email address and password (ClientLogin)
2. to use a web browser to visit an auth web page (AuthSub)
3. if you have registed to use OAuth
: 1
Please enter your username: xxx@gmail.com
....

基本的には BloggerExample.py の中で必要そうな処理はメソッド単位でまとめられているので通して眺めるぐらいで必要な知識は手に入ると思います。

ブログ記事の更新

BloggerExample.py にない機能はブログ記事の更新でしょうか。 でもタイトルの更新は BloggerExample.py に書かれているので、 適当に "Title" を "Content" に書き換えたてうまく動いています。

for article in self.client.get_posts(self.blog_id):
  ...
  article.content = atom.data.Content(type='text', text=content)
  ...

"Developer's Guide: Python"の" Publishing a blog post "には"atom.Content"という記述がありますが、"atom/data.py"を読む限りだと動かないですよね…。

Blogger APIは全体的に動きから予測できるのだけれど、細かいところで初級者に優しい作りではないようです…。

0 件のコメント: