mixi Graph API を Python から簡単に使えるようにするためのライブラリです。
easy_install を使ってインストールします。 依存ライブラリの MultipartPostHandler も自動的にインストールされます。
# easy_install strippers.mixi
現在このライブラリがサポートしている mixi Graph API は以下の通りです。
- 友人一覧の取得
- get_friends(group_id='@friends', sort_by=None, sort_order='ascending', count=20, start_index=0)
- 自分自身の取得
- get_myself()
- ユーザのつぶやき一覧の取得
- get_user_timeline(count=20, start_index=0)
- 友人のつぶやき一覧の取得
- get_friends_timeline(group_id='', count=20, start_index=0)
- つぶやきの投稿
- update_status(status)
- フォト付きつぶやきの投稿
- update_status(status, photo)
- つぶやきの削除
- delete_status(status_id)
- 受信メッセージ一覧の取得
- get_messages(updated_since=None, count=50, start_index=0)
- 受信メッセージの取得
- get_message(message_id)
- メッセージの送信
- send_message(recipient_id, title, body)
- メッセージの閲覧状態の変更
- change_message_status(message_id, read=True, replied=False)
- メッセージの削除
- delete_message(message_id)
- mixiチェックの投稿
- share(key, title, url, image=None, pc_url=None, smartphone_url=None, mobile_url=None, description=None, comment=None, visibility=V_FRIENDS)
- 画像無しの日記の投稿
- write_diary(title, body, privacy=V_FRIENDS)
- READ_PROFILE
- 'r_profile'
- READ_VOICE
- 'r_voice'
- WRITE_VOICE
- 'w_voice'
- READ_UPDATE
- 'r_updates'
- WRITE_SHARE
- 'w_share'
- READ_PHOTO
- 'r_photo'
- WRITE_PHOTO
- 'w_photo'
- READ_MESSAGE
- 'r_message'
- WRITE_MESSAGE
- 'w_message'
- WRITE_DIARY
- 'w_diary'
APIメソッドのprivacy、またはvisibility引数に渡す値。APIによってサポートされている公開設定の範囲は異なります。
- V_EVERYONE
- 'everyone' : 全体に公開
- V_FRIENDS
- 'friends' : 友人まで公開
- V_FRIENDS_OF_FRIENDS
- 'friends_of_friends' : 友人の友人まで公開
- V_TOP_FRIENDS
- 'top_friends' : 仲良しに公開
- V_SELF
- 'self' : 非公開
特定のグループにのみへの公開('group')は、このライブラリでは今のところサポートされていません。
>>> from strippers.mixi import MixiGraphAPI, WRITE_VOICE, DEVICE_PC >>> >>> # mixi サービス登録情報を定義 >>> consumer_key = 'xxxxxxxxxxxxxxxxxxxx' >>> consumer_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' >>> redirect_uri = 'http://www.example.com/mixi/authorized' >>> >>> # 使用する API のスコープを指定 >>> scopes = [WRITE_VOICE] >>> >>> # (1) MixiGraphAPI オブジェクトを生成 >>> api = MixiGraphAPI(consumer_key, consumer_secret, scopes) >>> >>> # (2) ユーザ認可用 URL を取得 >>> api.get_auth_url(device=DEVICE_PC) 'https://mixi.jp/connect_authorize.pl?scope=w_voice&response_type=code&client_id=xxxxxxxxxxxxxxxxxxxx&display=pc' >>> # (3) 上の URL にアクセスして[同意する]と、サービス登録した redirect_uri に >>> # code パラメータ付きでリダイレクトされてきます。 >>> # この code パラメータを利用します。 >>> code = '5fbf8d9e55f0df0deff68cd4a8500701b3fe6baa' >>> >>> # (4) MixiGraphAPI オブジェクトを初期化 >>> api.initialize(code, redirect_uri) >>> >>> # 認可ユーザのアクセストークンとリフレッシュトークンを取得 >>> access_token, refresh_token = api.tokens
MixiGraphAPI オブジェクトを初期化すると、各 API メソッドを実行できるようになります。
ユーザのアクセストークンとリフレッシュトークンが予め分かっている場合は、上記(1)~(4)の MixiGraphAPI オブジェクトの初期化処理は要らず、次のようにアクセストークンとリフレッシュトークンを引数に渡して MixiGraphAPI オブジェクトを生成するだけで済みます。
>>> api = MixiGraphAPI(consumer_key, consumer_secret, scopes, access_token, refresh_token)
>>> status = api.update_status('投稿なう') >>> >>> # 上のつぶやきを削除します >>> api.delete_status(status['id'])
フォト付きでつぶやきを投稿するには、画像ファイルのファイルパス、または「http(s)://」で始まる URL を第2引数に渡します。
>>> api.update_status('フォト投稿なう', '/path/to/picture.jpg') >>> >>> # フォトだけの投稿も可能 >>> api.update_status(photo='/path/to/picture.jpg')
アクセストークン、リフレッシュトークンそれぞれに有効期限があります。アクセストークンの有効期限は約15分ですが、リフレッシュトークンが有効期限内は MixiGraphAPI オブジェクト内部で自動的に再取得(リフレッシュ)します。
リフレッシュトークンの有効期限は約6時間(ユーザ認可時に「常に同意する」のチェックを入れていれば約3ヶ月間)です。リフレッシュトークンが期限切れになった場合は、MixiGraphAPI オブジェクトの初期化処理が必要になります。つまり、再度ユーザ認可を行います。
>>> from strippers.mixi import ExpiredTokenError >>> >>> try: >>> api.update_status('リフレッシュトークン期限切れの場合') >>> except ExpiredTokenError: >>> auth_url = api.get_auth_url(device=DEVICE_PC) >>> # auth_url にアクセスしてユーザ認可処理...