PHPに惚れました

今でも多分惚れてます。

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を指定するだけでこのままコピペで実行出来ます。
結構汚いソースだと思うので気持ち悪いと思ったら各自改変して下さい。

ソースの使用は自己責任でお願いします。