動機
Macにはmixiフォトアップローダが無かったり、mixi stationの調子が悪かったりして頭に来たので、スクリプトで同様のアプリケーションを作ってみようと思った。
できた物
- WSSE.py (ファイル後半)
使い方
一通りの使い方はこんな感じ。
mc = MixiClient('username','password') tracks = mc.getTracks() # 足あとの取得(10件) notify = mc.getNotify() # お知らせの取得 friends = mc.getFriends() # マイミク一覧の取得 update = mc.getUpdates() # 更新情報一覧の取得 albumurl = mc.createAlbum(u'旅行', u'旅行の写真') # 新規フォトアルバムの作成 mc.postPicsToAlbum(['photo1.jpg','photo2.jpg','photo3.jpg'], albumurl) # 写真はファイル名のリストで mc.postDiary(u'にっき',u'いきてます','photo4.jpg') # 写真付き日記の投稿
まだ修正中だったりしますので動作が不安定だったりコードが汚かったりします。すみません。
mixi API
参考
APIとしてはこの辺が参考になりました。
mixi APIは正式に公開されている物ではなく、有志の方々がWiresharkなどを用いてmixi stationやmixiツールバーなどの通信データを見て書いたとのことですが、ありがたい限りです。
公開されている物をみるとmixiもWSSE認証を用いていますが、通常のWSSE認証を用いたAtomAPIとは違って、ルートエンドポントがないなど、まだまだ正式リリースをするには整っていないことが伺えます。
データの送信
前回のエントリにも書きましたが、実際にデータを送信するとなるときに必要になったのは、
でした。
前者に関しては先日のエントリで触れたのでここでは省略いたします。
後者に関しては同じくminidomを用いているのですが、その辺のコードはこんな感じ。
def __createSenderXML(self, elem_dict): impl = minidom.getDOMImplementation() # Python2.1では動かない doc = impl.createDocument(None, 'entry', None) header = doc.documentElement header.attributes['xmlns'] = 'http://www.w3.org/2005/Atom' header.attributes['xmlns:app'] = 'http://www.w3.org/2005/app#' for k, v in elem_dict.iteritems(): elem = doc.createElement(k) elem.appendChild(doc.createTextNode(v)) header.appendChild(elem) body = doc.toxml(encoding='UTF-8') doc.unlink() return body
毎度おなじみのライブラリリファレンスが役立ちます。
追記
途中ファイルを更新したのに、リンク先を更新しないでいました。すみません。今は直接レポジトリのソースにアクセスするようにしています。