2007/07/09

はてな
MixiAPI.pyで現状出来ていたのは足跡一覧取得だけでしたが、photoアルバムに対応してみました。
現在動作するAPIは以下の通り
  • get_footstamps: 足跡一覧取得
  • create_album: アルバム作成
  • get_albums: アルバム一覧取得
  • upload_photo: 画像アップロード
なんか、このAtomAPIしっくりきません。
以下、疑問に感じたもの
  • 全てのサービスを束ねるルートエントリポイントがない
  • http://mixi.jp/atomはHTTP/404。足跡も、日記も、photoも全てを束ねたルートエントリポイントがない。
  • アルバムを作成出来るが、削除できない
  • photoアルバムのURLにDELETEメソッド、X-Http-Method-OverrideヘッダでDELETE等送信してみたが、HTTP/405やHTTP/400が返る。
  • アルバムのURLにGETでアクセスしてもphoto一覧が取得出来ない
  • Atomならば普通、一覧が返ってきて欲しいところ...
まぁ、誰もまだ「API公開」と公に言った訳じゃないから、仕方ないのかもしれないけど...
こっそりmixi stationなんかで公開すr

とりあえず、以下からダウンロード

ダウンロード:MixiAPI.py

#アルバム作成、画像アップロードのサンプルはMixiAPI.py本体に記述してあります。

2007/07/08

はてな
もうタイトルは無視して頂いてかまいません。

さて、先日からC++版IronPython版CPython版とmixi APIを使ったコードを書いてきましたが、今日は実際にアプケーションを作ってみたいと思います。ただ先日も書いた通り、現状のmixi APIは足跡くらいしかWebAPIとして使える物がなく、POST(PUSH)やDELETEなどの更新系メソッドも無い為、純粋に、ただ純粋に、足跡をXMLデータとして参照するくらいしか出来ない状況にあります。

さっさと他のAPI出してくれなきゃブログネタが持たないよ...

唯一できそうなものとして、足跡監視ツールくらいですか...
先日作ったCPython用のMixiAPI.pyを使って足跡をポーリングし、新しい足跡があったらお知らせするってシステムを作ってみましょう。
作り方は簡単。get_footstamps()でfootstampディクショナリのリストを受け取り、前回値と比較します。日付ソートした状態でIDが異り始めれば、最初のレコードから違ったレコードまでが新規足跡になる訳です。
以下のソースでは、相異点毎にコンソール出力しています。コンソール出力部分の直下に、「firefox-remote」等を引数「link」で起動するよう修正すれば、「自動足跡踏み返し機」が出来上がる訳です。これを使えば貴方のたるんだ腹筋もどんどん引き締まっていきます。

はぁ...こんなものしか作れないAPIって...
もう...寝ます...

#しかしこのAPIサーバ、よく失敗を返しますね...

MixiAPI.pyにHTTPステータス判定を追加しました。
以下のソースと合わせ、下のダウンロードリンクからダウンロード願います。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import time
import MixiAPI

if len(sys.argv) < 3:
    sys.exit()

service = MixiAPI.Service(sys.argv[1], sys.argv[2])
oldstamps = []
while 1:
    try:
        footstamps = service.get_footstamps()
        # 比較対象がある場合のみ処理
        if len(oldstamps) > 0:
            # 更新日付でソートする(降順)
            footstamps.sort(lambda x, y: cmp(y['updated'], x['updated']))
            n = len(footstamps)
            for i in range(n):
                # idが異なり始めるインデックスを取得する
                if footstamps[i]['id'] == oldstamps[0]['id']:
                    break
            # 全てが異なる場合は全項目検知とする
            i -= 1
            while i >= 0:
                print footstamps[i]['title']
                # ここに footstamps[i]['link'] を引数に持った
                # firefox の起動コマンドを入れておけば、
                # 足跡踏み返しシステムが出来上がる。
                i -= 1
        oldstamps = footstamps
        # del oldstamps[0]
    except:
        pass
    time.sleep(3)

ダウンロード:MixiAPI.py, MixiWatch.py

2007/07/06

はてな
IronPythonでのmixi API操作は既に出来てますので、CPythonで動く物を作ってみました。
とは言っても、まだ足跡APIしか出ていませんので、これからAPIの公開に従い順次追加していく予定です。

メソッドは今のところ、get_footstamps()だけ。
いずれ
  • post_diary
  • edit_diary
  • delete_diary
  • get_friends
等といったメソッドが増えていくのではないか...と思います。
とりあえず、get_footstamps()の使い方は、以下のようなイメージです。
import MixiAPI

service = MixiAPI.Service("user@example.com", "password")
footstamps = service.get_footstamps()
for footstamp in footstamps:
    print footstamp['id']
    print footstamp['title']
    print footstamp['link']
    print footstamp['updated']
    print footstamp['author']['tracks:image']
    print footstamp['author']['tracks:relation']
    print

あれ?mixi APIのAtomPP/WSSE批判はどこいった?
ダウンロード:MixiAPI.py

2007/07/04

はてな
既に記事タイトルに効力がなくなってます...汗

昨日は、C++でmixiの足跡APIを叩いてみましたが今日はpythonと行きましょう。
ただ、そのままpythonライブラリ...というのも面白くないので、本日リリースされたIronPython2.0アルファ2に合わせて、IronPythonでやってみようと思います。
基本的には、もうVisual Basic.NETです。pythonらしきソースが無くなってます。

続きを読む...


2007/07/03

はてな
mixiの足跡APIをC++、libxml2、libcurlで書くと、どんなに長いソースになるかを実証する。
AtomPP/WSSEなんかやめちゃえ...

perlなら20数行だし、pythonで書いても大した事にはならないだろう...。
Basic認証ならまだしも、WSSEなんか使ったら敷居も高いし、派生アプリケーションが出てこなくなるのはもう分かってるはず。

C++で書くと、こんな事になるんだ...
#以下ソース
#例によって適当クオリティなので添削し放題です。

続きを読む...


2007/07/02

はてな
たんなる独り言。
mixiのあしあとAPI発掘 - ZeroMemory
先日mixi stationで足跡APIが出ている事が判明したらしいのですが、結局mixiがすんなりAPIとして公開しないのは...
  • 公開したAPI保守にどれだけ時間を取られるか想定出来ない
  • アタックでサーバダウンした時のユーザ対応が想定出来ない
  • リスクが想定出来ない
  • メリットも想定出来ない
  • 不正に情報が漏れてしまった場合のユーザ対応が想定出来ない
こう見えてしまう。

そして時間が経つにつれて、どんどん公開し辛くなって行くんでしょうね。
今回の足跡APIは、「足跡ならば...」と思ったのか、「今のところ足跡しか...」と判断したのかは分かりませんが、ちゃっちゃと...^H^H^H
もし日記APIを公開するとなったら、AtomPP/WSSEなんだろうなぁ...。公開されたら自前のブログエディタで対応しようかなぁ...。

さぁ、これをキッカケに開けチャッカー!...じゃなく開けAPI!

新規投稿