NicoGetFLV

ニコニコ動画から直接 flv/mp4 を取得する bookmarklet。他の人はどうやってるのかなーと思ったらなんか XPath 使ってたりするので、シンプルに XHR で API 叩いて出てきた URI をパースして location.href で。

このスクリプトを改行外して bookmarklet として登録し*1ニコニコ動画にログイン後ダウンロードしたい動画の再生ページでクリックすると保存するかどうかのメッセージが表示されます。あと Firefox でのみ確認済み。IE/Opera/Chrome etc は知らん。多分 XHR の宣言周辺を弄れば動くかと。

あと mp4 の再生を Quicktimeプラグインでするようになってると正常にダウンロードできないので、 Qt のプラグインはあらかじめ殺しておく機能しないようにしておくこと。

javascript: (function(){

 if (location.href.indexOf('nicovideo.jp') != -1) {
 
  if (typeof(Video) != 'undefined') {

   var xhr = null;

   if(window.XMLHttpRequest){
    xhr = new XMLHttpRequest();
    xhr.overrideMimeType('text/html');
   }

   if (xhr != null){
    var apiUrl = 'http://www.nicovideo.jp/api/getflv/' + Video.v;
    xhr.open('GET', apiUrl, true);
    xhr.onreadystatechange = function () {
     if (xhr.readyState == 4) {
      if (xhr.status == 200) { 
       var flv = unescape(xhr.responseText.split('=')[3]).split('&')[0];
       if (flv != 'undefined') {
        location.href = flv;
       }else{
        alert('ログアウトしていませんか?ログイン後再度動画ページを読み込み、リトライしてください。');
       }
      }
     }
    };

    xhr.send(null);
   }
  }

 }else{
  location.href = 'http://www.nicovideo.jp/';
 }

}

)()

これと ffmpeg を組み合わせれば iPod ライフで困ることは当面なさげ。どうぞご利用ください。

*1:はてなは http からじゃないと自動リンク機能しないのか。相変わらずクソ仕様だな。