ニコニコAPIを叩いてゲットした情報をjsonで返却するスクリプト
ニコニコのgetflv APIを叩いて情報ゲットして、クライアントにjson形式で返却するphpスクリプト作った。
「http://hogehoge.php?id=sm12345678」みたいに、GETで動画IDを指定して使います(sm****が動画id)。
クライアントに「スレッドID」と「コメントサーバURL」の情報を返します。
<?php //ニコニコAPIを叩いて、得た情報をjsonで返却するスクリプト header('Content-Type: text/javascript; charset=utf-8'); $thread_id = null; //動画id $ms = null; //コメントサーバのURL $data = array( "mail" => "hoge@hoge.com", // ニコニコ動画のログインメールアドレス "password" => "hogege" // ニコニコ動画のログインパスワード ); if(!empty($_GET['id']) && ctype_alnum($_GET['id'])){ $videoid = $_GET['id']; }else{ //不正な動画idが入っていたら空を返却して終了 $ret = array( "thread_id" => $thread_id, "ms" => $ms, ); $json_value = json_encode($ret); echo $json_value; return; } //cookie格納ファイルを動的に生成 $meta = stream_get_meta_data($fp = tmpfile()); // ニコニコ動画にログインする $ch = curl_init("https://secure.nicovideo.jp/secure/login?site=niconico"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_COOKIEJAR, $meta['uri']); // 受信したCookieを保存 curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_exec($ch); curl_close($ch); // getflv APIを使って動画情報を取得する $ch = curl_init("http://flapi.nicovideo.jp/api/getflv/" . $videoid); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, $meta['uri']); // $cookieFileに保存されたcookieを送信する $getflv = curl_exec($ch); fclose($fp); curl_close($ch); //getした情報を配列に格納 parse_str($getflv , $parse_result); //スレッドIDとコメントサーバURLを抽出 $thread_id = $parse_result["thread_id"]; $ms = $parse_result["ms"]; //json形式で返却 $ret = array( "thread_id" => $thread_id, "ms" => $ms, ); $json_value = json_encode($ret); echo $json_value; ?>
下記ページ参考にしました(感謝!)
・ニコニコ動画API: getflvとコメントの取得
http://blog.hitobashira.org/?eid=24
・PHPで一時的なファイルポインタを扱う方法
http://qiita.com/mpyw/items/f24d3764fe3eedf132ff