getbgm - ニコ動のAPI

NNDD v1.10から使い始めたAPI、getbgmについてのメモ。

getbgm

閲覧中の動画ページで使用するBGMの情報を取得する。要するに、この動画に対応するユーザーニコ割はなに?という情報が返ってくる。
ただ、BGMという名前が示す通り、ユーザーニコ割以外も取得できるのかもしれない。(NNDDではユーザーニコ割を探す目的にしか使っていない)

使い方
http://www.nicovideo.jp/api/getbgm?v=&as3=1

にGETメソッドでアクセスする。
に指定するのは、getflvで取得したxmlに書かれているもの。(getflvの使い方は他に解説してるサイトがいくつかあるのでそちらを探してみてください。)
as3=1は、ActionScript3に変換済のSWFを取得するのかどうか、というフラグだと思われる。


getbgmにアクセスすると次のような内容のXMLが得られる。

<?xml version="1.0" encoding="utf-8"?>
<bgm_video status="ok">
	<bgm>
		<id>nm6847750</id>
		<bgm_type>cm</bgm_type>
		<video_id>nm6847750</video_id>
		<url>http://smile-pso52.nicovideo.jp/smile?s=6847750.43841as3</url>
		<length>62</length>
		<movie_type>swf</movie_type>
		<deleted>0</deleted>
		<private>0</private>
		<as3>1</as3>
	</bgm>
	<bgm>
		<id>nm6847754</id>
		<bgm_type>cm</bgm_type>
		<video_id>nm6847754</video_id>
		<url>http://smile-pso31.nicovideo.jp/smile?s=6847754.80038as3</url>
		<length>7</length>
		<movie_type>swf</movie_type>
		<deleted>0</deleted>
		<private>0</private>
		<as3>1</as3>
	</bgm>
</bgm_video>

以下、各タグの内容(推測)。

bgm全体。status="ok"の時はbgmが取得できた場合。bgmが取得できなかった(そもそもユーザーニコ割が指定されていない場合や、threadIdが正しくなかった場合等)は"ok"ではなく"fail"が入っている?(←自信が無い)

bgm一つを表す単位

ビデオID。http://www.nicovideo.jp/watch/ビデオID にアクセスするとニコ割だけが見れる。

BGMのタイプ。CMだとユーザーニコ割だと思ってよさそう。ほかのタイプがあるのかどうかは調べてない。

タグと同じ?将来的に同じものであり続けるかは不明。

動画そのもののURL。最後にas3ってついてるのとついてないのがある。
ニコ割のビデオIDに(http://www.nicovideo.jp/watch/nm0000みたいな感じで)アクセスしてgetflvの結果を見ると最後の"as3"がついてないのに、getbgmで得た結果のurlには"as3"がついている事がある。このときは"as3"がついてる方のurlに見に行かないとユーザーニコ割がダウンロードできない。

長さらしい。何の長さなのかは解らない。

削除されているかどうか。たぶん。1になってるのは見た事が無い。

よく解らない。

SWFがas3に変換済かどうか。
の末尾に"as3"ってついてないの場合は、が0になってるっぽい。


NNDDのソースだとmineap.a2n4as.ApiGetBgmAccessが該当する処理をしています。