ニコニコ動画の投稿者コメント取得に関する覚え書き
ニコニコ動画には、閲覧者がつけるコメント以外に、投稿者がつけるコメント(以下、投稿者コメント)があります。
旧来のNNDD2ではこの投稿者コメントを取得していなかったので取得しようと思いました。
参考にしたサイトはこちら。
投稿者コメントのダウンロード - こたつつきみかん
で、見てみたらなんて事はない!今まで閲覧者がつけるコメントを取得する際に利用していたAPIに対して投げていた内容に、
fork="1"
という内容を追加してやればいいだけらしい。
NNDD2のソースコードから引用。
/** * 投稿者コメントを取得するところ。 * @param getApiResultLoader ニコニコ動画のAPIにアクセスしたURLLoader * @return 投稿者コメント取得用APIにアクセスした(している)URLLoader * */ private function getOwnerComment(getApiResultLoader:URLLoader):URLLoader { trace(unescape(getApiResultLoader.data)); //APIから得られたデータの"thread_ID="にあるスレッドIDを探す var threadId:String = getApiResultLoader .data.substring(getApiResultLoader.data.indexOf("thread_ID=")+11, getApiResultLoader.data.indexOf("&")); //APIから得られたデータの"&ms="にあるURLを探す var commentURL:String = getApiResultLoader.data. substring(getApiResultLoader.data.indexOf("&ms=")+4, getApiResultLoader.data.indexOf("&", getApiResultLoader.data.indexOf("&ms")+1)); var getComment:URLRequest = new URLRequest(unescape(commentURL)); getComment.method = "POST"; getComment.requestHeaders = new Array( new URLRequestHeader("Content-Type", "text/html")); videoType = ".xml"; //ここがAPIにPOSTするXML。fork=1が追加されている。 var xml:String = "<thread res_from=\"-500\" fork=\"1\" version=\"20061206\" thread=\"" + threadId + "\" />"; getComment.data = xml; var loader:URLLoader = new URLLoader(); loader.dataFormat=URLLoaderDataFormat.TEXT; loader.addEventListener(Event.COMPLETE, ownerCommentLoadSuccess); loader.addEventListener(ProgressEvent.PROGRESS, progressHandler); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); loader.load(getComment); trace("投稿者xml取得開始"); return loader; }
上記のコードを実行後、COMPLETEイベント発生後にURLLoader.dataに格納されているデータをxmlとして保存すれば、投稿者コメントを取得できます。
その他、「スレッドIDはどうやって取得するのー?」みたいな質問は、
ActionScript3.0でニコニコ動画からコメントをダウンロードする。- MineAPの(開発)日記
を参考にしてください。
実際に再生するときは「これが投稿者コメントだ」って分かるようにした方がいいですよね・・・とりあえず色を付けるか、「[投稿者]」みたいなタグをコメントに付加するか。色つけるなら歌詞職人のすてきな歌詞を再現するところまでやってみたい。
プログラムの中身をかいたのは久々な気がする。今までリリースしました!とか直しました!とかそんなんばっかだったからなー。もっと技術技術していこう。