TRASH-NEWS Opera9.5でニコニコ動画のキャッシュファイルを管理するスクリプト

順路
  1. ホーム
  2. 2008年
  3. 06月
  4. 15日
  5. この記事 [現在地]
Search?
お知らせ
ここ数日更新が滞っていますが…… (2008/04/13 13:31)
4月より社会人となったため、時間の作り方がいまいちつかめないため、不定期の更新となります。まぁ……ニコニコメーカーでもお楽しみください!
1 2 3

Opera9.5でニコニコ動画のキャッシュファイルを管理するスクリプト

TRASH-NEWSは
秋葉原によく出没するサイトです
初出時刻
2008年06月15日 01時41分 投稿
最終更新時刻
2008年06月15日 02時03分 改訂
  • この記事をはてブする
  • Yahoo!ブックマークに登録

3日連続Opera9.5記事。昨日のOpera9.5の感想+不具合記事でご紹介したby edvakf in hatenaさんで面白い記事を見つけました。こちら[ OperaでCacheを効果的に探す方法 ]。

Operaで動画を見ると、所定のフォルダ(例. ユーザーフォルダ\Local Settings\Application Data\Opera\Opera\profile\cache4\)にキャッシュファイルとしてどんどん保存されていきます。YouTubeニコニコ動画でもソレは同じこと。おかげで特別な保存用ソフトなどを使わなくてもキャッシュファイルをあされば動画を自分のPCに保存できるわけです(まぁ大抵のブラウザで同じことが出来ますが)。

ところがOpera9.5からはキャッシュファイルの扱いが変わってしまい、拡張子を削った名前にリネームされてキャッシュされるようになりました。一見しただけではどれが動画のキャッシュファイルかわからなくなってしまったのです。ファイルサイズの大きいものに当たりをつけて、拡張子をつけて再生を試みる……ああ、最近はmp4とflvの2種類あるからどっちの拡張しかわからない!

数万のキャッシュファイルがうごめくフォルダでそんな作業をするのは、はっきり言って超面倒。もっとこう、ニコニコのキャッシュっぽいものを手軽に見つけられないだろうか! そんな要望が起きることを予見してか、どこかのどなたかがOpera:cacheというOpera内蔵のキャッシュフォルダブラウザページ(?)にインクリメントサーチ機能をつけました。キャッシュと一緒に記録されている元URLに対して検索をかけられるようになったのです。どういうことかというと、"nicovideo.jp"というURLで取得したキャッシュファイルだけをピンポイントに表示できるようになったということ。これで当たりをつけやすくなった!

しかしまだ面倒なことには変わりません。どれがなんの動画かわからないし、管理も出来ない! そこで今回僕が作ったのが"ニコニコ動画の動画サーバーから落としたファイルだけを表示してサムネイルも表示させるOpera用スクリプト"。タイトルが長ェ!!

Opera9.5でニコニコ動画のキャッシュを管理しやすくするスクリプト

どういったものかといいますと、キャッシュファイルの元URLに"nicovideo.jp/smile?"(=動画が置いてあるサーバーのURL)を含むキャッシュファイルを抜き出し、そのURLに含まれるニコニコの動画IDを抽出、そのIDからサムネイルをニコニコ動画のサムネイルサーバーから呼び出して表示させる、てなところ。まぁ実際に使ってみたようすをスクリーンショットでアップしましたのでどうぞ。

以下がコード。なお大半の部分は先述のedvakfさんの手によるもの。こちらのリンク先で詳しい解説がなされていますので、まずはそちらをご覧あれ。

Opera9.5でニコニコ動画のキャッシュファイルを管理するスクリプト
<script type='text/javascript'> document.addEventListener('load', function() { for(var i=0; document.links[i]; i++){ document.links[i].target = '_blank'; }; var l = document.getElementsByTagName('tr'); var sf = document.createElement('input'); sf.type = 'text'; sf.defaultValue='検索'; sf.style='margin:0 4px;float:right;'; sf.addEventListener('focus', function(){ if(this.value==this.defaultValue){this.value=''} },false); sf.addEventListener('blur', function(){ if(!this.value){this.value=this.defaultValue} },false); sf.addEventListener('keyup', function(){ var v=this.value; for(var i=0, li; li=l[i]; i++){ var p=li.lastChild.firstChild.innerText; if(p && p.indexOf(v)==-1){ li.style='display: none' }else{ li.style='display: table-row' } } },false); var inp=document.createElement('input'); inp.type='button'; inp.value='サムネイル'; inp.style='float:right;'; inp.addEventListener('click', function(){ var b=/\.(jpe?g|bmp|gif|png|ico|swf|flv)$/i; var f=/\.(swf|flv)$/i; for(var i=0, li; li=l[i]; i++){ var p=li.lastChild.firstChild; var c=li.lastChild.firstChild.innerText; if(li.offsetHeight!=0 && p.childNodes.length<2){ if(b.test(c)){ var stl='float:right; border:1px dotted black; margin:1px; padding:1px;'; if(f.test(c)){ var dv=document.createElement('div'); p.appendChild(dv); dv.innerHTML='<EMBED src='+p.href+'>'; var fh=dv.firstChild; fh.setAttribute('height', 100); fh.setAttribute('width', 100); fh.setAttribute('style', stl+' content:normal; outline:none; color:inherit;') }else{ var image=document.createElement('img'); image.setAttribute('src',p.href); if(!image.height || image.height>100){ image.height='100' }; if(!image.width || image.width>100){ image.width='100' }; image.setAttribute('style', stl); p.appendChild(image) } } } } }, false); var th=document.getElementsByTagName('th')[2]; th.appendChild(inp); th.appendChild(sf); var Nico = document.createElement('input'); Nico.type='button'; Nico.value='ニコニコ抽出'; Nico.style='float:right;margin-right:6px;'; Nico.addEventListener('click', function(){ var v='nicovideo.jp/smile?'; for(var i=1, li, NicoA; li=l[i]; i++){ var p = li.lastChild.firstChild.innerText; if(p && p.indexOf(v)==-1){ li.style = 'display: none' }else{ li.style = 'display: table-row'; li.lastChild.firstChild.href.match(/(m|v)=([0-9]+)/img); if(RegExp.$1 == 'm'){ var VideoMIME = "video/mp4"; }else{ var VideoMIME = "video/x-flv"; } var Nico = RegExp.$2; var Video = 'file://localhost/C:/Documents%20and%20Settings/(ユーザー名)/Local%20Settings/Application%20Data/Opera/Opera/profile/cache4/' + li.firstChild.innerText; li.firstChild.innerHTML = '<a type="' + VideoMIME + '" href="' + Video + '"><img src="http://tn-skr.smilevideo.jp/smile?i=' + Nico + '" width="130" height="100"><br />sm' + Nico + ' (' + VideoMIME + ')</a>' } } }, false); th.appendChild(Nico); },false); </script>

太字部分が僕の追記した部分です。まぁほとんど流用させていただいたということですね!

このコードのなかに1箇所ある(ユーザー名)という部分をあなたのログインユーザー名(Windows的な意味で)に書き換え、改行を全部消したのちC:\Program Files\Opera\locale\ja\ja.lngの"-1713924769"のある部分に上書きしてください(文字コードはUTF-8で保存してください)。↓のような具合です。

C:\Program Files\Opera\locale\ja\ja.lng 890行目あたり
; Used as column titles in the generated cache list page, when the user has ; selected Windows/Special/Cache, or entered the URL opera:cache. -524571995="ファイル名" -299260835="アドレス" -1713924769="サイズ<script type='text/javascript'>document.addEventListener('load',function() {for(var i=0; document.links[i]; i++){document.links[i].target = '_blank';};var l = document.getElementsByTagName('tr');var sf = document.createElement('input');sf.type = 'text';sf.defaultValue='検索';sf.style='margin:0 4px;float:right;';sf.addEventListener('focus',function(){if(this.value==this.defaultValue){this.value=''}},false);sf.addEventListener('blur',function(){if(!this.value){this.value=this.defaultValue}},false);sf.addEventListener('keyup',function(){var v=this.value;for(var i=0, li; li=l[i]; i++){var p=li.lastChild.firstChild.innerText;if(p && p.indexOf(v)==-1){li.style='display: none'}else{li.style='display: table-row'}}},false);var inp=document.createElement('input');inp.type='button';inp.value='サムネイル';inp.style='float:right;';inp.addEventListener('click',function(){var b=/\.(jpe?g|bmp|gif|png|ico|swf|flv)$/i;var f=/\.(swf|flv)$/i;for(var i=0, li; li=l[i]; i++){var p=li.lastChild.firstChild;var c=li.lastChild.firstChild.innerText;if(li.offsetHeight!=0 && p.childNodes.length<2){if(b.test(c)){var stl='float:right; border:1px dotted black; margin:1px; padding:1px;';if(f.test(c)){var dv=document.createElement('div');p.appendChild(dv);dv.innerHTML='<EMBED src='+p.href+'>';var fh=dv.firstChild;fh.setAttribute('height', 100);fh.setAttribute('width', 100);fh.setAttribute('style', stl+' content:normal; outline:none; color:inherit;')}else{var image=document.createElement('img');image.setAttribute('src',p.href);if(!image.height || image.height>100){image.height='100'};if(!image.width || image.width>100){image.width='100'};image.setAttribute('style', stl);p.appendChild(image)}}}}}, false);var th=document.getElementsByTagName('th')[2];th.appendChild(inp);th.appendChild(sf);var Nico = document.createElement('input');Nico.type='button';Nico.value='ニコニコ抽出';Nico.style='float:right;margin-right:6px;';Nico.addEventListener('click',function(){var v='nicovideo.jp/smile?';for(var i=1, li, NicoA; li=l[i]; i++){var p = li.lastChild.firstChild.innerText;if(p && p.indexOf(v)==-1){li.style = 'display: none'}else{li.style = 'display: table-row';li.lastChild.firstChild.href.match(/(m|v)=([0-9]+)/img);if(RegExp.$1 == 'm'){var VideoMIME = "video/mp4";}else{var VideoMIME = "video/x-flv";}var Nico = RegExp.$2;var Video = 'file://localhost/C:/Documents%20and%20Settings/(ユーザー名)/Local%20Settings/Application%20Data/Opera/Opera/profile/cache4/' + li.firstChild.innerText;li.firstChild.innerHTML = '<a type="' + VideoMIME + '" href="' + Video + '"><img src="http://tn-skr.smilevideo.jp/smile?i=' + Nico + '" width="130" height="100"><br />sm' + Nico + ' (' + VideoMIME + ')</a>'}}}, false);th.appendChild(Nico);},false);</script>" ; 以上ここまで

ちなみにキャッシュフォルダに関してはopera:config#Cache Directory4でも確認可能です。保存後、Operaを再起動させ、opera:cacheにアクセスすると検索窓と共にニコニコ動画抽出ボタンがついているはずです。

ちなみにこのスクリプトの存在意義を根底から覆す問題をひとつ。

当然キャッシュフォルダに保存されている動画しか表示できないということ。

キャッシュフォルダの上限サイズを数100MB以上に設定しない限り、せいぜい5~10本しか動画を保存できませんからね。見る端からキャッシュファイルは上書きされていくわけで。動画を見たらopera:cacheにアクセスしてファイルを確認、みたいな使い方になってしまうこと必然です。結局面倒じゃん!

またサムネイルサーバー(http://tn-skr.smilevideo.jp/)に勝手にアクセスするのもお行儀悪いかも。うーん、そもそもこのスクリプトはOpera9.5ユーザー専用ですし、需要と使い道はかなり限られていますね。一生懸命作ったのに……。

明日以降、時間があればopera:historyからニコニコ動画のURLを抽出して履歴管理するプログラムについてご紹介します。こちらは半年くらい前に作って以来、我ながら超便利に使いまくっているので使い心地は抜群保障。ただしOperaユーザーxPHP実行環境必須ということでやはり需要はビミョウです。2つの条件を満たした全国100人くらいの方はどうぞお待ちください。

サイト内検索
検索する
このサイトについて
  • サイト名 : TRASH-NEWS
  • 分類 : ニュースとネタのサイト
  • ジャンル : 井戸端からアレゲまで
  • もっと詳しく見る
最近の記事
05月23日の記事
  1. ボタンひと押し即生成、『サークルカットジェネレータ』公開開始
04月01日の記事
  1. あの人気シリーズを作れる? 『テイルズオヴメーカー』本日公開
03月27日の記事
  1. 現在の4月のアレ進捗度30%!!
02月21日の記事
  1. 4月のアレで使う【中二なキャラクター】イラストをご提供ください
01月24日の記事
  1. サークル名ジェネレータを作ってみた
01月11日の記事
  1. 新作(※4月のアレではない)のスクリーンショット公開
01月01日の記事
  1. コミケ77(3日目)に行ってきた
12月31日の記事
  1. コミケ77、男は黙って8:00に出発
12月24日の記事
  1. FFXIIIの検索サイトを作ってみました
12月21日の記事
  1. FFXIIIの検索サイトを作ってみている
日刊人気記事ランキング
2010年11月21日のぶん
1
もうやめて下さい!! 泣いてる子もいるんですよ!!
38
2
マリオっぽい自作のゲーム改めしょぼんのアクション公開開始
28
3
FFT-A2のクリア後レビューと感想(ネタバレなし)
17
4
テイルズオブヴェスペリアの感想 【ストーリー・キャラクター編】
14
5
サークル名ジェネレータを作ってみた
12
6
Windows XP SP3インストールで不具合が起きることが発覚
11
7
ついうっかりマリオWiiとグレイセスとFFXIIIとDQVIを予約(以下略)
11
8
○○が可愛すぎて生きるのが辛い
10
9
“マリオっぽいもの”のステージを編集するエディタが公開
9
10
3Dの初音ミクを躍らせるフリーソフトMikuMikuDanceがスゴい
9

2010年11月22日 0時更新

人気記事ランキング

カテゴリ(折畳表示)
ニュース・ネタ
サブカテゴリを開く
俺研究舎
サブカテゴリを開く
お知らせ
サブカテゴリを開く
特集・企画
サブカテゴリを開く
管理人近況
サブカテゴリを開く
カスタムアーキテクチャ
1回めのようこそ!
ゲストさん
  • 文字の大きさ : 12px
  • フォント : MS Pゴシック
  • レイアウト : 3段組
  • カスタムする
カレンダー
2008年6月
«  05月 - 07月  »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          
管理人について
管理人 : 八満かシアン
理系になり損ねた文系人間(シアンのほう)
今頃たぶん聴いている曲
あっせんぶる☆LOVEさんぶる by fripSide NAO Project
月別アーカイブ
2008年
2007年
最近記事に掲載した画像
サークルカットジェネレータ、公開開始です!!
サークルカットジェネレータ、公開開始です!!
テイルズオヴメーカー偽記事の画像
テイルズオヴメーカー偽記事の画像
シガアレ作ってる、の図
シガアレ作ってる、の図
手描き初音ミク
手描き初音ミク
iPhoneっぽいUIを実際にiPhoneで表示してみて比較
iPhoneっぽいUIを実際にiPhoneで表示してみて比較
画像に関するリンク
ユーティリティ
RSSフィード
ソーシャルブックマーク
  • iGoogle
  • はてなアンテナにTRASH-NEWSを追加する TRASH-NEWSのはてなブックマーク数 この記事を含むはてなブックマーク
サイトプロフィール
Powered by
  • Movable Type 4.1 + [XHTML + CSS + JavaScript] + PHP
  • TRASH-NEWS / Hachiman_Cian 2007-
このページについて
題名
Opera9.5でニコニコ動画のキャッシュファイルを管理するスクリプト
内容
  • 3日連続Opera9.5記事。昨日のOpera9.5の感想+不具合記事でご紹介し
TRASH-NEWS ロゴ
TRASH-NEWS ロゴ
TRASH-NEWS : http://www.trash-news.net/