選択範囲の URL を抽出して外部アプリに送るスクリプト

説明

送られてきた文字列の中から URL を抽出して、それらを他のアプリに送るスクリプトです。Open Jane Doe 系の2ちゃんブラウザで使う事を想定して作りましたが、少し手を加えるだけで WEB ブラウザやテキストビューアなどでも使えると思います。一応、ttp:// にも対応してます。

これらは全て JScript なので、コピーして拡張子 js で保存して使ってください。

Open Jane Doe などで使う場合は、Jane の外部コマンドに、「選択範囲のURLを開く=wscript "D:\app\JaneView\vbs\selurl.js" "$TEXT"」みたいにして登録します。

基本形

if(WScript.Arguments.Count() == 0)
  WScript.Quit();
var arg = WScript.Arguments(0);
var r = arg.match(/s?ttps?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:@&=+$,%#]+/g);
if (r == null)
  WScript.Quit();
var s = "";
for(i=0;i<r.length;i++)
  s += " h" + r[i];
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.run('"D:\\app\\Sleipnir\\Sleipnir.exe"' + s);

これは Sleipnir など、複数の URL を引数として渡せるブラウザ用です。一番最後の行の所にブラウザのフルパスを入れます。ブラウザのフルパスは、\ を二重して書いてください。

Donut シリーズもこのスクリプトを使いますが、Donut シリーズは複数の URL を引数として渡せないので、mkdfg を使います。上記の SyleraOpen 用スクリプト最後の行の SyleraOpen のパスを mkdfg のパスに変えるだけです。

次は Sylera2SyleraOpen を導入してる人は上記のを使います。パスを SyleraOpen のパスにするだけ。Sylera2 を使ってるけど SyleraOpen を使ってなくて、わざわざこの為だけに SyleraOpen を導入するのがめんどくさい人は、下記のスクリプトを使ってください。

Sylera 用

if(WScript.Arguments.Count() == 0)
  WScript.Quit();
var arg = WScript.Arguments(0);
var r = arg.match(/s?ttps?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:@&=+$,%#]+/g);
if (r == null)
  WScript.Quit();
var s = "";
for(i=0;i<r.length;i++)
  s += "h" + r[i] + "\r\n";
var fso = new ActiveXObject( "Scripting.FileSystemObject" );
var tmp = fso.GetSpecialFolder( 2 ).Path + "\\";
var urls = tmp + "selurl.urls";
var f = fso.CreateTextFile( urls, true );
f.Write(s);
f.Close();
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.run('"D:\\app\\sylera2\\sylera2.exe" ' + urls);

temp フォルダに抽出した URL を羅列した urls ファイル(URL リストファイル)を作り、それを Sylera に渡してます。

Firefox 用

if(WScript.Arguments.Count() == 0)
  WScript.Quit();
var arg = WScript.Arguments(0);
var r = arg.match(/s?ttps?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:@&=+$,%#]+/g);
if (r == null)
  WScript.Quit();
var s = "";
for(i=0;i<r.length;i++)
  s += "\"h" + r[i] + "\"\|";
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.run('"C:\\Program Files\\Mozilla Firefox\\firefox.exe"' + " " + s);

これはちょっと自身薄です。改造版 ShellOpen の方法をやってるんだけど、今試してみたら Firefox が起動してるとうまくいかない。あれ、と思って WWWC から改造版 ShellOpen を使ってみたら同じ症状。以前はうまくいってたはずなので、いつの間にか Firefox のプロファイルがおかしくなったのかな? 拡張によるのかな? という事で、このスクリプトでうまくいった方は一報いただけると嬉しいです。

Irvine 用

if(WScript.Arguments.Count() == 0)
  WScript.Quit();
var arg = WScript.Arguments(0);
var r = arg.match(/s?ttps?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:@&=+$,%#]+/g);
if (r == null)
  WScript.Quit();
var s = "";
for(i=0;i<r.length;i++)
  s += "h" + r[i] + "\r\n";

var irvine = WScript.CreateObject("Irvine.Api");
irvine.AddUrl(s,1);

Irvine で選択範囲をダウンロードです。

応用

画像へのリンクに特定してみましょう。

各スクリプト4行目の var r = arg.match(/s?ttps?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:@&=+$,%#]+/g);var r = arg.match(/s?ttps?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:@&=+$,%#]+?\.(jp(e|)g|gif|png)/g); に変えるだけで OK です。