NicoDownlodaが復活しました!
Tuesday, August 24, 2010 10:56:38 AM
スクリプトはこちらのページから :
NicoDownloda - Parheliacal.net
詳しい説明はページから。今現在見た人はまだ雑ですがどんどん作っていくつもりです。
作るまでのどうでもいい話
以前のスクリプトはapiのドメインがwwwから転送されてしまったため、jsだけでは動作不可能でした。
「ならサーバーサイドでも使ってAPIを叩けばいいじゃないか!」というのはもっともなんですが…
http://flapi.nicovideo.jp/api/getflv/sm9
みたいに叩けばいいのですが、これにはログインが必要で…面倒なのでやめました。
今回使った動画URLの取得方法はこのAPIを叩かずに持ち出しています。回りくどい方法なのですが…
外部再生のスクリプトってありますよね?あれを調べてたら偶然発見しました。
<script type="text/javascript" src="http://ext.nicovideo.jp/thumb_watch/sm7768965"></script> <noscript><a href="http://www.nicovideo.jp/watch/sm7768965">【ニコニコ動画】東方ヴォーカルArrange ~ 月のモトに耀 - アカル - ~</a></noscript>
例えばこのコードですが。
このコードに何かないだろうか…と眺めているとthumbPlayKeyというのが書かれているではありませんか。
これはなんだろうと調べたところ以下のブログがつくり直すきっかけとなりました。
poChiの日記様のサイトにて、見ると、
GET /thumb_watch/sm2323034/[thumbPlayKey] HTTP/1.1
Host: www.nicovideo.jp
ていうふうにRequestを投げると.
flvのURLなどなどの情報が手に入る.
と、書かれているではありませんか。つまり、先程のAPIっぽいのに、動画IDとこのキーを返せば、
あのログインが必要なAPIと同じ戻り値が来るのです。
後は前回のスクリプトと同じですが、やはり別ドメインなのには変わりがないので(動画ページはwwwだがAPIはext)、phpでAPIを叩いています。
キーの取得は無理やりですが…read.php:
$key = trim($result[217]);
突っ込んだら負けですね。
echo "playKey = {".$key."};";
として、jsとして吐かせると、見事jsから見たら連想配列!という、なんとまあ、無理やりな方法をやっちゃってます。
んで連想配列で見事jsにもキーが届いたので、後はdownload.phpに先程のAPIに今度は動画IDとキーを投げて見事動画情報が帰ってきます。めでたしめでたし。















Unregistered user # Tuesday, March 29, 2011 5:47:49 PM