_X_y_z_のプログラム開発日記とか備忘録だとかCSSだとか。

主にプログラミング、備忘録、ウェブ。

NicoDownlodaが復活しました!

, ,

ニコニコ動画の動画をダウンロードするブックマークレット、NicoDownlodaが再び使えるようになりました。

スクリプトはこちらのページから :
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とキーを投げて見事動画情報が帰ってきます。めでたしめでたし。

たった一行でニコニコ動画を自動再生するユーザースクリプトgoo.glが一般公開されましたね

Comments

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

Anonymous writes: 初めまして。 これってブックマークから実行するんじゃなくて動画ページを開いたときにすでに実行されているようにはできないのでしょうか?

Write a comment

New comments have been disabled for this post.