PHPでニコニコ動画の動画URLを取得する。
ライブラリなどを使用して取得しているソースを公開してる方もいますが、
こちらはPHPだけで動画URLを取得します。
PHPからニコニコ動画にログインし、動画の在り処のURLを取得するクラス。
<?php $mail=""; //ニコニコのメールアドレス $passwd=""; //ニコニコのパスワード $mov_id=""; //動画ID sm500873など Class nico_login{ var $user_session; //ユーザーセッションを格納 var $res_arr; //ログイン時のレスポンスを格納 function __construct($mail,$passwd){ //コンストラクタ $url = "https://secure.nicovideo.jp/secure/login?site=niconico"; $data = array("next_url" => '',"mail" => $mail,"password" => $passwd,"submit" => "",); //POSTの設定 $data = http_build_query($data); $option = array('http' => array('method' => 'POST','content' => $data)); $context = stream_context_create($option); //contextの作成 $fp = @fopen($url, 'rb', false, $context); //streamを開く $response = @stream_get_meta_data($fp); //streamからmetaデータの取得 preg_match('(user_session=[a-z0-9_]+)',$response[wrapper_data][8],$a); $this->res_arr=$response; $this->user_session=$a[0]; } function get_video_url($video_id){ $context = stream_context_create(array('http'=>array('method'=>'POST','header'=>"Content-type: text/xml\r\nCookie:".$this->user_session.";"))); $res = split("&",urldecode(file_get_contents('http://www.nicovideo.jp/api/getflv?v='.$video_id,false,$context))); $res[2] = ereg_replace('url=(.*)','\1',$res[2]); return $res[2]; } } $login = new nico_login($mail,$passwd); //レスポンスを表示ここから print"<pre>"; print_r($login->res_arr); print"</pre>"; //レスポンスを表示ここまで //URL表示 print $login->get_video_url($mov_id); ?>
結構前に書いたものなのでかなり雑ですが・・・
このソースはクラスをnewする度に毎回ログインします。
ユーザーセッションは一度取得すれば、
再ログインし、新しいユーザーセッションが再発行されるまで使いまわし可能。
URL表示の際、URL最後に「low」とあればそれはエコノミー画質。
無ければ通常画質です。
とりあえずメアド、パス、動画IDを指定するだけでこのままコピペで実行出来ます。
結構汚いソースだと思うので気持ち悪いと思ったら各自改変して下さい。
ソースの使用は自己責任でお願いします。