User:Funa-enpitu/EZBOT
Appearance
EZBOTは単純かつ柔軟性の高いウェブブラウザ用一斉操作ツールです。通常ボットを組まなければならないような作業もブラウザ上で行うことができ、編集はもちろん、移動や削除、その他すべての操作に対応しています。また、対象ページの一斉取得やJavaScriptによる高度な操作、ログの解析などといった機能も兼ね備えています。
動作確認済み環境
[edit]- WikiEditor v0.5.4 (4860b83)
- CodeEditor - (4ac433d)
- Codex v1.23.0
インストール
[edit]あなたがウィキの管理者である場合ライセンスに則って移入することでガジェットとして使用できます
お使いのウィキの利用者JSまたはGlobal.jsに以下を追加します。
mw.loader.load('//meta.wikimedia.org/wiki/User:Funa-enpitu/EZBOT/ezbot.js?action=raw&ctype=text/javascript');
保存後はブラウザのキャッシュを削除してください。
使用方法
[edit]導入後ツールボックスに「EZBOT」という項目が増えています。クリックするとEZBOTの操作画面に切り替わります。
各フォームの解説
[edit]- Action
- 実行する操作です。プルダウンの項目を選択すると任意の操作を行うページに切り替わります。
- 「Any」はすべての操作をJavaScriptを用いて行えます。JavaScriptに関しては#JavaScriptによる操作を参照。
- Targets
- 対象となるページ、利用者名などをJSONの配列形式で列挙します。
- Get pagelist
- カテゴリからページのリストを取得できます。JavaScriptによるAPIの呼び出しでも取得することができます。
- また外部のウィキからページの一覧を取得することもできます。API endpointに任意のウィキのapi.phpのURLを指定してください。
- Summary, Reason
- 操作の要約や理由を指定できます。動的に指定したい場合はJavaScriptを利用してください。
- Interval
- リクエストの間隔(クールタイム)を指定します。短すぎるとエラーが起きます。また、対象のリクエストはPOSTのみで、処理の合間に行われるGETリクエストなどはこれに関係なく送信されます。
各操作の操作方法
[edit]- Edit
-
- Rewrite, Create, NewSection
- ページを全置換え、または作成します。
- NewSectionをオンにすると新しい節の作成に使えます。一斉メッセージ送信などに便利です。
- Replace
- ページのウィキテキストにPatternが見つかった際Replacementに置き換えます。RegExpをオンにすることで正規表現も利用できます。
- JavaScript
- #JavaScriptによる操作を参照。
- Delete
-
- JavaScript
- #JavaScriptによる操作を参照。
- Delete talkpage
- 対象のページにトークページがあった際、一緒に削除する。
- Move
-
- Rename
- ページ名を改名します。
- また、このフィールドでは以下の変数を使えます。
- $_pagename
- ページ名全体。
- $_rootpagename
- サブページの時、その親ページのページ名。
- $_title
- 名前空間の部分を除いたページ名。
- $_namespace
- 名前空間名。
- $_namespaceid
- 名前空間ID。
- Replace
- ページ名にPatternが見つかった際Replacementに置き換えます。上記の変数も使えます。
- JavaScript
- #JavaScriptによる操作を参照。
- 引数varsにはpagename,rootpagename,title,namespace,namespaceidが配列で入っています。
- Don't create a redirect
- 移動の際移動元にリダイレクトを置かない。
- Rename the talk page
- 対象のページにトークページがあった際、一緒に移動する。
- Rename subpages
- 対象のページにサブページがあった際、一緒に移動する。
- Block
開発中...
- Protect
開発中...
開発中...
- Import
開発中...
JavaScriptによる操作
[edit]他人に言われたコードはそのままコピペせず、自分で意味を理解してから使用してください。
リクエストのパラメータについての詳細はMediaWikiの公式ドキュメントまたはAPIのヘルプを参照してください。
EZBOTはリクエストのパラメータをJavaScriptをによって動的に指定する機能をサポートしています。
関数の宣言
[edit]async function main ( title, ezbot ) {
return {...};
}
mainはリクエストのパラメータを{key: value}形式で返す非同期関数として宣言してください。関数内ではいくつかの変数を利用できます。
- title
- 現在処理中のページ名。
- ezbot
- 複数の関数が入っているオブジェクトです。
- ezbot.getpagecont(pagename)
- ウィキ内のページのウィキテキストを返します。Promiseオブジェクトなのでawaitを付けて実行してください。
- ezbot.getexternalwiki(resturl, pagename)
- 外部ウィキのページのウィキテキストを返します。resturlは対象のウィキのrest.phpのURLです。Promiseオブジェクトなのでawaitを付けて実行してください。
- ezbot.log(meth, text)
- EZBOTのテキストログに出力します。methは送信元として表示するテキスト (
JSを推奨します)。
注意事項
[edit]- 一つの値がJS内とフォームのどちらもで指定されている場合、JS内のものを優先します。
- JSのエラーはEZBOTのテキストログにも出力されますが、詳細についてはブラウザのコンソールに出力されているのでそちらを参照してください。
- ezbotオブジェクトからは上記以外のスクリプトの根幹部分のメゾットにもアクセスできます。
実行画面
[edit]送信した後、実行画面に移ります。テキストログとJSONログの二種類のログが出力されており、ストップボタン・バックボタンがあります。
- テキストログ
- 実行したアクションとその対象、結果が出力されます。ezbot.logでアクセスできます。
- JSONログ
- 実際にリクエストしたパラメータ、応答が出力されます。
- ストップボタン
- リクエストを一時停止します。
- バックボタン
- 設定画面に戻ります。リクエストは途中で中断されるので注意。
デモ
[edit]習うより慣れよということで、まず実際に触ってもらったほうが早いです。
でもサイトを用意しました → https://ezbot.myht.org