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

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

ニコニコ動画(9) 動画ダウンロードJavaScript


2010/08/28追記: NicoDownlodaが新しくなりました

今のニコニコ動画(9)に対応した動画ダウンロードスクリプトを紹介します。というか、作りました。

ブックマークレットはこちらです。…はれません。リンクが無効化されてしまうとかOperaのリンクの中からとかになってしまいます…仕方ないのでyaxyzに孤立ページ作ります。…と、思いましたがやめました。yaxyzのtopに張ります。yaxyzOther Contentsにあります。サイドバーです。
こちらにあります。


右クリックでブックマークに保存するか、ツールバーにドラックしてみてください。ニコニコ動画の動画ページで使用すると以下のようにボタンとタイトルが代わって表示されます。ちなみにIEでは動きません。IE以外は動くと思います。
また、エラー処理を一切していません。ブックマークレット二回押すとばぐります。一回だけで大丈夫です。

JavaScriptは以下です。

var ad=location.href;
var idpos=ad.lastIndexOf("/")+1;
var id=ad.slice(idpos);
var movieid ="http://www.nicovideo.jp/api/getflv?v="+id
var HttpObj;
if(navigator.userAgent.indexOf("MSIE") != -1){
	HttpObj = new ActiveXObject("Microsoft.XMLHTTP");
	HttpObj.onreadystatechange = Func;
}else{
	HttpObj = new XMLHttpRequest();
	HttpObj.onload = Func;
}
HttpObj.open("GET",movieid,true);
HttpObj.send(null);
var moviead;
var input;
function Func(){
	var data=HttpObj.responseText;
	var urlpos=data.indexOf("url")+4;
	var linkpos=data.indexOf("link")-1;
	var encad=data.slice(urlpos,linkpos);
	moviead=decodeURIComponent(encad);
	var h1=document.getElementsByTagName("h1");
	var h1child=h1[0].childNodes;
	var movietitle=h1child[0].innerHTML;
	var dlbutton=document.createElement("input");
	input=document.createElement("input");
	h1[0].appendChild(input);
	input.type="text";
	input.value=movietitle;
	input.setAttribute("size",40);
	input.setAttribute("onclick","clickinput()");
	h1[0].appendChild(dlbutton);
	dlbutton.type="button";
	dlbutton.value="Download";
	dlbutton.setAttribute("onclick","clickdlbutton()");
	h1[0].removeChild(h1child[0]);
	input.select();
	input.style.fontSize=20;
	dlbutton.style.fontSize=20;
}
function clickdlbutton(){
	location.href=moviead
}
function clickinput(){
	input.select();
}

IE対応してそうな感じがしていますが、していません。挫折面倒になりました。誰か作りたいときは作ってみてもいいかと思います。

ajax使っています。ニコニコ動画のapiを使って動画元ファイルのアドレスを取得しています。詳しくは検索するのがいいかと。

著作権なしです。ご自由に転載なりなんなりしてください。元サイトを記名すると作者が喜びます。
ちなみに先ほどのブックマークレットリンクは以下のようにします:
<a href="javascript:(function(){str='';d=document;s=d.createElement('script');s.setAttribute('src','http://yaxyz.web.fc2.com/js/Downloader.js');d.documentElement.appendChild(s);}())">Downloader.js</a>

JavaScriptのアドレス指定部分は自分がアップしたjsなどを指定してください。yaxyz(管理人のサイトです)にリンクする場合は…そのままでいいです。明記すると喜びます。

今日はここまで。

FLVの構造MP3ExtFF 1.11

Comments

Unregistered user Monday, December 21, 2009 2:41:02 PM

echo writes: はじめまして。 Operaでニコニコ動画(9)用のスクリプトを探していてこちらのページに辿り着きました。 最初はブックマークレットとして利用しておりましたが、保存する機会が多いのでユーザーJSとして使わせていただいております。 正直、HTMLとCSSを少しかじった程度でスクリプトなど全く触った事がありませんでしたが、Operaヘルプや他の方のユーザーJSなどを参考にしてどうにか形にして組み込む事が出来ました。 タイトルのコピーが出来るので非常に便利ですね。 今後もありがたく使わせていただきます。 では、失礼します。

_X_y_z_Xyz-Special-DX Wednesday, December 23, 2009 4:25:30 AM

コメントありがとうございます。
ブログのリファラを見るとやはりニコニコ動画の仕様変更に伴ってか、9のダウンロードスクリプトを探している人が多いようです。
使ってもらえて光栄です。いつか自分もIE対応のスクリプトを作りたいものです。そんな難しいものではないはずですが…

Write a comment

New comments have been disabled for this post.