V2Cスクリプトリファレンス

v2cオブジェクト

V2Cとのやりとりに使用します

プロパティ説明
contextオブジェクトcontextcontextオブジェクトを取得します。代入はできません。systemスクリプトから開いた場合はundefinedが返ります
historyオブジェクトhistoryhistoryオブジェクトを取得します。閲覧履歴を参照することができます。
お気に入りタブコレクションオブジェクトfavoritesお気に入りタブコレクションオブジェクトfvsにを返す。お気に入り全体に関する操作をすることができます
boardオブジェクト[]boardsV2Cに登録されている全板オブジェクトのArrayを返します
java.io.FileappDirランチャーのフォルダ(JWS版またはJARファイル直接起動の場合はnull)
java.io.FilesaveDirV2C保存用フォルダ
レスペインオブジェクトresPane現在選択されているレスペインオブジェクトを返す(2ペインモードでもnullではない)
Stringstatusステータスバーの文字列を取得します(代入により設定可能)
bbsオブジェクトbbs2ch2chのBBSオブジェクトを返す
boolonlineV2Cがオンライン状態の時にtrueを返す
boolinterrupted外部からの中断要求(スレ一覧用スクリプトでユーザによる停止ボタンのクリック等)があった時にtrueを返す
余談:内部的にはThread.currentThread().isInterrupted()を返しているだけです。)
レスラベルオブジェクト[]resLabelsV2Cで設定されているレスラベルのArrayを返します
boolcompSoundEnabled更新完了音を再生する設定がオンの時にtrueを返します。
StringclipboardTextクリップボードの文字列を取得します。スクリプトにはクリップボードへのアクセス許可が必要です。(${SCRIPT:Tc})
戻り値メソッド説明
voidbeep()Beep音を鳴らす
voidsetStatus(String s)ステータスバーにメッセージを表示する。スクリプトの実行が終了するとメッセージはクリアされるので、実行後もメッセージを残したい場合はv2c.context.setStatusBarText(s)を使用する。
v2c.status = sと同等
voidalert(String s)ダイアログでメッセージsを表示する
boolconfirm(String s)文字列sを「OK」・「Cancel」ボタン付きのダイアログに表示し、「OK」ボタンによりダイアログが閉じられた時のみtrueを返す
voidprint(String s)sをスクリプトコンソールに追加する。(「表示」メニューの「スクリプトコンソール…」でスクリプトからのメッセージを出力するためのウィンドウが開く。スクリプトコンソールが開いていない時のメッセージは無視される。)
voidprintln(String s)sをスクリプトコンソールに追加した後改行する。(同上)
Stringprompt(String s,String v)文字列sの下に初期値vの入力欄を表示し、「OK」ボタンによりダイアログが閉じられた時のみ入力欄の値を文字列として返す(その他の場合はnull)
voidexit()V2Cを終了する。
(スクリプトにV2C終了の許可が必要です。(${SCRIPT:Rx})
voidrestart()V2Cを再起動する。再起動できない場合はそのまま制御を返す。
(スクリプトにV2C終了の許可が必要です。(${SCRIPT:Rx})
voidexec(String s)文字列sをコマンドラインとして実行します。
WindowsのFirefoxで2chのHPを表示させる例:
v2c.exec('"C:\\Program Files\\Mozilla Firefox\\firefox.exe" http://www.2ch.net/');
voidexec(String[] l)lを引数のArrayとして実行します。lの最初の要素は実行ファイルへのパスを指定してください。
WindowsのFirefoxで2chのHPを表示させる例:
v2c.exec(['C:\\Program Files\\Mozilla Firefox\\firefox.exe','http://www.2ch.net/']);
空白を含むパスを使用する場合は空白で区切られてしまうなど意図しない動作になる場合があるのでこちらのメソッドを推奨します。
boardオブジェクトgetBoard(java.net.URL u, String n)URLがuの板がV2Cに登録されている場合その板の板オブジェクトを返す。(v2c.getBoard(u)と同じ。)
uが板のURLとして登録されてない場合はURLがuで名前がnの板を新規に作成して返す。
※uが外部板のURLの以外の場合は板を新規作成してくれないようです)
threadオブジェクトgetThread(java.net.URL u, String t, Integer n)V2CがuをスレッドのURLと認識できる場合に対応するスレッドオブジェクトを返す。
(t、nは省略可)
 t … thのスレタイが不明の場合スレタイとして使用される(デフォルト値null)
 n … thのレス数がn以下の場合レス数として使用される(デフォルト値0)
主に未取得スレッドのdatインポート用。
boardオブジェクトgetLocalBoard(String d)フォルダ名がdのローカル板オブジェクト(該当するローカル板が存在しない場合はnull)を返します
resオブジェクト(セパレータオブジェクト)createResSeparator(String s)レスとレスの間に文字列sを表示するセパレータオブジェクトを作成します。
セパレータオブジェクトは下のboard.createLocalThread(st,rl)で使用します。
セパレータオブジェクトsepが表示する文字列はsep.text・sep.setText(s)で取得及び設定することができます。
注意:表示文字列中のタブコードと改行はスペースに置換されます。
StringgetSelectedText()選択テキストを取得
StringreplaceSelectedText(String s)キーボードフォーカスを持つテキスト入力コンポーネントの選択テキストを置換文字列sで置換。
voidreloadSettringFile(String s)ファイル名sの設定ファイルを再読み込みする。
現在再読み込みできるのは
'samba24.txt', 'msgkw.txt', 'AAList.txt',
'ImageViewURLReplace.dat', 'ReplaceStr.txt',
'ReplaceStr_Tw.txt', 'URLExec.dat', 'URLExec2.dat',
'URLExec3.dat', 'NGBE.txt'で、
'samba24.txt'は2chの'samba24.txt'を再読み込みする。
例:v2c.reloadSettingFile('ImageViewURLReplace.dat')
voidreloadSystemScript(String s)ファイル名sのシステム系スクリプトを再読み込みする
例:v2c.reloadSystemScript('menu.js')
レスラベルオブジェクトgetResLabel(String sn)名前がsnのレスラベル(存在しない場合はnullを返します
オブジェクト記憶メソッド
 以下の関数はスクリプトファイルのパスに関連付けられており、
 スクリプトの内容を変更してもスクリプトのパスを変更しない限り同じオブジェクトを参照することができます。
 オブジェクトが記憶されるのはV2Cが終了するまでの間です。グローバル変数のような感じで使えます
戻り値メソッド説明
voidsetScriptObject(Object v)オブジェクトvを設定する
ObjectgetScriptObject()setScriptObject(v)で設定されたオブジェクトvを返す
ObjectputProperty(String s, Object v)キーsに対してオブジェクトvを保存する。
2回目以降の呼び出し時は、保存されたオブジェクトを返して、新しいオブジェクトvを保存する動作に変わる。初回、またはremoveProperty後はnullが返る
ObjectgetProperty(String s)キーsに対応するオブジェクトを返す
ObjectremoveProperty(String s)キーsに対応するオブジェクトを保存する。
2回目以降の呼び出し時は、保存されたオブジェクトを返して、削除する動作に変わる。初回、またはremoveProperty後はnullが返る
ネットワーク接続に関するメソッド
 openURL以下の関数はスクリプトに外部へのネットワーク接続の許可が必要です。(${SCRIPT:S})
戻り値メソッド説明
java.net.URLexpandShortURL(java.net.URL u, bool r)URL uが短縮URLと思われる場合は展開し、
それ以外の場合はuを返す。rの値により以下のように動作する:
 true … V2C内部にURLを展開した結果のキャッシュが存在しない場合はネットワーク接続により展開する。注意:展開が終了するまでv2c.expandShortURL(u,true)はブロックします。展開にはスクリプトに外部へのネットワーク接続の許可は不必要です。
 false … V2C内部のURLを展開した結果のキャッシュのみを参照する。
StringreadURL(java.net.URL u)u(URL文字列)の内容を取得する。プロトコルがHTTPでContent-Typeが"text/"で始まっている場合のみ内容が文字列として返される。例外的にパーミッション無しで利用可能。Content-Lengthが不明の場合のダウンロード上限は16MB。
HttpRequestオブジェクトcreateHttpRequest(java.net.URL u)URLuをGETするHttpRequestオブジェクトを作成する。
HttpRequestオブジェクトcreateHttpRequest(java.net.URL u,String d)URLuに対してデータdをPOSTするHttpRequestオブジェクトを作成する。(dはそのまま送信されるので適切にencodeされている必要がある。)
voidopenURL(java.net.URL u, bool bu, bool bnt, bool bbg)URL u が板またはスレッドのURLの時にスレ一覧またはレス表示欄で開きます。
bu: trueの時更新する
bnt: trueの時新タブで開く
bbg: trueの時裏で開く。
bu, bnt, bbgは省略可。デフォルト値はそれぞれtrue, true, false。
voidbrowseURL(java.net.URL u)URL u をブラウザで開く。JDICがインストールされている時は内部ブラウザで開く。
voidbrowseURLExt(java.net.URL u)URL u を外部ブラウザで開く。
voidbrowseURLDefExt(java.net.URL u)URL u をデフォルト外部ブラウザで開く
ファイルパス取得関連メソッド
戻り値メソッド説明
java.io.FilegetScriptDataFile(String fn)スクリプトがデータを保存するためのパス(ファイル名はfn)をJavaのFileオブジェクトとして取得する。ファイルの場所はスクリプトフォルダ内の"scdata"フォルダ。
java.io.FilegetScriptSubFile(String n)スクリプトファイル名から拡張子を除いたフォルダ内の名前nのファイルパスをjavaのFileオブジェクトとして返します。
注意:スクリプトファイル名が'.'(ピリオド)を含まない場合やスクリプトファイル名が拡張子のみの場合はnullを返す。
例: V2C\script\test.js から実行した v2c.getScriptSubFile('state.txt') は V2C\script\test\state.txt に相当するFileオブジェクトを返す
ファイル・フォルダ操作関連メソッド(ファイル読み込みの許可が必要 ${SCRIPT:Frw})
戻り値メソッド説明
boolcopyFileInfo(java.io.File f, java.io.File d)ファイルfをフォルダdにコピーし、成功した場合trueを返します。フォルダdが存在しない場合には作成します。)
boolcopyFile(java.io.File f0, java.io.File f1)ファイルf0をファイルf1にコピーし、成功した場合にtrueを返します
ファイル読み込み関連メソッド(ファイル読み込みの許可が必要 ${SCRIPT:Fr})
戻り値メソッド説明
StringreadFile(Java.io.File f,String c)ファイルfを文字コードcのテキストファイルとして読み込んだ結果の文字列を返す。
cを省略した場合、文字コードは適当に推測
StringreadStringFromFile(java.io.File f,String c)readFile(f,c)と同じ
String[]readLinesFromFile(java.io.File f,String c)ファイルfを文字コードcのテキストファイルとして読み込んだ結果の文字列を改行で分割したArrayを返す(各行末の改行コードは削除される)
cを省略した場合、文字コードは適当に推測、各行末の改行コードは削除される
byte[]readBytesFromFile(java.io.File f)ファイルfの内容をバイト列として返す
ファイル書き込み関連メソッド
(ファイルが既に存在する場合は上書きされる。安全のためV2C保存用フォルダ(v2c.saveDir)直下のファイルへの書き込みはエラーになる。ファイル書き込みの許可が必要 ${SCRIPT:Fw})
戻り値メソッド説明
voidwriteStringToFile(java.io.File f,String s,String c)ファイルfに文字列sを文字コードcで書き込む。(cを省略した場合文字コードはデフォルトの文字コード。)
voidwriteLinesToFile(java.io.File f,String[] sl,String c)ファイルfに文字列のArrayslを文字コードcで書き込む。cを省略した場合、デフォルトの文字コードとなる。(各行末には改行コードが追加される。)
voidwriteBytesToFile(java.io.File f,byte[] bl)ファイルfにバイト列blを書き込む。

historyオブジェクト

注意:履歴にスレッドが存在しない場合もlengthが0のArrayを返す。

プロパティ説明
threadオブジェクト[]threadsレス表示履歴に存在するスレッドオブジェクトをJavaのArrayとして返す
threadオブジェクト[]postThreadsレス表示履歴に存在する書き込んだことのあるスレッドオブジェクトをJavaのArrayとして返す

contextオブジェクト

コマンドの実行に必要な情報を取得します。
※ユーザーではなくV2C本体から呼ばれるsystemスクリプトではcontextオブジェクトは使用できません。

プロパティ説明
StringcommandLabelスクリプトを起動したコマンドのラベル(ポップアップメニューに表示されている文字列)を取得できます。
StringargLine外部コマンド設定のスクリプトファイル名(とその後の空白)より後の文字列。(nullを返さずに""を返す。)
スクリプト独自の引数を用意してユーザーに指定させてスクリプトの動作を変更させたい場合に使用します。
String[]argsv2c.context.argLineを分割して作成した引数のArray(引数が存在しない時はnullを返さずにargs.length==0のArrayを返す。)
resオブジェクトresポップアップメニューを表示した、またはマウスジェスチャを開始したレスオブジェクト
スレッド全体ではなく実行した場所のレス単体に対して処理したい場合に使います。
threadオブジェクトthreadスレッドに関する情報を保持するオブジェクト
linkオブジェクトlinkリンクコマンドの対象リンクオブジェクト
linkオブジェクト[]links選択テキストに含まれるリンクオブジェクトのArray
StringselTextレス表示欄のユーザーが範囲指定した選択範囲のテキスト
Integer[]filteredResIndexスクリプトが起動された時にレス表示欄に表示されていたレスのレス番号Array
表示範囲内のレスではなくレス表示欄全体のレスが対象
Integer[]checkedResIndexスクリプトが起動された時にレス表示欄でチェックされていたレスのレス番号Array
java.awt.PointmousePosスクリプト開始時のマウスポインタ位置をJavaのPoint pとして返します。X,Y座標はp.x,p.yです。
戻り値メソッド説明
voidsetStatusBarText(String text)スクリプトの実行終了後に文字列textをステータスバーに表示
voidsetClipboardText(String text)スクリプトの実行終了後に文字列textをクリップボードにコピー
voidsetPopupText(String text)スクリプトの実行終了後に文字列textをポップアップ表示
voidsetPopupHTML(String text)スクリプトの実行終了後に文字列textをHTMLとしてポップアップ表示する。
注意:一部のGIFファイルを表示する時にCPU使用率が上昇したままになるという問題があります。
例:"<html><body>あああ</body></html>"
voidsetPopupFocusable(bool)2c.context.setPopupFocusable(true)を実行するとsetPopupText(text)・setPopupHTML(text)で表示したポップアップでキーボード入力ができるようになる。
また、ポップアップの文字列を選択、ドラッグができるようになります。
ポップアップで文字列が選択されている場合、ポップアップメニューから選択テキスト用外部コマンドを実行できます(注:v2c.context.threadはnullになってます)
主にsetPopupHTML(s)で表示したフォームにキーボード入力する場合を想定している。
voidsetMaxPopupWidth(Integer size)v2c.context.setPopupText(text)・v2c.context.setPopupHTML(text)のポップアップの最大幅をsizeに設定する
voidsetRedirectURL(bool)スクリプト内で関数redirectURL(u)を定義しておきv2c.context.setRedirectURL(true)を実行すると、
HTMLポップアップでリンクをクリックした時にredirectURL(u)(uはjavaのURLオブジェクト)が呼ばれます。
redirectURL(u)がjavaのURLオブジェクトまたはURL文字列を返した場合に限りそのURLがWebブラウザで開かれます。
redirectURL関数内で更にsetRedirectURL(true);を指定して多段ポップアップさせたい場合。setPopupHTMLに渡すHTML文字列中のリンクタグは絶対パスで指定しないとポップアップしてくれません
× <a href="/img/sample.gif">テスト</a>
○ <a href="http://www.v2c.com/img/sample/gif">テスト</a>
voidsetTrapFormSubmission(bool)スクリプト内で関数formSubmitted(u,sm,sd)を定義しておき
v2c.context.setTrapFormSubmission(true)を実行すると、
HTMLポップアップでフォームを送信した時にformSubmitted(u,sm,sd)が呼ばれます。
フォームの送信処理は自動ではしてくれません。formSubmitted関数内でcreateHttpRequest等で自前でPOSTリクエストを送信する必要があります
voidcloseOriginalPopup()formSubmitted(u,sm,sd)内でv2c.context.closeOriginalPopup()を実行すると
呼び出し元のポップアップウィンドウを閉じる。
元のポップアップが既に閉じられている場合でもエラーにはならない
voidsetFilteredRes(resオブジェクト[] resArray)スクリプトの実行終了後resArrayで与えられたレスオブジェクトの列をレス表示欄で抽出して表示する。(レスは番号でソートした後重複を除いたものが表示されます。)
レスポップアップからも実行可能です
voidsetFilteredResIndex(Integer resIndex)スクリプトの実行終了後resIndexで与えられた数字列をレスのインデックスとしてレス表示欄で抽出して表示する。(同上)
voidsetPopupRes(resオブジェクト[] resArray)resArrayで与えられたレスオブジェクトの列をスクリプトの実行終了後ポップアップ表示する。(同上)
voidsetPopupResIndex(Integer resIndex)resIndexで与えられた数字列をレスのインデックスとしてスクリプトの実行終了後ポップアップ表示する。(同上)
voidsetPostMessage(String text)スクリプトの実行終了後書き込み欄が開いていない場合は開き、書き込み欄の内容を文字列sで置き換える(レスポップアップからも実行できます)
voidinsertToPostMessage(String text)スクリプトの実行終了後書き込み欄が開いていない場合は開き、書き込み欄のカーソル位置に文字列textを挿入する(レスポップアップからも実行できます)
voidsetResToJump(resオブジェクト res)スクリプトの実行終了後レスオブジェクトresのレスを表示する
voidsetResIndexToJump(Integer resIndex)スクリプトの実行終了後インデックスがresIndexのレスを表示する
voidsetResPaneText(String caption, String targetTabName, bool b)スクリプトの実行終了後に文字列captionをレス表示欄のタブ(タブ名targetTabName)に表示します。
bは省略可能で、true(デフォルト)の時に新しいタブで表示します。
voidsetResPaneHTML(String caption, String targetTabName, bool b)スクリプトの実行終了後に文字列captipnをHTMLとしてレス表示欄のタブ(タブ名targetTabName)に表示します。
bは省略可能で、true(デフォルト)の時に新しいタブで表示します。
注意:一部のGIFファイルを表示する時にCPU使用率が上昇したままになるという問題があります。
voidcloseOriginalPanel()redirectURL(u)・formSubmitted(u,sm,sd)内でv2c.context.closeOriginalPanel()を実行すると呼び出し元のレス表示欄タブまたはポップアップウィンドウを閉じる。
元のレス表示欄タブまたはポップアップが既に閉じられている場合でもエラーにはならない。
voidsetPopupID(String idName)setPopupTextやsetPopupHTMLで表示するポップアップにID文字列 idName を設定します。
ダミーオブジェクトgetPopupOfID(String idName)ID idName が設定されたポップアップが表示中の場合はダミーオブジェクトを、表示していない場合はnullを返します。
注意:将来はダミーオブジェクトではなくポップアップに関する情報を保持するオブジェクトを返す可能性があります。
voidsetCloseOnMouseExit(bool)trueを指定するとsetPopupTextやsetPopupHTMLで表示されたポップアップからマウスを外した時にそのポップアップを閉じます。
voidsetDefaultCloseOnMouseExit(bool)setCloseOnMouseExit(bool)のデフォルト値を設定します。スクリプトのどこかで一度実行しておくと、以後同じ値bのsetCloseOnMouseExit(bool)を実行する必要がありません。
voidsetCloseOnLinkClick(bool)boolがfalseの時setPopupHTML()で表示したポップアップのリンクをクリックした時にそのポップアップを閉じません。(デフォルトはtrue。)
またboolがfalseの時redirectURL()によるポップアップはマウスポインタの位置に表示されます。

お気に入りタブコレクションオブジェクト(fvs)

v2c.favoritesが返すオブジェクトfvsによってお気に入り全体に関する操作をすることができます。

プロパティ説明
Integercountお気に入りタブの総数
戻り値メソッド説明
お気に入りタブオブジェクトgetFavorite(Integer i)インデックスがiのお気に入りタブオブジェクトを返す
お気に入りタブオブジェクトcreateFavorite(String n)名前がnのお気に入りタブを作成する

お気に入りタブオブジェクト(fav)

fav.appendItem(f,o), fav.insertItem(f,o,i), fav.removeItem(o)のoにはお気に入りアイテム・板・スレッドオブジェクトを使用できます。
お気に入りの追加、削除に類する関数を使用するスクリプトにはお気に入り変更の許可が必要です。(${SCRIPT:Vf})

プロパティ説明
Stringnameお気に入りタブの名前
お気に入りアイテムオブジェクトrootお気に入りタブのルートフォルダオブジェクト(お気に入りアイテムオブジェクト)を返す。
ルートフォルダ名としても扱える
戻り値メソッド説明
boolcontains(お気に入りアイテムオブジェクト o)oがお気に入りアイテムオブジェクトまたは板またはスレッドオブジェクトでfavがoを含む場合にtrueを返す
お気に入りアイテム追加・削除の関数 (要:${SCRIPT:Vf}
 お気に入りの追加、削除に類する関数を使用するスクリプトにはお気に入り変更の許可が必要です。(${SCRIPT:Vf})
voidremoveAll()お気に入りタブの内容をルートフォルダのみ残して全て登録解除する
voidclearFolder(String f)お気に入りフォルダfの内容を空にする
お気に入りアイテムオブジェクトappendFolder(お気に入りアイテムオブジェクト o, String s)お気に入りフォルダfに名前がsのフォルダを追加し、追加したフォルダオブジェクトを返す
お気に入りアイテムオブジェクトinsertFolder(お気に入りアイテムオブジェクト f, String s, Integer i)お気に入りフォルダfのインデックスiに名前がsのフォルダを挿入し、挿入したフォルダオブジェクトを返す。
お気に入りアイテムオブジェクトappendItem(お気に入りアイテムオブジェクト f, お気に入りアイテムオブジェクト o)お気に入りフォルダfにoを追加する
お気に入りアイテムオブジェクトinsertItem(お気に入りアイテムオブジェクト f, お気に入りアイテムオブジェクト o, Integer i)お気に入りフォルダfのインデックスiにoを追加する
voidremoveItem(お気に入りアイテムオブジェクト ooの登録を解除する

お気に入りアイテムオブジェクト(o)

プロパティ説明
Stringlabelアイテムの名前
IntegerchildCountoがフォルダの場合はフォルダに含まれるアイテムの総数を、それ以外の場合は-1を返す
boardオブジェクトboardoが板の場合は板オブジェクトを、それ以外の場合はnullを返す
threadオブジェクトthreadoがスレッドの場合はスレッドオブジェクトを、それ以外の場合はnullを返す
戻り値メソッド説明
お気に入りアイテムオブジェクトgetChild(Integer i)oがフォルダの場合はインデックスiの子アイテムを、それ以外の場合はnullを返す

bbsオブジェクト(bbs)

プロパティ説明
boolis2chBBSが2ch、bbspinkの時にtrueを返します
boolis2cheqBBSが2ch互換の時にtrueを返します
boolshitarabaBBSがしたらばの時にtrueを返します
boolmachiBBSがまちBBSの時にtrueを返します
booltwitterBBSがTwitterの時にtrueを返します
戻り値メソッド説明
boardオブジェクトgetBoard(key)bbsが2chの場合、板キーがkeyの板オブジェクトを返す。
板が存在しない時または2ch以外のBBSではnullを返す。
(例:v2c.bbs2ch.getBoard('software'))

boardオブジェクト(bd)

プロパティ説明
bbsオブジェクトbbs板オブジェクトboardからBBSオブジェクトを返します。
java.net.URLurl板のURL
Stringname板名
Stringkey板キー (板キーをparseIntで数値型に変換して1000倍するとスレ立ち時間(ミリ秒)が分かります)
StringanonymousNameSETTING.TXTに設定されている名無し(存在しない場合は空文字列)
StringallAnonymousNameSETTING.TXTに設定されている名無しとユーザが設定した名無しの列(存在しない場合はサイズ0の列)
boollocal板オブジェクトがローカル板の場合trueを返す
threadオブジェクト[]threadsWithLog板bd内のログのある全スレッドのArray(ログのあるスレッドが無い場合はlengthが0のArray)を返します。
java.util.MapsettingMap板オブジェクトbdのSETTING.TXTをMap mとして返します。
(mはnullの可能性があります。)
例:2chのソフトウェア板の場合、m.get(null)、m.get('BBS_NONAME_NAME')はそれぞれ"software@soCCCncCosWvo"、"名無しさん@お腹いっぱい。"を返します。
戻り値メソッド説明
threadオブジェクトgetThread(key)板オブジェクトbd内のスレッドキーがkのスレッドオブジェクト(該当するスレッドが存在しない場合はnull)を返します。
数値又は文字列を指定できますが数値を推奨。
8桁未満の場合、板のリロードが出来ない、8桁未満を文字列で渡すと初回にエラーが出る。等問題が出てきます
threadオブジェクトcreateLocalThread(String title, resオブジェクト resArray)内容がresArray(レスオブジェクトまたはセパレータオブジェクトを要素とするArray)で
スレタイがtitleのスレッドをローカル板bdに作成し、対応するスレッドオブジェクトを返します。
注意:スレッドの作成にはスクリプトにファイル書き込みの許可が必要です。(${SCRIPT:Fw})
threadオブジェクトgetThread(k, u, t, n)板bdのスレッドキーkのスレッドを既に取得している場合
そのスレッドオブジェクトを返す。(bd.getThread(k)と同じ。)
それ以外の場合、uを移転前の板のURLとして新規に作成したスレッドオブジェクトを返す。
(uがnullの場合はbdの現在のURLから取得したと見倣す。)
スレタイt(デフォルト値null)とレス数n(デフォルト値0)を指定することもできます。
u、t、nは省略可
voidaddNGID(id, d, t, w)文字列idを板bdのNGIDに追加する。(d、t、wは省略可)
d … idが出現した時刻(ミリ秒単位のUNIX TIME)。この時刻を含む日±αでNGIDが有効になる。dが0以下の場合はbd.addNGID(*)を実行した時刻からのオフセットと見做される。(デフォルト値は0)
bd.addNGID(id,-86400000); // 昨日のNGIDとして追加する例
t … trueの場合透明非表示(デフォルト値はfalse)
w … ウェイト(-9≦w≦9、デフォルト値は0)
既にidがNGIDに登録されている場合、その設定が
wより低い優先度の場合tとwの値が反映される。
wと同じウェイトかつwが0以下かつtがtrueの場合tの値が反映される。(透明非表示になる。)
その他の場合tとwは無視される
注意:追加したNGIDを既に表示されているレスに適用するにはv2c.resPane.checkNG(bd)を実行してください。
注意:非表示・キーワード設定ダイアログが表示されている間bd.addNGID(*)は処理をスキップします。(何もしません。)

レスペインオブジェクト(rp)

プロパティ説明
IntegercolumnCountレス表示欄カラムの数を返す
カラムオブジェクト[]columnsレス表示ペインに表示されているカラムオブジェクトのArrayを返す
IntegerselectedColumnIndex選択されているカラムのインデックスを返す。(代入により設定可能)
カラムオブジェクトselectedColumn選択されているカラムオブジェクトを返す
IntegertabCount開いているタブの数
IntegerselectedIndex選択されているタブのインデックス
threadオブジェクトselectedThread選択されているタブのスレッドオブジェクト
threadオブジェクト[]threadsレス表示ペインに表示されているスレッドオブジェクトのArray(レス表示タブが表示されていない場合はサイズ0のArrayを返す。Arrayの各要素はnullではない。)
戻り値メソッド説明
threadオブジェクトgetThread(Integer tabIndex)インデックスtabIndex(最初のタブの0番目と見なされます)のタブに表示されているスレッドオブジェクト
voidcheckNG()全てのレス表示タブの非表示を再チェックする。
voidcheckNG(null)rp.checkNG()と同じ。
voidcheckNG(threadオブジェクト th)スレッドthのレス表示タブが表示されている場合そのレス表示タブの非表示を再チェックする。
voidcheckNG(boardオブジェクト bd)板bdに属するスレッドのレス表示タブの非表示を再チェックする。
res.addNGID(*)で非表示の再チェックを実行しないようになったので
非表示の再チェックが必要な場合はrp.checkNG(bd)を使用してください。

カラムオブジェクト(col)

レスペイン内のスレッドタブ群に対してやりとりするためのオブジェクト

プロパティ説明
IntegertabCount開いているタブの数
IntegerselectedIndex選択されているタブのインデックス
threadオブジェクトselectedThread選択されているタブのスレッドオブジェクト
threadオブジェクト[]threadsレス表示ペインに表示されているスレッドオブジェクトのArray(レス表示タブが表示されていない場合はサイズ0のArrayを返す。Arrayの各要素はnullではない。)
戻り値メソッド説明
threadオブジェクトgetThread(Integer tabIndex)インデックスtabIndex(最初のタブの0番目と見なされます)のタブに表示されているスレッドオブジェクト
voidopenThread(th, bu, bnt, bbg)(カラムの選択状態に関係無く)レス表示欄カラムcolでスレッドthを開きます。
bu,bnt,bbgはth.open(bu,bnt,bbg)の引数と同じです。(省略可)
注意:スレッドの更新にはスクリプトに外部へのネットワーク接続の許可が必要です。(${SCRIPT:S})

threadオブジェクト(th)

未取得レス数は(th.resCount-th.localResCount)で、スレッド更新前のレス数は(th.localResCount-th.newResCount)で計算できます。

プロパティ説明
boardオブジェクトbbsスレッドオブジェクトthreadからBBSオブジェクトを返します。
java.net.URLurlスレッドのURL
Stringtitleスレッドタイトル
Stringkeyスレッドキー
java.io.FilelocalFileローカルに保存されたログファイル
IntegerlocalResCount既得レス数
IntegerresCountlocalResCount、またはスレッド更新後に更新したスレ一覧にこのスレッドが含まれていた場合はそのレス数
IntegernewResCount新着レス数
IntegernewMarkResCountスレッドの新着境界より後のレス数
IntegernewMarkResIndex新着境界直後のレスのインデックスを返す。新着境界が表示されていない場合は既得レス数を返す。(代入により設定可能。)
Integerspeedスレッドの1日当りのレス数
java.io.FilesytleDirレス表示スタイルフォルダ
boardオブジェクトboardスレッドが属する板のboardオブジェクト
java.io.FilestyleFile通常の掲示板ではth.styleDir\style.txtに、Twitterではth.styleDir\style_tw.txtになります
boolunreadスレッドに未読レスが存在する時にtrueを返します
boollocalスレッドがローカルスレッドの時にtrueを返します
boolliveスレッドがdat落ちしていないと推測される場合にtrueを返します
boollockスレッドのレス表示タブがロックされている場合にtrueを返します。(代入により設定可能)
IntegercolumnIndexスレッドが開かれているカラムのインデックス(開かれていない場合は-1)を返す。
IntegerviewResIndex表示されている最初のレスのインデックスを返す。(代入により設定可能。)
レスラベルオブジェクトpostResLabelそのスレッドで自分の書き込みに自動で付くラベルを返す。ラベルを自動で付けない場合はnullを返す。
Integer[]postResIndexそのスレッドで自分の書き込みに自動で付くラベルが付いているレスのインデックスをJavaのArrayとして返す。注意:自分の書き込みが存在しない場合やラベルを自動で付けない場合もlengthが0のArrayを返す。
戻り値メソッド説明
resオブジェクトgetRes(Integer i)インデックスがiのレスオブジェクト(nullの可能性がある)
boolupdate()スレッドを更新する(外部へのネットワーク接続の許可が必要 ${SCRIPT:S})。実行には
・th.update()の実行回数はスレ一覧の巡回数に加算され、残り巡回数が0の時は更新されない
・各スレッドに対してスクリプトでの更新の間隔は10秒以上(別スクリプトや同一スクリプトの複数回実行を含む)
という制限があり、この制限によりスレッドが更新されなかった場合update()はfalseを返す。
boolupdateAndWait()スレッドを更新した後更新完了まで待つ。何らかの制限のためスレッドを更新できなかった場合はfalseを返す。
注意:EventDispatchThread(GUI処理用のスレッド)で実行された場合はスレッドを更新せずfalseを返す。
voidresetUnread()スレッドの未読状態をリセットします。(th.unreadがfalseを返すようになる。)
voidopen(bool bu,bool bnt,bool bbg)スレッドをレス表示欄で開きます。bu: trueの時更新する、bnt: trueの時新タブで開く、bbg: trueの時裏で開く。bu, bnt, bbgは省略可でデフォルト値はそれぞれtrue, true, false。
注意:スレッドの更新にはスクリプトに外部へのネットワーク接続の許可が必要です。(${SCRIPT:S})
書き込み欄オブジェクトopenWritePanel()対応する書き込み欄を開いて書き込み欄オブジェクトを返します。(書き込み欄を開くことができなかった場合はnullを返す。)
書き込み欄オブジェクトmayOpenWritePanel()スレッドが書き込み可能な場合にのみ書き込み欄を開いて書き込み欄オブジェクトを返します。(書き込み欄を開くことができなかった場合はnullを返す。)
voidclose()スレッドのレス表示タブを閉じます。(レス表示タブが開いていない場合もエラーになりません。)
voidclearNewMark()スレッドがレス表示タブで開いている場合、新着境界表示をクリアします。(レス表示タブが開いていない場合はresetUnread()を実行します。)
voidimportPropertyFrom(threadオブジェクト th0)threadオブジェクトth0からプロパティをインポートする。インポートするプロパティは最後にインポートした時の設定が使用される。
注意:スクリプトにプロパティ変更の許可が必要です。(${SCRIPT:Vp})
voidmovePanelTo(Integer ic,Integer it)スレッドのレス表示タブをインデックスicのカラムのインデックスitのタブに移動する。ic・itが-1の場合は最後のカラム・タブに移動する。
voidimportDatFile(java.io.File f,String n,bool o)ファイルfをdatとしてインポートします。n,oは省略可能。datからスレタイを取得できなかった場合にn(デフォルトはnull)がスレタイになり、o(デフォルトはtrue)がfalseの場合にはスレッドをレス表示欄で開きません。
voidimportDatBytes(java.lang.Byte bl,String n,bool o)Javaのバイト列blをdatとしてインポートする。n,oに関してはimportDatFileと同じ

resオブジェクト(res)

プロパティ説明
bbsオブジェクトbbsレスオブジェクトresからBBSオブジェクトを返します。
Integernumberレス番号
Integerindexレスインデックス (最初のレスは0)
Stringname名前欄
Stringmailメール欄
Stringdate投稿時刻
Integertime1970/01/01から投稿時刻までの経過時間(ミリ秒単位)、計算できない場合は0
StringidID
StringbeIDBeのID(基礎番号、存在しない場合は0
Stringaux補助情報(まちBBSのIP等datフォーマットの投稿日時&時間&ID欄を半角区切りにした4個目以降(BeIDは除く)
Stringmessage本文
boolngレスが非表示の場合にtrue
StringngReason非表示の理由を示す文字列を取得する。非表示でない場合はnull
resオブジェクトngOrigin連鎖非表示の元となったレスオブジェクトを取得する。連鎖非表示でない場合はnull
boolngTransparentresが透明非表示の場合にtrueを返す
Integerweight非表示のウェイトを取得する
IntegerrefCount被参照数
IntegeridCount同じIDを持つレスの総数(スレッド内)
linkオブジェクト[]links本文に含まれるリンク
Integer[]refResIndexレスを参照しているレスのレス番号のArray(参照しているレスが存在しない場合はnull)
レスラベルオブジェクトresLabelレスresに設定されているレスラベル(設定されていない場合はnull)を返します。
Stringsourceresのソース(datの行)を返す。datファイルが存在しない場合nullを返す。
呼び出す度にdatファイルを開くので、連続して呼び出すような処理の場合readStringFromFileでdatを読み込んで直接取得したほうが良い
java.net.URLurlresのURLを返す。対応するURLが存在しない場合はnullを返す
booltwitterresがTwitterのTweetの場合にtrueを返す。
boolretweetresがリツイートされたTweetの場合にtrueを返す。Twitterレス以外ではnullを返す
java.lang.LongtweetIDresのTweetIDをjavaのLongとして返す。Twitterレス以外ではnullを返す
ユーザオブジェクトuserresのユーザオブジェクトを返す。Twitterレス以外ではnullを返す
StringclientNameresが投稿されたクライアント名を返す。Twitterレス以外ではnullを返す
戻り値メソッド説明
voidsetResLabel(レスラベルオブジェクト rl)レスresにレスラベルrlを設定します。rlがnullの場合はレスのラベルをクリアします。
rescheck.jsでは使用できません
voidsetResLabelOfName(String sn)レスresに名前がsnのレスラベルを設定します。snがnullまたは空文字列の場合はレスのラベルをクリアしますが、それ以外でsnに該当するレスラベルが存在しない場合は何もしません。
rescheck.jsでは使用できません
voidaddNGID(bool t, Integer w)resのIDをNGIDに追加する
t … trueの場合透明(デフォルト値はfalse)
w … ウェイト(-9≦w≦9、デフォルト値は0)
t及びwは省略可
注意:4文字以下のIDはNGIDに追加できません。
rescheck.jsでは使用できません
voidsetNGRes(bool t)resを非表示にする。t(デフォルト値はfalse)がtrueの場合は透明非表示。
tは省略可。
rescheck.jsでは使用できません
voidsetNoNGRes()resを常に表示する。rescheck.jsでは使用できません。
voidresetNGRes()resの非表示設定をクリアする。

ユーザオブジェクト(usr)

res.userプロパティから受け取れるTwitterユーザー情報のオブジェクト

プロパティ説明
java.lang.LongidユーザーID
注意:Twitter検索とそれ以外ではユーザIDが違います。
StringuserNameユーザ名
Stringname名前 (res.nameと同じ)

linkオブジェクト(lnk)

プロパティ説明
java.net.URLurlリンクのURL
java.io.FileimageCacheFileリンクの画像キャッシュファイル(キャッシュが存在しない場合はnull)
booltype_IMAGEリンクオブジェクトlnkのURLが画像の拡張子で終わっているかまたはImageViewURLReplace.datにマッチする行がある場合にtrueを返します。
あまり当てにならない。datファイル開いて正規表現等で調べたほうが良い

レスラベルオブジェクト(rl)

res.resLabel,th.postResLabel等で取得できるレスラベルのオブジェクト。

プロパティ説明
Stringnameレスラベルの名前

書き込み欄オブジェクト(wp)

th.openWritePanel(),th.mayOpenWritePanel()で対応する書き込み欄オブジェクトを取得できます。

プロパティ説明
threadオブジェクトthreadスレッドオブジェクトを返します。注意:スレ立ての場合は板・BBSオブジェクト取得等の限られた用途でしか使用できません。
入力欄オブジェクトtitleタイトルの入力欄オブジェクトを返します。直接文字列を代入することもできます
入力欄オブジェクトname名前の入力欄オブジェクトを返します。直接文字列を代入することもできます
入力欄オブジェクトmailメールの入力欄オブジェクトを返します。直接文字列を代入することもできます
入力欄オブジェクトmessage本文の入力欄オブジェクトを返します。直接文字列を代入することもできます
boolpreview書き込みプレビューを表示している時にtrueを返します(代入により表示・非表示を操作可能)
boolsagesageチェックボックスがチェックされている時trueを返します(代入によりチェックを設定可能)
戻り値メソッド説明
voidclose()書き込み欄を閉じます

入力欄オブジェクト(tc)

wp.title, wp.name, wp.mail, wp.message … 書き込み欄オブジェクトから、それぞれスレタイ入力欄、名前欄、メール欄、本文入力欄に対応するオブジェクトを取得できます。

プロパティ説明
Stringtext入力されているテキストを返します(代入により設定可能)
StringselText選択範囲のテキストを返します(代入により設定可能)
IntegercaretPosキャレットの位置を整数で返します(代入により設定可能)
IntegerselStart選択開始位置を整数で返します(代入により設定可能)
IntegerselEnd選択終了位置を整数で返します(代入により設定可能)
戻り値メソッド説明
voidselect(Integer is, Integer ie)isからieまでの範囲を選択します
voidcopy()コピーします
voidpaste()ペーストします
voidcut()カットします

HttpRequestオブジェクト(hr)

HTTPのファイル取得でリクエストヘッダの設定やPOSTデータの送信ができます。
まず最初にHttpRequestオブジェクトを作成します。
※setRequestProperty(name,value)はgetContentsAs*()の前に、その他はgetContentsAs*()の後に実行する必要があります。

戻り値コンストラクタ説明
HttpRequestオブジェクトv2c.createHttpRequest(u)URLuをGETするHttpRequestオブジェクトを作成する。
URLuは文字列、java.net.URL、どちらでも使えます
HttpRequestオブジェクトv2c.createHttpRequest(u, d)URLuに対してPOSTメソッドで送るHttpRequestオブジェクトを作成する。
(dはそのまま送信されるので適切にencodeされている必要がある。)
dは主にmulti-partフォームデータを文字列で指定します。
文字コードが間違っているとうまく行きません。
var moji = java.lang.String("文字列");
d = moji.getBytes("MS932");
のように変換するとShiftJISで送れます。UTF-8の場合は文字のまま送っても平気ですが。ファイルをアップロードする場合等はgetBytes("UTF-8")で文字列をUTF-8のbyte列に変換してファイルのバイト列と組み合わせましょう。
multi-partフォームデータの書式は説明を省きますがグーグルですぐ見つかります。
firebugを開いてネットタブを開いた状態でファイルアップロード等をすると実際にどのような書式でデータを送信したか確認することが出来ます。
プロパティ説明
IntegerresponseCodeHTTPレスポンスコード。リクエストの成否の判別に使用します。
例:成功=200 NotFound=404 転送=301
StringresponseMessageHTTPレスポンスメッセージ
StringcontentTypeContent-Typeの値 text/html等フォーマットの判別に使います。MIME Content-Type参照
IntegerdateDateの値(1970/01/01からの経過時間(ミリ秒単位))
IntegerlastModifiedLast-Modifiedの値(1970/01/01からの経過時間(ミリ秒単位))
java.util.mapallResponseHeaders全レスポンスヘッダ
戻り値メソッド説明
voidsetRequestProperty(String name, String value)名前nameのリクエストヘッダフィールドに値valueを設定する。
例: hr.setRequestProperty("Content-Type", "image/gif");
firefoxのfirebug等で接続崎とのヘッダのやりとりを調べられます。
クッキーを送りたい場合はnameにSet-Cookieを指定します。
StringgetResponseHeader(String name)名前nameのレスポンスヘッダフィールドの値(同名のフィールドが複数存在した場合は最後の値)
firefoxのfirebug等で接続崎とのヘッダのやりとりを調べられます。
クッキーを受け取りたい場合はnameにcookieを指定します。
java.lang.byte[]getContentsAsBytes()URLuから取得した内容
java.lang.StringgetContentsAsString()hr.getContentsAsBytes()を文字列に変換したもの

コールバック関数(V2Cから呼び出される関数)

スクリプトでのスレ一覧生成のコールバック関数

スレッドオブジェクト[] getThreads(Object cx)

外部コマンドの登録方法
お気に入り・ツールバーにスクリプトを外部コマンドとして登録し、「アクション」に「スレ一覧で開く」を選択してください。

この関数の説明
コマンドを実行するとまずスクリプトが実行され、
その後スクリプト内で関数getThreads(cx)が定義されている場合にはgetThreads(cx)が呼ばれます。
この機能の目的としては「ログから検索」や「Web検索」の拡張を想定しています。
v2c.getThread()などの関数は実際にdatが存在してなくてもスレッドオブジェクトを返してくれるので、
URLを2chっぽく誤魔化せばある程度自由にできます。
これに加えてgetdat.jsで独自にdatを作成すればどのようななサイトでもレス一覧に表示することができます。

その他の機能
ツールバーに登録したスレ一覧用スクリプトボタンのポップアップメニューから「定期更新チェック」を選択すると15分間隔で定期更新を開始します。
定期更新中はコマンドボタンの文字が青色になり、更新結果に新規スレッドが存在するとボタンの文字が赤色になり定期更新を停止します。
定期更新は更新回数が400回に達するか3回連続でエラーになっても停止します。

anago.2ch.netのソフトウェア板の過去ログ倉庫のスレッドをまとめて表示する例:

function getThreads(cx) {
  if (!v2c.online) {
    cx.skip = true;
    return null;
  }
  var sb='http://anago.2ch.net/software/';
  var bd=v2c.getBoard(sb);
  if (!bd) {
    cx.message = '板オブジェクトの取得に失敗';
    return null;
  }
  var su=sb+'kako/';
  var sk=v2c.readURL(su);
  if (v2c.interrupted) {
    return null;
  }
  if (!sk) {
    cx.message = su+'の取得に失敗';
    return null;
  }
  var thl=[],sul=[];
  var res=new RegExp('<A HREF="(o\\d+/subject.txt)">','gi');
  var rs;
  while (rs=res.exec(sk)) {
    sul.push(rs[1]);
  }
  cx.maxProgress = sul.length;
  for (var i=0; i<sul.length; i++) {
    var ss=v2c.readURL(su+sul[i]);
    if (v2c.interrupted) {
      return null;
    }
    if (!ss) {
      cx.message = su+sul[i]+'の取得に失敗';
      return null;
    }
    cx.progress = i+1;
    var ret=new RegExp('^(\\d+)\\.dat<>(.+) \\((\\d+)\\)$','gm');
    var rt;
    while (rt=ret.exec(ss)) {
      var st=rt[2].replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&');
      var th=bd.getThread(rt[1],sb,st,rt[3]);
      if (th) {
        thl.push(th);
      }
    }
  }
  return thl;
}

POPUP関連のコールバック関数

v2c.context.setTrapFormSubmission(true)
void formSubmitted(java.net.URL u, String sm, Object sd)
  • u … URL
  • sm … 'GET'または'POST'の文字列
  • sd … FORMのデータ
    setRedirectURL(b)・redirectURL(u)とよく似た方式で、
    v2c.context.setTrapFormSubmission(true)を実行しておくと
    HTMLポップアップ内のFORMを送信する時にスクリプトのformSubmitted(u,sm,sd)が呼ばれます。
    formSubmitted()の返り値によらずFORMは送信されません。
    v2c.context.setTrapFormSubmission(true)で設定された値はformSubmitted()を呼ぶ前にリセットされます。
    使用例は:
    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);
v2c.context.setRedirectURL(true)
java.net.URL redirectURL(java.net.URL u)
  • u … URL
    setRedirectURL(true)を実行しておくとHTMLポップアップ上でリンクをクリックした場合redirectURLが呼ばれます。
    redirectURL関数内で再度setRedirectURL(true)を指定すると多段ポップアップします。
    ただし、ポップアップのHTML内のリンクは絶対参照でないとリンクと認識してくれなくてポップアップできません
    多段ポップアップできない例:
    ○ <a href="http://www.google.com/image/">テスト</a>
    × <a href="./image/">テスト</a>
    
    redirectURL(u)のイメージは:
    function redirectURL(u) {
      if (uを独自に処理したい) {
        uの処理; // setPopupHTML等
        return null;
      } else if (別のURLをWebブラウザで開きたい) {
        return 別のURL;
      } else {
        return u; // そのままWebブラウザで開く(デフォルトの動作)
      }
    }

systemスクリプトのコールバック関数

システムスクリプトを変更した場合はファイル→再読み込みで各システムスクリプトを再読み込みすることが出来ます。
スクリプト中で"_v2c_"で始まる名前は使用しないで下さい

imagecache.jsのコールバック関数

imagecache.js
void getDownloadNewImagesLimit(threadオブジェクト th, Object ov)
スレッドレッドを更新後、新着画像ファイルのダウンロードを開始する前に呼ばれる。返値は無視される。
  • th … スレッドオブジェクト
  • ov … 新着画像ファイルダウンロードの設定を保持するオブジェクト
    • ov.maxdays … 初期値として「リンク・画像・動画」設定「新着画像ダウンロード」枠内の「D日前まで」のDが設定されています。必要に応じてこの値を変更してください。
    • ov.maximgs … 初期値として「リンク・画像・動画」設定「新着画像ダウンロード」枠内の「N枚まで」のNが設定されています。必要に応じてこの値を変更してください。

rescheck.jsのコールバック関数

下のような自明な関数は未定義にしておく方が実行速度が上がります

function beginCheck(th,cx) {return true;}
function checkRawText(res,cx) {}
function checkAA(res,cx) {}
function checkNG(res,cx) {}
function endCheck(th,cx) {}

本文に特定の文字列を含むレスをAAレスと判定する例:

function checkAA(res,cx) {
  if (res.message.indexOf('( ・e・)')>=0) {
    res.setAA(true);
  }
}

レス読み込みの処理は以下のような順番になります。

  1. beginCheck(th,cx) (cx.checkRawText・cx.checkAA・cx.checkNGがtrue)
  2. 各レスについて以下の繰り返し
    1. "<>"によるフィールドの分離
    2. checkRawText(th,cx)
    3. ReplaceStr.txtによる置換
    4. レスの解析(時間・IDの分離や本文のリンク化等)
    5. 通常の非表示・キーワードのチェック
    6. checkAA(res,cx)
    7. checkNG(res,cx)
  3. endCheck(th,cx)

非表示の再チェックでは各レスに対してcheckNG(res,cx)だけが実行されます。

  1. beginCheck(th,cx) (cx.checkNGがtrue)
  2. 各レスについて以下の繰り返し
    1. checkNG(res,cx)
  3. endCheck(th,cx)

rescheck.js
Object beginCheck(threadオブジェクト th, Object cx)
beginCheck(th,cx)の返り値がfalseまたはbooleanとしてfalseと評価される場合は以後の処理はスキップされます。戻り値に任意のオブジェクトを渡して以下のコールバック関数に渡すことができます
  • th … スレッドオブジェクト
  • cx … チェックに関するオブジェクト
    スレッド読み込み時はcx.checkRawText・cx.checkAA・cx.checkNGは全てtrue、非表示の再チェック時はcx.checkNGのみtrue。
    • cx.checkRawText … trueの場合テキスト置換関数checkRawText(res,cx)が各レスに対して実行される。
      実行を抑止したい場合はcx.setCheckRawText(false)を実行する。
    • cx.checkAA … trueの場合AA判定関数checkAA(res,cx)が各レスに対して実行される。
      実行を抑止したい場合はcx.setCheckAA(false)を実行する。
    • cx.checkNG … trueの場合NG指定関数checkNG(res,cx)が各レスに対して実行される。
      実行を抑止したい場合はcx.setCheckNG(false)を実行する。
rescheck.js
void checkRawText(resオブジェクト res, Object cx)
主にレスのテキストを置換するための関数
(この関数のresオブジェクトでのみ使用できる拡張定義があります)
  • res … レスオブジェクト
    プロパティ説明
    Stringtimeid時間とIDを解析する前の文字列を取得します。
    戻り値メソッド説明
    voidsetName(String name)名前欄を文字列nameに設定する
    voidsetMail(String text)メール欄を文字列textに設定する
    voidsetMessage(String text)本文を文字列textに設定する
    voidsetNanasi(bool)trueで名無しとして、falseで名無し以外の名前としてそれぞれ扱いが固定されます
  • cx … チェックに関する情報を保持するオブジェクト。cx.checkObjectでbeginCheck(th,cx)で返されたオブジェクトを取得することができます。
reccheck.js
void checkAA(resオブジェクト res,Object cx)
AA判定をするための関数
この関数のresオブジェクトでのみ使用できる拡張定義があります)
  • res … レスオブジェクト
    戻り値メソッド説明
    voidsetAA(bool)boolがtrueの場合このレスをAAレスと判定する
  • cx … チェックに関する情報を保持するオブジェクト。cx.checkObjectでbeginCheck(th,cx)で返されたオブジェクトを取得することができます。
rescheck.js
void checkNG(resオブジェクトres,Object cx)
非表示判定をするための関数。
この関数のresオブジェクトでのみ使用できる拡張定義があります)
  • res … レスオブジェクト
    プロパティ説明
    Integerweight非表示のウェイトを取得する
    戻り値メソッド説明
    voidsetNG(String labelName, bool b, Integer, wait)このレスを非表示レスと判定する。
    b及びwaitは省略可
    labelName … ラベル
    b … trueの場合透明(デフォルト値はfalse
    wait … ウェイト (-9≦wait≦9、デフォルト値は0)
    voidresetNG()setNG()の非表示設定をクリアする。
  • cx … 判定に関する情報を保持するオブジェクト。cx.checkObjectでbeginCheck(th,cx)で返されたオブジェクトを取得することができます。
rescheck.js
void endCheck(threadオブジェクト th, Object cx)
  • res … レスオブジェクト
  • cx … 判定に関する情報を保持するオブジェクト

subject.jsのコールバック関数

注意:

subject.js
threadオブジェクト[] checkSubject(String ss, boardオブジェクト bd, Object cx)
subject.txtを取得した後解析する前に実行されます。ssそのまま、または変更した文字列を返してください。
  • ss … 取得したsubject.txt
  • bd … 板オブジェクト
  • cx … (現在はダミー)

proxy.jsのコールバック関数

例:

    function checkProxy(u,p) {
      if (RegExp('^http://[0-9A-Za-z-]+\\.2ch\\.net/software/subject.txt$').test(u)) {
        p.host = 'localhost';
        p.port = 2020;
      }
    }

注意:

proxy.js
void checkProxy(java.net.URL u, Object p)
V2Cがネットワーク接続する前に実行されます。
  • u … javaのURLオブジェクト。
  • p … Proxy情報を保持するオブジェクト。ネットワーク設定でProxyを使用する設定になっている場合はその情報が設定されている。
    • p.host … Proxyのホスト名。(代入により設定可能。)
    • p.port … Proxyのポート番号。(代入により設定可能。)
    • p.direct() … 直接接続に設定する。(p.hostをnullに、p.portを0に設定する。)

threadld.jsのコールバック関数

threadld.js
void threadUpdated(threadオブジェクト th, Object cx)
スレッドの更新完了後更新音を再生する直前に実行されます。
  • th … スレッドオブジェクト。
  • cx … スレッドの更新に関する情報を保持するオブジェクト
    • cx.numNewRes … 更新によって取得されたレス数。
    • cx.error … 更新中に何らかのエラーが発生した時にtrueを返します。
    • cx.soundName … V2Cの設定によって再生される予定のサウンドファイル名を返します。(サウンドファイルが指定されていない場合または「更新完了音を再生する」設定がオフの場合はnull。)
      cx.soundName = 'filename';
      で更新完了音を変更することができます。
    • cx.rounding … 巡回中にスレッドが更新された場合にtrueを返します。

getdat.jsのコールバック関数

getDat(th)はスレッドの過去ログを取得できなかった時に実行されます。(thはスレッドオブジェクト。)

getdat.js
threadオブジェクト getDat(threadオブジェクト th)
スレッドのログファイルの内容を返します。
getDat(th)はしたらばやまちBBSでも実行されますが、V2Cのログ保存形式はしたらばではrawmode.cgiそのまま、まちBBSでもしたらばと同じ形式に変換しているので注意してください。
getdat.jsにはデフォルトでネットワーク接続("S")が許可されています。
  • th … スレッドオブジェクト
  • 戻り値
    • byte[] … バイト列byte[]をログファイルの内容として保存します。
    • null … ログファイルを取得できなかったことを示します。
    • 上記以外 … 返されたオブジェクトを文字列に変換し、それをさらに掲示板の文字コードでバイト列に変換したものをログファイルの内容として保存します。

post.jsのコールバック関数

post.js
void checkBeforeCreateThread(書き込み欄オブジェクト wp)
スレ立て時、V2Cが書き込み内容をチェックする前に実行されます。true以外を返すとスレ立て処理を中断します。
  • wp … 書き込み欄オブジェクト
post.js
checkBeforePost(書き込み欄オブジェクト wp)
書き込み時、V2Cが書き込み内容をチェックする前に実行されます。true以外を返すと書き込み処理を中断します。
  • wp … 書き込み欄オブジェクト

menu.jsのコールバック関数

レス表示ポップアップメニューから「マーカーを引いたレスを抽出」を削除する例:

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('マーカーを引いたレスを抽出')) {
        pm.remove(i);
        break;
      }
    }
  }
}

レス番号ポップアップメニューの「設定」の最初のセパレータまでの項目を展開する例:

function popupMenuCreated(pm,sn) {
  if (sn=='ResNum') {
    loop:
    for (var i=pm.getComponentCount()-1; i>=0; i--) {
      var mi=pm.getComponent(i);
      if (!(mi instanceof javax.swing.JMenuItem)) { // セパレータ
        continue;
      }
      if (mi.getText()=='設定') {
        // mi は javax.swing.JMenu
        for (var j=0; j<mi.getItemCount(); j++) {
          var mj=mi.getItem(j);
          if (!(mj instanceof javax.swing.JMenuItem)) { // セパレータ
            mi.remove(j);
            for (var k=j-1; k>=0; k--) {
              pm.insert(mi.getItem(k),i);
            }
            break loop;
          }
        }
        break;
      }
    }
  }
}

レス表示ポップアップメニューの抽出系の項目を下位メニューにまとめる例:

function popupMenuCreated(pm,sn) {
  if (sn=='ThreadPanel') {
    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;
        }
      }
    }
  }
}
menu.js
void popupMenuCreated(javax.swing.JPopupMenu pm, String sn)
popupMenuCreated(pm,sn)はポップアップメニューが作成された時に実行されます。
  • pm … 作成されたポップアップメニュー(JPopupMenu)。
  • sn … 作成されたポップアップメニューの名前。
    snに指定できるポップアップメニュー名
    ThreadPanelレス表示欄ポップアップメニュー
    TwitterPanelTweet表示欄ポップアップメニュー
    ResNumレス番号ポップアップメニュー
    ResCheckレスのチェックポップアップメニュー
    Name名前欄ポップアップメニュー
    TwitterUserNameTwitterユーザ名ポップアップメニュー
    Mailメール欄ポップアップメニュー
    Time投稿時間ポップアップメニュー
    IDIDポップアップメニュー
    Aux補助情報ポップアップメニュー
    Linkリンクポップアップメニュー
    Thumbnailサムネイル画像ポップアップメニュー
    SelText選択テキストポップアップメニュー
    SelTextLink選択範囲のリンクポップアップメニュー
戻り値メソッド引数説明
javax.swing.JMenuItempm.insert(JMenu subMenu, Integer index)subMenu子メニュー。JMenuではなくIMenuItemを渡すとメニュー項目を挿入できます。
index子メニュー(またはメニュー項目)をJMenuItem一覧のインデックス index(最初の項目を0とする)の直上に挿入します
JMenu pmを起点とする右クリックメニューのJMenuItem一覧のインデックス index(最初の項目を0とする)の直上に子メニュー subMenuを挿入します。
子メニュー subMenuに対してsubMenu.insert(JMenu subMenu2, Integer index)を使うと孫メニューを挿入できます。
またJMenuItemを挿入することもできます。
javax.swing.MenuItem(String maenuName)…メニュー項目
javax.swing.JCheckBoxMenuItem(String menuName, bool checked)…チェックボックス付きのメニュー項目。checkedがtrueだとチェック済みのメニュー項目を作成します
戻り値メソッド引数説明
javax.swing.JMenupm.add(JMenu subMenu)subMenuJMenuItem一覧の末尾に子メニュー subMenuを追加します(同上)
voidpm.remove(Integer index)indexメニューのJMenuItem一覧のインデックス index(最初の項目を0とする)のJMenuItemを削除します
戻り値メソッド引数説明
javax.swing.JMenuItempm.getComponent(Integer index)indexJMenuItem一覧のインデックス index(最初の項目を0とする)
javax.swing.JMenuItempm.getItem(Integer index)
メニューのJMenuItem一覧のインデックス index(最初の項目を0とする)のJMenuItemを返します。
JMenuItemでない項目はセパレータです
if (menuItem instanceof javax.swing.JMenuItem)で判別します
戻り値メソッド引数説明
Stringpm.getText()なしJMenuメニュー項目名を返します
Stringo.getText()なしJMenuItem項目名を返します
Integerpm.getComponentCount()なしメニューのJMenuItem項目数を返します
voidpm.addSeparator()なしメニュー項目の末尾に区切り線を挿入します
戻り値メソッド引数説明
voido.addActionListener(action)functionjavascriptの関数オブジェクト
JMenuItemをクリックした時に処理させたい関数を指定できます。
o.addActionListener(function(e) {
 v2c.alert('クリックされたよ');
});
o.addActionListener(new java.awt.event.ActionListener({
 actionPerformed: function(e) {
  v2c.alert('クリックされたよ');
 }
}));
戻り値メソッド引数説明
voidcbo.addChangeListener(action)functionjavascriptの関数オブジェクト
JCheckBoxMenuItemをクリックされたときに処理させたい関数を指定できます
o.addChangeListener(new java.awt.event.ChangeListener({
 stateChanged : function(e) {
  if (e.source.isSelected()) { // チェック状態を確認する
   e.source.setSelected(true); //チェックを入れる
  }
 }
}));

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-04-22 (火) 02:45:20