2008/01/31


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批判はどこいった?
ダウンロード:
Posted at by




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本体に記述してあります。
Posted at by




PLAYLOGMashUp Awardが開催されています。
適当にYahoo Pipes!でパイプってJSONで取得するものを作ってみました。
URL:PLAYLOG Playlist(JSON)
ただ、Yahoo Pipes!側が悪いのか、日本語を含むアーティストが文字化けを起こしています。だれか解決方法知ってたら教えて下さい。
使用は適当にどうぞ... <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script type="text/javascript"><!--
if (window.addEventListener) window.addEventListener("load", loadScript, false);
if (window.attachEvent) window.attachEvent("onload", loadScript);
function loadScript(){
  var script = document.createElement("script");
  script.charset = "utf-8";
  script.src = "http://pipes.yahoo.com/pipes/pipe.run?...";
  document.body.appendChild(script);
  document.getElementById('result').innerHTML = "<em>reading...</em>";
}
function callback(data){
  var html = "";
  for(n = 0; n < data.count; n++) {
    link = data.value.items[n]['playlog:artistlink'];
    artist = data.value.items[n]['playlog:artist'];
    title = data.value.items[n]['title'];
    html += "<a href=\"" + (link ? link : "javascript:void(0)") + "\">";
    html += (artist ? artist : "unknown") + " - " + (title ? title : "unknown");
    html += "</a><br />";
  }
  document.getElementById('result').innerHTML = html;
}
// --></script>
<title>Sample</title>
</head>
<body>
<h1>PLAYLOG</h1>
<div id="result"></div>
</body>
</html>
Posted at by