なげやりろぐ

フテイキコウシン

あの画像保存スクリプトもメンテとか

多分誰も使っていないであろう(笑)俺様仕様の例のアレにも少しだけ手を加えてみました。


以前のは画像の保存パスが決め打ち状態でSleipnirの設定フォルダ/ユーザー名以降にフォルダを作ってその中へ保存するようにしていましたが、あんまり親切じゃないかなとか思ったりしたのでXpやVistaなかたとかが保存先を変更出来るような一例と説明をちょこっと追記。*1
加えてちゃんと画像が保存されたかどうかをお知らせするようダイアログを数秒間出現させてみるなどしてみました。*2

試して見たい方はSeahorseスクリプトですしなんども同じ説明するのもアレなので前回のエントリーを参考に導入してみてくださいね。
・・・とか書いた後確認したらたいした説明していなかったし(笑)

※大事なことを忘れていたので追記

以前のSleipnirでは画像のドラッグでキャッシュが別タブで開くという動作がデフォだったので失念していました。
つまり最近のものは初期状態のままではこの挙動がなくなっていたんですね。ホントに忘れていました。*3
そのため、必須プラグインとしてSeahorseはもちろんですがSuperDrag Extensionの導入も必要です。
SuperDrag Extensionのオプション画面で、『画像のドロップを受け付ける(G)』にチェックが入っていないとこのスクリプトは動作しません。
気づくの遅くてごめんなさい…(´・ω・`)


下のほうにあるソースをテキストエディタへコピペして、適当なファイル名で拡張子をuser.jsで保存してSeahorseフォルダへ入れてやります。
あとはSeahorse再読込後に機能するようになるはず。
一応ファイルを固めて画像の下へリンクも張ってあります。


てことで保存の仕方ですが画像をクリックしたまま好きな方向へちょいとドラッグすると保存されます。画像保存が完了*4すると真ん中辺にメッセージが出ます。↓


あくまでも俺様仕様ですのでご利用はくれぐれも自己責任で。
SaveCacheImage.user.js(7z)

以下ソース
// ==UserScript==
// @name 画像をビューでD&Dしてキャッシュを開くと指定フォルダに保存しつつ余計なタブを閉じる。
// @description D&Dなどでキャッシュファイルを開いたときに、指定のフォルダにファイル名を日時へ変更してコピーしたのち開いた余計なタブを閉じます。
// @include *Temporary%20Internet%20Files*
// @type SleipnirScript 
// ==/UserScript==

// この設定の場合、Sleipnirインストールパス/settings/ユーザー名/以降にSaveCacheImagesというフォルダを作ってそこへ画像を保存
var saveto=sleipnir.UserFolder + 'SaveCacheImages\\';		// 保存先フォルダパス(末尾の「\」を含む)

//画像の保存先を変更したい場合は下の例を参考に
//上をコメントアウトして下を有効にした場合にはデスクトップへSaveCacheImagesフォルダを作ってそこへ保存するようになる
//var saveto='C:\\Users\\ユーザー名\\Desktop\\SaveCacheImages\\';	//このパスの記述はVista/2008Server/7の場合の一例
// var saveto='C:\\Documents and Settings\\ユーザー名\\デスクトップ\\SaveCacheImages\\';	//このパスの記述は2000/2003Server/XPの場合の一例

var fs = new ActiveXObject("Scripting.FileSystemObject");		// 出力フォルダがなければ作成する
    if (!fs.FolderExists(saveto)) {
        fs.CreateFolder(saveto);
}

var fp=decodeURI(_window.location).replace("file:///","").replace(/\//g,"\\");

var fso=new ActiveXObject("Scripting.FileSystemObject");
var fn=fso.GetFileName(fp);

var fntype = '\.' + fso.GetExtensionName(fn);				// ファイル名を取得日時へ書き換え
var nowdate = new Date();
//var ymd = (nowdate.getYear()).toString() + (nowdate.getMonth() + 1).toString() + (nowdate.getDate()).toString() + '-';	//
var hms = '[' + (nowdate.getHours()).toString() + '-' + (nowdate.getMinutes()).toString() + '-' + (nowdate.getSeconds()).toString() + ']';
//var fname = ymd + hms + fntype;
var fname = hms + fntype;

var savename=saveto+fname.replace(/\[\d+\](\.\w+)$/,"$1");		// ファイルを指定ディレクトリへ書き出し
fso.CopyFile(fp,savename);

var api=sleipnir.API;							// 開いてしまった余計なタブを閉じる
if(api){
	var c=api.GetCount();
	for(var i=0;i<c;i++){
		var id=api.GetDocumentID(i);
		if(api.GetWindowObject(id)==_window){
			api.Close(id);
			break;
		}
	}
// 画像を保存してタブを閉じた後にメッセージをビューの真ん中あたりへ出力(デフォルトでは3秒間)
PopupPanel("<style>body{background-color:#5a5f72}</style><div style=color:#fff;margin:15px 0 0 15px;font-size:14px>指定のフォルダへダウンロードできたとおもいますよ<br />多分ですけど・・・</div>", 200, 100, 3000);	//右端の数字の増減で表示時間調整
function PopupPanel(html, width, height, time){
 	var window;
 	var document;
	 if (window == null) {
  		document = API.GetDocumentObject(API.GetDocumentID(API.ActiveIndex));
  		window = API.GetWindowObject(API.GetDocumentID(API.ActiveIndex));
 	}
 
 	canvas = document[ "CSS1Compat" == document.compatMode ? "documentElement" : "body"];
	var ch = (canvas.clientHeight/2) - (height/2);
	var cw = (canvas.clientWidth/2) - (width/2);
	panelTop = window.screenTop + ch;
 	panelLeft = window.screenLeft + cw;
 
	 var opt = "dialogHeight:" + height + "px;"
	         + "dialogWidth:" + width + "px;"
	         + "dialogTop:"  + panelTop + "px;"
	         + "dialogLeft:" + panelLeft + "px;"
	         + "status:no;";
 
 	window.showModelessDialog("about:<body onload='setTimeout(\"close()\", " + time + ")'>" + html + "</body>", null, opt);
 	window.setTimeout("window.focus()", 100);
	}
}
追記2

某つぶやき処にてフォロワーの方から挙動不審な場合があるようだと指摘を受けました。*5

どうやらマルチスレッドがONになっている場合に時々固まっちゃうようなことがあるようです。
ワタシはStyleEditorとか使いたい口なのでtest版であってもマルチスレッドをOFFがデフォなので気づきませんでした・・・(汗
と、いうことで、現状ではマルチスレッドのオプションが存在しない2.9.2正式版か、もしくはtest版利用の際はマルチスレッドをOFFにした場合限定ということでご利用くださいね。

*1:デフォでは保存時のファイル名は画像の取得時間にしてありますので、マウス操作の加減では同じ画像がダブって保存されることもあるカモです。

*2:他で拾ったスクリプトの一部を活用させていただきましたw

*3:ユーザー歴の長い方ならご存じでしょうけど以前はビューの選択部分をCtrl+xで切り取ったりCtrl+vで挿入できたりしてたんです。

*4:というか正確にはスクリプトの処理が終わると。

*5:あとコッソリと恥ずかしいスペルミスを別な名前にしちゃってなかったことへと(汗。