■戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 最新50  

スクリプト

1 名前:n|a:09/09/04 23:22:04 ID:VS4gSd2S
スクリプトに関する話題なら何でも

ttp://v2c.s50.xrea.com/manual/script.html

2 名前:VIICさん:09/09/05 05:35:37 ID:JE02N7nd
選択したURLがはてなブックマークに登録されていれば、登録ユーザー数と「ブックマークしているユーザー」を表示。1.0.6_08で動作確認。
外部コマンド→一般→リンクに登録してリンクを右クリックから実行も可。複数リンクが対象の場合は不可。

function gethatebu(bh) {

  ss=" ";
  if (v2c.context.selText){
    ss = v2c.context.selText;
  }
  if (v2c.context.link){
    ss = v2c.context.link;
    ss=ss.toString();
  }

  if (ss) {ss = ss.trim();}

  if (!ss) {
    v2c.alert("選択テキストを取得できませんでした。");
    return;
  }
  var baseuri = "http://b.hatena.ne.jp/entry/";
  var pbaseuri = "http://b.hatena.ne.jp/";
  ss=fixuri(ss);
  ss=ss.slice(7);
  var su = baseuri+ss;
  var sh = v2c.readURL(su);
  if (!sh) {
    v2c.alert("ページを取得できませんでした。");
    return;
  }
  var title = sh.match(/<title>はてなブックマーク - 未ブックマークエントリー<\/title>/i);
  if (title) {
    v2c.alert("このページはまだブックマークされていません。");
    v2c.context.setPopupHTML('<html><head></head><body><div><a href=\"'+su+'\">はてなブックマーク - 未ブックマークエントリー</a></div></body></html>');
    return;
  }
  var mr = sh.match(/<li\sclass=\"users\">(?:<strong>|<em>|)(<a[^>]+>.+?<\/a>)/i);
  if (!mr) {
    v2c.alert("ユーザー数を抽出できませんでした。");
    v2c.context.setPopupHTML('<html><head></head><body><div><a href=\"'+su+'\">ページへのリンク</a></div></body></html>');
    return;
  }
  var numofusers = RegExp.$1;
3 名前:2の続き:09/09/05 05:40:33 ID:JE02N7nd
  //ブックマークしているユーザーの抽出
  var bul=sh.match(/<ul\sid=\"bookmarked_user\"[^>]+>(?:[\s\S]*?)<script(?:[\s\S]*?)<\/script>([\s\S]*?)<\/ul>/i);
  if (!bul) {
    v2c.alert("ブックマークしているユーザーを抽出できませんでした。");
    v2c.context.setPopupHTML('<html><head></head><body><div><a href=\"'+su+'\">ページへのリンク</a></div></body></html>');
    return;
  }
  var bmuser=RegExp.$1;

  //gifを表示するとCPU利用率が100%になったままになるのでimg要素を削除

  bmuser=bmuser.replace(/<img[^>]+?>/g," ");

  if (bh) {

    v2c.context.setPopupHTML("<html><head><base href=\""+pbaseuri+"\"></head>
<body><div>"+numofusers+"<ul>"+bmuser+"</ul>"+"</div></body></html>");
  } else {
    v2c.context.setPopupHTML("<html><head><base href=\""+pbaseuri+"\"></head><body>"+numofusers+"</body></html>");
  }
}

function fixuri(txt){

  var ptn=/\:\/\//i;
  var idx=txt.search(ptn);
  var turi=txt.slice(idx);
  var uri="http"+turi;
  return uri;
}

/*

引数がtrueならユーザー数と「ブックマークしているユーザー」(=<ul id="bookmarked_user"から</ul>まで)も表示。
falseならユーザー数のみ。
*/
gethatebu(true);

ここまで。長さ制限に引っかかったので一部の行を分割しました。

「pbaseuri+"\"></head>」と「<body><div>"」の間の改行を消してください。
4 名前:n|a:09/09/05 22:40:54 ID:KmqS4UlJ
次回更新では v2c.context.resNum(レス番号)を廃止して、
v2c.context.res でレスオブジェクトを取得、
res.number, res.name, res.mail, 等でレスに関する情報を取得できるようにします。

>>2,3

一行の文字数を変更しようとしたのですが、設定項目自体存在しませんでした…。
5 名前:VIICさん:09/09/06 21:33:08 ID:wR9iIsT6
ポップアップ文の先頭がリンク付きでテキスト外(左側の空きスペース)とかで
クリックすると閉じずにリンク先に飛ぶみたい。ステータスバーはリンクの表示なし。書式のせい?
(例えばwikipedia.jsで「テキスト」をポップアップしたときの「ラテン語」のリンク)

少しwikipedia.jsをJavaScript初心者なりに改造(下)してみたけど。

多人数の編集ページだけにきりないな。あとは得意な人に任せます。

//以上略

  if (!sh) {
    v2c.alert('ページを取得できませんでした。');
    return;
  }
  var tt = sh.match(new RegExp('ing">([^]+?)</h1>','i'));//(転送であれば転送先の)キーワード抽出
  var mt = tt[1];
  var ml = sh.match(new RegExp('Category:(曖昧さ回避)'));//曖昧さ回避のタグ有無
  if (ml) {
    var mr = sh.match(new RegExp('<p><b>'+mt+'[^]+?(<ul>\n<li>[^]+</ul>)\n<(p|div)[^]+NewPP','i'));//リスト表示抽出(適当)
    if (!mr) {
      v2c.alert(mt+'のリストを抽出できませんでした。');
      return;
    }
    var sr = mr[1];
    sr = sr.replace(/<p>[.]+?関連項目[^]+/g,'');//関連項目リスト削除
    sr = sr.replace(/<h[1-6][^]+?\/h[1-6]>/g,'');//<h2>~</h2>など削除
    sr = sr.replace(/<div[^]+\/div>/g,'');//<div>~</div>削除
    sr = sr.replace(/<p[^]+?\/p>/g,'');//<P>~</P>削除
  } else {
    var mr = sh.match(new RegExp('<p>(『<b>'+mt+'[^]+?)</p>','i'));//各種タイトルにつく「『』」付き抽出
    if (!mr) {
      mr = sh.match(new RegExp('<p>(<b>'+mt+'[^]+?)</p>','i'));//通常抽出
      if (!mr) {
        v2c.alert(mt+'の説明を抽出できませんでした。');
        return;
      }
    }
    var sr = mr[1];
    sr = sr.replace(/<sup[^]+?\/sup>/g,'');//参照リンク削除
  }
  if (bh) {
//以下略
6 名前:2の続き:09/09/07 10:22:51 ID:wpURQIt1
ポップアップにスタイルシートを適用できないか試していますが、どこかにドキュメントがあるのでしょうか。
全く反映されなかったり、テキスト表示部分が真っ黒になったり、反映されたりとまちまちです。
JDICはインストールしていません。

function styletest(n) {

  var txt="aaaa";
switch(n){
  case 0://デフォルト
    v2c.context.setPopupHTML('<html><head></head><body><p>'+txt+"</p></body></html>");
  break;
  case 1://反映されない
    v2c.context.setPopupHTML('<html><head></head><body><p style="outline: double 20px #ff0000; ">'+txt+"</p></body></html>");
  break;
  case 2://反映される
    v2c.context.setPopupHTML('<html><head></head><body><p style="font-size: 2em; ">'+txt+"</p></body></html>");
  break;
  case 3://テキスト表示部分が真っ黒になる
    v2c.context.setPopupHTML('<html><head></head><body><p style="font-style:italic; ">'+txt+"</p></body></html>");
  break;
}
}
//実行したい文を引数で指定
styletest(2);
7 名前:VIICさん:09/09/07 10:23:36 ID:wpURQIt1
すみません、名前欄が残っていました。
8 名前:n|a:09/09/07 22:55:45 ID:emwU31QU
setPopupHTMLで設定したHTMLの表示にはSwingのHTML表示コンポーネント(JEditorPane)
を使っているのですが、下の>5,6への回答にも書いたように
・環境による動作の違い(本来あまり違いは出ないはずですが。)
・CSSへの対応状況
等で問題があるようですね…。

>>5

こちらのUbuntuではリンクの途中で改行されると2行目の左側にもリンクの前半領域が
存在するような動作で、
何も無いように見える領域でもマウスポインタが変化し、ステータスバーにURLが表示されます。
Windows Vistaではこのようなことはありませんでした。
Wikipediaポップアップで曖昧さ回避に対応するとかなり実用的になりますね。
使用法の例を改善する際の参考にさせてもらいます。
>>6
スタイルシートへの対応状況がわかるのは
ttp://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/text/html/CSS.html
くらいでしょうか。
こちらではstyletestのcase 3はUbuntu,Vista共に正常にイタリックで表示されました。
改善される可能性は低いと思いますが問題回避設定の
「DirectDraw及びDirect3Dを使用しない」を試してみてください。
9 名前:5:09/09/08 01:56:40 ID:9eB8qsuo
>>8
文字数まとめること考えてて環境書いてなかったですね。乙です。

【V2C】 H20090907 [1.0.6_09] (L-0.5)

【Java】 1.6.0_15-b03 (Sun Microsystems Inc.)
【OS】 Windows Vista 6.0 (x86)

使い道が低いと思って要望しなかった自分用スクリプトを下に


//「現在からこのレスが何日前のレスか計算表示」
//*<BR>前の改行を消すと使えるはず。

function createPopupString(bh) {

//現在の日時
  var pd = new Date();
  var py = pd.getFullYear();
  var po = pd.getMonth()+1;
  var pa = pd.getDay();
  var ph = pd.getHours();
  var pm = pd.getMinutes();
  var ps = pd.getSeconds();

//二桁を維持

  if (po < 10) { po = "0" + po; }
  if (pa < 10) { pa = "0" + pa; }
  if (ph < 10) { ph = "0" + ph; }
  if (pm < 10) { pm = "0" + pm; }
  if (ps < 10) { ps = "0" + ps; }

//ミリ秒単位で計算

  var nd = pd.getTime();
  var rd = v2c.context.res.time;
  var rr = nd - rd
  var rema = rr % 86400000;
  var day = (rr - rema) / 86400000;
  var remh = rema % 3600000;
  var hour = (rema - remh) / 3600000;
  var remo = remh % 60000;
  var mint = (remh - remo) / 60000;
  var msec = remo % 1000;
  var sec = (remo - msec) / 1000;
  if (bh) {
  v2c.context.setPopupHTML('<HTML><BODY style="color:green"><center>現在の日付['+py+'/'+po+'/'+pa+'] 時刻['+ph+':'+pm+':'+ps+']
<BR>これは'+day+'日と'+hour+'時間'+mint+'分'+sec+'秒前のレスです。</center></BODY></HTML>');
  }
}
createPopupString(true);
10 名前:VIICさん:09/09/08 05:26:16 ID:1oqAtFgB
>>6に書かれている実行結果は以下の環境でのものでした。書きそびれてすみません。
【V2C】 1.0.6_08 [R20090904] (L-0.5)
【Java】 1.6.0_16-b01 (Sun Microsystems Inc.)
【OS】 Windows 2000 (x86)

「DirectDraw及びDirect3Dを使用しない」をオンにすることでイタリックで表示することが出来ました。

また、以前は以下のようなマージンを使ったものもcase 3と同じ様に
テキスト表示部分が真っ黒になっていましたが、スタイルシートが反映されるようになりました。
v2c.context.setPopupHTML('<html><head></head><body><p style="margin: 10px; ">'+txt+"</p></body></html>");
11 名前:10:09/09/08 05:50:18 ID:1oqAtFgB
同じ環境でV2C_H20090907.jarを使用したところ「DirectDraw及びDirect3Dを使用しない」がオフでも
イタリックでの表示やマージンの使用も出来ました。
12 名前:n|a:09/09/09 00:00:21 ID:wRJ0w56X
>>9
Javaのオブジェクトを使うと
new java.text.SimpleDateFormat("現在の日付[yyyy/MM/dd] 時刻[HH:mm:ss]").format(pd);
のように簡単に時刻を文字列に変換できます。
Javaに馴染みがない方がJava標準APIの樹海を彷徨うのはあまりお勧めできませんが、
SimpleDateFormatは比較的簡単に使えるものの1つではないかと思います。
参考: ttp://java.sun.com/javase/ja/6/docs/ja/api/java/text/SimpleDateFormat.html
>>11
特に思いあたるような変更はしていないので、
微妙なタイミングが関係しているのかもしれません。
13 名前:9:09/09/09 22:07:40 ID:M6ljBOco
>>12
ありがとうございます。なるほど>9はこれでいいのか。
「ミリ秒単位で計算」は同じ、改行して貼る必要もなかったか。

//「現在からこのレスが何日前のレスか計算表示」

function createPopupString(bh) {
//現在の日時
  var pd = new Date();
  var jpd = java.text.SimpleDateFormat("現在の日付[yyyy/MM/dd] 時刻[HH:mm:ss]").format(pd);

//ミリ秒単位で計算

  var nd = pd.getTime();
  var rd = v2c.context.res.time;
  var rr = nd - rd
  var rema = rr % 86400000;
  var day = (rr - rema) / 86400000;
  var remh = rema % 3600000;
  var hour = (rema - remh) / 3600000;
  var remo = remh % 60000;
  var mint = (remh - remo) / 60000;
  var msec = remo % 1000;
  var sec = (remo - msec) / 1000;

  var rda = "これは"+day+"日と"+hour+"時間"+mint+"分"+sec+"秒前のレスです。";

  if (bh) {
  v2c.context.setPopupHTML('<HTML><BODY style="color:green"><center>'+jpd+'<BR>'+rda+'</center></BODY></HTML>');
  }
}
createPopupString(true);

目的なしに樹海に入るの怖いのでさわりだけやってみたけど


importClass(Packages.javax.swing.JFrame);
var f = new JFrame();
//f.setAlwaysOnTop(true);
f.setSize(200, 100);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.title = "Hello";
f.visible = true;

コメントアウト解除でエラーということは

ウィンドウとかダイアログの前面表示とかはまずいか、そもそもimportとかやらんほうがいいのか
ポップアップで閉じるボタンとか透明化とかできそうならポップアップだけでもいい気がするけど
重くない程度に動くデジタル時計できないかなとか思ったので。
14 名前:VIICさん:09/09/09 22:18:58 ID:M6ljBOco
すみません最後は後付けです。
ガジェット時計でいいじゃんとかいわれそうなので…今のとこなんの目的もないですごめんなさい。
15 名前:n|a:09/09/09 23:19:40 ID:wRJ0w56X
選択テキストをYahoo!辞書で検索、ポップアップするスクリプトです。
念のため使用法を書いておきます。
1) V2C保存用フォルダに"script"フォルダを作成する。
2) メモ帳等のエディタでスクリプトを"script"フォルダの"ydic.js"に保存する。
  (文字コードはUTF-8)
3) 外部コマンド設定ダイアログ「一般」タブで選択テキストコマンドに
  $SCRIPT ydic.js
  を設定する。(上の行の先頭の全角空白は削除してください。)
4) レス表示欄で調べたい文字列を選択してポップアップメニューから3)で設定したコマンドを選択する。

外部コマンドの登録を

$SCRIPT ydic.js 1
とすると英和辞典を検索します。(3:和英、5:類語)

// 次の行から下をUTF-8で"ydic.js"に保存する。

function createPopupString() {
var vcx = v2c.context;
var ss = vcx.selText;
if (ss) {
ss = ss.trim();
}
if (!ss||(ss.length()==0)) {
v2c.alert('検索語を取得できませんでした。');
return;
}
var args = vcx.args;
var id = (args.length>0)?args[0]:'0';
var sh = v2c.readURL('http://dic.yahoo.co.jp/dsearch?enc=UTF-8&p='+
encodeURIComponent(ss)+'&stype=1&dtype='+id);
if (!sh) {
v2c.alert('ページを取得できませんでした。');
return;
}
var mr = sh.match(new RegExp('<!--詳細 Title-->([^]*?)<!--/詳細 Title-->'+
'[^]*?<!--詳細-->([^]*?)<!--/詳細-->','i'));
if (!mr) {
v2c.alert('説明を抽出できませんでした。');
return;
}
var mr2 = mr[2].replace(new RegExp('="0"">','g'),'="0">');
vcx.setPopupHTML('<html><body>'+mr[1]+mr2+'</body></html>');
}

createPopupString();

16 名前:n|a:09/09/09 23:22:00 ID:wRJ0w56X
>>13
setAlwaysOnTopがエラーになるのはスクリプトがSandBoxの中で実行されているためで、
現在${SCRIPT:A}でもAWT(ウィンドウシステム)関連のパーミッションの必要な
動作を実行することはできません。
これは$SCRIPTのパーミッション設定を拡張してAWT関連を追加すればいいのですが、
ウィンドウシステム関連のコードは
「『原則として』EventDispatchThreadで実行しなければならない」
(スクリプトはそれ自身の独立したThreadで実行されている)
という点にも注意する必要があります。
17 名前:VIICさん:09/09/10 19:13:42 ID:QIWms1bg
https://developer.mozilla.org/ja/Rhino_Overview
を見たところRhinoは「JavaScript 1.6 のすべての機能 」を含んでいると書いてありますが
1.6で追加されたとされるindexOfメソッド
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Global_Objects/Array/indexOf
を使用すると「sun.org.mozilla.javascript.internal.EcmaError:
TypeError:Cannot find function indexOf. (<Unknown Source>#2)」と言うエラーが出ます。

実行したスクリプトは以下の通りです。

var array = [2, 5, 9];
var index = array.indexOf(2);
// index is 0
v2c.alert(index);
var index = array.indexOf(7);
// index is -1
v2c.alert(index);

以下の環境で確認しました

【V2C】 1.0.6_11 [T20090909] (L-0.5)
【Java】 1.6.0_16-b01 (Sun Microsystems Inc.)
【OS】 Windows 2000 (x86)
18 名前:n|a:09/09/10 23:08:36 ID:BTwFlNYH
>>13
かなり大雑把ですが、AWTのパーミッションを変更せずに実現しようとすると
下のような感じになると思います。
(ポップアップウィンドウをクリックすると閉じます。)
EventDispatchThreadをブロックしてしまうとV2Cも固まってしまうので注意してください。
>>17
すみません、私もあまりよく把握していませんでした。
JRE6で使えるのは Rhino 1.6R2 で、
この"1.6"は JavaScript 1.6 の"1.6"とは関係無いようです…。
(ttps://developer.mozilla.org/en/Rhino_downloads_archive)

// ----- clock.js -----

var jw,jl,tm;
var df = new java.text.SimpleDateFormat(" HH:mm:ss ");

var al = new java.awt.event.ActionListener() {

actionPerformed: function(e) {
if (jw.isVisible()) {
jl.setText(df.format(new Date()));
tm.start();
}
}
};

var ml = new java.awt.event.MouseListener() {

mouseClicked: function(e) {
jw.setVisible(false);
},
mousePressed: function(e) {}, mouseReleased: function(e) {},
mouseEntered: function(e) {}, mouseExited: function(e) {}
};

var rc = new java.lang.Runnable() {

run: function() {
jw = new javax.swing.JWindow();
jl = new javax.swing.JLabel(" 00:00:00 ");
jl.setFont(jl.getFont().deriveFont(java.awt.Font.PLAIN,24));
jl.addMouseListener(ml);
jw.add(jl);
jw.pack();
jw.setLocation(100,100);
jw.setVisible(true);
tm = new javax.swing.Timer(1000,al);
tm.setRepeats(false);
tm.start();
}
};

javax.swing.SwingUtilities.invokeLater(rc);

19 名前:13:09/09/11 18:25:21 ID:ujDHd7qe
>>18
まさか作って頂けるとは思わんかった。ありがとうございます。
理解がまったく追いついてないのですが今のとこ自分でいじれそうな部分として
  jw.setLocation(100,100);
で表示位置を変えて実況とかで使ってみてます。

  jl = new javax.swing.JLabel("<html> 00:00:00 <br><center><font size=3>新着レス:0000</font></center></html>");

みたいにしてデフォルトのポップアップの大きさが決まって
  var df = new java.text.SimpleDateFormat("HH:mm:ss");
  var cf = new java.text.DecimalFormat("0000");//追加
  (略)
  ncf = v2c.context.thread.newResCount;//追加
  jl.setText("<html> "+df.format(new Date())+" <br><center><font size=3>新着レス:"+cf.format(ncf)+"</font></center></html>");
で更新後、新着レス数が変わるとかできるのはわかった。

スレ速度表示させたりとかも可能なのかも。

で他のポップアップとかで背面に行ってしまうのが>16ということか。
スレが変わると新着レスが更新されないというのは書き方の問題?

あと実行情報の表示スクリプト例の10行目が「apppend」でpが一個多いです。

20 名前:VIICさん:09/09/11 19:10:03 ID:ujDHd7qe
そっか自動更新と組み合わせて特定のスレの新着が来たらお知らせのポップアップとか応用は利くのかもしれん。
21 名前:n|a:09/09/11 23:28:13 ID:7FbgOHnj
>>19
次のレスのスクリプトはウィンドウにJDialogを使用した例です。
V2Cの更新チェックの対象になっていない人柱版
H20090911 ttp://v2c.s50.xrea.com/V2C_H20090911.jar
を使って、外部コマンドを
${SCRIPT:Ttw} clock.js
と設定してください。
${SCRIPT:Ttw}の'T'はAWT関連のパーミッションで、
t … setAlwaysOnTopを許可
w … スクリプトが表示したウィンドウの右側に'!'マークを表示しない
スクリプトで取得可能な追加の情報は:
v2c.resPane … レス表示ペインオブジェクト
resPane.selectedThread … 選択されたレス表示タブのスレッドオブジェクト
thread.speed … スレッドの1日当りのレス数

(JLabelの3段重ねはただの手抜きです…。)

22 名前:n|a:09/09/11 23:29:18 ID:7FbgOHnj
var jd,jl,jls,jlt,tm;
var df = new java.text.SimpleDateFormat(" HH:mm:ss ");

var al = new java.awt.event.ActionListener() {

actionPerformed: function(e) {
if (jd.isVisible()) {
jl.setText(df.format(new Date()));
var thc = v2c.resPane.selectedThread;
jlt.setText(thc?thc.title:"------");
jls.setText(thc?thc.speed:"-.-");
tm.start();
}
}
};

var rc = new java.lang.Runnable() {

run: function() {
jd = new javax.swing.JDialog();
jd.setModalityType(java.awt.Dialog.ModalityType.MODELESS);
jd.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jd.setAlwaysOnTop(true);
jl = new javax.swing.JLabel(" 00:00:00 ");
jl.setFont(jl.getFont().deriveFont(java.awt.Font.PLAIN,24));
jd.add(jl);
jlt = new javax.swing.JLabel("スレタイ");
jlt.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jd.add(jlt,java.awt.BorderLayout.SOUTH);
jls = new javax.swing.JLabel("0.0");
jls.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jd.add(jls,java.awt.BorderLayout.NORTH);
jd.pack();
jd.setLocation(100,100);
jd.setVisible(true);
tm = new javax.swing.Timer(1000,al);
tm.setRepeats(false);
tm.start();
}
};

javax.swing.SwingUtilities.invokeLater(rc);

23 名前:VIICさん:09/09/12 00:00:53 ID:x07KnTh+
>>21
ありがとうございます。いじってみます。
>22ですが、このスレだとダイアログの上方のスピードが、
0.0000368306...とかなるけどこれでいいのかな。
24 名前:n|a:09/09/12 00:48:40 ID:OdLJOc2S
>>23
おっと、1日当りではなく1秒当りの値になっていました。
とりあえず86400をかけておいてください。
25 名前:VIICさん:09/09/13 22:38:41 ID:eeCzhFp6
どなたかv2c.exec() の使用例を書いてくれませんか。(v2c.execでぐぐったけど0件でした)
例えば"C:\Program Files\Mozilla Firefox\firefox.exe"に "http://2ch.net/"を開かせたい場合について。
26 名前:n|a:09/09/14 00:04:31 ID:OoTO2x6W
>>25
外部コマンド設定で
${SCRIPT:Fx} exec.js
と設定して
v2c.exec('"C:\\Program Files\\Mozilla Firefox\\firefox.exe" http://2ch.net/');
または
v2c.exec(['C:\\Program Files\\Mozilla Firefox\\firefox.exe','http://2ch.net/']);
で実行できるはずです。
27 名前:25:09/09/14 00:19:41 ID:v2ngxqNe
>>26
ちゃんと動作しました。直々のご教授、ありがとうございました。
28 名前:n|a:09/09/14 22:47:44 ID:OoTO2x6W
単発ID「以外」を抽出するスクリプトです。(T20090914以降用)
>15と同様の手順で外部コマンドの「レス表示」に設定してください。

// 次の行から下をUTF-8で保存する。

var vcx = v2c.context;
var th = vcx.thread;
if (th) {
var nr = th.localResCount;
var bo = false;
var ar = new Array();
for (var i=0; i<nr; i++) {
var rs = th.getRes(i);
if (rs) {
if (rs.idCount!=1) {
ar.push(i);
} else if (!bo) {
bo = true;
}
}
}
if (bo) {
vcx.setFilteredResIndex(ar);
}
}
29 名前:VIICさん:09/09/15 01:56:27 ID:UOLUxipN
wikipedia.js表示率高くなりましたね。
本気でやるとずいぶん長くなるのね。参考になります。

要望的メモ、自分でやればいいのだけど時間無いので…

1「スクリプト」→「スクリプト理論」のリンクが編集中の場合、リンク消してもいいんじゃないかな
2「CPU」みたいに全角だと半角に変換するといいかも
3「マニュアル」「ムービー」「ビッチ」「アンチ」とかの曖昧ではないけど
 リスト表示から始まる場合はキーワードだけになる
30 名前:n|a:09/09/16 00:31:21 ID:EM/RflGp
>>29
簡単な作例という当初の目的を完全に見失っているような気もしますが…。
ttp://v2c.s50.xrea.com/manual/wikipedia2.txt
31 名前:29:09/09/16 21:21:20 ID:UhZeD5vA
>>30
ありがとうございます。

Indexとかで文字を拾ってくのはまだまだきつい。

98行目に //println('range: '+iu+','+rl.lastIndex);
が残ってるけどこっちで似た様な使い方はv2c.alertぐらいになるのかな。
while内とかでも繰り返し中のデータを改行して
まとめて表示できるものがあるとうれしいです。

全角→半角のコードはそのまま使えそうなので

選択テキスト系のスクリプトに利用させてもらいます。
32 名前:VIICさん:09/09/28 12:40:18 ID:Fv504BfJ
javascriptは触ったことがなかったけど
RhinoはJavaの機能を呼び出したりできるんだな。
けっこう便利そうだ。

と、書き込もうとして本スレでは規制されてたことを思い出した……

暇なときになんか書こうかな。
33 名前:n|a:09/09/28 23:43:25 ID:vto8PZSY
>>32
何かやりたいが必要な機能が存在しないという場合はここに書いてください。
(V2CのComponentを直接操作する以外ということで…。)
34 名前:VIICさん:09/09/29 21:40:00 ID:j98VKYGe
>22の ${SCRIPT:Ttw} clock.js を改造。レス数を棒グラフ表示。長いスレタイを自動スクロール。

var jd,jl,jls,jlt,tm,tl,or,nr,er,mt,tt;

var df = new java.text.SimpleDateFormat(" HH:mm:ss "); var cf = new java.text.DecimalFormat("#######.#");
var nh1 = "<html><head><center>"; var nh2 = "</center></head><body><table border='0' cellspacing='0' cellpadding='0'><tr>";
var nh3 = "<td><div style='background-color: "; var nh4 = "; width: "; var nh5 = "px; font-size: 4px;'> </div></td>";var nh6 = "</tr></table></body></html>";
function WordLength(s) {
var ch=0;
for(var i=0; i<s.length(); i++) {
var c = s.charAt(i);if(( c<=0x007E )||( c>=0xFF61 && c<=0xFF9F )) ch++;
}
return ch;
}
var al = new java.awt.event.ActionListener() {
actionPerformed: function(e) {
if (jd.isVisible()) {
jl.setText(df.format(new Date()));var thc = v2c.resPane.selectedThread;
if(!thc){
jlt.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
tl=or=nr=0,er=100,mt=0,tt="";
} else {
if(thc.localResCount > 1000) {
or = java.lang.Math.ceil((thc.localResCount-thc.newResCount)*100/thc.localResCount);nr = java.lang.Math.ceil(thc.newResCount*100/thc.localResCount);er = 0;
} else {
or = java.lang.Math.ceil((thc.localResCount-thc.newResCount)*0.1);nr = java.lang.Math.ceil(thc.newResCount*0.1);er = 100 - or - nr;
}
if(tt != thc.title){
tl = thc.title.length();cl = WordLength(thc.title);
tl = tl - cl + cl*0.5;
if(tl > 11) {
jlt.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);tl = thc.title.length();
} else {
jlt.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
}
if(mt != 0) mt=0;
}
}
if(tl <= mt) mt=0;
if(tl > 11) {
jlt.setText(thc?thc.title.substring(mt):"------");
} else {
jlt.setText(thc?thc.title:"------");
}
jls.setText(thc?nh1+cf.format(thc.speed)+nh2+nh3+"blue"+nh4+or+nh5+nh3+"yellow"+nh4+nr+nh5+nh3+"gray"+nh4+er+nh5+nh6:nh1+"-.-"+nh2+nh3+"gray"+nh4+er+nh5+nh6);
jls.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);mt++;thc?tt=thc.title:tt="";tm.start();
}
}
};
var rc = new java.lang.Runnable() {
run: function() {
jd = new javax.swing.JDialog();jd.setModalityType(java.awt.Dialog.ModalityType.MODELESS);
jd.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);jd.setAlwaysOnTop(true);
jl = new javax.swing.JLabel(" 00:00:00 ");jl.setFont(jl.getFont().deriveFont(java.awt.Font.PLAIN,24));jd.add(jl);
jlt = new javax.swing.JLabel("スレタイ");jlt.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);jd.add(jlt,java.awt.BorderLayout.SOUTH);
jls = new javax.swing.JLabel(nh1+"-.-"+nh2+nh3+"gray"+nh4+99+nh5+nh6);jd.add(jls,java.awt.BorderLayout.NORTH);
jd.pack();jd.setLocation(1100,850);jd.setVisible(true);
tm = new javax.swing.Timer(500,al);tm.setRepeats(false);tm.start();
}
};
javax.swing.SwingUtilities.invokeLater(rc);
35 名前:VIICさん:09/09/29 23:23:48 ID:P0CVUBVE
なんか皆さんが投稿してるのよりずいぶんヘボくてアレなんですが、
一応選択範囲をast形式(AAエディタとかで読める形式)で保存する的なものを作ってみました。
複数のレスが1つのファイルに格納されます。

--- ここから ---

importPackage(java.io)
     
function scrap(filename, save_res_info){
  var file = new File(v2c.saveDir,filename)
  var p = new PrintWriter(new FileWriter(file, true));
  p.print("[AA]");
 
  if(save_res_info || save_res_info == undefined){
    var res = v2c.context.res;
    var res_str = res.number + ": "
              + res.name
              + " [" + res.mail + "] "
              + res.date
              + " ID:" + res.id
              + " " + res.beID
              + " " + res.aux;
    var title = v2c.context.thread.title;
    var board = v2c.context.thread.board.key
    p.print("[" + board + " / " + title + " / " + res_str + "]");
  }

  p.println();

  p.println(v2c.context.selText);
  p.close();
  v2c.alert("正常に保存されました。");
}

scrap("script\\hoge.ast")


--- ここまで ---

>>33

prompt的なものというか、入力ダイアログがない?ような気がします。
36 名前:VIICさん:09/09/29 23:26:22 ID:P0CVUBVE
忘れてましたが${SCRIPT:F} scrap.jsで。
37 名前:VIICさん:09/09/30 19:22:20 ID:EeTW8NQP
一応swingで入力ダイアログを書けそうだったんで書いてはみたもののこれでいいのか…
disposeとhideの違いもよく分かりません

var ss;

//UI絡みここから
var jd,jl,jls,jlt,tm,jt;

var al = new java.awt.event.ActionListener() {

  actionPerformed: function(e) {
  ss=jt.getText();
  hoge();
  jd.dispose();
  }
};

var rc = new java.lang.Runnable() {

  run: function() {
    jd = new javax.swing.JDialog();
    jd.setModalityType(java.awt.Dialog.ModalityType.MODELESS);
    jd.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
    jt=new javax.swing.JTextField("Hello World!!");
    jt.addActionListener(al);
    jd.add(jt);
    jd.pack();
    jd.setLocation(100,100);
    jd.setVisible(true);
  }
};
//UI絡みここまで

function hoge(){

  v2c.println(ss);
}

ss = v2c.context.selText;

  if (ss) {
    ss = ss.trim();
    hoge();
  }else {
    javax.swing.SwingUtilities.invokeLater(rc);
  }
38 名前:n|a:09/09/30 22:50:07 ID:tuC8GAPF
>>34
最初グラフをどうやって描いているのかと思ったらTABLEとCSSなんですね。
(nh1,nh2の</?head>は不要だと思います。)
jlt = new javax.swing.JLabel("スレタイ");

jlt = new javax.swing.JTextField("スレタイ");
jlt.setFocusable(false);
jlt.setEditable(false);
jlt.setBorder(null);
のようにJTextFieldに変更し、actionPerformedのjlt.setText()の後に
jlt.getCaret().setDot(0);
を追加するとスレタイの最後に"..."が付くことはなくなります。
あとスレタイが最後まで表示されるかどうかの判定は
jlt.setText(thc.title);
if (jlt.getPreferredSize().width>jlt.getWidth()) {
が簡単・正確だと思います。
>>35
文字列を手軽にファイルに書き込むことができればいいかもしれませんね。
>>37
このような場合は JOptionPane.showInputDialog() が適していると思います。
…が、せっかく v2c.prompt() を作ったのでこちらを使ってください…。
39 名前:VIICさん:09/09/30 23:47:59 ID:TxXBsbYP
>>38
棒グラフはthreana.htaみたいなのもできるんだろうけど手が付けられんな…
スレタイ部分の表示・判定は悩んだ所なので助かります。ありがとうございます。
40 名前:VIICさん:09/10/01 01:15:22 ID:a42RQ3vg
>>38
テキストボックスで検索したらJTextFieldのサンプルがいくつか見つかったのでそのまま使っていました。
あの用途だとshowInputDialog()の方が合ってますね。

ともかくv2c.prompt()を使わせていただきます。ありがとうございます。

41 名前:VIICさん:09/10/02 04:10:30 ID:YWn6fIjw
自演風釣表示作ってみたよ。$SCRIPT tree.js とかで設定。
行の文字数そろえたり、レス番マウスオーバーでポップアップ、重複レス削除などはできません…。
誰か改良してもらえるとありがたいです。

var vcx = v2c.context;

var srn = vcx.res.number;
var ru = vcx.thread.url;
var k=0,li=[],pl="",rn=0,msg="";

function createTree(li,idx) {

 var gr = vcx.thread.getRes(idx);
 k++;
 if(gr.refResIndex){
  for(var i=0; i<gr.refResIndex.length; i++) {
   if(i == gr.refResIndex.length - 1) {
    li[k-1] = "└";
   } else {
    li[k-1] = "├";
   }
   rn = gr.refResIndex[i] + 1;
   li[k] = "<a href='"+ru+rn+"'>"+rn+"</a>";
   if(k>=2 && (li[k-2] == "└" )||( li[k-2] == " ")) {
    li[k-2] = " ";
   } else {
    li[k-2] = "│";
   }
   msg = vcx.thread.getRes(rn-1).message;
   msg = msg.replaceAll("\n", " ");
   if(msg.length() > 40) {
    msg = msg.substring(0,39);
    msg += "...";
   }
   li[k+1] = "    " + msg;
//   v2c.println(li.join("")+"<BR>");
   pl += li.join("")+"<BR>";
   pl = createTree(li,gr.refResIndex[i]);
  }
 }
 li[k] = null;
 k--;
 return pl;
}

function createPopupString() {

// v2c.println(srn);
 if(vcx.thread.getRes(srn-1).refResIndex) {
  pl = createTree([],srn-1);
  vcx.setPopupHTML("<html><body style='font-size: x-small;'><a href='"+ru+srn+"'>"+srn+"</a><BR>"+pl+"</body></html>");
 }
}

createPopupString();

42 名前:VIICさん:09/10/02 11:10:31 ID:UpF8/4Ez
スクリプトを活用させて貰っている素人の門外漢です。
できればスクリプトを貼る方は、それがレス表示用なのか、リンク用なのか、
選択テキスト用なのかを表示してくれると有り難い。
43 名前:n|a:09/10/02 23:38:16 ID:6HHfruJM
>>41
これはおもしろくなりそうですね。
レス番号マウスオーバーでポップアップに関しては、
こちらでリンクのURLがスレッドのレスの場合にレスをポップアップするようにしてみます。
重複レス削除は、既出レス用のArrayを用意してフラグを立てればいいのではないでしょうか。
行末を揃えるのはいい方法を思い付きません…。
あと細かいことですがgr.refResIndexは一旦変数に代入しておくと
多少効率が良くなると思います。
>>42
【登録場所】 レス表示
【コマンド】 $SCRIPT tree.js
のような感じでしょうか。
44 名前:41:09/10/03 00:48:33 ID:4ODDvt+9
>>43
もうちょっとがんばってみます。

このスレのまとめ、一部のファイル名は書いて無いので適当、【コマンド】は$以降を記入

他に部分的なのがあるけどそれは各自で

【登録場所】 リンク

【コマンド】 >2-3 はてブ数とユーザ表示 $SCRIPT b_hatena.js

【登録場所】 選択テキスト

【コマンド】 >15 Yahoo!英和辞書で検索 $SCRIPT ydic.js 1
          Yahoo!和英辞書で検索 $SCRIPT ydic.js 3
          Yahoo!類語辞書で検索 $SCRIPT ydic.js 5
       >35 ast形式で保存 ${SCRIPT:F} scrap.js

【登録場所】 レス表示

【コマンド】 >13 レスが何日前か表示 $SCRIPT ago.js
       >18 デジタル時計表示 $SCRIPT clock.js
       >21-22>34 デジタル時計表示+α ${SCRIPT:Ttw} clock.js
       >28 単発ID「以外」を抽出 $SCRIPT e1id.js
       >41 参照レスのツリー表示 $SCRIPT tree.js
45 名前:41:09/10/03 19:00:38 ID:4ODDvt+9
結局重複レス削除は元と違う表示にした。ツリーにレス番が存在してかつ複数にレスしていれば、
最初のそのレス番は赤、重複は語尾に…を加えてる。たぶん無駄な処理してる。indexOfとか使うのかな…

【登録場所】 レス表示

【ラベル】  参照レスのツリー表示
【コマンド】 $SCRIPT tree.js
var vcx = v2c.context, vrx=vcx.res, vtx=vcx.thread, srn = vrx.number, src = vrx.refCount, tu = vtx.url;
var k=0,h=0,rn=0,pl="",msg="",li=[],arn=[],arr=[];

function searchNum(ar) {

 for(var j = 0; j<ar.length; j++) {
// v2c.println(ar[j]+" "+rn);
  if(ar[j] == rn) return 1;
 }
 return 0;
}

function createTree(li,idx) {

 var gr = vtx.getRes(idx).refResIndex;
 k++;
 if(gr){
  for(var i = 0; i<gr.length; i++) {
   rn = gr[i] + 1;
   (k>=2 && (li[k-2] == "└") || (li[k-2] == " "))?li[k-2] = " ":li[k-2] = "│";
   (i == gr.length - 1)?li[k-1] = "└":li[k-1] = "├";
   li[k] = "<a href='"+tu+rn+"'>"+rn+"</a>";
   var prn = 0;
   prn = searchNum(arn);
   if(!prn) {
    msg = vtx.getRes(rn-1).message; msg = msg.replaceAll("\n", " ");
    if(msg.length() > 40) {
     msg = msg.substring(0,39); msg += "...";
    }
    li[k+1] = "    " + msg; arn[h] = rn;
    h++
   } else {
    li[k+1] = "…"; var prr = 0; prr = searchNum(arr);
    if(!prr) {
     arr[h] = rn;pl = pl.replace(new RegExp(li[k]),"<a href='"+tu+rn+"' style='color:red'>"+rn+"</a>");
    }
   }
// v2c.println(li.join("")+"<BR>");
   pl += li.join("")+"<BR>";
   if(!prn) pl = createTree(li,gr[i]);
  }
 }
 li[k,k+1] = null; k--; return pl;
}

function createPopupString() {

//v2c.println(srn);
 if(src) {
  pl = createTree([],srn-1); vcx.setPopupHTML("<html><body style='font-size: x-small;'><a href='"+tu+srn+"'>"+srn+"</a><BR>"+pl+"</body></html>");
 }
}

createPopupString();

46 名前:VIICさん:09/10/03 20:32:52 ID:uFMESg4f
希望
IDからみみずん検索かけられるスクリプト
47 名前:VIICさん:09/10/03 21:55:37 ID:wXJ1YGv4
>>45
これをレス表示欄で実行すると、スクリプトのコンパイルに失敗しましたというメッセージが出ます。
何が悪いんでしょうか?
ランチャーはV2C_T20090930.jarです。
illegal charactor unkown source#5とかいうエラーメッセージです。
48 名前:VIICさん:09/10/04 00:50:32 ID:Ez5A1iBA
47ですが自己解決しました。
行頭の全角スペースを消したら上手く動作しました。
49 名前:VIICさん:09/10/04 03:26:59 ID:jRO8YdgL
そういや半虹の詳細スレでV2C用とか見かけたような...
50 名前:41:09/10/04 19:36:46 ID:mj6abusQ
作成途中。コマンドの引数にidを追加するとIDでまとめてツリー表示。無しだと通常。
引数がidの場合、同じIDだとレス番が太字になる。
名前でも似たことできるとは思うけど名無し判定どうしよう。

以下と>51をコピペ↓

//【登録場所】 レス表示
//【ラベル】  (IDの)被参照レスをツリー表示
//【コマンド】 $SCRIPT tree.js もしくは $SCRIPT tree.js id
var vcx = v2c.context, vrx=vcx.res, vtx=vcx.thread, srn = vrx.number, sic = vrx.idCount, src = vrx.refCount, tu = vtx.url; sid = vrx.id;
var k=0,g=0,h=0,rn=0,n=0,q=0,sr=0,srs=0,pl="",msg="",rcc="",pla=[],li=[],arn=[],arr=[],anm=[],arc=[],i;

function searchNum(ar) {

 for(var j = 0; j<ar.length; j++) {
// v2c.println(ar[j]+" "+rn);
  if(ar[j] == rn) return 1;
 }
 return 0;
}

function createTree(li,idx) {

 var gr = vtx.getRes(idx).refResIndex;
 k++;
 if(gr){
  for(var i = 0; i<gr.length; i++) {
   rn = gr[i] + 1;
   (k>=2 && (li[k-2] == "└") || (li[k-2] == " "))?li[k-2] = " ":li[k-2] = "│";
   (i == gr.length - 1)?li[k-1] = "└":li[k-1] = "├";
   li[k] = "<a href='"+tu+rn+"'>"+rn+"</a>";
   var prn = 0;
   prn = searchNum(arn);
   if(!prn) {
    msg = vtx.getRes(rn-1).message; msg = msg.replaceAll("\n", " ");
    if(msg.length() > 40) {
     msg = msg.substring(0,39); msg += "...";
    }
    li[k+1] = "    " + msg; arn[h] = rn;
    h++
   } else {
    li[k+1] = "…"; var prr = 0; prr = searchNum(arr);
    if(!prr) {
     arr[g] = rn;
     g++;
    }
   }
// v2c.println(li.join("")+"<BR>");
   pl += li.join("")+"<BR>";
   if(!prn) pl = createTree(li,gr[i]);
  }
 }
 li[k,k+1] = null; k--; return pl;
}
51 名前:41:09/10/04 19:37:14 ID:mj6abusQ
function createPopupString() {
 var args = vcx.args;
 if((args.length>0)&&(args[0]=='id')){
  for(var m = 0; m < vtx.localResCount; m++){
   sr = vtx.getRes(m); if(sid.equals(sr.id)) {anm[n] = sr.number; arc[n] = sr.refCount; srs+=sr.refCount ;n++;}
  }
  pla[q] = "<B style='font-size: small;'>ID:"+sid+" 書き込み数:"+sic+" 被参照レス(合計):"+srs+"</B><BR>";
  if(srs > 0){
   q++; pla[q] = "<BR>";
   for(var p = 0; p < sic; p++){
    rcc = "被参照レス:"+arc[p]; q++; pla[q] = "<a href='"+tu+anm[p]+"'>"+anm[p]+"</a> "+rcc+"<BR>";
    if(arc[p] > 0) { q++; pl=""; pla[q] = createTree([],anm[p]-1) + "<BR>"; }
   }
  }
 } else {
  if(src) {
   pla[q] = "<a href='"+tu+srn+"'>"+srn+"</a><BR>"
   q++;
   pla[q] = createTree([],srn-1);
  }
 }
 pl = pla.join("");
 for(var s = 0;s < arr.length; s++){
  pl = pl.replace(new RegExp(">"+arr[s])," style='color:red'>"+arr[s]);
 }
 for(var t = 0;t < anm.length; t++){
  pl = pl.replace(new RegExp(">"+anm[t]+"</a>",'g'),"><b>"+anm[t]+"</b></a>");
 }
 if(src || pl) {
  vcx.setPopupHTML("<html><body style='font-size: x-small;'>"+pl+"</body></html>");
 }
}
createPopupString();
52 名前:n|a:09/10/04 21:20:17 ID:Lq//aY/u
>>46
ID検索の結果は(エラーチェックは省略して)
var vcx = v2c.context;
var th = vcx.thread;
var res = vcx.res;
var su = 'http://mimizun.com/search/perl/idsearch.pl';
var sd = 'board='+th.board.key+'&id='+encodeURIComponent(res.id);
var hr = v2c.createHttpRequest(su,sd);
var sr = hr.getContentsAsString();
のようなスクリプトで取得できます。
問題はこれをどのように表示するかですが…。
>>49
何か気になります…。
>>50,51
別件で苦戦しているので、レスポップアップはもう少し待ってください。
名無も取得できるようにします。
53 名前:VIICさん:09/10/04 22:01:06 ID:mj6abusQ
>>52
乙です。了解しました。
54 名前:VIICさん:09/10/05 00:06:01 ID:RtqK3XbH
>>52
たぶん詳細スレの自動登録タグ用のスクリプトかと
55 名前:VIICさん:09/10/06 15:36:31 ID:sSbOra85
689 :名無しさん@お腹いっぱい。 [sage] :2009/10/06(火) 07:18:47 ID:1oU3WdhdP
【レス抽出】
対象スレ:
キーワード:

抽出レス数:

これできるようになると嬉しいです

56 名前:VIICさん:09/10/07 03:33:04 ID:7Q2AlYL9
>>55
--- ここから ---
function filter(key){
var result = new Array();
var th = v2c.context.thread;
for(var i = 0; i < th.localResCount; i++){
var res = th.getRes(i);
if(res.message.indexOf(key) != -1){
result.push(res);
}
}
return result;
}

function execFilter(key){

result = filter(key);
v2c.context.setFilteredRes(result);
var out =
"【レス抽出】\n"
+ "対象スレ:" + v2c.context.thread.title + "\n"
+ "キーワード:" + key + "\n\n"
+ "抽出レス数:" + result.length;
useClipboard = v2c.confirm(out + "\n---------------------\nクリップボードに送る?");
if(useClipboard){
v2c.context.setClipboardText(out)
}
}

key = v2c.prompt("抽出キーワード",v2c.context.selText);

execFilter(key);
--- ここまで ---
${SCRIPT} filter.js
ポップアップでコピペができないことに気づいたので
confirmしてクリップボードに送るかを決める仕様になっています。

スレッド中の全レスを取得する関数はないみたいですね。


そういえばモジュールインポートみたいな仕組みってないですかね?
Rhinoの対話的環境だとload関数でインポートできたりするのですが……
57 名前:VIICさん:09/10/07 03:35:20 ID:7Q2AlYL9
あと、要望によっては書き込み欄に送ってほしい、
と言われることもあるかもしれません……。
58 名前:VIICさん:09/10/07 03:39:35 ID:7Q2AlYL9
varとセミコロンのつけ忘れがありました。
スペースが入ってないのと合わせてかっこ悪いので修正します。前のでも動くけど。
--- --- ---
function filter(key){
  var result = new Array();
  var th = v2c.context.thread;
  for(var i = 0; i < th.localResCount; i++){
    var res = th.getRes(i);
    if(res.message.indexOf(key) != -1){
      result.push(res);
    }
  }
  return result;
}

function execFilter(key){

  var result = filter(key);
  v2c.context.setFilteredRes(result);
  var out =
    "【レス抽出】\n"
    + "対象スレ:" + v2c.context.thread.title + "\n"
    + "キーワード:" + key + "\n\n"
    + "抽出レス数:" + result.length;
  var useClipboard = v2c.confirm(out + "\n---------------------\nクリップボードに送る?");
  if(useClipboard){
    v2c.context.setClipboardText(out);
  }
}

var key = v2c.prompt("抽出キーワード",v2c.context.selText);

execFilter(key);
59 名前:VIICさん:09/10/07 04:41:32 ID:7Q2AlYL9
>>42
レス表示・選択テキストの兼用です。
60 名前:VIICさん:09/10/07 04:47:36 ID:AZYJ/ZPJ
>>58
私はこれを選択テキストのコマンドで登録したので、確認ダイアログは余計だと感じるんだけど、
作者さんはレス表示コマンドとして使うのを想定してるのかな?
やはり↓のテンプレを使って作者の意図を明示した方が親切だと思います。
【登録場所】
【ラベル】
【コマンド】
61 名前:VIICさん:09/10/07 06:37:34 ID:sXfPO8v6
自分でつくったのはスクリプトコンソールに送ってみた
あと正規表現での抽出と
62 名前:n|a:09/10/07 23:34:10 ID:hW/YIVrD
人柱版 H20091007 ttp://v2c.s50.xrea.com/V2C_H20091007.jar
・板の名無しを取得できるようにした。
・書き込み欄に文字列を設定・挿入できるようにした。
・HTMLポップアップ中のスレッドのレスへのリンクでそのレスをポップアップ表示するようにした。
詳細はttp://v2c.s50.xrea.com/manual/script.htmlを参照してください。
V2Cの更新チェックの対象になっていないので
ttp://pc12.2ch.net/test/read.cgi/software/1252568950/13
と同様の手順で更新してください。

>>56

クリップボードに送るかどうかはスクリプトの引数で判断するのはどうでしょうか。
loadは(loadの正確な仕様はわかりませんが)
var fl = new java.io.File(new java.io.File(v2c.saveDir,'script'),'lib.js');
eval(String(v2c.readFile(fl)));
で一応代用できると思います。
これを v2c.load('lib.js') で実現するのは難しいかもしれません。
「全レスを取得」というのは、ループを回すのではなく
レスオブジェクトのArrayを取得する、ということでしょうか?
>>60
最後の部分を
var key = v2c.context.selText;
if (!key||(key.length()==0)) {
key = v2c.prompt("抽出キーワード",'');
}
if (key&&(key.length()>0)) {
execFilter(key);
}
とすると「レス表示」・「選択テキスト」両用になります。
63 名前:VIICさん:09/10/08 00:01:30 ID:Vsbq3WDD
>>62
60です。
助かります。
64 名前:41:09/10/09 04:55:12 ID:2piYiTtK
↓と65をコピペ
//【登録場所】 レス表示
//【ラベル】  被参照レスでツリー表示
//【コマンド1】 $SCRIPT tree.js (開始レスからのツリー表示)
//【コマンド2】 $SCRIPT tree.js id (IDで抽出)
//【コマンド3】 $SCRIPT tree.js name (名前で抽出、トリップ抽出ではない。)
//【コマンド4】 $SCRIPT tree.js be (beIdで抽出)
//【コマンド5】 $SCRIPT tree.js aux (補助情報で抽出)
//【コマンド6】 $SCRIPT tree.js ref もしくは $SCRIPT tree.js ref 5 など(ref後に(1以上の)数字があるとそれ以上の被参照レスを表示、無しだと3以上)
//【コマンド7】 $SCRIPT tree.js all (全レスツリー表示、ただ重複するレス番は除いている。)
// * $SCRIPT tree.js ref 1など表示に時間がかかる(その間操作不可の)場合がある点は注意。自分の場合例でレス700に被参照レス合計1200で表示に1分
// *【コマンド2~5】の検索対象のレス番号は太字、【コマンド6】は検索の被参照レス数以上で太字
// * 重複レス番号の最初の番号は赤、それ以降は被参照レスがあれば語尾に「…」【コマンド2~5】の検索対象のコメント色は緑
var refC="red", msgC="rgb(0,96,0)";//色変更
var vcx=v2c.context, vrx=vcx.res, vtx=vcx.thread,srn=vrx.number, tu=vtx.url, lrs=vtx.localResCount, ban=vtx.board.allAnonymousName;
var k=0,g=0,h=0,q=0,rn=0,si=0,req=1,pl="",msg="",sn="",pla=[],li=[],arn=[],arr=[],anm=[],arc=[];
function equalsString(a,b) {
 var eq=0;
 switch(si){
  case 1: eq = a.equals(b.id) && a.match(/\?\?\?/i)==null; break;
  case 2: eq = a.equals(b.name); break;
  case 3: eq = a!=0 && a==b.beID; break;
  case 4: eq = a.equals(b.aux); break;
  case 5: eq = 1; break;
  case 6: eq = (a<=b.refCount); break;
  default: eq = 0; break;
 }
 return eq;
}
function editMsg(mg) {
 mg=mg.replaceAll("\n", " "); if(mg.length()>40) {mg=mg.substring(0,39); mg+="...";} return mg;
}
function searchNum(ar,sn) {
 for(var j=0; j<ar.length; j++) {if(ar[j]==sn) return 1;} return 0;
}
function createTree(li,idx) {
 var gr=vtx.getRes(idx).refResIndex, nr = ""; k++;
 if(gr){
  for(var i=0; i<gr.length; i++) {
   rn=gr[i] + 1; vgx = vtx.getRes(rn-1); (si==5 || si==0) ? req=0 : req=equalsString(sn,vgx);v2c.println(rn+" "+req);
   (k>=2 && (li[k-2]=="└") || (li[k-2]==" ")) ? li[k-2]=" " : li[k-2]="│";
   (i==gr.length-1) ? li[k-1]="└" : li[k-1]="├";
   (req) ? li[k]="<b><a href='"+tu+rn+"'>"+rn+"</a></b>" : li[k]="<a href='"+tu+rn+"'>"+rn+"</a>"; var prn=0; prn=searchNum(arn,rn);
   msg=editMsg(vgx.message);
   if(!prn) {
    (req) ? li[k+1]="    <span style='color:"+msgC+"'>"+msg+"</span>" : li[k+1]="    "+msg; arn[h]=rn; h++;
   } else {
    if(vgx.refCount) nr="…";
    (req) ? li[k+1]=nr+"   <span style='color:"+msgC+"'>"+msg+"</span>" : li[k+1]=nr+"   "+msg; var prr=0; prr=searchNum(arr,rn);
    if(!prr) {arr[g]=rn; g++;}
   }
   pl+=li.join("")+"<br>";
   if(!prn) createTree(li,gr[i]);
  }
 }
 li[k,k+1]=null; k--; return pl;
}
65 名前:41:09/10/09 05:00:26 ID:2piYiTtK
function createPopupString() {
 var args=vcx.args, ss="", n=0, srs=0;
 if((args.length>0) && ((args[0]=='id') || (args[0]=='name') || (args[0]=='be') || (args[0]=='aux') || (args[0]=='all')
 || ((args[0]=='ref') && (args[1]>0) || (args[1]==null)))){
  if(args[0]=='id') {
   sn=vrx.id; ss="ID:"+sn; si=1;
  } else if(args[0]=='name') {
   sn=vrx.name; ss="名前:"+sn; si=2;
   if(sn>0 || sn<lrs) {
    var snn=vtx.getRes(sn-1); anm[n]=snn.number; arc[n]=snn.refCount; srs+=arc[n]; n++;
   } else {
    for(var u=0; u<ban.length; u++) {
     if(ban[u].equals(vrx.name)) {sn=0 ;break;}
    }
   }
  } else if(args[0]=='be') {
   sn=vrx.beID; ss="beID:"+sn; si=3;
  } else if(args[0]=='aux') {
   sn=vrx.aux; ss="AUX:"+sn; si=4;
  } else if(args[0]=='all') {
   sn=1; ss="全レス表示"; msgC="black"; si=5;
  } else {
   sn=args[1]; if(sn==null) sn=3; ss="被参照数が"+sn+"以上"; msgC="black"; si=6;
  }
  if(sn){
   for(var m=0; m < lrs; m++) {
    var sr=vtx.getRes(m); if(si!=5) req=equalsString(sn,sr); if(req) {anm[n]=sr.number; arc[n]=sr.refCount; srs+=sr.refCount ; n++;}
   }
   if(n>1 || srs>0) {
    pla[q]="<b style='font-size: small; '>"+ss+" 書き込み数:"+n+" 被参照レス(合計):"+srs+"</b><br>";
    q++; pla[q]="<br>";arl=0
    for(var p=0; p < n; p++){
     arl=searchNum(arn,anm[p]);
     if(si!=5 || !arl) {
     msg=editMsg(vtx.getRes(anm[p]-1).message); q++;
     pla[q]="<b><a href='"+tu+anm[p]+"'>"+anm[p]+"</a></b>"+" + "+arc[p]+"   <span style='color:"+msgC+"'>"+msg+"</span><br>";
      if(arc[p] > 0) { q++; pl=""; pla[q]=createTree([],anm[p]-1) + "<br>"; }
     }
    }
   }
  }
 } else {
  var src=vrx.refCount; msgC="black";
  if(src) {pla[q]="<b><a href='"+tu+srn+"'>"+srn+"</a></b><br>"; q++; pla[q]=createTree([],srn-1);}
 }
 pl=pla.join("");
 for(var s=0; s<arr.length; s++) {pl=pl.replace(new RegExp("("+arr[s]+")('>"+arr[s]+")"),"$1"+"' style='color:"+refC+"$2");}
 if(pl) {vcx.setPopupHTML("<html><body style='font-size: x-small;'>"+pl+"</body></html>");}
}
createPopupString();
66 名前:VIICさん:09/10/09 05:30:33 ID:2piYiTtK
>>62
ポップアップ表示ありがとうございます。
brd.anonymousName
brd.allAnonymousName

brd = v2c.context.thread.board;
ですね。

【V2C】 H20091008 [1.1.0_05] (L-0.6.0_β2:x86)

【Java】 1.6.0_16-b01 (Sun Microsystems Inc.)
【OS】 Windows XP 5.1 (x86)
【不具合内容】
1
原因不明なのですが時々以下のエラー
タイトル: スクリプトエラー: idtree
メッセージ: スクリプトの実行中にエラーが発生しました。
sun.org.mozilla.javascript.internal.WrappedException: Wrapped java.security.AccessControlException:
access denied (java.io.FilePermission C:\Program Files\V2C\log\yy61.60.kg\v2cj\SETTING.TXT read)
(<Unknown Source>#14)
2
レス表示スタイルのスレで$SCRIPT tree.js allとかを実行した(ツリーが激しい)のですが
<STYLE>や<DIV>などが行頭にあったり<IMG>があったりするとそのまま表示されないみたい。
67 名前:n|a:09/10/09 22:59:46 ID:UwsPoDK5
>>64,65
かなり高機能になってきましたね。
2レスに分かれてコピペし難くなっているので、
これを多少整形(一行には一文、行頭のインデントはタブ)したものを
V2Cのページに置いてもいいでしょうか?
>>66
1は 人柱版 H20091009 ttp://v2c.s50.xrea.com/V2C_H20091009.jar
で直っていると思います。
V2Cの更新チェックの対象になっていないので
ttp://pc12.2ch.net/test/read.cgi/software/1252568950/13
と同様の手順で更新してください。
2はeditMsgの中で < は &lt; に、> は &gt; に
それぞれ置換しておく必要があります。
(res.messageは参照を全て置換した後の状態なので。)
68 名前:VIICさん:09/10/10 13:23:20 ID:FCapwSRg
>>67
ありがとうございます。効率悪いところなどどしどし追加・変更してください。
あと>64にv2c.println(rn+" "+req);残ってました。削除してかまいません。

1は今のとこエラー表示はありません。

2は文字列切り出してから置換した方がいいのかな
function editMsg(mg) {
 mg=mg+"";
 if(mg.length>40) {mg=mg.substring(0,39); mg+="...";}
 mg=mg.replace(/[\n]+/g," ");
 mg=mg.replace(/</g,"<");
 mg=mg.replace(/>/g,">");
 return mg;
}

要望ですがレスポップアップ設定の「最大幅で自動改行」チェック無しと同じものが

スクリプトポップアップでも効くようには出来ないでしょうか。ツリーが深くなると見辛くなってしまうので
69 名前:41:09/10/11 01:15:06 ID:Redr/Gu/
>>67
すみません。間違いがありました。>64内のcreateTree関数でリセット忘れしました。 nr=""; を追加です。
function createTree(li,idx) {
//途中略…
   } else {
    if(vgx.refCount) nr="…";
    (req) ? li[k+1]=nr+"   <span style='color:"+msgC+"'>"+msg+"</span>" : li[k+1]=nr+"   "+msg; var prr=0; prr=searchNum(arr,rn);
    if(!prr) {arr[g]=rn; g++;} nr="";//←ここ
   }
//以下略…
70 名前:VIICさん:09/10/12 18:22:26 ID:4YfliCzN
winの自分用だけど。
scriptフォルダ内のスクリプトファイルをリスト表示、クリックでエディタで開く。
≪新規作成≫をクリックするとダイアログの入力名でスクリプトファイルを作成してエディタで開く。
v2c.exec内のエディタ指定は各自で、OSが違ってくるとわからない。

メモ帳だとUTF-8で開けないっぽいし、名前を付けて保存でエラーになるので

スクリプトでUTF-8で作成できればいいのだけどわからない。
今のとこ起動コマンドでUTF-8を指定して開けるエディタのほうがよいと思う。

↓以下コピペ

//【登録場所】 レス表示
//【ラベル】  スクリプトファイルを開く
//【コマンド1】 ${SCRIPT:F} opjsf.js
var vcx = v2c.context;
var fd = new java.io.File(v2c.saveDir,'script');
function redirectURL(u) {
var sr = u.toString()
if(sr=='file:') {
var fn = v2c.prompt('新規ファイル名を入力 ※拡張子(.js)抜き','');
if(fn == '') {
v2c.alert('ファイル名を入力してください。');
redirectURL(u);
return;
} else if(fn == null) {
return;
} else {
var nf = new java.io.File(fd,fn+'.js');
sr = fd +'\\'+ fn +'.js';
nf.createNewFile();
}
} else {
sr = sr.substring(5);
}
if(sr) v2c.exec('"C:\\Program Files\\EmEditor\\EmEditor.exe" /cp 65001 "'+sr+'"');
//if(sr) v2c.exec('"C:\\Windows\\notepad.exe " "'+sr+'"');
return;
}

function createPopupString() {

var al = [], sl = '';
var dl = fd.list();
for (var i = 0; i < dl.length; i++) {
if(dl[i].match(/.+\.js$/i)) {
al[i] = '<a href="file:'+fd+'/'+dl[i]+'">'+dl[i]+'</a><br>';
}
}
al[i+1] = '<a href="file:">≪新規作成≫</a><br>';
jl = al.join('');
vcx.setPopupHTML('<html><body>'+jl+'</body></html>');
vcx.setRedirectURL(true);
}

createPopupString();

71 名前:n|a:09/10/12 22:29:43 ID:Vh8gDZki
>>68,69
ttp://v2c.s50.xrea.com/contrib/script.html
からtree.jsをダウンロードできるようにしました。
(V2C使用法のスクリプトのページからリンクしています。)
「最大幅で自動改行しない」設定は考えてみます。
>>70
メモ帳でUTF-8として新規ファイルを開くには、
新しいファイルにBOM(Byte Order Mark)を書き込んでおけばいいと思います。
次回R版までには簡単に文字列をファイルに保存できるようにする予定です。
ポップアップが窮屈な感じなので<body style="margin:10px;">のように
周囲に余白を取るといいかもしれません。
72 名前:70:09/10/13 22:03:26 ID:zid/LJLd
>>71
どうもです。たしかにすこしCSSで整形したほうがいいですね。

ふと思ったのですが、>52は特定の書式に編集してV2Cのスレ一覧に送る方法があれば

Web検索みたく一覧表示して、ログ検索みたく一覧から開いたときに抽出して表示したりできるのでしょうか。

Web検索の例とかでやってるのはスクリプトみたいに2chURL抜き取って表示してるみたいだけどむずかしいかな。

ついでというかWeb検索例の2NNとヘッドライン@2ちゃんねるが例になっていないと思う。
73 名前:n|a:09/10/14 23:16:00 ID:MYSGVfdo
>>72
「Web検索」をスクリプトで書けるようにするのはいいかもしれません。
ちなみに2NNとヘッドライン@2ちゃんねるは検索語を使わない例です…。
74 名前:VIICさん:09/10/15 22:31:41 ID:HhILaZUT
responseCodeの箇所はこれで機能するのかわからんけど。
必死チェッカーとは一長一短なので組み合わせるのもいいかも。
urlポップアップは別スレ用とかの区別は無いみたい。

↓以下

//【登録場所】 レス表示
//【ラベル】  みみずんID検索(urlリスト)
//【コマンド1】 ${SCRIPT:S} mmzid.js
function createPopupString() {
var vcx = v2c.context;
var th = vcx.thread;
var res = vcx.res;
var su = 'http://mimizun.com/search/perl/idsearch.pl';
var sl = 'list';
var sd = 'board='+th.board.key+'&id='+encodeURIComponent(res.id)+'&url='+sl;
var hr = v2c.createHttpRequest(su,sd);
if(hr.responseCode > 0) {
v2c.alert(hr.responseMessage);return;
}
var sr = hr.getContentsAsString()+"";
var mc = new RegExp("[^]+(対象板名 "+th.board.key+" 抽出件数 )([0-9]+ 件)([^]+[^>]{1}<br>)[^]+","i");
var ida = sr.match(mc);
if(ida!=null) {
ida[0] = "";
if(ida[2] != "0 件") {
var rgex = new RegExp("<a[^<]+</a><br>","i")
var repl = "";
ida[3] = ida[3].replace(rgex,repl);
v2c.println(ida[2]);
var tu = "http://[^/]+/test/read.cgi/"+th.board.key+"/[0-9]{9,10}/";
rgex = new RegExp(tu,"ig");
var idl = ida[3].match(rgex);
idl = idl.sort();
//v2c.println(idl);
var j = 0,idt = [];
for (var i=0; i<=idl.length; i++) {
if(idl[i] != idl[i+1]) {
idt[j] = idl[i]; j++;
}
}
ida[2] =ida[2] + "【"+idt.length+" スレッド】";
rgex = new RegExp("("+tu+"[0-9]{1,4})","ig");
repl = "<a href='$1'>$1</a>";
ida[3] = ida[3].replace(rgex,repl);
}
vcx.setPopupHTML("<html><body style='margin: 10px;'>"+ida.join('')+"</body></html>");
} else {
v2c.alert("データを取得できませんでした。");
}
}

createPopupString();

75 名前:n|a:09/10/16 23:48:18 ID:q+D8GaBG
>>68
T20091016でsetPopupHTMLの部分を
vcx.setPopupHTML("<html><body style='font-size: x-small;'><pre>"+pl+"</pre></body></html>");
vcx.setMaxPopupWidth(500);
のようにすると、ポップアップの最大幅を越える部分は表示されなくなります。
>>74
hr.responseCodeやhr.responseMessageが意味のある値を持つのは
hr.getContentsAs*()の後で、
var sr = hr.getContentsAsString();
if (!sr) {
v2c.alert('ページの取得に失敗しました: '+hr.responseCode+' '+hr.responseMessage);
return;
}
のように使います。
76 名前:VIICさん:09/10/19 22:58:13 ID:GuT0z7Cs
>>75
ポップアップの最大幅の件ありがとうございます。
<pre>効果のため<pre>内にフォント設定しましたが使えてます。

使えるかはわからないけど次レスにスクリプト。

googleの検索結果を羅列します。ポップアップ後にクリップボードにコピーします。
下のキーワードはいくつかのタイプを拾ってます。
おわった→終わった→オワタをブラウザで検索してみるとなんとなくわかるかも。

【】内クリックでブラウザで開く。のだけど

その後の オワタ AA→\(^o^)/オワタ AA→ で【\(^o^)/オワタ AA】がmatchせずに開かないのが残念。
77 名前:VIICさん:09/10/19 22:59:53 ID:GuT0z7Cs
//【登録場所】 レス表示or選択テキスト 【ラベル】 google検索件数表示 【コマンド】 $SCRIPT gglkey.js
var vcx = v2c.context, key = vcx.selText, mr, su, su0, k = 0, ml = [], sl = [], dr = [];
function redirectURL(u) {
var sr = u.toString(), sw;
if(sr==su0) {
key = v2c.prompt('抽出キーワード',dr[0]); sw = encodeURIComponent(key);
} else {
var se = sr.match(new RegExp('q=([^]+?$)','i')); sw = se[1];
var drs = encodeURIComponent(','+dr.join()+','); var mw = drs.match('%2c'+sw+'%2c');
if (mw) return u;
else {key = decodeURIComponent(sw);}
}
dr[k] = key; ml = []; createPopupString(sw);
}
function reduceOtherKey(kl,kln) {
var h = 0; kln = kln.sort();
for (var i = 0, a = kln.length; i < a; i++) {
if(kln[i] != kln[i+1]) {
for (var j = 0, b = dr.length; j < b; j++) {
if(kln[i] == dr[j]) break;
}
if(j==b) { kl[h+5] = ' <b><a href="'+su0+encodeURIComponent(kln[i])+'">'+kln[i]+'</a></b> '; h++; }
}
}
if(h==0) {kl[4] = null;} return kl;
}
function createPopupString(ss) {
su0 = 'http://www.google.co.jp/search?q='; su = su0+ss; var sh = v2c.readURL(su);
if (!sh) {v2c.alert('ページを取得できませんでした。'); return;}
var tt='',mt='';
tt = sh.match(new RegExp('の検索結果 約 <b>[0-9,]+?</b> 件','i'));
mt = sh.match(new RegExp('<p>[^]+?<br clear="all">','i'));
if (!mt || !tt) { v2c.alert('検索結果を取得できませんでした。'); return; }
var ml1 = mt[0].match(new RegExp('spell[^]+?<b>(?:|<i>)([^><]+?)(?:|</i>)</b>','i'));
if(!ml1) {var ml2 = mt[0].match(new RegExp('([^><]+?)(?=</a></font></td><td>)','ig'));}
if(!ml2) {var ml3 = mt[0].match(new RegExp('([^><\.0-9,゚]+?)(?=</b>[^]+?</font></font>)','ig'));}
if(!ss.match('%22','i')) {
key =key+"";
var dkey = '"'+key.replace(new RegExp('[  ]','ig'),'" "')+'"';
ml[0] = '引用符付:';
ml[1] = ' <b><a href="'+su0+encodeURIComponent(dkey)+'">'+dkey+'</a></b><br>';
}
ml[2] = 'キーワード入力'; ml[3] = ' <b><i><a href="'+su0+'">click</a></i></b><br>';
if (ml1) {
ml[4] = 'もしかして: <b><a href="'+su0+encodeURIComponent(ml1[1])+'">'+ml1[1]+'</a></b>';
} else if(ml2) {
ml[4] = '他のキーワード:'; ml = reduceOtherKey(ml,ml2);
} else if(ml3) {
ml[4] = 'このキーワードで検索:'; ml = reduceOtherKey(ml,ml3);
} else {
}
mr = ml.join(''); sl[k] = '<dt>【<a href="'+su+'">'+key+'</a>】'+tt+'</dt>'; k++;
wr = sl.join('');
vcx.setPopupHTML('<html><body style="margin:0 5px;"><dl>'+wr+'<dd>'+mr+'</dd></dl></body></html>');
v2c.context.setRedirectURL(true); var wrc = wr.replace(new RegExp('</dt>','ig'),'\n');
wrc = wrc.replace(new RegExp('<[^]+?>','ig'),''); vcx.setClipboardText(wrc);
}
if (!key||(key.length()==0)) {key = v2c.prompt("抽出キーワード",'');}
if (key&&(key.length()>0)) {key = key.trim(); dr[0] = key; createPopupString(encodeURIComponent(key));}
78 名前:n|a:09/10/20 23:34:06 ID:ct0LGXBc
>>76
なるほど、検索結果の件数と類似キーワードだけに着目しているわけですね。
redirectURLでの既出チェックは正規表現を使う必要は無さそうなので、
if (drs.indexOf('%2c'+sw+'%2c')>=0) {
とすると「\(^o^)/オワタ AA」も外部ブラウザで開くはずです。
79 名前:77:09/10/21 01:08:54 ID:vobNJZoD
>>78
ありがとうございます。indexOfはまったく使えて無かったです・・・

redirectURL内の修正と手動キーワード入力時のキャンセル処理を追加修正

あとブラウザ開いた後もポップアップを再表示にしたので
jdic表示で開いた場合ポップアップが常に前面になる効果で個人的にわりと使いやすくなったと思う。

var vcx = v2c.context, key = vcx.selText, phr, wr, mr, su, su0, k = 0, ml = [], sl = [], dr = [],pml = [];

function redirectURL(u) {
var sr = u.toString(), sw;
if(sr==su0) {
key = v2c.prompt('抽出キーワード',dr[0]); if(key == null) {vcx.setPopupHTML(phr); return;}
sw = encodeURIComponent(key);
} else {
var se = sr.match(new RegExp('q=([^]+?$)','i')); sw = se[1];
var drs = encodeURIComponent(','+dr.join()+',');
if ((drs.indexOf('%2c'+sw+'%2c')>=0)) {vcx.setPopupHTML(phr);return u;}
else {key = decodeURIComponent(sw);}
}
dr[k] = key; ml = []; createPopupString(sw);
}
//途中同略
wr = sl.join('');
phr = '<html><body style="margin:0 5px;"><dl>'+wr+'<dd>'+mr+'</dd></dl></body></html>'
vcx.setPopupHTML(phr);
v2c.context.setRedirectURL(true); var wrc = wr.replace(new RegExp('</dt>','ig'),'\n');
wrc = wrc.replace(new RegExp('<[^]+?>','ig'),''); vcx.setClipboardText(wrc);
}
if (!key||(key.length()==0)) {key = v2c.prompt("抽出キーワード",'');}
if (key&&(key.length()>0)) {key = key.trim(); dr[0] = key; pml[0] = key; createPopupString(encodeURIComponent(key));}
80 名前:VIICさん:09/10/24 16:24:09 ID:gYD+smns
抽出→荒し報告形式コピーあたりを追加できればいいのだけど
リダイレクト後か、ボタン追加でやるか・・・
リダイレクト後はできなさそうだし、<botton>とか<input>は機能してなさそうだし、
JBotton追加とかだとリンク有効化とかまだよくわかってない。

//【登録場所】 レス表示

//【ラベル】  必死チェッカーもどき
//【コマンド1】 ${SCRIPT:S} hissi.js か ${SCRIPT:S} hissi.js id でID検索
//【コマンド2】 ${SCRIPT:S} hissi.js trip でトリップ検索
var vcx = v2c.context,phr;
function redirectURL(u) {vcx.setPopupHTML(phr); return u;}
function createPopupString(ss) {
var ss=[]; var th = vcx.thread; var arg=vcx.argLine;
if((arg == '') || (arg == 'id') || (arg == 'trip')) {
var res = vcx.res; var date = res.date+''; var sk = vcx.argLine;
var rd = date.replace(new RegExp('(^[12]{1}\\d{3})\/([01]{1}\\d{1})\/([0-3]{1}\\d{1}).+','i'),'$1$2$3');
ss[0] = 'http://hissi.org/';
if(sk == 'trip') {
ss[1] = 'trip_search.php/';
var su = ss.join(''); var na = res.name.match(new RegExp('◆([^]+?)$','i'));
if(!na) {v2c.context.setStatusBarText('トリップがありません。'); return;}
var tp = encodeURIComponent(rn[1]); var sd = 'date='+rd+'&Trip='+tp+'&Bord='+th.board.key;
} else {
ss[1] = 'read.php/'+th.board.key+'/'; ss[2] = 'search/'; var su = ss.join(''); var id = res.id;
if(!id || id.match(/\?\?\?/i) || id==0) {v2c.context.setStatusBarText('IDがありません。'); return;}
var id = encodeURIComponent(res.id); var sd = 'date='+rd+'&ID='+id;
}
var hr = v2c.createHttpRequest(su,sd); var sr = hr.getContentsAsString();
if(!sr) {v2c.context.setStatusBarText('ページの取得に失敗しました。: '+hr.responseCode+' '+hr.responseMessage);return;}
sr = sr +'';
if(sk == 'trip') {
ss[1] = ''; ss[2] = sr.replace(new RegExp('^.+url=\.\/(.+)">$','i'),'$1');
} else {
ss[2] = sr.replace(new RegExp('^.+url=\.\.\/(.+)">$','i'),'$1');
}
ss[3] = '?thread=all'; var su = ss.join(''); var sh = v2c.readURL(su);
if(!sh) {v2c.context.setStatusBarText('ページの取得に失敗しました。'); return;}
sh = sh +'';
var il = sh.match(new RegExp('<title>(必死チェッカーもどき [^><]+?)<\/title>','i'));
if(!il) {v2c.context.setStatusBarText('ファイルが存在しません。'); return;}
var cl = sh.match(new RegExp('>(\\d{1,} 位)<\/font>(\/\\d{1,} ID中)<\/td>[^]+?(\\d{1,})<\/td><\/tr><\/table>','i'));
if(!cl) {v2c.context.setStatusBarText('順位の取得に失敗しました。'); return;}
var thl = sh.match(new RegExp('>書き込んだスレッド一覧<[^]+?<td>([^]+?<br>)<\/td><td>([^]+?)<\/td><\/tr><\/table>','i'));
if(!thl) {v2c.context.setStatusBarText('一覧の取得に失敗しました。'); return;}
thl[2] = thl[2].replace(/l50 target="_blank"/ig,'');
var ir = '<b>'+il[1]+'</b>'; var cr = '<b>【'+cl[1]+cl[2]+'】【Total '+cl[3]+' res】</b>';
var ur = '<dt><b>取得URL:</b></dt><dd><a href="'+ss[0]+ss[1]+ss[2]+'">'+ss[0]+ss[1]+ss[2]+'</a></dd>';
var nr = '<dt><b>使用した名前一覧</b></dt><dd>'+thl[1]+'</dd>';
var tr = '<dt><b>書き込んだスレッド一覧</b></dt><dd>'+thl[2]+'</dd>';
phr = '<html><body style="margin:5px;">'+ir+'<br>'+cr+'<br><dl>'+ur+nr+tr+'</dl></body></html>'
vcx.setPopupHTML(phr); vcx.setRedirectURL(true);
}
}
createPopupString();
81 名前:n|a:09/10/30 23:46:42 ID:Ox/vj5iV
>>80
V2C.exe関連のごたごたでなかなかこちらにとりかかれませんでした…。

人柱版 H20091030 ttp://v2c.s50.xrea.com/V2C_H20091030.jar

でFORMのsubmitをトラップできるようにしました。
V2Cの更新チェックの対象になっていないので
ttp://pc12.2ch.net/test/read.cgi/software/1255525714/47
と同様の手順で更新してください。

setRedirectURL()・redirectURL()とよく似た方式で、

v2c.context.setTrapFormSubmission(true) を実行しておくと
HTMLポップアップ内のFORMを送信する時にスクリプトの
formSubmitted(u,sm,sd) が呼ばれます。
・u … URL
・sm … 'GET'または'POST'の文字列
・sd … FORMのデータ
formSubmitted()の返り値によらずFORMは送信されません。

使用例は:


function formSubmitted(u,sm,sd) {
v2c.println('URL: '+u);
v2c.println('method: '+sm);
v2c.println('data: '+sd);
}

var vcx = v2c.context;

vcx.setPopupHTML('<html><body style="margin:10px;"><form action=""><input type="submit" value="action" name="name"></form></body></html>');
vcx.setTrapFormSubmission(true);
82 名前:80:09/10/31 21:07:27 ID:xTKash6P
//抽出追加。redirectURLのPopupHTMLが不可になった?
var vcx=v2c.context,phr;
function filter(kd1,kd2){
var vgt=v2c.resPane.selectedThread; var result=[];
for(var i=0; i < vgt.localResCount; i++){
var resf=vgt.getRes(i);
if(kd1 == 'trip') {
var ftp=resf.name.match(new RegExp('◆([^]+?) $','i')); if(ftp) {if(ftp[1] == kd2) result.push(resf);}
} else {
if(resf.id == kd2) result.push(resf);
}
}
return result;
}
function formSubmitted(u,sm,sd) {
var kd=decodeURIComponent(sd).match(new RegExp('(id|trip)=(.+)','i')); var result=filter(kd[1],kd[2]); vcx.setFilteredRes(result);
}
function redirectURL(u) {vcx.setPopupHTML(phr); return u;}
function createPopupString(ss) {
var ss=[]; var th=vcx.thread; var arg=vcx.argLine;
if((arg == '') || (arg == 'id') || (arg == 'trip')) {
var res=vcx.res; var date=res.date+''; if(arg == '') arg ='id'
var rd=date.replace(new RegExp('(^[12]{1}\\d{3})\/([01]{1}\\d{1})\/([0-3]{1}\\d{1}).+','i'),'$1$2$3'); ss[0]='http://hissi.org/';
if(arg == 'trip') {
ss[1]='trip_search.php/'; var su=ss.join(''); var na=res.name.match(new RegExp('◆([^]+?) $','i'));
if(!na) {v2c.context.setStatusBarText('トリップがありません。'); return;}
var kd=na[1]; var tp=encodeURIComponent(na[1]); var sd='date='+rd+'&Trip='+tp+'&Bord='+th.board.key;
} else {
ss[1]='read.php/'+th.board.key+'/'; ss[2]='search/'; var su=ss.join(''); var kd=res.id;
if(!kd || kd.match(/\?\?\?/i) || kd==0) {v2c.context.setStatusBarText('IDがありません。'); return;}
var eid=encodeURIComponent(kd); var sd='date='+rd+'&ID='+eid;
}
var hr=v2c.createHttpRequest(su,sd); var sr=hr.getContentsAsString();
if(!sr) {v2c.context.setStatusBarText('ページの取得に失敗しました。: '+hr.responseCode+' '+hr.responseMessage);return;} sr=sr +'';
if(arg == 'trip') {
ss[1]=''; ss[2]=sr.replace(new RegExp('^.+url=\.\/(.+)">$','i'),'$1');
} else {
ss[2]=sr.replace(new RegExp('^.+url=\.\.\/(.+)">$','i'),'$1');
}
ss[3]='?thread=all'; var su=ss.join(''); var sh=v2c.readURL(su);
if(!sh) {v2c.context.setStatusBarText('ページの取得に失敗しました。'); return;} sh=sh +'';
var il=sh.match(new RegExp('<title>(必死チェッカーもどき [^><]+?)<\/title>','i'));
if(!il) {v2c.context.setStatusBarText('ファイルが存在しません。'); return;}
var cl=sh.match(new RegExp('>(\\d{1,} 位)<\/font>(\/\\d{1,} ID中)<\/td>[^]+?(\\d{1,})<\/td><\/tr><\/table>','i'));
if(!cl) {v2c.context.setStatusBarText('順位の取得に失敗しました。'); return;}
var thl=sh.match(new RegExp('>書き込んだスレッド一覧<[^]+?<td>([^]+?<br>)<\/td><td>([^]+?)<\/td><\/tr><\/table>','i'));
if(!thl) {v2c.context.setStatusBarText('一覧の取得に失敗しました。'); return;}
thl[2]=thl[2].replace(/l50 target="_blank"/ig,'');
var ir='<b>'+il[1]+'</b>'; var cr='<b>【'+cl[1]+cl[2]+'】【Total '+cl[3]+' res】</b>';
var ur='<dt><b>取得URL:</b></dt><dd><a href="'+ss[0]+ss[1]+ss[2]+'">'+ss[0]+ss[1]+ss[2]+'</a></dd>';
var nr='<dt><b>使用した名前一覧</b></dt><dd>'+thl[1]+'</dd>';
var tr='<dt><b>書き込んだスレッド一覧</b></dt><dd>'+thl[2]+'</dd>';
var fm='<form action=""><input type="hidden" value="'+kd+'" name="'+arg+'"><input type="submit" value="抽出"></form>'
phr='<html><body style="margin:5px;">'+ir+'<br>'+cr+'<br><dl>'+ur+nr+tr+'</dl>'+fm+'</body></html>'
vcx.setPopupHTML(phr); vcx.setRedirectURL(true); vcx.setTrapFormSubmission(true);
}
}
createPopupString();
83 名前:80:09/11/01 17:40:12 ID:jTIq5THx
>>81
FORMの要望、ありがとうございます。
formSubmitted内にあるvcx.setFilteredRes(result);は実行時のスレッドで抽出されるので
選択したスレッドで抽出できないでしょうか。
84 名前:n|a:09/11/01 23:17:59 ID:EXoAnLmB
>>82
redirectURL()を呼ぶ前にsetRedirectURL()で設定された値を
リセットしていなかったのでリセットするようにしました。
(setPopupHTML()の値等はリセットしているので。)
すみませんが必要な場合はredirectURL()内で再設定してください。
>>83
何か考えます…。
85 名前:VIICさん:09/11/11 00:00:14 ID:cXQN3eM6
>>84
下のような形での挙動は仕様でしょうか。
1)外部リンクをクリックして(JDICで)開いた後、submitボタンを押すとその外部リンクが開いてしまう。
2)テキスト欄が入力できない。
3)resetボタンでメニュー内がリセットされない。
また
A)form送信後、クリック時のポップアップを閉じて
formSubmitted内でhlを変更したsetPopupHTML(hl)を表示させることができないでしょうか。

【V2C】 H20091108 [1.1.1_02] (L-0.6.2:x86)

【Java】 1.6.0_17-b04 (Sun Microsystems Inc.)
【OS】 Windows XP Service Pack 3 (x86)
【メモリ】 Total(Free)/Max.: 73(36)/254 (Phys. Total/Avail.: 2030/1118) [MB]

function redirectURL(u) {

vcx.setPopupHTML(hl);
vcx.setRedirectURL(true);
vcx.setTrapFormSubmission(true);
return u;
}
function formSubmitted(u,sm,sd) {
v2c.println('URL: '+u);
v2c.println('method: '+sm);
v2c.println('data: '+sd);
vcx.setPopupHTML(hl);
vcx.setRedirectURL(true);
vcx.setTrapFormSubmission(true);
}
var vcx = v2c.context;
var hl ='<html><body style="margin:10px;"><a href="http://v2c.s50.xrea.com/manual/script.html">V2C 使用法 [外部コマンド:スクリプト]</a><br>'
+'<a href="http://yy61.60.kg/test/read.cgi/v2cj/1252074124/">スクリプト</a><form method="get" action=""><input type="text" name="text" value="test">'
+'<select name="select"><option>A</option><option>B</option><option>C</option></select>'
+'<input type="submit" value="submit"><input type="reset" value="reset"></form></body></html>';
vcx.setPopupHTML(hl);
vcx.setRedirectURL(true);
vcx.setTrapFormSubmission(true);
86 名前:n|a:09/11/13 00:03:42 ID:/gpEDn5T
>>85
1)はバグで、次回更新で修正します。
2)はポップアップがキーボードフォーカスを受け取れるようにする設定が必要ですね。
 (v2c.context.setPopupFocusable(true)のような感じか?)
3)リセットは入力を「クリア」するのではなく「初期値を設定」するようなので、
 入力欄は変化しません。selectは
 "<option selected>A</option>"のように明示的に初期値を設定してください。
A)は何か考えます…。
87 名前:VIICさん:09/11/14 21:05:47 ID:VF48Ld10
>>86
ありがとうございます。
最初に手動で設定入力するときにメニュー選択とテキスト入力をまとめて表示できれば楽かなと思ったので
出来ると助かります。あと追加ですみません。外部リンクで気づいたのですが
v2c.createHttpRequestとv2c.readURLで待っている間V2Cのプログレスバーを処理中に出来ないでしょうか。
ステータスバーは結果の表示だし、マウスジェスチャで気軽にやってアクセス待ちが長いと
何も変化が無いので本当にスクリプトを実行しているか微妙に不安になってしまいます。
88 名前:VIICさん:09/11/16 22:08:57 ID:Jn6fuYX4
書き込みで簡単そうなやつを作りたいのだけど以下の点などで改善できないでしょうか。
1. マウスジェスチャ・キーバインドの全体指定では『null』になる。現状は右クリメニューから。
2. v2c.context.setClipboardTextだとペーストまで自動化したい。
3. v2c.context.insertToPostMessageだと挿入なため選択範囲を置換できない。
(選択文字だけ置換したいため同文字が複数あるとreplaceしてv2c.context.setPostMessageも確実でなさそう。)

【登録場所】 選択テキスト

【ラベル】  括弧で囲む
【コマンド1】 $SCRIPT bracket.js
var st=v2c.context.selText;
v2c.context.setClipboardText('『'+st+'』')
//v2c.context.insertToPostMessage('『'+st+'』')
89 名前:VIICさん:09/11/16 22:19:56 ID:Jn6fuYX4
あ、書き込み内容は選択範囲以外拾えませんね。()内は勘違いでした。すみません。
90 名前:n|a:09/11/16 23:34:55 ID:T4AgLX36
>>88,89
「『書き込み欄の選択テキストをレス表示欄の選択テキストから生成した文字列で
置き換える』というスクリプトを『全体』のキーバインド・マウスジェスチャで
実行したい」ということでしょうか?
91 名前:VIICさん:09/11/17 00:01:57 ID:P7Y3JjVa
>>90
応用的には『書き込み欄の選択テキストを判断材料(キー)にして
キーをスクリプトで生成した文字列に置き換える。(選択したキーは削除)』です。

キーバインド・マウスジェスチャは『書き込み欄』では設定出来ないようなので『全体』で要望しました。

92 名前:VIICさん:09/11/17 00:22:34 ID:P7Y3JjVa
>>90
わざわざ文書変えないでも
『書き込み欄の選択テキストを書き込み欄の選択テキストから生成した文字列で置き換える』
ですね。個人的に『』とかは後から囲うので。
93 名前:n|a:09/11/18 23:32:23 ID:g02canvV
>>91,92
次回更新では以下のコードで実現できるようにします。

var st=v2c.getSelectedText();

if (st) {
v2c.replaceSelectedText('『'+st+'』');
}
94 名前:VIICさん:09/11/18 23:59:07 ID:vmHl4ABl
>>93
了解です。ありがとうございます。
95 名前:VIICさん:09/11/25 23:09:06 ID:KTLEIk7g
>80の追加バージョン、パスはhissi
ttp://karimofu.cc/dlp/mofu2_4201.zip.php
付け足し付け足ししてたら長くなった。テスト不足ではある。

//【登録場所】 レス表示(コマンド1~4) or 全体(コマンド3,4)

//【ラベル】  必死チェッカーもどき
//【コマンド1】 ${SCRIPT:SFrw} hissi.js か ${SCRIPT:SFrw} hissi.js id でID検索
//【コマンド2】 ${SCRIPT:SFrw} hissi.js trip でトリップ検索
//【コマンド3】 ${SCRIPT:SFrw} hissi.js id input でIDをデフォルトで入力画面表示
//【コマンド4】 ${SCRIPT:SFrw} hissi.js trip input でトリップをデフォルトで入力画面表示
// * 初回使用に限り対応するscriptフォルダ内にhissi_menu.txtを作成して板一覧を取得してます。
96 名前:n|a:09/11/26 23:58:14 ID:1MbWFnaX
>>95
プログレスバーをどうするかはまだ决めかねています。
とりあえず次回更新でステータスバーにリアルタイムでメッセージを表示できるようにします。

保存用ファイル名を生成する部分

var txt = v2c.saveDir+'\\script\\hissi_menu.txt';

var fs = java.io.File.separator;
var txt = v2c.saveDir+fs+'script'+fs+'hissi_menu.txt';
または
var txt = new java.io.File(new java.io.File(v2c.saveDir,'script'),'hissi_menu.txt');
にするとWindows以外でも使えていいのではないかと思います。

それにしても人がいない…。

97 名前:n|a:09/11/27 23:36:28 ID:pvrRJKBz
>>95
ファイルの場所が違ってしまいますが、T20091127では
var txt = v2c.getScriptDataFile('hissi_menu.txt');
で保存用のファイルを取得できるようにしました。
98 名前:95:09/11/28 20:52:56 ID:TmGqdjbd
>>96-97
ありがとうございます。私はリアルタイムでメッセージで満足してます。
試しにDL数がわかるとこにしましたが…(ちなみにテストDLしてるのでマイナス1です。)

ttp://karimofu.cc/dlp/mofu2_4206.zip.php

パスはhissi

引数にinputを使用している場合ポップアップを複数にするとデータがおかしくなるため

メインポップアップに『再検索』ボタンを追加しました。他、input関連の書き直し。
また『再検索』を繰返しても『書き込み時間帯』『書き込みレス一覧』にデータが貯まる形になっています。
99 名前:VIICさん:09/11/30 03:31:49 ID:xgPd7E3U
v2c.exec使用だと遠回りな感じがするけど・・・

//【登録場所】 レス表示

//【ラベル】  日の最初のレスにジャンプ
//【コマンド1】 ${SCRIPT:Fx} test.js 選択日の最初のレスにジャンプ
//【コマンド2】 ${SCRIPT:Fx} test.js next (選択日から最近の)次の日で、最初のレスにジャンプ
//【コマンド3】 ${SCRIPT:Fx} test.js prev (選択日から最近の)前の日で、最初のレスにジャンプ
var vcx = v2c.context, th = vcx.thread, rs = vcx.res, arg = vcx.args[0];
var dt = rs.date, ix = rs.index, kl = th.localResCount-1,tgd;
var pt = new RegExp('^.+?\\(.\\)'), da = dt.match(pt);
if(arg == 'next'){
for(var k = ix; k < kl; k++){
tgd = th.getRes(k).date
if(tgd.indexOf(da) == -1) break;
}
v2c.exec('"'+v2c.saveDir+'\\v2c.exe" "'+th.url+(k+1)+'"');
} else {
for(var i = ix; i > -1; i--){
tgd = th.getRes(i).date;
if(tgd.indexOf(da) == -1) break;
}
if(arg == 'prev'){
da = tgd.match(pt);
for(var j = i; j > -1; j--){
tgd = th.getRes(j).date;
if(tgd.indexOf(da) == -1) break;
}
v2c.exec('"'+v2c.saveDir+'\\v2c.exe" "'+th.url+(j+2)+'"');
} else {
v2c.exec('"'+v2c.saveDir+'\\v2c.exe" "'+th.url+(i+2)+'"');
}
}
100 名前:99:09/11/30 03:41:09 ID:xgPd7E3U
ごめん。OS依存なのか…?わからんけど。↓に変更。

var vcx = v2c.context, th = vcx.thread, rs = vcx.res, arg = vcx.args[0];

var dt = rs.date, ix = rs.index, kl = th.localResCount-1,tgd;
var pt = new RegExp('^.+?\\(.\\)'), da = dt.match(pt);
var fs = java.io.File.separator;
if(arg == 'next'){
for(var k = ix; k < kl; k++){
tgd = th.getRes(k).date
if(tgd.indexOf(da) == -1) break;
}
v2c.exec('"'+v2c.saveDir+fs+'v2c.exe" "'+th.url+(k+1)+'"');
} else {
for(var i = ix; i > -1; i--){
tgd = th.getRes(i).date;
if(tgd.indexOf(da) == -1) break;
}
if(arg == 'prev'){
da = tgd.match(pt);
for(var j = i; j > -1; j--){
tgd = th.getRes(j).date;
if(tgd.indexOf(da) == -1) break;
}
v2c.exec('"'+v2c.saveDir+fs+'v2c.exe" "'+th.url+(j+2)+'"');
} else {
v2c.exec('"'+v2c.saveDir+fs+'v2c.exe" "'+th.url+(i+2)+'"');
}
}
101 名前:VIICさん:09/11/30 20:46:11 ID:xgPd7E3U
似たのを追加。
要望ですがレス番号指定で上端に移動が出来ないでしょうか。
↓のコマンド1で抽出状態で最初のレスに移動する形です。
あとレス表示の上端にあるレスに関する情報を取得して、
キーバインドや全体で使用できないでしょうか。
抽出状態であればそれで機能しそうなきがするのですが…

//【登録場所】 レス表示

//【ラベル】  (この|次の|前の)日で抽出
//【コマンド1】 $SCRIPT dailyres.js 選択日で抽出
//【コマンド2】 $SCRIPT dailyres.js next 選択日の次の日で抽出
//【コマンド3】 $SCRIPT dailyres.js prev 選択日の前の日で抽出

var vcx = v2c.context, th = vcx.thread, rs = vcx.res, arg = vcx.args[0];

var dt = rs.date, ix = rs.index, tl = th.localResCount,tgd;
var pt = new RegExp('^.+?\\(.\\)'), da = dt.match(pt), fr = new Array();
if(arg == 'next'){
for(var i = ix; i < tl; i++){
tgd = th.getRes(i).date
if(tgd.indexOf(da) == -1) break;
}
da = tgd.match(pt);
for(var j = i; j < tl; j++){
tgd = th.getRes(j).date;
fr.push(j);
if(tgd.indexOf(da) == -1) break;
}
if(j < tl)fr.pop();
fr.length == 0 ? v2c.alert('次の日はありません。') : vcx.setFilteredResIndex(fr);
}else{
for(var i = ix; i > -1; i--){
tgd = th.getRes(i).date;
if(arg != 'prev') fr.push(i);
if(tgd.indexOf(da) == -1) break;
}
if(arg == 'prev'){
da = tgd.match(pt);
for(var j = i; j > -1; j--){
tgd = th.getRes(j).date;
fr.push(j);
if(tgd.indexOf(da) == -1) break;
}
if(j > -1) fr.pop();
fr.length == 0 ? v2c.alert('前の日はありません。') : vcx.setFilteredResIndex(fr);
}else{
if(i > -1) fr.pop();
for(var j = ix+1; j < tl; j++){
tgd = th.getRes(j).date;
fr.push(j);
if(tgd.indexOf(da) == -1) break;
}
if(j < tl) fr.pop();
vcx.setFilteredResIndex(fr);
}
}
102 名前:n|a:09/11/30 22:23:23 ID:Pxvfvlgl
書き込みは少ないけどROMは結構多い
そんなふうに考えていた時期が(ry

…それはさておき…


>>98
そのスクリプトを頂き物スクリプトのページに置かせてもらってもいいでしょうか?
>>99-101
・指定したレスにジャンプ
・画面に最初に表示されているレスを取得
はできるようにします。
103 名前:95:09/12/01 03:56:08 ID:9KxlB2og
>>102
乙です。
どうぞ自由に使ってください。以下に差し替えてもらえないでしょうか。

ttp://karimofu.cc/dlp/mofu2_4213.zip.php

パスはhissi

選択テキスト状態で、input付き『全体』のスクリプト実行する or 『再検索』ボタンを押す

と選択テキストを入力欄に挿入。選択テキストかレス情報がなければ空にするようにしました。
あと、『再検索』時、キーワード以外は検索前の状態で表示するようにしました。
104 名前:VIICさん:09/12/01 18:13:27 ID:fFX1RN0l
>>103
ご苦労様です。
早速試してみてます。

ちょっとお訊ねします。

// * 『抽出』:現在選択表示しているスレから検索IDのレスを抽出して『書き込み時間帯』『書き込みレス一覧』を反映します。
// * 『レス(*/*)』:『書き込みレス一覧』の始めの取得数は50レスまでです。1クリックで50レスまで追加・再取得ができます。

・・・いまひとつよくわからないのですが。

抽出は『書き込み時間帯』『書き込みレス一覧』の内容のリロードと理解すればよろしいのでしょうか?
レスはさらによくわかりません。
一つのスレ内で5つの書き込みをしてる人のID抽出をしても(1/1)となってますし・・・
105 名前:95:09/12/01 20:30:02 ID:9KxlB2og
>>104
わかり難いですね…すみません。
『抽出』は、表示中のスレから「必死チェッカーもどき」にはない
最新のIDレスデータを『書き込み時間帯』『書き込みレス一覧』に追加できます。
「必死チェッカーもどき」は4時間間隔で更新したりするので、最近のレスは取得できない場合があります。

『レス(*/*)』『ID(*/*)』は、取得URL先である「必死チェッカーもどき」からレスを取得しています。

必死チェッカーもどきは1つのURLに全レスの時間帯と、最大50レスまでのレスデータがあるので、
例えば検索IDが200レスしていたら、4回「必死チェッカーもどき」へアクセスする必要があります。
それで(*/*)の部分はページ数ということで(1/4)と表示されることになります。

自動で同サイトに何度もアクセスしても良いものかどうか、

またすべて取得するまでの表示時間や失敗の可能性を考慮して、
手動でアクセスして取得する形になっています。
106 名前:VIICさん:09/12/02 11:17:42 ID:lXq5/SS+
>>105
そうですか、丁寧にありがとうございます。

> 5つの書き込みをしてる人のID抽出をしても(1/1)となってます


つまりこれは↑、4時間ごとに更新される必死チェッカーもどきに、
まだ残りの4レスが反映されてないから、ということなのでしょうね
107 名前:VIICさん:09/12/02 17:27:01 ID:lXq5/SS+
あぁ、失礼。レス(*/*)は必死チェッカーもどきの表示するページ数ですか。
108 名前:n|a:09/12/02 23:19:20 ID:0lfeO86T
>>103
ありがとうございます。
ttp://v2c.s50.xrea.com/contrib/script.html
からダウンロードできるようにしました。
109 名前:VIICさん:09/12/08 21:43:38 ID:yF1UceS/
ttp://karimofu.cc/dlp/mofu2_4221.zip.php
無駄にツリー表示拡張、追加コマンドは↓他、詳しくはファイル内を見てください。パスはtree

【コマンド7】 $SCRIPT tree.js mail (メールで抽出)

【コマンド8】 $SCRIPT tree.js link (リンクを抽出)
【コマンド9】 $SCRIPT tree.js line (本文の行数が3以上のレスを抽出、行数=改行の数、連続改行はまとめて1行)

【コマンド11】$SCRIPT tree.js daily (日で抽出)

【コマンド12】$SCRIPT tree.js day (対象を開始日とした7日分のレスを抽出)
【コマンド13】$SCRIPT tree.js min (対象を開始時とした60分間のレスをツリー抽出)

【コマンド15】$SCRIPT tree.js new (新着レスをツリー表示)

【コマンド16】$SCRIPT tree.js old (既読レスをツリー表示)
【コマンド17】$SCRIPT tree.js ng (NGレスを表示、NGレスは被参照が取り消されるのでツリー表示にならにため抽出のみ)
【コマンド18】$SCRIPT tree.js filter (抽出、チェックされていれば、その対象レスを表示、チェック優先)

要望度合いは低いのですが、

1. 外部コマンド設定のラベルを取得
2. NG理由の取得、およびNGの連鎖非表示[参照]の被参照レス番の取得
3. レス番の配列をV2Cグラフに送ってマーク表示(「グラフの設定」にあるIDとかトリップ選択で表示されるマーク)

1はコマンド8のようなときにポップアップの一行目に『jpeg,gif,png,bmp』ではなく『画像リンク』とかで表示できないかなと。

2は使えるものかは分からないし、ツリーだとどんな感じになるのかな程度の興味です。
3は面倒そうかもしれませんが、SCRIPTとは別で、抽出状態でグラフを開くと抽出番号がマークされて表示とかでもいいかも。

createPopupString()の処理時間みたけど関数は5秒ぐらいでも実際に

クリックしてからポップアップ表示までは20秒とかスクリプト上での改善は微々たるものか・・・
110 名前:n|a:09/12/09 23:19:53 ID:EjnepX7z
>>109
ttp://v2c.s50.xrea.com/contrib/script.html
のtree.zipを差し替えました。

1.のラベルは取得できるようにします。

2.,3.についても考えてみます。

link.isImageLinkでImageViewURLReplace.datも考慮して

画像リンクかどうかを判定できるといいような気がしてきました。
111 名前:109:09/12/10 21:43:10 ID:sR9xHaL8
>>110
乙です。
サムネイル付きだけ拾えるのはいいですね。

抽出方法でいうとAA判定されたレス番とか

グラフで表示されてる速度のデータとか拾えるといいかも。
112 名前:VIICさん:09/12/23 22:09:49 ID:CZLi6MIy
選択範囲を拡張子jsで保存するだけの超簡易インストーラです。
これでもいいんですが、firefoxやgoogle chromeみたいに
クリックしたら即インストールみたいなものは作れませんでしょうか?
個人的にはgoogle chromeのextention(json+スクリプトファイルのzip)
みたいな形式になれば作りやすくて楽です。

//【登録場所】 選択テキスト

//【ラベル】簡易インストール
//【コマンド1】 ${SCRIPT:F} script_install.js
function install(filename){
var f = new java.io.File(v2c.saveDir, "script\\" + filename)
v2c.writeStringToFile(f,v2c.context.selText,"UTF-8")
}

var title = v2c.prompt("タイトル","")

if(title != null && !title.equals("")){
install(title)
}
113 名前:n|a:09/12/31 00:01:41 ID:Asgz7t0K
>>111
ImageViewURLReplace.datも考慮してリンクが画像リンクかどうかを
lnk.type_IMAGEで判断できるようにしました。
>>112
安全と簡便さをうまく両立できるといいのですが…。
114 名前:VIICさん:10/01/01 14:24:24 ID:EMpFCRtX
>>113
年末ごたごたしてレスできませんでした。
リリース前になにも無しなのはあれなので・・・

rescheck.jsは試せてないのですが↓以外は動作しているようです。


>・「全体」コマンドでもレス表示欄の情報を取得できるようにした。
キーバインド・マウスジェスチャでは機能しますが
「コマンド」メニューからはエラーになるようです。
115 名前:VIICさん:10/01/01 14:30:18 ID:EMpFCRtX
>>99-100の修正

//【登録場所】 レス表示

//【ラベル】  (この|次の|前の)日の最初のレスにジャンプ
//【コマンド1】 ${SCRIPT:Fx} dailyjump.js 選択日の最初のレスにジャンプ
//【コマンド2】 ${SCRIPT:Fx} dailyjump.js next (選択日から最近の)次の日で、最初のレスにジャンプ
//【コマンド3】 ${SCRIPT:Fx} dailyjump.js prev (選択日から最近の)前の日で、最初のレスにジャンプ

var vcx = v2c.context, th = vcx.thread, rs = vcx.res, arg = vcx.args[0];

var dt = rs.date, ix = rs.index, kl = th.localResCount-1,tgd,idx;
var pt = new RegExp('^.+?\\(.\\)'), da = dt.match(pt);
var fs = java.io.File.separator;
if(arg == 'next'){
 for(var k = ix; k < kl; k++){
  tgd = th.getRes(k).date
  if(tgd.indexOf(da) == -1) break;
 }
 idx=k;
} else {
 for(var i = ix; i > -1; i--){
  tgd = th.getRes(i).date;
  if(tgd.indexOf(da) == -1) break;
 }
 if(arg == 'prev'){
  da = tgd.match(pt);
  for(var j = i; j > -1; j--){
   tgd = th.getRes(j).date;
   if(tgd.indexOf(da) == -1) break;
  }
  idx=j+1;
 } else {
  idx=i+1;
 }
}
vcx.setResIndexToJump(idx);
116 名前:VIICさん:10/01/01 14:36:32 ID:EMpFCRtX
>>115の【登録場所】 は全体も可でした。

>>101の修正


//【登録場所】 全体、レス表示
//【ラベル】  (この|次の|前の)日で抽出
//【コマンド1】 $SCRIPT dailyres.js 選択日で抽出
//【コマンド2】 $SCRIPT dailyres.js next 選択日の次の日で抽出
//【コマンド3】 $SCRIPT dailyres.js prev 選択日の前の日で抽出

var vcx = v2c.context, th = vcx.thread, rs = vcx.res, arg = vcx.args[0];

var dt = rs.date, ix = rs.index, tl = th.localResCount,tgd;
var pt = new RegExp('^.+?\\(.\\)'), da = dt.match(pt), fr = new Array();
if(arg == 'next'){
 for(var i = ix; i < tl; i++){
  tgd = th.getRes(i).date
  if(tgd.indexOf(da) == -1) break;
 }
 da = tgd.match(pt);
 for(var j = i; j < tl; j++){
  tgd = th.getRes(j).date;
  fr.push(j);
  if(tgd.indexOf(da) == -1) break;
 }
 if(j < tl)fr.pop();
 fr.length == 0 ? v2c.alert('次の日はありません。') : vcx.setFilteredResIndex(fr);
}else{
 for(var i = ix; i > -1; i--){
  tgd = th.getRes(i).date;
  if(arg != 'prev') fr.push(i);
  if(tgd.indexOf(da) == -1) break;
 }
 if(arg == 'prev'){
  da = tgd.match(pt);
  for(var j = i; j > -1; j--){
   tgd = th.getRes(j).date;
   fr.push(j);
   if(tgd.indexOf(da) == -1) break;
  }
  if(j > -1) fr.pop();
  fr.length == 0 ? v2c.alert('前の日はありません。') : vcx.setFilteredResIndex(fr);
 }else{
  if(i > -1) fr.pop();
  for(var j = ix+1; j < tl; j++){
   tgd = th.getRes(j).date;
   fr.push(j);
   if(tgd.indexOf(da) == -1) break;
  }
  if(j < tl) fr.pop();
  vcx.setFilteredResIndex(fr);
 }
 fr=fr.sort();
 vcx.setResIndexToJump(fr[0]);
}
117 名前:n|a:10/01/01 17:18:28 ID:SY4mgBM8
>>114
ありがとうございます。
v1.1.3で修正しました。
118 名前:あぼーん:あぼーん
あぼーん
119 名前:あぼーん:あぼーん
あぼーん
120 名前:あぼーん:あぼーん
あぼーん
121 名前:あぼーん:あぼーん
あぼーん
122 名前:あぼーん:あぼーん
あぼーん
123 名前:VIICさん:10/01/16 00:27:54 ID:u0fYuUwe
tree.jsを少し変更、整理

ttp://up2.shinetworks.net/cgi-bin/snup-mini/src/shinemini17191.zip.html

DLKey:V2C

・追加分

//【コマンド8】 $SCRIPT tree.js link image (リンクを抽出、引数がimageのみの場合ImageViewURLReplace.datも考慮した画像リンクのみ抽出)
//【コマンド17】$SCRIPT tree.js ng reason (NGレスを表示、本文ではなく非表示理由を表示)

・仕様変更、ツリー対象に連鎖[参照]も含むようにした。

//【コマンド17】$SCRIPT tree.js ng (NGレスを表示、ツリー対象は連鎖[参照]も含む)

・仕様変更、$SCRIPT tree.js link ○ ○ …の場合、一行目はコマンドのラベルを表示するようにした。

//【コマンド8】 $SCRIPT tree.js link zip lzh 等

要望ですが

v2c.context.setFilteredResIndex(li);
v2c.context.setStatusBarText(s);
だと実行後ステータスバー表示は「抽出レス数: ○」ではなくsetStatusBarTextの内容を表示出来ないでしょうか。
124 名前:VIICさん:10/01/16 01:00:39 ID:zM7zaxn7
お疲れ様です。さっそく使わせて頂きます。
125 名前:n|a:10/01/17 00:33:34 ID:Iingplsd
>>123
ありがとうございます。
頂き物スクリプトページのファイルを差し替えました。
次回更新ではv2c.context.setStatusBarText(s)は順番に関係なく表示されるようにします。
126 名前:VIICさん:10/01/17 01:13:09 ID:wF2wjHoh
>>125 乙です。

新タブで開いたすべてをまとめて、ID出現回数ランキングにして表示します。ただし対象は現在の日付のみです。

//【登録場所】 全体、レス表示
//【ラベル】  ID出現回数ランキング
//【コマンド】 $SCRIPT idrank.js
var vcx = v2c.context,res = vcx.res,th = vcx.thread,resp = v2c.resPane, txt = v2c.getScriptDataFile('date.csv');
var graph_data = new Array(),mres = new Array(),tgr,id,date,rpgt,tmp,mt,k=0,idcount=0,rank=1,res=0,allres=0;
var Popup_bg = '#F5F5F5', Title_bg = '#808080', SubPopup_bg = '#DCDCDC', ResNum_Cr = '#404040', Bar_Cr = '#696969';//黒
var GraphCSS = '<head><style type="text/css"><!--'
  +'body{background-color:'+Popup_bg+'; margin:5px 0 5px 15px;}'
  +'.headding{background-color:'+Title_bg+'; color:white; font-weight:bold;}'
  +'.row{background-color:'+SubPopup_bg+';}'
  +'.data{color:'+ResNum_Cr+';font-weight:bold;}'
  +'.bar{background-color:'+Bar_Cr+';}'
  +'.sum{background-color:'+Title_bg+'; color:white; font-weight:bold;}'
  +'--></style></head>';
function isSearchID(id){
 for( var i = 0, il = mres.length; i < il; i++ ){
  if(mres[i].id==id){return i;}
 }
 return null;
}
var pe= new Date(),pm = pe.getMonth(),pd = pe.getDate();
pm=parseInt(pm+1);pd=parseInt(pd); if(pm < 10) pm='0'+pm ; if(pd < 10) pd='0'+pd;
var today = pe.getFullYear()+'/'+pm+'/'+pd;
for(var i = 0, il = resp.threads.length; i < il; i++){
 rpgt = resp.getThread(i); res=0;
 if(rpgt){
  for(var j = 0,jl = rpgt.localResCount; j < jl; j++){
   tgr = rpgt.getRes(j); id = tgr.id; date = tgr.date+"";
   if(date.indexOf(today) == -1) continue;
   if(!id || id.search(/^([\?]{3}(O|P|Q|i|I|o|0|)|(O|P|Q|i|I|o|0))$/) > -1) continue;
   res++; mt =(id+'').match(/^([.\+\/\w]{8})(O|P|Q|i|I|o|0|)$/); tmp = mt[0]; ididx=isSearchID(tmp);
   if(ididx || ididx==0){
    mres[ididx].count++;
   } else {
    mres[k] = new Object(); mres[k].id = tmp; mres[k].count = 1; k++;
   }
  }
  allres += res; v2c.setStatus(rpgt.title+"…")
 }
}
mres.sort(function(a,b){return((b.count-a.count));});
var ml = mres.length, gs0 = new Array(ml+5), gsa = new Array(9), GraphString = '';
gs0[0] = '<html>'; gs0[1] = GraphCSS; gs0[2] = '<body><table border="0" cellspacing="1" cellpadding="1" style = "font-size:10px;">';
gs0[3] = '<tr class="headding"><th align="center">Rank</th><th align="center">ID</th><th colspan="2" align="center">Count</th></tr>';
gsa[0] = '<tr><td align="right">'; gsa[2] = ' </td><td align="left">  '; gsa[4] = ' </td><td class="data" align="right">';
gsa[6] = ' </td><td><div class="bar" style="width: '; gsa[8] = ';"></div></td></tr>';
for(var m = 0,n = 0; m < ml; m++){
 m%2 ==1 ? gsa[0] = '<tr class="row"><td align="right">' : gsa[0] = '<tr><td align="right">';
 if(idcount == mres[m].count){
  n++;
 } else {
  idcount = mres[m].count; n = 0; rank = m + 1 - n;
 }
 gsa[1] = rank; gsa[3] = mres[m].id; gsa[5] = idcount; gsa[7] = idcount; gs0.push(gsa.join(""));
}
gs0.push('<tr class="sum" align="right"><td>Total: </td><td colspan="3">'+ml+' people / '+allres+' res </tr>'); gs0.push('</table></body></html>');
GraphString = gs0.join(''); vcx.setPopupFocusable(true); vcx.setPopupHTML(GraphString);
127 名前:VIICさん:10/02/13 00:00:48 ID:FuqX2EE2
>>126の追加バージョン
ttp://up2.shinetworks.net/cgi-bin/snup-mini/src/shinemini17640.zip.html
・集計期間を入力できるようにした。
・被参照数、文字数、リンク数、NGレス数を表示するようにした。
・それぞれのランキングができるようにした。
・棒グラフのバー(レス数、被参照数)が長い場合改行して表示するようにした。
・ランキング表示の閾値を入力できるようにした。
・Rank:順位、ID:レスID、Res:レス数、Ref:被参照数、Char:文字数(改行は無視)、Link:リンク数、NG:NGレス数
・集計中のステータス表示やポップアップ表示がすこし変わった等

【登録場所】 全体、レス表示

【ラベル】  レスタブすべてのIDランキング
【コマンド1】 $SCRIPT idrank.js 30位以内のレス数ランキング
【コマンド2】 $SCRIPT idrank.js input いくつか表示方法を設定できます
128 名前:VIICさん:10/02/13 23:54:42 ID:FuqX2EE2
twitterができたから使うこともあるかもしれん。簡易表示

//【登録場所】 選択テキスト

//【ラベル】 Excite翻訳(英日)ポップアップ
//【コマンド】 $SCRIPT excite_translation.js

var vcx = v2c.context;

var text = vcx.selText;
function createPopupString(st) {
 var su0 = 'http://www.excite.co.jp/world/english/?wb_lp=ENJA&before=';
 var su = su0 + st;
 var sh = v2c.readURL(su);
 if(!sh){
  v2c.alert('ページを取得できませんでした。');
  return;
 }
 var mt = new Array(2);
 mt = sh.match(new RegExp('id="after"[^]+?>([^><]+?)</textarea>','i'));
 if(!mt){
  v2c.alert('検索結果を取得できませんでした。');
  return;
 }
 ph = '<html><body style="margin:0 5px;">'+mt[1]+'</body></html>'
 vcx.setPopupHTML(ph);
}
if ( text && ( text.length() > 0 ) ){
 text = text.trim();
 createPopupString( encodeURIComponent(text) );
}
129 名前:VIICさん:10/03/09 06:58:48 ID:4PHL877C
>128 変更 以降コピペ
//【登録場所】 全体、レス表示、選択テキスト
//【ラベル】 Excite翻訳ポップアップ
//【コマンド1】 $SCRIPT excite_translation.js または $SCRIPT excite_translation.js enja 英語⇒日本語
//【コマンド2】 $SCRIPT excite_translation.js jaen 日本語⇒英語
//【コマンド3】 $SCRIPT excite_translation.js chja 中国語(簡体字)⇒日本語
//【コマンド4】 $SCRIPT excite_translation.js chjab 中国語(繁体字)⇒日本語
//【コマンド5】 $SCRIPT excite_translation.js koja 韓国語⇒日本語
//【コマンド6】 $SCRIPT excite_translation.js frja フランス語⇒日本語
//【コマンド7】 $SCRIPT excite_translation.js deja ドイツ語⇒日本語
//【コマンド8】 $SCRIPT excite_translation.js itja イタリア語⇒日本語
//【コマンド9】 $SCRIPT excite_translation.js esja スペイン語⇒日本語
//【コマンド10】 $SCRIPT excite_translation.js ptja ポルトガル語⇒日本語
//【コマンド11】 $SCRIPT excite_translation.js menu コマンド1~10のメニュー表示
var vcx = v2c.context, Text = vcx.selText, Args = vcx.args[0], Url = [5];
//引数からURLに使う文字列を取得
function getUrlStrArr(a){
 var u = [2];
 if(a == 'enja'){
  u[0] = 'english/'; u[1] = 'ENJA';
 } else if(a == 'jaen'){
  u[0] = 'english/'; u[1] = 'JAEN';
 }else if(a == 'chja'){
  u[0] = 'chinese/'; u[1] = 'CHJA';
 }else if(a == 'chjab'){
  u[0] = 'chinese/'; u[1] = 'CHJA&big5=yes';
 }else if(a == 'koja'){
  u[0] = 'korean/'; u[1] = 'KOJA';
 }else if(a == 'frja'){
  u[0] = 'french/'; u[1] = 'FRJA';
 }else if(a == 'deja'){
  u[0] = 'german/'; u[1] = 'DEJA';
 }else if(a == 'itja'){
  u[0] = 'italian/'; u[1] = 'ITJA';
 }else if(a == 'esja'){
  u[0] = 'spanish/'; u[1] = 'ESJA';
 }else if(a == 'ptja'){
  u[0] = 'portuguese/'; u[1] = 'PTJA';
 }else{
  u[0] = 'english/'; u[1] = 'ENJA';
 }
 return u;
}
//翻訳の選択ポップアップでフォーム送信時の動作
function formSubmitted(u,sm,sd){
 u = (u+'').replace(/%25/g,'%'); var lang = u.match(/\?(.+?)=/)[1];
 if(lang == 'jaen') {
  u = u.replace(/(&before=).+/,'$1'+decodeURIComponent(u.match(/\&before=(.+)/)[1])); u = u.replace(' ', ' ');
 }
 var usa= getUrlStrArr(lang); createPopupString('',u.replace(/\?.+?=.+(&before)/, usa[0]+'?wb_lp='+usa[1]+'$1'));
// v2c.context.closeOriginalPopup();//送信後閉じる
}
130 名前:129の続き:10/03/09 07:00:11 ID:4PHL877C
//翻訳結果のポップアップ表示
function createPopupString(st,su){
 if(!su){
  Url[0] = 'http://www.excite.co.jp/world/';Url[2] = '?wb_lp=';Url[4] = '&before='+st;
  var usa = getUrlStrArr(Args);Url[1] = usa[0];Url[3] = usa[1];su = Url.join('');
 }
 var sh = v2c.readURL(su);
 if(!sh){
  v2c.alert('ページを取得できませんでした。'); return;
 }
 var mt = new Array(2);
 mt = sh.match(new RegExp('id="after"[^]+?>([^><]+?)</textarea>','i'));
 if(!mt){
  v2c.alert('検索結果を取得できませんでした。'); return;
 }
 ph = '<html><body style="margin:0 5px;">'+mt[1]+'</body></html>';
 vcx.setPopupHTML(ph);
// v2c.context.setClipboardText(mt[1]);//クリップボードにコピー
}
//翻訳する文字列の整形
function editText(text){
 text = text.replaceAll('>>([[\\d]+[,-]?]+)\\n', '$1へ。');//アンカー+改行⇒番号へ。
 text = text.replaceAll('>>([[\\d]+[,-]?]+)', '$1');//アンカー⇒番号
 text = text.replaceAll('[\\n ]', '');//改行削除
 text = text.replaceAll('([R|Q]T ?|)[@#][\\w]+[:]?', '');//Twitter用、ハッシュタグ等削除
 var links = vcx.res.links, link;
 for(var i=0,l = links.length; i < l; i++){//リンクの削除
  link = (links[i]+'').substring(1);
  if((text+'').charAt((text+'').lastIndexOf(link)-1) == 'h'){link = 'h' + link;}
  text = text.replace(link+'','');
 }
 //日本語の翻訳用、半角のままだと×
 if(Args == 'jaen'){text = text.replaceAll(' ', ' ');}
 text = text.trim(); return text;
}
if(!Text){var Text = vcx.res.message;}
Text = editText(Text);
if(Args == 'menu'){
 if(Args != 'jaen'){Text = encodeURIComponent(Text);}
 vcx.setPopupHTML('<html lang="ja"><style type = "text/css">'
 +'<!--body{background-color:#cccccc; color:black; text-align:center;}.header{font-size:small;}--></style>'
 +'<body><form action="http://www.excite.co.jp/world/"><table border="0" cellspacing="0" cellpadding="0">'
 +'<tr><th class = "header">Excite翻訳</th></tr>'
 +'<tr><input type="submit" value=" 英⇒日 " name="enja"></tr><tr><input type="submit" value=" 日⇒英 " name="jaen"></tr>'
 +'<tr><input type="submit" value="中(簡)⇒日" name="chja"></tr><tr><input type="submit" value="中(繁)⇒日" name="chjab"></tr>'
 +'<tr><input type="submit" value=" 韓⇒日 " name="koja"></tr><tr><input type="submit" value=" 仏⇒日 " name="frja"></tr>'
 +'<tr><input type="submit" value=" 独⇒日 " name="deja"></tr><tr><input type="submit" value=" 伊⇒日 " name="itja"></tr>'
 +'<tr><input type="submit" value=" 西⇒日 " name="esja"></tr><tr><input type="submit" value=" 葡⇒日 " name="ptja"></tr>'
 +'<input type="hidden" value="'+Text+'" name="before"></table></form></body></html>');
 vcx.setTrapFormSubmission(true);
 vcx.setMaxPopupWidth(97);
}
if( Args != 'menu' && Text && ( Text.length() > 0 ) ){
 if(Args != 'jaen'){Text = encodeURIComponent(Text);}
 createPopupString(Text);
}
131 名前:VIICさん:10/03/13 05:32:54 ID:xdwKcJEk
フォント比較用とかで。Java部分はあんまりわかっていない。以降コピペ
//【登録場所】 全体、レス表示、選択テキスト
//【ラベル】  指定フォントでポップアップ
//【コマンド】 $SCRIPT select_font.js

//デフォルトフォント

var FontName = 'MS Pゴシック';//フォント名 *フォントファミリー名ではありません。
var FontSize = 16;//フォントサイズ

var FontFamily = '',FontWeight = '',FontStyle = '',Text = '',vcx = v2c.context,vrx = vcx.res;

var ge = new java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();
var Fonts = [];Fonts = ge.getAllFonts();NumFonts=Fonts.length;
var Lists = [NumFonts],SeloptArr=[],PopArr = [];
function formSubmitted(u,sm,sd){
 var idx = sd.match(/fn=(\d+)/i)[1],size = sd.match(/fs=(\d+)/i)[1];;
 PopArr[0] = PopArr[0].replace('selected','').replace(new RegExp('(option value="'+idx+'")','i'),'$1'+' selected');
 PopArr[1] = size;PopArr[3] = Lists[idx].family;PopArr[5] = size;PopArr[7] = Lists[idx].style;
 PopArr[9] = Lists[idx].weight;vcx.setPopupHTML(PopArr.join(''));vcx.setPopupFocusable(true);
 vcx.setTrapFormSubmission(true);v2c.context.closeOriginalPopup();
// vcx.setClipboardText('フォント名:'+Lists[idx].name+'、フォントサイズ:'+size);
}
function createPopupString(){
 for(i = 0;i < NumFonts;i++){
  Lists[i] = new Object();Lists[i].name = Fonts[i].getName()+'';
  Lists[i].family = Fonts[i].getFamily()+'';Default = Lists[i].name == FontName
  if(Default){FontFamily = Lists[i].family;} SeloptArr.push('<option value="'+i+'"')
  if(Default){SeloptArr.push(' selected');} SeloptArr.push('>'+Lists[i].name);
  if(Lists[i].name.search(/(bold|ボールド)/i) > 0){
   Lists[i].weight = 'bold';if(Default){FontWeight = Lists[i].weight;}
  }else{
   Lists[i].weight = '';
  }
  if(Lists[i].name.search(/(italic|イタリック)/i) > 0){
   Lists[i].style = 'italic';
  }else if(Lists[i].name.search(/oblique/i) > 0){
   Lists[i].style = 'oblique';
  }else{
   Lists[i].style = '';
  }
  if(Default){FontStyle = Lists[i].style;}
//  vcx.setClipboardText('フォント名:'+FontName+'、フォントサイズ:'+FontSize);
 }
 var Selopt = SeloptArr.join('');
 PopArr[0] = '<html>'+'<body style="margin:0 5px;background-color: #F5F5F5">'+'<form action="">'
 +'<table border="0" cellspacing="1" cellpadding="1" style="font-size:10px;">'
 +'<tr>'+'<td><div>フォント名  :</div></td>'+'<td colspan="3"><div>'
 +'<select name="fn">'+Selopt+'</select>'+'</td></div>'+'</tr>'+'<tr>'+'<td><div>フォントサイズ:</div></td>'
 +'<td><input type="text" size="6" maxlength="3" istyle=4 name="fs" value="';
 PopArr[1] = FontSize;PopArr[2] = '"></td>'+'<input type="submit" value="変更">'
 +'<input type="reset" value="リセット">'+'</tr>'+'</table>'+'</form>'+'<div style = "font-family:';
 PopArr[3] = FontFamily;PopArr[4] = ';font-size:';PopArr[5] = FontSize;
 PopArr[6] = ';font-style:';PopArr[7] = FontStyle;PopArr[8] = ';font-weight:';PopArr[9] = FontWeight;
 PopArr[10] = ';">'+Text+'</div>'+'</body>'+'</html>';
 vcx.setPopupHTML(PopArr.join(''));vcx.setPopupFocusable(true);vcx.setTrapFormSubmission(true);
}
Text = vcx.selText;if(!Text) Text = vrx.message;
if(Text && ( Text.length() > 0 )){
 Text += '';Text = Text.replace(/</g,"<");Text = Text.replace(/>/g,">");
 Text = Text.replace(/[\n]+/g,"<br>");createPopupString();
}
132 名前:VIICさん:10/03/15 03:44:13 ID:qr10CpDb
思いつきでとりあえず。マークと似たようなの。
v2c.execではなくv2c.getThread(r_url[0])使って
setResToJumpやsetPopupResみたいなのができないものか。

他に、スクリプト実行→番号n入力→n番目のタブが表示

とかできるといいのだけど…

//【登録場所】 全体、レス表示

//【ラベル】  レス番号付きスレURLを記憶(ジャンプ)
//【コマンド1】 ${SCRIPT:Fw} ThreadURLMemo.js スレURLとレス番号を記憶
//【コマンド2】 ${SCRIPT:Frx} ThreadURLMemo.js jump 記憶したスレのレス番号にジャンプ

var vcx = v2c.context,res = vcx.res, th = vcx.thread, w_url = [2];

var txt = v2c.getScriptDataFile('ThreadURLMemo.txt');
if(th) w_url[0] = th.url;
if(res) w_url[1] = res.number;
if(vcx.args.length == 0 && w_url[0] && w_url[1]){
 v2c.writeLinesToFile(txt,w_url,'utf-8');
} else if(vcx.args[0] == 'jump'){
 var r_url = v2c.readLinesFromFile(txt,'utf-8');
 v2c.exec('"'+v2c.saveDir+'\\v2c.exe" "'+r_url[0]+r_url[1]+'"');
}
133 名前:VIICさん:10/03/17 05:02:41 ID:U7ftBFRx
// とりあえず、1から設定されたレス番までのレスをPopupで表示する
// アンカーもリンクも有効にならないし表示も適当なのものですが
// datを読み込んで置換した方が元のレス表示に似るかなぁ

//【登録場所】 レス表示

//【ラベル】  テンプレPOPUP
//【コマンド】 $SCRIPT popupTemplete.js

/* 設定 */

// Popupするレス数 1から↓まで

var popuprescount = 5;

// レス書式 <NUMBER/>, <NAME/>, <MAIL/>, <DATE/>, <ID>, <AUX/> , <MESSAGE/> タグを

// それぞれ v2c.context.res.number, v2c.context.res.name, v2c.context.res.mail,
// v2c.context.res.date, v2c.context.res.aux, v2c.context.res.msg で置換する

var resform = '<NUMBER/> :<NAME/> [<MAIL/>] :<DATE/> ID:<ID/>\n<MESSAGE/>'

/* 設定終わり */


// 初期処理
var vcx = v2c.context;

// レス生成

function createResStr(n)
{
var resObj = vcx.thread.getRes(n);
return(
resform.replace(/<NUMBER\/>/g, resObj.number).replace(/<NAME\/>/g, resObj.name)
.replace(/<MAIL\/>/g, resObj.mail).replace(/<DATE\/>/g, resObj.date)
.replace(/<ID\/>/g, resObj.id).replace(/<AUX\/>/g, resObj.aux)
.replace(/<MESSAGE\/>/g, resObj.message)
);
}

// Popup作成

function createTempletePopup()
{
var popupstr = "";
for(var i=0; i<popuprescount; i++){popupstr += createResStr(i) + "\n";}
vcx.setPopupText(popupstr);
}

// 実行

createTempletePopup();
134 名前:VIICさん:10/03/17 21:25:25 ID:Z5wg7LCC
FirefoxのLocationbar2が元ネタ。ポップアップですが…
//【登録場所】 リンク
//【ラベル】 上位のディレクトリを開く
//【コマンド】 $SCRIPT splitURLStr.js
var vcx = v2c.context, arg = vcx.args[0];
var URL = vcx.link+'', s = '';
var SegArr = [], HtmlArr = [];

//URLを配列に分割

SegArr = URL.split('/');
var sl = SegArr.length, urlend = '';
if(SegArr[sl-1] == ''){urlend = '/'; SegArr.pop(); sl -=1;}

//ポップアップ表示形式

var head = SegArr[0]+'//';//行頭、SegArr[0]はhttp:,https:などのスキーム
var space = '/';//区切り
var end = '';//行末
var slashend = '/';//行末、URLがスラッシュで終わる場合
//var head = '【 ';//行頭
//var space = ' > ';//区切り
//var end = ' 】';//行末
//var slashend = ' 】';//行末、URLがスラッシュで終わる場合

//HTML作成

if((sl == 4 && SegArr[3].length > 0) || sl >= 5){
 HtmlArr[0] = '<html lang="ja"><body style = "margin: 4px 0 4px 15px; background-color:#fcfcfc; color:black;"><div>'+head;
 sl >= 4 ? s = space : s = '';
 HtmlArr[sl-1] = '</div></body></html>';
 if(urlend == '/'){
  HtmlArr[sl-2] = s+'<a href="'+SegArr.join('/')+urlend+'">'+SegArr[sl-1]+'</a>'+slashend;
 } else {
  HtmlArr[sl-2] = s+'<a href="'+SegArr.join('/')+'">'+SegArr[sl-1]+'</a>'+end;
 }
 for(i = SegArr.length; i >= 4; i--){
  SegArr = SegArr.slice(0,i-1);
  SegArr[i-1] = '';
  i >= 5 ? s = space : s = '';
  HtmlArr[i-3] = s + '<a href="'+SegArr.join('/')+'">'+SegArr[i-2]+'</a>';
 }
}
vcx.setPopupHTML(HtmlArr.join(''));
135 名前:n|a:10/03/17 23:30:23 ID:dCrSfbMM
すみません、このところあまり時間が無くてちゃんと見られていません…。

>>129,130

'jaen'の特別扱いはencodeURIComponentの部分を
if(Args=='jaen') {
Text = java.net.URLEncoder.encode(Text,'windows-31j');
} else {
Text = encodeURIComponent(Text);
}
とすれば不要になるかもしれません。
あと'menu'のように翻訳方法が决まっていない場合は元の文字列をHTMLに埋め込まず、
global変数に格納しておいて翻訳方法が决まってからencodeするといいと思います。
>>131
java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment();
に"new"は不要ですが、付けても文句を言わないのか…。
>>132
v2c.openURL(u)のような関数が必要ですね。
>>133
使用法がわかりにくくてすみません…。
v2c.context.setPopupResIndex([0,1,2,3,4]);
136 名前:133:10/03/18 00:31:08 ID:y5cgya/R
こちらの見落としです、すみません...
137 名前:VIICさん:10/03/18 22:31:40 ID:8/M4cvq9
>>135
ありがとうございます。
v2c.openURL(u)だと提示版以外に内部ブラウザも開けると
例えば>134も追加コマンドでポップアップなしで直接
ルートディレクトリを開けたりとか色々使い所がありそうです。
138 名前:VIICさん:10/03/20 19:36:14 ID:ngq7vdYw
>129-130変更 以降コピペ
//【登録場所】 全体、レス表示、選択テキスト
//【ラベル】 Excite翻訳ポップアップ
//【コマンド1】 $SCRIPT excite_translation.js または $SCRIPT excite_translation.js enja 英語⇒日本語
//【コマンド2】 $SCRIPT excite_translation.js jaen 日本語⇒英語
//【コマンド3】 $SCRIPT excite_translation.js chja 中国語(簡体字)⇒日本語
//【コマンド4】 $SCRIPT excite_translation.js chjab 中国語(繁体字)⇒日本語
//【コマンド5】 $SCRIPT excite_translation.js koja 韓国語⇒日本語
//【コマンド6】 $SCRIPT excite_translation.js frja フランス語⇒日本語
//【コマンド7】 $SCRIPT excite_translation.js deja ドイツ語⇒日本語
//【コマンド8】 $SCRIPT excite_translation.js itja イタリア語⇒日本語
//【コマンド9】 $SCRIPT excite_translation.js esja スペイン語⇒日本語
//【コマンド10】 $SCRIPT excite_translation.js ptja ポルトガル語⇒日本語
//【コマンド11】 $SCRIPT excite_translation.js menu コマンド1~10のメニュー表示

//設定

var copy_text = false;//クリップボードにコピーする。
var close_popup = false;//引数'menu'の場合、選択ポップアップを入力後閉じる。

var vcx = v2c.context, Text = vcx.selText, Args = vcx.args[0], Url = new Array(5);

//引数からURLに使う文字列を取得
function getUrlStrArr(a){
 var u = new Array(2);
 if(a == 'enja'){
  u[0] = 'english/'; u[1] = 'ENJA';
 } else if(a == 'jaen'){
  u[0] = 'english/'; u[1] = 'JAEN';
 }else if(a == 'chja'){
  u[0] = 'chinese/'; u[1] = 'CHJA';
 }else if(a == 'chjab'){
  u[0] = 'chinese/'; u[1] = 'CHJA&big5=yes';
 }else if(a == 'koja'){
  u[0] = 'korean/'; u[1] = 'KOJA';
 }else if(a == 'frja'){
  u[0] = 'french/'; u[1] = 'FRJA';
 }else if(a == 'deja'){
  u[0] = 'german/'; u[1] = 'DEJA';
 }else if(a == 'itja'){
  u[0] = 'italian/'; u[1] = 'ITJA';
 }else if(a == 'esja'){
  u[0] = 'spanish/'; u[1] = 'ESJA';
 }else if(a == 'ptja'){
  u[0] = 'portuguese/'; u[1] = 'PTJA';
 }else{
  u[0] = 'english/'; u[1] = 'ENJA';
 }
 return u;
}
//翻訳の選択ポップアップでフォーム送信時の動作
function formSubmitted(u,sm,sd){
 var lang = (u+'').match(/\?(.+?)=/)[1];
 if(lang=='jaen') {
  Text = java.net.URLEncoder.encode(Text,'windows-31j');
 } else {
  Text = encodeURIComponent(Text);
 }
 u = u + '&before='+Text; var usa= getUrlStrArr(lang);
 createPopupString(u.replace(/\?.+?(&before=.+)/, usa[0]+'?wb_lp='+usa[1]+'$1'));
 if(close_popup) v2c.context.closeOriginalPopup();//入力後閉じる。
}
139 名前:138の続き:10/03/20 19:37:13 ID:ngq7vdYw
//翻訳結果のポップアップ表示
function createPopupString(su){
 var sh = v2c.readURL(su);
 if(!sh){
  v2c.alert('ページを取得できませんでした。'); return;
 }
 var mt = new Array(2);
 mt = sh.match(new RegExp('id="after"[^]+?>([^><]+?)</textarea>','i'));
 if(!mt){
  v2c.alert('検索結果を取得できませんでした。'); return;
 }
 ph = '<html><body style="margin:0 5px;">'+mt[1]+'</body></html>';
 vcx.setPopupHTML(ph);
 if(copy_text) v2c.context.setClipboardText(mt[1]);//クリップボードにコピーする。
}
//翻訳する文字列の整形
function editText(text){
 text = text.replaceAll('>>([[\\d]+[,-]?]+)\\n', '$1さん。');//アンカー+改行⇒番号さん。
 text = text.replaceAll('>>([[\\d]+[,-]?]+)', '$1');//アンカー⇒番号
 text = text.replaceAll('[\\n ]', '');//改行削除
 text = text.replaceAll('([R|Q]T ?|)[@#][\\w]+[:]?', '');//Twitter用、ハッシュタグ等削除
 var links = vcx.res.links, link;
 for(var i=0,l = links.length; i < l; i++){//リンクの削除
  link = (links[i]+'').substring(1);
  if((text+'').charAt((text+'').lastIndexOf(link)-1) == 'h'){link = 'h' + link;}
  text = text.replace(link+'','');
 }
 text = text.trim(); return text;
}
if(!Text){var Text = vcx.res.message;}
Text = editText(Text);
if(Args == 'menu'){
 vcx.setPopupHTML('<html lang="ja"><style type = "text/css">'
 +'<!--body{background-color:#cccccc; color:black; text-align:center;}.header{font-size:small;}--></style>'
 +'<body><form action="http://www.excite.co.jp/world/"><table border="0" cellspacing="0" cellpadding="0">'
 +'<tr><th class = "header">Excite翻訳</th></tr>'
 +'<tr><input type="submit" value=" 英⇒日 " name="enja"></tr><tr><input type="submit" value=" 日⇒英 " name="jaen"></tr>'
 +'<tr><input type="submit" value="中(簡)⇒日" name="chja"></tr><tr><input type="submit" value="中(繁)⇒日" name="chjab"></tr>'
 +'<tr><input type="submit" value=" 韓⇒日 " name="koja"></tr><tr><input type="submit" value=" 仏⇒日 " name="frja"></tr>'
 +'<tr><input type="submit" value=" 独⇒日 " name="deja"></tr><tr><input type="submit" value=" 伊⇒日 " name="itja"></tr>'
 +'<tr><input type="submit" value=" 西⇒日 " name="esja"></tr><tr><input type="submit" value=" 葡⇒日 " name="ptja"></tr>'
 +'</table></form></body></html>');
 vcx.setTrapFormSubmission(true);
 vcx.setMaxPopupWidth(97);
}else if( Args != 'menu' && Text && ( Text.length() > 0 ) ){
 if(Args=='jaen') {
  Text = java.net.URLEncoder.encode(Text,'windows-31j');
 } else {
  Text = encodeURIComponent(Text);
 }
 Url[0] = 'http://www.excite.co.jp/world/';Url[2] = '?wb_lp=';Url[4] = '&before='+Text;
 var usa = getUrlStrArr(Args);Url[1] = usa[0];Url[3] = usa[1];
 createPopupString(Url.join(''));
}
140 名前:VIICさん:10/03/20 20:48:16 ID:ngq7vdYw
>>115-116をまとめて修正・変更(あぼーんの無視、ステータスバー表示)。以降コピペ
//【登録場所】 全体、レス表示
//【ラベル】  (この|次の|前の)日で最初のレスにジャンプ(、抽出)
//【コマンド1】 $SCRIPT dailyres.js 選択日の最初のレスにジャンプ
//【コマンド2】 $SCRIPT dailyres.js next (選択日から最近の)次の日で、最初のレスにジャンプ
//【コマンド3】 $SCRIPT dailyres.js prev (選択日から最近の)前の日で、最初のレスにジャンプ
//【コマンド4】 $SCRIPT dailyres.js filter 選択日で抽出
//【コマンド5】 $SCRIPT dailyres.js next filter 選択日の次の日で抽出
//【コマンド6】 $SCRIPT dailyres.js prev filter 選択日の前の日で抽出

var vcx = v2c.context, th = vcx.thread, rs = vcx.res, args = vcx.args, dt = rs.date, da, tt, db, dbt;

var pd = new Date(java.text.SimpleDateFormat('yyyy/MM/dd').format(new Date())).getTime();
if(dt){
 var pt1 = new RegExp('^.+?\\(.\\)'); da = dt.match(pt1)+'';
}
if(da){
 var ix = rs.index, tl = th.localResCount, tgd = '', idx;
 var pt2 = new RegExp('\\d{4}(?:\\/\\d{2}){2}'), fr = new Array();
 //レス番抽出、あぼーんは無視
 if(args[0] == 'next'){
  for(var i = ix; i < tl; i++){
   tgd = th.getRes(i).date; if(!tgd || tgd.search(pt2) == -1) continue; if(tgd.indexOf(da) == -1) break;
  }
  da = tgd.match(pt1)+'';
  for(var j = i; j < tl; j++){
   tgd = th.getRes(j).date; if(!tgd || tgd.search(pt2) == -1) continue; fr.push(j); if(tgd.indexOf(da) == -1) break;
  }
  if(j < tl)fr.pop();
 }else{
  for(var i = ix; i > -1; i--){
   tgd = th.getRes(i).date; if(!tgd || tgd.search(pt2) == -1) continue;
   if(args[0] != 'prev') fr.push(i); if(tgd.indexOf(da) == -1) break;
  }
  if(args[0] == 'prev'){
   da = tgd.match(pt1)+'';
   for(var j = i; j > -1; j--){
    tgd = th.getRes(j).date; if(!tgd || tgd.search(pt2) == -1) continue; fr.push(j); if(tgd.indexOf(da) == -1) break;
   }
   if(j > -1) fr.pop();
  }else{
   if(i > -1) fr.pop();
   for(var j = ix+1; j < tl; j++){
    tgd = th.getRes(j).date; if(!tgd || tgd.search(pt2) == -1) continue; fr.push(j); if(tgd.indexOf(da) == -1) break;
   }
   if(j < tl) fr.pop();
  }
 }
 fr=fr.sort(function(a,b){return((parseInt(a-b)));});
 if(fr.length > 0){
  if(args[0] == 'filter' || args[1] == 'filter') vcx.setFilteredResIndex(fr);
  fd = new Date(da.match(pt2)).getTime(); db = (pd - fd) / 86400000;
  if(db == 0){dbt = '【今日】:';}
  else if(db == 1){dbt = '【昨日】:';}
  else{dbt = '【'+db+'日前】:';}
  vcx.setStatusBarText(da+dbt+fr.length+'レス'); vcx.setResIndexToJump(fr[0]);
 }else{
  if(args[0] == 'next'){vcx.setResIndexToJump(tl-1); vcx.setStatusBarText('次の日はありません。');}
  if(args[0] == 'prev'){vcx.setResIndexToJump(0);vcx.setStatusBarText('前の日はありません。');}
 }
}
141 名前:VIICさん:10/03/22 15:35:54 ID:VeWKyYBi
>>58 のスクリプトを使わせてもらってます。
大文字・小文字を区別させずに抽出したいんですが無理でしょうか?

どなたか回答お願い致します。

142 名前:VIICさん:10/03/22 15:50:20 ID:8IzshYrc
>>141
横からついでに
できれば半角全角区別なしモードも追加して欲しいです…
さらにいえばカタカナひらがなも区別なしモードあれば完璧です…
143 名前:VIICさん:10/03/22 20:15:59 ID:v9eu0P6E
>>141-142
http://codepad.org/JBltPGs3
直接貼りつけようと思ったら「長すぎる行があります」のエラーがウザかったので別にアップロードしました。
144 名前:VIICさん:10/03/22 21:19:22 ID:v9eu0P6E
>>143
条件を複合できるように改変しました。アドレスは同じです。
145 名前:VIICさん:10/03/22 21:50:24 ID:v9eu0P6E
>>143
http://codepad.org/mdV91kU5
アドレス違いました。
「クリップボードを使うかどうか」と「フィルタリングするかどうか 」を引数で判別するようにしました。
ほか、細部を調整しました。
146 名前:VIICさん:10/03/22 21:53:46 ID:v9eu0P6E
>>143
http://codepad.org/HUpglxrx
一部修正。
147 名前:VIICさん:10/03/22 22:49:25 ID:v9eu0P6E
正しく動いてなかったので修正しました。
http://codepad.org/tzFzZLwP
148 名前:141:10/03/23 00:51:36 ID:LtrQwTC0
おお!ありがとうございます!
無事動作っしました。
素晴らしい。

ありがとうございました!

149 名前:142:10/03/23 01:00:53 ID:3O5r9ljH
おおおお素晴らしいありがとうございました!
150 名前:VIICさん:10/03/23 02:14:19 ID:LtrQwTC0
完璧と思ってましたが、
"ignoreZenHan (全角・半角を無視)"
が動作していませんorz
あと選択テキストコマンドに登録し全角カタカナを選択して抽出しようとするとダイアログが出ずにV2Cの動作が重くなります。
なにか処理してるんですかね?
このままでも十分便利ですし満足していますが報告しときます。
151 名前:VIICさん:10/03/23 02:49:37 ID:LtrQwTC0
連レスすいません全角カタカナの件はこのスレ固有の問題?何か仕様が違うんですかね?
わからないorz

 

152 名前:VIICさん:10/03/23 07:42:47 ID:XtPNIICP
tree.jsにコマンド追加

ttp://up2.shinetworks.net/cgi-bin/snup-mini/src/shinemini18250.zip.html

DLKey:V2C

・ツリー表示で本文全部を表示できるようにした。

 【コマンド2】 $SCRIPT tree.js non-outline (開始レスからのツリー(非アウトライン)表示)
 *引数のない【コマンド1】の別表示です。抽出する【コマンド3】以降との組み合わせはできません。
 *元ネタに近い表示ですがリンク処理されてるのはレス番号のみです。
 *重複レス番号の最初の番号色は赤、それ以降は被参照レスがあれば先頭のツリーマークを「▲」
153 名前:VIICさん:10/03/24 01:39:36 ID:gkIfJmcw
>>152
字の大きさが小さいのですが大きくすることはできるのでしょうか?
154 名前:VIICさん:10/03/24 02:55:38 ID:H3DzZxno
>>153
tree.jsを開いて最後の方(638行目)にある。font-size: x-small;を変えてみてください。
例: font-size: midium; とか font-size: 16px;

//ポップアップCSS

var css = "<style type = 'text/css'><!--"
+"body{margin:5px 0 5px 5px; font-size: x-small;}"//←ここ
+".title{font-size: small;}"
+".treemark{color:"+TreeMarkColor+";}"
+".msg{color:"+MsssageColor+";}"
+".ref{color:"+ONumColor+";}"
+"--></style>";
155 名前:VIICさん:10/03/24 03:25:33 ID:3WKWmYdg
横からだが素晴らしい・・・
ありがとうございます!
156 名前:VIICさん:10/03/24 09:03:23 ID:gkIfJmcw
>>154
ありがとうございました!
157 名前:n|a:10/03/24 23:35:12 ID:Z5UAztL8
>>152
ありがとうございます。
頂き物スクリプトページのファイルを差し替えました。
158 名前:VIICさん:10/03/26 23:51:18 ID:YjcoKCoL
>>151
全角カナは置き換えテーブルのコピペ間違いに起因するバグでした。
スピードの件に関しては時間のある時に。
http://codepad.org/9ZeaJgND
159 名前:VIICさん:10/03/27 03:43:59 ID:xMODf/3H
>>158
レスありがとうございます。
なるほど。
更新お待ちしております。
ありがとうございました!
160 名前:VIICさん:10/03/27 22:07:51 ID:ErJhmy8R
tree.jsの動作追加、修正と整理

ttp://up2.shinetworks.net/cgi-bin/snup-mini/src/shinemini18301.zip.html

DLKey:V2C

・アウトライン表示でのレス番号クリックで、クリック番号からの非アウトライン表示+「戻る」ボタンの追加

 *レス番号マウスオーバーでのポップアップが早くてクリック出来ない場合は
 設定→レス表示→レスポップアップ→遅延時間 を変更してみてください。
  あと変更後、「再起動」しないと適用されないようです。また「Shift+」によるポップアップ抑制はききません。
 *上記での非アウトライン表示の場合、ポップアップ下部に「戻る」ボタンを押すと、
  切り替え前のアウトライン表示に戻ります。
・非アウトライン表示で「名前」と「ID」をマウスオーバーでポップアップするようにした。
 *またIDなしの場合、nullが表示してしまうのを修正
・CSSのクラスセレクタを増やした。
・引数以外で設定変更できそうなの(主にCSS)を上方に移動・整理(46~80行目)しました。
 *CSSはアウトライン表示と非アウトラインで別々に分けました。

2chURLをクリック時ってv2c.context.closeOriginalPopup()にかかわらずポップアップ閉じるんだっけ?

うまくいかなかったので代わりに戻るボタンを追加しました。
161 名前:160:10/03/27 23:34:08 ID:ErJhmy8R
抽出対象のコメント色制限が効いてなかったのを修正しました。
ttp://up2.shinetworks.net/cgi-bin/snup-mini/src/shinemini18304.zip.html
162 名前:160:10/03/27 23:44:15 ID:ErJhmy8R
すみません。特に変更はないのですが、v2c.printlnが残っていたので下で
ttp://up2.shinetworks.net/cgi-bin/snup-mini/src/shinemini18305.zip.html
163 名前:あぼーん:あぼーん
あぼーん
164 名前:160:10/03/28 20:06:05 ID:ZgKOGaM1
tree.jsの微変更
ttp://up2.shinetworks.net/cgi-bin/snup-mini/src/shinemini18313.zip.html
DLKey:V2C

・レス番号クリック時にレスに移動した場合、スレッドを更新しないようにした。


すみません。更新確認してませんでした。
>・[Script] URLからスレッドや板を開くことができるようにした。
についてありがとうございます。

50行目 var ReTreePopup = false;

118行目 return v2c.openURL(u,true);
で試してみましたが、リリースノートだと
${SCRIPT:S}となっていますが、${SCRIPT:SFr}でコンソールエラーがなさそうですね。
165 名前:n|a:10/03/28 21:18:36 ID:aX7crZIQ
>>164
気がつかずに${SCRIPT:Frw}でテストしていました…。
一応V2C使用法のページには注意書きを追加しておきましたが、
"Frw"は不要の方向で検討します。
166 名前:VIICさん:10/03/28 22:21:39 ID:ZgKOGaM1
>>165
更新乙です。了解しました。
167 名前:VIICさん:10/03/29 07:40:53 ID:S8sw9heU
複数タブでキーバインド向き。実用的かどうかは…

//【登録場所】 全体、レス表示

//【ラベル】  選択番号のレスタブを(開く|開いて更新|更新).....
//【コマンド1】 ${SCRIPT:SFrw} selectTab.js 選択タブを開く。
//【コマンド2】 ${SCRIPT:SFrw} selectTab.js update1 選択タブを開いて、未取得レス有タブで更新する。
//【コマンド3】 ${SCRIPT:SFrw} selectTab.js update2 選択タブを開いて、更新する。
//【コマンド4】 ${SCRIPT:SFrw} selectTab.js update2 back コマンド2,3の引数2にbackがあると選択タブを裏で更新する。
//*今後${SCRIPT:S}になる可能性あり
//*内部ブラウザタブなどは無視
.
var vcx = v2c.context, option = vcx.args;
var tabnum = parseInt(v2c.prompt("select",""));
if(tabnum > 0){
 var gt = v2c.resPane.getThread(tabnum-1);
 if(gt){
  var url= gt.url;//スレッドURL
  if(url){
   var back = update = always = false, gn = 0;
   back = option[1] == "back";//裏で開く
   m = (option[0]+"").match(/^(update)(1|2)$/);
   if(m){
    update = m[1] == "update";//更新
    always = m[2] == 2;//常に更新
   }
   if(update && !always) gn = gt.resCount-gt.localResCount;//未取得レス数
   update && (gn > 0 || always) ? v2c.openURL(url,true,true,back) : v2c.openURL(url,false,true,back);
  }
 }
}
168 名前:VIICさん:10/03/29 07:58:10 ID:S8sw9heU
>167修正、以下コピペ
//【登録場所】 全体、レス表示
//【ラベル】  選択番号のレスタブを(開く|開いて更新|更新).....
//【コマンド1】 ${SCRIPT:SFrw} selectTab.js 選択タブを開く。
//【コマンド2】 ${SCRIPT:SFrw} selectTab.js update1 選択タブを開いて、未取得レス有タブで更新する。
//【コマンド3】 ${SCRIPT:SFrw} selectTab.js update2 選択タブを開いて、更新する。
//【コマンド4】 ${SCRIPT:SFrw} selectTab.js update2 back コマンド2,3の引数2にbackがあると選択タブを裏で更新する。
//*今後${SCRIPT:S}になる可能性あり
//*内部ブラウザタブなどは無視

var vcx = v2c.context, option = vcx.args;

var tabnum = parseInt(v2c.prompt("対象タブを選択(番号を入力)してください。",""));
if(tabnum > 0){
 var gt = v2c.resPane.getThread(tabnum-1);
 if(gt){
  var url= gt.url;//スレッドURL
  if(url){
   var back = update = always = false, gn = 0;
   back = option[1] == "back";//裏で開く
   m = (option[0]+"").match(/^(update)(1|2)$/);
   if(m){
    update = m[1] == "update";//更新
    always = m[2] == 2;//常に更新
   }
   if(update && !always) gn = gt.resCount-gt.localResCount;//未取得レス数
   update && (gn > 0 || always) ? v2c.openURL(url,true,true,back) : v2c.openURL(url,false,true,back);
  }
 }
}
169 名前:あぼーん:あぼーん
あぼーん
170 名前:n|a:10/04/05 23:42:55 ID:3g1EO2dL
>>166
T20100405で"Frw"は不要になったはずです。
171 名前:VIICさん:10/04/10 07:25:21 ID:NmlrmvIA
とりあえず。Frw系のスクリプトエラーが出る場合がありそうだけど。
前スレをクリックで一度開いて、一度読み込むとエラーはでないみたい。
板が変わったりするとなるのか。外部板だからなのか…

ttp://up2.shinetworks.net/cgi-bin/snup-mini/src/shinemini18478.zip.html

DLKey:V2C
//【登録場所】 全体(コマンド1, 2, 3)、レス表示(コマンド1, 3)
//【ラベル】  前スレを開く|前のレスに移動(前スレも含む)
//【コマンド1】 ${SCRIPT:S} searchPrevThread.js 前スレを開く。
//【コマンド2】 ${SCRIPT:S} searchPrevThread.js prevres 通常は前のレスに移動、レス1で実行すると前スレの最後に移動。
//【コマンド3】 ${SCRIPT:S} searchPrevThread.js prevres newtab 【コマンド1,2】で引数newtabがあると新タブで開く。
172 名前:VIICさん:10/05/01 21:24:37 ID:hzWbdTkK
>171の追加。
ttp://up2.shinetworks.net/cgi-bin/snup-mini/src/shinemini18803.zip.html
DLKey:V2C
//【コマンド4】 ${SCRIPT:S} searchPrevThread.js nextthread レス1に前スレがあれば現スレに置換、なければ追加してコピー

上スクリプトのままだと利用していないので問題ないのですが

${SCRIPT:S}でv2c.getThread(タイトル取得用)の利用すると以下のようなエラーが出る場合があるようです。
sun.org.mozilla.javascript.internal.WrappedException: Wrapped java.security.AccessControlException:
access denied (java.io.FilePermission C:\Program Files\V2C\log\yy61.60.kg\v2cj\subject.txt read)
(<Unknown source>#259) in <Unknown source> at line number 259
実行に間を置くとでないかもしれません。

${SCRIPT:SF}とかだと出ないのですが

他に${SCRIPT:SF}でも固まってしまう場合があって不安定なため、
v2c.getThreadは使用しないようにしました。
この場合、URLの上の行にタイトル名がない場合は前スレ判定しません。

【V2C】 H20100429 [2.0.2_12] (L-0.6.2:x86)

【Java】 1.6.0_20-b02 (Sun Microsystems Inc.)
【OS】 Windows XP Service Pack 3 (x86)
173 名前:n|a:10/05/01 22:34:28 ID:432RO7W1
>>172
前半のAccessControlExceptionが出る件はできれば次回更新で修正します。
v2c.getThread()が固まる件は
ttp://pc12.2ch.net/test/read.cgi/software/1270566010/397,429
の手順でスレッドダンプを取ってもらえると助かります。
174 名前:VIICさん:10/05/01 23:36:29 ID:hzWbdTkK
乙です。
>>173
ttp://www.rupan.net/uploader/download/1272723986.JPG
twitterが更新した時(自動更新の場合も?)にスクリプトを実行すると起きていたかもしれません。
今回は進行状況のバーが途中で止まって固まりました。

【V2C】 H20100501 [2.0.2_13] (L-0.6.2:x86)

【Java】 [P]1.6.0_18-b07 (Sun Microsystems Inc.)
【OS】 Windows XP Service Pack 3 (x86)
【メモリ】 Total(Free)/Max.: 152(89)/247 (Phys. Total/Avail.: 2030/1039) [MB]
175 名前:n|a:10/05/01 23:59:35 ID:432RO7W1
>>174
すみません、V2Cが固まった時にV2Cと同時に表示されたコマンドプロンプトで
Ctrl+Breakを入力してください。
その画像のエラーは外部コマンドでjavaのプログラムを実行しようとして
失敗しているようですが、V2Cが固まる問題と関係あるかどうかはわかりません。
176 名前:VIICさん:10/05/02 00:52:37 ID:FPMLseST
>>175
申し訳ないです。勘違いしていたようです。
通常で起動してV2Cが固まった時に「V2C(コマンドプロンプト)」を実行していました。
現状は「V2C(コマンドプロンプト)」での起動ができないようです。
コマンドプロンプトが一瞬表示(>174が表示?)されて起動できませんでした。
インストーラで上書きしたのがいけなかったかもしれません…
JAVAのバージョンもダウンしてるし…コントロールパネルのは1.6.0_20-b02で最新なのは気になる。
177 名前:VIICさん:10/05/02 01:42:38 ID:FPMLseST
>>175
アンインストールしてzipで上書きした後
V2C.exe /T をしてみましたが、起動できませんでした。
様子見します。
178 名前:n|a:10/05/02 22:20:03 ID:NKeubmo/
>>176,177
すみませんが以下を実行してみてください。
1) 再度インストーラ版でV2Cをインストールする
2) スタートメニューから「V2C(コマンドプロンプト)」を実行する
179 名前:VIICさん:10/05/02 23:21:01 ID:FPMLseST
>>178
変わらず起動しませんでした。フォルダ位置を変えてデフォルトでインストールもやってみましたが
コマンドプロンプトが一瞬表示されるだけで起動しませんでした。
180 名前:179:10/05/03 20:16:01 ID:mVUnl0Gr
>>178 ノーパソのVistaでも同じ挙動だった…

>34,38に外部コマンドを入れてみた。どっちかというとfoobar2000のコマンドテスト。使えたものかどうか。

//【登録場所】 全体、レス表示
//【ラベル】 時計(+外部コマンド)
//【コマンド1】 ${SCRIPT:T} clock.js 時計表示
//【コマンド2】 ${SCRIPT:FST} clock.js excmd 起動時、起動後、レス表示切り替え時に外部コマンドを実行
//*コマンドや条件の設定はコマンド2の初回起動(時計表示のみ)で作成される
// script\scdataフォルダ内の『clk_cmd.txt』を編集する。(もしくは自分で作成してutf-8でscdataフォルダ内に保存)
//*clk_cmd.txtの説明
// [Directory]下ではディレクトリを記述
//  Dir1="C:\Program Files\foobar2000\foobar2000.exe"
//  Dir2="C:\sample1.m3u"
//  Dir3="C:\sample2.m3u"
// のように記述する。[StartCommand]以降では『%Dir1%』や『%Dir2%』とすることで使い回しができる。
// [Argument]下ではコマンドの引数を記述
//  Arg1=/hide
//  Arg2=/exit
//  Arg3=/rand
// のように記述する。[StartCommand]以降では『%Arg1%』や『%Arg2%』とすることで使い回しができる。
// [StartCommand]下ではスクリプト起動時のコマンドを記述
//  %Dir1% %Arg1%
// [EndCommand]下ではスクリプト終了(時計右上の×をクリック)時のコマンドを記述
//  %Dir1% %Arg3%
// [BoardKey, ChengeCommand]下ではレス表示切替時に設定した条件があれば実行される。
//  software,%Dir1% %Arg2% %Dir2%
//  v2cj,%Dir1% %Arg2% %Dir2%
// のように記述する。
// 『板キー,外部コマンド』とすることで設定板キーの場合に『,』以降の外部コマンドが実行される。
// [ThreadTitleKeyword, ChengeCommand]下もレス表示切替時に設定した条件があれば実行される。
//  V2C,%Dir1% %Arg2% %Dir3%
//  ブラウザ,%Dir1% %Arg2% %Dir3%
// のように記述する。
// 『キーワード,外部コマンド』とすることで設定キーワードがあるスレッドの場合に『,』以降の外部コマンドが実行される。
//*板キーよりもキーワードが優先
181 名前:180:10/05/03 20:17:16 ID:mVUnl0Gr
var options = v2c.context.args, isExCmd = options[0]+"" == "excmd";
var jd, jl, jls, jlt, tm, or, nr, er, mt, tt, psw, tbk = tbt = cmd = "", isScroll = false;
var nh1 = "<html><body><center>", nh2 = "</center><table border='0' cellspacing='0' cellpadding='0'><tr>";
var nh3 = "<td><div style='background-color: ", nh4 = "; width: ", nh5 = "px; font-size: 4px;'> </div></td>";
var nh6 = "</tr></table></body></html>", tmp_m = tmp_n = "", mboard, nword;
var df = new java.text.SimpleDateFormat(" HH:mm:ss "), cf = new java.text.DecimalFormat("#######.#");
var al = new java.awt.event.ActionListener() {
actionPerformed: function(e) {
if (jd.isVisible()) {
jl.setText(df.format(new Date()));
var thc = v2c.resPane.selectedThread;
if(!thc){
jlt.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
or = nr = mt = 0, er = 100, tt = "";
} else {
var lrc = thc.localResCount;
if(lrc > 1000) {
or = java.lang.Math.ceil((lrc-thc.newResCount) * 100 / thc.localResCount); nr = java.lang.Math.ceil(thc.newResCount * 100 / lrc); er = 0;
} else {
or = java.lang.Math.ceil((lrc - thc.newResCount) * 0.1); nr = java.lang.Math.ceil(thc.newResCount * 0.1); er = 100 - or - nr;
}
if(tt != thc.title) {
jlt.setText(thc.title); psw = jlt.getPreferredSize().width; isScroll = psw > jlt.getWidth();
(isScroll)? jlt.setHorizontalAlignment(javax.swing.SwingConstants.LEFT) : jlt.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
if (mt != 0) mt=0;
if(isExCmd) {
tbk = thc.board.key + "";
for(var m = 0, mlen = board.length; m < mlen; m++){
mboard = (tbk.match(new RegExp(board[m])) || [])[0];if (mboard) {cmd = changeCmdB[m];break;}
}
tbt = thc.title + "";
for(var n = 0, nlen = keyword.length; n < nlen; n++){
nword = (tbt.match(new RegExp(keyword[n])) || [])[0];if (nword) {cmd = changeCmdK[n];break;}
}
if (cmd != "" && (!(tmp_m == mboard && tmp_n == nword) && !(mlen == m && nlen == n)) && !(nlen != n && tmp_n == nword)) {
if(cmd.length > 0)v2c.exec(cmd);tmp_m = mboard;tmp_n = nword;
}
}
}
if(psw <= 0) mt=0;
if (isScroll) {
jlt.setText(thc?thc.title.substring(mt):"------");psw = jlt.getPreferredSize().width
} else {
jlt.setText(thc?thc.title:"------");
}
jlt.getCaret().setDot(0);
jls.setText(thc?nh1+cf.format(thc.speed)+nh2+nh3+"blue"+nh4+or+nh5+nh3
+"yellow"+nh4+nr+nh5+nh3+"gray"+nh4+er+nh5+nh6:nh1+"-.-"+nh2+nh3+"gray"+nh4+er+nh5+nh6);
jls.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);mt++;thc?tt=thc.title:tt="";
}
tm.start();
}
}
};
var wl = new java.awt.event.WindowListener() {
windowActivated: function(e) {}, windowClosed: function(e) {},
windowClosing: function(e) {if(isExCmd && endCmd.length > 0) v2c.exec(endCmd);},
windowDeactivated: function(e) {}, windowDeiconified: function(e) {},
windowIconified: function(e) {}, windowOpened: function(e) {}
};
182 名前:180:10/05/03 20:18:04 ID:mVUnl0Gr
var rc = new java.lang.Runnable() {
run: function() {
jd = new javax.swing.JDialog();jd.setAlwaysOnTop(true);
jd.setModalityType(java.awt.Dialog.ModalityType.MODELESS);
jd.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jl = new javax.swing.JLabel(" 00:00:00 ");
jl.setFont(jl.getFont().deriveFont(java.awt.Font.PLAIN,24));jd.add(jl);
jlt = new javax.swing.JTextField("スレタイ");
jlt.setFocusable(false);jlt.setEditable(false);jlt.setBorder(null);
jlt.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jd.add(jlt,java.awt.BorderLayout.SOUTH);
jls = new javax.swing.JLabel(nh1+"-.-"+nh2+nh3+"gray"+nh4+100+nh5+nh6);
jd.add(jls,java.awt.BorderLayout.NORTH);jd.pack();jd.setLocation(0,0);jd.setVisible(true);
jd.addWindowListener(wl);
tm = new javax.swing.Timer(500,al);tm.setRepeats(false);if(isExCmd && startCmd.length > 0)v2c.exec(startCmd);tm.start();
}
};
if(isExCmd) {
var txt = v2c.getScriptDataFile('clk_cmd.txt'), cecd = 'utf-8', fs = java.io.File.separator;
if(v2c.readFile(txt) == null){
var MenuList = ["[Directory]","Dir1=","[Argument]","Arg1=","[StartCommand]","[EndCommand]",
"[BoardKey, ChengeCommand]","[ThreadTitleKeyword, ChengeCommand]"];
v2c.writeLinesToFile(txt,MenuList,'utf-8');isExCmd = false;
} else {
var cmdArr = new Array();dir = new Array();arg = new Array();board = new Array();
changeCmdB = new Array();keyword = new Array();changeCmdK = new Array();
var startCmd = endCmd = "", sw = 0, mt;
var cmdTxt = function(str){return str.replace(/%Dir(\d)%/g, function(str, num){
return dir[num-1];}).replace(/%Arg(\d)%/g, function(str, num){return arg[num-1];});}
cmdArr = v2c.readLinesFromFile(txt,cecd);
for (i = 0, il = cmdArr.length; i < il; i++) {
cmdArr[i] = cmdArr[i].replaceAll(fs+fs,fs+fs+fs+fs); cmdArr[i] = cmdArr[i] + "";
if(cmdArr[i].indexOf("[Directory]") != -1) sw = 1;
else if(cmdArr[i].indexOf("[Argument]") != -1) sw = 2;
else if(cmdArr[i].indexOf("[StartCommand]") != -1) sw = 3;
else if(cmdArr[i].indexOf("[EndCommand]") != -1) sw = 4;
else if(cmdArr[i].indexOf("[BoardKey, ChengeCommand]") != -1) sw = 5;
else if(cmdArr[i].indexOf("[ThreadTitleKeyword, ChengeCommand]") != -1) sw = 6;
else {
if(sw > 2) cmdArr[i] = cmdTxt(cmdArr[i]+"");
switch(sw){
case 1:
mt = cmdArr[i].match(/^Dir\d=(.*)$/);if(mt) dir.push(mt[1]);break;
case 2:
mt = cmdArr[i].match(/^Arg\d=(.*)$/);if(mt) arg.push(mt[1]);break;
case 3:
startCmd = cmdArr[i]+"";break;
case 4:
endCmd = cmdArr[i]+"";break;
case 5:
board.push((cmdArr[i]+"").split(",")[0]);changeCmdB.push((cmdArr[i]+"").split(",")[1]);break;
case 6:
keyword.push((cmdArr[i]+"").split(",")[0]);changeCmdK.push((cmdArr[i]+"").split(",")[1]);break;
default:
}
}
}
}
}
javax.swing.SwingUtilities.invokeLater(rc);
183 名前:180:10/05/03 20:19:25 ID:mVUnl0Gr
以下にfoobar2000の例、foobar2000のPreferences > Shell Integration の
「ファイルを追加したらウィンドウを前面に表示する」のチェックを外しておくといいかも。
例1:foobar2000で指定m3uファイルを板が変わったときにランダム実行
[Directory]
[Argument]
[StartCommand]
"C:\Program Files\foobar2000\foobar2000.exe" /hide
[EndCommand]
"C:\Program Files\foobar2000\foobar2000.exe" /exit
[BoardKey, ChengeCommand]
.*,"C:\Program Files\foobar2000\foobar2000.exe" /rand "C:\sample1.m3u"
[ThreadTitleKeyword, ChengeCommand]

例2:foobar2000で指定条件の場合に指定m3uをランダム実行

ただし下にあるRun Commandが必要です。foobar2000\componentsフォルダに入れてください。
ttp://www.foobar2000.org/components/view/foo_runcmd
[Directory]
Dir1="C:\Program Files\foobar2000\foobar2000.exe"
Dir2="C:\sample1.m3u"
Dir3="C:\sample2.m3u"
Dir4="C:\sample3.m3u"
Dir5="C:\sample4.m3u"
[Argument]
Arg1=/hide /runcmd="File/New Playlist"
Arg2=/runcmd="File/Remove Playlist" /runcmd="File/New Playlist" /runcmd="Edit/Add to Playlist"
Arg3=/runcmd="File/Remove Playlist" /exit
[StartCommand]
%Dir1% %Arg1%
[EndCommand]
%Dir1% %Arg3%
[BoardKey, ChengeCommand]
software,%Dir1% %Arg2% %Dir2%
v2cj,%Dir1% %Arg2% %Dir3%
[ThreadTitleKeyword, ChengeCommand]
V2C,%Dir1% %Arg2% %Dir5%
ブラウザ,%Dir1% %Arg2% %Dir4%
184 名前:n|a:10/05/04 22:15:14 ID:LKClbVGc
>>179
インストーラ版をインストールした直後ならば環境の影響を受け難いと思ったのですが
だめでしたか…。
T20100504では>172の前半を修正したのでV2Cが固まる症状にも変化があるかもしれません。
185 名前:VIICさん:10/05/06 22:08:28 ID:aSyd59qM
>>184
修正確認しました。固まる症状はなくなりませんでした。
「V2C(コマンドプロンプト)」についてはvistaとxp両方同じ結果なので、こちらはお手上げです。
どっちもHomeなのでProfessional Editionだと大丈夫とかはないだろうし…
186 名前:あぼーん:あぼーん
あぼーん
187 名前:VIICさん:10/05/09 18:33:01 ID:bsQNJ3z3
更新乙です。不本意かもしれませんが
古いV2C.exeファイルがあったので試したところ/T起動したため貼っときます。

【V2C】 2.1.0 [R20100509] (L-0.5)

【Java】 1.6.0_20-b02 (Sun Microsystems Inc.)
【OS】 Windows XP 5.1 (x86)
【メモリ】 Total(Free)/Max.: 122(71)/494 [MB]
【不具合内容】
>172の使用で固まる。
【調査済項目】
スレッドダンプ
ttp://kissho.xii.jp/1/src/1jyou112943.zip.html
188 名前:n|a:10/05/09 19:44:58 ID:8OSMXnJG
>>187
ありがとうございます。
おそらく次回更新で修正できると思います。
189 名前:あぼーん:あぼーん
あぼーん
190 名前:n|a:10/05/10 23:26:28 ID:aNS34WJd
>>187
すみませんが H20100510 ttp://v2c.s50.xrea.com/V2C_H20100510.jar
を試してもらえませんか?
(どうも>188で思ったほど簡単ではないようです…。)
191 名前:VIICさん:10/05/11 00:44:26 ID:p2DRQ7fA
>>190
乙です。

テスト方法はわりと確実に固まった次の方法で試しました。

一方のカラムに「twitter」でツイッター検索したタブを20秒間隔で更新。
もう片方のカラムに50スレッドほど新規タブで開いて
172スクリプト→タブ閉じる→同スクリプト→タブ閉じる…
を繰り返す。

3セットやりましたが固まらなくなりました。コンソール出力もありません。


【V2C】 H20100510 [2.1.0_01] (L-0.5)
【Java】 1.6.0_20-b02 (Sun Microsystems Inc.)
【OS】 Windows XP 5.1 (x86)
【メモリ】 Total(Free)/Max.: 225(159)/494 [MB]
192 名前:VIICさん:10/05/11 00:51:14 ID:p2DRQ7fA
あと、3セットのうち1回目と3回目は未取得レス有りタブが多くありました。
「未取得レス有りタブの選択で更新」のチェックも入ってます。
193 名前:n|a:10/05/12 00:30:58 ID:33SIZBfq
>>191,192
ありがとうございます。
とりあえず大丈夫のようですね。
194 名前:VIICさん:10/05/13 00:01:20 ID:ZMhnRMXS
安定したようなので元に戻します。使用する場合、H20100510以上でお願いします。
あとコマンド4の引数はnewthreadに変更しました。

ttp://up2.shinetworks.net/cgi-bin/snup-mini/src/shinemini18906.zip.html

DLKey:V2C
//【登録場所】 全体(コマンド1, 2, 3, 4)、レス表示(コマンド1, 3, 4)
//【ラベル】  前スレを開く|前のレスに移動(前スレも含む)|新スレ用テンプレ作成
//【コマンド1】 ${SCRIPT:S} searchPrevThread.js 前スレを開く。
//【コマンド2】 ${SCRIPT:S} searchPrevThread.js prevres 通常は前のレスに移動、レス1で実行すると前スレの最後に移動。
//【コマンド3】 ${SCRIPT:S} searchPrevThread.js prevres newtab 【コマンド1,2】で引数newtabがあると新タブで開く。
//【コマンド4】 ${SCRIPT:S} searchPrevThread.js newthread 新スレ用にレス1のテンプレ作成、前スレがあれば現スレに置換、なければ追加してコピー
195 名前:あぼーん:あぼーん
あぼーん
196 名前:VIICさん:10/05/23 18:33:37 ID:kBHIrMAJ
試してませんでした…
【V2C】 H20100512 [2.1.0_03] (L-0.6.2:x86)
【Java】 1.6.0_20-b02 (Sun Microsystems Inc.)
【OS】 Windows XP Service Pack 3 (x86)
【不具合内容】
v2c.browseURLExt(u)で${SCRIPT:F}の許可が必要になる。
197 名前:n|a:10/05/25 23:06:43 ID:c3VdbR2N
>>196
こちらこそテスト不足ですみません…。
T20100524で修正しました。
198 名前:VIICさん:10/05/31 22:32:13 ID:429yW6Va
getlog系?
【登録場所】 全体、レス表示、リンク
【ラベル】   dat落ちログを取得
【コマンド1】 ${SCRIPT:FwS} getlog.js
ttp://home.puny.jp/uploader2/download/1275312228.zip
DL pass:V2C
199 名前:VIICさん:10/05/31 23:19:13 ID:524oBQPF
頂きました乙
200 名前:VIICさん:10/06/01 00:55:40 ID:+OIQYPxq
>>198
素晴らしい・・・
頂きます
201 名前:VIICさん:10/06/08 23:20:32 ID:2TEtIv6Z
>>198
凄い!マジ感動!
202 名前:VIICさん:10/06/09 19:31:26 ID:7uBQgtHs
getlog ユーザ増えて使いすぎるとだめになるんじゃなかったっけ
203 名前:198:10/06/09 23:28:32 ID:SWsdDzcs
>>202
とりあえず>198はみみずんの
ttp://jbbs.livedoor.jp/bbs/read.cgi/computer/682/1144317464/950
を利用しています。みみずん利用については上記スレ等から各自で判断して使用してください。
204 名前:VIICさん:10/06/10 15:07:25 ID:xWBnyeqp
datopen2使ってるけど
205 名前:VIICさん:10/06/11 00:22:05 ID:XixblKdH
>>198
リンク切れだよね?だれか再うp頼むぜ。
206 名前:VIICさん:10/06/11 00:37:10 ID:9LmK42v1
え?
207 名前:VIICさん:10/06/11 00:49:04 ID:XixblKdH
>>198
無事にDLした。スレ汚しすみません。動作もきちんと動いてくれたすばらしいスクリプトです。
208 名前:VIICさん:10/06/12 18:17:28 ID:dfsTKsPx
>>127
ファイルがDLできない状態になりましたようだけれども、もっかいうpしてくれへんか?
209 名前:VIICさん:10/06/13 23:26:39 ID:lPggl/6k
>>208
>127の追加バージョン
ttp://home.puny.jp/uploader2/download/1276438808.zip
・結果表示するカラムを設定で選択できるようにした。
・引数なしの場合、デフォルトでは(客観的ではないため)NGレス数のカラム表示はしないようにした。

【登録場所】 全体、レス表示

【ラベル】   レスタブすべてのIDランキング
【コマンド1】 $SCRIPT idrank.js 30位以内のレス数ランキング
【コマンド2】 $SCRIPT idrank.js input ランキング表示の設定
210 名前:VIICさん:10/06/13 23:28:49 ID:lPggl/6k
忘れてた…、>209
DL pass:V2C
211 名前:VIICさん:10/06/14 05:03:25 ID:L2n2NryF
>>209>>210
ありがとうございます
212 名前:VIICさん:10/06/14 15:31:52 ID:JTrPThYg
>>209
いただきました。
が、私の環境だと以下のエラー出て動作しませんでした。

sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot read property "time" from null

(<Unknown source>#92) in <Unknown source> at line number 92

【V2C】 2.1.2 [R20100607] (L-0.6.2:x86)

【Java】 1.6.0_20-b02 (Sun Microsystems Inc.)
【OS】 Windows XP Service Pack 3 (x86)
213 名前:VIICさん:10/06/14 17:03:10 ID:L2n2NryF
>>212
こっちでは正常に動作したんだけど。
要望ですが、抽出のため設定した日付を記憶するようにしてほしい。
214 名前:VIICさん:10/06/14 17:28:46 ID:JTrPThYg
エラーの原因分かりました。まちBBSのスレを開いてると駄目なようです。
ここはIDの後ろにホスト名が表示されるからなぁ…
215 名前:n|a:10/06/14 23:57:26 ID:R7wOeBwt
>>212,214
92行目に
if (!resx) continue;
を追加すると
resx = thx.getRes(j);
if (!resx) continue;
time = resx.time-0;
のような状態になります。
これを文字コードUTF-8で保存するとエラーが出なくなるはずです。
216 名前:209:10/06/15 00:24:06 ID:zM8E2MdZ
>>215
ありがとうございます。修正しました。

>>212-214

同じエラーが確認できたのは
ttp://jbbs.livedoor.jp/bbs/read.cgi/computer/10298/1108684328/
のレス番号50のようにレス自体が消去された場合に起こるようです。
また削除要請板のようにIDではなくHOSTの場合も別のエラーが出たため修正しました。
あと保存できるようにした以下のバージョンは、コマンドも変わっているので登録修正をお願いします。

>209の修正・追加バージョン

ttp://home.puny.jp/uploader2/download/1276528457.zip
DL pass:V2C
・レス自体がない場合と、ID:ではなくHOST:の場合にエラーとなるのを修正
・設定項目に「保存」を追加、チェックマークを付けて「保存して閉じる」ボタンを押すと
 チェックした項目を保存します。次回に復元します。チェックが外れた項目は消去されてデフォルトになります。
 *「実行」ボタンをおした場合も保存したい場合はidrank.jsの14行目をtrueにしてください。

【登録場所】 全体、レス表示

【ラベル】   レスタブすべてのIDランキング
【コマンド1】 ${SCRIPT:Frw} idrank.js 30位以内のレス数ランキング
【コマンド2】 ${SCRIPT:Frw} idrank.js input ランキング表示の設定
217 名前:212,214:10/06/15 00:49:15 ID:WazHefJX
>>215-216
V2C作者様のパッチを当てていたところ、スクリプト作者様の修正版まで!
共に快適に動作いたしました。ありがとうございます。
218 名前:VIICさん:10/06/18 02:39:08 ID:+3CS7oco
質問ですが、
レスツリーの表示系のスクリプトのフォントサイズをいじるところって分かる人いますか?
219 名前:VIICさん:10/06/18 03:45:53 ID:mhDr3k8g
>>218
>>153-154 バージョンアップしてるから、いじる行は変わってると思う。
x-small < small < medium < large < x-large < xx-large
他の指定方法はスタイルシートの説明ページとかで検索してね。
220 名前:VIICさん:10/06/19 01:04:10 ID:ItzOkN2V
tree.jsを少し変更・修正
ttp://home.puny.jp/uploader2/download/1276875703.zip
DL pass:V2C
・レス自体がない場合エラーとなるのを修正した。
・アウトライン表示の場合、行の文字数を『だいたい』揃えた。(本文の半角を0.5文字で数えてます。)
 *本文表示文字数を変更する場合は48行目、揃えない場合は49行目をfalseにして調整してください。
・ポップアップ表示(CSS)を調整してみた。

【登録場所】 全体、レス表示

【ラベル】  被参照レスでツリー表示
【コマンド1】 $SCRIPT tree.js (開始レスからのツリー(アウトライン)表示)
【コマンド2】 $SCRIPT tree.js non-outline (開始レスからのツリー(非アウトライン)表示)
他...

>>218

上のリンクの場合は56、57、66、68、69行目のfont-sizeを変更してみてください。
221 名前:n|a:10/06/20 00:22:27 ID:53tT3f78
>>220
すみません、しばらくさぼっていましたが頂き物スクリプトページのファイルを差し替えました。

ところでスクリプトの公開はこちらへの告知だけだと気がつく人もあまり多くないので、

ソフトウェア板の本スレで告知した方がいいのかもしれません。
222 名前:VIICさん:10/06/20 20:52:23 ID:D+NkojuT
スクリプトでポップアップしたウィンドウを任意に移動することができれば良さそうな気がする。
223 名前:VIICさん:10/06/22 22:38:02 ID:D7kdO31v
>>221
ありがとうございます。
頂き物スクリプトページからのみで、ここにはこない可能性もありますね。
個人的実感では、ここにスクリプト書き込む(貼る)人がほとんどいないのがなんとも…
思い付きだけでもなるべく書き込んでみて、改変する人が現れるのを気長に待ってみる。

>>222

ポップアップはスクリプトに限らず左端をドラッグで移動出来ます。

次のスクリプトで確認したのですが「$googleRTSearch.js ext」で
複数カラムで選択対象(上部赤線)レスで実行すると最初の
v2c.setStatus(statusText);
は表示されるのですが以降のv2c.setStatusとvcx.setStatusBarTextが表示されません。
書き込み欄を表示させてると表示されました。内部ブラウザの場合はしょうがないか…
【V2C】 H20100619 [2.1.2_03] (L-0.6.2:x86)
【Java】 1.6.0_20-b02 (Sun Microsystems Inc.)
【OS】 Windows XP Service Pack 3 (x86)
224 名前:VIICさん:10/06/22 22:52:47 ID:D7kdO31v
コピペだと書き込み出来ないみたい・・・
後で貼ります。
225 名前:n|a:10/06/22 23:09:31 ID:NamnxGsy
>>224
すみません、SPAM除けに"http://"をNGワードに設定していました。
またSPAMが現れるまでは"http://"のNGワード設定を解除しておきます。
226 名前:VIICさん:10/06/22 23:15:04 ID:D7kdO31v
ttp://home.puny.jp/uploader2/download/1277215909.zip
DL pass:V2C

【登録場所】 全体、レス表示、選択テキスト

【ラベル】  (対象レス時刻からの)Googleリアルタイム検索
【コマンド1】 $SCRIPT googleRTSearch.js ブラウザで開く。JDICがインストールされている時は内部ブラウザで開く。
【コマンド2】 $SCRIPT googleRTSearch.js ext 外部ブラウザで開く。
*参照: ttp://googlejapan.blogspot.com/2010/06/blog-post_21.html
227 名前:VIICさん:10/06/22 23:17:05 ID:D7kdO31v
>>225
そういう事ですか、了解です。
228 名前:n|a:10/06/23 00:03:09 ID:wiivdLzm
>>223
すみません、「複数カラム」・「書き込み欄」との関連がよくわからないのですが
内部ブラウザの進捗状況表示でステータスバーの表示が上書きされてしまうという
ことでしょうか?
229 名前:VIICさん:10/06/23 00:22:46 ID:+fPvDiMc
>>228
【コマンド2】 の外部ブラウザの場合もです。
レス表示からコマンド2のスクリプトだと
時間範囲入力のprompt表示で
ステータスバーに「リアルタイム検索」
検索文字入力のprompt表示で
ステータスバーに「リアルタイム検索 > 範囲:2010/06/22 23:57:49~2010/06/23 00:57:49」
ブラウザ出力で
ステータスバーに「リアルタイム検索 > 範囲:2010/06/22 23:57:49~2010/06/23 00:57:49 > 検索文字:テスト」
のように表示せずに「Java+Swingによる2chブラウザ V2C_R25: 新着レス 2」のような場合があるみたいです。
230 名前:VIICさん:10/06/23 00:29:14 ID:+fPvDiMc
>>228
上書きですね。「書き込み欄」は確実ではないのかな…、
カラム1つだと上書きは内部ブラウザを開いた場合のみです。
231 名前:VIICさん:10/06/23 01:29:09 ID:+fPvDiMc
V2C更新分のテスト、
ttp://home.puny.jp/uploader2/download/1277223966.zip
DL pass:V2C
・「レス表示欄のタブに表示する」に対応してみる。

【登録場所】 全体、レス表示

【ラベル】   レスタブすべてのIDランキング
【コマンド1】 ${SCRIPT:Frw} idrank.js 30位以内のレス数ランキング(デフォルトの場合、【コマンド2】の保存により変わる。)
【コマンド2】 ${SCRIPT:Frw} idrank.js input ランキング表示の設定
【コマンド3】 ${SCRIPT:Frw} idrank.js input respane 【コマンド1,2】後「respane」有りで別タブ表示、無しでポップアップ表示
232 名前:VIICさん:10/06/24 23:44:24 ID:A9ysj860
>>225
早速SPAMきてますね。"h"+"ttp://"にしておけばよいだろうし解除しなくてもよいかと。
233 名前:あぼーん:あぼーん
あぼーん
234 名前:n|a:10/06/25 00:48:52 ID:kJbOl6sM
>>232
予想よりかなり早かったです…orz。
再度"http://"をNGワードに設定しました。
235 名前:VIICさん:10/06/28 18:56:28 ID:7bc6cg1I
v2c.context.setPopupResIndex([0,1,2,3,4]);
これで1-5をポップアップさせたときに
現在だと5が最初に表示されてしまいます

これを>>1-20って安価をポップアップしたときのように

1を最初に表示するにはどうすれば良いんでしょうか
236 名前:n|a:10/07/04 19:57:07 ID:nSU2vqGC
>>223,229,230
T20100704で改善されたと思います。
>>235
T20100704では最初のレスから表示するようにしました。
237 名前:VIICさん:10/07/05 00:27:25 ID:9svC3dLR
>>236
改善ありがとうございます。

外部コマンド一つでstyle.txtかstyle_tw.txtかを判断して開きたいです。

途中ですが下だとパスが取得できません。

${SCRIPT:F} openStyleTxt.js $STYLEDIR


var vcx = v2c.context;
var th = vcx.thread;
var bbs = th.bbs;
v2c.println(bbs.twitter);
var path = vcx.args[0];
v2c.println(path);

コンソール:

true
$STYLEDIR
238 名前:n|a:10/07/05 23:57:59 ID:5FFiThmC
>>237
すみません、外部コマンドがスクリプトの場合キーワードの置換は行われません。
レス表示スタイルのフォルダは v2c.context.thread.styleDir で取得してください。
次回更新では v2c.context.thread.styleFile で "style.txt"または"style_tw.txt"を
絶対パスで取得できるようにします。
239 名前:VIICさん:10/07/09 00:09:30 ID:XvxJirzk
>>238
見逃してました…

【登録場所】 全体、レス表示

【ラベル】  表示スタイルファイルを開く
【コマンド】 ${SCRIPT:F} openStyleTxt.js

var th = v2c.context.thread;

var s = th.bbs.twitter ? "style_tw.txt" : "style.txt";
var path = new java.io.File(th.styleDir,s);
//v2c.exec('"C:\\Program Files\\EmEditor\\EmEditor.exe" /cp 65001 "'+path+'"');
v2c.exec('"C:\\Windows\\notepad.exe" "'+path+'"');

次回だと↓とかでいいのか、外部コマンド設定のキーワードでもいい気がするけど

v2c.exec('"C:\\Windows\\notepad.exe" "'+v2c.context.thread.styleFile+'"');
240 名前:VIICさん:10/07/10 20:35:52 ID:rasKgR33
本スレに書き込まれたスクリプトをこちらに転載。

ttp://pc12.2ch.net/test/read.cgi/software/1255525714/257

【登録場所】 選択テキスト
【ラベル】 部分引用レス
【内 容】 レス本文を選択→選択部分にレス だとアンカーが最初に書かれる。
      アンカーは出さずに引用したい部分だけ>を付けて書き込み欄へコピー
【スクリプト】
v2c.context.insertToPostMessage('>'+v2c.context.selText.replaceAll('\n(?!$)','\n>'));
241 名前:VIICさん:10/07/10 20:41:05 ID:rasKgR33
ttp://pc12.2ch.net/test/read.cgi/software/1260185912/194
【内 容】 ( ・e・)を自動AA判定する。
【スクリプト】下のスクリプトをメモ帳等のエディタで
       "V2C\script\system\rescheck.js"に保存し(文字コードはUTF-8)
       V2Cを再起動。
// ----- 次の行から -----
function checkAA(res,cx) {
if (res.message.indexOf('( ・e・)')>=0) {
res.setAA(true);
}
}
// ----- 前の行まで -----
242 名前:VIICさん:10/07/10 20:48:15 ID:rasKgR33
ttp://pc12.2ch.net/test/read.cgi/software/1260185912/229
【登録場所】 選択テキスト
【ラベル】(簡易)正規表現でコピー
【コマンド】 $SCRIPT txt2reg.js
【スクリプト】
// ----- 次の行から -----
var str = v2c.getSelectedText()+"";
str=str.replace(/\n/g, "\\n");
str=str.replace(/([.^$[\]{}*+?|()])/g,"\\$1");
str=str.replace(/([^\\])\1+/g,"$1+");
str=str.replace(/(.{2,}?)\1+(?!\+)/g,"($1)+");
v2c.context.setClipboardText(str);
// ----- 前の行まで -----
243 名前:239:10/07/10 23:02:28 ID:G3JtIlRo
>>238
更新乙です。ありがとうございます。>239最後での動作確認しました。

ただ外部コマンドの「キーワード」プルダウンメニューに「$STYLEFILE」がありませんでした。


また下で動作するのを確認しましたが
"C:\Program Files\EmEditor\EmEditor.exe" "/cp 65001" "$STYLEFILE"

スクリプトとは違い、この場合だと

複数カラムで、赤線のフォーカスしていないスレ表示上でマウスジェスチャをすると
フォーカスされた方が対象になるようです。

【V2C】 T20100710 [2.1.2_09] (L-0.6.2:x86)

【Java】 1.6.0_20-b02 (Sun Microsystems Inc.)
【OS】 Windows XP Service Pack 3 (x86)
【メモリ】 Total(Free)/Max.: 195(118)/494 (Phys. Total/Avail.: 2030/827) [MB]
244 名前:239:10/07/10 23:05:08 ID:G3JtIlRo
>243訂正
×スレ表示
○レス表示
245 名前:VIICさん:10/07/11 05:57:41 ID:WyNO0yPg
>>240
このスクリプトを使用したところ、
">〇〇"
のみなので、改行させたいのですがどう変更すれば良いでしょうか?
246 名前:VIICさん:10/07/11 06:13:34 ID:WyNO0yPg
あと改行を2行入れたい場合の記述も教えてください。。。
247 名前:VIICさん:10/07/11 06:53:29 ID:S1389Pxy
>>245
改行
v2c.context.insertToPostMessage('>'+v2c.context.selText.replaceAll('\n(?!$)','\n>')+'\n');

改行+改行

v2c.context.insertToPostMessage('>'+v2c.context.selText.replaceAll('\n(?!$)','\n>')+'\n'+'\n');

適当にやったら出来た。スクリプト分からんのでもっと良い方法があるかも。

248 名前:VIICさん:10/07/11 07:05:55 ID:S1389Pxy
ttp://pc12.2ch.net/test/read.cgi/software/1277558611/295
【内 容】 1001のアンカーはリンクしない
【スクリプト】下のスクリプトをメモ帳等のエディタで
       "V2C\script\system\rescheck.js"に保存し(文字コードはUTF-8)
       V2Cを再起動。
// ----- 次の行から -----
function beginCheck(th,cx) {
return th.bbs.is2ch;
}
function checkRawText(res,cx) {
if (res.number>1000) {
var sti=res.timeid;
if (sti.startsWith("Over ")) {
res.setMessage(res.message.replaceAll("hあttp://","hあttp://"));
}
}
}
// ----- 前の行まで -----

※SPAM対策のため上記スクリプトに”あ”を挿入してます。

ご使用の際は”あ”を削除して下さい。
(弾かれてばっかりでどうすればいいか分からなかったんだよぉ_| ̄|○)
249 名前:VIICさん:10/07/11 07:19:42 ID:S1389Pxy
ttp://pc12.2ch.net/test/read.cgi/software/1277558611/496
【登録場所】 全体、レス表示
【ラベル】動画リンク抽出
【内 容】リンクのホストだけで判断するスクリプトの例。下記はニコニコ動画及びYoutubeのリンクを抽出。
【スクリプト】
// ----- 次の行から -----
var th=v2c.context.thread;
if (th) {
var ll=[];
var nr=th.resCount;
for (var ir=0; ir<nr; ir++) {
var res=th.getRes(ir);
if (!res) {
continue;
}
var lnks=res.links;
for (var il=0; il<lnks.length; il++) {
var sh=lnks[il].url.host;
if (sh.endsWith(".nicovideo.jp")||sh.equals("nico.ms")||(sh.indexOf(".youtube.")>0)||sh.equals("youtu.be")) {
ll.push(ir);
break;
}
}
}
v2c.context.setFilteredResIndex(ll);
}
// ----- 前の行まで -----

※最後から2行目を v2c.context.setPopupResIndex(ll); にすると、

抽出したものをポップアップ表示します。
250 名前:VIICさん:10/07/11 15:33:42 ID:WyNO0yPg
>>247
おお!ありがとうございます!
251 名前:VIICさん:10/07/12 16:01:42 ID:NckRp7OI
>>249
テキストの保存名とコマンドは何でしょうか
252 名前:249:10/07/12 16:17:15 ID:JZvmhknI
>>251
ごめんなさい。テキストの保存名は他と被らなければ任意でOKです。
例えば、movie.js とした場合
【コマンド】 $SCRIPT movie.js
となります。
253 名前:VIICさん:10/07/12 17:14:37 ID:NckRp7OI
>>252
サンクス
254 名前:VIICさん:10/07/12 19:58:38 ID:NckRp7OI
>>56
「スクリプトのコンパイルに失敗しました」ってエラーみたいなのが出ちゃって使えない。
255 名前:VIICさん:10/07/12 20:32:03 ID:NjQql6kj
>>254
レス追って見てる?
>>158が修正バージョンだよ。
256 名前:VIICさん:10/07/12 20:36:43 ID:NckRp7OI
>>255
なーるほど!スレ汚してごめん。
257 名前:VIICさん:10/07/13 01:09:33 ID:ADHrUyWW
ttp://pc12.2ch.net/test/read.cgi/software/1274523175/82
【内 容】 コテハンの人を全部非表示に。でもn|aさんの発言は読めないと困るんです。
      下記のスクリプトはソフトウェア板だけに適用する場合の例。
【スクリプト】下のスクリプトをメモ帳等のエディタで
       "V2C\script\system\rescheck.js"に保存し(文字コードはUTF-8)
       V2Cを再起動。
// ----- 次の行から -----
function beginCheck(th,cx) {
return th.board.key.equals('software')?th.board.anonymousName:null;
}
function checkNG(res,cx) {
var sn=res.name;
if ((sn!=null)&&!sn.startsWith('n|a')&&!sn.equals(cx.checkObject)) {
res.setNG('コテハン');
}
}
// ----- 前の行まで -----
258 名前:VIICさん:10/07/13 01:21:19 ID:ADHrUyWW
※注意
>>257のスクリプトはReplaceStr.txtでデフォルト名無しを
書き換えていると、nlaさん以外全て非表示になる場合があります。

 

259 名前:n|a:10/07/15 23:11:02 ID:/EJzzFoF
>>243
T20100714で修正しました。
260 名前:VIICさん:10/07/16 21:12:12 ID:622qZFvh
>548+1 :# [sage] :2010/07/16(金) 20:57:29 ID:RU072f630 (5/5) [PC]
>>441
>中国語による文字化けが出てきた。修正お願いいたします。

作った人だけどこちらの環境では正常に表示される

もしかするとフォントの問題かもしれないのでフォントを変えて試してみて欲しい
こちらではメイリオ使ってる
261 名前:VIICさん:10/07/16 21:58:13 ID:VC/dcmY7
>>260
今ダウンロードしようとしたらもう削除されいたけれど、
再UPお願いできますでしょうか。
262 名前:VIICさん:10/07/16 22:05:37 ID:622qZFvh
>>261
スクリプトは消えてないけどもしかしてフォントのことかな?
メイリオだったらマイクロソフトからダウンロード出来るはず
本スレで上がってたらしきフォントは俺じゃないので無理です
263 名前:VIICさん:10/07/16 22:11:57 ID:VC/dcmY7
>>262
すみません。激しく勘違いしてました。
全部セットかと思っていたらフォントだけだったんですね。
混乱させてしまってすみません。
264 名前:VIICさん:10/07/17 19:22:23 ID:z2qc3Vpg
win用
ttp://pc12.2ch.net/test/read.cgi/software/1260185912/613
ttp://pc12.2ch.net/test/read.cgi/software/1266717576/23,464,473
の外部コマンドを利用した。

//【登録場所】 全体、レス表示

//【ラベル】  アイコンフォルダを開く or アイコンを適応して再起動
//【コマンド1】 ${SCRIPT:Fx} assistIconEdit.js toolbar png ツールバー用アイコンのあるフォルダをpng拡張子を付けて開く
//【コマンド2】 ${SCRIPT:Fx} assistIconEdit.js item gif reboot アイテム用アイコンをgif拡張子を削除してV2Cを再起動
//
//コマンド2はscriptフォルダ内にV2Creboot.vbsが必要。
//ttp://www39.atwiki.jp/v2cwiki/pages/55.html
//を参照。
//
//引数1はtoolbar、itemが有効。
//引数2はjpeg、png、gif、bmpが有効。
//引数3はrebootの有り無しでコマンド1か2になる。

function startCommand(){

var vcx = v2c.context;
var opts = vcx.args;
var sd = v2c.saveDir;
if((opts[0]+'').search(/(toolbar|item)/) == -1) return;
if((opts[1]+'').search(/(jpeg|png|gif|bmp)/) == -1) return;
if((opts[2]+'').indexOf('reboot') > -1){
v2c.exec('cmd /c ren "'+sd+'\\icon\\'+opts[0]+'\\*.'+opts[1]+'" "*."');
v2c.exec('wscript "'+sd+'\\script\\V2Creboot.vbs" "'+v2c.appDir+'\\V2C.exe"');
} else {
v2c.exec('"C:\\WINDOWS\\explorer" '+sd+'\\icon\\'+opts[0]);
v2c.exec('cmd /c ren "'+sd+'\\icon\\'+opts[0]+'\\*." "*.'+opts[1]);
}
}
startCommand();
265 名前:264:10/07/18 00:42:58 ID:l1uP9xyN
>264の別バージョン
登録や操作が減るしこっちの方がいいかも。

//【登録場所】 全体、レス表示

//【ラベル】  ツールバー(アイテム+α)用アイコン編集
//【コマンド】 ${SCRIPT:Fx} assistIconEdit.js toolbar png
//
//拡張子を追加してアイコンフォルダを開く ⇒再起動ボタン表示
// ⇒ クリック ⇒ アイコンを適応して再起動
//
//コマンド2はscriptフォルダ内にV2Creboot.vbsが必要。
//ttp://www39.atwiki.jp/v2cwiki/pages/55.html
//を参照。
//
//引数1はtoolbar、itemが有効。
//引数2はjpeg、png、gif、bmpが有効。

var vcx = v2c.context;

function formSubmitted(u,sm,sd) {
startCommand(true);
}

function startCommand(reboot){

var opts = vcx.args;
var sd = v2c.saveDir;
if((opts[0]+'').search(/(toolbar|item)/) == -1) return;
if((opts[1]+'').search(/(jpeg|png|gif|bmp)/) == -1) return;
if(reboot){
v2c.exec('cmd /c ren "'+sd+'\\icon\\'+opts[0]+'\\*.'+opts[1]+'" "*."');
v2c.exec('wscript "'+sd+'\\script\\V2Creboot.vbs" "'+v2c.appDir+'\\V2C.exe"');
} else {
v2c.exec('"C:\\WINDOWS\\explorer" '+sd+'\\icon\\'+opts[0]);
v2c.exec('cmd /c ren "'+sd+'\\icon\\'+opts[0]+'\\*." "*.'+opts[1]);
}
}
startCommand(false);
vcx.setPopupHTML('<html><body style="margin:2px 2px 2px 18px;"><form action=""><input type="submit" value="再起動" name="reboot"></form></body></html>');
vcx.setTrapFormSubmission(true);
vcx.closeOriginalPopup();
266 名前:VIICさん:10/07/19 17:08:32 ID:k7mCw9mB
Shift+Enterで書き込み出来るようには出来ないの?
267 名前:VIICさん:10/07/19 17:16:02 ID:bGK0zIug
>>266
キーバインド
268 名前:VIICさん:10/07/21 22:30:30 ID:pY/2sQss
tree.jsのコマンド追加
ttp://home.puny.jp/uploader2/download/1279718378.zip
DL pass:V2C
・ これまでの各コマンドをレス表示欄に表示できるようにした。
・ 他設定を、ファイル内の詳細設定に追加した。
  58行目のReResTreePaneがtrueで、【コマンド20】のアウトライン表示の場合、
  番号クリックでその番号からの非アウトラインをレス表示欄で表示する。(ReTreePopup = trueの場合)
  59行目のNewResPaneがtrueで、【コマンド20】の場合、新しいタブでレス表示欄に表示する。

【登録場所】 全体、レス表示

【ラベル】  被参照レスでツリー表示
【コマンド1】 $SCRIPT tree.js (開始レスからのツリー(アウトライン)表示)
【コマンド2】 $SCRIPT tree.js non-outline (開始レスからのツリー(非アウトライン)表示)
   ・・・
【コマンド20】$SCRIPT tree.js non-outline respane (最後の引数にrespaneを置くと、ポップアップではなくレス表示欄に表示)
269 名前:VIICさん:10/07/21 22:55:26 ID:rx6kmrSa
>>268
頂きました。ありがとう。
270 名前:VIICさん:10/07/22 00:12:37 ID:W6TvW/QA
>>268
     ヘ⌒ヽフ
    ( ・ω・) ㌧㌧
    / ~つと)
271 名前:VIICさん:10/07/22 00:44:28 ID:Qj4u3dey
>>268
頂きました
ありがとうございます
272 名前:VIICさん:10/07/22 12:29:34 ID:O8wJyAlK
>>268
頂きました
更新お疲れ様です
早速ですが、要望よろしいですか?
全レスをツリー表示(非アウトライン)し、新しいタブとして開く機能を追加することは可能ですか?
V2C本スレで上げられていた画像(※1)を見て、
いいなぁ~と思いまして要望を出した次第です

※1ttp://www.odnir.com/cgi/src/nup49435.png

ttp://pc12.2ch.net/test/read.cgi/software/1279551481/238
273 名前:VIICさん:10/07/23 21:01:58 ID:/KfnZbuI
Twitterスレの取得済みログから****年/**月/**日の分だけ抽出してTXTに保存、ってスクリプトでできる?
274 名前:n|a:10/07/24 00:01:22 ID:CL+h3YCP
>>273
とりあえず

var ar=[];

var th=v2c.context.thread;
if (th) {
var nr=th.localResCount;
for (var i=0; i<nr; i++) {
var res=th.getRes(i);
if (res) {
ar.push(res.date);
}
}
}
v2c.writeLinesToFile(v2c.getScriptDataFile('dates.txt'),ar);

はどうでしょうか。

275 名前:268:10/07/24 06:30:50 ID:nn/5/KFE
すみません。環境が変わるため、今後少なくとも数週は対応できないと思います。

tree.jsの機能拡張・修正

ttp://home.puny.jp/uploader2/download/1279920064.zip
DL pass:V2C
・ 非アウトライン用の引数(non-outline)を他のコマンドにも適用できるようにした。

他細かい修正

・ 引数の数が任意のコマンド(link等)だと起動しないのを修正
・ non-outline、respane、filterのコマンドを記載する並び制限を解除
・ レス番号クリックでの挙動が一部変わったかも・・・把握というか整理できていないので現在の仕様

【登録場所】 全体、レス表示

【ラベル】  被参照レスでツリー表示
【コマンド1】 $SCRIPT tree.js (開始レスからのツリー(アウトライン)表示、non-outlineがない場合デフォルトはこのタイプの表示)
【コマンド2】 $SCRIPT tree.js non-outline (開始レスからのツリー(非アウトライン)表示、以降のコマンドに追加で非アウトライン化)
   ・・・

>>272

$SCRIPT tree.js respane all non-outline
ただし、レス表示スタイルは適用できません。ファイル内62行目以降のCSSで多少は表示を変更できます。
PCのスペックによるとは思いますが、レス数(被参照数)が多い場合、表示までに時間がかかります。
276 名前:VIICさん:10/07/24 10:11:09 ID:2SK1xz6T
>>275
頂きました。更新ありがとう。
277 名前:VIICさん:10/07/26 13:00:36 ID:j08z2RWf
スクリプト初心者がこのスレ見て作ってみました。
が、考えてた動作はするんですが、スクリプトの文法(?)は合ってますでしょうか?
何処かとか、何かに負荷がかかるとマズいと思いまして。よろしくお願いします。

【登録場所】 全体、レス表示

【ラベル】テレビ実況板の勢いポップアップ
【内 容】テレビ番組欄@2ch (ttp://epg.2ch.net/tv2chwiki/pukiwiki.php)
     から”勢い”の部分をポップアップ表示するのみ。
【コマンド】 $SCRIPT tv.js
【スクリプト】
// ----- 次の行から -----
function createPopupString() {
var vcx = v2c.context;
var args = vcx.args;
var id = (args.length>0)?args[0]:'0';
var sh = v2c.readURL('hあttp://epg.2ch.net/tv2chwiki/pukiwiki.php');
if (!sh) {
v2c.alert('ページを取得できませんでした。');
return;
}
var mr = sh.match(new RegExp('<div id="body">([^]+?)<div class="jumpmenu">','i'));
if (!mr) {
v2c.alert('抽出できませんでした。');
return;
}
var sr = mr[1];
vcx.setPopupHTML('<html><body style="margin:5px;">'+sr+'</body></html>');
}
createPopupString('ja',true);
// ----- 前の行まで -----

※SPAM対策のため上記スクリプトに”あ”を挿入してます。

278 名前:n|a:10/07/26 23:45:24 ID:vVsdhch6
>>277
気がついたのは
・変数idの値が後で使われない
・最後の行の引数は不要
ということくらいです。
279 名前:277:10/07/27 00:05:32 ID:ZwIf0PTZ
>>278
添削ありがとうございます。本当に分からないのでお恥ずかしいのですが、
こことかレス表示スタイルスレも盛り上がって欲しいなとか思っています。
誰かが使うかもしれないので以下に訂正したものを。

【登録場所】 全体、レス表示

【ラベル】テレビ実況板の勢いポップアップ
【内 容】テレビ番組欄@2ch (ttp://epg.2ch.net/tv2chwiki/pukiwiki.php)
     から”勢い”の部分をポップアップ表示するのみ。
【コマンド】 $SCRIPT tv.js
【スクリプト】
// ----- 次の行から -----
function createPopupString() {
var vcx = v2c.context;
var sh = v2c.readURL('hあttp://epg.2ch.net/tv2chwiki/pukiwiki.php');
if (!sh) {
v2c.alert('ページを取得できませんでした。');
return;
}
var mr = sh.match(new RegExp('<div id="body">([^]+?)<div class="jumpmenu">','i'));
if (!mr) {
v2c.alert('抽出できませんでした。');
return;
}
var sr = mr[1];
vcx.setPopupHTML('<html><body style="margin:5px;">'+sr+'</body></html>');
}
createPopupString();
// ----- 前の行まで -----

※SPAM対策のため上記スクリプトに”あ”を挿入してます。

280 名前:VIICさん:10/07/27 00:14:39 ID:ZwIf0PTZ
上のと似た奴を。

【登録場所】 全体、レス表示

【ラベル】全板縦断ランキングポップアップ
【内 容】2ちゃんねる全板・勢いランキング (ttp://ranking.sitepedia.jp/)
     の全板縦断ランキング上位10位を簡易ポップアップ表示。
【コマンド】 $SCRIPT zenban.js
【スクリプト】
// ----- 次の行から -----
function createPopupString() {
var vcx = v2c.context;
var sh = v2c.readURL('hあttp://ranking.sitepedia.jp/index.html?board=zenban');
if (!sh) {
v2c.alert('ページを取得できませんでした。');
return;
}
var mr = sh.match(new RegExp('<table class="forces" width="100%">([^]+?)<td class="rank">11位</td>','i'));
if (!mr) {
v2c.alert('抽出できませんでした。');
return;
}
var sr = mr[1];
vcx.setPopupHTML('<html><body style="margin:5px;">'+sr+'</body></html>');
}
createPopupString();
// ----- 前の行まで -----

※SPAM対策のため上記スクリプトに”あ”を挿入してます。

281 名前:VIICさん:10/07/27 00:31:02 ID:ZwIf0PTZ
もう一つ、使用が限られるかも。

【登録場所】 選択テキスト

【ラベル】タレントイメージ検索
【内 容】Yahoo!人物名鑑 (ttp://talent.yahoo.co.jp/)を使って
     タレント名を検索し検索結果の一番目の人の顔写真他を簡易ポップアップ表示。
【コマンド】 $SCRIPT t-image.js
【スクリプト】
// ----- 次の行から -----
function createPopupString() {
var vcx = v2c.context;
var ss = vcx.selText;
if (ss) {
ss = ss.trim();
}
if (!ss||(ss.length()==0)) {
v2c.alert('検索語を取得できませんでした。');
return;
}
var sh = v2c.readURL('hあttp://talent.search.yahoo.co.jp/search?p='+encodeURIComponent(ss)+'&type=normal');
if (!sh) {
v2c.alert('ページを取得できませんでした。');
return;
}
var mr = sh.match(new RegExp('<div class="tb">([^]*?)</p></li>','i'));
if (!mr) {
v2c.alert('説明を抽出できませんでした。');
return;
}
var sr = mr[1];
vcx.setPopupHTML('<html><body style="margin:5px;">'+sr+'</body></html>');
}
createPopupString();
// ----- 前の行まで -----

※SPAM対策のため上記スクリプトに”あ”を挿入してます。

スポーツ選手、アナウンサー、文化人(?)などは画像無しになるみたい。
ドラマの脇役で名前はスレに書いてるけど顔がピンとこない...とかに使えるかも。
282 名前:VIICさん:10/07/27 01:32:05 ID:IidLXmbU
便利!
ありがたく使わせていただきます
283 名前:VIICさん:10/07/27 15:00:51 ID:q7kv7pCi
>>280
var sh = v2c.readURL('hあttp://ranking.sitepedia.jp/index.html?board=zenban');
               ↑
               あはミスですよね?
284 名前:VIICさん:10/07/27 15:13:50 ID:lmbJNUdp
最後の行も読めないのか
285 名前:VIICさん:10/07/27 15:20:30 ID:7Ny+/2s2
スパム投稿防止のため、この掲示板ではhttp://~という文字列を含む投稿を規制されているので
該当部に”あ”を挿入してます。

と書けばよかったのだろうか

286 名前:VIICさん:10/07/27 15:28:06 ID:LTr+F9aE
>>280,281
戴いたでござる ありが㌧
287 名前:VIICさん:10/07/27 15:31:01 ID:7Ny+/2s2
ん?もしかしてこう書けばよかったのか?
http://v2c.s50.xrea.com/manual/script.html
288 名前:VIICさん:10/07/28 14:59:40 ID:UuwuFe1f
>>287
すげー!どうやるの?ここはユニコードは使えないはずだが。
289 名前:VIICさん:10/07/28 15:57:16 ID:QXyIzjYr
>>288
文字参照でggr
290 名前:VIICさん:10/07/29 14:49:10 ID:gESPhPGt
十六進でやればよかったのね。

http://v2c.s50.xrea.com/manual/script.html

291 名前:VIICさん:10/07/29 14:51:09 ID:gESPhPGt
もう一度十進でやってみる

ttp://v2c.s50.xrea.com/manual/script.html

292 名前:VIICさん:10/07/29 14:54:45 ID:gESPhPGt
十六進

http://v2c.s50.xrea.com/manual/script.html


十進

ttp://v2c.s50.xrea.com/manual/script.html

293 名前:VIICさん:10/07/29 14:55:41 ID:gESPhPGt
何故か十六進だと化けないw
294 名前:VIICさん:10/07/29 15:17:24 ID:8hhKDFpr
そういうのはテストスレでやろうとか思うのが普通だろ
親の顔が見たいわ
295 名前:VIICさん:10/07/29 15:19:48 ID:VpC8i/Ye
>>280
鯖とかに迷惑にならない限り50位まで取得したいんですが、どう弄ればいいんですか?
296 名前:VIICさん:10/07/29 18:01:30 ID:n4fPC7HP
>>295
スクリプト中の”11位”を”51位”にすればいいと思います。

全板縦断ランキング次のようなやり方もあるそうです。

ttp://pc12.2ch.net/test/read.cgi/software/1274523175/71

71 :名無しさん :2010/05/25(火) 12:51:06 ID:v5W0z3ws0

>>68-69
そういうのは他所から拾ってくればOK、以下名前、ラベルは任意(2ch勢いランキングとか)で省略
1.RSS一覧に次を登録 ttp://ranking.sitepedia.jp/rss/zenban.rdf
2.設定→Web検索で次を登録 ttp://ranking.sitepedia.jp/
  編集→Web検索
以下おすすめ
3.ツールバーのボタン登録領域(デフォだと履歴プルダウン(またはURL欄)とボタンの間)を右クリ
  →URL登録で次を登録 ttp://ranking.sitepedia.jp/
  →アクションを「スレ一覧で開く」→OK→登録ボタン右クリ→定期更新チェック

↑2は、いらないかな。

”あ”の件、わかりづらくてごめん。

297 名前:VIICさん:10/07/29 22:12:36 ID:LCR/S4A/
誰かグーグルイメージ検索のスクリプトを作ってください。
298 名前:VIICさん:10/07/29 23:09:22 ID:iM1H1ZDw
そんなの外部コマンドで充分だろ
299 名前:VIICさん:10/07/29 23:15:48 ID:VpC8i/Ye
ポップアップで表示する方が見やすいじゃん。
300 名前:VIICさん:10/07/30 00:55:15 ID:4zLbCaSt
今更かもしれないけど>>248のスクリプトは元スレ155の要望とはちょっと違っちゃってると思う。
これだとリンクアドレスは無効化されるけど、アンカーはリンクされちゃう。
res.setMessage(res.message.replaceAll(">>","≫"));
8行目はこんな感じなら要望通りになるんじゃないでしょうか?
301 名前:VIICさん:10/07/30 01:07:25 ID:wfFSLOae
超適当ですが

【登録場所】 選択テキスト

【ラベル】Googleイメージ検索ポップアップ
【内 容】Googleイメージ検索の簡易ポップアップ表示。1ページ目のみ。セーフサーチ: 中。
     ”他のキーワード”は表示させてない。
【コマンド】 $SCRIPT gimage.js
【スクリプト】
ttp://www1.axfc.net/uploader/File/so/48496

から落として下さい。書き込もうと思ったが”あ”とか入れても弾かれたので。


表示は出来るけど知識がないのでなんかおかしいのかも。
302 名前:VIICさん:10/07/30 13:35:46 ID:aXn/gq87
>>300
横からだけど謎が解けた!
ありがとー
303 名前:VIICさん:10/07/30 19:07:01 ID:PWaeW8z8
>>301
頂きました。ありがとうございます。
304 名前:VIICさん:10/07/31 09:01:42 ID:ORbH16RI
お願いなのですが
>>74のようなみみずんID検索のポップアップの
スレタイと本文が表示でき
文をコピーできるものをつくって頂けないでしょうか
305 名前:VIICさん:10/08/03 00:18:09 ID:fDuw1yfV
>>249 をちょっと変えたもの

【登録場所】 全体、レス表示

【ラベル】画像リンク抽出
【内 容】ImageViewURLReplace.datをもとにした画像リンクの抽出。(tree.jsにもありますが)
【コマンド】 $SCRIPT image.js
【スクリプト】
// ----- 次の行から -----
var th=v2c.context.thread;
if (th) {
var ll=[];
var nr=th.resCount;
for (var ir=0; ir<nr; ir++) {
var res=th.getRes(ir);
if (!res) {
continue;
}
var lnks=res.links;
for (var il=0; il<lnks.length; il++) {
if(lnks[il].type_IMAGE) {
ll.push(ir);
break;
}
}
}
v2c.context.setFilteredResIndex(ll);
}
// ----- 前の行まで -----

※最後から2行目を v2c.context.setPopupResIndex(ll); にすると、

抽出したものをポップアップ表示します。
306 名前:VIICさん:10/08/03 05:14:16 ID:Y0AcPHRK
>>305
横からサンクス
307 名前:VIICさん:10/08/03 05:33:38 ID:Y0AcPHRK
>>305
ちなみに聞いてみたいんだけど、Twitterにも機能するようにできないでしょうか?
308 名前:VIICさん:10/08/03 08:26:24 ID:QXQr3alE
>>307
もう解決したかな。

・外部コマンド登録時、「ID」に数値等を設定すればキーバインド、マウスジェスチャのリストに表示されるようになる。

・外部コマンドを「全体」で登録するとメインメニューの「コマンド」以下に表示されるようになる。
309 名前:VIICさん:10/08/03 11:57:44 ID:URPO7ji4
>>305
乙かれさまです
これは動画も含まれてしまいますが、
画像(JPG、PNG、GIF、TIFF)だけを抽出したい場合、
どこを修正すればいいでしょうか?
310 名前:VIICさん:10/08/03 12:38:13 ID:emTE3NUX
>>274
おそくなりましたがありがとうございます
res.date以外にも色々足してコマンドに${SCRIPT:Fw}付けるのでいけました
普段新着レスを上に表示するようにしていたので順番が逆になってしまいましたがこれはこれで気にしないことにします

var ar=[];

var th=v2c.context.thread;
if (th) {
var nr=th.localResCount;
for (var i=0; i<nr; i++) {
var res=th.getRes(i);
if (res) {
ar.push(res.name);
ar.push(res.mail);
ar.push(res.date);
ar.push(res.id);
ar.push(res.message);
}
}
}
v2c.writeLinesToFile(v2c.getScriptDataFile('dates.txt'),ar);
311 名前:VIICさん:10/08/03 13:01:09 ID:41ms6vji
>>305
> ImageViewURLReplace.datをもとにした画像リンクの抽出

とあるから動画リンクが含まれてるんじゃないかと。

おそらく動画リンク外したいなら別のスクリプト書いてもらわないといけないですね
312 名前:VIICさん:10/08/03 13:02:02 ID:41ms6vji
安価ミス
>>305>>309
313 名前:VIICさん:10/08/03 13:03:45 ID:1FoLklXT
>>311
そうですか、わかりました
314 名前:VIICさん:10/08/05 13:59:29 ID:fEcL+uN5
ttp://hibari.2ch.net/test/read.cgi/software/1280598891/344
【登録場所】 全体、レス表示
【ラベル】ラーメンタイマー
【コマンド】 $SCRIPT RamenTimer.js
【スクリプト】
java.lang.Thread.sleep(180000);
v2c.alert("ラーメンができました。");
315 名前:VIICさん:10/08/05 15:13:50 ID:zBMTd3TH
>>314
ワラタ
ユーモアがあるなぁ
316 名前:VIICさん:10/08/05 16:32:34 ID:wcaWEH5+
本スレが規制されたの?
317 名前:VIICさん:10/08/09 03:25:20 ID:UTj6B2No
>>309
if(lnks[il].type_IMAGE)

if(lnks[il].url.toString().match(/\.(jpg|png|gif|tiff)/i))

と変更すればURLに画像の拡張子が含まれている物だけを抽出できる

ただしこれはImageViewURLReplace.datを無視するので、
ImageViewURLReplace.datを使って表示している画像は抽出できない
318 名前:309:10/08/09 07:13:34 ID:RQeZiXjy
>>317
ご親切にありがとうございました
319 名前:VIICさん:10/08/11 00:21:54 ID:lL2vcsAx
//【登録場所】リンク、選択テキスト
//【ラベル】ソースを見る
//【内容】ソースをテキスト形式でポップアップ、h抜き対応
//【コマンド】$SCRIPT PopupSource.js
//【スクリプト】
// ----- 次の行から -----
PopupSource();

function PopupSource(){

var ss=" ";
if (v2c.context.selText){
ss = v2c.context.selText;
}
if (v2c.context.link){
ss = v2c.context.link;
ss=ss.toString();
}

if (ss) {

ss = ss.trim();
}
if (!ss) {
v2c.alert('選択テキスト取得失敗');
return;
}

if(ss.match(/(ttp:\/\/.+)/)){

ss = 'h'+RegExp.$1
}

if(ss.match(/(http:\/\/.+)/)){

var source = v2c.readURL(ss);
}
else{
v2c.alert('選択されたテキストにURLが見つかりません');
return;
}

if (!source) {

v2c.alert('ページ取得失敗');
return;
}

v2c.context.setPopupText(source);

return;
}
// ----- 前の行まで -----
320 名前:VIICさん:10/08/11 00:36:37 ID:lL2vcsAx
h抜きでもV2Cはリンクと解釈してくれるので
h抜き対応はあまり意味がなかったかもしれない
ht抜きにも対応する場合は、

if(ss.match(/(ttp:\/\/.+)/)){

ss = 'h'+RegExp.$1
}

の下に


if(ss.match(/(tp:\/\/.+)/)){
ss = 'ht'+RegExp.$1
}

を追加でOK

321 名前:VIICさん:10/08/11 09:17:55 ID:xkNJ9AGg
>>319
乙です。
322 名前:VIICさん:10/08/11 17:37:00 ID:tZmDFcr7
ブラクラチェックのスクリプトってこのスレでもらったっけ
かなと思いながら索してみたら現れた気配がないですね(見つからないだけかも)

というわけで的外れなら申し訳ないですが、ブラクラチェックの

スクリプトがうまく効きません。

どなたか、わかる方いらっしゃいませんでしょうか?

323 名前:VIICさん:10/08/11 18:22:21 ID:k7HlQB0V
>>322
それって本当にスクリプトかな?
ReplaceStrやNGExだったら自分が書いたやつかも知れない。
とりあえず該当するスクリプト?をさらしてみてください。
324 名前:VIICさん:10/08/11 18:31:52 ID:z0wS1SJB
>>319
>>320
GJ!早速使わせてもらってます。
ところでこの機能ってマウスオーバーでは無理ですかね?
そこまでなると、やはりV2C本体で対応してもらえるしかないですかね?
325 名前:VIICさん:10/08/11 21:06:37 ID:tZmDFcr7
>>323
レスどうも

BCcheck.js


function bcchk() {
var ss = v2c.context.selText;
if (ss) {ss = ss.trim();}
if (v2c.context.link){
ss = v2c.context.link;
ss=ss.toString();
}

if (!ss) {

v2c.alert("選択テキストを取得できませんでした。");
return;
}
var uri=fixuri(ss);//テキトーに直す
var tgturi="http://so.7walker.net/?"+uri+"&phishing=on"
var cnt = v2c.readURL(tgturi);
if (!cnt) {
v2c.alert("ページを取得できませんでした。");
return;
}
var ptn=/<br clear="left">(?:[\S\s]+?)<\/font><\/td>[\S\s]+?<td valign=
"bottom">[\S\s]+?\[この([\S\s]+?)<BR><BR><\/TD><\/TR><\/table>/i;
var mr=cnt.match(ptn);
if (!mr){
v2c.alert("説明を抽出できませんでした。");
return;
}
var mr1=RegExp.$1
v2c.context.setPopupHTML("<html><head></head><body><div><p>["+mr1+"
</p><p><a href=\""+tgturi+"\">詳細</a></p></div></body></html>");
}
function fixuri(txt){
var ptn=/\:\/\//i;
var idx=txt.search(ptn);
var turi=txt.slice(idx);
var uri="http"+turi;
return uri;
}
bcchk();

なお、長すぎる!と怒られて改行している箇所があります

326 名前:VIICさん:10/08/11 21:53:33 ID:DSUF3NRd
>>325
それ以前本スレに貼られてたやつだね。
ソースチェッカーオンラインが閉鎖されたから使えないんだと思う。
wikiにaguseの外部コマンドがあるからそれを使うしかないのかな。

aguseのポップアップは自分はうまく出来なかった。

327 名前:VIICさん:10/08/11 22:05:07 ID:tZmDFcr7
>>326 了解です。
328 名前:VIICさん:10/08/12 00:45:21 ID:S6c31Jro
Excite翻訳ポップアップのスクリプトがExciteの仕様変更のためか、機能しなくなりました。
どこを書き換えればよいのかお教えください。
329 名前:VIICさん:10/08/12 02:01:08 ID:nZYVmppG
//【登録場所】 全体、レス表示、選択テキスト
//【ラベル】 Excite翻訳ポップアップ
//【コマンド1】 $SCRIPT excite_translation.js または $SCRIPT excite_translation.js enja 英語⇒日本語
//【コマンド2】 $SCRIPT excite_translation.js jaen 日本語⇒英語
//【コマンド3】 $SCRIPT excite_translation.js chja 中国語(簡体字)⇒日本語
//【コマンド4】 $SCRIPT excite_translation.js chjab 中国語(繁体字)⇒日本語
//【コマンド5】 $SCRIPT excite_translation.js koja 韓国語⇒日本語
//【コマンド6】 $SCRIPT excite_translation.js frja フランス語⇒日本語
//【コマンド7】 $SCRIPT excite_translation.js deja ドイツ語⇒日本語
//【コマンド8】 $SCRIPT excite_translation.js itja イタリア語⇒日本語
//【コマンド9】 $SCRIPT excite_translation.js esja スペイン語⇒日本語
//【コマンド10】 $SCRIPT excite_translation.js ptja ポルトガル語⇒日本語
//【コマンド11】 $SCRIPT excite_translation.js menu コマンド1~10のメニュー表示

//設定

var copy_text = false;//クリップボードにコピーする。
var close_popup = false;//引数'menu'の場合、選択ポップアップを入力後閉じる。

var vcx = v2c.context, Text = vcx.selText, Args = vcx.args[0], Url = new Array(5);

//引数からURLに使う文字列を取得
function getUrlStrArr(a){
 var u = new Array(2);
 if(a == 'enja'){
  u[0] = 'english/'; u[1] = 'ENJA';
 } else if(a == 'jaen'){
  u[0] = 'english/'; u[1] = 'JAEN';
 }else if(a == 'chja'){
  u[0] = 'chinese/'; u[1] = 'CHJA';
 }else if(a == 'chjab'){
  u[0] = 'chinese/'; u[1] = 'CHJA&big5=yes';
 }else if(a == 'koja'){
  u[0] = 'korean/'; u[1] = 'KOJA';
 }else if(a == 'frja'){
  u[0] = 'french/'; u[1] = 'FRJA';
 }else if(a == 'deja'){
  u[0] = 'german/'; u[1] = 'DEJA';
 }else if(a == 'itja'){
  u[0] = 'italian/'; u[1] = 'ITJA';
 }else if(a == 'esja'){
  u[0] = 'spanish/'; u[1] = 'ESJA';
 }else if(a == 'ptja'){
  u[0] = 'portuguese/'; u[1] = 'PTJA';
 }else{
  u[0] = 'english/'; u[1] = 'ENJA';
 }
 return u;
}
//翻訳の選択ポップアップでフォーム送信時の動作
function formSubmitted(u,sm,sd){
 var lang = (u+'').match(/\?(.+?)=/)[1];
 var eText = encodeURIComponent(Text);
 u = u + '&before='+eText; var usa= getUrlStrArr(lang);
 createPopupString(u.replace(/\?.+?(&before=.+)/, usa[0]+'?wb_lp='+usa[1]+'$1'));
 if(close_popup) v2c.context.closeOriginalPopup();//入力後閉じる。
}
330 名前:VIICさん:10/08/12 02:02:34 ID:nZYVmppG
//翻訳結果のポップアップ表示
function createPopupString(su){
 var sh = v2c.readURL(su);
 if(!sh){
  v2c.alert('ページを取得できませんでした。'); return;
 }
 var mt = new Array(2);
 mt = sh.match(new RegExp('id="after"[^]*?>([^><]+?)</textarea>','i'));
 if(!mt){
  v2c.alert('検索結果を取得できませんでした。'); return;
 }
 ph = '<html><body style="margin:0 5px;">'+mt[1]+'</body></html>';
 vcx.setPopupHTML(ph);
 if(copy_text) v2c.context.setClipboardText(mt[1]);//クリップボードにコピーする。
}
//翻訳する文字列の整形
function editText(text){
 text = text.replaceAll('>>([[\\d]+[,-]?]+)\\n', '$1さん。');//アンカー+改行⇒番号さん。
 text = text.replaceAll('>>([[\\d]+[,-]?]+)', '$1');//アンカー⇒番号
 text = text.replaceAll('[\\n ]', '');//改行削除
 text = text.replaceAll('([R|Q]T ?|)[@#][\\w]+[:]?', '');//Twitter用、ハッシュタグ等削除
 var links = vcx.res.links, link;
 for(var i=0,l = links.length; i < l; i++){//リンクの削除
  link = (links[i]+'').substring(1);
  if((text+'').charAt((text+'').lastIndexOf(link)-1) == 'h'){link = 'h' + link;}
  text = text.replace(link+'','');
 }
 text = text.trim(); return text;
}
if(!Text){var Text = vcx.res.message;}
Text = editText(Text);
if(Args == 'menu'){
 vcx.setPopupHTML('<html lang="ja"><style type = "text/css">'
 +'<!--body{background-color:#cccccc; color:black; text-align:center;}.header{font-size:small;}--></style>'
 +'<body><form action="h'+'ttp://www.excite.co.jp/world/"><table border="0" cellspacing="0" cellpadding="0">'
 +'<tr><th class = "header">Excite翻訳</th></tr>'
 +'<tr><input type="submit" value=" 英⇒日 " name="enja"></tr><tr><input type="submit" value=" 日⇒英 " name="jaen"></tr>'
 +'<tr><input type="submit" value="中(簡)⇒日" name="chja"></tr><tr><input type="submit" value="中(繁)⇒日" name="chjab"></tr>'
 +'<tr><input type="submit" value=" 韓⇒日 " name="koja"></tr><tr><input type="submit" value=" 仏⇒日 " name="frja"></tr>'
 +'<tr><input type="submit" value=" 独⇒日 " name="deja"></tr><tr><input type="submit" value=" 伊⇒日 " name="itja"></tr>'
 +'<tr><input type="submit" value=" 西⇒日 " name="esja"></tr><tr><input type="submit" value=" 葡⇒日 " name="ptja"></tr>'
 +'</table></form></body></html>');
 vcx.setTrapFormSubmission(true);
 vcx.setMaxPopupWidth(97);
}else if( Args != 'menu' && Text && ( Text.length() > 0 ) ){
 Text = encodeURIComponent(Text);
 Url[0] = 'h'+'ttp://www.excite.co.jp/world/';Url[2] = '?wb_lp=';Url[4] = '&before='+Text;
 var usa = getUrlStrArr(Args);Url[1] = usa[0];Url[3] = usa[1];
 createPopupString(Url.join(''));
}
331 名前:VIICさん:10/08/12 02:04:17 ID:nZYVmppG
>>328
>138-139を修正しました。

・翻訳抽出する正規表現の修正

・日英翻訳でのテキストエンコード方法の修正(UTF-8?)
・メニュー表示で繰り返しボタンを押すと訳文が変わるのを修正
332 名前:VIICさん:10/08/12 02:53:38 ID:gq4q/27B
>>329,>>330
すばらしい
333 名前:328:10/08/12 08:56:54 ID:S6c31Jro
>>331
ありがとうございました。
334 名前:VIICさん:10/08/12 20:42:40 ID:z6jQ8WQj
このスクリプト、いったいどこの板で使うんだろうか
335 名前:VIICさん:10/08/13 16:26:53 ID:+tpRF6b/
>>301のGoogleイメージポップアップ、グーグル側の仕様変更 ?のため使えなくなりました。
どこか直せば使えるようになるかな。
336 名前:VIICさん:10/08/13 16:47:15 ID:e4t2Ze+6
>>335
17行目の
var mr = sh.match(new RegExp('<div id=resultStats>([^]+?)<div style="position:relative;zoom:1">','i'));

var mr = sh.match(new RegExp('<div id=resultStats>([^]+?)</nobr>','i'));
に変えてみてください。
337 名前:VIICさん:10/08/13 22:26:30 ID:WP2i8lrE
今日、昨日、一週間前のレスを別々に抽出するスクリプトってあったっけ?
338 名前:VIICさん:10/08/13 22:36:54 ID:+tpRF6b/
>>336
表示できるようになりました。
ありがとうございます。
339 名前:VIICさん:10/08/14 01:56:43 ID:kOiAv9FB
ニコニコ動画のステータスをポップアップするスクリプトを作成しました。
ttp://www1.axfc.net/uploader/Sc/so/143613.zip

ttp://pc12.2ch.net/test/read.cgi/software/1279016355/444

の流用です。作成した方ありがとうございます。
さっそくですがURLExec.dat,URLExec2.dat,URLExec3.datでの動作も確認もしました。
340 名前:VIICさん:10/08/14 02:10:20 ID:y9i20fvf
>>339
頂きました。ありがとう。
341 名前:VIICさん:10/08/14 02:12:54 ID:MGS+Q4q9
>>339
使い方.txt
【コマンド】 ${SCRIPT:Fr} PopupStatusTwitter.js
                        ~~~~~~~
一応
342 名前:VIICさん:10/08/14 02:48:08 ID:kOiAv9FB
>>341
どうもです。使い方.txtを追加・修正しました。スクリプトに変更はありません。
ttp://www1.axfc.net/uploader/Sc/so/143635.zip
343 名前:VIICさん:10/08/14 03:14:48 ID:ia9yIQQT
>>342
Twitterの方を作ったものだけど自分のミスがあった
正規表現にデリミタを使う場合は

match(/パターン/,'i') → match(/パターン/i)


としないとiオプションが機能しないと思われる
申し訳ない
344 名前:VIICさん:10/08/14 04:14:02 ID:kOiAv9FB
>>343
どうもです。
動作上は問題なさそうなので、後でまとめて差し替えようかな。
345 名前:VIICさん:10/08/14 09:11:40 ID:bdbWYWga
>>339
リンク切れのようですね。再うpしてお願いします。
346 名前:339:10/08/14 16:23:37 ID:kOiAv9FB
>>345
明示し忘れました。>342が同じものです。

本スレでも触れましたが不具合報告しておきます。


【V2C】 T20100814 [2.1.3_11] (L-0.6.2:x86)
【Java】 1.6.0_21-b07 (Sun Microsystems Inc.)
【OS】 Windows Vista Service Pack 2 (x86)
【メモリ】 Total(Free)/Max.: 123(72)/247 (Phys. Total/Avail.: 1943/720) [MB]
【不具合内容】
setPopupHTMLで、ポップアップ縦方向のサイズが指定したHTMLでの全体サイズと合わない場合がある。
【再現方法】
>342のスクリプトでニコニコ動画リンクをポップアップした場合
【調査済項目】
同じ動画でも合う時と合わない時がある。
サムネイルのサイズを変えるなどで、余分に余る場合と垂直スクロールバーが出現する場合がある
347 名前:n|a:10/08/15 08:52:31 ID:/bI/03rd
>>346
T20100815ではスクロールバーが出る場合に対してはある程度対応できたと思います。
348 名前:VIICさん:10/08/15 12:42:59 ID:4NqPSq6t
>>342
T20100815からスクリプトの重複ポップアップを防止できるようになったのですが、
このスクリプトの場合どう改変したらいいでしょうか?
349 名前:VIICさん:10/08/15 14:04:56 ID:p5D6gmFl
ttp://hibari.2ch.net/test/read.cgi/software/1281788619/39

>>277のスクリプトで、コピーしたとき改行するためには、


var sr = mr[1];

の後に


sr = sr.replace(/<br>/ig,'??<br>');

を挿入してください。多分これでいけると思います。

他のスクリプトも同じ方法で改行が可能です。
350 名前:VIICさん:10/08/15 14:08:24 ID:p5D6gmFl
失礼、上記の挿入する文字列はミスです

sr = sr.replace(/<br>/ig,' <br>');


を挿入してください
351 名前:VIICさん:10/08/15 14:47:40 ID:p5D6gmFl
他のスクリプトの場合は変数(上の例ではsr)の部分を変える必要があります。
要するに最終的に表示するデータに対して<br>を置換する処理を行えばOK。
352 名前:VIICさん:10/08/15 15:12:29 ID:/NTBBCNX
>>339,342更新
【内 容】 ニコニコ動画のステータスをポップアップする
ttp://www1.axfc.net/uploader/Sc/so/144035.zip
* template.txtも変更していますが、%no_live_play%を使用していなければ上書きしないでもそのまま使えるはずです。

・同じ動画IDは重複ポップアップしないようにした。

・パラメータの追加変更、詳細はparameter.txtに記載。また、「%no_live_play%」を「%live_play%」に変更
・タグにリンクを付加した。カテゴリとロックとフリータグで色分けできるようにした。
・カウンタは3桁で「,」が入るようにした。
・リンククリック時に、外部ブラウザか内部ブラウザかを選択できるようにした。(スクリプトファイル内設定)
・テンプレを増やした。template_sample2の中身をコピーしてtemplate.txtに上書きすると情報量が増えます。

>>348

どうぞ
353 名前:VIICさん:10/08/15 15:40:37 ID:4NqPSq6t
>>352
ありがとうございます!
354 名前:VIICさん:10/08/16 00:09:31 ID:cy6xyBY4
こんばんは。
明和水産という掲示板を見るためのスクリプトって作れますか?
下記の書き込みを見て気になって。


51 :名無しさん@お腹いっぱい。 [sage] :2010/08/15(日) 15:28:43 ID:lkkefxvL0 [PC]
明和水産
ttp://www.meiwasuisan.com/frame/

明和水産に対応してくれたらなぁ・・・

やっぱ掲示板としての互換性とかの問題なのかな?
Viewはスクリプト、Xenoはデフォルトで対応してるけど、
V2Cも可能かな?

52+3 :名無しさん@お腹いっぱい。 [sage] :2010/08/15(日) 15:50:39 ID:Mu9mqUe60 (2/2) [PC]

ttp://bbs68.meiwasuisan.com/bbs/test/read.cgi/news/1281852490/
明和水産はURL一部書き換えてスレ直リンだと見れるな
subject.txtの書式が違うのかな
355 名前:VIICさん:10/08/16 21:59:26 ID:/4FaNsaM
>>352
こちらはURLExec.datにどのようにコマンド記述すれば良いのでしょうか・・・
使い方.txt読んであれこれやってもスクリプトエラーが出ました
URLExec.datはstreamingplayerに同梱されていたものです
すいません、場違いな低レベルな質問で。。
356 名前:VIICさん:10/08/16 22:34:49 ID:O01zS7Th
>>355
URLExec.datでスクリプトを起動する
ttp://www39.atwiki.jp/v2cwiki/pages/59.html
357 名前:VIICさん:10/08/16 23:31:07 ID:i2F0Xf6I
>>355
スクリプトのエラーの文章の中に

Cannot find function getPopupOfID


と書いてあったらV2Cが最新版じゃない可能性が高い
最新版で実装された関数が使われているので、T20100815を入れてみて
358 名前:VIICさん:10/08/16 23:33:53 ID:i2F0Xf6I
更新が来たようなので

Ver. 2.1.4 [R20100816] を入れてみて

359 名前:VIICさん:10/08/17 09:32:06 ID:7iQHVD5x
>>356
>>357
ありがとうございます。
>>356にあるようにやったらURLExec2.datでポップアップが出るようになりました。
ほとんど意味がわからずやってますが・・・
360 名前:VIICさん:10/08/17 14:20:58 ID:KwrAsfs7
>>352
素晴らしい、乙です。
ただ、ポップアップのリンクをクリックした時、
var browseExt = false;に設定していても、外部ブラウザで開いてしまいます。
JDICは入れています。
361 名前:360:10/08/17 16:27:17 ID:KwrAsfs7
スクリプトとURLEXEC.datを入れなおしたらできました
失礼しました
362 名前:VIICさん:10/08/17 20:06:24 ID:8vocW89a
>>356
そのページ書いた者です
そこのURLExec2.datの内容は配布されてるURLExec.datの1行目をコピペしただけなんですけど
このスクリプトの場合、URLの取得は自前で行っているようなのでそれに合わせた記述にすべきと思うのですよね

例えばこれとかマッチしちゃうけど、ポップアップでは出来ない模様

ttp://www.nicovideo.jp/watch/1271821303

しかし自分にはスクリプトも正規表現も良く解らんのでお手上げです

分かる人修正お願いします…
363 名前:VIICさん:10/08/17 20:53:19 ID:K3iXyOIc
>>362
スクリプトの44行目を変更

var rgex = new RegExp('(\\?|/|#|)([sn]{1}m\\d+)');


var rgex = new RegExp('(\\?|/|#|)(([sn]{1}m|\\d)\\d+)');
364 名前:VIICさん:10/08/18 01:00:52 ID:ND35hdtK
>>363
横からですがありがとうございます
365 名前:362:10/08/18 01:52:09 ID:0SImer4W
>>363
なるほど、それはスクリプトの方で対応できたのですか

とりあえず、配布されているURLExec.datにあるものでIDが取れそうなものは全部wikiに追加しときました

変なとこあったら修正お願いします
366 名前:VIICさん:10/08/18 01:56:25 ID:0sUUxl0n
//【登録場所】リンク
//【ラベル】リンクのコピー(画像チェック)
//【内容】画像URLをコピーする。もしその画像URLが404なら警告を表示する
//【コマンド】$SCRIPT ImgChecker.js
//【スクリプト】
// ----- 次の行から -----
var url = v2c.context.link;
var hr = v2c.createHttpRequest(url);
var data = hr.getContentsAsString();
var title = '';
if ( hr.responseCode == 404 ){
v2c.alert( '404 見つからない' );
}
else if( hr.responseCode == 503 ){
v2c.alert( '503 サーバが忙しい' );
}
else if( hr.responseCode == 200 ){
if ( !hr.contentType.toString().match( /image\/.+/i ) ) {
if(data.match(/<TITLE>(.+?)<\/TITLE>/i)){
title = RegExp.$1;
}
v2c.alert( title + '\n画像じゃないかも\n' +hr.contentType.toString() );
}
}
else{}
v2c.context.setClipboardText(url);
// ----- 前の行まで -----
367 名前:VIICさん:10/08/18 07:51:15 ID:WSbbZrnx
>>366
画像リンクに実行するとエラーが出る
ttp://img708.imageshack.us/img708/7334/erroroh.png
368 名前:VIICさん:10/08/18 11:36:26 ID:0sUUxl0n
>>367
コマンドが間違ってました

【コマンド】${SCRIPT:S} ImgChecker.js


HttpRequestを使用して通信するので
こうしないとAccessControlExceptionが出ます
失礼しました
369 名前:VIICさん:10/08/19 20:00:46 ID:fGM3BC4s
>>366,368
ありがたく使わせていただいてます。
スクリプト初めて使いましたがこれ以外でも色々と便利になりますね!

あともし可能でしたら、選択テキスト内の複数urlを処理するというようなことも出来ないでしょうか。

404のurlを除外し存在する画像urlだけをコピー、全て存在しない場合は警告ダイアログを出すという感じで…
370 名前:VIICさん:10/08/20 01:08:01 ID:YziqyGpa
よく分からないけど、v2c.context.linksで選択テキストからURLリストが取得できないので、レスから取得にしてみた。
>>366 参考というかコピペしていじった。ありがとう。

var urlList = v2c.context.res.links; //v2c.context.links;

var checkedUrlList = new Array();

for(var i=0, urlCount = urlList.length; i < urlCount; i++)

{
var hr = v2c.createHttpRequest(urlList[i]);
var data = hr.getContentsAsString();
var title = '';
if ( hr.responseCode == 200 ) {
if ( !hr.contentType.toString().match( /image\/.+/i ) ) {
if(data.match(/<TITLE>(.+?)<\/TITLE>/i)){
title = RegExp.$1;
}
v2c.alert( title + '\n画像じゃないかも\n' +hr.contentType.toString() );
} else {
checkedUrlList.push(urlList[i]);
}
}
}

if(checkedUrlList.length != 0) {

v2c.context.setClipboardText(checkedUrlList);
} else {
v2c.alert("image file not found.\n");
}
371 名前:VIICさん:10/08/20 15:51:34 ID:9Gg4zSv2
どなたか
ttp://twitter.com/n_or_a/status/21318031826
こういうTwitterのURL渡したら内容がポップアップするもの作って頂けないでしょうか?
上にあるニコ動スクリプトみたいにURLExec2.datと合わせて使いたいです。

これによると

ttp://watcher.moe-nifty.com/memo/docs/twitterAPI50.txt

API経由でも取得できるようです

例)
ttp://api.twitter.com/1/statuses/show/21318031826.xml
ttp://api.twitter.com/1/statuses/show/21318031826.json
372 名前:VIICさん:10/08/20 18:06:11 ID:dnJgeTby
可能かどうかも判断できないのですが
規制中ならタブの背景色を変更してタブのスレタイ名の先頭に「※ 規制中 ※ 」を付ける
 JaneView用ツールまとめ@wiki - madakanaCheck.js
 ttp://www31.atwiki.jp/jane_js/pages/45.html

と同様の動作若しくはタブの状態を変化させるようなスクリプトを作成して欲しいです

373 名前:VIICさん:10/08/20 21:55:47 ID:y1yWjb8N
>>371
APIは使わずにHTMLで取得しています

//【登録場所】リンク、URLExec

//【ラベル】Tweetのポップアップ
//【内容】Tweetのポップアップ
//【コマンド】$SCRIPT popupTweet.js
//【スクリプト】
//【URLExec】http://twitter\.com/[^/]+/status/\d{11}【tab】$&【tab】$V2CSCRIPT popupTweet.js
// ----- 次の行から -----
popupTweet();

function popupTweet(){

var sid = 'idstring';
var url = v2c.context.link;
if (!url ){
v2c.alert( 'URL取得失敗' );
return;
}
if( url.toString().match( /(http:\/\/twitter\.com\/([^\/]+)\/status\/(\d{11}))/ ) ){
var dat = v2c.readURL( RegExp.$1 );
var sid = RegExp.$2 + RegExp.$3;
if( v2c.context.getPopupOfID( sid ) ){
return;
}
if( dat.match( /entry-content">(.+?)<\/span>/i ) ){
var css = '<style type="text/css"><!--'
+ 'a{color:0000ff;text-decoration:underline;}'
+ '--></style>';
var html = '<html>' + '<head>' + css + '</head>' + '<body>'
+ RegExp.$1 + '</body>' + '</html>';
html = html.replace( /href="\//i, 'href="http://twitter.com/' );
v2c.context.setPopupHTML( html );
v2c.context.setPopupID( sid );
}
else{
v2c.context.setPopupHTML( 'HTML解析エラー' );
}
return;
}
else{
v2c.alert( '未対応のURLです' );
return;
}
}
// ----- 前の行まで -----
374 名前:n|a:10/08/20 23:44:59 ID:HevV8ZLA
>>372
すみません、現在はスクリプトからタブに何かを表示することはできません。
375 名前:VIICさん:10/08/21 01:41:11 ID:Ml7aGVlN
>>373をテンプレート仕様にしてレイアウトを変更しやすくしてみた
相変わらずAPIは使用していないので読み込みの遅さはご了承を
ttp://www1.axfc.net/uploader/Sc/so/145766.zip

スクリーンショット

ttp://xepid.com/src/up-xepid14688.jpg
376 名前:VIICさん:10/08/21 02:06:30 ID:Ml7aGVlN
ポップアップの左上に□が表示されたり、
>>375の画像のようにポップアップの上部に一行分の空白行が出来る場合は、
template.txtの文字コードをSJISやUTF-8のBOM無しに変更すると直るかもしれません…
377 名前:VIICさん:10/08/21 04:11:46 ID:IsALZawT
>>280->>296 が使えなくなってる・・・
どなたか詳しい方修正して欲しいです
378 名前:VIICさん:10/08/21 05:51:43 ID:hsihputM
>>377
普通に使えてるんだけど。
379 名前:VIICさん:10/08/21 07:05:57 ID:+XUrg1GT
要望です。
設定>「外部コマンド」ダイアログで、ラベルやコマンド入力欄に何かを入力してOKボタンを押して、
再度「外部コマンド」を開いた時、前回入力した内容が残っていたので思いついたのですが。

1)選択範囲やチェックでスクリプトを実行した後「外部コマンド」を開くと、スクリプトで設定したテキストが

ラベルやコマンド入力欄などに反映しているといったことができないでしょうか。
例えば>70の新規作成を実行したときになっていると登録がすこし楽になりそう。

以下はあってもなくてもいいのですが、

2)複数タブ表示でスクリプト実行後に、スクリプトでソートした順番でタブの並びを変更。
3)>372,374はスクリプト実行後に、タブ色の「スレッド状態」にスクリプトで設定した色が
スレッド更新まで表示できると面白いかも。
380 名前:VIICさん:10/08/21 07:27:11 ID:+XUrg1GT
一応>379の2、3)で使用例を、
・最近の数レスが最速なスレッドタブの色を変更したり。早い順に並べたり。
・今日一日のレスが最多なスレッドタブの色を変更したり。多い順に並べたり。
スレッド一覧のソートからではできないタイプができるといいかなと思いました。
381 名前:転載:10/08/21 11:53:08 ID:FipzXMoY
ttp://hibari.2ch.net/test/read.cgi/software/1281788619/381
【登録場所】 レス表示
【ラベル】このレスにレス[本文引用]
【内 容】レス番右クリの”このレスにレス[本文引用]”をそのレスの右クリ、或いはマウスジェスチャから
      行えるようにする
【コマンド】 $SCRIPT quote.js
【スクリプト】
v2c.context.insertToPostMessage('>>'+v2c.context.res.number+'\n> '+v2c.context.res.message.replaceAll('\n(?!$)','\n> ')+'\n');

引用後の空白改行がいらない場合は

v2c.context.insertToPostMessage('>>'+v2c.context.res.number+'\n> '+v2c.context.res.message.replaceAll('\n(?!$)','\n> '));
382 名前:VIICさん:10/08/21 12:41:20 ID:FipzXMoY
今さらという感じですが
>>277 の「テレビ実況板の勢いポップアップ」スクリプトで最下部の
”昨日:今日:明日:明後日:明々後日”を表示させないようにするには、

var mr = sh.match(new RegExp('<div id="body">([^]+?)<div class="jumpmenu">','i'));


の行を

var mr = sh.match(new RegExp('<div id="body">([^]+?)">昨日</a>','i'));


に変更してみて下さい。
383 名前:VIICさん:10/08/21 19:39:30 ID:wTOh5DVX
>>381
乙です
マウスジェスチャに登録するにはどうすればいいんでしょうか?
マウスジェスチャのレス表示の項目に見当たらないんですが
384 名前:VIICさん:10/08/21 19:57:22 ID:FipzXMoY
>>383
外部コマンドに登録する際に、ラベルの横のIDに半角英数字でIDを設定しておくと
マウスジェスチャ設定の一番下にその外部コマンドが表示されると思います。

コマンドへのキーバインド・マウスジェスチャの設定

ttp://v2c.s50.xrea.com/manual/extcommand.html
385 名前:VIICさん:10/08/21 21:00:04 ID:wTOh5DVX
>>384
ありがとうございます
386 名前:VIICさん:10/08/21 22:55:26 ID:PgTQbr6v
>>377
俺もだ。
ランキングはポップアップするけどクリックしてもスレが開かない。
387 名前:VIICさん:10/08/21 23:58:03 ID:hsihputM
スクリプトをいっぱい登録したらめちゃな感じになった。
フォルダーを作ってまとめるようにできればいいと思うけど。
388 名前:VIICさん:10/08/22 00:07:09 ID:MXKYf9TG
下位メニューでフォルダが出来る。
389 名前:VIICさん:10/08/22 00:49:25 ID:tRhZcHIJ
>>386
とりあえずスレだけ開けるように

var sr = mr[1];


の下に

sr = sr.replace(/\.\/cache\.php\?thread=/ig,'http://');


を追加
390 名前:371:10/08/22 07:48:54 ID:gW+VASkc
>>373
>>375
ありがとうございます!
自分でも分からんなりに色々やってみてたんですが
APIでの取得までは出来たもののhtmlやらそこら辺のことが分からず挫折してました…
391 名前:VIICさん:10/08/22 10:10:08 ID:dLFRsujr
Googleイメージ検索ポップアップが、Googleの仕様変更のため動かなくなりました。
どこを書き換えればよいか、教えて下さい。
392 名前:VIICさん:10/08/22 11:42:31 ID:WyH3q4cv
>>198ってどうやってつかうもの何ですか?さっぱりわかりませぬ。
393 名前:VIICさん:10/08/22 11:59:27 ID:Bs89ttfd
>>392
分からないことあったらまずヘルプやwikiを見る習慣をつけてください

ttp://www39.atwiki.jp/v2cwiki/pages/56.html

ttp://v2c.s50.xrea.com/manual/extcommand.html
394 名前:VIICさん:10/08/22 13:10:04 ID:zhv8xxDc
>>391
>>336
395 名前:VIICさん:10/08/22 13:13:42 ID:bNLF9YrS
>>391
V2Cが
【V2C】 H20100820 [2.1.5_02] (L-0.7) だと今まで通り動く。
【V2C】 H20100822 [2.1.5_04] (L-0.7) だと検索結果の画像が表示されない。

V2C内部で何か変更してると思われ。スクリプトいじったけどうまく出来なかった。

396 名前:VIICさん:10/08/22 14:35:09 ID:tRhZcHIJ
>>390
API版も出来たので一応。高速になってる…かな?
やたらコメント行が多いのはスクリプト制作の参考になれば…ということで
ttp://www1.axfc.net/uploader/Sc/so/146171.zip

>>375のpopupTweet.jsと差し替えて、URLExecのコマンド部分を


${V2CSCRIPT:FrS} popupTweetAPI.js

と変更すれば使えると思います

397 名前:390:10/08/22 15:17:37 ID:fFMakpoZ
>>396
ありがとうございます!参考にします!!!

ていうか実は>>375を参考に自分でAPI(jsonの方)を試してみてたところです。

大体形になったんですが、速度は大して変わらない感じが・・
これなら制限かからないweb経由の方がいいのだろうか
ていうかやっぱリツイートの数は取れないんですね

自分でやってて気づいたこととりあえず貼っときます。他の方の役に立てば…


?ttps://twitter.com/ditamabow/status/13847708224 みたいな貼られ方する場合もある
ttp://twitter.com/bubble_snow/status/20280125344 みたいに削除済みの場合もある
リンクになるのはURLの他に@xxxxx と #xxxxxx (他にもあるのかも?)
ユーザーの方は半角英数とアンダーバー ハッシュタグは半角英数のみ
398 名前:VIICさん:10/08/22 15:39:15 ID:tRhZcHIJ
>>395
&safe=imagesの直後に&gbv=1を付けるといけるかも
件数が表示されない場合は>>336の</nobr>を<nobr>に
399 名前:395:10/08/22 16:01:36 ID:bNLF9YrS
>>398
> &safe=imagesの直後に&gbv=1を付けるといけるかも

これでいけるようになりました。【V2C】 H20100822 [2.1.5_04] (L-0.7)

(</nobr>で件数も表示されます)

早とちりしてイラナイ事書いてごめんなさい。

400 名前:391:10/08/22 16:10:23 ID:dLFRsujr
Googleイメージ検索ポップアップ動きました!
みなさん、ありがとうございました。
401 名前:VIICさん:10/08/22 18:35:34 ID:EdzLN5Py
>>389
ありがとうございます!<(_ _)> スレ開けるようになりました。

 

402 名前:n|a:10/08/22 22:58:29 ID:1LkNp97p
>>391,395,398-401
原因は
ttp://hibari.2ch.net/test/read.cgi/software/1281788619/384
への対策としてV2CのHTTPで使用するUser-Agentを
"Mozilla/4.0 (compatible)"
から
"Mozilla/5.0 (compatible)"
へ変更したことです。
ある程度以上の問題が起これば元に戻す可能性もありますが、
今のところはこのまま"Mozilla/5.0 (compatible)"にする予定です。
403 名前:VIICさん:10/08/26 08:49:05 ID:9nZbMLr0
ニコニコのステータスポップアップ便利に使わせて貰っています
もしよろしければ同じようなものでニコ生とyoutubeのステータスポップアップも作って頂けませんでしょうか
すごく・・・欲しいです・・・
404 名前:VIICさん:10/08/26 23:21:21 ID:/tC7z84m
たしかに・・・
自分が覗くスレだと圧倒的にyoutubeが貼られてることが多いので尚更っす
405 名前:VIICさん:10/08/27 05:15:21 ID:6B80VF4h
>>403-404
とりあえずYoutube
ttp://www1.axfc.net/uploader/Sc/so/147515.zip

デフォルトではこんな感じ

ttp://xepid.com/src/up-xepid14751.jpg
406 名前:VIICさん:10/08/27 08:00:39 ID:z0Kp4Oo5
>>405
戴きましたありがとー
407 名前:VIICさん:10/08/27 09:00:35 ID:hEm9au0U
>>405
ありがとうございます
使い倒させてもらいます!!

100ちょいほどURLをチェックしてみたんですが

10か20ほどにひとつ程度にエラーの出るURLがあるようです
あまり数は多くのないのであまり支障はないんですが
一応エラーの出た行毎にまとめました

#156行目

ttp://www.youtube.com/watch?v=M1_CLW-NNwc
ttp://www.youtube.com/watch?v=K_xflj26X-w&feature=channel
ttp://www.youtube.com/watch?v=pP3FQ0IXJSc
ttp://www.youtube.com/watch?v=yDSK91mUNLU
ttp://www.youtube.com/watch?v=HjONGEeOSyQ
ttp://www.youtube.com/watch?v=AyOBiC47bRU

#185行目

ttp://www.youtube.com/watch?v=4dogXk1KmRI
408 名前:VIICさん:10/08/27 14:58:45 ID:6B80VF4h
>>407
報告ありがとう。修正した
ttp://www1.axfc.net/uploader/Sc/so/147574.zip

自分の環境では156行目一番下、185行目のエラーしかでなかったので

もし156行目でまだエラーが出るようなら、エラーダイアログの文章を教えて欲しい
409 名前:VIICさん:10/08/27 15:16:49 ID:rwPvQzk2
>>408
お疲れ様です。スクリプト作成ありがとうございます。
自分も >>407さんと同様にエラーが出ます。

>>405 のVer.では

>>407の上3つが156行目、最後の動画は177行目に出ます。
以下エラーメッセージ

タイトル: スクリプトエラー: URLExec

メッセージ: スクリプトの実行中にエラーが発生しました。
sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot call method "replaceAll" of null (<Unknown source>#177) in <Unknown source> at line number 177

>>408 のVer.では

>>407の全部の動画において下記のエラーが出ます。

タイトル: スクリプトエラー: URLExec

メッセージ: スクリプトの実行中にエラーが発生しました。

sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot call method "replaceAll" of null (<Unknown source>#188) in <Unknown source> at line number 188

410 名前:VIICさん:10/08/27 15:18:39 ID:rwPvQzk2
>>409
> 上3つが156行目
上6つが156行目 の間違いです。すみません。
411 名前:VIICさん:10/08/27 15:22:18 ID:yLukbS8J
いやぁ、URLExec.datでスクリプト起動ってほんと夢が広がるなぁ
412 名前:407:10/08/27 15:50:53 ID:hEm9au0U
ね、ほんと便利だ・・・

>>408

対応ありがとうございます
自分は更新バージョンでエラーは出なくなりました
他のURLも多数試してみましたが全く問題なしです
一応環境を

【V2C】 H20100822 [2.1.5_04] (L-0.6.2:x86)

【Java】 1.6.0_21-b07 (Sun Microsystems Inc.)
【OS】 Windows Vista Service Pack 2 (x86)
【メモリ】 Total(Free)/Max.: 269(157)/469 (Phys. Total/Avail.: 2007/760) [MB]
413 名前:VIICさん:10/08/27 16:41:51 ID:btb1Fri6
ニコニコ動画のステータスをポップアップするスクリプトをマウスオーバーで実行する場合のURLExec2.datの
記述が解らないのですが、誰か教えて頂けませんか。
414 名前:409:10/08/27 17:52:34 ID:zALbCZ9V
>>408 のスクリプトの180行目を変更したらエラーが出なくなりました。
ディレクトリの指定の”\\”を変更してませんでした。すみません。

>>413

Wikiを参考にしてみたらどうでしょうか?
ttp://www39.atwiki.jp/v2cwiki/pages/59.html
415 名前:VIICさん:10/08/27 18:17:48 ID:btb1Fri6
>>414
ありがとう。マウスオーバーでポップアップ出来る様になりました。
416 名前:VIICさん:10/08/29 07:02:03 ID:RqzN+pRT
いつもスクリプトありがとうございます。
ところで、ニコ動やyoutubeのポップアップはマウスオーバー外すと
自動で閉じるようにはできないのでしょうか?
417 名前:VIICさん:10/08/29 08:57:35 ID:PZsn4ClL
むしろマウスオーバーで自動的にポップアップするようにしてほしい。
418 名前:VIICさん:10/08/29 09:38:01 ID:GXcJfRNT
マウスオーバーで動画情報をポップアップするの、便利ですね
マウスをリンクから放した時に自然にポップアップが消えるようにはできませんか?
419 名前:VIICさん:10/08/29 09:53:37 ID:fM3xivVA
>>416
というか、スクリプトでポップアップしたウィンドウ全部そう出来るようになったらうれしい
V2Cのレスポップアップはそうだし
今更挙動の変更は問題あるかもしれないけど…
それ用のポップアップメソッド別に用意して、使う人が適宜書き換えて対応とかでも十分なので
420 名前:n|a:10/08/29 23:41:23 ID:LgxwqO7F
>402のUAの変更は結局役に立たなくなったようなので、
ttp://hibari.2ch.net/test/read.cgi/software/1281788619/681
T20100829でUAは"Mozilla/4.0 (compatible)"に戻して
egs.saloon.jpだけ特別扱いにしました。
421 名前:VIICさん:10/08/31 21:56:53 ID:wb62x2jC
適当にこんなん作ってみたけどどうかな
こうした方がいいとかある?

//【登録場所】レス表示

//【ラベル】お気に入りレスに登録
//【内容】気に入ったレスを仮想スレにスクラップするだけ
//【コマンド】${SCRIPT:Fw} favorite_res.js
// ----- 次の行から -----
var file = new java.io.File("ログの適当な板のディレクトリ\\2345678901.dat");
var pw = new java.io.PrintWriter(new java.io.BufferedWriter(new java.io.FileWriter(file, true)));
var message = v2c.context.res.message;
message = message.replace("\n","<br>");
pw.println(v2c.context.res.name + "<>" + v2c.context.res.mail + "<>" + v2c.context.res.date + " ID:"
+ v2c.context.res.id + "<> " + message +"<br>" + v2c.context.thread.url + v2c.context.res.number);
pw.close();
// ----- 前の行まで -----
422 名前:VIICさん:10/08/31 22:04:48 ID:GQpqIzQN
>>421
仮想スレかぁ こんな使い方もできるのか

過去ログ検索の結果を1スレにまとめる とかそういうのはできたら便利そう

423 名前:VIICさん:10/09/01 09:41:49 ID:kFjliWZ7
スクリプトのまとめページみたいなのないの?
424 名前:VIICさん:10/09/01 09:47:43 ID:PScu0c5z
>>279-280のポップアップ中のリンクをクリックしても飛ばなくなったんだけど、
俺だけなのかな?
【V2C】 T20100829 [2.1.5_05] (L-0.6.2:x86)
【Java】 1.6.0_18-b07 (Sun Microsystems Inc.)
425 名前:VIICさん:10/09/01 09:47:44 ID:OJFdKfUl
>>423
どうぞどうぞ
426 名前:VIICさん:10/09/01 09:55:23 ID:kFjliWZ7
>>421
このところでエラー吐く
var file = new java.io.File("ログの適当な板のディレクトリ\\2345678901.dat");

具体的にディレクトリ指定した例出してくれると助かる

427 名前:VIICさん:10/09/01 10:34:07 ID:Ucg24BqZ
>>424
全板横断の方は、>>389
sr = sr.replace(/\.\/cache\.php\?thread=/ig,'http://');

sr = sr.replace(/cache\.php\?thread=/ig,'http://');
に変更。

TVの方は、

var sr = mr[1];
の下に、
sr = sr.replace(/href="\?/ig, 'href="http://epg.2ch.net/tv2chwiki/pukiwiki.php?');
を追加
428 名前:VIICさん:10/09/01 10:49:46 ID:wdIUn0Yu
>>427
ありがとうございます。
429 名前:VIICさん:10/09/01 13:27:34 ID:7gFfwWkJ
>>426
じゃあこれで
このスレのURLの数字部分を2222222222に変えると使える

//【登録場所】レス表示

//【ラベル】お気に入りレスに登録
//【内容】気に入ったレスを仮想スレにスクラップするだけ
//【コマンド】${SCRIPT:Fw} favorite_res.js
// ----- 次の行から -----
var file = new java.io.File(v2c.saveDir, "\\log\\yy61.60.kg\\v2cj\\2222222222.dat");
var pw = new java.io.PrintWriter(new java.io.BufferedWriter(new java.io.FileWriter(file, true)));
var message = v2c.context.res.message;
message = message.replace("\n","<br>");
pw.println(v2c.context.res.name + "<>" + v2c.context.res.mail + "<>" + v2c.context.res.date + " ID:"
+ v2c.context.res.id + "<> " + message +"<br>" + v2c.context.thread.url + v2c.context.res.number);
pw.close();
// ----- 前の行まで -----
430 名前:VIICさん:10/09/01 13:38:00 ID:11XGgprQ
>>429
便利だけど、本文中に\nが含まれてるとバグるね
俺には回避の仕方が分からないけど
431 名前:VIICさん:10/09/01 13:59:34 ID:7gFfwWkJ
>>430
おおサンクス
これで直ったはず
原因は"<"と">"だった

このスレのURLの数字部分を2222222222に変えると使える


//【登録場所】レス表示
//【ラベル】お気に入りレスに登録
//【内容】気に入ったレスを仮想スレにスクラップするだけ
//【コマンド】${SCRIPT:Fw} favorite_res.js
// ----- 次の行から -----
var file = new java.io.File(v2c.saveDir, "\\log\\yy61.60.kg\\v2cj\\2222222222.dat");
var pw = new java.io.PrintWriter(new java.io.BufferedWriter(new java.io.FileWriter(file, true)));
var message = v2c.context.res.message;
message = message.replace("<", "<");
message = message.replace(">", ">");
message = message.replace("\n","<br>");
pw.println(v2c.context.res.name + "<>" + v2c.context.res.mail + "<>" + v2c.context.res.date + " ID:"
+ v2c.context.res.id + "<> " + message +"<br>" + v2c.context.thread.url + v2c.context.res.number);
pw.close();
// ----- 前の行まで -----
432 名前:VIICさん:10/09/01 14:03:41 ID:7gFfwWkJ
>>431何度も申し訳ない

//【登録場所】レス表示

//【ラベル】お気に入りレスに登録
//【内容】気に入ったレスを仮想スレにスクラップするだけ
//【コマンド】${SCRIPT:Fw} favorite_res.js
// ----- 次の行から -----
var file = new java.io.File(v2c.saveDir, "\\log\\yy61.60.kg\\v2cj\\2222222222.dat");
var pw = new java.io.PrintWriter(new java.io.BufferedWriter(new java.io.FileWriter(file, true)));
var message = v2c.context.res.message;
message = message.replace("<", "&_lt;"); //&_lt;のアンダーバーを抜いて
message = message.replace(">", "&_gt;"); //&_gt;のアンダーバーを抜いて
message = message.replace("\n","<br>");
pw.println(v2c.context.res.name + "<>" + v2c.context.res.mail + "<>" + v2c.context.res.date + " ID:"
+ v2c.context.res.id + "<> " + message +"<br>" + v2c.context.thread.url + v2c.context.res.number);
pw.close();
// ----- 前の行まで -----
433 名前:VIICさん:10/09/01 14:32:15 ID:rWM4OJnj
>>432
乙です
434 名前:VIICさん:10/09/01 16:52:15 ID:yW3s80xY
使わせてもらいましたのぜ。面白い。

これメモったスレを直接編集する方法あるかな?

datをイジるしか方法無さげ?
435 名前:VIICさん:10/09/01 17:51:04 ID:PScu0c5z
>>427
ありがとう。
436 名前:VIICさん:10/09/01 20:20:15 ID:PuSRIJt4
V2C本体に実装してもらいたいな。
437 名前:VIICさん:10/09/01 20:53:05 ID:kFjliWZ7
これは助かる
438 名前:VIICさん:10/09/01 21:08:41 ID:aG8+vTlP
>>432
初歩的な質問なんですが、スクラップしたdatファイルはV2Cから読み込めるのでしょうか?
439 名前:VIICさん:10/09/01 21:32:27 ID:65aoOTa7
メインツールバーに登録した
マウスジェスチャの設定をしたらマークより使いやすくて良いな
440 名前:438:10/09/01 23:24:32 ID:K0dNy0jQ
>>432
度々すみません。
このスクリプトで文字コードを指定して(CP932等)datファイルを保存するようにするには
どのように変更すれば良いでしょうか?
441 名前:VIICさん:10/09/02 01:24:56 ID:VG/5a8w7
>>438
>>431
442 名前:VIICさん:10/09/02 02:00:43 ID:Vqk7Hcqv
>>439
付箋やマークはまとめて1スレで表示できないってのもあるしな
削除したり管理すること考えるとちょっと面倒だけど
443 名前:VIICさん:10/09/02 15:31:43 ID:w9n9lDoa
キーワード(2ch)のタグクラウド風味ポップアップ
ttp://xepid.com/src/up-xepid14798.jpg

【登録場所】全体、レス表示

【ラベル】タグクラウド
【内容】2chキーワードのタグクラウド風ポップアップ
【コマンド】$SCRIPT keyword2ch.js
【スクリプト】
ttp://www1.axfc.net/uploader/Sc/so/149408.zip
444 名前:VIICさん:10/09/02 15:36:24 ID:w9n9lDoa
※今のところキーワードのリンクはwebブラウザでしか開けません
445 名前:VIICさん:10/09/02 16:04:58 ID:tL/SlRST
>>443
おお これいいな
面白い上に便利
446 名前:VIICさん:10/09/02 16:20:10 ID:RuoE205u
>>442
削除はとりあえず外部コマンドで「テキストエディタでDATファイルを開く」を登録して
手作業でばっさりw
447 名前:VIICさん:10/09/02 17:06:42 ID:tL/SlRST
>>446
レス削除くらいならスクリプトで実現できるだろうけど
管理のことを考えるとGUIが欲しいところ

datとしてファイルになってるんだからV2C本体の機能で実現する必要はないというか

そういう外部アプリがあればいけそうだね

と思ったけど、管理っつってもやることは削除くらいしか思いつかないな

いらねえか

付箋やマーカーと連動させられたらうれしいと思ったんだけど

スクリプトではここら辺触れないっぽいねぇ
448 名前:VIICさん:10/09/02 19:52:13 ID:TWVnOlFz
ttp://img710.imageshack.us/img710/3742/v2c.png
このスクリプトで抽出されたキーワードが元のより少ないのは何で?
449 名前:VIICさん:10/09/02 19:54:49 ID:C8i++i41
>>448
そのスキンどこにあるか教えてください
450 名前:VIICさん:10/09/02 20:22:34 ID:w9n9lDoa
>>448
キーワードの取得はhtml形式とjson形式があって
jsonの場合は10件のデータが得られるようです。

>>443はhtmlから取って来てるので件数が少なくなってます。

451 名前:VIICさん:10/09/02 20:43:44 ID:TWVnOlFz
ttp://www1.axfc.net/uploader/Sc/so/149481
このスキンは元ソースを適当に改造したものだから、
フォントやサイズなどそこら辺は自分で合わせるようにいじってください。
452 名前:VIICさん:10/09/02 20:44:49 ID:TWVnOlFz
>>451>>449へのレスです。スレ汚してすみません。
453 名前:VIICさん:10/09/02 20:48:52 ID:aMh90Amb
>>447
スクリプト書くなら、お気に入りレスのスレかどうかチェックして、レス番号取得して、その行を削除するだけだから簡単だな
454 名前:VIICさん:10/09/02 20:49:19 ID:TWVnOlFz
>>450
件数が少なくなってるだけじゃなく、同じスレで実行するごとにキーワードも変わってる。
455 名前:VIICさん:10/09/02 20:58:19 ID:w9n9lDoa
>>454
それもhtml形式の仕様で、サーバー側で10件の中からランダムに抽出されるので
実行するごとに結果が変わります

jsonにも対応してみたいけどちょっと時間がかかるかも…

456 名前:VIICさん:10/09/02 21:06:39 ID:GXBJrWVm
任意の行の書き換えって簡単じゃないな
457 名前:VIICさん:10/09/02 22:07:10 ID:w9n9lDoa
>>443のスクリプトを修正、json形式対応
多分これでキーワードを10個取ってこれるようになるはず
ttp://www1.axfc.net/uploader/Sc/so/149522.zip
458 名前:VIICさん:10/09/02 22:11:15 ID:w9n9lDoa
ついでにもう一つ作った奴を

//【登録場所】全体、レス表示

//【ラベル】Buzztter
//【内容】Twitterの人気ワードをポップアップ
//【コマンド】$SCRIPT buzztter.js
//【スクリプト】
// ----- 次の行から -----
popupBuzztter();
function popupBuzztter() {
try { var s = v2c.readURL( 'http://buzztter.com/ja' ); }
catch (e) { return v2c.alert( '通信エラー\n' + e ); }
if( s.match( /buzzphrases'>([\s\S]+?)<\/div/i ) ) var h = RegExp.$1;
else return v2c.alert( '解析エラー' );
var css = '<!--body{background-color:#ffcce6;margin:5px;}a{color:black;}-->';
h = h.replace( /href="\//ig , 'href="http://buzztter.com/' );
h = '<html><head><style type="text/css">' + css + '</style></head><body>'
+ h + '</body></html>';
v2c.context.setMaxPopupWidth(400)
v2c.context.setPopupHTML(h);
}
// ----- 前の行まで -----
459 名前:VIICさん:10/09/02 22:24:04 ID:w9n9lDoa
>>457にミスが有ったので再度修正
何度も申し訳ない
ttp://www1.axfc.net/uploader/Sc/so/149534.zip
460 名前:VIICさん:10/09/02 22:58:54 ID:T/eCeamo
>>459
エラー
通信失敗になってしもたよ
461 名前:VIICさん:10/09/02 23:05:02 ID:w9n9lDoa
>>460
【コマンド】${SCRIPT:S} keyword2ch.js
になってますか?パーミッション設定が変わってるので
462 名前:VIICさん:10/09/02 23:16:22 ID:T/eCeamo
>>461
ああ、コマンド前のままだったです。もうしわけない・・・。
正常に動作しました。どうもありがとう。
463 名前:VIICさん:10/09/02 23:18:53 ID:VG/5a8w7
>>453
もっとうまいやり方があるとは思うけど・・・特に後半・・・
テストする人は仮想のdatのバックアップを取らないと消える可能性あり
URLやディレクトリは適宜書き換えて、一行目hを抜いてるんでhを補完して下さい

//【登録場所】レス表示

//【ラベル】お気に入りレスから削除
//【内容】お気に入りレスの仮想スレッド上で使うと、レス削除出来る
//【コマンド】${SCRIPT:F} remove_favorite_res.js
// ----- 次の行から -----
if(v2c.context.thread.url == "ttp://yy61.60.kg/test/read.cgi/v2cj/2222222222/"){
var file1 = new java.io.File(v2c.saveDir, "\\log\\yy61.60.kg\\v2cj\\2222222222.dat");
var br1 = new java.io.BufferedReader(new java.io.FileReader(file1));
var file2 = new java.io.File(v2c.saveDir, "\\log\\yy61.60.kg\\v2cj\\temp.dat");
var pw1 = new java.io.PrintWriter(new java.io.BufferedWriter(new java.io.FileWriter(file2)));
var mes = br1.readLine();
for(var i=1; mes != null; i++){
if(i != v2c.context.res.number){
pw1.println(mes);
mes = br1.readLine();
}else{
mes = br1.readLine();
}
}
br1.close();
pw1.close();
var file3 = new java.io.File(v2c.saveDir, "\\log\\yy61.60.kg\\v2cj\\temp.dat");
var br2 = new java.io.BufferedReader(new java.io.FileReader(file3));
var file4 = new java.io.File(v2c.saveDir, "\\log\\yy61.60.kg\\v2cj\\2222222222.dat");
var pw2 = new java.io.PrintWriter(new java.io.BufferedWriter(new java.io.FileWriter(file4)));
mes = br2.readLine();
for(;mes != null;){
pw2.println(mes);
mes = br2.readLine();
}
br2.close();
pw2.close();
}
// ----- 前の行まで -----
464 名前:VIICさん:10/09/12 16:43:42 ID:mxWaLHmx
Yahoo国語辞書が使えなくなったのは私だけ?
465 名前:VIICさん:10/09/12 18:37:30 ID:a35Lb79b
俺も
466 名前:VIICさん:10/09/12 19:17:05 ID:htUEK8Ht
>>15を勝手に修正させてもらいました

//【登録場所】選択テキスト

//【ラベル】yahoo〇〇辞書
//【内容】yahoo国語、英和、和英、類語辞書のポップアップ
//【コマンド】$SCRIPT ydic.js 0
//※引数(コマンドの末尾の数字)によってどの辞書を使うかが決まる
//※引数(国語:0、英和:1、和英:3、類語:5)
// ----- 次の行から -----
function createPopupString() {
var vcx = v2c.context;
var ss = vcx.selText;
if (ss) {
ss = ss.trim();
}
if (!ss||(ss.length()==0)) {
v2c.alert('検索語を取得できませんでした。');
return;
}
var args = vcx.args;
var id = (args.length>0)?args[0]:'0';
var sh = v2c.readURL('http://dic.yahoo.co.jp/dsearch?enc=UTF-8&p='+
encodeURIComponent(ss)+'&stype=1&dtype='+id);
if (!sh) {
v2c.alert('ページを取得できませんでした。');
return;
}

var mr = sh.match(new RegExp('<!-- main -->([^]*?)<!-- /.content-detail -->','i'));

if (!mr) {
v2c.alert('説明を抽出できませんでした。');
return;
}
var mr2 = mr[1].replace(new RegExp('<div id="source-detail">[^]*?</div>','i'),'');
vcx.setPopupHTML('<html><body>'+mr2+'</body></html>');
}

createPopupString();

// ----- 前の行まで -----
467 名前:VIICさん:10/09/12 19:26:55 ID:mxWaLHmx
ありがとう乙
468 名前:VIICさん:10/09/13 09:43:02 ID:JGEnmJnP
他所で偶然V2C用のスクリプトを見付けたのでもってきますた
内容はよくわからないけどpixiv関連のものっぽい
ttp://www1.axfc.net/uploader/Sc/so/40824
469 名前:VIICさん:10/09/13 10:00:42 ID:rA/gzmt7
>>468
何に使うスクリプトなの?
470 名前:VIICさん:10/09/13 13:29:57 ID:Kj7JJClz
半角二次元の画像詳細スレのデータベースに自動登録する書式を生成するスクリプトみたいだね
471 名前:VIICさん:10/09/16 22:31:44 ID:l3xLYlR/
単発ID「以外」を抽出するスクリプトがありますが、単発ID以外、もしくはIDが
何種類あるかを表示するスクリプトはできないでしょうか。

簡単に言うと、過疎っている実況などで書き込みしている人が何人くらいいるかわかるような機能が欲しいです。。

472 名前:VIICさん:10/09/16 23:05:58 ID:FR/7GlXg
>>471
ユニークなID数を数えるだけならスクリプトで簡単に実現できると思うけど…
それは他の人に任せるとして
ttp://www.geocities.co.jp/lauhangwoo/jane/
コレV2Cでも使えるよ

こんな感じ

ttp://www.geocities.co.jp/lauhangwoo/jane/threana2.png
795res/211rowってなってるので、
795レス中IDは211種類って事
他にも色んなパターンで解析できるので便利

外部コマンドに登録して使う

例としては

【ラベル】 スレッド分析

【場所】 レス表示
【コマンド】 mshta "$SAVEDIR\threana.hta" "$THREADURL" "$DATFILE"

こんな感じで。


"$SAVEDIR\threana.hta"
は保存用フォルダにおいた場合なので、別場所の場合は自分でパス設定してくだしい
473 名前:VIICさん:10/09/16 23:23:05 ID:l3xLYlR/
>>472
教えてくれてありがとう。
ポップアップでID数がわかる簡単なものがあればと思ったんだけど、これはこれで
いろいろ使えそうですね。
474 名前:VIICさん:10/09/17 00:49:31 ID:8FJPHwXE
>>472
オプションの変更を保存できればさらに便利になると思います。
475 名前:VIICさん:10/09/17 00:56:52 ID:8FJPHwXE
これ、そのような機能のスクリプトの参考になるかも。
ttp://tool.jolt.jp/2ch_id/
476 名前:VIICさん:10/09/17 01:06:30 ID:/rNxwuoz
>>474
ここでスクリプト投稿してるような人たちなら簡単に改造できるんじゃないかな
ちょっとスレ違いかもしれないけど改変再配布は自由らしいので待ってれば誰かがやってくれるかも?

自分は>>471みたいな使い方しかしてないんでID集計、件数順がデフォルトになるようにしてる

まさにこれか ttp://www.geocities.co.jp/lauhangwoo/jane/threana2.png

一応サンプルとしてやり方書いとく


threana.htaの51行目
Count();
の直下に下記2行を追加
document.opt.group.value = "12";
document.opt.order.value = "c";

142行目辺り以降を見れば何が何に対応してるか分かるから

この程度ならスクリプトとか知らなくても自分で色々弄れるはず
477 名前:VIICさん:10/09/17 01:35:59 ID:OYS2lcJQ
>>476
それ最後の方の行、<option value="xx">のselectedの位置を変更した方が良くない?
476の例なら『<option value="12" selected>ID』『<option value="c" selected>件数順』のように。
478 名前:VIICさん:10/09/17 01:39:41 ID:/rNxwuoz
>>477
自分全然知らんまま適当にやったので、それが正しいのだと思います。
479 名前:VIICさん:10/09/17 02:27:06 ID:wAvTiME2
超簡易版だけど

//【登録場所】レス表示、全体

//【ラベル】人数カウント
//【内容】人数のカウント
//【コマンド】$SCRIPT countID.js
function countID() {
var t = v2c.context.thread;
var c = new Array;
var i, j = 0, k = 0, l = 0, s = '';
for ( i=0; i<t.resCount; i++ ) {
if ( c[t.getRes(i).id] ) {
if ( c[t.getRes(i).id] == 1 ) {
j++;
if ( k>0 ) k--;
}
c[t.getRes(i).id]++;
}
else {
c[t.getRes(i).id]=1;
k++;
}
l++;
}
//タイトル表示がいらないときは↓の行の頭に//をつけてコメントアウト
s += t.title + ' (' + l + ')??<br>';
s += '人数:' + (j+k) + '??<br>単発:' + k + '??<br>単発以外:' + j;
v2c.context.setPopupHTML('<html><body>'+s+'</body></html>');
}
countID();
480 名前:VIICさん:10/09/17 17:20:48 ID:8FJPHwXE
>>479
だいたい使える!ご苦労様でした。
481 名前:VIICさん:10/09/17 17:48:52 ID:72BvSOO/
>>480
なぜ上から目線・・・
482 名前:VIICさん:10/09/17 17:50:08 ID:wAvTiME2
ああ、よく見たら文字化けしたいたごめん

//【登録場所】レス表示、全体

//【ラベル】人数カウント
//【内容】人数のカウント
//【コマンド】$SCRIPT countID.js
function countID() {
var t = v2c.context.thread;
var c = new Array;
var i, j = 0, k = 0, l = 0, s = '';
for ( i=0; i<t.resCount; i++ ) {
if ( c[t.getRes(i).id] ) {
if ( c[t.getRes(i).id] == 1 ) {
j++;
if ( k>0 ) k--;
}
c[t.getRes(i).id]++;
}
else {
c[t.getRes(i).id]=1;
k++;
}
l++;
}
//タイトル表示がいらないときは↓の行をコメントアウト
s += t.title + ' (' + l + ') <br>';
s += '人数:' + (j+k) + ' <br>単発:' + k + ' <br>単発以外:' + j;
v2c.context.setPopupHTML('<html><body>'+s+'</body></html>');
}
countID();
483 名前:VIICさん:10/09/17 19:02:46 ID:8FJPHwXE
お疲れ様でした。
484 名前:VIICさん:10/09/18 00:44:09 ID:yTFnAkGx
問題は「だいたい使える!」の部分じゃないのかww
485 名前:VIICさん:10/09/18 03:37:45 ID:bBjbhHAq
>>484
はぁ?そういう言い方っておかしいの?
486 名前:VIICさん:10/09/18 03:41:02 ID:hw1qM9o/
えっ
487 名前:VIICさん:10/09/18 03:50:10 ID:nXuweMuR
ID:8FJPHwXE はいろいろおかしいw
488 名前:VIICさん:10/09/18 03:51:40 ID:bBjbhHAq
>>487
具体的にどこがおかしいんだよwww
489 名前:VIICさん:10/09/18 08:41:15 ID:ji7wmCGH
「だいたい」というのは「おおよそ」と同義。
つまり制作者に対し「完璧ではないが(一部問題はあるが)つかえる!」と言っているんですよ?
490 名前:VIICさん:10/09/18 09:10:45 ID:0/17veJr
「ご苦労さん」は主人が使用人に対して使う言葉です。
それを丁寧に「ご苦労様でした」と言っても敬語表現にはなりません。
491 名前:VIICさん:10/09/20 08:46:32 ID:Z+CEPbX3
超簡易版だけど、って言ってる所に
だいたい使える、って言って何かおかしいのだろうか
492 名前:VIICさん:10/09/20 08:56:00 ID:wFluVl6H
ふむ、微妙。
493 名前:VIICさん:10/09/20 09:14:15 ID:Z3aByXju
スクリプトから表示したポップアップHTML内にselect-optionを埋め込んで
それを選択したら表示内容を変える、とかできますか?
494 名前:VIICさん:10/09/20 09:27:03 ID:BNbK23jE
>>491
>だいたい使える!ご苦労様でした。

だからなんでそんな偉そうなの ?って話で。

本人に他意はなかったとしても言葉のチョイスが適切ではないと思うぞ。
495 名前:VIICさん:10/09/20 10:01:23 ID:wFluVl6H
>>494
不適切なのは前半か後半のどっちが問題。
496 名前:VIICさん:10/09/20 10:28:50 ID:BNbK23jE
>>495
これ以上議論する気はないけど、前半とか後半じゃなくて大事なのは誤解されそうな表現だと思うってことだ。
そう思う人が他にもいるからいろいろツッコミ入ってんじゃないか ?

>>479は義務でも、ましてや対価を得ているでもなく全くの好意でしてくれたということを理解すべき。

497 名前:VIICさん:10/09/20 10:52:57 ID:F0Tph4P9
相手が「つまらないものですが」と謙遜しているのに対し、
「まあまあ嬉しい。貰っておく。」と言ってるのと一緒。
498 名前:VIICさん:10/09/20 11:32:36 ID:hoQXXj7A
>オプションの変更を保存できればさらに便利になると思います。
>これ、そのような機能のスクリプトの参考になるかも。
言いたいことは分かるが貰う側の言い回しではないな
499 名前:VIICさん:10/09/20 16:43:17 ID:0a6G3exs
質問流れたので強調>>493
500 名前:VIICさん:10/09/20 19:12:24 ID:NpqBP9J1
>>493,499
多分HTMLポップアップでは不可能だと思う
内容を切り替えるにはjavascriptが必要なはずだけど
ポップアップ内ではjavascriptが実行できない

HTMLポップアップの代わりにJavaのGUI使えば

同じような動作はできるかも
501 名前:VIICさん:10/09/20 19:18:11 ID:bGEVxNAZ
js埋め込んでも変わらなかったから
他に手段はないかと思ってましたが、やはりそうですか
Java通すしかなさそうですね
502 名前:VIICさん:10/09/20 22:17:40 ID:HvtxjC/z
D:\hogehoge\V2C\BBS\2ch\の中にある
「samba24.txt」を半自動で更新、上書きしてくれるスクリプトってないですかね?
503 名前:VIICさん:10/09/21 01:31:51 ID:UqA7ZmQs
半自動がどういう意味なのか分からないけど作ってみた
意図するものと違ったらごめん

//【登録場所】全体、レス表示

//【ラベル】Samba24.txtの更新
//【内容】Samba24 なの(仮):http://nullpo.s101.xrea.com/samba24/
//     からSamba24.txtを取得して~\BBS\2ch\に保存する
//【コマンド】${SCRIPT:Frw} samba24nano.js
//【スクリプト】
// ----- 設定ここから -----

//Samba24.txtの自動バックアップを(0:とらない、1:とる)

// ''で括らないでください
var backup = 1;

// 秒数の設定

// 'majority':サーバ上の各板で最多数の秒数
// 'max':各サーバ上の各板の最大値
// 'min':各サーバ上の各板の最小値
var decsec = 'majority';

//補正秒数の設定 '-10'~'10' の整数

var offset = '0';

//改行の設定

// 'crlf':CR+LF(Windows 標準)
// 'lf':LF(Mac OS X、Linux/UNIX 標準)
var newline = 'crlf';

//----- 設定ここまで -----


getSamba24Txt();
function getSamba24Txt() {
var file = new java.io.File( v2c.saveDir, '\\BBS\\2ch\\samba24.txt' );
var bfile = new java.io.File( v2c.saveDir, '\\BBS\\2ch\\samba24.txt.bak' );
var url = 'http://nullpo.s101.xrea.com/samba24/conv.xcg?';
var data = 'browser=v2c' + '&decsec=' + decsec +
'&offset=' + offset + '&newline=' + newline + '&output=view';
var s = v2c.readURL( url + data );
if (!s) return v2c.alert( '通信エラー' );
var s2 = v2c.readFile( file );
if ( backup ) {
if ( s2 ) v2c.writeStringToFile( bfile, s2 );
}
v2c.writeStringToFile( file, s );
//ダイアログがいらない時は↓をコメントアウト
v2c.alert( 'samba24.txtを更新しました' );
}
504 名前:VIICさん:10/09/29 14:12:47 ID:gj5MH1US
V2Cが対応の掲示板へのリンクだけを抽出するスクリプトがあったっけ?
505 名前:VIICさん:10/09/30 14:44:08 ID:QrJ+1TGB
>>198getlogのヴァルダ検索からログを取得できるものを作って頂けないでしょうか
みみずんと分散できるかなーと

ヴァルダ検索

ttp://varda2.com/search/
参考
ttp://varda2.com/blog/0101

>>503

横からですが頂きました
更新し忘れることが多いのでありがたいです

>>504

なかったような・・・?
506 名前:VIICさん:10/10/02 12:01:11 ID:wYgHcMiB
また>>280の全板縦断ランキングポップアップが使えなくなってる
>>427の変更で使えてたんだけどなぁ

俺だけじゃなければどなたか対応を教えて下さい

507 名前:VIICさん:10/10/02 13:36:53 ID:22DrEhCc
URLが変わっただけ
ttp://2ch-ranking.net/index.html?board=zenban
508 名前:VIICさん:10/10/02 13:53:17 ID:wYgHcMiB
>>507
ありがとう 使えるようになりました
509 名前:VIICさん:10/10/02 14:51:06 ID:6TQSJQAj
スペースとかを押している間に、1 ~ 9やA ~ Iの英数字がリンクの辺りに出てくるようにして
英数字を選択してスペースキーを離すことでそのリンクに飛ばす。これでスレをマウスを使わずにすんなり閲覧できる。
近い応用といえば、Firefox アドオンのLOL ttp://elder-gods.org/lol/
キーポード派の俺はどうしても欲しい機能なんだ。
510 名前:VIICさん:10/10/06 14:23:57 ID:5K9uGusL
ふと見つけたものだけど、V2Cにも動作するように改造してもらいたい。
ttp://blunch5656.web.fc2.com/files/auto-getlog101003.zip
511 名前:VIICさん:10/10/06 14:42:01 ID:oUuDT6ew
アプロダでもないサイトのzipファイル直リンすんなよw
512 名前:VIICさん:10/10/06 14:42:57 ID:OfXTsBFG
getlog系は晒すなカス
またサイトが無くなるだろ
513 名前:VIICさん:10/10/06 14:48:03 ID:5K9uGusL
迷惑かけちゃってごめんなちゃい。
514 名前:VIICさん:10/10/10 16:12:54 ID:8pKn688e
というかみみずんのでいいだろ
515 名前:VIICさん:10/10/10 16:18:51 ID:mavKcZ2O
//【登録場所】全体、レス表示
//【ラベル】「マウスジェスチャ一覧」、または「キーバインド一覧」
//【内容】設定してあるマウスジェスチャ、またはキーバインドのみを新タブで表示。
//【コマンド1】${SCRIPT:Fr} viewMyMap.js 0 //キーバインドの設定一覧
//【コマンド2】${SCRIPT:Fr} viewMyMap.js 1 //マウスジェスチャの設定一覧
//【補足1】通常のアクション名取得にはttp://www39.atwiki.jp/v2cwiki/pages/49.htmlを利用、そのため、新しいアクションは置換されない可能性有り
//【補足2】スクリプトのアクション名取得にはextcmd_win.txtを利用、そのため、他のOSはたぶん未対応
var vcx = v2c.context;
var option = vcx.argLine;
function createMyMap(op){
var f1 = new java.io.File( v2c.saveDir, '\\extcmd_win.txt' );
var fa1 = v2c.readLinesFromFile(f1,'utf-8');
var f2 = op ? new java.io.File(v2c.saveDir, '\\gesture.txt') : new java.io.File(v2c.saveDir, '\\inputmap.txt');
var fa2 = v2c.readLinesFromFile(f2,'utf-8');
for(var i = 0, il = fa1.length, m0 = m1 = m2 = ''; i < il; i++){
s = fa1[i]+'';
m0 = (s.match(/^\w/) || [])[0]
m1 = (s.match(/\tI(\w+?)\t/) || [])[1];
m2 = (s.match(/\tL(.+?)(\t|$)/) || [])[1];
for(var j = 0, jl = fa2.length; j < jl; j++){
fa2[j] = (fa2[j]+'').replace(new RegExp(m0+'\\$'+m1+'$'),m2);
}
}
var se = v2c.readURL('h'+'ttp://www39.atwiki.jp/v2cwiki/pages/49.html');
rgex = new RegExp('(<h4[^]*?<\/table>)','g');
var ar = [];
while(rgex.exec(se) != null){
ar.push(RegExp.$1+'');
}
rgex = new RegExp('0--><td style="">([^<]*?)</td>[^]*?1--><td style="">([^<]*?)</td>','ig');
for(var m = 0, ml = ar.length; m < ml; m++){
while(rgex.exec(ar[m]) != null){
for(var n = 0, nl = fa2.length; n < nl; n++){
fa2[n] = (fa2[n]+'').replace(new RegExp(RegExp.$2+'$'),RegExp.$1);
}
}
}
for(var n = 0, nl = fa2.length; n < nl; n++){
var ma = ((fa2[n].match(/^[\w ]+?,/) || [])[0])+'';
var mp = ma;
ma = ma.replace('Map,', '▼');
if(op) {
ma = ma.replace('S', 'S').replace(/U/g, '↑').replace(/D/g, '↓').replace(/L/g, '←').replace(/R/g, '→')
.replace('u', 'W↑').replace('d', 'W↓').replace('1', 'L').replace('2', 'M').replace(',', '\t');
} else {
ma = ma.replace(/ /g, ' + ').replace('ctrl', 'CTRL').replace('alt', 'ALT').replace('shift', 'SHIFT');
ma.length > 10 ? ma = ma.replace(',', '\t') : ma = ma.replace(',', '\t\t');
}
fa2[n] = (fa2[n]+'').replace(mp,ma).replace(/"/g,'"');
fa2[n] = (fa2[n]+'').replace('Global','全体').replace('BoardTree','板一覧')
.replace('Favorite','お気に入り').replace(/ThreadList$/,'スレッド一覧').replace(/ThreadView$/,'レス表示')
.replace('TVLink','リンク[レス表示]').replace('TVThumbnail','サムネイル画像[レス表示]').replace('TVSelText','選択テキスト[レス表示]')
.replace('Write','書き込み欄').replace('ThreadListMiniSearch','スレッド一覧絞り込み').replace('ThreadViewMiniSearch','レス表示絞り込み')
.replace('ImageCacheList','画像キャッシュ一覧').replace('ImagePopup','画像ポップアップ・ビューア').replace('ImageWindow','画像表示ウィンドウ')+'\t';
}
var tt = op ? 'マウスジェスチャ設定' : 'キーバインド設定'
vcx.setResPaneText(fa2.join('\n'), tt, true);
}
createMyMap(parseInt(option));
516 名前:VIICさん:10/10/10 17:04:10 ID:mavKcZ2O
//varda2.com/log/2ch/$5/$1/$5/kako/$8/$7/$6.dat
//www.unkar.org/convert.php/$1/$5/$6/
//dat.tanabota.info/get_dat.php?dat=$1_$5_$6
自己判断で、質問にはお答えできない。
517 名前:VIICさん:10/10/23 13:05:01 ID:tnOBzXCa
久々に来たが日本語の不自由な奴がいたのか
518 名前:VIICさん:10/10/24 00:10:30 ID:Yw40tChX
ITドカタ界の一端を見た気がした
519 名前:VIICさん:10/10/28 22:15:35 ID:SOsF9/mo
//【登録場所】全体、レス表示 ※キーバインドは「全体」のみ可
//【ラベル】(次の|前の|この)被参照と参照レスを抽出
//【内容】アクション対象、または最初の被参照と参照レスを抽出、その抽出状態から(前|次)の被参照と参照レスを抽出
//【コマンド1】$SCRIPT viewRefRes.js //(次の|この)被参照と参照レスを抽出
//【コマンド2】$SCRIPT viewRefRes.js prev //(前の|この)被参照と参照レスを抽出
//【補足】 デフォルトは、アクション対象レスに参照レスがあれば、対象レスから開始、なければ最初の被参照レスから開始
var From_First = false; //常に最初の被参照レスから開始
var Threshold = 1; //参照レスが閾値以上で対象

var vcx = v2c.context, res = vcx.res, th = vcx.thread;

function haveNum(a, n) {
for(var i = 0; i < a.length; i++) {
if(a[i] == n) return true;
}
return false;
}
function viewRefRes(prev) {
var f = vcx.filteredResIndex, fl = f.length, c = th.localResCount;
var set = function(a, b){ //a:参照レス番号Array, b:被参照レス番号
if(b == c) {
vcx.setStatusBarText("次の被参照レスはありません。"); return;
} else if(b == -1) {
vcx.setStatusBarText("前の被参照レスはありません。"); return;
}
vcx.setFilteredResIndex([b].concat(a)); vcx.setResIndexToJump(b);}
var len = function(d) { return d ? d.length : 0; }
if(fl == c) {
var ri = res.index, r = res.refResIndex;
if(len(r) < Threshold || From_First) {
for(ri = 0; ri < c; ri++) {
r = th.getRes(ri).refResIndex; if(len(r) >= Threshold) break;
}
if(len(r) < Threshold) {vcx.setStatusBarText("被参照レスがありません。"); return;}
};
set(r, ri);
} else {
for(var i = 0; i < f.length; i++){
var gres = th.getRes(f[i]), gri = gres.index, gr = gres.refResIndex, grl = len(gr);
if(fl == grl+1) {
for(var j = 0; j < grl; j++) {
if(!haveNum(f, gr[j])) break;
}
if(j == grl) {
if(prev){
for(var m = gri-1; m > -1; m--) {
gr = th.getRes(m).refResIndex; if(len(gr) >= Threshold) break;
}
set(gr, m); break;
} else {
for(var n = gri+1; n < c; n++) {
gr = th.getRes(n).refResIndex; if(len(gr) >= Threshold) break;
}
set(gr, n); break;
}
}
}
}
}
}
if(res && th) { viewRefRes(vcx.args[0]+"" == "prev"); }
520 名前:VIICさん:10/10/30 15:59:04 ID:ufH01zpB
スレURL+レス番,レス番
のようなクリップボードデータを
書き込み経由(プレビュー)からポップアップさせずに
ポップアップか抽出するスクリプトを作成したいです。

クリップボードデータを取得するにはどのようにしたら良いでしょうか?

Javaだとわからない(不安)なためV2Cで用意していただけると助かります。
ttp://allabout.co.jp/gm/gc/80702/
↑辺りを利用すればよさそうではあるのですが…
521 名前:n|a:10/10/30 18:54:41 ID:bzfbPjYg
>>520
次回更新では
v2c.clipboardText
でクリップボードにコピーされた文字列を取得できるようにします。
522 名前:VIICさん:10/10/31 23:03:20 ID:8z0hs+Jv
//【登録場所】全体、レス表示
//【ラベル】ラベル名など
//【内容】特定のラベルが付いた書き込みをポップアップ
//【コマンド】${SCRIPT:Fr} popupLabel.js ラベル名
//例:自分の書き込みをポップアップ:${SCRIPT:Fr} popupLabel.js 書き込み
//【スクリプト】
// ----- 次の行から -----
var command = v2c.context.argLine;
if ( command != '' ) popupLabel(command);
else v2c.alert( '引数(ラベル名)がありません\n' );

function popupLabel(com) {

var i,max;
var labels = '';
var lab_post = '';
var index = [];

var buf = (v2c.context.thread.localFile.getAbsolutePath()+'').split('.');

buf.length--;
var file = buf.join('.') + '.txt';
var ss = v2c.readLinesFromFile(file);
if ( !ss ) return v2c.alert( 'ラベル情報ファイル取得失敗\n' + file );

for ( i=0; i<ss.length; i++ ) {

if( ss[i].match( /ThreadView\.ResLabels\:=(\d+?)\t(.+)/ ) ) {
max = RegExp.$1;
labels = RegExp.$2 + '';
}
}
if ( !labels || !max ) return v2c.alert( 'ラベル情報取得失敗' );

var label = labels.split('\t');

var reg = new RegExp( '([\\d\\,]+)\\:' + com , '' );
for ( i=0; i<label.length; i++ ) {
if( label[i].match(reg) ) lab_post = RegExp.$1;
}
if ( !lab_post ) return v2c.alert( '該当ラベルなし\nラベル名:' + com );

var num = lab_post.split(',');

for ( i=0; i<num.length; i++ ) {
if( num[i].match( /(\d{1,4})/ ) ) {
if( 0 < parseInt(num[i]) && parseInt(num[i]) < max )
index.push( v2c.context.thread.getRes( parseInt(num[i]) ) );
}
}
v2c.context.setPopupRes(index);
}
// ----- 前の行まで -----
523 名前:VIICさん:10/10/31 23:17:27 ID:8z0hs+Jv
失礼、ミスがありました

if ( !lab_post ) return v2c.alert( '該当ラベルなし\nラベル名:' + com );


の下に

lab_post = lab_post.replace( /\-/g, ',' );


を追加してください
524 名前:n|a:10/10/31 23:57:16 ID:eZm3+s+S
>>522,523
レスラベルを扱う関数を追加したいところですね。
(いつになるかわかりませんが…。)
525 名前:VIICさん:10/11/02 20:35:59 ID:IGS+3Idb
>>522,523を修正、機能追加したもの
ttp://www1.axfc.net/uploader/Sc/so/Sc_169441.zip

以下、コマンド例


//【コマンド】${SCRIPT:Fr} popupLabel.js ラベル名1 ラベル名2 ...
//
// 例1:自分の書き込みをポップアップ(ラベル名が「書き込み」の場合)
// ${SCRIPT:Fr} popupLabel.js 書き込み
//
// 例2:指定ラベルの抽出
//「書き込み」ラベルか「デフォルト」ラベルのどちらかが付いたレスをポップアップ
// ${SCRIPT:Fr} popupLabel.js 書き込み デフォルト
//
// 例3:特殊なコマンド
// 全てのラベル付きレスをポップアップ
// ${SCRIPT:Fr} popupLabel.js ALL_LABEL

>>524

あったら便利かもですね、のんびりお待ちしております
526 名前:VIICさん:10/11/02 20:43:36 ID:IGS+3Idb
>>525 またミスがあった…orz

何度もすみませんな修正版

ttp://www1.axfc.net/uploader/Sc/so/169445
527 名前:VIICさん:10/11/02 21:17:17 ID:XnvjRjqj
>>526
お疲れ様です。
これ凄く便利ですね
ありがたく使わせていただきます!
528 名前:VIICさん:10/11/02 21:24:44 ID:IGS+3Idb
・・・ごめんなさいまたやってしまいましたごめんなさい

これが最後になるといいな修正版

ttp://www1.axfc.net/uploader/Sc/so/169457.zip
※このスクリプトのポップアップはスレ一覧更新時までラベルの変更等が反映されません
529 名前:VIICさん:10/11/03 03:07:31 ID:wlnUAFfN
>279,350,382,427をまとめて、リンククリック時の挙動を変えてみた、以降をコピペ
//【登録場所】 全体、レス表示
//【ラベル】 テレビ実況板の勢いポップアップ
//【内容】 テレビ番組欄@2ch (ttp://epg.2ch.net/tv2chwiki/pukiwiki.php)から”勢い”の部分をポップアップ表示するのみ。
//【コマンド1】 $SCRIPT: tv.js
//【コマンド2】 $SCRIPT: tv.js board //TV局クリックで板表示
//【コマンド3】 $SCRIPT: tv.js thread //TV局クリックで勢いのあるスレ表示
//【スクリプト】
var vcx = v2c.context, option = vcx.args[0]+'', ph = '';
function formSubmitted(u,sm,sd) {
if(sd.indexOf('return=') > -1){
vcx.setPopupHTML(ph); vcx.setRedirectURL(true); vcx.closeOriginalPopup();
}
}
function redirectURL(u) {
var sh = v2c.readURL(u), mr, sr;
if (!sh) {
v2c.alert('ページを取得できませんでした。'); return;
}
if ((u+'').indexOf('ttp://epg.2ch.net/subject.cgi?key=') > -1) {
if(option == 'board'){
mr = sh.match(new RegExp('板のURL\\t<a href="([^>]+?)">','i')); sr = mr[1]; return sr;
} else if(option == 'thread'){
mr = sh.match(new RegExp('勢いのあるスレのURL\\t<a href="([^>]+?)">','i')); sr = mr[1]; return sr;
} else {
mr = sh.match(new RegExp('<pre>([^]+?)\\n+?<xmp>','i')); sr = mr[1];
sr = sr.replace(/<\/a>/ig,'<\/a>??<br>');
vcx.setPopupHTML('<html><body style="margin:10px;">'+sr
+'<form action=""><input type="submit" value="戻る" name="return"></form></body></html>'); // setPopupHTML等
vcx.setTrapFormSubmission(true); return;
}
} else if((u+'').indexOf('ttp://epg.2ch.net/subject.cgi?todat=') > -1) {
mr = sh.match(new RegExp('勢いのあるスレのURL\\t<a href="([^>]+?)">','i')); sr = mr[1]; return sr;
} else if((u+'').indexOf('ttp://epg.2ch.net/tv2chwiki/pukiwiki.php?') > -1){
mr = sh.match(new RegExp('<table[^]+?</table>','i')); sr = mr[0];
sr = sr.replace(/<\/n>/ig,'<\/a>??');
sr = sr.replace(/<div align=\"right\">[^]+?↑edit<\/a><\/div>/ig,'');
vcx.setPopupHTML('<html><body style="margin:10px;">'+sr
+'<form action=""><input type="submit" value="戻る" name="return"></form></body></html>');
vcx.setTrapFormSubmission(true); vcx.setRedirectURL(true); return;
} else {
return u;
}
}
function createPopupString() {
var sh = v2c.readURL('h'+'ttp://epg.2ch.net/tv2chwiki/pukiwiki.php');
if (!sh) {
v2c.alert('ページを取得できませんでした。'); return;
}
var mr = sh.match(new RegExp('<div id="body">([^]+?)">昨日</a>','i'));
if (!mr) {
v2c.alert('抽出できませんでした。'); return;
}
var sr = mr[1];
sr = sr.replace(/<br>/ig,'??<br>');
sr = sr.replace(/href=\"\?/ig, 'href="h'+'ttp://epg.2ch.net/tv2chwiki/pukiwiki.php?');
ph = '<html><body style="margin:5px;">'+sr+'</body></html>';
vcx.setPopupHTML(ph); vcx.setRedirectURL(true);
}
createPopupString();
530 名前:VIICさん:10/11/03 21:15:59 ID:wlnUAFfN
//【登録場所】 全体、レス表示
//【ラベル】 クリップボードのURLを開く
//【内容】 外部からの表示用、クリップボードにある提示板の単一URLを表示する
//※ クリップボードのスレッドが表示されていなければそのスレを表示、表示していればレス番で抽出(ポップアップ)
//【コマンド1】 ${SCRIPT:Tc} ClipboardThreadURL.js //表示または抽出
//【コマンド2】 ${SCRIPT:Tc} ClipboardThreadURL.js popup //表示またはポップアップ
//【スクリプト】
var vcx = v2c.context, res = vcx.res, th = vcx.thread;
function readClipboardURL(){
var rc = th.localResCount;
var su = th.url+"", text = v2c.clipboardText;
var m = text.match(/^(h?ttp:\/\/.+?\/)([+\d,-]*?)$/);
if(!m) {
v2c.alert('URLを取得できませんでした。');
return;
}
var gt = v2c.getThread(m[1]);
if(!gt) {
v2c.alert('スレッドURLを取得できませんでした。');
return;
}
if(su.indexOf(m[1]) < 0 || m[2] == "") {
v2c.openURL(m[1],false);
return;
}
var a = m[2].split(/[,+]/), p = [];
for(var i = 0; i < a.length; i++){
var n = a[i].match(/(\d+)-?(\d*)/);
if(!n) continue;
var start = parseInt(n[1]-1);
var end = parseInt(n[2]-1);
if(start < rc && end < rc) {
a[i] = start;
} else {
a[i] = "";
continue;
}
var diff = end-start;
if(n[2] != "" && diff != 0) {
if(diff < 0) {
start = end;
end = a[i];
a[i] = start;
}
for(var j = start+1; j <= end; j++) {
p.push(j);
}
} else {
continue;
}
}
if(vcx.args[0] == "popup"){
vcx.setPopupResIndex(a.concat(p));
} else {
vcx.setFilteredResIndex(a.concat(p));
}
}
if(res && th) {
readClipboardURL();
}
531 名前:VIICさん:10/11/03 22:00:45 ID:6JclNO+8
>>396
恐らく誤記だと思ったので、スクリプトの9行目を以下のように変更してwikiに掲載させてもらいました

//【コマンド】${SCRIPT:FrS} popupTweet.js


//【コマンド】${SCRIPT:FrS} popupTweetAPI.js
532 名前:VIICさん:10/11/04 00:35:21 ID:97qKeNB6
V2Cのjarファイルをダウンロード後v2cjar.txtを書き換えるスクリプト
ttp://www1.axfc.net/uploader/File/so/53645
人柱版への更新が面倒だったので作ってみました
533 名前:VIICさん:10/11/04 01:58:32 ID:ZaYrBIFS
>>532
乙です、何気に手間だったのでこれはありがたいです
スクリプトの説明文なんですが、以下の三行を修正&追加してwikiに掲載させて頂きました

//【登録場所】URLExec.dat ※外部コマンドへの登録不可※

//【ラベル】人柱版V2Cの更新補助
//【内容】人柱版V2Cのjarファイルをダウンロード後、v2cjar.txtを自動更新
534 名前:532:10/11/04 02:04:44 ID:97qKeNB6
>>533
ありがとうございます。

>//【登録場所】URLExec.dat ※外部コマンドへの登録不可※

外部コマンドから起動できるようにした方が良い気がしますね。
その内修正させて頂くかもしれません。
535 名前:532:10/11/04 02:43:06 ID:97qKeNB6
人柱版V2Cの更新補助スクリプトを更新しました。
外部コマンドからも使用できるようになりました。
ttp://www1.axfc.net/uploader/File/so/53652

追加

//【登録場所】リンク
//【ラベル】人柱版V2Cの更新補助
//【コマンド】${SCRIPT:SFwx} updateV2C.js
536 名前:VIICさん:10/11/04 09:40:24 ID:3jLDwqn/
>>529
//【コマンド1】 $SCRIPT: tv.jsのところの$SCRIPTの後の”:”を消しといた方が
紛らわしくないと思います。

うちの環境だけなのかもしれませんが、

そのままコピペしたらエラーがが出て えっ?と思っちゃったので。
537 名前:VIICさん:10/11/04 15:10:08 ID:pWBmKlI7
消し忘れかな
538 名前:VIICさん:10/11/04 15:52:37 ID:pWBmKlI7
また更新補助スクリプトを修正しました。
何度もすいません。
ttp://www1.axfc.net/uploader/File/so/53668
539 名前:VIICさん:10/11/04 17:04:05 ID:3jLDwqn/
>>538
修正お疲れ様です。

スクリプト中に”var fs = java.io.File.separator;”を追加し

18行目を
var newjarpath = v2c.appDir+fs+"launcher"+fs+newjarfn;
26行目を
v2c.writeBytesToFile(new java.io.File(v2c.appDir+fs+"launcher"+fs+newjarfn),newjar);
27行目を
v2c.writeStringToFile(new java.io.File(v2c.appDir+fs+"launcher"+fs+"v2cjar.txt"),newjarfn+"\n");
と変更したら全環境で動作するように思いますがどうでしょう?
うちのLinuxでは上記変更で正常に動作しました。
540 名前:VIICさん:10/11/04 17:14:20 ID:pWBmKlI7
ご指摘ありがとうございます。
JavaScriptもJavaも初心者なんでライブラリの方はサッパリです。。。
541 名前:VIICさん:10/11/04 17:26:42 ID:3jLDwqn/
>>540
有用なスクリプトをありがとうございます。

私もJava、スクリプトともにチンプンカンプンで

>>539が本当にあってるのか心配なのですが...
542 名前:VIICさん:10/11/04 17:30:25 ID:pWBmKlI7
>541
僕の環境(win)でも>>539で動いてるので多分大丈夫です。

区切りにfsを使用し、ついでに無駄な部分を削除しました。

ttp://www1.axfc.net/uploader/File/so/53673

URLExec.datのコマンドにパラメータを付けていましたが、v2c.context.linkで取得するようにしたので

ttp://v2c\.s50\.xrea\.com/(V2C_.+\.jar)$&${V2CSCRIPT:SFwx} updateV2C.js
のように変更してください。
543 名前:VIICさん:10/11/04 17:41:45 ID:gbduX0Ba
>>540
いいんじゃない?
ここで晒せば問題ある箇所は誰かが修正してくれるさ
「作ってみたはいいがスクリプト自信ないし自分だけで使おう」とかなると色々残念
544 名前:VIICさん:10/11/05 00:58:41 ID:f/LQnVRw
//【登録場所】 全体、レス表示
//【ラベル】 テレビ実況板の勢いポップアップ
//【内容】 テレビ番組欄@2ch (ttp://epg.2ch.net/tv2chwiki/pukiwiki.php)から”勢い”の部分をポップアップ表示するのみ。
//【コマンド1】 $SCRIPT tv.js
//【コマンド2】 $SCRIPT tv.js board //TV局クリックで板表示
//【コマンド3】 $SCRIPT tv.js thread //TV局クリックで勢いのあるスレ表示
//【スクリプト】
var vcx = v2c.context, option = vcx.args[0]+'', ph = '';
function formSubmitted(u,sm,sd) {
if(sd.indexOf('return=') > -1){
vcx.setPopupHTML(ph); vcx.setRedirectURL(true); vcx.closeOriginalPopup();
}
}
function redirectURL(u) {
var sh = v2c.readURL(u), mr, sr;
if (!sh) {
v2c.alert('ページを取得できませんでした。'); return;
}
if ((u+'').indexOf('ttp://epg.2ch.net/subject.cgi?key=') > -1) {
if(option == 'board'){
mr = sh.match(new RegExp('板のURL\\t<a href="([^>]+?)">','i')); sr = mr[1]; return sr;
} else if(option == 'thread'){
mr = sh.match(new RegExp('勢いのあるスレのURL\\t<a href="([^>]+?)">','i')); sr = mr[1]; return sr;
} else {
mr = sh.match(new RegExp('<pre>([^]+?)\\n+?<xmp>','i')); sr = mr[1];
sr = sr.replace(/<\/a>/ig,'<\/a> <br>');
vcx.setPopupHTML('<html><body style="margin:10px;">'+sr
+'<form action=""><input type="submit" value="戻る" name="return"></form></body></html>'); // setPopupHTML等
vcx.setTrapFormSubmission(true); return;
}
} else if((u+'').indexOf('ttp://epg.2ch.net/subject.cgi?todat=') > -1) {
mr = sh.match(new RegExp('勢いのあるスレのURL\\t<a href="([^>]+?)">','i')); sr = mr[1]; return sr;
} else if((u+'').indexOf('ttp://epg.2ch.net/tv2chwiki/pukiwiki.php?') > -1){
mr = sh.match(new RegExp('<table[^]+?</table>','i')); sr = mr[0];
sr = sr.replace(/<\/n>/ig,'<\/a> ');
sr = sr.replace(/<div align=\"right\">[^]+?↑edit<\/a><\/div>/ig,'');
vcx.setPopupHTML('<html><body style="margin:10px;">'+sr
+'<form action=""><input type="submit" value="戻る" name="return"></form></body></html>');
vcx.setTrapFormSubmission(true); vcx.setRedirectURL(true); return;
} else {
return u;
}
}
function createPopupString() {
var sh = v2c.readURL('h'+'ttp://epg.2ch.net/tv2chwiki/pukiwiki.php');
if (!sh) {
v2c.alert('ページを取得できませんでした。'); return;
}
var mr = sh.match(new RegExp('<div id="body">([^]+?)">昨日</a>','i'));
if (!mr) {
v2c.alert('抽出できませんでした。'); return;
}
var sr = mr[1];
sr = sr.replace(/<br>/ig,' <br>');
sr = sr.replace(/href=\"\?/ig, 'href="h'+'ttp://epg.2ch.net/tv2chwiki/pukiwiki.php?');
ph = '<html><body style="margin:5px;">'+sr+'</body></html>';
vcx.setPopupHTML(ph); vcx.setRedirectURL(true);
}
createPopupString();
545 名前:VIICさん:10/11/05 01:04:24 ID:f/LQnVRw
>529を修正して>544に変更しました。

>>536

>537でした。すまぬ…

あとポップアップの右クリコピーの処理で

>349,350をそのまま貼りつけて文字化けしていました。
この場合は「&」は「&amp;」にする必要がありました。

wikiのもこれから修正しておきます。

546 名前:VIICさん:10/11/06 19:57:58 ID:HqpcvFmV
Googleイメージ検索ポップアップの
gimage.jsを改造しました。
ttp://loda.jp/v2cthread/?id=1

変更は、> 301,336,398をまとめて

ページ移動と、画像のみ表示を可能にしたものです。
//【コマンド1】 $SCRIPT gimage.js
//【コマンド2】 $SCRIPT gimage.js 1 //画像のみ

不具合がなければwikiのほうに登録します。

547 名前:VIICさん:10/11/06 21:13:19 ID:gAOoYaf+
>>546
乙です
このスクリプトよく使うんで更新嬉しいです!!
コマンド1も2も不具合なさそうですね
548 名前:VIICさん:10/11/06 21:19:46 ID:+C6oI778
>>546
貰いましたよーありが㌧
549 名前:VIICさん:10/11/06 22:15:33 ID:lsxy3Zsh
ランキングポップアップのスクリプトで、このレイアウトのままコピーするには
どのように記述すればよいでしょうか。
ttp://up3.viploader.net/pc/src/vlpc005099.jpg
550 名前:VIICさん:10/11/06 23:35:27 ID:dzV17tZu
ツイートポップアップのスクリプトですが
この辺り
ttp://yy61.60.kg/test/read.cgi/v2cj/1266138741/749
ttp://yy61.60.kg/test/read.cgi/v2cj/1266138741/717

に対応するように、URLExec.datの記述を

ttp://twitter\.com/[^/]+/status/\d{11}

ttps?://twitter\.com/(?:#!/)?[^/]+?/status/\d+
変更しようと思いますがこれで問題ないでしょうか?(先頭のhは抜いてます)
正規表現はよくわからないので…

よければスクリプトの中も同等の修正して明日の晩辺りにwiki更新しようと思います。

(自分はこのスクリプトの作者じゃないですが)
その他内容で修正したい点あったら教えてください。
551 名前:VIICさん:10/11/07 20:38:35 ID:e//RU/GU
2ちゃんねる全板・勢いランキング zenban.js
を改造しました。
ttp://loda.jp/v2cthread/?id=2

変更点は、>280,427,507を整理・修正して

【コマンド2】 $SCRIPT zenban.js copy
で自動コピーされるようにしてみました。
>>549 試してみてください。

また、

スクリプトファイル一覧表示 opjsf.js
に改造しました。
ttp://loda.jp/v2cthread/?id=3

変更点は、>70-71の整理と

【コマンド2】 $SCRIPT opjsf.js 1 //詳細新規タブ
の追加です。ラベル名や登録場所など、新タブでリスト表示します。
552 名前:VIICさん:10/11/07 21:08:15 ID:AOyp0Rfg
>>551
お疲れ様です。
スクリプトファイル一覧表示 opjsf.jsの方ですが
”${SCRIPT:F} opjsf.js”のが良くないでしょうか?
553 名前:551:10/11/07 21:35:47 ID:e//RU/GU
>>552
すみません。ファイル内を訂正しました。
ttp://loda.jp/v2cthread/?id=4

編集パスを入れていなかったので>551のリンクは残ったままになります。

申し訳ありません。
554 名前:VIICさん:10/11/07 23:09:13 ID:bJbVbM05
>>551
ありがとうございます。コピーできました。

本当にわがままで恐縮ですが、できればポップアップ上で右クリコピーで動作するようには

できないでしょうか。(テレビ実況板の勢いポップアップもできれば・・・)
この先、他のスクリプトも導入する可能性があり、右クリコンテキストメニューをあまり増やしたくないというのが理由です。

もし、気が向いたらで結構ですのでご検討お願いいたします。

555 名前:VIICさん:10/11/07 23:50:37 ID:e//RU/GU
>>554
tv.jsは>544かwikiのを使えば右クリコピーで可能なはずです。

zenban.jsについてはテーブル表を使っているのでスクリプトでは対応できないと思います。

ポップアップ表示が表を使わずtv.jsの(縦の列が揃っていない)形でよければ可能かもしれません。
556 名前:VIICさん:10/11/08 00:05:43 ID:9WfJQoTA
ふと思ったんですが、現状で短縮URLって対応してるものはマウスオーバーで転送先が表示されますが
スクリプト+URLExec2.datで同じこと実現できませんかね?

サイトによって違いはあるでしょうけど、そんな大きな違いがあるわけでもないでしょうし

根本のスクリプトさえ作ってしまえば、基本的に
「URLExec2.datとスクリプト内のURL判定箇所に追記する」 程度の修正で新URLに対応できると思いますし
これなら非対応のURLがV2C本体に実装されるのを待つ必要もないですし

ttp://hibari.2ch.net/test/read.cgi/software/1286297818/549,551,552

この要望にも微妙に対応できる気がします。
スクリプト内で転送先URLを判別して、特定サイトだったら指定アプリに渡す とか力技になると思いますけど…

できるとしても自分はそういうの作れないので「できるなら誰か作って欲しい」という他力本願になってしまって申し訳ないのですが

557 名前:VIICさん:10/11/08 00:09:35 ID:7ByBp9+6
一応今気づいたので、

ttp://v2c.s50.xrea.com/contrib/script.html

のhissi.jsについてですが

初回スクリプト起動で読み込むとき、もしくは

script\scdata\hissi_menu.txt を削除した後の再読み込み
時にエラーとなります。

557行目の

hissi.org/menu.html

hissi.org/menu.php
に変更してください。
558 名前:VIICさん:10/11/08 00:19:06 ID:0eAb4qqC
>>556
短縮URLの転送先を直接開く、というスクリプトなら出来そうです。
559 名前:VIICさん:10/11/08 00:21:58 ID:9WfJQoTA
>>558
転送先のURLを取得する というのはできないんでしょうか?
できれば後は
v2c.context.setPopupText(url)
だけだと思うんですが
560 名前:VIICさん:10/11/08 00:31:33 ID:0eAb4qqC
>>559
可能です。

>できれば後は

>v2c.context.setPopupText(url)
>だけだと思うんですが
ちょっとやってみます。
561 名前:VIICさん:10/11/08 00:48:49 ID:9WfJQoTA
>>560
まじですか ありがとうございます。
562 名前:VIICさん:10/11/08 01:09:38 ID:0eAb4qqC
出来ました(一応)
これをURLExec2.datで呼び出してみてください。

var vcx = v2c.context;

var url = vcx.link;
var turl= expandURL(url);
if (!vcx.getPopupOfID(url)) {
vcx.setPopupText(turl);
vcx.setPopupID(url);
}
function expandURL(surl) {
var hr = v2c.createHttpRequest(surl,"");
hr.getContentsAsString();
if (hr.responseCode == 301) {
return expandURL(hr.getResponseHeader("Location"));
} else {
return surl;
}
}

次のサービスで動作確認しました。

bit.ly/t.co/nico.ms
563 名前:VIICさん:10/11/08 01:42:20 ID:9WfJQoTA
>>562
どうもありがとうございます!
サンプル
ttp://bit.ly/4sGBjh
ttp://tinyurl.com/yla6hh

適当に他のサービス探してきましたが、ダメなのもあるようです。


ttp://y2u.be/_UWAZDI2U1Y
ttp://go.2ch2.net/u/rABu2eeinB
ttp://ggle.jp/bzzg

ただ、レスポンスコードが302の場合も通すようにすればいけました

処理としてはこれでも問題ないのでしょうか?

このスクリプトなら新しくURLを追加する場合、URLExec2.datの方に追記すればいいだけなのでいいですね

564 名前:VIICさん:10/11/08 02:32:27 ID:rL+Jd/DL
>>551
> 2ちゃんねる全板・勢いランキング zenban.js
> を改造しました。

お疲れ様です。

このスクリプトを使って99位まで表示させようとするとエラーが出ます

var mr = sh.match( new RegExp( '<table class="forces" width="100%">([^]+?)<tr class="even"><td class="rank">100位</td>', 'i') );


から旧版の

var mr = sh.match(new RegExp('<table class="forces" width="100%">([^]+?)<td class="rank">100位</td>','i'));


にすると読み込めますどうやら
<tr class="even"> があると取得できないようです

<tr class="even">とは何なんでしょうか?

あと出来れば100位まで表示させたいのですが可能でしょうか?
565 名前:VIICさん:10/11/08 03:01:35 ID:7ByBp9+6
>>564
> <tr class="even">とは何なんでしょうか?
ポップアップ表示用の余分な記述を省くための措置です。

> あと出来れば100位まで表示させたいのですが可能でしょうか?

100位に限れば、とりあえず下で可能です。
var mr = sh.match( new RegExp( '<table class="forces" width="100%">([^]+)</table><div class="graphnote">', 'i') );

他の記述も考えてみます。

566 名前:VIICさん:10/11/08 03:37:20 ID:rL+Jd/DL
>>565
おお!聞いてみてよかった・・・
ありがとうございます無事100位まで表示できました!
567 名前:VIICさん:10/11/08 10:39:36 ID:S1APUjDy
>>557
僕の環境だと使えないと思って他のスクリプトで代用してました
ありがとうございます
568 名前:VIICさん:10/11/08 17:08:35 ID:ppg+cWaw
>>563
大丈夫です。
HTTPの規格についてはよく知らないのですが、HTTP301~303ならLocatonを取得、でいいかと思います。
- if (hr.responseCode == 301) {
+ if (hr.responseCode >= 301 && 303 >=hr.responseCode) {
569 名前:VIICさん:10/11/08 19:02:06 ID:Fq0lSPHe
>>555
>>554です。
ありがとうございました。
570 名前:VIICさん:10/11/08 21:48:07 ID:7ByBp9+6
2ちゃんねる全板・勢いランキング zenban.js
を改造しました。
ttp://loda.jp/v2cthread/?id=5

変更点は、>551をCSSで多少色付けして、上部にコピーボタンを追加しました。

あとは追加コマンドを2つ追加
//【コマンド3】 $SCRIPT zenban.js 3 //2:50位まで、3:75位まで、4:100位まで、それ以外は25位まで(ただし、3、4は全板のみ有効)
//【コマンド4】 $SCRIPT zenban.js tab //新規タブで表示

また、>231

レスタブすべてのIDランキング idrank.js
を改造しました。
ttp://loda.jp/v2cthread/?id=6

変更点は、コピーボタンの追加と

初回「input」付きのスクリプト起動で実行ボタンを押したとき、もしくは
script\scdata\idrank.txt を削除した後の同操作時のエラーを修正しました。

問題がなければwikiに登録します。

571 名前:570:10/11/08 22:07:09 ID:7ByBp9+6
忘れてました。zenban.jsは板リンクをクリックすると
板別勢いランキング(50位まで)に飛びます。
572 名前:VIICさん:10/11/08 23:06:31 ID:Fq0lSPHe
>>570
すみません、スクリプトとは関係ないのですが、V2C関連スレ用アップローダーのURLを
内部ブラウザで開く方法はありますか ?
外部ブラウザでは開けるのですが面倒で・・。
573 名前:VIICさん:10/11/08 23:12:34 ID:7ByBp9+6
>>572
こちらでは外部コマンドのリンクで
$BROWSER $LINK
で登録して開けてます。
574 名前:VIICさん:10/11/08 23:19:32 ID:Fq0lSPHe
>>573
素早いお答えありがとうございます。
申し訳ありませんが、設定の仕方を教えていただけますでしょうか・・・。
575 名前:VIICさん:10/11/08 23:27:46 ID:7ByBp9+6
>>574
設定>外部コマンド>一般タブ>リンクタブ
で以下を入力
ラベル 適当
コマンド $BROWSER $LINK

追加ボタンを押すです。あとはリンク右クリで選択


内部ブラウザは以下の設定が必要です。
ttp://www39.atwiki.jp/v2cwiki/pages/78.html
576 名前:VIICさん:10/11/08 23:33:33 ID:Fq0lSPHe
>>575
できました !
深夜にも関わらずご丁寧にありがとうございました。
577 名前:VIICさん:10/11/09 00:43:10 ID:UngnonXq
>>515
自分の環境では文字化けしてしまうようです
ttp://loda.jp/v2cthread/?id=7.png
フォントのせいかと思ってUIフォントを
MeiryoUIゴシックから、MSPゴシックに変更してみましたが変わらずでした

【V2C】 H20101107 [2.2.0_07] (L-0.6.2:x86)

【Java】 1.6.0_22-b04 (Sun Microsystems Inc.)
【OS】 Windows Vista Service Pack 2 (x86)
【メモリ】 Total(Free)/Max.: 382(223)/469 (Phys. Total/Avail.: 2007/456) [MB]
578 名前:VIICさん:10/11/09 00:51:09 ID:4c5QvpQx
>>577
スクリプトファイルの文字コードはUTF-8になっていますか?
579 名前:VIICさん:10/11/09 00:58:28 ID:UngnonXq
>>578
まさしくしていませんでした・・・うっかり・・・
申し訳ありませんでした
580 名前:VIICさん:10/11/09 03:10:17 ID:SS83g9Rw
>>570
お疲れ様です
一つ質問です。
zenban.jsのコピーボタンを外したいのですがどの行を削除すればいいんでしょうか?
581 名前:VIICさん:10/11/09 21:07:22 ID:BjtZnqhc
>>580
下の88,89行目を
sr = '<html><header>' + css + '</header><body style="margin:5px;"><div align="right"><form action="">'
+ '<input type="submit" value="コピー" name="copy"></form></div>' + sr + '</body></html>';

下の1行に変えてください。

sr = '<html><header>' + css + '</header><body style="margin:5px;">' + sr + '</body></html>';

wikiでは>570に削除箇所をコメントに記しておきます。

582 名前:VIICさん:10/11/09 21:22:12 ID:SS83g9Rw
>>581
ありがとうございました!
583 名前:VIICさん:10/11/10 00:59:48 ID:j0d5OXFB
>133,135を変更、1行だけだとさびしいので。
適当なので、誤検出しても(このスレとか特に)
スルーか、非表示で対処してください。以降コピペ
//【登録場所】 全体、レス表示
//【ラベル】 テンプレポップアップ
//【内容】 行数とリンクとIDから適当に判定して、テンプレをポップアップします。
//【コマンド】 $SCRIPT popupTemplate.js
//【スクリプト】
// ----- 次の行から -----
var vcx = v2c.context, th = vcx.thread;
var lc = th.localResCount;
function checkSearchID( id, list ) {
for ( var i = list.length-1; i >= 0; i-- ) {
if( list[i] == id ){
return true;
}
}
return false;
}
function addTempID( index_array, list ) {
if( !index_array ) return list;
for ( var i = 0, il = index_array.length; i < il && i < 10; i++ ) {
if ( index_array[i] >= 10 ) break;
var gr = th.getRes( index_array[i] );
var nc = (gr.message + '').split(/\n+?/).length;
var ll = gr.links.length;
if( ll >= 1 || nc >= 15 ) list.push( gr.id + '' );
}
return list;
}
function createPopupString( ) {
var gr = th.getRes(0);
var tid = [ gr.id + '' ];
tid = addTempID( gr.refResIndex, tid );
var a = [0], m = [], rc = [];
for ( var i = 1; i < 10 && i < lc; i++ ) {
gr = th.getRes( i );
if( gr.ng ) continue;
tid = addTempID( gr.refResIndex, tid );
var nc = (gr.message + '').split(/\n+?/).length;
var ll = gr.links.length;
if ( !checkSearchID( gr.id + '', tid ) && ( ll < 1 && nc < 15 )) {
continue;
} else {
if ( ll <= 0 && nc <= 3 ) continue;
}
a.push( gr.index );
}
vcx.setPopupResIndex( a );
//vcx.setFilteredResIndex( a ); //抽出
}
createPopupString();
// ----- 前の行まで -----
584 名前:VIICさん:10/11/10 03:05:34 ID:vvEB0Hcz
>>568
ありがとうございます。
コピーボタンとか転送先のブラクラチェックもできたら便利だと思うのですが…
何もかも他人任せなのはアレなのでなんとか自分でやってみたら
>>570のzenban.jsを丸パクリでいけました
しかし色々とダサいので手を入れてやろうという方はお願いします。

//【登録場所】リンク URLExec

//【ラベル】転送先URLポップアップ
//【内容】転送URLの転送先を調べる。転送URLでない場合は元URLがそのまま表示される
//【コマンド】${SCRIPT:S} PopupTransferURL.js
//【スクリプト】
var vcx = v2c.context;
var url = vcx.link;
var turl= expandURL(url);
var sr = '';
if (!vcx.getPopupOfID(url)) {
var aguse = '<a href="http://www.aguse.jp/?m=w&url=' + turl + '">転送先をaguseでチェック</a>';
var tlink = '→ <a href = "' + turl + '">' + turl + '</a>';
sr = '<html><body style="margin:5px;"><div align="left"><form action="">'
+ '<input type="submit" value="転送先URLコピー" name="copy"></form></div>' + aguse + '<br>' + tlink + '</body></html>';

vcx.setPopupHTML(sr);

vcx.setPopupID(url);
vcx.setTrapFormSubmission( true );
}

function expandURL(surl) {

var hr = v2c.createHttpRequest(surl,"");
hr.getContentsAsString();
//v2c.alert(hr.responseCode + "\n" + hr.getResponseHeader("Location"));
if (hr.responseCode >= 301 && 303 >= hr.responseCode) {
return expandURL(hr.getResponseHeader("Location"));
} else {
return surl;
}
}

function formSubmitted( u, sm, sd ) {

vcx.setClipboardText(turl);
}
585 名前:VIICさん:10/11/11 00:37:09 ID:INjfvr/M
みみずんID検索 mmzid.js
を改造しました。
ttp://loda.jp/v2cthread/?id=8

変更点は、>74,75の整理、

追加コマンドを2つ追加。
すみません。デフォルトをレス付きにしました。
リスト化は以下のコマンド2でお願いします。
あと右クリココピー用に>350を追加。

//【コマンド1】 ${SCRIPT:S} mmzid.js //レス表示

//【コマンド2】 ${SCRIPT:S} mmzid.js list //リスト
//【コマンド3】 ${SCRIPT:S} mmzid.js tab //新規タブ表示、無しでポップアップ
//※コマンド2,3は組合せ可能です。
586 名前:VIICさん:10/11/12 02:06:42 ID:FXssB/MJ
getlog.js 改め GetLog_for_V2C.js 変更
ttp://loda.jp/v2cthread/?id=9

元と紛らわしいので名前を変えました。

利用される方は再設定をお願いします。
デフォルトの挙動に変更はありません。
ただステータス表示が変わっています。
他の変更点の詳細はファイル内を見てください。
587 名前:VIICさん:10/11/12 18:24:33 ID:ze4OWG84
>>241
更新版
複数の顔文字を指定できるみたいですね

ttp://pc12.2ch.net/test/read.cgi/software/1266717576/437-438,510

//"V2C\script\system\rescheck.js"(無ければ文字コードUTF-8で作成)を
//メモ帳等のテキストエディタで開いてスクリプトを追加し、V2Cを再起動する。
//【内 容】 ( ・e・)とノノ∮‘ _l‘)を自動AA判定する。
//【スクリプト】
// ----- 次の行から -----
function checkAA(res,cx) {
var msg=res.message;
if ((msg.indexOf('( ・e・)')>=0)||(msg.indexOf('ノノ∮‘ _l‘)')>=0)) {
res.setAA(true);
}
}
// ----- 前の行まで -----
588 名前:VIICさん:10/11/12 23:27:37 ID:FoPtkDNr
スクリプトを作ってくれている人のおかげでどんどん便利になるなー。
いつもありがとう。
589 名前:VIICさん:10/11/13 02:33:08 ID:WIxKk4NA
ttp://pc12.2ch.net/test/read.cgi/software/1279551481/794
ttp://hibari.2ch.net/test/read.cgi/software/1280598891/122,180
> 自動的にSystem.gc()を実行したい場合は
> rescheck.jsのendCheck(cx)で実行するか、
> 定期的にSystem.gc()を実行するスクリプトを実行してください。
//【内 容】 スレッド読み込み時に自動的にガベージコレクションを実行する。
//【スクリプト】
// ----- 次の行から -----
function endCheck(th, cx) {
java.lang.System.gc();
}
// ----- 前の行まで -----
590 名前:VIICさん:10/11/13 02:35:24 ID:WIxKk4NA
rescheck.jsについてですがwikiには以下の形でまとめて転載しようかと考えています。
テストはしましたが、あまりrescheck.jsは利用していないので問題が無いことを願います。
少ないので元URLの他に、テスト用で試したものを追加しました。

//【登録場所】 "V2C\script\system\rescheck.js"

//【内容】 rescheck.jsのまとめ
//※beginCheckとendCheckの{}内で、行頭のコメント「//」を、利用する行ごとに解除することで、有効になります。
//【更新日】 2010/11/13
//【元URL】 ttp://yy61.60.kg/test/read.cgi/v2cj/1252074124/241,248,257-258,300,587,589
//【スクリプト】
//以降のレスに...
591 名前:590:10/11/13 02:36:20 ID:WIxKk4NA
// ----- 次の行から -----
function beginCheck( th, cx ) {
var ck = {}, bd = th.board;
// ***** 次の行から利用する行頭の「//」を削除する *****
//cx.setCheckRawText( false ); //テキスト置換関数checkRawTextを実行しない。
//ck.sankake = true; //さんかっけーを△にする。
//ck.no_anchor_1001 = th.bbs.is2ch; //1001のアンカーはリンクしない。

//cx.setCheckAA( false ); //AA判定関数checkAAを実行しない。

//ck.aa_type1 = bd.key.equals( "v2cj" ); //V2Cスクリプトのレスを自動AA判定する。
//ck.aa_type2 = true; //( ・e・)とノノ∮‘ _l‘)を自動AA判定する。

//cx.setCheckNG( false ); //非表示判定関数checkNGを実行しない。

//ck.ng_res1 = true; //レス1を常に非表示にする。
//ck.ng_kote = bd.key.equals( "software" ) ? bd.anonymousName : null; //ソフ板でn|aさん以外のコテハンを非表示判定する。
// ***** 前の行まで *****
for ( var i in ck ) {
return ck;
}
return false;
}
function checkRawText( res, cx ) {
print('true');
var msg = res.message + '';
var obj = cx.checkObject;
if ( obj.sankakke ) msg = msg.replace( /さんかっけー/g, '△' );
if ( obj.no_anchor_1001 && res.number > 1000 ) {
var sti=res.timeid;
if (sti.startsWith( 'Over ' )) {
msg = msg.replace( />>(\d+)/g, '≫$1' );
}
}
res.setMessage( msg );
}
function checkAA( res, cx ) {
var msg = res.message + '';
var obj = cx.checkObject;
if ( obj.aa_type1 && msg.indexOf( 'function' ) >= 0 ) {
res.setAA(true);
}
if ( obj.aa_type2 && ( msg.indexOf( '( ・e・)' ) >= 0 || msg.indexOf( 'ノノ∮‘ _l‘)' ) >= 0 ) ) {
res.setAA(true);
}
}
function checkNG( res, cx ) {
var sn = res.name;
var obj = cx.checkObject;
if ( obj.ng_res1 && res.number == 1 ) {
res.setNG( 'レス1' );
}
if ( obj.ng_kote && ( sn != null ) && !sn.startsWith( 'n|a' ) && !sn.equals( obj.ng_kote ) ) {
res.setNG( 'コテハン' );
}
}
function endCheck( th, cx ) {
// ***** 次の行から利用する行頭の「//」を削除する *****
//java.lang.System.gc(); //自動的にガベージコレクションを実行する。
// ***** 前の行まで *****
}
// ----- 前の行まで -----
592 名前:590-591:10/11/13 21:06:01 ID:WIxKk4NA
すみません。>591に余計な記述がありました。
checkRawText{}内に最初の行に
print('true');
があるためコンソール出力に無意味な表示が出ていました。
利用されてる方はprint('true');を削除でお願いします。

wikiにはrescheck.js20101113a.zipとして変更しておきます。

593 名前:VIICさん:10/11/14 17:24:46 ID:ih2JaWEq
VBScript製なのでこのスレのいうスクリプトではなく
どちらかと言えば外部ツール的なものに分類されるかもしれませんが

・V2Creboot.vbs

>>265
> //コマンド2はscriptフォルダ内にV2Creboot.vbsが必要。
ttp://pc12.2ch.net/test/read.cgi/software/1266717576/23
ttp://www39.atwiki.jp/v2cwiki/pages/55.html
wikiに習って説明文つけたしてます
文字エンコード:Shift-JIS
' 【登録場所】全体 レス表示
' 【ラベル】V2C再起動
' 【内容】V2Cを指定時間後、再起動する
' 【コマンド】:wscript "$SAVEDIR\script\V2Creboot.vbs" "$APPDIR\V2C.exe"
' 【スクリプト】
' ----- 次の行から -----
Set args = Wscript.Arguments
V2CexePath = CHR(34)+args(0)+CHR(34)
Set Shell = CreateObject("WScript.Shell")
Shell.SendKeys "%{F4}"
WScript.Sleep 5000 ' 再起動するまでの時間
Shell.Run(V2CexePath)
Set Shell = Nothing
Set args=Nothing
' ----- 前の行まで -----

・OpenUploader.vbs

ttp://pc11.2ch.net/test/read.cgi/software/1232549012/829,833
【登録場所 】選択テキスト
【ラベル】OpenUploader
【内容】OpenUploader.vbsは、コマンドラインで渡されたワードを、
同じディレクトリ内のUploaderList.xmlのNameノード(<Name>~</Name>)の正規表現で検索し、
ヒットしたアップローダーをブラウザで開きます。
【コマンド】 wscript "OpenUploader.vbsのパス" "$SELTEXT"
再うp ttp://loda.jp/v2cthread/?id=10
594 名前:VIICさん:10/11/14 17:55:46 ID:ih2JaWEq
機能的にこのスレでは既出ですが
過去にこういうものがあったという資料的な意味で貼っておきます

・datopen.js,

ttp://pc12.2ch.net/test/read.cgi/software/1252568950/229,278
//【登録場所】リンク
//【ラベル】datopen.js
//【内容】このコマンドをdat落ちスレのURLに対して実行すると、外部サイトからdatを取って来て開く。
//【コマンド】${SCRIPT:FwS} datopen.js $LINK
//【更新日】2009/09/20
//【元URL】http://pc12.2ch.net/test/read.cgi/software/1252568950/229
//【スクリプト】
// ----- 次の行から -----
var url=v2c.context.argLine;
if(url.equals("$LINK"))url=v2c.context.link.url.toString();
var daturl=url.replaceAll("http:/+([^/]+)/.*read[^/]+/([^/]+)/(\\d+).*$","http://dat.tanabota.info/get_dat.php?dat=$1_$2_$3");
var dat=v2c.createHttpRequest(daturl).getContentsAsBytes();
v2c.getThread(url).importDatBytes(dat);

・datopen2.js

//【登録場所】全体 レス表示
//【ラベル】datopen2.js
//【内容】このコマンドをdat落ちスレに対して実行すると、外部サイトからdatを取って来て開く。
//【コマンド】${SCRIPT:FwS} datopen2.js
//【更新日】2009/09/22
//【元URL】http://pc12.2ch.net/test/read.cgi/software/1252568950/278
//【スクリプト】
// ----- 次の行から -----
var url=v2c.context.thread.url.toString();
var daturl=url.replaceAll("http:/+([^/]+)/.*read[^/]+/([^/]+)/(\\d+).*$","http://dat.tanabota.info/get_dat.php?dat=$1_$2_$3");
var dat=v2c.createHttpRequest(daturl).getContentsAsBytes();
v2c.getThread(url).importDatBytes(dat);
// ----- 前の行まで -----
595 名前:VIICさん:10/11/14 19:45:30 ID:ih2JaWEq
>>265のassistIconEdit.jsをavatar用アイコンにも使用できるよう改造しました
他に説明文も若干変更しています。

ttp://loda.jp/v2cthread/?id=11

596 名前:VIICさん:10/11/14 22:41:16 ID:ih2JaWEq
avatar用のアイコンって最初から拡張子付きだったのか・・・
>>595は取り下げます失礼しました
説明文のみ更新したものをwikiに載せることにします
597 名前:VIICさん:10/11/15 01:53:28 ID:r5U8dftG
>>194
再UPしてください><
598 名前:VIICさん:10/11/16 01:57:22 ID:Av2rfal6
>>597
wikiにコメント以外そのままを登録しました。うまくいかないスレもありますが現在の仕様です。

【V2C】 T20101115 [2.2.0_10] (L-0.6.2:x86)

【Java】 1.6.0_22-b04 (Sun Microsystems Inc.)
【OS】 Windows XP Service Pack 3 (x86)
【メモリ】 Total(Free)/Max.: 193(112)/494 (Phys. Total/Avail.: 2030/1002) [MB]
【不具合内容】
PopupStatusNicovideo.jsの最後のほう vcx.setPopupHTML(nvstream);の後に
vcx.setCloseOnMouseExit(true);
を追加しましたが、

ポップアップ上の外部リンク(内部ブラウザ)をクリックで以下のエラーになりました。

その後は、外部ブラウザから開くようになりました。

Exception in thread "Thread-38" java.lang.NoClassDefFoundError: org/monazilla/v2c/V2CWebBrowser

at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at org.monazilla.v2c.V2CFileClassLoader.defineV2CClass(V2CFileClassLoader.java:62)
at org.monazilla.v2c.V2CWebBrowserUtil.loadV2CClass(V2CWebBrowserUtil.java:216)
at org.monazilla.v2c.V2CWebBrowserUtil.checkJDIC(V2CWebBrowserUtil.java:179)
at org.monazilla.v2c.V2CMiscUtil.openLinkWithWebBrowser(V2CMiscUtil.java:2591)
at org.monazilla.v2c.V2CMiscUtil.openLinkWithWebBrowser(V2CMiscUtil.java:2582)
at org.monazilla.v2c.V2CScriptApp$5.run(V2CScriptApp.java:625)
at java.security.AccessController.doPrivileged(Native Method)
at org.monazilla.v2c.V2CScriptApp.browseURL(V2CScriptApp.java:623)
at org.monazilla.v2c.V2CScriptApp.browseURL(V2CScriptApp.java:616)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.Trampoline.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
at sun.org.mozilla.javascript.internal.MemberBox.invoke(Unknown Source)
at sun.org.mozilla.javascript.internal.NativeJavaMethod.call(Unknown Source)
at sun.org.mozilla.javascript.internal.Interpreter.interpretLoop(Unknown Source)
at sun.org.mozilla.javascript.internal.Interpreter.interpret(Unknown Source)
at sun.org.mozilla.javascript.internal.InterpretedFunction.call(Unknown Source)
at sun.org.mozilla.javascript.internal.ContextFactory.doTopCall(Unknown Source)
at sun.org.mozilla.javascript.internal.ScriptRuntime.doTopCall(Unknown Source)
at sun.org.mozilla.javascript.internal.InterpretedFunction.call(Unknown Source)
at com.sun.script.javascript.RhinoScriptEngine.invoke(Unknown Source)
at com.sun.script.javascript.RhinoScriptEngine.invokeFunction(Unknown Source)
at org.monazilla.v2c.V2CEvalScriptAction.run(V2CEvalScriptAction.java:80)
at java.security.AccessController.doPrivileged(Native Method)
at org.monazilla.v2c.V2CEvalScript.doScriptAction(V2CEvalScript.java:73)
at org.monazilla.v2c.V2CEvalScript.run(V2CEvalScript.java:95)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.monazilla.v2c.V2CWebBrowser
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 37 more
599 名前:597:10/11/16 02:25:07 ID:B+BuLgnL
>>598
ありがとうございます!
600 名前:VIICさん:10/11/16 03:02:13 ID:uazZY6nk
>>598
自分もなります
ただ、setCloseOnMouseExitは関係ないかも
なくてもなります
setRedirectURLがあると発動するような
601 名前:n|a:10/11/16 07:00:14 ID:xXaQ7HHc
>>598,600
すみません、とりあえずスクリプトから内部ブラウザを開く前に
一度内部ブラウザを表示することにより問題を回避してください。
602 名前:VIICさん:10/11/17 22:32:52 ID:Oy3bZSHZ
ThreadURLMemo.js >132の整理・機能追加
ttp://loda.jp/v2cthread/?id=12
引数なしで、テキストファイルにURLを記憶する。

ClipboardThreadURL.js >530の整理・機能追加

ttp://loda.jp/v2cthread/?id=13
引数なしで、クリップボードにURLをコピーする。
引数なしの挙動が元と違います。両者と統一しました。
「(この)レスのURLをコピー」と同じ結果のはず?

基本的に動作は同じです。保存先がクリップボードかテキストファイルかの違いです。

引数追加で、レス番にジャンプか、記憶したスレッドが表示されていれば、抽出かポップアップします。
チェックボックス有りのレス番 > 抽出有りのレス番 > 「レス表示」「全体」で実行したレス番
の優先順位で記憶、コピーします。
603 名前:n|a:10/11/18 02:02:22 ID:ALjzsoej
>>598,600
T20101117で修正できたと思います。
604 名前:VIICさん:10/11/20 00:59:43 ID:BkeYeFY1
ttp://twitter.com/SatoMasahisa/status/5150397081591808
>>373のTweetポップアップのスクリプトでポップアップ表示されず
エラーが出ます
Ver.2.3.0
Windows XP SP3
Java 1.6.0.22
605 名前:VIICさん:10/11/20 01:39:42 ID:ScVNANsx
>>604
その問題は>>550が原因で発生するようです。

wikiのスクリプト一覧のページ(ttp://www39.atwiki.jp/v2cwiki/pages/99.html)にあるものは

>>550さんが修正してくださったようなので、それを利用していただければ大丈夫だと思います。
また、URLExec2.datを利用している場合は、それも>>550のように修正してください。
606 名前:604:10/11/20 01:49:45 ID:BkeYeFY1
>>605
ありがとうございました
ご指摘のとおりにしたところ正常に機能しました
607 名前:VIICさん:10/11/21 05:09:39 ID:9rPSfgpk
仕様外なのかわからないのですが…
【V2C】 2.3.0 [R20101119] (L-0.6.2:x86)
【Java】 1.6.0_22-b04 (Sun Microsystems Inc.)
【OS】 Windows XP Service Pack 3 (x86)
【メモリ】 Total(Free)/Max.: 164(95)/494 (Phys. Total/Avail.: 2030/947) [MB]
【不具合内容】
特定条件でv2c.openURLを複数行うスクリプトを実行すると、コンソールエラーがでるか、固まる。

【再現方法1】

2カラムで片方をタブなしの空にして以下のスクリプトを実行
//【コマンド】 ${SCRIPT:A} test.js
function test() {
v2c.openURL('h'+'ttp://hibari.2ch.net/test/read.cgi/mac/1269276395/', false, true, true);
v2c.openURL('h'+'ttp://hibari.2ch.net/test/read.cgi/software/1289655981/', false, true, true);
v2c.openURL('h'+'ttp://yy61.60.kg/test/read.cgi/v2cj/1252074124/', false, true, true);
v2c.openURL('h'+'ttp://hibari.2ch.net/test/read.cgi/software/1278951097/', false, true, true);
v2c.openURL('h'+'ttp://yy61.60.kg/test/read.cgi/v2cj/1266138741/', false, true, true);
}
test();

→以下のコンソールエラー

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2
at javax.swing.plaf.basic.BasicTabbedPaneUI.paintTabArea(Unknown Source)
at org.monazilla.v2c.V2CCustomTabbedPaneUI.paintTabArea(Unknown Source)
at javax.swing.plaf.basic.BasicTabbedPaneUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at org.monazilla.v2c.V2CCustomTabbedPane.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
at javax.swing.BufferStrategyPaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
【調査済項目1】
実行したカラムとは別のカラムにスレが表示される場合がある(不定)

【再現方法2】

1カラムでタブなしの状態で起動して同スクリプトを実行で固まる。
コマンドプロンプトからの結果を添付、Found 1 deadlock.が表示
ttp://loda.jp/v2cthread/?id=14(テキスト中身表示されるのか・・・)
608 名前:n|a:10/11/21 23:55:16 ID:2SJ33zez
>>607
人柱版 H20101121 ttp://v2c.s50.xrea.com/V2C_H20101121.jar
>実行したカラムとは別のカラムにスレが表示される場合がある(不定)
以外は直ったと思いますがどうでしょうか。
609 名前:VIICさん:10/11/22 00:19:03 ID:jUHFrtvQ
>>608
エラーと固まる現象はなくなっています。
対応ありがとうございます。
610 名前:VIICさん:10/11/23 16:04:59 ID:vsTer+NN
>>546 動かなくなってます。
どなたか修正お願い致します
611 名前:VIICさん:10/11/23 18:28:32 ID:/FnXdxbq
>>610
修正した。
ttp://loda.jp/v2cthread/?id=15

ポップアップ外で閉じる機能を追加。

いらない場合は最後の方の
vcx.setCloseOnMouseExit( true );
を削除かコメントアウト。
612 名前:VIICさん:10/11/23 19:54:20 ID:adHqeAX2
>>611
機能追加までしてくれてる~
ありが㌧
613 名前:VIICさん:10/11/23 20:47:56 ID:vsTer+NN
>>611
ありがとうございました!
614 名前:VIICさん:10/11/24 17:15:36 ID:WWdHEghL
要望です

vcx.setCloseOnMouseExit( true );


これ使う人は使用してるポップアップ系スクリプト全部修正する人が多いと思うのです
一つ一つ確認するのは大変だし(スクリプト知らない人なら尚更)
指定されてない場合のデフォルト値をどこかで設定できるようにならないですかね
これだとスクリプト提供する側の人も
使うかどうかはユーザーに任せることができますし

V2Cの設定にチェックボックスでもあるとうれしいけど、

やるとしたらrescheck.jsみたいな感じでやらせるのが妥当でしょうか
615 名前:604:10/11/24 19:04:56 ID:q4zCW7zo
人柱版にしたら>>373のTweetポップアップスクリプトで再びエラーが出るようになりました
ttp://twitter.com/SatoMasahisa/status/5150397081591808
Ver.2.3.0_02 H20101121
Windows XP SP3
Java 1.6.0.22
616 名前:VIICさん:10/11/24 20:24:11 ID:I/rLxZ5z
>>615
そのTweetは既に削除されていて、エラーが出るのはそのためですが、
削除されていないものでも正常に表示できないものがありますね(↓等)
ttp://twitter.com/#!/SatoMasahisa/status/5729106113073153
削除済みTweetのエラー処理も含め、時間があるときに対応してみます

誰かかわりにやってくれないかな…(チラッ

617 名前:604:10/11/24 20:41:24 ID:q4zCW7zo
>>616
すいません!Tweetが削除されてるのは盲点でした
表示されないTweetもあるんですね
いろいろお手数かけてすいません、よろしくお願いします
618 名前:VIICさん:10/11/24 22:06:29 ID:WWdHEghL
>>616
やってみました
良く解らんまま試行錯誤して修正したので
気に入らないという方は遠慮無く添削してください
ttp://www1.axfc.net/uploader/Sc/so/176957

html版で!#のURLに対応したのと、ページがない場合に一応メッセージが出るはず

ところで、このツイートポップアップは
API版で取得失敗したとき用にhtml用のコードもAPI版の方に書いてあるのですが、
スクリプト内で別スクリプトを呼ぶようにはできないでしょうか

今回の件に限らず、例えば

短縮URLの転送先を調べて(>>584)、転送先がyoutubeだったら
youtubeステータスをポップアップ(>>405)を呼び出す みたいなこともできるかと。

この件に関しては、スクリプト自体は一つにして

引数で機能を切り替えるようにした方がいい気がしますが
619 名前:604:10/11/24 23:03:33 ID:q4zCW7zo
>>618
ありがとうございます!
早速使わせていただきます!
620 名前:VIICさん:10/11/25 20:57:10 ID:s5g3YbOD
不具合というか仕様の確認したいのですが(以降のスクリプトを利用)

1.setCloseOnMouseExit(true);でポップアップに<input>ボタンがあるとボタン内にマウス移動で閉じる。

2.setCloseOnMouseExit(true);で提示版リンクマウスオーバポップアップで元ポップアップが閉じる。
3.setCloseOnMouseExit(true);でポップアップ左端ドラックはゆっくり移動しないと閉じる。
4.redirectURLでは、リンク(test)クリック後、closeOriginalPopup()の有無にかかわらず元ポップアップが閉じる。ヘルプの説明と違う?
5.1、4次第ですが、複数ポップアップした場合でのsetCloseOnMouseExit(true);の扱い(wikiのtv.jsとかどうしようかなと...)

【V2C】 H20101121 [2.3.0_02] (L-0.6.2:x86)

【Java】 1.6.0_22-b04 (Sun Microsystems Inc.)
【OS】 Windows XP Service Pack 3 (x86)
【メモリ】 Total(Free)/Max.: 468(384)/494 (Phys. Total/Avail.: 2030/707) [MB]

var vcx = v2c.context, res = vcx.res, th = vcx.thread, h = '';

function formSubmitted(u,sm,sd) {
}
function redirectURL(u) {
if ((u + '').indexOf('example') > -1) {
vcx.setPopupHTML( h );
vcx.setTrapFormSubmission( true );
vcx.setRedirectURL( true );
vcx.setCloseOnMouseExit( true );
//vcx.closeOriginalPopup()
return null;
} else {
return u;
}
}
function test() {
h = '<html><body style="margin:10px;">'
+ '<a href="h'+'ttp://www.example.co.jp">test</a><br>'
+ '<a href="h'+'ttp://hibari.2ch.net/test/read.cgi/software/1289655981/5">Java+Swingによる2chブラウザ V2C_R33 [5]</a><br>'
+ '<form action=""><input type="submit" value="テスト" name="test"></form>'
+ '</body></html>';
vcx.setPopupHTML( h );
vcx.setTrapFormSubmission( true );
vcx.setRedirectURL( true );
vcx.setCloseOnMouseExit( true );
}
test();
621 名前:VIICさん:10/11/25 22:16:20 ID:s5g3YbOD
PopupStatusNicovideo.jsを更新
ttp://loda.jp/v2cthread/?id=16

・ポップアップ外に移動で閉じるようにした。

・設定でタグの後にニコニコ大百科のリンク付加ができるようにした。
詳細は「使い方.txt」で。
622 名前:n|a:10/11/26 00:59:30 ID:ScUDgzUj
>>614,618
検討してみます。
>>620
すみません、こちらのテスト不足でそれらは全てバグです。
仕様上はredirectURL内でもsetCloseOnMouseExit(true)を実行する必要があります。
623 名前:n|a:10/11/27 00:07:45 ID:0RLDSBo/
>>620
1.-3.は次回更新で修正します。
4.については
A)コードを見直してみると、昔からリンクをクリックした時は無条件にポップアップを
 閉じていたようです。
B)今さらこの動作を変更すると混乱が起きると思われるので、Aを仕様として
 V2C使用法を変更しました。(closeOriginalPopupの説明からredirectURLを外した。)
ただ、wikipedia.jsの検索語のリンクをクリックするとポップアップはそのままで
外部ブラウザでwikipediaのページが開いたような記憶があるような無いような…。

5.に関しては、

現在は「各ポップアップに対してsetCloseOnMouseExit(true)を実行する」が仕様ですが
v2c.context.setDefaultCloseOnMouseExit(true)でそのスクリプトのデフォルト値を
設定するという可能性も考えています。
624 名前:VIICさん:10/11/27 00:09:51 ID:Wg7KCYsj
>>622
>検討してみます。
おおおお
ありがとうごぜえますだ。
625 名前:620:10/11/27 06:57:21 ID:i1x2/ztN
>>622-623
了解しました。
たしかに、使用者に手間かけそうな気はしますね。
setPopupID(s)とgetPopupOfID(s)からうまく調整できないものかとか
考えてみたけど、まとまらない。

tv.jsについては、

setCloseOnMouseExit(true)使用の場合は、
リンククリック時、戻る<input>ボタンを表示しない多段でサブポップアップして
マウス移動で元ポップアップに移動、サブポップアップは閉じる
が出来ればなと思いました。とりあえず今後の修正でいじってみます。
626 名前:VIICさん:10/11/27 07:38:35 ID:i1x2/ztN
必死チェッカーもどきのポップアップ、hissi.jsで
>557について変更したものを置いておきます。

ttp://loda.jp/v2cthread/?id=17

627 名前:n|a:10/11/27 22:11:39 ID:0RLDSBo/
>>625
人柱版 H20101127 ttp://v2c.s50.xrea.com/V2C_H20101127.jar
>620の1.-3.を修正した。
・v2c.context.setCloseOnLinkClick(b)
 bがfalseの時setPopupHTML()で表示したポップアップのリンクをクリックした時に
 そのポップアップを閉じない。(デフォルトはtrue。)
 またbがfalseの時redirectURLによるポップアップはマウスポインタの位置に表示される。
・v2c.context.setDefaultCloseOnMouseExit(b)
 setCloseOnMouseExit(b)のデフォルト値を設定する。
 スクリプトのどこかで一度実行しておくと、
 以後同じ値bのsetCloseOnMouseExit(b)を実行する必要が無い。

setCloseOnLinkClick(false)でtv.jsの動作を>625のようにできると思います。

628 名前:502:10/11/28 19:16:29 ID:w61u5DsJ
>>503
すみません。
遅くなりましたが、有難うございます!!!
629 名前:VIICさん:10/11/28 19:53:59 ID:WlHSvHMT
>>627
ありがとうございます。修正も確認しました。

tv.jsを更新

ttp://loda.jp/v2cthread/?id=19

スクリプトファイル内に以下の設定を追加

・カーソルをポップアップ内から外に移動で、そのポップアップを閉じる
・ポップアップのリンクをクリックで、そのポップアップを閉じる

デフォルトの挙動が変わりました。

更新前と同じ挙動は以下です。
var closeOnMouseExit = false;
var closeOnLinkClick = true;
630 名前:VIICさん:10/11/29 01:29:29 ID:N+fovKTH
ttp://yy61.60.kg/test/read.cgi/v2cj/1202997178/573-574
ttp://loda.jp/v2cthread/?id=18

転載です

上のスクリプトの説明文を下のように変更してwikiのスクリプト一覧に掲載させて頂きました

//【登録場所】レス表示

//【ラベル】レス代行テンプレ取得
//【内容】書き込みたいスレで実行すると、レス代行テンプレをクリップボードにコピーする
// *レス代行テンプレを書き込み欄へ直接送るには
//  //vcx.insertToPostMessage(message);
//  の文頭の「//」を削除する。
//【コマンド】${SCRIPT:Fr} daikou.js
//【更新日】 2010/11/28
//【元URL】 ttp://yy61.60.kg/test/read.cgi/v2cj/1252074124/630
//【スクリプト】
631 名前:VIICさん:10/12/04 08:32:22 ID:SeBdgIdI
>>621
どなたか心得のある方、PopupStatusYoutube.jsも同様に改良して頂けないでしょうか
・ポップアップ外に移動で閉じるようにした。←これがあるとありがたい
632 名前:VIICさん:10/12/04 08:48:54 ID:SeBdgIdI
あとついでに>>629がエラー出て機能しないようです
setDefaultCloseOnMouseExitが見つからないとかなんとか
633 名前:629:10/12/04 09:16:57 ID:9JxvuN4E
>>632
忘れてましたが>629
>627のH20101127以上が必要です。

>>631も627に更新して

v2c.context.setDefaultCloseOnMouseExit(true);
を何処か空いてる行に入れておけば機能するはず。

wikiの一覧からのはリリースまでは人柱対応版はうpしないか

もしくは分けたほうがいいかもしれん

今は手が出せないので他の方まかせです。

634 名前:VIICさん:10/12/04 19:04:46 ID:SeBdgIdI
>>633
指摘ありがとう
上手くできました
635 名前:VIICさん:10/12/05 14:03:48 ID:XJ08OtqM
【V2C】 T20101204 [2.3.0_05] (L-0.6.2:x86)
【Java】 1.6.0_22-b04 (Sun Microsystems Inc.)
【OS】 Windows Vista Service Pack 2 (x86)
【メモリ】 Total(Free)/Max.: 396(240)/469 (Phys. Total/Avail.: 2007/759) [MB]
【不具合内容】 >>585 みみずんID検索 mmzid.js が使えなくなってしまいました
「ページの取得に失敗しました: 503 Service Temporarily Unavailable」と、ダイアログに表示されます
【再現方法】 mmzid.jsを実行する
【調査済項目】 ネットワークログ
13:59:44.664 http://mimizun.com/search/perl/idsearch.pl
+PostForm Request:
13:59:44.923 http://mimizun.com/search/perl/idsearch.pl
+PostForm Response: HTTP/1.1 503 Service Temporarily Unavailable
13:59:44.923 http://mimizun.com/search/perl/idsearch.pl
+Server returned HTTP response code: 503 for URL: http://mimizun.com/search/perl/idsearch.pl
636 名前:VIICさん:10/12/05 14:11:02 ID:XyotRB17
サーバーが混んでて一時的に使えなくなってるだけ。HTTP 503とかでググれ。
637 名前:VIICさん:10/12/05 14:13:33 ID:XJ08OtqM
一時的にというわけではなさそうです
12月に入ってから何度も試してますがずっとこの調子ですね
638 名前:VIICさん:10/12/05 14:15:42 ID:XyotRB17
ブラウザからもmimizunに繋がらないね。混んでるんじゃなくてメンテ中って書いてあるけど。
>みみずんからのお知らせ
>
>サーバメンテナンス中
>
>ごめんなさい。時間をおいて接続しなおしてください。
>
>叱咤激励は、閑古鳥掲示板へ・・・
639 名前:VIICさん:10/12/05 14:18:08 ID:XJ08OtqM
メンテ中でしたか
すみません、ブラウザからのチェックはしてませんでした
640 名前:VIICさん:10/12/05 20:41:24 ID:Hd8fGjlm
>>637
サーバー復帰で使えないのを確認しました。

みみずんID検索mmzid.jsの更新

※T20101204以上が必要です。
ttp://loda.jp/v2cthread/?id=20

・通常の表示で取得に失敗していたのを修正。

・ポップアップ表示のときポップアップ外で閉じるようにした。
641 名前:VIICさん:10/12/09 21:43:34 ID:XNThdMEx
>>640
返事が遅くなってすみません
アップロダのメンテが何日か続いてたので・・・
今し方ファイルを確認しました
ありがとうございました!
642 名前:VIICさん:10/12/10 02:21:33 ID:2Cn9D67f
本スレにも書きましたがh抜きしてなかったのでもう一度ここにも書きます

PopupTransferURL.jsで

転送先URLが
ttp://www.tocd.org/news2ch/r.cgi/hato.2ch.net/test/read.cgi/news/1291898737/
となっているのを
ttp://hato.2ch.net/test/read.cgi/news/1291898737/
に置き換えたいのですが何を書き加えればいいですか?
643 名前:VIICさん:10/12/11 20:13:32 ID:9qC260O+
>>642
リダイレクトされないから転送URLって訳でもない気がするし
これならReplaceStr.txtで置き換えたほうが賢い気もするけど
こういうサイト固有の仕様でも対応できるというのがこのスクリプトのコンセプトだと思うので
とりあえずやってみました
ttp://www.tocd.org/news2ch/r.cgi/
の後ろが元URLという事らしいのででそこ抜き出してるだけ
ttp://loda.jp/v2cthread/?id=21

しかもなんか泥臭いやり方になってしまいましたが…

644 名前:VIICさん:10/12/11 20:21:59 ID:9qC260O+
あら?
リダイレクトされるね
昨日見たときクッションページが表示されたんだが
645 名前:VIICさん:10/12/11 20:28:49 ID:9qC260O+
しかも上げるファイル間違えてるし
とにかく>>643はなかったことに
646 名前:n|a:10/12/17 00:21:50 ID:Fa9P6COD
bd.createLocalThread(st,rl)の使用例です。
「全スレッドタブの更新」の後に実行してください。
(注意:未読フラグが全てリセットされます。)

//【登録場所】全体、レス表示

//【ラベル】新着レスまとめ
//【内容】レス表示欄で開いている未読有スレッドの新着レスをまとめたスレッドを作る。
//【コマンド】${SCRIPT:Fw} newresthread.js ローカル板のフォルダ
//【スクリプト】
function createNewResThread() {
var args=v2c.context.args;
if (args.length==0) {
return "板のフォルダが指定されていません。";
}
var bd=v2c.getLocalBoard(args[0]);
if (!bd) {
return "ローカル板を取得できませんでした。";
}
var tha=v2c.resPane.threads;
if (tha.length==0) {
return "レス表示タブが存在しません。";
}
var ra=[];
for (var it=0; it<tha.length; it++) {
var th=tha[it];
if (th.local||!th.unread) {
continue;
}
var nn=th.newResCount;
if (nn==0) {
continue;
}
var nrl=th.localResCount, rt=[], nr=0;
for (var i=0; i<nn; i++) {
var res=th.getRes(nrl-i-1);
if (res&&!res.ng) {
nr++;
rt.push(res);
}
}
if (nr>0) {
rt.push(v2c.createResSeparator("新着 "+nr+": "+th.title));
ra = ra.concat(rt.reverse());
}
th.resetUnread();
}
if (ra.length==0) {
return "新着レスが存在しません。";
}
var th=bd.createLocalThread("新着レス",ra);
if (!th) {
return "ローカルスレッドを作成できませんでした。";
}
th.open(false);
return null;
}
var se=createNewResThread();
if (se) {
v2c.alert(se);
}
647 名前:VIICさん:10/12/17 01:50:48 ID:dzsuTmQo
>>646
乙です!いいですねこれ
早速パクって「未読有スレッドの新着レス」→「画像URLが含まれるレス」に置き換えて改造してみました
//【登録場所】全体、レス表示
//【ラベル】画像レスまとめ
//【内容】レス表示欄で開いているスレの、画像が含まれるレスをまとめたスレッドを作る
// スレを横断して画像表示ウィンドウやサムネイルモードで一括表示させたい時にどうぞ
//【コマンド】${SCRIPT:Fw} ImageResThread.js ローカル板のフォルダ名
function createImageResThread() {
var args=v2c.context.args;
if (args.length==0) {
return "板のフォルダが指定されていません。";
}
var bd=v2c.getLocalBoard(args[0]);
if (!bd) {
return "ローカル板を取得できませんでした。";
}
var tha=v2c.resPane.threads;
if (tha.length==0) {
return "レス表示タブが存在しません。";
}
v2c.setStatus("画像レス抽出中...");
var ra=[];
for (var it=0; it<tha.length; it++) {
var th=tha[it];
if (th.local) {
continue;
}
var resCnt =th.localResCount, imgRes=[];
for (var i=0; i<resCnt; i++) {
var res=th.getRes(i);
if (res) {
for (var j=0; j<res.links.length; j++) {
if (res.links[j].type_IMAGE) {
imgRes.push(res);
break;
}
}
}
}
if (imgRes.length>0) {
ra.push(v2c.createResSeparator("画像レス "+imgRes.length+": "+th.title));
ra = ra.concat(imgRes);
}
}
if (ra.length==0) {
return "画像レスが存在しません。";
}
var th=bd.createLocalThread("画像レス抽出",ra);
if (!th) {
return "ローカルスレッドを作成できませんでした。";
}
th.open(false);
return null;
}
var se=createImageResThread();
if (se) {
v2c.alert(se);
}
648 名前:VIICさん:10/12/17 03:26:06 ID:kpohaLc2
>>646こっちはできたが
>>647は>ローカルスレッドを作成できませんでした。になります
考えられる原因を教えてください。
649 名前:VIICさん:10/12/17 21:43:26 ID:rNU4FHFe
>>648
>>647の実行時にTwitterのスレッドを開いていたのではないだろうか
もしそれが原因だった場合は、

if (th.local||!th.unread) {


の部分を

if (th.local||th.bbs.twitter||!th.unread) {


と修正すれば行けると思う
650 名前:VIICさん:10/12/17 21:47:24 ID:rNU4FHFe
>>648
ごめん間違えた>>649>>646に対する修正です

>>647の修正は、


if (th.local) {

の部分を


if (th.local||th.bbs.twitter) {

としてください

651 名前:VIICさん:10/12/17 22:19:20 ID:rNU4FHFe
特定の単語が含まれるレスを抽出してローカル板に送るスクリプト
対象はアクティブなスレッドのみ

//【登録場所】全体、レス表示、選択テキスト

//【ラベル】選択単語でレス抽出、指定単語でレス抽出
//【内容】選択単語or指定単語が含まれるレスを抽出し、ローカルスレッドを作成する
// レス表示から実行する場合検索ボックスを表示します、正規表現は不可
// 抽出の検索対象は本文のみ
//【コマンド】${SCRIPT:Fw} resExtract.js ローカル板のフォルダ
//【スクリプト】
function createExtractResThread() {
var args=v2c.context.args;
if (args.length==0) {
return "板のフォルダが指定されていません。";
}
var bd=v2c.getLocalBoard(args[0]);
if (!bd) {
return "ローカル板を取得できませんでした。";
}
var th=v2c.context.thread;
if (th.bbs.twitter) {
return "Twitterには対応していません。"
}
var kw = v2c.getSelectedText();
if (!kw) {
kw = v2c.prompt("抽出単語を入力してください","");
if (!kw) {
return "抽出単語がありません。";
}
}
var ra=[];
for (var i=0; i<th.resCount; i++) {
var res=v2c.context.thread.getRes(i);
if (res&&!res.ng) {
if (res.message.indexOf(kw)!=-1) {
ra.push(res);
}
}
}
if (ra.length==0) {
return "検索ワードが含まれるレスはありません。";
}
ra.unshift(v2c.createResSeparator("[抽出レス数:"+ra.length+"] "+th.title));
var newth=bd.createLocalThread("[抽出:"+kw+"] "+th.title,ra);
if (!newth) {
return "ローカルスレッドを作成できませんでした。";
}
newth.open(false);
return null;
}
var se=createExtractResThread();
if (se) {
v2c.alert(se);
}
652 名前:648:10/12/18 03:06:54 ID:vA2de4r6
>>649,650
できました
ありがとうございました
653 名前:VIICさん:10/12/18 21:03:27 ID:Kl5LUG51
要望です
スレ一覧に表示されてるスレッドを纏めて取得できるようにならないでしょうか

th = threadPane.getThread(i);

みたいな感じで取得して
th.filteredResIndex
みたいなのが取得できたら
ログ検索結果を1つのローカルスレでまとめて見られるなぁと思いまして

というかそれがやりたいだけなんで、別にスクリプトじゃなくて

ログ検索結果のタブだけで有効になる
「検索結果全レスをローカルスレッドに送る」みたいなコマンドを付けてもらった方がうれしいかもしれません
654 名前:VIICさん:10/12/18 21:22:29 ID:UJvUKgC3
PopupStatusYoutubeで、『リンクの無効化』設定したときポップアップを抑止してほしいです。
655 名前:VIICさん:10/12/19 03:03:54 ID:/qkTT2Py
>>654
URLExec2.dat使ってるって事なんだろうけど
URLExec.datの方は無効化されたリンクには効かないみたいね
確かにURLExec2.datもそっちに合わせたほうがいいと思う
656 名前:VIICさん:10/12/19 04:31:15 ID:9A86tI2P
ttp://www.geocities.jp/nanasi_san_exe/
このサイトにある「Boo2008 REDスクリプト」(ttp://www.geocities.jp/nanasi_san_exe/Boo2008_RED.zip)をV2Cのコマンドに登録したいのですが
Jane系と同じように登録しても機能しませんでした。
V2Cでも使えるようにするにはどのように記述すればよいのでしょうか。

因みにJane系のコマンド登録例は

wscript "$BASEPATHboo2008_red.vbs" "$URL" "$NUMBER" "$LOCALDAT"
となっています
参考(JaneStyleで使用可能な特殊コマンド一覧)
ttp://janesoft.net/janestyle/help/option/function/command.html
657 名前:VIICさん:10/12/19 04:53:16 ID:/qkTT2Py
これ見て置き換えていけばいけると思う
ttp://v2c.s50.xrea.com/manual/extcommand.html
658 名前:VIICさん:10/12/19 05:08:19 ID:9A86tI2P
それは既に見て置き換えて試してみましたが、
実行するとエラーもなにも出ず砂時計が一瞬出るだけでなんの変化もないので
解らずここへ質問へ来ました
659 名前:VIICさん:10/12/19 06:41:24 ID:9A86tI2P
自己解決しました。
660 名前:VIICさん:10/12/19 11:09:44 ID:gw1QYxZc
つーかV2Cに標準装備されてる気がする
661 名前:VIICさん:10/12/20 07:46:00 ID:HAkEnkIB
何なんでしょう、これ?
>タイトル: スクリプトエラー: URLExec
>メッセージ: スクリプトの実行中にエラーが発生しました。
>
>sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot call method "replaceAll" of null (<Unknown source>#188) in <Unknown source> at line number 188
662 名前:VIICさん:10/12/20 11:39:16 ID:t9Bc5QXr
>>661
どのスクリプトで起きたのか?
環境は?
663 名前:VIICさん:10/12/20 11:56:22 ID:wGGbDRnn
>>409っぽいな
664 名前:VIICさん:10/12/20 12:16:47 ID:t9Bc5QXr
もし>>409でWin以外の環境ならスクリプト中の
”stream = v2c.readFile( v2c.saveDir + '\\script\\PopupStatusYoutube\\template.txt' );”
とかパスを指してる記述を自分の環境にあわせて書き換えればイケると思う。
(\\を\にするとか...)
665 名前:VIICさん:10/12/20 13:06:33 ID:HAkEnkIB
>(\\を\にするとか...)
\\t→\tとかにしたらタブ文字になるんじゃ?
666 名前:VIICさん:10/12/20 19:27:01 ID:YiFAxLuP
var fs = java.io.File.separator;
stream = v2c.readFile( v2c.saveDir + fs+'script'+fs+'PopupStatusYoutube'+fs+'template.txt' );

と言う感じでどうだろう

667 名前:VIICさん:10/12/23 09:38:07 ID:ZXAL40xj
ツイートのポップアップはありますが
ユーザーのポップアップがないようなので作ってみました
やたらごちゃごちゃした物になってしまいましたが…
自信ないので添削歓迎します

こういうURLで

ttp://twitter.com/masason
こんな感じになります
ttp://loda.jp/v2cthread/?id=32

一応ツイートのURLを渡したらツイートをポップアップするようにもしています

既存のと同じだと意味ないので情報を増やしてみました
ttp://loda.jp/v2cthread/?id=33

>>396のと同じようにpopupTweetフォルダにテンプレートとなるファイルを入れるようになってます

既に入れてる人はフォルダ上書きすることになりますが
同じファイルはないので大丈夫のはずです
また、既存のテンプレートファイルも使えるようになってるはずです
API使ってるので150アクセス/hの制限を受けます

//【登録場所】リンク、URLExec

//【ラベル】ツイートのポップアップ
//【内容】ツイート、ツイッターユーザーのポップアップ
// ツイートかユーザーかはURLから自動的に判別
//【コマンド1】${SCRIPT:Fr} popupTwitterInfo.js
//【コマンド2】${SCRIPT:Fr} popupTwitterInfo.js テンプレートのファイル名 (popupTweetフォルダ内の任意のテンプレートファイルを指定)
ttp://loda.jp/v2cthread/?id=34.zip
668 名前:VIICさん:10/12/23 13:55:12 ID:XR1Iud4h
>>667
使ってみたけどTwitterのタイムラインにあるメンションにも反応しちゃう
669 名前:VIICさん:10/12/23 14:47:47 ID:uNEg4ns2
>>668
URLExec2.datが反応しちゃうって事ですかね
仕様上無理な気がします
スクリプト上でV2C側へ処理をそのままスルーできたりすればいいのですが

今ある材料でなんとかしようとすると、

無理やり同じ処理をスクリプト上で実現するという手くらいしか思いつきません
元々の処理はタイムラインにある対象者のツイートを抽出してるんですかね
ちょっとやってみたけどtwitterのレスオブジェクトからアカウント名は取得できないっぽい?

なんかいいアイデアないですかね

670 名前:VIICさん:10/12/25 02:59:54 ID:O/8wxUx0
//【登録場所】全体、レス表示
//【ラベル】ソートしてまとめ
//【内容】スレを時間でソートしてまとめたスレッドを新タブで作る。
//※レス数とマシンスペック応じて表示に時間がかかります。
//※ローカルスレで実行するとそのスレをソート、それ以外はレス表示欄にあるローカルとツイッター以外のスレッドをすべてまとめてソート
//【コマンド】${SCRIPT:Fw} sortResThread.js ローカル板のフォルダ
//【スクリプト】
function createSortResThread() {
var args=v2c.context.args;
if (args.length==0) {
return "板のフォルダが指定されていません。";
}
var bd=v2c.getLocalBoard(args[0]);
if (!bd) {
return "ローカル板を取得できませんでした。";
}
var th=v2c.context.thread, all=false;
if (th.local) {
var tha=[th];
} else {
var tha=v2c.resPane.threads;
all=true;
}
if (tha.length==0) {
return "レス表示タブが存在しません。";
}
var ra=[];
for (var it=0; it<tha.length; it++) {
th=tha[it];
if (all&&(th.local||th.bbs.twitter)) {
continue;
}
var nrl=th.localResCount, rt=[], nr=0;
for (var i=0; i<nrl; i++) {
var res=th.getRes(i);
v2c.println(th.title+' '+i);
if(!res || !res.time) continue;
rt.push(res);
nr++;
}
if (nr>0) ra=ra.concat(rt);
}
v2c.println(ra[0].message);
ra.sort(function(a,b){return a.time-b.time;});
if (all) {
var title="全スレッドまとめ";
} else {
var title=tha[0].title+"[ソート]";
}
var th=bd.createLocalThread(title,ra);
if (!th) {
return "ローカルスレッドを作成できませんでした。";
}
th.open(false);
return null;
}
var se=createSortResThread();
if (se) {
v2c.alert(se);
}
671 名前:VIICさん:10/12/25 03:00:46 ID:O/8wxUx0
↑使用で一部の時間をまとめて削除したいです。
チェックボックスに「レスを削除」を要望します。
672 名前:VIICさん:10/12/25 03:06:04 ID:O/8wxUx0
すみません。
>670のv2c.println~がある36と43行目は削除してください。
通常では必要ないです。
673 名前:VIICさん:10/12/26 14:58:24 ID:gGF3N56p
>>667
ttp://twitter.com/masasonに対して実行しましたが自分の環境ではエラーが出てしまいます
下はエラーダイアログの内容です

sun.org.mozilla.javascript.internal.WrappedException: Wrapped java,security.AccessControlException: access denied (java.net.SocketPermission api.twitter.com:80 connect,resolve) (<Unknown source>#289) in <Unknown source> at line number 289

674 名前:VIICさん:10/12/26 15:02:11 ID:e8DZ25lD
:S?
675 名前:VIICさん:10/12/26 15:12:53 ID:gGF3N56p
>>674
コマンドを
${SCRIPT:FrS} popupTwitterInfo.js
にしたら使えました
㌧㌧です
676 名前:667:10/12/26 15:31:27 ID:XjKQs/TD
ごめんなさい
>>667
${SCRIPT:FrS} popupTwitterInfo.js
でないとだめですね
中に入ってるURLExec2.dat用のメモはそうなってるので
そっちはコピペでOKのはずです
677 名前:VIICさん:10/12/26 21:51:50 ID:e6lYun4P
リンク右クリックに「リンクをプレイヤーで開く」という外部コマンドを登録したいのですが
「"C:\Program Files\GesPlayer\GesPlayer.exe" "$LINK"」

GesPlayerはmmsにしか対応していないので

「http」で書かれたリンクを「mms」に変換してプレイヤーに送る、ということはできないでしょうか?
678 名前:VIICさん:10/12/26 23:28:02 ID:fiP3AGm0
var link = "mms"+v2c.context.link.substring(4);
v2c.exec("C:\\Program Files\\GesPlayer\\GesPlayer.exe "+link);
試してないけど
679 名前:VIICさん:10/12/26 23:29:09 ID:fiP3AGm0
v2c.exec("\"C:\\Program Files\\GesPlayer\\GesPlayer.exe\" "+link);
ミスった
680 名前:VIICさん:10/12/27 00:30:27 ID:pRGA1uAo
>>679
ありがとうございます
[外部コマンド]→[一般]→[リンク]のコマンドに

var link = "mms"+v2c.context.link.substring(4); v2c.exec("\"C:\\Program Files\\GesPlayer\\GesPlayer.exe\" "+link);


var link = "mms"+v2c.context.link.substring(4);v2c.exec("\"C:\\Program Files\\GesPlayer\\GesPlayer.exe\" "+link);

を追加したのですが、どちらのリンク右クリック「リンクをプレイヤーで開く」を実行しても

GesPlayerが起動しませんでした・・・GesPlayerの場所は合っていると思うのですが
681 名前:VIICさん:10/12/27 00:37:11 ID:u0Zqyl19
>>680
V2C/script/gesplayer.jsとかに保存して
${SCRIPT:Fx} gesplayer.js
682 名前:VIICさん:10/12/27 01:42:06 ID:pRGA1uAo
>>681
たびたび、ありがとうございます
V2C/scriptフォルダ内にgesplayer.js(JScript Script File)を作ってその中に

var link = "mms"+v2c.context.link.substring(4);

v2c.exec("\"C:\\Program Files\\GesPlayer\\GesPlayer.exe\" "+link);

と記入、そのあと[外部コマンド]→[一般]→[リンク]のコマンドに


${SCRIPT:Fx} gesplayer.js

を登録し、リンク右クリック「リンクをプレイヤーで開く」を実行したら下記のスクリプトエラーが・・・


sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot find function substring. (<Unkcown source>#1) in <Unknown source> at line number 1
683 名前:VIICさん:10/12/27 01:48:12 ID:u0Zqyl19
すまん、substringをsliceにしてくれ
var link = "mms"+v2c.context.link.slice(4);
v2c.exec("\"C:\\Program Files\\GesPlayer\\GesPlayer.exe\" "+link);
684 名前:VIICさん:10/12/27 01:52:16 ID:u0Zqyl19
ああまた間違えた
var link = "mms"+String(v2c.context.link).slice(4);
v2c.exec("\"C:\\Program Files\\GesPlayer\\GesPlayer.exe\" "+link);
頭飛んでるみたいだからもう寝るよ…
685 名前:VIICさん:10/12/27 02:24:14 ID:pRGA1uAo
>>684
できたーーー!!!
ありがとうございます、おやすみなさい
686 名前:VIICさん:10/12/29 00:46:09 ID:VhDmsUvO
>671についてありがとうございます。

「このレスを追加(元レスURL付)」のようにmessageの後に

スクリプトで文字を追加してローカルに送れるものを要望しておきます。

文字制限がないので、レスの後に被参照ツリーを追加して送れないかなと思いました。

ポップアップが出なかったり、インデントが全角スペースな
ツリー表示になるかとは思いますが。
687 名前:VIICさん:11/01/14 14:30:34 ID:hjOtgbO/
以前ここでいただいたGoogleイメージ検索ポップアップ(=gimage.js)がエラーを吐く様になりました。
他にで同様の症状の方いますか?
これはGoogleの仕様変更によるものでしょうか?
なんかブラウザをフルスクリーンにしてると検索結果がセンタリングされる様になってますが。
688 名前:VIICさん:11/01/14 14:56:50 ID:SMDEmDG7
( ゚Д゚)・∵. グフッ!!
689 名前:VIICさん:11/01/14 21:36:36 ID:JcG2RHhb
普通のGoogle検索のレイアウトが真ん中よりになってる
イメージ検索の方もなにかしらの仕様変更があったのは間違いなさそうすなあ
690 名前:VIICさん:11/01/15 05:52:26 ID:9ohhy3qH
>>687
gimage.jsの仕様変更に対応
ttp://loda.jp/v2cthread/?id=37
691 名前:VIICさん:11/01/15 20:27:13 ID:ogeKKh1m
>>690
ありがとうございます。機能しました。
692 名前:VIICさん:11/01/23 17:23:46 ID:+mHLRBZE
rescheck.js内でもうちょっと色々出来るようになりませんかね?

今んとこやってみたいことは

・新着に特定の名前やレスがあれば音を鳴らす(ラベルも貼れたら最高)
・dat落ち&ログ未取得ならgetlog起動(スクリプト側でどうやってdat落ち判定すべきか思いつかないけど)

基本的にユーザーが自分で呼び出すしかスクリプトは実行できないので

スレ読み込みのタイミングで起動できたら色々面白いことできるんじゃ、と思ったのが発端です
693 名前:VIICさん:11/01/28 03:32:21 ID:OdTCRySz
//【登録場所】 全体、レス表示、選択テキスト
//【ラベル】 新しいスタイルを作成
//【内容】 レス表示スタイルの「出発点」の形式で、指定したフォルダ名で登録
//【コマンド】 ${SCRIPT:Fwr} newStyle.js
//【スクリプト】
// ----- 次の行から -----
//設定
var defaultName = 'NEW_STYLE'; //フォルダ名ダイアログのデフォルト名。
var setResCheckBox = false; //レス番の左にチェックボックスを置く。
var setStyleName = false; //スタイル名の登録ダイアログ表示
var openFolder = false; //実行後、フォルダを開く
var openFile = false; //実行後、style.txtを開く
var filer_dir = '"C:\\Windows\\explorer.exe"'; //ファイル管理ソフトディレクトリ
var editor_dir = '"C:\\Windows\\notepad.exe"' //テキスト編集ソフトディレクトリ
//設定ここまで
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, "");
}
function getStyle() {
var fn = v2c.prompt('フォルダ名を入力\n※拡張子なし、半角英数字かアンダースコア', defaultName);
if ( !fn.match( /^[a-zA-Z0-9_]+$/ ) ) {
v2c.alert( '無効な名前です。' );
return;
}
var ss = v2c.context.selText;
if ( !ss||(ss.length==0) ) {
var sh = v2c.readURL( 'h'+'ttp://v2c.s50.xrea.com/manual/resstyle.html' );
if ( !sh ) {
v2c.alert( 'ページを取得できませんでした。' );
return;
}
if ( !sh.match( new RegExp( '<h3><u>出発点</u></h3>[^]+?<pre>([^]*?)</pre>', 'i' ) ) ) {
v2c.alert( '抽出できませんでした。' );
return;
}
ss = RegExp.$1.trim();
}
ss = ss + '';
var fs = java.io.File.separator;
var fd = v2c.saveDir + fs + 'style' + fs + fn + fs;
var txt = fd+'style.txt';
var cecd = 'utf-8';
if ( v2c.readFile(txt) ) {
if ( !v2c.confirm('既に同じスタイルが存在します。上書きしますか?') ) return;
}
if ( setStyleName ) {
var sn = v2c.prompt('スタイル名を入力\n', fn);
ss = '<PROPERTY>\nName=' + sn + '\n</PROPERTY>\n\n' + ss;
}
ss = ss.replace(/</gi,'<').replace(/>/gi,'>');
if ( setResCheckBox ) {
ss = ss.replace(/(<NUMBER>)/gi,'<RESCHECKBOX>$1');
}
var as = ss.split('\n');
v2c.writeLinesToFile(txt,as,cecd);
if ( openFolder ) v2c.exec( filer_dir + ' "' + fd + '"' );
if ( openFile ) v2c.exec( editor_dir + ' "' + txt + '"' );
}
getStyle();
// ----- 前の行まで -----
694 名前:646:11/01/29 13:20:28 ID:o4XxkYPN
50行目修正
ss = ss.replace(/</gi,'<').replace(/>/gi,'>');

ss = ss.replace(/&lt;/gi,'<').replace(/&gt;/gi,'>');
に変更してください。

あと、スクリプト実行後、レス表示スタイルの再読み込みをする機能を要望します。

695 名前:VIICさん:11/01/31 09:53:18 ID:20Yw8yu1
rescheck.jsが"レス1を常に非表示にする"以外動作しない・・・
"V2C\script\system\rescheck.js"に作成してコメントアウトするだけですよね?

一応試した手順としては

//削除→上書き保存→rescheck.jsの再読み込み→スレッドの再取得です
【V2C】 2.4.3 [R20110129] (L-0.6.2:x86)
【Java】 1.6.0_23-b05 (Sun Microsystems Inc.)
【OS】 Windows Vista Service Pack 2 (x86)
【メモリ】 Total(Free)/Max.: 137(80)/494 (Phys. Total/Avail.: 3069/1203) [MB]
696 名前:n|a:11/02/01 00:32:21 ID:Ofa3nqJ7
>>695
rescheck.js再読み込みとスレッド再取得の時にステータスバーにエラーが出ていないか
チェックしてください。
697 名前:VIICさん:11/02/01 01:37:20 ID:1uYheTeg
>>696
レスありがとうございます

基本的には

"rescheck.jsを起動しました。"
しか表示されず正常に読み込まれてると思いますが
何かの拍子に
"rescheck.jsは現在使用されているため終了できません。"
と出る場合もあります。

その場合V2C再起動してもう一度やると

"rescheck.jsを起動しました。"
と出ます。

なので読み込み自体は問題なさそうです?

698 名前:VIICさん:11/02/01 02:04:05 ID:OZ2lioNf
>>697
wikiのファイルの場合、思いつくのは、
//cx.setCheckRawText( false );
//cx.setCheckAA( false );
//cx.setCheckNG( false );
これらの行頭の//を削除して有効にしている場合、
関連するタイプはすべて実行されません。
699 名前:VIICさん:11/02/01 02:26:21 ID:1uYheTeg
>>698
あーーー!チェック外れてました・・・
何やってんだ・・・
ほんとすいませんorz

ですが以前使えないのは

ck.sankake = true; //さんかっけーを△にする。

です。

こちら使えてる方いますでしょうか?
700 名前:VIICさん:11/02/01 04:33:16 ID:8HLMcPOR
>>699
タイプミスしてるっぽい

ck.sankake = true; //さんかっけーを△にする。


ck.sankakke = true; //さんかっけーを△にする。

で使えると思う

701 名前:VIICさん:11/02/01 04:42:04 ID:1uYheTeg
無事使えるようになりました
ありがとうございます!

wikiの方確認してみたところ元ファイル自体が

ck.sankake = true;
になっているので修正お願いします

修正の仕方がわからないorz

702 名前:VIICさん:11/02/01 20:00:32 ID:OZ2lioNf
>>701
差し替えました。

思いつきですが、wikiのrescheck.jsに一個加えました。実況の「短縮モード」用

【登録場所】 "V2C\script\system\rescheck.js"
【内容】実況系板で名前が吹出しの場合、レスの最初に加える。
703 名前:VIICさん:11/02/02 05:08:34 ID:0vsPLX59
遠回りだし、実装されれば削除ということで、rescheck.jsに追加。
ttp://loda.jp/v2cthread/?id=38
新着レスにキーワードがあれば音を鳴らす方法

rescheck.jsでキーワード(デフォはV2CかJava)があれば名前の最後に【KW】を追加するようにする。

→設定→名前KWで「【KW】$」を追加、「RE」をチェック、新着音設定
→新着レスにキーワードがあれば音が鳴る。

あと、キーワード変えるには36行目の「(V2C|Java)」を正規表現で変更するとかしてください。

704 名前:VIICさん:11/02/02 05:24:13 ID:0vsPLX59
ああでも>703は、キーワードのレスを名前でポップアップできるしお得な点はあるかも。
705 名前:VIICさん:11/02/02 06:14:30 ID:q+m8GQ77
>>703
なるほど!
アイデア次第でなんとかなるもんですなぁ
これだとメール欄に対しても使えるし
706 名前:n|a:11/02/03 00:47:56 ID:8/yornE0
>>703-5
この方法は思いつきませんでした…。
次回更新では本文キーワードに新着音を設定できるようにします。
707 名前:VIICさん:11/02/03 10:57:22 ID:WOptsmmY
ユーザーの自由度が高いっていいよね
708 名前:VIICさん:11/02/05 00:08:37 ID:w2RUthH4
Excite翻訳ポップアップのスクリプト使えない・・・俺だけ?
//【コマンド2】 $SCRIPT excite_translation.js jaen でいいんだよね?
709 名前:VIICさん:11/02/05 01:10:10 ID:g7OnS/FN
>>708
どうもスクリプトに限らず今までのURLでは訳文に変換されないようです。
外部コマンドに登録されているデフォの例でも同じでした。

ttp://www.excite.co.jp/world/english/?wb_lp=ENJA&before=test

これだと訳文が表示されない。
710 名前:VIICさん:11/02/05 10:02:56 ID:JbpFa6xG
質問です
ttp://hibari.2ch.net/test/read.cgi/software/1296484053/123,168

にて、AAのみの抽出はスクリプトで出来るとのことですが

具体的にどうすればいいのでしょうか?
>>1を見るとcheckAA内のres.setAAで設定する事ができるのは分かったのですが
肝心の取得の方が分かりませんでした。
711 名前:VIICさん:11/02/05 19:34:40 ID:g7OnS/FN
//【登録場所】 全体、レス表示
//【ラベル】 AA抽出
//【内容】 AAを判定(半角スペースと全角スペースの連続)して抽出
//【コマンド1】 $SCRIPT filterAA.js
//【コマンド2】 $SCRIPT filterAnon.js n //AA以外を抽出
//【スクリプト】
var vcx = v2c.context, th = vcx.thread;
function filterAA() {
var lrc = th.localResCount, msg = '', lis = [], res;
var n = vcx.args[0] == 'n';
for( var i = 0; i < lrc; i++ ) {
res = th.getRes( i )
if( !res ) continue;
msg = res.message + '';
if( ( msg.search(/(  |  )/) == -1 ) == n ) {
lis.push( res.index );
}
}
vcx.setFilteredResIndex( lis );
}
if( th ) filterAA();
712 名前:VIICさん:11/02/05 19:35:20 ID:g7OnS/FN
//【登録場所】 全体、レス表示
//【ラベル】 名無し抽出
//【内容】 登録した名無しも含めて抽出
//【コマンド1】 $SCRIPT filterAnon.js
//【コマンド2】 $SCRIPT filterAnon.js n //名無し以外を抽出
//【スクリプト】
var vcx = v2c.context, th = vcx.thread;
function filterAA() {
var lrc = th.localResCount, name = '', lis = [], res;
var n = vcx.args[0] == 'n';
var anon = th.board.allAnonymousName;
var al = anon.length;
for( var i = 0; i < lrc; i++ ) {
res = th.getRes( i )
if( !res ) continue;
name = res.name + '';
for( var j = 0; j < al; j++) {
if( name == anon[ j ] ) {
if( !n ) lis.push( res.index );
break;
}
}
if( ( j == al ) && n ) lis.push( res.index );
}
vcx.setFilteredResIndex( lis );
}
if( th ) filterAA();
713 名前:VIICさん:11/02/05 19:40:23 ID:g7OnS/FN
>>710
>711のAA判定(15行目の/~/内)は任意でお願いします。
714 名前:VIICさん:11/02/05 19:44:46 ID:JbpFa6xG
どうもです
V2C内で保持してるAA判定を取得できるのかと思ってたのですが無理なんですね
715 名前:VIICさん:11/02/05 20:00:08 ID:g7OnS/FN
>>714
V2Cでの判定方法も似たようなものだった記憶が。
あとは、手動でAA判定したのは、ログのtxtにある
ThreadView.AAResに登録されているので追加することは可能です。

>712

ttp://hibari.2ch.net/test/read.cgi/software/1296484053/175
からですが、規制でレスは無理でした。
716 名前:VIICさん:11/02/05 20:38:22 ID:BO/otf20
>>715
向こうでも言ったけどありがとう
717 名前:VIICさん:11/02/11 09:55:46 ID:yO8RbhCT
>>708
excite_translation.jsを更新しました。
※ コマンドを変更する必要があります。
 「$SCRIPT」を、「${SCRIPT:S}」に変更しないとエラーになります。
ttp://loda.jp/v2cthread/?id=41

・Excite翻訳の仕様変更に対応した。

 (v2c.readURL(u)を、v2c.createHttpRequest(u,d)に変更)
・デフォルトで、カーソルのポップアップ外でポップアップを閉じるようにした。
・他、中身を少し整理
718 名前:VIICさん:11/02/11 16:23:24 ID:jhfmDBs2
>>717
お手数おかけしてすいまんせん。出来ました、ありがとうございます!
719 名前:VIICさん:11/02/15 21:32:42 ID:IzKSk+7c
//【登録場所】 レス表示
//【ラベル】 このレスをデフォ名無しでコピー
//【内容】 名前をデフォルト名無しにして「このレスをコピー」
//【コマンド】 $SCRIPT copyWithDefAnon.js
//【スクリプト】
var vcx = v2c.context;
var res = vcx.res;
var a = [
res.number,
' :' + vcx.thread.board.anonymousName,
' :' + res.date,
' ID:' + res.id,
'\n' + res.message
];
vcx.setClipboardText(a.join(''));//コピー
//vcx.insertToPostMessage(a.join(''));//書き込み欄に送る
720 名前:VIICさん:11/02/15 22:18:50 ID:rfuNFEM/
起動したとき、自動で板一覧の更新ができるようなスクリプトなんぞできませんでしょうか。
721 名前:VIICさん:11/02/16 02:31:43 ID:XwWZFqwG
>>720
基本的にはV2Cを操作するような事はスクリプトでは無理だと思う
スレッドや外部サイトの情報を取得するとか
ローカルのファイルを弄るとかそういうのは置いといて
V2C本体に対して行える操作は

ポップアップ

絞り込み抽出
書き込み欄弄る
datインポート
ローカルスレ立てる
スレを開く
未読状態のリセット
ステータスバーに文字列表示
rescheck.js等での設定変更

くらい?


〇〇したら自動でスクリプト走らせるってのも
URLExec.datとかrescheck.js等の特殊なものしかできない?
722 名前:VIICさん:11/02/16 02:53:41 ID:V8XVVT7k
JaneViewみたいにスレッド読み込みとかタブ切り替え等のイベントをトリガーとしてスクリプト実行できたら夢がひろがりんぐ
723 名前:VIICさん:11/02/16 03:02:34 ID:XwWZFqwG
>>722
スレ読み込み時は一応endCheckとかあるから
これでなんか面白いことできないかな?
724 名前:VIICさん:11/02/16 18:53:07 ID:dk6NbuAr
>>721
なるほど理解しました。
無知ゆえの突拍子もない要望にレスしていただきありがとうございました。
725 名前:VIICさん:11/02/16 18:59:38 ID:mFe8U75B
v2c.browseURLExtって${SCRIPT:F}にしないと駄目だったっけ?
726 名前:n|a:11/02/16 23:36:22 ID:CyfGMAUX
>>722,723
スレッド更新の方は検討中です。
>>725
ファイル読み込みのパーミッションが必要な問題は次回更新で修正します。
よく考えると、v2c.browseURL()にはネットワーク接続のパーミッションを
必須にした方がいいような気がしてきました。
次回更新ではv2c.browseURL()にネットワーク接続のパーミッションが必要になるかもしれません。
727 名前:VIICさん:11/02/16 23:54:42 ID:mFe8U75B
>>726
レスありがとうございます。
了解しました。
728 名前:VIICさん:11/02/18 14:43:09 ID:IZeSnCD6
ttp://hibari.2ch.net/test/read.cgi/software/1296484053/667をUPした者です。
>>593を参考に引数をとるように変更しました。

'【登録場所】 全体

'【ラベル】  再起動
'【内容】 V2Cを終了し完了を待って再起動する
'【コマンド】 wscript "$SAVEDIR\script\V2Creboot.vbs" "$APPDIR\V2C.exe"
Option Explicit

Private Const PROC_QUERY = "select * from Win32_Process where Name='V2C.EXE'"

Private Const TARGETPC = "winmgmts:"
Private Const INTERVAL = 1000

Dim WshShell

Dim args
Dim objWMI, objProc
Dim V2CexePath

Set WshShell = WScript.CreateObject("WScript.Shell")


' 終了
WshShell.SendKeys "%{F4}"

' 終了待ち

Set objWMI = GetObject(TARGETPC)
Do
Set objProc = objWMI.ExecQuery(PROC_QUERY)
WScript.Sleep INTERVAL
Loop While objProc.Count > 0

' 起動

Set args = Wscript.Arguments
V2CexePath = CHR(34)+args(0)+CHR(34)
Call WshShell.Run(V2CexePath, 1, False)

Set WshShell = Nothing

Set objWMI = Nothing
Set args = Nothing
Set objProc = Nothing
729 名前:725:11/02/18 15:15:36 ID:IZeSnCD6
>>726
【V2C】 T20110217 [2.5.0_02] (L-0.6.0:x86)
【Java】 1.6.0_24-b07 (Sun Microsystems Inc.)
お疲れさまです。
${SCRIPT:S}で動作しましたm(_ _)m
730 名前:VIICさん:11/02/18 16:40:18 ID:sf+GQGiM
>>728
これは>>593 と比べて何か変わったのでしょうか?
こっちの方が綺麗に書いてるってことですか?
731 名前:VIICさん:11/02/18 16:43:49 ID:QgMkeOc1
>>651を改造してID抽出を作ったのですが、ローカル板のスレッドにレスの追加(もしくはスレッド削除)を行う命令はないのでしょうか?
何をやりたいかと言うと、ID抽出を行ったさいに既に同一IDでの抽出結果がローカル板にスレッドとして存在した場合は、そのスレッドに同一IDの新規レスを追加したいのです(ローカル板のスレッド削除後に新規スレッドとして追加でも可です
おそらく現状でもfileIOを使って直接datファイル操作すればできると思うのですが、それはちょっと避けたいなぁと思ってます
732 名前:VIICさん:11/02/18 16:52:19 ID:XUhANOUu
>>730

>>593

V2C終了して5秒待ってから再起動

>>728

V2Cがプロセスから消えたら再起動(たぶん)

下の方が無駄時間削れると思うけど

こっちはx86版でしか使えないような気がするがどうなんだろ
V2C.exeの部分をV2C_x64.exeに書き換えたらいけるのかな?
select * from Win32_Process
ここら辺も修正必要そうだけど
733 名前:VIICさん:11/02/18 19:53:51 ID:sf+GQGiM
>>732
詳しくありがとー
ところで前に聞いたような気がするけどたしか
"APPDIR"より"SAVEDIR"使ったほうがいいみたいな話じゃなかったっけ?
734 名前:VIICさん:11/02/18 20:56:59 ID:XUhANOUu
>>733
V2C.exeが置いてあるのはAPPDIR
735 名前:VIICさん:11/02/18 20:58:27 ID:XUhANOUu
途中で送信してしまった

>>733

V2C.exeが置いてあるのはAPPDIRじゃないっけ?
俺もなんかその流れ覚えあるけど
あれはkakikomi.txtを外部コマンドから開くときのパス指定で
APPDIR使ってたからじゃなかった?
736 名前:VIICさん:11/02/18 21:00:26 ID:sf+GQGiM
あったあった
ttp://pc12.2ch.net/test/read.cgi/software/1277558611/151
> kakikomi.txtは$APPDIR(V2Cのランチャーのフォルダ)ではなく
>$SAVEDIR(V2C保存用フォルダ)に存在するので$SAVEDIRを使ってください。
>(多くの場合これらは一致していますが…。)

らしいから$SAVEDIRで良いってことだよね?

リロードしてよかったぜw
737 名前:VIICさん:11/02/18 21:28:26 ID:XUhANOUu
>>736
関係あるのはV2C.exeがある場所なので
そのレスは関係ないと思うのだが
738 名前:n|a:11/02/18 23:23:24 ID:9H2uSHT5
>>737
わかりにくくてすみません、「V2Cのランチャー」というのは V2C.exe のことです…。
739 名前:VIICさん:11/02/18 23:38:53 ID:XUhANOUu
>>738
ああああすいません
言い方悪かったです

>>737

「kakikomi.txtは保存用フォルダにある」 ってのは今関係ないですよね

という事が言いたかっただけであります

740 名前:VIICさん:11/02/19 15:47:57 ID:IKN8oYlq
どなたか教えて頂けると助かります
良く間違いを訂正する場合
× ほにゃらら
○ ほげほげ

みたいにするんですが

テキスト選択でスクリプト実行すると
× 選択した文字

の状態で書き込み欄に入力されるスクリプトを作りたいのです

>>240 を参考に

v2c.context.insertToPostMessage('× '+v2c.context.selText.replaceAll('\n(?!$)','\n○ '));
みたいなのを作りましたが駄目でした…

説明下手で分かりづらいと思うので纏めると


× 選択した文字

(両記号の後半角スペースあり、○の行までの2行のみ。改行はしなくていいです)

× 選択した文字
○ 選択した文字
この2種類を教えて頂けると助かります
741 名前:VIICさん:11/02/19 16:02:05 ID:pUKz8T/D
試してないけど

× 選択した文字



v2c.context.insertToPostMessage('× '+v2c.context.selText+'\n○ ');

× 選択した文字

○ 選択した文字

v2c.context.insertToPostMessage('× '+v2c.context.selText+'\n○ '+v2c.context.selText);

\nが改行で + が文字の連結

これだけでいけると思う
742 名前:VIICさん:11/02/19 16:55:56 ID:IKN8oYlq
>>741
完璧です!
replaceAllを消さなきゃ駄目だったのか…
勉強になりました
ありがとうございました!
743 名前:VIICさん:11/02/20 22:27:17 ID:Q7qws9/5
質問です。

ttp://hibari.2ch.net/test/read.cgi/software/1296484053/879

>同階層にフォルダつくってそこに移動する みたいなこともできるんですかね?
>Javaとか全く知らないんですが、
>とりあえずJPopupMenuの仕様を覗いてみたけどさっぱり理解できず

これ書いた本人です。

適当に調べてやったら一応表面上は求める動作になったんですが、
これで問題ないですかね?
>ポップアップメニューコンポーネントを直接操作するので使用には十分注意してください。
との事なのでちょっと心配で。

やりたい事は、

ポップアップメニューに"2軍メニュー"という項目を作成し、
使用頻度の少ないメニューをそこへ追いやる
です。

function popupMenuCreated(pm,sn) {

if (sn=='ThreadPanel') {
var moveMenuList = ['マーカーを引いたレスを抽出','参照&被参照レスを抽出','リンクを含むレスを抽出','全てを選択'];
var secondMenu = new javax.swing.JMenu('2軍メニュー');
pm.add(secondMenu );
for (var i=pm.getComponentCount()-1; i>=0; i--) {
var mi=pm.getComponent(i);
if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
continue;
}
var miText = mi.getText();
for ( var j=0; j<moveMenuList.length; j++) {
if (miText.startsWith(moveMenuList[j])) {
secondMenu.add(mi);
break;
}
}
}
}
}
744 名前:VIICさん:11/02/20 22:30:57 ID:Q7qws9/5
ああー、すでに本スレにn|a殿が書いてくれてましたね…
745 名前:VIICさん:11/02/20 23:20:05 ID:QN5h1Gcr
// レス表示ポップアップメニュー削除
function popupMenuCreated(pm,sn) {
if (sn=='ThreadPanel') {
for (var i=pm.getComponentCount()-1; i>=0; i--) {
var mi=pm.getComponent(i);
if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
continue;
}
if (mi.getText().startsWith('フォルダに直接登録') || mi.getText().startsWith('全てを選択') || mi.getText().startsWith('オートリロード') || mi.getText().startsWith('オートスクロール')
|| mi.getText().startsWith('リンクを含むレスを抽出') || mi.getText().startsWith('全てを選択')) {
pm.remove(i);
}
}
}

// レス表示ポップアップメニュー抽出系の項目を下位メニューにまとめる

var ie=-1;
for (var i=pm.getComponentCount()-1; i>=0; i--) {
var mi=pm.getComponent(i);
if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
continue;
}
var sl=mi.getText();
if (ie<0) {
if (sl.startsWith('抽出ダイアログ')) {
ie = i;
}
} else {
if (sl.startsWith('参照&被参照レスを抽出')) {
var m=new javax.swing.JMenu('抽出');
for (var j=ie; j>=i; j--) {
m.insert(pm.getComponent(j),0);
}
pm.insert(m,i);
break;
}
}
}
}

// 選択テキストポップアップメニュー 削除

function popupMenuCreated(pm,sn) {
if (sn=='SelText') {
for (var i=pm.getComponentCount()-1; i>=0; i--) {
var mi=pm.getComponent(i);
if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
continue;
}
if (mi.getText().startsWith('Web検索') || mi.getText().startsWith('Twitter検索') || mi.getText().startsWith('コピー')
|| mi.getText().startsWith('スレタイ・URLとコピー') || mi.getText().startsWith('抽出ポップアップ') || mi.getText().startsWith('選択部分にレス')) {
pm.remove(i);
}
}
}
}
746 名前:VIICさん:11/02/20 23:20:37 ID:QN5h1Gcr
重複しているのかこれだと選択テキストポップアップメニューしか反映されないです
分かるかた教えてください
functionは一つのみなんですか?

あと任意の場所のセパレータを消すにはどうすればいいんでしょうか?

このケースで言うと選択テキストの'リンクとして開く'と'レスの抽出'の間のセパレータを一本消したいです
良ければ回答お願いします
747 名前:VIICさん:11/02/21 00:02:55 ID:rS5RYxN/
>>746
function popupMenuCreated(pm,sn) はひとつだけである必要があるはずです
細かく見てない上に自分も今色々と勉強しながらやってる最中で
適切な回答ではないかもしれまんせんが…

複数のポップアップメニューを弄る場合は


function popupMenuCreated(pm,sn) {
if (sn=='ThreadPanel') {
// レス表示ポップアップメニューの編集コード
} else if (sn=='SelText') {
// 選択テキストポップアップメニューの編集コード
}
}

のようにifで切り分ければいいと思います。

この場合、>>745の後半のfunctionの中身を
「選択テキストの編集コード」のとこにいれてやればいいかと

セパレータは決め打ちするしかないんじゃないですかね…

「n個目のセパレータ」とか「**の次にあるセパレータ」とか
おっしゃる例だと、ループの中で一番最初に見つかったセパレータを消せばいいのでは

if (sn=='SelText') {

var isDeleted = false;
for (var i=pm.getComponentCount()-1; i>=0; i--) {
var mi=pm.getComponent(i);
if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
if (!isDeleted) {
pm.remove(i);
isDeleted = true;
}
continue;
}
if (mi.getText().startsWith('Web検索') || mi.getText().startsWith('Twitter検索') || mi.getText().startsWith('コピー')
|| mi.getText().startsWith('スレタイ・URLとコピー') || mi.getText().startsWith('抽出ポップアップ') || mi.getText().startsWith('選択部分にレス')) {
pm.remove(i);
}
}
}

みたいな感じで

748 名前:n|a:11/02/21 00:08:46 ID:rYL2oj1H
>>745-747
関数
function removeRedundantSeparator(pm) {
var bs0=true;
for (var i=pm.getComponentCount()-1; i>=0; i--) {
var bs=!(pm.getComponent(i) instanceof javax.swing.JMenuItem);
if (bs&&bs0) {
pm.remove(i);
}
bs0 = bs;
}
if ((pm.getComponentCount()>0)&&!(pm.getComponent(0) instanceof javax.swing.JMenuItem)) {
pm.remove(0);
}
}
を定義して、最後に
removeRedundantSeparator(pm);
を実行すると余分なセパレータを削除することができます。
749 名前:VIICさん:11/02/21 00:29:35 ID:ydcijmNN
>>747,748
お馬鹿な私でも何とかできました
丁寧に教えてくださってありがとうございました!
もっと勉強します…
750 名前:VIICさん:11/02/21 00:33:04 ID:rS5RYxN/
>>748
なるほど勉強になります
751 名前:VIICさん:11/02/22 00:32:48 ID:xt3/HjDt
>>726
>スレッド更新の方は検討中です。
wktk

これ実装されたとしてどんなことできるようになりますかね

なんかあんまりいいアイデアが思いつかない

読み込み時dat落ちしてたらgetlogするってのは確かに便利そうだ

752 名前:VIICさん:11/02/24 02:52:00 ID:IXVH+3/i
ポップアップメニュー削除スクリプトの質問はここでいいでしょうか?
他の項目はこの書式(sn==と削除項目を変更するだけ)で削除出来るんですが
何故か選択範囲のリンクポップアップメニューだけ削除出来ないので答えて頂けると助かります

// 選択範囲のリンクポップアップメニュー 削除

else if (sn=='SelTextLink') {
for (var i=pm.getComponentCount()-1; i>=0; i--) {
var mi=pm.getComponent(i);
if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
continue;
}
if (mi.getText().startsWith('画像をダウンロード')
|| mi.getText().startsWith('コピー')
|| mi.getText().startsWith('無効化')
|| mi.getText().startsWith('NGファイルに追加')
|| mi.getText().startsWith('履歴を削除')
|| mi.getText().startsWith('キャッシュを保護 ')
|| mi.getText().startsWith('キャッシュ保護を解除 ')
|| mi.getText().startsWith('画像を直接保存')
|| mi.getText().startsWith('フォルダに直接保存 ')
|| mi.getText().startsWith('サムネイル画像を消去 ')
|| mi.getText().startsWith('サムネイル画像のキャッシュを削除')) {
pm.remove(i);
removeRedundantSeparator(pm);
}
}
}
753 名前:VIICさん:11/02/24 04:54:11 ID:PCyDcmp0
>>752
SelTextLinkがどのポップアップメニューのことかよく分からないんだけど、752で上がってる項目から選択範囲のテキスト(SelText)で表示されるポップアップの一番下にある"選択範囲のリンク"サブメニュー用のスクリプトならこれで良いかと
752が望むポップアップ用でなければ無視してください

function popupMenuCreated(pm,sn) {

if (sn=='SelText') {
for (var i=pm.getComponentCount()-1; i>=0; i--) {
var mi=pm.getComponent(i);
if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
continue;
}
if (mi.getText()=='選択範囲のリンク') {
for (var j=mi.getItemCount()-1; j>=0; j--) {
var mj=mi.getItem(j);
if ((mj instanceof javax.swing.JMenuItem)) {
if (mj.getText().startsWith('画像をダウンロード')
|| mj.getText().startsWith('コピー')
|| mj.getText().startsWith('無効化')
|| mj.getText().startsWith('NGファイルに追加')
|| mj.getText().startsWith('履歴を削除')
|| mj.getText().startsWith('キャッシュを保護')
|| mj.getText().startsWith('キャッシュ保護を解除')
|| mj.getText().startsWith('画像を直接保存')
|| mj.getText().startsWith('フォルダに直接保存')
|| mj.getText().startsWith('サムネイル画像を消去')
|| mj.getText().startsWith('サムネイル画像のキャッシュを削除')) {
mi.remove(j);
}
}
}
var bs0=true;
for (var j=mi.getItemCount()-1; j>=0; j--) {
var bs=!(mi.getItem(j) instanceof javax.swing.JMenuItem);
if (bs&&bs0) {
mi.remove(j);
}
bs0 = bs;
}
if ((mi.getItemCount()>0)&&!(mi.getItem(0) instanceof javax.swing.JMenuItem)) {
mi.remove(0);
}
}
}
}
}
754 名前:VIICさん:11/02/24 15:25:01 ID:PCyDcmp0
アクセス可能なポップアップメニューの表示・非表示を切り替えるmenu.js
詳しくない説明は、menu.jsの上のほうにコメントとして書いてます
ファイルサイズが大きくなったのでzipです

ttp://www1.axfc.net/uploader/Sc/so/208465

755 名前:VIICさん:11/02/24 15:40:08 ID:IXVH+3/i
>>753
出来ました
ほんとにありがとうございます!

>>754

凄そうですねGJです
756 名前:VIICさん:11/02/24 16:32:06 ID:F6Jx4WiA
>>731
俺もこれ気になる。
スクリプトでレスの追加とか書き換えとかできたらスクラップ作業が簡単になるし
757 名前:VIICさん:11/02/24 19:11:52 ID:ywdholnh
試してないから予想で書くけど
SelTextLink ってshift+右クリで直接開く「選択範囲のリンク」メニューじゃないかな
758 名前:VIICさん:11/02/24 19:21:46 ID:IXVH+3/i
>>757
なるほど勘違いしてたみたいです
すっきりしました!thx

あと展開についての例がもっとほしいです

子メニューの中の1つだけ展開したり2つだけ展開したり全部展開したりをしたくて

レス番号ポップアップメニューの「設定」の最初のセパレータまでの項目を展開する例

を参考にしてますがお手上げですorz
759 名前:VIICさん:11/02/24 20:42:55 ID:ywdholnh
>>758
自分もV2Cからこういうの弄りだしたクチで
javaとかよく知らないんだけど

例えば>>753の場合で、各項目を消すんじゃなくてルートに移動させたい場合

pmがルートのメニュー(選択テキストのメニュー)なので
mi.remove(i);

pm.insert(mj,i);
に書き換えてやればこれだけで移動になる模様
お尻に付け加えるだけでいいなら
pm.add(mj);
でもいい

基本的に、移動したい項目(この例だとmj)を

移動先のメニューオブジェクトにinsertしてやればいいだけみたい
決め打ちで移動させるんならサンプルの方法は忘れて
全部このやり方で行けるんじゃないかな

全部決め打ちってのは泥臭いやり方な気がするけど

メニューが再構成されるのはmenu.js再読込後の一度だけっぽいので
処理速度的な観点では気にしなくてよさそう
760 名前:VIICさん:11/02/24 21:45:09 ID:IXVH+3/i
>>759
出来ました!
ありがとうございました!

java難しい…

761 名前:VIICさん:11/02/25 01:05:45 ID:PIlRW7W2
色々参考にしましたが手詰まったので質問させてもらいます
レス番号ポップアップメニューレスのチェックの
このレスをチェックとここからチェックのみ上に移動して他の子メニュー削除するにはどうすればいいんでしょうか?

このスレ参考にこんな風にしましたが駄目でした


//△レス番このレスをチェックとここからチェックを上に
if (sn=='ResNum') {
for (var i=pm.getComponentCount()-1; i>=0; i--) {
var mi=pm.getComponent(i);
if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
continue;
}
if (mi.getText()=='レスのチェック') {
for (var j=mi.getItemCount()-1; j>=0; j--) {
var mj=mi.getItem(j);
if ((mj instanceof javax.swing.JMenuItem)) {
if (mj.getText().startsWith('このレスをチェック')
|| mj.getText().startsWith('ここからチェック')) {
pm.insert(mj,i);
}
}
}
var bs0=true;
for (var j=mi.getItemCount()-1; j>=0; j--) {
var bs=!(mi.getItem(j) instanceof javax.swing.JMenuItem);
if (bs&&bs0) {
mi.remove(j);
}
bs0 = bs;
}
if ((mi.getItemCount()>0)&&!(mi.getItem(0) instanceof javax.swing.JMenuItem)) {
mi.remove(0);
}
}
}
}

//△レス番メニュー削除

if (sn=='ResNum') {
for (var i=pm.getComponentCount()-1; i>=0; i--) {
var mi=pm.getComponent(i);
if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
continue;
}
if (mi.getText().startsWith('このレスにレス')
|| mi.getText().startsWith('このレスにレス [本文引用]')
|| mi.getText().startsWith('本文をコピー')
|| mi.getText().startsWith('本文を引用してコピー')
|| mi.getText().startsWith('レスのチェック')
|| mi.getText().startsWith('ここから')
|| mi.getText().startsWith('被参照数ランキング')
|| mi.getText().startsWith('2ch荒らし報告')) {
pm.remove(i);
removeRedundantSeparator(pm);
}
}
}

あと選択テキストポップアップメニューのNGFiles.txt以下の二つを上に移動させる方法も良ければ教えてください…

762 名前:VIICさん:11/02/25 02:51:06 ID:nk2yZcpq
>>761
実際にこれ入れてやってみたけどうまく動いてるんじゃ?
と思ったけど、
「ここからチェック」が
後半の削除ループの「ここから」に引っかかって消えるね
そういうことかな

元のコードをあまり崩さないようにループひとつにまとめてみた

一箇所pm.remove(i)→pm.remove(mi)にしてるけどやってることは同じ(はず)
エロい人添削きぼん

if (sn == 'ResNum') {

for ( var i = pm.getComponentCount() - 1; i >= 0; i--) {
var mi = pm.getComponent(i);
if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
continue;
}
if (mi.getText().startsWith('このレスにレス')
|| mi.getText().startsWith('このレスにレス [本文引用]')
|| mi.getText().startsWith('本文をコピー')
|| mi.getText().startsWith('本文を引用してコピー')
//|| mi.getText().startsWith('レスのチェック') //下に移動
|| mi.getText().startsWith('ここから')
|| mi.getText().startsWith('被参照数ランキング')
|| mi.getText().startsWith('2ch荒らし報告')) {
pm.remove(i);
} else if (mi.getText().startsWith('レスのチェック')) { //これだけ中身を移動してから削除
for ( var j = mi.getItemCount() - 1; j >= 0; j--) {
var mj = mi.getItem(j);
if ((mj instanceof javax.swing.JMenuItem)) {
if (mj.getText().startsWith('このレスをチェック')
|| mj.getText().startsWith('ここからチェック')) {
pm.insert(mj, i);
}
}
}
pm.remove(mi);
}
}
removeRedundantSeparator(pm);
}

>選択テキストポップアップメニューのNGFiles.txt

これ見当たらないんだけどどれのことだろう
763 名前:VIICさん:11/02/25 03:06:25 ID:nk2yZcpq
ごめん
NGFiles.txtがあると出てくるコマンドみたいだ
やってみたけど確かに引っかからない
わかんないや
764 名前:VIICさん:11/02/25 03:06:49 ID:PIlRW7W2
>>762
ありがとうございます
出来ました

NGFiles.txtが作成されてないと出ないので作成してもらえると出ると思います

765 名前:VIICさん:11/02/25 03:43:06 ID:g/TnvXv6
>>761
NGFiles.txtとそのサブメニューはpmに格納されてないので、menu.jsが実行されたあとにポップアップメニューに追加されてるんじゃないのかな?よく分からないけど。

function popupMenuCreated(pm,sn) {

if (sn=='ResNum') {
for (var i=pm.getComponentCount()-1; i>=0; i--) {
var mi=pm.getComponent(i);
if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
continue;
}
if (mi.getText()=='レスのチェック') {
for (var j=mi.getItemCount()-1; j>=0; j--) {
var mj=mi.getItem(j);
if (!(mj instanceof javax.swing.JMenuItem)) { // セパレータ
continue;
}
if (mj.getText().startsWith('ここからチェック')) {
// 'ここからチェック'を'レスのチェックの下に追加'
// 'レスのチェック'は意味がないので削除
pm.remove(i);
pm.insert(mj, i);
break;
}
}
} else if (mi.getText().startsWith('このレスにレス')
|| mi.getText().startsWith('このレスにレス[本文引用]')
|| mi.getText().startsWith('本文をコピー')
|| mi.getText().startsWith('本文を引用してコピー')
|| mi.getText().startsWith('ここから')
|| mi.getText().startsWith('被参照数ランキング')
|| mi.getText().startsWith('2ch荒らし報告')) {
pm.remove(i);
}
}
removeRedundantSeparator(pm);
}
}
// 余分なセパレータを削除
function removeRedundantSeparator(pm) {
var bs0=true;
for (var i=pm.getComponentCount()-1; i>=0; i--) {
var bs=!(pm.getComponent(i) instanceof javax.swing.JMenuItem);
if (bs&&bs0) {
pm.remove(i);
}
bs0 = bs;
}
if ((pm.getComponentCount()>0)&&!(pm.getComponent(0) instanceof javax.swing.JMenuItem)) {
pm.remove(0);
}
}
766 名前:VIICさん:11/02/25 03:45:52 ID:g/TnvXv6
ああ、かぶった・・・ついでに>>765の8行目は↓でした
if (mi.getText().startsWith('レスのチェック')) {
767 名前:VIICさん:11/02/25 03:59:55 ID:PIlRW7W2
>>766
記述が違うので勉強になります
ありがとうございます!
ちなみに>>762 とコード的にはどちらのがスマートとかってありますか?
768 名前:VIICさん:11/02/25 23:41:25 ID:RH5vJ+gF
ニコニコがスクリプトエラーになりますね
仕様変更でもあったのかな
ポップアップは出ます
769 名前:VIICさん:11/02/26 00:04:59 ID:xXab7q8N
URLExec.dat がおかしいみたいです
770 名前:VIICさん:11/02/26 02:00:40 ID:SG+Y92Q7
>>768
自分はwikiから拾ってきたもので特に問題なく使えてますが
771 名前:VIICさん:11/02/26 08:30:54 ID:xXab7q8N
>>770
ポップアップのリンクをクリックして外部ブラウザでニコ動開きますか?
スクリプトエラー:URLExec が出ます。
同じく、wikiから拾ったもの使用です。
772 名前:VIICさん:11/02/26 09:11:02 ID:xXab7q8N
エラーダイアログ
sun.org.mozilla.javascript.internal.WrappedException: Wrapped java,security.AccessControlException: access denied (java.net.SocketPermission www.nicovideo.jp:80 connect,resolve) (<Unknown source>#15) in <Unknown source> at line number 15
773 名前:VIICさん:11/02/26 09:33:45 ID:pgDCwSxh
>>768-772
V2Cの仕様が変わりました。
> T20110217の変更点
> ・[スクリプト] v2c.browseURL(u),v2c.browseURLExt(u)に外部へのネットワーク接続の許可を必須にした。

URLExec.dat内の

${V2CSCRIPT:Fr}

${V2CSCRIPT:SFr}
に変更でなおると思います。
774 名前:VIICさん:11/02/26 09:36:08 ID:pgDCwSxh
あと修正後
ファイル→再読み込み→URLExec.dat他も忘れずに
775 名前:VIICさん:11/02/26 09:37:03 ID:zF8c/eng
>>773
横㌧
776 名前:VIICさん:11/02/26 12:31:25 ID:BvOt42so
>>759
>>760
JavaとJavaScriptは全く別物
混同したりJavaをJavaScriptの略称のつもりで使ったりしてはいけない
777 名前:VIICさん:11/02/26 12:33:04 ID:xXab7q8N
>>773
ありがとうございます。
しかし、
URLExec.dat内に ${V2CSCRIPT:Fr} がありません

YouTubeやツイッターは問題なくポップアップのリンクから外部ブラウザが開くのですが

ニコ動だけは上記の>>772のエラーが出るのです
778 名前:VIICさん:11/02/26 12:43:37 ID:3rOe274D
>>777
URLExec2.datじゃないか?
ttp://www39.atwiki.jp/v2cwiki/pages/189.html
スクリプトもいれ直してみては?俺はそれで使えるようになった
ttp://www39.atwiki.jp/v2cwiki/pages/99.html
779 名前:VIICさん:11/02/26 12:54:53 ID:xXab7q8N
>>778
ありがとうございます。
直りました!
780 名前:VIICさん:11/02/26 16:04:43 ID:k5WzgFMo
上のほうで話にでてたSelTextポップアップでのNGFiles.txtだけど、やっぱりmenu.jsの処理のあとに追加されてるのかも
でも>>748の余分なセパレータを消すコードを下記のコードに追加するとNGFiles.txtも含めてSelTextポップアップ自体が表示されなくなるので、もしかしたらNGFiles.txtとそのサブメニューはセパレータをチェックして追加位置を決めてるのかも?
まあ不具合ってわけじゃないけど、一応報告です

試したコード

function popupMenuCreated(pm,sn) {
if (sn=='SelText') {
for (var i=pm.getComponentCount()-1; i>=0; i--) {
pm.remove(i);
}
}
}

結果

ttp://s.cyrill.lilect.net/uploader/files/201102261555140000.png
781 名前:n|a:11/02/26 21:27:30 ID:nmo6r3OE
>>780
次回更新ではpopupMenuCreatedを実行する前に
SelTextのNGFiles.txtを追加しておくようにします。
782 名前:VIICさん:11/02/26 23:24:21 ID:A80mxR84
>>776
この場合いじくってるのはJavaのコンポーネントじゃないの?
783 名前:VIICさん:11/02/27 11:35:01 ID:axfP2cu/
>>782
なるほど確かにこの場合に関しては俺の不勉強だった

ttp://v2c.s50.xrea.com/manual/script.html

>popupMenuCreatedはSwingのポップアップメニューコンポーネントを直接操作するので使用には十分注意してください。
784 名前:VIICさん:11/02/27 18:21:18 ID:DAGuoOgB
>>781
NGFiles.txt修正確認出来ました
お疲れ様です
ありがとうございました!
785 名前:VIICさん:11/02/27 20:34:44 ID:h8BLMLXb
T20110227の書き込み欄関連の機能テスト

searchPrevThread.jsの

//【コマンド4】 ${SCRIPT:S} searchPrevThread.js newthread //新スレ用にレス1のテンプレ作成支援
をスレ立て欄を開くように変更してみた。
ttp://loda.jp/v2cthread/?id=45
※T20110227以降が必要
786 名前:VIICさん:11/02/27 21:16:07 ID:DAGuoOgB
>>785
コレは便利過ぎる!
ただ前スレを開くでも立ってしまうorz
あとお聞きしたいんですが作成完了音を消すにはどこを削除すればいいんでしょうか?

良ければ教えてください

787 名前:VIICさん:11/02/27 21:55:51 ID:h8BLMLXb
>>786
すみません。
361と377行目の行頭の「//」を削除か
ttp://loda.jp/v2cthread/?id=46
を上書きでコマンド4以外では出ないはずです。

作成完了音については、スクリプトでは記述していません。

スレ立て欄表示時に対応するスレ一覧が開いて更新する仕様のため
その更新チェック音かと思います。(そのため現状はステータス表示も無意味になっています)

今のところ、スレ立て欄表示時に「更新チェックしない」または「更新音を出さないようにする」

設定はスクリプトでは出来ないみたいです。
788 名前:VIICさん:11/02/27 22:07:37 ID:DAGuoOgB
>>787
v2ccompSoundEnabledとcx.soundNameがなかったので
仕様かなとも思いましたが一応聞いてみました
確認してみたところ意図している動作になりました
ご丁寧にありがとうございます!

無駄にスレたてしたくなってきて困るw

789 名前:VIICさん:11/02/27 23:15:29 ID:c3jWspZM
yourfilehostのサムネとかって取得できないんですかね?
スクリプトとか色々入れてみたんですが、youtubeとニコニコのサムネは重宝してるんですがyourfilehostまであったら鬼に金棒です、いろんな意味で。
790 名前:VIICさん:11/02/27 23:27:12 ID:BZ4CxuCm
>>789
画像としてサムネイルを表示するだけでいいのなら
ImageViewURLRepalce.datが対応してますね

youtubeのスクリプトの様に他の情報まで取得してポップアップさせるのもおそらく可能

誰かが作ってくれればの話ですが
791 名前:VIICさん:11/02/27 23:38:43 ID:c3jWspZM
>>790
ほんとですね。ImageViewURLRepalce.dat開いてみたら対応になってる。
でもリンクをマウスオーバーしてもなぜか画像サムネはでないんですよね。仕様変更とかあったのかも。。
792 名前:VIICさん:11/02/27 23:50:26 ID:BZ4CxuCm
>>791
自分は表示されるけど
最新じゃなかったので110221に差し替えてみたけどそっちでもおk
793 名前:VIICさん:11/02/27 23:57:41 ID:c3jWspZM
どうもImageViewURLReplaceとStreamingPlayer まとめwikiで拾った方だと無理みたいで。
最新のStreamingPlayer3β版に付属してるImageViewURLReplace.datだと無事表示されました。スレ汚しすいませんでしたm(__)m
794 名前:VIICさん:11/02/28 00:26:12 ID:/47rXqbW
まとめwikiは情報が古いみたいね
勝手に書き換えといたw
795 名前:VIICさん:11/02/28 01:34:21 ID:vwcEYD+0
getlog更新する時これ入れといてー (アドレスの"h"は補完しといてねー)
実況の捕獲率はみみずんよりも高いかもしれない、ただし10日間限定
ttp://areya.tv/2ch/makeimghtml.php

// {url: "ttp://areya.tv/2ch/$2/dat/$3.dat", name:"areya.tv" }, //areya.tv(実況ch-TV番組実況系のみ)

// {url: "ttp://areya.tv/p_search/$2/dat/$3.dat", name:"areya.tv(bbspink)" }, //areya.tv(アイドル画像板,半角文字列板,半角二次元板のみ)
796 名前:VIICさん:11/02/28 01:38:29 ID:/47rXqbW
常に書き込み欄開いた状態にしようと思って
function endCheck( th, cx ) {
th.openWritePanel();
}
ってやってみたんですが、dat落ちスレで確認のダイアログが出てきてしまいます。
なんかいい方法ないですかね

・dat落ちスレでは書き込み欄開かない

・dat落ちスレで書き込み欄開いてもダイアログを出さない

ここら辺ができればいいんですが

797 名前:n|a:11/03/02 00:13:02 ID:iWzHE3RO
>>796
T20110301からはrescheck.jsではなく、threadld.js で
function panelCreated(th) {
th.mayOpenWritePanel();
}
を使ってください。
798 名前:VIICさん:11/03/02 04:14:30 ID:FmZb5XPf
>>797
ありがとうございます!
799 名前:VIICさん:11/03/02 05:59:01 ID:zMPrg9ia
2010/11/09のzenban.js(最新)
を実行するとコンソール出力に以下が表示されますが問題はありますか?(httpだと書き込めないのでttpにしています)
スクリプト自体は問題なく動作しているのですが気になったので

Not a valid cookie: from ttp://2ch-ranking.net/index.html?board=zenban

cBoard=zenban%2Cnews4vip%2Canime2%2C; expires=Wed, 29-Feb-2012 20:35:33 GMT; path=/; domain=2ch-ranking.net

あとコンソール出力に表示されているのは全て何らかのエラーという認識でいいんでしょうか?

800 名前:n|a:11/03/02 23:34:06 ID:iWzHE3RO
>>799
そのメッセージはCookieのチェック処理の問題が原因で、
次回更新で修正します。
(zenban.jsの動作には影響していないと思います。)

コンソール出力に表示されているメッセージの大部分はエラーですが、

ただの状態表示もあります。
801 名前:VIICさん:11/03/02 23:48:05 ID:zMPrg9ia
>>800
レスありがとうございます
なるほどそういう事だったんですか!

是非よろしくお願いします

802 名前:VIICさん:11/03/06 02:54:41 ID:ABKCgFw1
mimizunID.jsというスクリプトファイルが今まで問題なく使えてたのですが、
久々に実行したら使えなくなってました。
実行したら下記画像のようなエラーダイアログが出てきます。

ttp://www.odnir.com/cgi/src/nup52660.png


ソースは以下のようになります。

------------------------------ここから----------------------------------------------------------

var id = v2c.context.res.id;
var board = v2c.context.thread.board.key;
var url = "ttp://mimizun.com/search/perl/idsearch.pl?board=" + board + "&id=" + encodeURIComponent(id);
v2c.browseURLExt(url);
------------------------------ここから----------------------------------------------------------

※直リンができない為 h を外してみました。

803 名前:VIICさん:11/03/06 03:01:04 ID:hU/+Stgm
>>802
>>773
804 名前:VIICさん:11/03/09 23:50:54 ID:wD+mps6l
>>799 の件修正確認しました
ありがとうございました!
805 名前:n|a:11/03/15 00:36:24 ID:Rnv2n60f
ttp://jane.s28.xrea.com/test/read.cgi/bbs/1273709202/970
と同じような動作をする rescheck.js

var pu=java.util.regex.Pattern.compile('(h?ttps?://[!#-;=?-Z_a-z~]+ ?(?:<br> ?|$)){3,}');

var pb=java.util.regex.Pattern.compile(' ?(?:<br> ?|$)');

function checkRawText(res,cx) {

var sm=res.message;
var mu=pu.matcher(sm);
if (mu.find()) {
var su=mu.group();
var mb=pb.matcher(su);
var sb=new java.lang.StringBuilder(sm.substring(0,mu.start()));
var i=1;
var ip0=0;
while (mb.find()) {
var ip=mb.end();
if (ip==ip0) {
break;
}
if (i<=9) {
sb.append('0');
}
sb.append(String(i++));
sb.append('. ');
sb.append(su.substring(ip0,mb.start()));
sb.append(mb.group());
ip0 = ip;
}
sb.append(sm.substring(mu.end()));
res.message = sb;
}
}
806 名前:VIICさん:11/03/15 01:40:12 ID:Dy6kXrNZ
>>805
本スレで質問したものですがまさかn|aさんにスクリプト書いていただけるとは…
ありがたく使わせていただきます

あと本スレで質問したReplaceStr.txtの

<n>対象URL/タイトル
でURL or スレタイで適用したりは現在使えないって認識で良いでしょうか?
いつか対応して頂けると助かります

ほんとにありがとうございました!

807 名前:VIICさん:11/03/15 16:33:41 ID:L1sv2hk0
既得ログ一覧の全スレのオブジェクトを取得することはできないのでしょうか?
808 名前:VIICさん:11/03/17 14:59:03 ID:k8EW0VU6
>>805
を追加したらそれまでのが動かなくなりました
どう直せばいいでしょうか?
現在の状態説明すると長くなるのでファイルあげときます
ttp://www1.axfc.net/uploader/Sc/so/215579.js
809 名前:VIICさん:11/03/17 15:05:09 ID:k8EW0VU6
訂正です
追加したらそれまでのが動かなくなったので弄っていたら
追加したものが動かなくなりました
810 名前:VIICさん:11/03/17 16:31:20 ID:4as1GeaZ
>>809
wikiのrescheck.jsだと
各処理は全部msgを更新するような作り方になっていて
最後にその内容を書き戻す
res.setMessage(msg);
ってなってるから
追加分もそれに追従しないとダメぽい

というわけで修正してアップしますた

全機能//で無効化してあるので必要部分を消してください
今回の部分は
ck.renbanURL
の所です
ttp://loda.jp/v2cthread/?id=50.zip

不具合あったら指摘・修正等よろしくです

811 名前:VIICさん:11/03/17 18:31:27 ID:k8EW0VU6
>>810
動作確認しました
ありがとうございます!
33行目の "{2,}"
77行目の "('. ');"
この2行はオリジナルに手を加えてますので
3行以上から適用したい方は33行目に注意してください
77行目は視認性上げるため元にスペースを一つ挟みました
812 名前:VIICさん:11/03/17 20:00:20 ID:oZoOLMf+
getdat.jsの使い方を教えてください
これを機に、スクリプトを学びたいと思います

やりたいことは、過去ログのダウンロード(getlog.js)→画像の自動ダウンロードです

よろしくお願いします
813 名前:VIICさん:11/03/17 20:59:57 ID:4as1GeaZ
>>812
function getDat(th) {
var bl;
//ここに過去ログのバイト列を取得してblに代入するコードを書く
return bl;
}

こんな感じになると思う


blの内容は、wikiのGetLog_for_V2C.js内にある
v2c.getThread( thu ).importDatBytes( bl );
のblと同じでいいはずだから、
この辺のbl取得部をgetDat用にちょっと改変すればいけるんじゃないかと

画像のダウンロードはスクリプトから実行はできないんじゃないかな

できるのは新着レスにおける画像ダウンロード数の制御だけで
ただ、getDatで取得したログも新着分は新着として扱われるようなので
新着画像を自動ダウンロードするように設定していれば
自動ダウンロードされるっぽい
814 名前:n|a:11/03/18 01:18:50 ID:mOnDHtUs
>805
var sb=new java.lang.StringBuilder(sm.substring(0,mu.start()));
の次に
sb.append('<font color="gray">');
を、
sb.append(sm.substring(mu.end()));
の前に
sb.append('</font>');
を追加するとオリジナルの動作に近付きます。(追加した数字が灰色になる。)

>>806

<n>対象URL/タイトル は使えるはずです。
>>807
今のところできません。
815 名前:VIICさん:11/03/18 15:36:46 ID:YP7z75Ow
>>813 参考にdat落ちスレ開いたら自動で過去ログ取得するためgetdat.js弄ってましたが全然ダメだ・・・
良ければ誰かスクリプト書いてくれれば助かります
816 名前:VIICさん:11/03/18 15:57:24 ID:/Zr9p4iC
>>815
wikiのスクリプトは複数サイトにアクセスしたり色々やってるけど
簡単にやるなら
・スレのURLをログを拾えるURLに変換する
・getContentsAsBytes()で取得
・それをreturnする
これだけでいいと思う
ほぼそのものが>>594にあるね

getlog系のスクリプト公開はその是非について色々と議論あったりするので

自分は考えるのをやめてスルー
あとは任せた
817 名前:VIICさん:11/03/18 17:36:33 ID:kJ1Sz/Rc
th#getRes()を呼ぶたびに遅くなるのですが原因はなんでしょうか?100スレッド×1000レス分ほど呼ぶと初回呼び出しの100分の1以下の速度になります。
スワップ等は発生していないようですが・・・
818 名前:VIICさん:11/03/18 18:30:16 ID:Y+mjuykZ
>>815-816
systemスクリプトはv2c.~が使えないんじゃなかったけ
ネットワーク接続とかはJava使うのかな?
HttpRequestオブジェクトの取得がわからないので手を出していない。
819 名前:VIICさん:11/03/18 18:33:28 ID:/Zr9p4iC
使えるよ
v2c.contextは無理かも
820 名前:VIICさん:11/03/18 19:38:35 ID:Y+mjuykZ
あれ?v2c.printとか使えなかった気がしたが使えてる。
datopen2のv2c.context.thread→thにしてreturn datでokだった。
mimizunで取得確認した。
821 名前:VIICさん:11/03/18 23:22:32 ID:Y+mjuykZ
不具合というわけではないのですが
v2c.confirm
で選択できるようにしてみたら
ダイアログ表示の右上に黄色△!のマークが表示されます。
v2c.alert,v2c.promptもそうみたい。
Tw指定かと思いますが、getdat.jsなどは指定できないので

【V2C】 T20110314 [2.5.0_10] (L-0.6.2:x86)

【Java】 1.6.0_24-b07 (Sun Microsystems Inc.)
【OS】 Windows XP Service Pack 3 (x86)
【メモリ】 Total(Free)/Max.: 247(135)/247 (Phys. Total/Avail.: 2030/826) [MB]
822 名前:VIICさん:11/03/19 03:08:07 ID:IBK5CcNq
rescheck.jsの
//各板のデフォルト名無しを'名無し'に置換
を使用した場合名無しがその他の扱いで指定した色になり手動で名無しに登録しなくちゃいけませんが
そういう事しなくてもデフォ名無し扱いできませんか?
出来ないなら要望として出させていただきます
よろしくお願いします
823 名前:VIICさん:11/03/20 09:20:14 ID:TTVONCnz
ポップアップメニューで項目の順番を入れ替えることってできますか?
例えば、選択テキストポップアップメニュー で、「選択範囲のリンク」を一番上にもってくるにはどうすればいいですか?
824 名前:VIICさん:11/03/20 14:53:29 ID:9/bbJOW4
>>823
削除のサンプルをちょっといじってやってみた
この例だと、選択範囲のリンクとWeb検索 をそれぞれ1番目の2番目に持ってくる

function popupMenuCreated(pm, sn) {

var menua = {};
if (sn == 'SelText') {
for (var i = pm.getComponentCount() - 1; i >= 0; i--) {
var mi = pm.getComponent(i);
if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
continue;
}
else if (mi.getText().startsWith('選択範囲のリンク')) {
menua['選択範囲のリンク'] = mi;
pm.remove(i);
}
else if (mi.getText().startsWith('Web検索')) {
menua['Web検索'] = mi;
pm.remove(i);
}
}
pm.insert(menua['選択範囲のリンク'], 0);
pm.insert(menua['Web検索'], 1);
}
}

'SetText'のところを変えれば別のメニューでも使える


Web検索を移動しない場合は

else if (mi.getText().startsWith('Web検索')) {

menua['Web検索'] = mi;
pm.remove(i);
}

の4行と、下にある


pm.insert(menua['Web検索'],1);

の行を消せばいい

逆に移動するメニューを追加したい場合は
このサンプルを参考に自分で追加すればいい(はず)
825 名前:VIICさん:11/03/20 14:55:28 ID:9/bbJOW4
>>824
pm.insert(menua['選択範囲のリンク'], 0);
                       ↑
これが挿入位置ね
0が一番目
826 名前:VIICさん:11/03/20 14:58:34 ID:EN/++9HH
こんなスレあったのか・・・
過去ログ自動取得みたいなのってまだないみたいですね
お暇な方いましたら作成してください
お願いします
827 名前:VIICさん:11/03/20 15:07:07 ID:EN/++9HH
>>824
え・・・こんなことも出来るのか
すごいな
レス表示ポップアップの外部コマンド欄の位置も変えれますか?
わかるかたいれば教えてください
828 名前:VIICさん:11/03/20 15:20:48 ID:EN/++9HH
と思ったら外部コマンドのテキストそのままでいけました
これここからここまでっていう風に指定はできますか?
現在は
1
2
3
4
5 ここまでスクリプト
6 フォルダ(たまに使う物)
になってますが一つ一ついくしかありませんか?
829 名前:VIICさん:11/03/20 18:24:10 ID:TTVONCnz
>>824
回答ありがとうございました。
スクリプトについては初心者なので少しずつ勉強しようと思います。
830 名前:VIICさん:11/03/20 18:47:42 ID:+49JuJjX
>>826
dat落ちログを取得するスクリプトは既にあるぞ
831 名前:n|a:11/03/20 23:32:35 ID:AjI0Pwt9
>>817
ランチャー設定の「メモリ使用量の上限」を増やしてみてください。
>>821
何か方法を考えようとは思っています…。
832 名前:VIICさん:11/03/21 01:23:36 ID:zMJX2T0W
>>824 をベースに弄ってるんですがセパレータ挟むのは可能でしょうか?
833 名前:VIICさん:11/03/21 02:01:12 ID:jA2iYmct
>>832
調べてみたけど…
pm.addSeparator();
で追加できるけど、最後尾にしかできなかった…

pm.insert(new javax.swing.JPopupMenu.Separator(),0);


一応これで指定場所に突っ込めることを確認
java全く知らないのでエロい人ツッコミよろしく
834 名前:VIICさん:11/03/21 02:18:18 ID:zMJX2T0W
>>833
出来ました
ありがとうございます!
あともう一つなんですが任意の場所のセパレータは消せますか?
removeRedundantSeparator(pm);
removeRedundantSeparatorSub(mi);
では指定場所のセパレータは消せませんでした(当たり前ですよねorz)
835 名前:VIICさん:11/03/21 02:38:39 ID:zMJX2T0W
と思ったらremoveRedundantSeparator(pm);
で消せました
スレ汚しすいませんでした
836 名前:VIICさん:11/03/22 18:47:39 ID:07q5l36G
2010/11/09のzenban.js(勢いランキング)
を使用してスレを開いたとき高確率で取得できなくなりましたorz(更新で読み込める)
時期的には地震後ぐらいからおかしくなったので鯖の問題?と思いましたけどスレ一覧から該当スレ開くと普通に開けます
どうしてでしょうか?
コンソール貼っときます

xception in thread "Thread-113" java.lang.NullPointerException

at java.util.regex.Matcher.getTextLength(Unknown Source)
at java.util.regex.Matcher.reset(Unknown Source)
at java.util.regex.Matcher.<init>(Unknown Source)
at java.util.regex.Pattern.matcher(Unknown Source)
at org.monazilla.v2c.V2CKeywordItem.checkApply(Unknown Source)
at org.monazilla.v2c.V2CKeywordSet.getItemArrayA(Unknown Source)
at org.monazilla.v2c.V2CNameKeywordHighlightSet.getNameKeywordHighlightItemArray(Unknown Source)
at org.monazilla.v2c.V2CName.checkNGAndAvatar(Unknown Source)
at org.monazilla.v2c.V2CResItem.parseName(Unknown Source)
at org.monazilla.v2c.V2CResItem.doParse(Unknown Source)
at org.monazilla.v2c.V2CBBSThreadRes.createResItemFromBytes(Unknown Source)
at org.monazilla.v2c.V2CBBSThreadRes.appendToDatFile(Unknown Source)
at org.monazilla.v2c.V2CHttpUtil.updateDatFile(Unknown Source)
at org.monazilla.v2c.V2CHttpUtil.updateDatFile(Unknown Source)
at org.monazilla.v2c.V2CBBSThreadRes.doUpdateThread(Unknown Source)
at org.monazilla.v2c.V2CBBSThreadRes$UpdateThread.run(Unknown Source)
837 名前:VIICさん:11/03/22 19:20:02 ID:TGvE+1r0
>>836
> xception in thread "Thread-113" java.lang.NullPointerException

  Λ_Λ  \\

  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >_Λ∩
  _/し' //. V`Д´)/
 (_フ彡        /
838 名前:n|a:11/03/22 23:56:36 ID:KjBF1DsE
>>836
こちらではzenban.jsは正常に動作しているようです。
コンソール出力のエラーはスクリプトの実行とは関係無いエラーで、
次回更新で修正します。
839 名前:VIICさん:11/03/23 12:53:43 ID:9hj17DFl
>>838
レスありがとうございます
検証してみたところここ最近の勢いが早くてdat落ちしているスレを開こうとしていたみたいです…
すいませんでした

エラーの方よろしくお願いいたします

840 名前:VIICさん:11/03/25 22:25:04 ID:TmUy77mA
java.lang.String.format使えないのん?
841 名前:VIICさん:11/03/27 03:27:05 ID:AnrRmdK/
977 : 【東電 82.1 %】 [sage] :2011/03/26(土) 00:56:49.06 ID:0sOftEf7P
現在の電力使用量を表示するスクリプトを作って見ました。
東京電力電力供給状況API(ttp://tepco-usage-api.appspot.com/)のlatest.jsonを使用。

tepco.js

ttp://loda.jp/v2cthread/?id=53.zip
スクリプトを実行すると、ステータスバーに現在の電力使用量が%単位で表示されます。
元データの更新時間も同時に表示されます。

外部コマンドに ${SCRIPT:FrwS} tepco.js と指定します。

IDをつけてキーバインドやマウスジェスチャ(全体)に設定しても良いでしょう。

データの取得はデフォルトでは前回の取得時から毎時7分、27分、47分をまたいだ場合に行われます。

   (例えば前回13:54に取得していた場合、14:06まではスクリプトを実行してもデータを取得しに行きませんが、
    14:07以降に最初にスクリプトを実行した時点でデータを取得し直します。)
現状毎時5分40秒あたりにデータが更新されるようなので、少し余裕を持って毎時7分に更新しています。
時計が狂ってると最新のデータが最大20分弱反映されない可能性があるので注意。

今後元データの更新時間が変化した場合に備えて20分毎に更新していますが、

スクリプト内のadjust変数を変更すれば基準となる時間を変更できます。
変数をいじる気のある人なら、interval変数で更新間隔を変更できます。
20分毎が無駄と感じるなら、1時間毎に変更すると良いと思います。
842 名前:VIICさん:11/03/27 22:20:23 ID:Rpu+6ikI
getdat.jsで総レス数が少ない場合や1のレスだけでいい場合など
過去ログ取得は必要ない場合があります。

URLをreadURL()で読み込むようにして

総レス数を表示したconfirm使ってDat取得するか選択するようにしてます。
これが効率いいのかはわからないのですが・・・

要望ですが追加でconfirmに1のレス文を表示するようにして

キャンセルすると『スレを開かない(もしくはログを削除して閉じる)』を行いたいです。

よろしくお願いします。

843 名前:VIICさん:11/03/28 02:11:34 ID:fQxm/dPe
確かに、th.open() があるならth.close()があってもいい気する
例えば、v2c.resPane.getThread(i)でループ回して
条件に合致するスレは閉じるorログ削除する みたいなのは需要あるかも?
「指定した板のスレだけ」とか「最終書き込みがn日前」とか
自分は「dat落ちタブを閉じる」さえあればいいので別にいらないけど…

と思ったけど、「未読なし かつ dat落ちタブを閉じる」ができたら便利そうだ

844 名前:VIICさん:11/03/29 02:02:15 ID:NLDOUaf7
90+1 :名無しさん@お腹いっぱい。 [] :2011/03/29(火) 01:30:55.87 ID:xt8VbMtV0 [PC]
sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot find funttion getPopupOfID.(<Unknown source>#56)in<Unknown source> at line number56.
ニコニコ動画の情報をポップアップするスクリプト入れたんだが全く動作してくれない、youtubeのも同様
というか本当は入れたスクリプトずべて動作しないんだが、せめてこいつだけでも動かせはしないだろうか
上のような文が出るのは何が原因なのか教えて欲しい

本スレから誘導されて来た、それで56行目というのがこれ

if (vcx.getPopupOfID(video_id)) {
なんだけど、何故ダメなんだろう
845 名前:VIICさん:11/03/29 02:11:05 ID:vIE/lAVR
自分は誘導した本人だけど…わからんw
もう一人の方に任せるとしてとりあえず…

・他のも全部そのエラー?

・エラーは自分で書き写してるっぽいけど、メニューの「表示」→「最後のエラーダイアログ」からコピーできるよ
・とりあえずバグ報告テンプレは貼っといたほうがいい(今回は関係ない気がするけどね
846 名前:VIICさん:11/03/29 02:31:07 ID:7ZSFqmcI
関数見つからんって言ってるから
V2Cのバージョンアーップ
847 名前:VIICさん:11/03/29 02:57:12 ID:vIE/lAVR
getPopupOfIDって実装されたのもう半年くらい前な気がするんだが…まさかね
848 名前:VIICさん:11/03/29 04:21:37 ID:NLDOUaf7
( ゚д゚)…

スマン、こんな…こんあ初歩的なミス…

ver2.02だった
アップデートしたら出来ました、ありがとうございました。
>>847
まさかだったわああああああ!!
自分が馬鹿すぎて死にたいわあああああああん
本当スイマセンでした
849 名前:VIICさん:11/03/29 21:06:59 ID:A8yhrpba
こーゆーバカが多いとサポートって大変だよな
850 名前:VIICさん:11/03/30 13:52:29 ID:Er0qCPP3
開いてるすべてのスレから画像のリンクをローカル板に貼り付けるのではなくて
見ているスレの画像リンクをローカル板に貼り付けるスクリプトって出来ますか?

頑張ってみたのですがどうも出来なくて

851 名前:VIICさん:11/03/30 17:45:43 ID:BRJ2Xmdx
>>850
wikiにあったスクリプトの関係なさそうなとこ削除+ちょっと追記 で作成してみますた

//【登録場所】全体、レス表示

//【ラベル】画像レスまとめ(単スレ)
//【内容】開いているスレッドから画像が含まれるレスのみを抽出し、ローカルスレッドを作成する。
//【コマンド】${SCRIPT:Fw} imageExtract.js ローカル板のフォルダ
//【スクリプト】
// ----- 次の行から -----
function createImageResThread() {
var args = v2c.context.args;
if (args.length == 0) {
return "板のフォルダが指定されていません。";
}
var bd = v2c.getLocalBoard(args[0]);
if (!bd) {
return "ローカル板を取得できませんでした。";
}
var th = v2c.context.thread;
if (!th || th.local || th.bbs.twitter) {
return "非対応スレ";
}
var resCnt = th.localResCount, imgRes = [];
for (var j = 0; j < resCnt; j++) {
var res = th.getRes(j);
if (res) {
for (var i = 0; i < res.links.length; i++) {
if (res.links[i].type_IMAGE) {
imgRes.push(res);
break;
}
}
}
}

if (imgRes.length == 0) {

return "画像レスが存在しません。";
}
var lth = bd.createLocalThread("画像レス抽出@" + th.title + "@" + th.board.name, imgRes);
if (!lth) {
return "ローカルスレッドを作成できませんでした。";
}
lth.open(false);
return null;
}

var se = createImageResThread();

if (se) {
v2c.alert(se);
}
// ----- 前の行まで -----
852 名前:VIICさん:11/03/31 00:19:55 ID:hJ/j4ADQ
>>851
ありがとうございます!
画像スレ開いてる傍らにオカ板の怖くて開けない画像スレとかも開いてたんで
間違って開いてしまったりとかあったので本当に感謝です
853 名前:VIICさん:11/03/31 20:02:20 ID:lqmql/15
質問・要望です

スクリプトによるポップアップですが、

スクリプト側から閉じる命令を出すことはできないでしょうか?

例えば、マウスオーバーで>>352を使うような場合

複数URLに連続してマウスオーバーしてしまうと複数のウィンドウが開いてしまいます
マウスクリックか
v2c.context.setDefaultCloseOnMouseExit(b)使って消せばいいのですが
複数重なって表示されてると結構面倒臭いです。

そもそも、新しいポップアップを作成されたら前のは即閉じてしまって構わないというような場面が結構あるので

指定したIDのポップアップウィンドウを閉じる とか
逆に 指定ID以外を閉じる とか、そういう機能が欲しいです。

調べたところ

ポップアップから更にポップアップを作った場合に元ポップアップを消す機能しか見つけられませんでした。
854 名前:VIICさん:11/04/01 18:37:30 ID:OXBesnEJ
【V2C】 2.5.1 [R20110321] (L-0.6.2:amd64)
【Java】 1.6.0_24-b07 (Sun Microsystems Inc.)
【OS】 Windows 7 (amd64)
【メモリ】 Total(Free)/Max.: 439(194)/1365 (Phys. Total/Avail.: 6142/1575) [MB]
【不具合内容】
menu.jsにて、ThreadPanelの「ラベル(スレッド)」を
下位フォルダへ移動すると内容が展開されなくなる

【再現方法】

function popupMenuCreated(pm, sn) {
if (sn =='ThreadPanel') {
for (var i=pm.getComponentCount()-1; i>=0; i--) {
var mi=pm.getComponent(i);
if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
continue;
}
if (mi.getText().startsWith('ラベル')) {
var m=new javax.swing.JMenu('下位フォルダ');
m.add(mi);
pm.add(m);
break;
}
}
}
}
【調査済項目】
ThreadListにも同じ項目がありますが、同じ症状です。
特殊な項目で発生するのかと思い、「送る」「フォルダに直接保存」等で試してみましたが、こちらは問題なしです。

ちなみに、同階層での位置変更は問題ありませんでした。


例)
if (mi.getText().startsWith('ラベル')) {
pm.remove(i);
pm.add(mi);
break;
}
855 名前:!denki:11/04/02 01:26:27 ID:6Hv9bdVn
東電発表のCSVファイルをそのまま使えるようにしました
ttp://loda.jp/v2cthread/?id=54

表示も少し詳しくなっています


使い方は同じですが、更新時間が変わっています
毎時7分と32分に更新しています
毎時5分か30分にCSVファイルが更新されるためです
(2分余裕をもって取りに行っています)
856 名前:VIICさん:11/04/02 01:27:44 ID:6Hv9bdVn
>>855>>841のバージョンアップ版です
857 名前:VIICさん:11/04/02 20:22:34 ID:aYe22y1n
>>830
自動取得ってやつがまだないけどな。
858 名前:VIICさん:11/04/02 20:41:55 ID:aYe22y1n
Twitterに貼る画像リンクは拡張子から区別できないため、
スクリプトとか検索とかで抽出することがやっぱり無理ですよね?
859 名前:VIICさん:11/04/02 20:48:35 ID:dnezaAUK
>>858
V2C側が画像と認識出来てる(サムネイル表示できる)ものなら可能
>>305,307,308辺りにもうあるね

アクセスしてみないと画像と分からないものはちょっとキツそう

860 名前:VIICさん:11/04/03 02:34:50 ID:i9SVIIhL
ThreadView.ViewPositionをファイルからじゃなく直接取得する方法はありませんか?
861 名前:VIICさん:11/04/03 12:31:15 ID:5TEa5xPe
レスされたレスを隠すスクリプトはありませんか?
つまり、レスされてたレスだけをスクリプトで抽出して見て、
されてないレスをそのまま見るという形でしたいと思います。
862 名前:VIICさん:11/04/04 23:54:49 ID:N5zorWId
スクリプトで外部サイトのhtmlを取得し、
formの内容を解析してinputタグを拾い
createHttpRequest でポスト みたいなことがやりたいんですが
formタグが入れ子になっていたりすることもあり
正規表現で解析するのは自分の力量を超えています。

DOMで要素取得とかできないでしょうか?

まぁDOMもほとんど知らないんですが
正規表現でやるよかましだと思うので
863 名前:VIICさん:11/04/05 00:43:53 ID:vvaEwwRR
>>862
補足です
特定のサイトに対応させるだけなら
拾いたいところだけ決め打ちで抜けばいいと思いますが
できれば汎用的に、仕様変更等にも強くといったものにしたいので…
864 名前:VIICさん:11/04/07 06:38:08 ID:m/qWG/LP
>>855
使わせて貰ってます
865 名前:VIICさん:11/04/08 22:23:13 ID:quir+WiT
>>633
>v2c.context.setDefaultCloseOnMouseExit(true);
>を何処か空いてる行に入れておけば機能するはず。

空いてる行とはURLExec2.dat内でいいんですか?

866 名前:VIICさん:11/04/08 22:27:23 ID:oy3nKBoH
適用したいスクリプト(~.js)の中ね
空いてる行っていっても好きな所どこでもって意味ではないから
分からんのなら一番上に挿入でおk
867 名前:VIICさん:11/04/08 22:55:01 ID:quir+WiT
せっかく教えてもらったけど分からなかったゴメン
868 名前:VIICさん:11/04/10 03:52:45 ID:CAq20f6u
>>855エラーが出るようになったりました、ダイアログに当日実績なんとかって
>>841は使えます
869 名前:n|a:11/04/11 02:31:13 ID:OMOcK3i7
>>840
java.lang.String.format("%4$2s %3$2s %2$2s %1$2s",["a","b","c","d"]);
>>854
H20110410で修正しました。
>>860
今のところありません。
>>861
res.refCount、v2c.context.setFilteredResIndex(li)、v2c.context.setPopupResIndex(li)
あたりを使えばできると思います。
>>862,863
javaの外部ライブラリを使う必要があると思います。
870 名前:VIICさん:11/04/12 04:10:57 ID:IFqR3YWh
>>2,3にあるはてブスクリプトを修正しました
エントリーページの変更に対応
ブックマークしているユーザー名を表示する機能を追加

wikiへのアップロードはパスが分からなかったのでアップローダーの方へ投稿しました

ttp://loda.jp/v2cthread/?id=55
871 名前:VIICさん:11/04/12 06:31:22 ID:TVsLc0wi
>>869
>>854
>H20110410で修正しました。
ありがとうございます。
動作確認しました。

しかしもう一つ報告が…

【V2C】 T20110411 [2.5.1_03] (L-0.6.2:amd64)
【Java】 1.6.0_24-b07 (Sun Microsystems Inc.)
【OS】 Windows 7 (amd64)
【メモリ】 Total(Free)/Max.: 569(437)/1365 (Phys. Total/Avail.: 6142/1489) [MB]

【不具合内容】

setResPaneHTMLで表示したhtmlのテキストボックスにアルファベットを打つ場合
キーバインドの「全体」で使用している文字を打つとそのコマンドが起動する

【再現方法】

下記スクリプトのテキストボックスで再現
var h = '<html><body><form action=""><input type="text"></form></body></html>';
v2c.context.setResPaneHTML(h,"キーバインドテスト",true);
v2c.context.setPopupFocusable(true);

【調査済項目】

K に ログから検索 を設定していて発動
他も適当に設定して試してみたが再現
setPopupHTMLでは再現せず
872 名前:VIICさん:11/04/13 13:32:25 ID:yhjtsC0j
>>869
>javaの外部ライブラリを使う必要があると思います。

ありがとうございます。

どうすりゃいいか分からんというレベルなので素直に諦めます。
873 名前:VIICさん:11/04/14 07:45:22 ID:Nn5dmFgm
スクリプトのことは何にも分からない初心者です
popupTweet(HTML版) でリツイート人数が表示されません
ツイッター側の仕様変更か何かあるようでしたら対策ご教授ください

また、最近こういうURLで貼られることが多いんですが、どうすればポッポアップできますか?

ttp://twitter.com/#!/chiiorakane/status/57604541302046720
874 名前:VIICさん:11/04/14 09:49:49 ID:11hlrgcF
>>873
後者に関してはwikiのURLExec2.datの記述に更新すればおk

前者は…そもそもそのページにリツイート数の情報がないから無理じゃないかな

APIの方も0が返ってくるぽいし仕様変わったんかね
875 名前:VIICさん:11/04/14 11:26:41 ID:Nn5dmFgm
>>874
ありがとうございます。
ttp://www39.atwiki.jp/v2cwiki/pages/180.html
このページにある通り記述してもポップアップは出るんですが中身がちゃんと表示されないんです。
特に更新もされてないようですが…

現在公式RTの人数表示が出なくなってるんですね。知りませんでした。

876 名前:VIICさん:11/04/14 11:50:09 ID:11hlrgcF
ごめん
#!のURLにヒットしないって意味かと思ってた
その上、手元のpopupTweetじゃ問題なかったから…
wikiのは確かに表示されないね

自分で直したのかなこれ

wiki以外から拾ってきた記憶全くないんだが…

var dat = v2c.readURL( RegExp.$1 );


var dat = v2c.readURL( "h" + "ttp://twitter.com/" + an + "/status/" + sid );

手元のはこうなってた

HTML版はtwitterのページ仕様がちょっと変わるだけで動かなくなる可能性があるので
API版使ったほうがいいと思うんだけどね
877 名前:VIICさん:11/04/14 13:18:15 ID:Nn5dmFgm
>>876
ごめんなさい。こちらの日本語が変でした。

HTML版の方は>>876を参考にして上手く修正できたのですが、API版は同じようにやっても

「スクリプトファイルが存在しません」とエラー表示されます。V2Cのバージョンは2.5.1です。
878 名前:VIICさん:11/04/14 13:41:24 ID:11hlrgcF
>>877
>ごめんなさい。こちらの日本語が変でした。
気にしないでください
そもそもそっちは悪くない
>>616みたいなやりとりが前あったから自分が早とちりした

>スクリプトファイルが存在しません

それは多分URLExec2.datの記述を間違えてるか、ファイル入れ忘れかと思う
APIとHTMLは別々のファイルになってるよ
879 名前:VIICさん:11/04/14 13:45:56 ID:11hlrgcF
ってAPI版の方も試してみたけど184行目でエラー出るね

応急処置として


link = child.getFirstChild().getNodeValue();
の真上に
if( child.getFirstChild() )
の一行挿入で動作確認

細かいところは見てないし>>873のURLで試しただけなんで

メンテする気ある人はよろしく…
880 名前:VIICさん:11/04/15 08:56:30 ID:7wP9XMBp
API版はどうやっても「スクリプトファイルが存在しません」のエラーしか出ないですね
notepadで開いて編集してるのが不味いのかな
よく分かんないのでHTML版大人しく使っときます

有志の方、popuptweetスクリプト更新していただければ幸いです

881 名前:VIICさん:11/04/16 11:50:43 ID:FiJIpyga
質問です

var h = '<html><body><form action=""><input type="text" name="text1"><input type="submit"></form></body></html>';

v2c.context.setResPaneHTML(h,"フォーム送信",true);
v2c.context.setPopupFocusable(true);
v2c.context.setTrapFormSubmission(true);

function formSubmitted(u, sm, sd) {

v2c.println(decodeURIComponent(sd));
}

上記のようなスクリプトでテキストボックスの値をformSubmittedで受け取ろうとすると、

内容が日本語の場合に下記のようなエラーがでます。
sun.org.mozilla.javascript.internal.EvaluatorException: Malformed URI sequence. (<Unknown source>#7) in <Unknown source> at line number 7

そもそもフォーム送信等の動作についてよくわかってないのですが、

自分で調べたところどうやらShift-JISでエンコードされているようで、decodeURIComponentはUTF-8用とのこと

「テスト送信」と書いて送ると

%83%65%83%58%83%67%91%97%90%4D
が返ってきます

これまた調べてるうちに、decodeURIComponentの代わりに

java.net.URLDecoder.decode(s)を使えばとりあえず私の環境でうまくいくことが分かったのですが
解決法としてはこれであってますか?

ttp://java.sun.com/javase/ja/6/docs/ja/api/java/net/URLDecoder.html

みてると、エンコーディングを指定して使うようにしろとか書いてあるのですが
そもそもどんな環境でもShift-JISで返ってくるのかどうか自体が自分には分からないので…

【V2C】 T20110411 [2.5.1_03] (L-0.6.2:amd64)

【Java】 1.6.0_24-b07 (Sun Microsystems Inc.)
【OS】 Windows 7 (amd64)
882 名前:VIICさん:11/04/16 13:43:29 ID:QPbx2rt8
コピーした(長い)URLを短縮してペースト・・・なんてスクリプトでできたりしますか ?
883 名前:VIICさん:11/04/16 22:27:50 ID:/IxWJBlp
>>882
元からV2C本体にURL短縮の機能ついてるが…
884 名前:n|a:11/04/16 22:39:55 ID:O8gPWEFf
>>871
次回更新で修正します。
>>881
次回更新ではformSubmittedのデータはUTF-8固定でエンコードするようにします。
>>882
現在URL短縮はスクリプトの機能としてはありません。
885 名前:VIICさん:11/04/17 13:52:18 ID:r/5Q8qvh
検索ボックスに >>\d という正規表現を入れたら
>>10>>25 とかのレスは抽出できたけど、
この抽出されたレスをスクリプトで隠したいなら
コードはどう書けばいいのでしょうか?
886 名前:VIICさん:11/04/17 14:28:22 ID:e0UA6Hdl
わざわざスクリプトで書かなくても
1レス丸ごと隠すなら非表示・キーワード設定、
アンカーのみを隠すならReplaceStr.txtを使えばいいんじゃない?
887 名前:VIICさん:11/04/17 15:55:02 ID:Vw4KensX
>>884
>>871
>次回更新で修正します。
>>881
>次回更新ではformSubmittedのデータはUTF-8固定でエンコードするようにします。
レス有難うございます! よろしくお願いします!

>>885

RE A/a & l
が並んでるところは論理反転の項目がついでにあってもいいんじゃないかと思った事ありますな
抽出ダイアログとか過去ログ検索とか
lと!の見分けが大変そうだけど…

スクリプトでやるなら

>>28
if (rs.idCount!=1) {
の行を
if (!rs.message.match(/\>>\d/)) {
でいいんじゃないですかね
888 名前:VIICさん:11/04/17 17:32:46 ID:r/5Q8qvh
>>887
出来たー。
スクリプトの分からない俺に
大変助かりました。どうも!
889 名前:VIICさん:11/04/22 11:22:28 ID:l1jim0ci
ステータスバー自動ダウンロードポップアップ"ImgDLStatus"の
"幅の設定…"は消せますか?
エラーになって消せません
890 名前:VIICさん:11/04/22 14:32:08 ID:sk2Hd8n9
>>889
ヘルプにある項目削除のサンプルをそれ用に修正して試してみたけど普通に消せたよ
そのエラーの内容が分からんからなんとも言えんが
単純にコードが間違ってるんじゃない?
891 名前:VIICさん:11/04/22 14:48:22 ID:l1jim0ci
すいませんエラー内容は

スクリプト実行エラー: sun.org.mozilla.javascript.internal.WrappedException: Wrapped java.lang.ArrayIndexOutOfBoundsException: No such child: 4 (<Unknown source>#1664) in <Unknown source> at line number 1664


if (sn == 'ImgDLStatus') {
for (var i=pm.getComponentCount()-1; i>=0; i--) {
var mi=pm.getComponent(i); ←←←←←←←←←←1664行目
if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
continue;
}
if (mi.getText().startsWith('自動ダウンロードを一時停止')
|| mi.getText().startsWith('自動ダウンロードを再開')
|| mi.getText().startsWith('幅の設定…')) {
pm.remove(i);
removeRedundantSeparator(pm);
}
}
}
892 名前:VIICさん:11/04/22 15:13:36 ID:sk2Hd8n9
>>891
>java.lang.ArrayIndexOutOfBoundsException
って言ってるから、iの値が要素数以上を指定してると言ってる
一番最初に消される 幅の設定 の時に
pm.remove(i);
removeRedundantSeparator(pm);
ここでセパレータも消してしまうのが原因だろう

結論だけ書くと

removeRedundantSeparator(pm);
をループの外に出せばいい
そもそもこれは編集し終わったpmに対して最後に一回実行すればいいはず
893 名前:VIICさん:11/04/22 15:15:26 ID:K9UFPA3z
どのポップアップメニューのことか分からないのでテストできないけど、removeRedundantSeparator(pm)をforの後に実行したらどう?
if (sn == 'ImgDLStatus') {
 for (var i=pm.getComponentCount()-1; i>=0; i--) {
  var mi=pm.getComponent(i);
  if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
   continue;
  }
  if (mi.getText().startsWith('自動ダウンロードを一時停止')
   || mi.getText().startsWith('自動ダウンロードを再開')
   || mi.getText().startsWith('幅の設定…')) {
   pm.remove(i);
  }
 }
 removeRedundantSeparator(pm);
}
894 名前:VIICさん:11/04/22 15:20:34 ID:l1jim0ci
>>892,893
出来ました
お二方ともありがとうございます!
うーんまだまだ勉強不足ですorz

> そもそもこれは編集し終わったpmに対して最後に一回実行すればいいはず

と言うことは手直ししたほうが良さそうですね
全てこうなってしまってるので
ありがとうございました!
895 名前:VIICさん:11/04/22 15:30:08 ID:sk2Hd8n9
つうか1664行目って…物凄いダイエットさせてるんだな
残すものより消す方が多いなら
消す方を指定するんじゃなくて残す方を指定した方が分かりやすいんじゃないか?

今回の場合だと


if (sn == 'ImgDLStatus') {
 for (var i=pm.getComponentCount()-1; i>=0; i--) {
  var mi=pm.getComponent(i);
  if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
   continue;
  }
  if (!mi.getText().startsWith('全ての自動ダウンロードを中止')) {
   pm.remove(i);
  }
 }
 removeRedundantSeparator(pm);
}

とかさ

今更過ぎると思うけど
896 名前:VIICさん:11/04/22 15:58:08 ID:l1jim0ci
>>895
凝り性なものでコンテキストメニューの殆どに手を加えていますので
消すほうが多いと言っても半々ぐらいかなと思います
移動の項目でもだいぶ占有してるので
詳しい人が見たらメチャクチャなコードだと思いますが
処理速度には影響ない?という風に考えてますので弄り倒してますw

そちらも参考になりました!が手直しする気は起きませんw

897 名前::11/04/23 19:28:26 ID:XvGbPNoa
setPopupHTML()で表示したhtmlで、
hrefが相対アドレスのものはクリックしてもブラウザで開かれず、
redirectURLも呼ばれないんですが、これって仕様ですかね?

↓テスト

var s = v2c.readURL('h' + 'ttp://v2c.s50.xrea.com/');
v2c.context.setPopupHTML(s);
v2c.context.setRedirectURL(true);
v2c.context.setCloseOnLinkClick(false);

function redirectURL(u) {

v2c.alert('redirectURLが呼ばれました');
}

【V2C】 T20110418 [2.5.1_04] (L-0.6.2:amd64)

【Java】 1.6.0_24-b07 (Sun Microsystems Inc.)
【OS】 Windows 7 Service Pack 1 (amd64)
898 名前:n|a:11/04/23 22:26:37 ID:yxpns6m9
>>897
2行目に
s = s.replaceFirst('(?i)</head>','<base href="h'+'ttp://v2c.s50.xrea.com/"></head>');
を入れると期待する動作になると思います。
899 名前:VIICさん:11/04/23 22:36:04 ID:XvGbPNoa
>>898
なるほど…
自分で書き換えてやればいいわけですね

無理だったらそうしようかとは思ってましたが、

自分でやってたらhrefの中身を一つずつ絶対アドレスに置換していくトコでした
勉強になります
900 名前:VIICさん:11/04/24 02:27:55 ID:RCJGLQoD
【V2C】 2.5.1 [R20110321] (L-0.6.2:x86)
【Java】 1.6.0_24-b07 (Sun Microsystems Inc.)
【OS】 Windows XP Service Pack 3 (x86)
【メモリ】 Total(Free)/Max.: 38(24)/742 (Phys. Total/Avail.: 3069/1959) [MB]
【不具合内容】 tree.jsが動作しない

【登録場所】 レス表示

【コマンド】 $SCRIPT tree.js ref respane
901 名前:VIICさん:11/04/24 03:50:33 ID:+nCTUXkP
>>900
tree.jsの修正
ttp://loda.jp/v2cthread/?id=56.zip

コマンド11で"input"も数値もない場合、仕様と違うのを修正

※588行目を空けて以下を追加した
if(SearchKey === undefined) SearchKey = 3;
902 名前:VIICさん:11/04/24 15:22:50 ID:RCJGLQoD
>>901
動作しました
ありがとうございます
903 名前:VIICさん:11/04/26 03:15:04 ID:SwbRjox5
>>884
>>871
>次回更新で修正します。
>>881
>次回更新ではformSubmittedのデータはUTF-8固定でエンコードするようにします。

お疲れ様です

T20110425で確認しました
904 名前:842:11/04/26 04:31:27 ID:2aCQ+U9y
タブを閉じる機能についてありがとうございます。

getdat.jsを置いておきます。

ttp://loda.jp/v2cthread/?id=57
※T20110424以上で動作
※自分用のため半自動です。任意でよろ。

動作の仕様は、

・みみずんを使用。
・最初に2chのURLにアクセス。
・未取得が0以下の場合、過去ログは取得しない。
・過去ログを取得する前にダイアログ(タイトル、総レス数、未取得数、(本文 ※デフォはコメントアウト))表示。
・新規の過去スレを開いて、かつダイアログをキャンセルした場合、そのレスタブを閉じる。
905 名前:VIICさん:11/04/26 11:12:34 ID:Cg2jz19r
乙です
906 名前:VIICさん:11/04/26 14:57:08 ID:35U1liv1
>>904
便利ですねー
ありがたく使わせていただきます
お疲れ様でした
907 名前:VIICさん:11/04/26 23:28:06 ID:21uwLDeQ
Java+Swingによる2chブラウザ V2C_R38
ttp://hibari.2ch.net/test/read.cgi/software/1301133585/795
> 795 :名無しさん@お腹いっぱい。 :2011/04/26(火) 15:25:55.91 ID:PIEMdUr+0
> レス上の画像URLを画像詳細サイトに送るような方法ってありますか?

↑を行う外部コマンド用スクリプト

ttp://www1.axfc.net/uploader/File/so/62065

書庫内のSearchEx.wsf, SearchEx.htmを解凍後、V2C\script\にコピーして、外部コマンドの設定-リンクに下記の3つを追加

* h ttpがNGに設定されているので下記ではttpから始まるURLになってますが、hは必要です
ラベル: 二次元画像検索
コマンド: wscript "$SAVEDIR\script\SearchEx.wsf" "$LINK" "" "ttp://www.ascii2d.net/imagesearch/search?uri=" "" "POST"

ラベル: 画像情報検索サイト

コマンド:wscript "$SAVEDIR\script\SearchEx.wsf" "$LINK" "" "ttp://iisearch.ddo.jp/front.php?mode=1&url=" "Shift_JIS" "POST"

ラベル: booru系類似画像検索

コマンド: wscript "$SAVEDIR\script\SearchEx.wsf" "$LINK" "" "ttp://iqdb.org/?url=" "" "POST"

作っておいて言うのも何ですが、これをv2c.createHttpRequest(u,d)、hr.setRequestProperty(n,v)、hr.getContentsAsString()を使ってPOSTされた結果をv2c.context.setResPaneHTML(s,t,b)でV2C内のタブで表示(要は外部スクリプトに頼らない方法)ってできるんでしょうか?

908 名前:VIICさん:11/04/27 00:15:25 ID:uulngRo2
>>907
IEで開いちゃうんですがブラウザの設定はどうすればいいんでしょう
909 名前:VIICさん:11/04/27 00:39:26 ID:zneBlm9/
>>908
ttp://www1.axfc.net/uploader/File/so/62075

たぶん、htmがIEに関連づけられてるのだと思います。とりあえずブラウザを指定できるように変更してみました

SearchEx.wsfを開いて6行目のvar brwにブラウザのフルパスを指定すればIE以外でも開けると思います。\は\\って書かないとダメなので気をつけてください
910 名前:VIICさん:11/04/27 00:47:50 ID:uulngRo2
>>909
できました
ありがとうございます
911 名前:VIICさん:11/04/27 00:53:50 ID:T0eOT8gz
>>907
自分も自前でPOSTしたいと思ったりしたこと有ったんですが
httpもhtmlも知らん所からだったので途中で挫折しました
とりあえずページをポップアップさせて
formSubmittedでpostのデータを受けてそれをそのまま投げる……とやればなんとかなりそうだけど
そうでない場合はソースから自分でゴリゴリpostデータを組まないといけないのですかね?

このスレのコードの寄せ集めで前者のやり方ができたんで(かなりやっつけですが)

晒してみます
自分で検索ボタン押す必要があります

var imagesearchUrl = 'h' + 'ttp://www.ascii2d.net/imagesearch/';

var h = v2c.readURL(imagesearchUrl);
h = h.replaceFirst('(?i)</head>','<base href="' + imagesearchUrl + '"></head>');
h = h.replaceFirst("(?i)(?<=type='text')>",' value="' + v2c.context.link + '">');

v2c.context.setPopupHTML(h);

v2c.context.setTrapFormSubmission(true);
v2c.context.setPopupFocusable(true);
function formSubmitted(u, sm, sd) {
v2c.context.closeOriginalPanel();
var hr = v2c.createHttpRequest(u, sd);
var sr = hr.getContentsAsString();
if (hr.responseCode >= 301 && 303 >= hr.responseCode) {
var url = hr.getResponseHeader("Location");
sr = v2c.readURL(url);
sr = sr.replaceFirst('(?i)</head>','<base href="' + imagesearchUrl + '"></head>');
}
v2c.context.setResPaneHTML(sr,"画像詳細検索",true);
}

面倒だわ内部で開くメリットも大してないわで

>>909でいいだろって感じですが
912 名前:VIICさん:11/04/27 01:55:09 ID:T0eOT8gz
質問です

せっかくth.close()が実装されたので>>843をやろうと思ったのですが

dat落ちの判定ってどうすればいいですかね?
今は「th.keyがsubject.txtになければ」という方法で判定してますが、もっといい方法あれば教えてください
そもそもこれでちゃんと判定出来るのかも自信無いんですが
913 名前:VIICさん:11/04/27 04:42:54 ID:FHTQpQMW
>>904 のgetdatを使用した場合たまにレス1のみ取得してタブを閉じるという挙動になります
その結果レス1のみのログが残ってしまいます(dat落ちして間もないスレでよくなる)
th.closeとは別にth.(ログを削除して閉じる)
という風なのを検討お願い致します
914 名前:VIICさん:11/04/27 15:50:03 ID:3Es2UYmg
>>907
画像情報検索サイトで「ファイルを選択するか、画像のURLを貼りつけてから検索ボタンを押してください。」ってエラーが出ちゃうんだけど
他の2つのサイトでの検索コマンドでも同様にエラーが出る
何か間違っているか手順が抜けてたら教えて欲しい

1. SearchEx.wsf, SearchEx.htmの2つをscriptフォルダにコピー

2. 外部コマンドのリンクにそれぞれのラベル、コマンド(URLはhtt~と修正)を登録
 (コマンドはwscriptから"POST"まできちんと選択されているのは確認済)
3. 念のためV2Cを再起動
4. 画像リンクを右クリックして画像検索
5. エラー「ファイルを選択するか、画像のURLを貼りつけてから検索ボタンを押してください。」('A`)
915 名前:914:11/04/27 16:03:11 ID:3Es2UYmg
自己解決
>>909さんのファイルで問題なくできました。
916 名前:VIICさん:11/04/27 18:00:19 ID:zneBlm9/
>>911
内部で開けたら良いなと思ったのは、たぶん内部で開ければSearchExが行ってるローカルhtmlからのsubmit(リダイレクト)を省略できるかな?と思ったからなんです

>>914-915

どっちのスクリプト使っても、ブラウザ側で1回リダイレクトの許可を行わないとエラーがでると思います
OSかブラウザを再起動すると>>914と同じ現象がおこるはず(一応zipに同梱してたreadme.txtには注意事項として書いてあります
917 名前:n|a:11/04/27 22:39:08 ID:nG4DZbXD
>>912
v2.5.2では th.live がLiveなスレッドかどうかを返すようにしました。
>>913
v2.5.2では最初のレスのみを取得することはなくなったはずです。
もしv2.5.2でも最初のレスを取得するようならば
th.close();
の後に
java.lang.Thread.currentThread().interrupt();
を入れてみてください。
918 名前:VIICさん:11/04/28 01:20:16 ID:0OQDswLF
ttp://www1.axfc.net/uploader/File/so/62120

>>907, 909をV2C用のスクリプトだけで行うようにしてみました。>>909のファイルは残しておきますけど、こちらのスクリプトの使用を推奨します

書庫内のSearchExmodoki.jsを解凍後、V2C\script\にコピーして、外部コマンドの設定-リンクに下記の3つを追加
* 二次元画像検索のときは回線の状況次第では、ブラウザで開かれる前に少しタイムラグが発生すると思います
* 二次元画像検索のときでもPOST内容を直接ブラウザで開けるかも知れませんが、1回失敗したので諦めました

ラベル: 二次元画像検索

コマンド: ${SCRIPT:S} SearchExmodoki.js $LINK 1

ラベル: 画像情報検索サイト

コマンド: ${SCRIPT:S} SearchExmodoki.js $LINK 2

ラベル: booru系類似画像検索

コマンド: ${SCRIPT:S} SearchExmodoki.js $LINK 3
919 名前:913:11/04/28 02:38:42 ID:nyyosmWa
>>917
2.5.2にしても残ってしまってましたが
java.lang.Thread.currentThread().interrupt();
これを挿入することにより問題は解決いたしました
ありがとうございます!
920 名前:VIICさん:11/04/28 04:00:21 ID:FGibJoh4
>>918
ありがとう、いただきました
問題なく使えてます
921 名前:VIICさん:11/04/28 13:27:19 ID:0PtcSGU4
ますます便利になっていくな
922 名前:VIICさん:11/04/29 00:47:36 ID:qSlmaDoE
スレチ臭いですが
ttp://gate-keeper.ddo.jp/wiki/index.php?StatusChecker
これを快適に使用したくて、アプリへのパス$SELTEXT
で外部コマンドへ登録しましたがうまく動きません

コピー後実行するとこのアプリでクリップボードを取得するみたいなので

妥協してコピー実行後アプリケーション起動を行っているのですが
これをワンステップで行いたいです
可能でしょうか?
923 名前:VIICさん:11/04/29 01:09:54 ID:Kmy4j3jw
>>922
選択テキストなら "ソフトまでのパス" $SELTEXT
リンクなら "ソフトまでのパス" $LINK
で普通に動いたよ?
924 名前:VIICさん:11/04/29 01:35:21 ID:qSlmaDoE
>>923
うわ何故か相対パスで指定していました($SAVEDIR\StatusChecker\StatusChecker.exe $SELTEXT)
長年の悩みが解決しました聞いてみるもんですね
ありがとうございました!
925 名前:VIICさん:11/04/30 13:11:20 ID:tzcGAbvu
wiki側にスクリプトを追加しました。
b_hatena.jsは>870まま
imageExtractは>851
getdat.jsは>917をコメントアウトで付加したもの
rescheck.jsは>810にck.fukidasiのパターン抜けを追加したもの
です。
他はwiki側においていいのかわからないので保留しました。
926 名前:VIICさん:11/05/01 13:24:48 ID:/TGRXcFN
【V2C】 2.5.2 [R20110427] (L-0.6.2:x86)
【Java】 1.6.0_24-b07 (Sun Microsystems Inc.)
【OS】 Windows XP Service Pack 3 (x86)
【メモリ】 Total(Free)/Max.: 254(148)/494 (Phys. Total/Avail.: 2030/934) [MB]
【不具合内容】
wikiのselect_font.jsで以下のコンソールエラーが出るようです。
【再現方法】
ttp://www39.atwiki.jp/v2cwiki/pages/99.htmlのファイルを使用
スクリプトを立ち上げて変更ボタンを押す。
【調査済項目】
32行目をvcx.closeOriginalPopup();にして
${SCRIPT:A}を使用で、でなくなったようなのですが正しいのかエラーの中身がわからないので報告しました。

Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError

at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.monazilla.v2c.V2CScriptContext.class$(Unknown Source)
at org.monazilla.v2c.V2CScriptContext$1.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.security.AccessControlException: access denied (java.io.FilePermission C:\Program Files\V2C\icon\item\Document read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkRead(Unknown Source)
at java.io.File.isFile(Unknown Source)
at org.monazilla.v2c.V2CLocalFileHandler.getSystemIconImage(Unknown Source)
at org.monazilla.v2c.V2CLocalFileHandler.getSystemIcon(Unknown Source)
at org.monazilla.v2c.V2CSwingUtil.getSystemIcon(Unknown Source)
at org.monazilla.v2c.V2CSwingUtil.getItemIcon(Unknown Source)
at org.monazilla.v2c.V2CTextPanel.<clinit>(Unknown Source)
... 18 more
927 名前:VIICさん:11/05/04 20:24:54 ID:6LpMzYzE
>>918のスクリプトをjdic(内部ブラウザ)で開くことはできますか ?
928 名前:VIICさん:11/05/05 14:45:41 ID:iMzCRQrp
>>927
25行目のv2c.browseURLExt(url)を
v2c.browseURL(url)にする
929 名前:VIICさん:11/05/05 15:13:54 ID:iMzCRQrp
少し機能の追加 ※今はつながり難いかも、めんどいので様子見
ago.jsと
ttp://loda.jp/v2cthread/?id=58
bracket.jsを更新
ttp://loda.jp/v2cthread/?id=59

ago.jsは実行したレス以降にがある場合はそこまでの時間をポップアップ

bracket.jsは引数2つを記述することでデフォルトの「」を変更できるようにした。
930 名前:VIICさん:11/05/05 15:15:25 ID:iMzCRQrp
>929
レス以降に「チェック」がある場合・・・
でした。
931 名前:VIICさん:11/05/05 15:28:23 ID:IKrotg/f
>>928
ありがとう !
932 名前:VIICさん:11/05/05 17:53:49 ID:bcZAceQF
>>843をそれなりに汎用的になるようやってみました

//【登録場所】全体、レス表示

//【ラベル】開いてるスレを閉じる
//【内容】開かれているスレにおいて、指定条件に合致するものを閉じる
//【コマンド1】${SCRIPT:Fr} closeThreads.js
//【コマンド2】${SCRIPT:Fr} closeThreads.js 10 10 105 100.5 10 1 チェックやテキストボックスの初期値を指定。
//【コマンド3】${SCRIPT:Fr} closeThreads.js 10 10 1010 1020 10current,software 1
//1つ目-未読無し
//2つ目-dat落ちor1000到達
//3つ目-○時間書き込みなし
//4つ目-勢い
//5つ目-板指定
//6つ目-閉じる前に確認
//一桁目がAc(1ならON) 2桁目が&と|(1なら|が選択)に対応する。 テキストボックスの初期値は3桁目以降に入力する
//コマンド2の例だと 時間の初期値が5、勢いが0.5
//コマンド3の例だと、時間の初期値が10、勢いが20 板初期値が(開いてる板,ソフトウェア板)
//「板指定」にcurrentを設定すると、現在開いている板に置き換わる
ttp://loda.jp/v2cthread/?id=63.zip

自分は基本最初の二つチェックでしか使ってないので

おかしな動作する可能性あり

後、バグなのかどうかちょっと分かりませんが

input のボタン上にマウスカーソルが移動すると
勝手にポップアップが閉じてしまうときがあります。
>>620にも似た様な報告有りますが、
setCloseOnMouseExit(true);は使っていません。
再現性はちょっと分かりません。
このスクリプト作成中にポップアップとスクリプトコンソール行ったり来たりしてると
時々発生してました。

【V2C】 2.5.2 [R20110427] (L-0.6.2:amd64)

【Java】 1.6.0_24-b07 (Sun Microsystems Inc.)
【OS】 Windows 7 Service Pack 1 (amd64)
【メモリ】 Total(Free)/Max.: 979(501)/1365 (Phys. Total/Avail.: 6142/1647) [MB]
933 名前:VIICさん:11/05/07 17:42:28 ID:UYK50Nh1
>>719 のスクリプト使用してコピーしているのですがIDが表示されない板の場合
ID:nullという風にコピーされます
IDでない板ではIDコピーしないという風には出来ないでしょうか?
ブラウザでコピーしたのと一緒にしたいです
よろしくお願いします
934 名前:VIICさん:11/05/07 18:02:43 ID:O/zTvJvG
>>933
' ID:' + res.id,

(res.id ? ' ID:' + res.id : ''),

に置換

935 名前:VIICさん:11/05/07 18:17:23 ID:UYK50Nh1
>>934
希望通りの動作です
即レスありがとうございました!
936 名前:VIICさん:11/05/08 10:06:15 ID:glnMBtE1
menu.jsで絞り込み入力欄のコンテクストメニューの履歴をサブメニュー化したく以下のようにして、サブメニュー化したのですが
移動した履歴メニューをクリックしても入力欄に履歴が入力されませんでした。
もし可能でしたら対応して頂けないでしょうか?

function popupMenuCreated(pm,sn){

if(sn == "ThreadViewMiniSearch" || sn == "ThreadListMiniSearch"){
var subm = null;
var subm_index = -1;
var list = [];
for (var i =pm.getComponentCount()-1; i>=0; i--){
var mi = pm.getComponent(i);
if (!(mi instanceof javax.swing.JMenuItem)) continue; //セパレータ
var sl=mi.getText();
if (sl.endsWith("[]")){
if (subm == null) subm = new javax.swing.JMenu("履歴");
subm_index = i;
subm.insert(mi,0);
}
}
if (subm != null) pm.insert(subm, subm_index);
}
}
937 名前:VIICさん:11/05/08 16:24:50 ID:E4Lq+xeh
V2C提示版では書き込み時に自動でリンクをh抜きするスクリプト
post.jsを置いときます。※systemフォルダ内に置く
ttp://www1.axfc.net/uploader/Sc/so/232055

あと、

>719のcopyWithDefAnon.jsを更新
ttp://www1.axfc.net/uploader/Sc/so/232056
>934の変更
・チェックによる複数選択、
・ファイル内の設定により、行先頭に「> 」の付加(デフォはfalse)
・ファイル内のコメント解除でスレッドタイトルとURLを付加できるようにした。
カスタムコピーに近くなった・・・
938 名前:937:11/05/08 16:33:50 ID:E4Lq+xeh
すみません。
>937のcopyWithDefAnon.jsは、コピーしないで「書き込み欄に送る」になってました。
元のデフォである「書き込み欄に送る」を行わずにコピーするものに修正しました。
ttp://www1.axfc.net/uploader/Sc/so/232057
501 KB
戻る 全部 最新50
DAT2HTML 0.35f FIX Converted.