Jump to content

User:Funa-enpitu/EZBOT

From Meta, a Wikimedia project coordination wiki

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

開発中...

E-mail

開発中...

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